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
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.
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.
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.
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
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.
> 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
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.
>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?
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.
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
> 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.
"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
>>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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.