Hallo,
wie kann man für einen FPGA ein Resetsignal(extern oder inetern)
erzeugen, den die Interne-Logik braucht um einen vordefinierten
Anfangszustand anzunehmen?
Ich bin gerade dabei ein Board für meine Designs zu entwerfen.
Ich möchte, dass alle meine Statemachines und nach Anlegen der
Versorgungsspannung einen vordefinierten Zustand annehmen.
Diese habe ich alle mit einem Reset versehen. Ohne diesen laufen Sie
nicht weiter(L->H).
Ich habe hierbei an ein RC-Glied gedacht. Der Kondensator soll sich nach
anlegen der Spannung aufladen um nach einer Weile an den Pin des FPGA,
an dem es angeschlossen ist ein L->H zu gewährleisten.
Wie löst ihr das Problem?
Hallo Reset-Master,
ich hätte da zwei Varianten die bei dir Funktionieren könnten.
extern:
so wie du schon angefangen hast ein RC-Glied allerdings nicht direkt an
den FPGA sondern auf den Eingang eines Resetbausteins z.B MAX809MEUR
durch die Verzögerung erreichst du das nach dem laden des FPGAs dein PIN
gesetzt wird.
intern (einfacher und schnell zu programmieren):
man nehme zwei D-FlipFlops und schalte diese in Reihe.
Auf den D-Eingang des ersten lege VCC der Eingang des zweiten ist
Ausgang des ersten und der Ausgang des zweiten ist dein Reset.
Den Takt der Flip Flops kannst Du Dir aussuchen je nachdem welche
Verzögerung du einbauen möchtest.
Die Schaltung verhält sich dann folgendermaßen nachdem der FPGA geladen
ist das heißt VCC & CLK am Flip Flop geht zwei CLK- Perioden danach dein
Reset auf high.
Damit kannst du dann nach dem Start deine Logik in einen definierten
Zustand bringen.
hoffe es hilft
RC-Glied als Reset ist so ziemlich die bloedste Idee auf die man kommen
kann.
Unzuverlaessig und zudem wird wohl kaum die Anstiegszeit des FPGA inputs
eingehalten.
Falls du ein SRAM basiertes FPGA verwendest, nach der Konfiguration hast
du ja deinen Anfangszustand!
Ein Resetbaustein wie PROMi beschreibt ist okay, nur musst du halt
schauen dass das reset signal noch ansteht wenn der FPGA in den user
mode wechselt.
Cheers, Roger
haben die fpgas (die SRAM basierten) ohnehin nicht schon eine eigene
reset-logik intern ?! weil irgendwie muss ja das laden des srams durch
das flash erfolgen. demnach müssten die doch eine por-logik schon
drin-haben, oder sehe ich das falsch.
ich habe spaßeshalber mal in den schaltplan des spartan3-starter-kits
geschaut. da ist kein expliziter reset-baustein zu finden ...
>wie kann man für einen FPGA ein Resetsignal(extern oder inetern)>erzeugen, den die Interne-Logik braucht um einen vordefinierten>Anfangszustand anzunehmen?
Das ist in FPGAs bereits enthalten. Siehe Datenblätter.
Man kann das komplett in Software machen, indem man eine state machine
mit 3 Zuständen baut: Vom Zustand 1 geht es nach 2, von 2 nach 3 und da
ist Ende. Diese Schaltung "fällt" also spätestens nach dem 2. clk in den
Endzustand. Dieser released eine zuvor auf null gehaltene state machine,
die dann selbstätig gegen ein Maximum zählt und damit eine einstellbare
Zeit wartet. Beim Übergang vom vorletzten zum letzen Zustand gibt es den
reset an die restliche Schaltung. Dies wird von einer dritte fsm
überwacht, die dann beide primären fsms still schaltet. Die Resetbreite
kann man so auch einstellen, indem man von n-x bis n auf RES hält. Die
Schaltung funktioniert für alle möglichen Einschaltzustände, läuft
maximal n-x clocks und liefert bei einem einzigen Fall auch im
Startzustand einen kurzen Reset. Will man eine definierte minimale
Verzögerungszeit, macht man beide primären fsms sehr kurz und schaltet
noch ein Verzögerungglied nach.
Wieso willst Du ein Problem lösen, dass nicht existiert?
FPGAs haben eine interne Reset-Logik; alle Flip-Flops werden auf
definierte Werte gesetzt, die Du vorher festlegen kannst.
Kannst du bitte mal das Beispiel erklären, wie das mit dem 16-Bit SR
gemeint ist? Stehe da auf dem Schlauch, was das eigentlich soll.
Ausserdem: Eine Resetlogik hat doch mit den Anfangszuständen nichts zu
tun. Anfangszustand ist Anfangszustand - ein Reset kommt irgendwann im
Betrieb.
>Eine Resetlogik hat doch mit den Anfangszuständen nichts zu tun.
Ach nein? Und wie genau bekommst Du dann Flip-Flops in einen
definierten Anfangszustand?
Freilich kann man einen Reset auch später ausführen; am Anfang brauchst
Du ihn trotzdem. "Power-On Reset" nennt sich das.
>Ach nein? Und wie genau bekommst Du dann Flip-Flops in einen>definierten Anfangszustand?
Genau so, wie oben beschrieben: PER DEFINTION in der Sig-Deklaration.
Das ist aber ein initialer SET und kein RESET. Wohlgemerkt "re-set".
Ein Reset ist ein automatisiert oder mauall getriggerter Vorgang, der
ein Schaltwerk aus IRGENDEINEM Zustand wieder in einen definierten
Zustand überführt und nicht nur aus einem SPEZIELLEN Zustand.
Man muss also 2 Fälle unterscheiden.
#Ausserdem: Eine Resetlogik hat doch mit den Anfangszuständen nichts zu
#tun. Anfangszustand ist Anfangszustand - ein Reset kommt irgendwann im
#Betrieb.
Ein solcher reset (im Betrieb, Software Reset) habe ich hier nicht
betrachtet. Das hat der Frager auch nicht gemeint:
Zitat:
"Ich möchte, dass alle meine Statemachines und nach Anlegen der
Versorgungsspannung einen vordefinierten Zustand annehmen."
Also PowerUp-Reset. genauer gesagt startUp reset (grundzustand beim
"Starten des FPGA nach Konfiguration)
Vielleicht nochmal was zur Begriffsdefinition:
Wenn man es ganz genau nimmt, bedeutet "RESET" bei einem Flip-Flop,
dass man es auf den Wert '0' setzt, und "SET", dass man es auf den Wert
'1' setzt.
In der Regel wird bei digitalen Schaltungen aber der Begriff "RESET"
auch dazu benutzt, um "RESET auf '0'" und "SET auf '1'" gleichzeitig zu
beschreiben. In meinem Mikrocontroller zum Beispiel haben manche
Registerbits einen Resetzustand von '0', und manche '1'. Ich sage aber
trotzdem RESET, und nicht RESET/SET. Und der RESET-Pin heisst bei allen
Mikrocontrollern die ich kenne RESET, und nicht RESET/SET, obwohl das
eigentlich genauer wäre.
Soviel dazu. Jetzt nochmal zu Deinen Ausführungen:
>Genau so, wie oben beschrieben: PER DEFINTION in der Sig-Deklaration.>Das ist aber ein initialer SET und kein RESET. Wohlgemerkt "re-set".
Soweit ich verstehe, meinst Du mit "SET", was andere unter dem Begriff
"Power-On Reset" verstehen.
Unter "RESET" verstehst Du offenbar nur einen Reset, der später kommt,
und der die Flip-Flops in einen anderen Zustand als den Anfangszustand
versetzt. Klar kann ich das machen. Du kennst beliebig viele
Resetsignale benutzen, und mit jedem einen anderen Resetwert verknüpfen.
Aber ein "Power-On Reset" bleibt trotzdem ein Reset.
>Ein Reset ist ein automatisiert oder mauall getriggerter Vorgang, der>ein Schaltwerk aus IRGENDEINEM Zustand wieder in einen definierten>Zustand überführt und nicht nur aus einem SPEZIELLEN Zustand.
Das ist Deine Definition.
Hallo,
ich möchte nicht bei der Reset-Definitionsgespräch hier mitmischen(Null
Ahnung!), brauche sondern eine konkrete Hilfestellung.
Wie kann man einen Power-On-Reset nach definiertem Zeitablauf ab Start
des FPGA erzeugen?
Habe mehrere Reset-Signale in meinem Design. Aber alle sollen mit dem
Selben Reset-Signal nach 3 sec nach Anlegen der Spannung Ihre
Grund-Zustände annehmen.
Habe ein ständiges High an einem Pin. Dieser soll den Reset auslösen.
Der daraus abgeleitete Reset-Signal soll nach 3 sec. von High nach Low
gehen und dort bleiben.
Hat jemand eine Idee, wie ich dies am elegantesten lösen kann?
Hatte ich doch oben schon beschrieben: Du brauchst einen selbst
resettenden Zähler, der von irgendwo starten kann, gegen null läuft und
dann den eigentlichen delay-Zähler von (bir offenbar 3 sek) anstösst.
Die selbststartende Logik, wie ich sie beschrieben habe, funktioniert
auch in ASICs, die keinen Startzustand haben. Beim FPGA, wo man einen
Startzustand der FFs definieren kann, kann man sich den sparen. Ergo
hast Du einfach nur einen Zähler, der mit zero intitalisiert wird, zählt
und dann einen puls abgibt.