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.
ich habe den Artikel zum thema begonnen: http://www.mikrocontroller.net/articles/Reset_f%C3%BCr_FPGA/CPLD Bitte weiterführen
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.
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.