den Reset Fall, der bei jedem (FPGA-) Start initiiert wird, in
synthetisierbarer Form verwenden, richtig?
Wenn ich nun eine Simulation über den Simulationsassistenten starte,
wird zwar kein Fehler erzeugt, aber die Reset Leitung bleibt immer auf
'z'.
Mache ich etwas falsch?
Danke im Voraus!
>> den Reset Fall, der bei jedem (FPGA-) Start initiiert wird, in> synthetisierbarer Form verwenden, richtig?>> Wenn ich nun eine Simulation über den Simulationsassistenten starte,> wird zwar kein Fehler erzeugt, aber die Reset Leitung bleibt immer auf> 'z'.>> Mache ich etwas falsch?>
Ja.
Die GSR Komponente macht nicht das was man naiverweise erwartet. Es
dient nicht nicht dazu das GSR nach der Konfiguration als Signal zur
Verfügung szu stellen, sondern umgekehrt das GSR Netzwerk gezielt auch
für ein Benutzerdefiniertes Reset zu nutzen (spart Resourcen). Das ist
aber nur in Ausnahmefällen nötig, die automatische Auswahl eines
Benutzer Resets für GSR beim Mappen funktioniert ziemlich gut.
Aber der Simulator weiss davon nichts, d.h. man muss im Toplevel der
Testbench, sowohl GSR, als auch PUR instanzieren damit die Zuweisung von
Initwerten funktioniert. Ein Signal muss man nicht zuweisen, es sei denn
man möchte in der Testbench ein Reset gezielt auslösen können.
Lattice User schrieb:> Die GSR Komponente macht nicht das was man naiverweise erwartet. Es> dient nicht nicht dazu das GSR nach der Konfiguration als Signal zur> Verfügung szu stellen, sondern umgekehrt das GSR Netzwerk gezielt auch> für ein Benutzerdefiniertes Reset zu nutzen (spart Resourcen).
Danke für die Info, das habe ich dann wirklich falsch verstanden. Wie
würde ich in meinem Beispiel das Signal denn richtig nutzen?
Lattice User schrieb:> Aber der Simulator weiss davon nichts, d.h. man muss im Toplevel der> Testbench, sowohl GSR, als auch PUR instanzieren damit die Zuweisung von> Initwerten funktioniert.
Und was ist mit dem FPGA? Wird da das Signal am Anfang automatisch
ausgelöst? (So wenigstens habe ich es verstande, aber ich fand die
Formulierungen in der TN etwas mißverständlich, gerade was PUR angeht).
Also es funktioniert jetzt, in dem ich mir einfach die Tatsache zunutze
mache, dass beim GSR alle Register mit "0" initialisiert werden. Das
prüfe ich bei positiver Taktflanke in meinem Toplevel Modul, und
reagiere entsprechend (und setze das Register dann auf "1"). Die Frage
ist halt, ob dies "the way to go" ist, oder man nicht doch irgendwie
direkt an das Signal kommt.
Janis E. schrieb:> Also es funktioniert jetzt
Das ist ja schön, aber mir ist immer nocht nicht klar geworden, was Du
eigentlich genau machen willst.
Ich habe das GSR in meinem bishergen (FPGA-)Leben noch nicht benötigt.
Duke
Duke Scarring schrieb:> aber mir ist immer nocht nicht klar geworden, was Du> eigentlich genau machen willst.
Ich verwende den Mico8 Softcore, und der hat einen Reseteingang (bzw.
das generierte Modul samt Bus & Peripherie). Naiv gedachte habe ich mir
überlegt, dass ich das ja auch nutzen muss, und daher - analog zum
Takteingang - auch irgendwo her ein Resetsignal bekommen muss.
Habe ich das falsch verstanden? Muss einfach einfach nur sicherstellen,
dass das Resetsignal während des Betriebs auf High gehalten wird (active
low)?
Janis E. schrieb:> Mico8 Softcore
Ah, ok.
Ich lege solche 'ungenutzten' Reset-Eingänge entweder auf festen Pegel,
oder baue ein kleines Schieberegister, was nach dem Einschalten bzw. der
Konfiguration den Reset-Eingang für ein paar Takte aktiviert.
Aber eigentlich sollte ein fester Pegel ('1' bei active-low) völlig
ausreichend sein.
Das FPGA sorgt ja (dank GSR) automatisch dafür, die FF's erst dann
losrennen zu lassen, wenn die Konfiguration durchgelaufen ist.
Duke
Duke Scarring schrieb:>> Aber eigentlich sollte ein fester Pegel ('1' bei active-low) völlig> ausreichend sein.
Da wäre ich mir nicht so sicher. Wenn z.B. in den Resetanweisungen ein
FF auf 1 initialisiert wird und dieses wegem dem konstant inaktiven
Reset wegoptimiert word, ist es sicher nicht im Sinne des Anwenders.