Forum: FPGA, VHDL & Co. Init-Kommando für Reset?


von Robert S. (razer) Benutzerseite


Lesenswert?

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

von meckerziege (Gast)


Lesenswert?

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).

von berndl (Gast)


Lesenswert?

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)

von berndl (Gast)


Lesenswert?

... 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...

von Robert S. (razer) Benutzerseite


Lesenswert?

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

von berndl (Gast)


Lesenswert?

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....

von Robert S. (razer) Benutzerseite


Lesenswert?

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?

von Duke Scarring (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.