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


von Johnsn (Gast)


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

von Frank (Gast)


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.

von Johnsn (Gast)


Lesenswert?

Alles klar, so sehe ich die Sache auch! Thx

von Andreas S. (andreas) (Admin) Benutzerseite


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?iLanguageID=1&category=&sGlobalNavPick=&sSecondaryNavPick=&multPartNum=1&sTechX_ID=kc_priorities.

von Frank (Gast)


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.

von Roger S. (edge)


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

von Frank (Gast)


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.

von Roger S. (edge)


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

von Andreas S. (andreas) (Admin) Benutzerseite


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.

von Johnsn (Gast)


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?

von Andreas S. (andreas) (Admin) Benutzerseite


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.

von Roger S. (edge)


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

von Johnsn (Gast)


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.

von Axel (Gast)


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

von Roger S. (edge)


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

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.