Register initialisieren/Reset

OP #7670719
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

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

(Firma: Starfleet) #7670752
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.

#7670763
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!

Persönliche Seite #7670994
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.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.