In http://www.mikrocontroller.net/articles/VHDL#Synchroner_oder_asynchroner_Reset wird auf das Init Kommando für einen Reset-Wert verwiesen: > Viele FPGAs können per Init-Kommando in VHDL initialisiert werden und benötigen > zum Anlaufen gar keinen (Re)set - weder synchron noch aysnchron. Was ist damit genau gemeint? Geht es da um die Initialisierung eines Signals direkt bei der Deklaration? Wenn ja, wie wird so etwas technisch im FPGA realisiert? Danke & lg Robert
So zum Beispiel: signal statusA : std_logic := '1'; signal bytecount : integer range 0 to (2**8-1) := 5; signal dataout : std_logic_vector(7 downto 0) := "10100001"; Man gibt direkt den Wert an, den die Flipflops bei der Initialisierung haben. Wenn das FPGA seine Konfiguration läd, werden gleichzeitig die Flipflops initialisiert, eben mit den Werten die du angegeben hast. Das ist nicht bei jedem FPGA möglich, wenn es möglich ist sollte man es aber auch nutzen, da man sich so einen Reset sparen kann (und somit einige LUTs und Verbindungen).
Robert S. schrieb: >> Viele FPGAs können per Init-Kommando in VHDL initialisiert werden und benötigen >> zum Anlaufen gar keinen (Re)set - weder synchron noch aysnchron. > > Was ist damit genau gemeint? Geht es da um die Initialisierung eines > Signals direkt bei der Deklaration? FPGAs haben einen PowerOn und/oder JTAG Controller implementiert. Der steuert die gesamte Initialisierung des FPGA bis die DONE LED leuchtet. Zu seinen Aufgaben gehoert, die Konfigurationsdaten (von einem Flash oder direkt vom JTAG Controller) in die einzelnen FFs und ueblicherweise auch RAMs zu laden. Dazu sind alle FFs (auch 'versteckte' FFs um die Routing-Resourcen zu konfigurieren) und Speicherbits ueber eine serielle Leitung hintereinandergehaengt, wie ein Schieberegister. Und damit kannst du jedes FF oder Speicherbit per Bitstream initialisieren. Am Ende der Konfiguration wird dann das "Schieberegister" wieder totgelegt und auf die normale Logikverdrahtung umgeschaltet. Dann laeuft das FPGA korrekt initialisiert los... Also brauchst du auch nicht unbedingt einen Reset... Aber: War das eigentlich was du gefragt hattest? :o)
... es gibt uebrigens auch noch einen schoenen Unterschied zwischen 'Reset' via Logik (sei's nun synchron oder asynchron) und dem 'Init' des PON/JTAG Controllers: Nur der PON/JTAG Controller kann RAMs (und die versteckten Konfig-FFs) inititalisieren, dein Reset kommt an die gar nicht ran...
meckerziege schrieb: > signal statusA : std_logic := '1'; > signal bytecount : integer range 0 to (2**8-1) := 5; > signal dataout : std_logic_vector(7 downto 0) := "10100001"; Danke für die Bestätigung. meckerziege schrieb: > Wenn das FPGA seine Konfiguration läd, werden gleichzeitig die Flipflops > initialisiert, eben mit den Werten die du angegeben hast. Das ist nicht > bei jedem FPGA möglich, wenn es möglich ist sollte man es aber auch > nutzen, da man sich so einen Reset sparen kann (und somit einige LUTs > und Verbindungen). Danke für die Erklärung. Für ASIC wird dan eine solche Beschreibung fehlschlagen. lg Robert
Robert S. schrieb: > Danke für die Erklärung. Für ASIC wird dan eine solche Beschreibung > fehlschlagen. Nicht ganz richtig! Auch fuer ASIC gibt es Faelle, wo nicht ein PON-Reset fuer die Initialisierung sorgt, sondern z.B. ein EEPROM oder Flash-Baustein. Vorteil: Ich kann da per Firmware-Update noch was richten....
berndl schrieb: > Robert S. schrieb: >> Danke für die Erklärung. Für ASIC wird dan eine solche Beschreibung >> fehlschlagen. > > Nicht ganz richtig! Auch fuer ASIC gibt es Faelle, wo nicht ein > PON-Reset fuer die Initialisierung sorgt, sondern z.B. ein EEPROM oder > Flash-Baustein. Vorteil: Ich kann da per Firmware-Update noch was > richten.... Das wird aber nicht mit einem solchen Init-Kommando modelliert, oder?
Robert S. schrieb: > Das wird aber nicht mit einem solchen Init-Kommando modelliert, oder? Das mußt Du Deinen Chipfabrikanten fragen. Duke
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.