Forum: FPGA, VHDL & Co. Power-Up State von FFs


von Matthias F. (flint)


Lesenswert?

Hallo,

mir ist mal wieder was nicht klar und zwar geht es um den Power-Up State 
der FFs im FPGA und auch darüber hinaus. Meine Unklarheiten sind:

1. Wird allen FFs bei Synthese ein definierter Power-Up State 
zugewiesen?

2. Wenn ja, nehmen die Synthesetools da einfach LOW oder schauen sie 
auch darauf, was der Benutzer für einen Reset-Wert für die FFs vorsieht 
(das fände ich eigentlich ziemlich clever)? Es geht jetzt hier nicht um 
die Signale, die schon bei der Deklaration einen Initialisierungswert 
zugewiesen bekommen sondern die, die so einen Wert eben nicht bekommen.

3. Wenn man über den Tellerrand der FPGA-Welt zb zu den ASICs schaut, da 
wird ja keine Konfiguration geladen und nach dem Einschalten sind die 
FFs wohl in einem undefinierten Zustand (oder?). Kann es da nicht zu 
Problemen kommen wie zb ein CMOS-Transistorpaar kommt in einem 
ungünstigen Spannungsbereich hoch und reißt die Schaltung in die 
Metastabilität oder zieht so viel Strom, dass das Ganze sich erhitzt und 
evtl Schaden nimmt?

Danke für alle (halbwegs sinnvollen ;) ) Antworten,

mfg
Matthias

von Jan M. (mueschel)


Lesenswert?

Matthias F. wrote:
> 1. Wird allen FFs bei Synthese ein definierter Power-Up State
> zugewiesen?
Bei SRAM-basierten FPGA ja.

> 2. Wenn ja, nehmen die Synthesetools da einfach LOW oder schauen sie
> auch darauf, was der Benutzer für einen Reset-Wert für die FFs vorsieht
> (das fände ich eigentlich ziemlich clever)?
Ich kenne kein Tool, dass die Reset-Werte zur Initialisierung benutzt. 
Die Erkennung derselbigen waere fuer das Tool auch nur mit einem recht 
hohen Aufwand moeglich. Und wer sagt, dass der Reset am Anfang 
stattfindet?

> Es geht jetzt hier nicht um
> die Signale, die schon bei der Deklaration einen Initialisierungswert
> zugewiesen bekommen sondern die, die so einen Wert eben nicht bekommen.
Auch das wird von den Tools nicht beachtet bei der Synthese. Nur in der 
Simulation spielt die Initialisierung bei der Deklaration eine Rolle.

von Klaus F. (kfalser)


Lesenswert?

>> Es geht jetzt hier nicht um
>> die Signale, die schon bei der Deklaration einen Initialisierungswert
>> zugewiesen bekommen sondern die, die so einen Wert eben nicht bekommen.

>Auch das wird von den Tools nicht beachtet bei der Synthese. Nur in der
>Simulation spielt die Initialisierung bei der Deklaration eine Rolle.

Ist (zumindest bei Xilinx) schon sein längerer Zeit nicht mehr wahr.
Die Synthese schafft es, die VHDL Initialisierungswerte in die Power-Up 
Werte umzuwandeln.

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


Lesenswert?

Matthias F. wrote:
> Wird allen FFs bei Synthese ein definierter Power-Up State zugewiesen?
Ja, bei SRAM-FPGAs.
Ein FPGA wird beim Power-UP initialisiert (zwischenzeitlich übrigens 
auch CPLDs), und damit werden alle Register auf definierte Werte 
gesetzt. Früher war das einfach '0'.
Heute kann man der Synthese Defaultwerte angeben (Achtung: bei 
Lattice-FPGAs abhängig vom Synthesetool, bei der freien Toolchain klappt 
das [noch] nicht).
Actel tanzt aus der Reihe, weil diese FPGAs nicht SRAM-Basiert sind.

> was der Benutzer für einen Reset-Wert...
Diese Initialisierung hat aber nichts mit dem berühmten Reset-Knopf zu 
tun.
Wenn da also irgendein Reset-Code eingebaut ist, muss da nicht zwingend 
das selbe bewirken wie ein Power-UP.

> ein CMOS-Transistorpaar kommt in einem ungünstigen Spannungsbereich hoch
> und reißt die Schaltung in die Metastabilität oder zieht so viel Strom...
Das Verhalten von ASICs beim Power-UP dürfte unter Kontrolle sein. Ein 
Prozessor, ein Ram, ein uC... ist schliesslich auch nichts anderes als 
ein ASIC.

@  Jan M. (mueschel)
> Auch das wird von den Tools nicht beachtet bei der Synthese.
> Nur in der Simulation spielt die Initialisierung
> bei der Deklaration eine Rolle.
Falsch. Xilinx kann das auch in der Synthese.

von MW (Gast)


Lesenswert?

Bei ASICs muss man schon dafür sorgen, dass beim einschalten ein 
definierter Anfangszustand entsteht. Eine Möglichkeit wären zum Beispiel 
Pull-Down/Up-Widerstände an den FSM-FFs.

von Matthias F. (flint)


Lesenswert?

Klaus Falser wrote:
>>> Es geht jetzt hier nicht um
>>> die Signale, die schon bei der Deklaration einen Initialisierungswert
>>> zugewiesen bekommen sondern die, die so einen Wert eben nicht bekommen.
>
>>Auch das wird von den Tools nicht beachtet bei der Synthese. Nur in der
>>Simulation spielt die Initialisierung bei der Deklaration eine Rolle.
>
> Ist (zumindest bei Xilinx) schon sein längerer Zeit nicht mehr wahr.
> Die Synthese schafft es, die VHDL Initialisierungswerte in die Power-Up
> Werte umzuwandeln.


Und wenn es keinen Initialisierungswert findet, nimmt es einfach einen 
Defaultwert (vmtl. LOW)?


MW wrote:
> Bei ASICs muss man schon dafür sorgen, dass beim einschalten ein
> definierter Anfangszustand entsteht. Eine Möglichkeit wären zum Beispiel
> Pull-Down/Up-Widerstände an den FSM-FFs.

Hmm, das bedeutet doch ganz ordentlichen zusätzlichen HW-Aufwand 
(=Platz), wenn ich zu jedem FF noch einen Pull-Down/Up dazubauen muss. 
Wird das wirklich so gemacht?

mfg
Matthias

von Mathi (Gast)


Lesenswert?

> MW wrote:
>> Bei ASICs muss man schon dafür sorgen, dass beim einschalten ein
>> definierter Anfangszustand entsteht. Eine Möglichkeit wären zum Beispiel
>> Pull-Down/Up-Widerstände an den FSM-FFs.

> Hmm, das bedeutet doch ganz ordentlichen zusätzlichen HW-Aufwand
> (=Platz), wenn ich zu jedem FF noch einen Pull-Down/Up dazubauen muss.
> Wird das wirklich so gemacht?

Gewöhnlich nicht. Das System wird so aufgebaut das es von selber aus 
einem undefinierten in einen definierten übergeht. Um das zu überprüfen 
werden extra Analysen für das Power-up bzw. auch Reset-Verhalten 
gemacht.
Siehe: Comprehensive Functional Verification: The Complete Industry 
Cycle von
Wile, Goss & Roessner

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.