ich bin etwas irritiert über eine aussage, eines xilinxs fae der mir verklickern wollte, dass man bei xilinx fpgas keinen reset mehr benötigt, weil alle ffs in wirklichkeit so oder so auf null resetten. nun weiss ich, dass die resets eigentlich presets sind, die beim ersten laden eingelesen werden und von altera fpgas ist mir bekannt, dass diese unter umständen (oder immer ?) negative resets auf 1 mit invertern realsieren. wie verhält sich das bei xilinx und wo ist deren vorteil? so wie ich das sehe, haben doch alteras auch die option passend power up zu resetten und sind damit gleich gestellt, bzw sie können mit einem preset geladen werden. ????
Lies mal ab hier: Beitrag "Re: Reset für mehrere Komponenten" Und hier: Beitrag "Re: Hardware mit VHDL "richtig" beschreiben." EDIT: > so wie ich das sehe, haben doch alteras auch die option passend > power up zu resetten und sind damit gleich gestellt, bzw sie können > mit einem preset geladen werden. SRAM-basierte FPGAs werden sowieso beim Power-Up aus einem Config-Prom "geladen". Also wird jedes FF auf einen definierten Zustand gesetzt. Das ist der Power-Up-Reset. Ein funktioneller, ablaufabhängiger Reset z.B. einer SM muß natürlich trotzdem von Hand einprogrammiert werden. Aber dort sollte dann sowieso alles synchron ablaufen.
Ist es aber dann so, dass das FPGA wirklich schonw ährend des Ladens die Werte in die Flipflopzellen eingespielt bekommt? Eigentlich geht das ja nicht, sondern es muss sicher mindestens ein clock durchgeführt werden, der die Zellen aus einer Vorladezelle lädt. ?
Uli W. wrote: > Ist es aber dann so, dass das FPGA wirklich schonw ährend des Ladens die > Werte in die Flipflopzellen eingespielt bekommt? Ja das ist so. Aber wie der interne Ablauf genau ist, darüber werden dir die Hersteller sicher nichts erzählen...
>Ist es aber dann so, dass das FPGA wirklich schonw ährend des Ladens die >Werte in die Flipflopzellen eingespielt bekommt? Eigentlich geht das ja >nicht, sondern es muss sicher mindestens ein clock durchgeführt werden, >der die Zellen aus einer Vorladezelle lädt. Die Flip-Flop-Werte beim Initialisieren werden nicht direkt "eingespielt" (ich nehme an, Du meinst eingetaktet), sondern die Verdrahtung der asychronen (Set/)Reset-Logik, d.h. ob das Flip-Flop beim Reset auf 0 oder 1 geht. Nach der Initialisierung wird ein Reset aller Flip-Flops durchgeführt, und dadurch erhalten sie ihre Anfangswerte. Schau mal in den Datenblättern und im Spartan-3-Handbuch, da steht einiges dazu drin.
> sondern die Verdrahtung der asychronen (Set/)Reset-Logik, Das ist aber jetzt etwas anders, als der Synchrone Reset, oder? > von altera fpgas ist mir bekannt, dass diese unter umständen > negative resets auf 1 mit invertern realsieren Ist das so? Das hat mir auch mal jemand erzählt, das in Wirklichkeit immer auf Null resettet wird und wenn jemand eine 1 will, einfach die Funktion der Zelle invertiert wird, also Inverter ein Inverter davor kommt und die Synthese das nur nicht nach Aussen zeigt. Ich nehme an, dass man dann auch einen Inverter dahinter braucht.
Hi, hierzu gibt es ein nahrhaftes White-paper von Xilinx: http://www.xilinx.com/support/documentation/white_papers/wp272.pdf Gruß Eric
> Ist es aber dann so, dass das FPGA wirklich schonw ährend des Ladens > die Werte in die Flipflopzellen eingespielt bekommt? Ja, alle 16 FFs in einer LUT, die FFs der SLices und die ganze Verdrahtung (MUX, Interconnect ...) wird beim Power-Up geladen, das hat aber nichts mit den Reset-Bedingungen und/oder dem Reset-Netzwerk zu tun. Beim Power-Up werden die Daten aus der Initialisierung eingesetzt:
1 | signal cnt : std_logic_vector(3 downto 0) := "1010"; |
Beim Reset (der eigentlich selten benötigt wird, ausser für die Simulation oder für einen Taster für den Entwickler) werden die Zustände aus der Reset-Bedingung verwendet:
1 | |
2 | if (reset='1') then |
3 | cnt <= "0001"; |
4 | elsif rising_edge(clk) .... |
Die FFs im FPGA haben Set- und Reset-Eingänge (synchron) bzw. Preset- und Clear-Eingänge (asynchron), da braucht es nur eine entsprechende Verdrahtung (bei Xilinx), aber keinen Inverter. > Ich nehme an ... Das ist die falsche Vorgehensweise :-/ Wozu hat man denn Datenblätter erfunden?
>Ja, alle 16 FFs in einer LUT, die FFs der SLices und die ganze >Verdrahtung (MUX, Interconnect ...) wird beim Power-Up geladen, das hat >aber nichts mit den Reset-Bedingungen und/oder dem Reset-Netzwerk zu >tun. Die LUTs werden geladen, aber die tatsächlichen Flip-Flops werden nicht geladen, sondern bei der (bzw. nachher) über das globale Setz-Rücksetznetzwerk (GSR) auf 0 oder 1 gesetzt. Das hat also sehr wohl was mit einem Reset-Netzwerk zu tun. Siehe z.B. das aktuelle Datenblatt der Spartan-3s, Seite 52: "The end of the memory-clearing phase is signaled by the INIT_B pin going High. At this point, the configuration data is written to the FPGA. The FPGA pulses the Global Set/Reset (GSR) signal at the end of configuration, resetting all flip-flops. The completion of the entire process is signaled by the DONE pin going High." Die FFs werden also sehr wohl asynchron zurückgesetzt. Das wird aber als Teil der Initialisierung angesehen, weil es eben nach dem Power-Up passiert, egal ob Du noch zusätzlich selber irgendwelche asynchronen Resets einbaust oder nicht.
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.