Forum: FPGA, VHDL & Co. Register initialisieren/Reset


von Ole W. (ole_w)


Lesenswert?

Moin!

Ich frage mich gerade, ob es heutzutage überhaupt noch nötig ist, einen 
Reset an ein FF anzuschließen.
1
process (CLK, RST)
2
begin
3
   if RST='1' then   
4
      d_out <= "00000000";
5
      elsif rising_edge(clk) 
6
      d_out <= d_in;
7
   end if;
8
end process;
So würde es prinzipiell gehen. Asynchroner Reset ist allerdings nicht 
förderlich. Daher würde ich diese Schreibweise bevorzugen.
1
process(clk)
2
begin
3
    if rising_edge(clk) then
4
        if rst = '1'    then
5
            d_out <= "00000000";
6
        else
7
        d_out <= d_in;
8
        end if;
9
     end if;
10
end process;
Vivado baut witzigerweise bei beiden das gleiche mit der Bemerkung, dass 
eines ASNYC ist. Allerdings Versteht die Synthese beides.
Wäre es nicht denkbar das Signal am Anfang mit := "0" zu initialisieren 
und somit komplett den Reset zu vergessen?

Gruß,
Ole

von Lars (rezyy)


Lesenswert?

Ole W. schrieb:
> Wäre es nicht denkbar das Signal am Anfang mit := "0" zu initialisieren
> und somit komplett den Reset zu vergessen?

Ja, wäre es. Aber Vorsicht: Für FPGAs (bspw. von Xilinx) funktioniert 
das und das Tool unterstützt es, die Initialwerte in die FFs zu laden. 
Das gilt aber natürlich nicht grundlegend allgemein (ASICs).

Bei FPGAs ist es grundsätzlich gut, sich darüber Gedanken zu machen, wo 
ein reset sinnvoll ist und wo nicht. Viele resets sind überflüssig, 
einige resets sind aber notwendig.

von Bradward B. (Firma: Starfleet) (ltjg_boimler)


Lesenswert?

reset und Power-Up ist nicht dasselbe.

PowerUp/Configuration insbesonders bei heutigen SoC's mit multi stage 
boot dauert länger als so ein simpler reset.

Manche Standards wie DO-254 verlangen explizit einen reset als " the 
last resort recovery mechanism for a non-responsive device". Also eine 
Art schneller "soft reset" statt Langsamer "Hard/full" reset. Kommt halt 
auf die Spec drauf an, bei einem trudelndenden Flieger hat man nicht die 
Zeit für einen vollen System-Reset um wieder Kontrolle über die 
Steuerflächen zu gewinnen. ( ähnlich wie bei flame-out: 
https://youtu.be/NBN9tDxrnIo?t=241 )

> Wäre es nicht denkbar das Signal am Anfang mit := "0" zu initialisieren
> und somit komplett den Reset zu vergessen?
Manchmal macht eine Initialisierung mit '1' Sinn und wird ebenfalls von 
der architectur unterstützt. Bei anderen Architekturen gibt es nur einen 
möglichen "Init-Wert". Problematisch kann es werden, wenn der selbe code 
auf verschiedenen FPGA-Familien eingesetzt wird.

Es könnte sinnvoll sein, diesen Reset im Code zu beschreiben und erst in 
der top-entity zu entscheiden, ob der reseteingang nicht fest auf 
inaktiv gelegt wird. Synthesetools sollten in der Lage sein, diesen sich 
nicht ändernde reset-leitung zu erkennen und dementsprechend weg zu 
optimieren.

: Bearbeitet durch User
von Antti L. (trioflex)


Lesenswert?

> Vivado baut witzigerweise bei beiden das gleiche mit der Bemerkung, dass
> eines ASNYC ist. Allerdings Versteht die Synthese beides.
> Wäre es nicht denkbar das Signal am Anfang mit := "0" zu initialisieren
> und somit komplett den Reset zu vergessen?

Vivado gibt syntax FEHLER und baut nichts :) wenn ich den fehler behoben 
habe hat er es gebaut und UNTERSCHIEDLICH

mal FDCE
und dann FDRE

dh es geht alles richtig mit Vivado!

von Jürgen S. (engineer) Benutzerseite


Lesenswert?

Bradward B. schrieb:
> anche Standards wie DO-254 verlangen explizit einen reset als " the
> last resort recovery mechanism for a non-responsive device". Also eine
> Art schneller "soft reset" statt Langsamer "Hard/full" reset.

Das habe ich im Bereich Luftfahrt aber auch schon völlig anders herum 
gesehen. Da hieß es "wollt ihr den totalen Reset (?)" (der Einforderer 
hieß in der Tat Josef mit Vornamen :-) )

Ich musste dann FMEA-mäßig nachweisen, dass die permanent als 
Damokles-Schwert über der Schaltung hängte Reset-Leitung eine höhere und 
kritischere Fehlerwahrscheinlichkeit zusammenbringt, als der richtig 
gesetzte soft-Reset.

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.