www.mikrocontroller.net

Forum: FPGA, VHDL & Co. Reset in "AlwaysOn"-System


Autor: Johnsn (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Wir haben ein Stück Hardware auf einem Cyclone-FPGA, das immer laufen 
soll und niemals während des Betriebs neu initialisiert (reset) werden 
darf.

Mein Kollege meint nun, dass man deshalb beim VHDL-Design auf sämtliche 
Reset-Zweige verzichten kann. Ich bin aber nicht der Meinung, da ja in 
einem FPGA das Reset-Netzwerk sowieso verfügbar ist und deshalb 
Ressourcen verschwendet würden und obendrein die Hardware dadurch auf 
einen definierten Zustand gebracht wird.

Was meint ihr dazu?

Gruß,
Johnsn

Autor: Frank (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oh, das FPGA wird wohl nie eingeschaltet? ;) Der asynchrone Reset ist 
ein power on reset und gehört in jedes anständige Design. Ihn 
wegzulassen ist schlicht und ergreifend dumm und kann u.U. zu nicht 
vorhersehbaren Ergebnissen führen.

Autor: Johnsn (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Alles klar, so sehe ich die Sache auch! Thx

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bei FPGAs wird beim Power-Up die Konfiguration geladen und die Flipflops 
mit den Standardwerten belegt, einen Reset braucht man nicht. Siehe z.B. 
http://www.xilinx.com/xlnx/xweb/xil_tx_display.jsp....

Autor: Frank (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das hängt aber vom Synthesizer ab. Bei FPGAs von Xilinx mag das gehen, 
bei anderen Synthesizern, FPGAs, CPLDs oder gar full-custom kann das 
niemand garantieren (bzw. ist unmöglich). Abgesehen davon muss man dann 
auch jedes Flipflop vorbelegen. Bei jeder ordentlichen Firma gibt es 
Design Rules, die normalerweise auch einen asynchronen Reset verlangen. 
Alles andere ist schlechter Stil.

Autor: Roger Steiner (edge)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Frank wrote:
> Das hängt aber vom Synthesizer ab. Bei FPGAs von Xilinx mag das gehen,
> bei anderen Synthesizern, FPGAs, CPLDs oder gar full-custom kann das
> niemand garantieren (bzw. ist unmöglich).

Die Frage bezieht sich auf ein ALTERA Cyclone, da funktioniert das mit 
dem Startwert nach der Konfiguration.


> Abgesehen davon muss man dann auch jedes Flipflop vorbelegen.

nicht wirklich.

> Bei jeder ordentlichen Firma gibt es
> Design Rules

jepp

> die normalerweise auch einen asynchronen Reset verlangen.
> Alles andere ist schlechter Stil.

asynchroner Reset IST schlechter Stil!

Cheers, Roger

Autor: Frank (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der asynchrone Reset hat nur eine einzige, aber unter Umständen wichtige 
Daseinsberechtigung: Power-On-Reset
Deswegen gibt es auch genau einen Reset-tree, der alle FFs (außer 
Speicher) initialisiert. So ist das kein schlechter Stil, aber in 
full-custom notwendig.
Ein asynchroner Reset zum Erzeugen einer gewünschten Funktionalität wäre 
allerdings doof.
Ob die Initalisierung ohne Reset funktioniert, hat nichts mit dem 
Baustein "Cyclone" zu tun, sondern mit dem Synthesizer. Und da könnte ja 
auch ein anderer zum Einsatz kommen...
Ich bleib dabei: Asynchroner Reset IST guter Stil.

Autor: Roger Steiner (edge)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Der asynchrone Reset hat nur eine einzige, aber unter Umständen wichtige
> Daseinsberechtigung: Power-On-Reset

Eben nicht bei dem Cyclone - ein SRAM FPGA das zuerst konfiguriert 
werden will - das den Power-On-Reset implizit mit der Konfiguration hat.

> Deswegen gibt es auch genau einen Reset-tree, der alle FFs (außer
> Speicher) initialisiert. So ist das kein schlechter Stil, aber in
> full-custom notwendig.

Hier geht es aber um ein Cyclone FPGA und keinen ASIC.
Somit ist dein Argument zwar nett, aber hier nicht relevant.


Cheers, Roger

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mit dem Reset gibt es die selben Probleme wie mit jedem anderen Signal: 
es verbraucht Routingressourcen, und wenn man es nicht taktsynchron 
released wird u.U. ein ungültiger Zustand initialisiert. Außerdem können 
manche Elemente nicht mit einem Reset arbeiten (shift register SRL16E). 
Xilinx empfiehlt deshalb den Reset nur dort zu verwenden wo er wirklich 
nötig ist, und besonders bei sehr schnellen Designs auf einen 
asynchronen Reset zu verzichten.

Autor: Johnsn (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>es verbraucht Routingressourcen
Fast jedes FPGA hat mittlerweile ein dediziertes Reset-Netzwerk.

>und wenn man es nicht taktsynchron
>released wird u.U. ein ungültiger Zustand initialisiert.
Dies gilt es eben beim Design zu beachten, man nennt es nicht umsonst 
asynchronen Reset.

>und besonders bei sehr schnellen Designs auf einen
>asynchronen Reset zu verzichten
Wenn die meisten FFs sowieso schon mit Reset-Eingang bestückt sind, 
warum sollte dadurch das Design langsamer werden?

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Johnsn wrote:
>>es verbraucht Routingressourcen
> Fast jedes FPGA hat mittlerweile ein dediziertes Reset-Netzwerk.

Ok.

>>und wenn man es nicht taktsynchron
>>released wird u.U. ein ungültiger Zustand initialisiert.
> Dies gilt es eben beim Design zu beachten

Was heißt das konkret?

>>und besonders bei sehr schnellen Designs auf einen
>>asynchronen Reset zu verzichten
> Wenn die meisten FFs sowieso schon mit Reset-Eingang bestückt sind,
> warum sollte dadurch das Design langsamer werden?

Wird es nicht, aber je höher der Takt, desto größer die 
Wahrscheinlichkeit dass ein Reset nicht alle FlipFlops rechtzeitig 
erreicht.

Autor: Roger Steiner (edge)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Johnsn wrote:
> Fast jedes FPGA hat mittlerweile ein dediziertes Reset-Netzwerk.

beim Cyclone gibts das aber nur in Verbindung mit dem DEV_CLRn Pin.
Ansonsten kann dein reset ins globale clock network gelegt werden.

Vielleicht hilft es dir ja dass du mit mindestens einem Clock dieses 
Netzwerk ja auch brauchst, und somit nicht zwingend, nur weil etwas da 
ist es auch nutzen musst.

Cheers, Roger

Autor: Johnsn (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Dies gilt es eben beim Design zu beachten
> Was heißt das konkret?
Das man auch die Möglichkeit durchspielt, was passiert wenn FFs, die 
eigentlich später in einem Pfad liegen früher released werden als andere 
und nachprüft, ob dadurch Fehlverhalten entsteht. Ich weiß das redet 
sich jetzt viel leichter, als es getan ist.

>und somit nicht zwingend, nur weil etwas da
>ist es auch nutzen musst.
Das ist genau der Punkt. Wenn etwas vorhanden ist, sollte man es auch 
nutzen (meine Meinung). Und da bei vielen "FPGA-Menschen" (inkl. mir) 
der Reset als selbstverständlich und sauber angesehen wird, finde ich, 
dass man den Reset verwenden soll.

Autor: Axel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"Xilinx empfiehlt deshalb den Reset nur dort zu verwenden wo er wirklich
nötig ist, und besonders bei sehr schnellen Designs auf einen
asynchronen Reset zu verzichten."

Das machen die wohl eher, um den Übergang ins ASIC zu erschweren. Denn 
da wird ein RESET in der Regel für die Netzlistensimulation benötigt, so 
dass er dann im Zweifelsfall "nachgerüstet" werden müsste.

Ansonsten sollte das RESET Netzwerk schon schnell genug sein, um alle FF 
rechtzeitig zu erreichen, sonst ist das Murks. Immerhin muss das Clock 
Netzwerk ja auch mit sehr geringer Verzögerung an die FF kommen, das 
Reset Netzwerk hat da schon um Welten mehr Zeit. Und wenn an den FF 
asynchrone Resets vorgesehen sind, dann sind die sowieso drin und 
verlangsamen auch nichts, wenn sie benutzt werden.

Gruss
Axel

Autor: Roger Steiner (edge)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>>und somit nicht zwingend, nur weil etwas da
>>ist es auch nutzen musst.
> Das ist genau der Punkt. Wenn etwas vorhanden ist, sollte man es auch
> nutzen (meine Meinung). Und da bei vielen "FPGA-Menschen" (inkl. mir)
> der Reset als selbstverständlich und sauber angesehen wird, finde ich,
> dass man den Reset verwenden soll.

Aha, dein FPGA hat ein power-on-reset feature, nutzt du das denn auch?
Es wuerde dir nach deinem Text zu urteilen einiges an Arbeit ersparen.
Du kannst damit natuerlich auch ein internes reset signal generieren 
fuer Module welche ein Reset brauchen, bloss damit nutzt du dein 
Reset-Netzwerk halt nicht.

Cheers, Roger

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.