Forum: FPGA, VHDL & Co. Xilinx und die Resets


von Uli W. (uliw2008)


Lesenswert?

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.

????

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

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.

von Uli W. (uliw2008)


Lesenswert?

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.

?

von Jan M. (mueschel)


Lesenswert?

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

von Xenu (Gast)


Lesenswert?

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

von Argo (Gast)


Lesenswert?

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

von Eric (Gast)


Lesenswert?

Hi,

hierzu gibt es ein nahrhaftes White-paper von Xilinx:
http://www.xilinx.com/support/documentation/white_papers/wp272.pdf

Gruß
Eric

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

> 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?

von Xenu (Gast)


Lesenswert?

>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
Noch kein Account? Hier anmelden.