Servus, zum Verständnis: Ich benutze eine einen DCM um meinen FPGA Takt aus dem Systemtakt abzuleiten. Der Systemtakt ist schaltbar. Wenn kein Takt anliegt soll mein FPGA mit einem Reset neu starten. Zum generieren des Resets wollte ich das locked Signal des DCM nutzen. Problem: Wenn das Locked Signal einmal gesetzt ist, fällt es nie wieder ab auch wenn der Eingangstakt abgeschaltet ist. Dies habe ich jetzt in Modelsim (hier dachte ich es wäre ein Bug vom Modell) und auf der Hardware nachgewiesen. Jedes mal bleibt Locked '1' egal was mein Eingangstakt macht. Zum Verständnis hab ich die Simulation angehängt. Nicht verwirren lassen. Ich benutze eine "DCM Clock Switching" also 2 DCMs die am Ausgang mit einem BUFGMUX umgeschaltet werden können. Ist das so gewollt? Ich halte das für Mist :-( Danke Gruß Hochpass
Da war mal was, dass das DCM-Modell am Anfang tatsächlich eine gewisse Zeit/Anzahl Takte einen Reset braucht. Allerdings konnte ich das in der Hardware nicht feststellen. Welches FPGA verwendest du denn überhaupt?
Servus, ist ein Spartan 3A DSP. In der Simulation, wenn man den Reset benutzt, muss der Resetpin mindestens für 3 Eingangsakte high sein. Ob die Hardware das braucht weiß ich noch nicht. Lese mich da gerade tiefer ein... Die DCMs brauchen einen Reset wenn der Eingangstakt abbricht. Weil der Locked Status sich nicht ändert hab ich jetzt mit einer zweiten DCM, einem Boardtakt der nicht schaltbar ist und ein bischen Logik den Statuspin(1) der besagten DCM abgefragt und generiere jetzt einen Reset, wenn der Takt wieder da ist. Mal sehen ob das das Problem löst. Verstehe trotzdem nicht, warum der Locked Pin high bleibt. Gruß Hochpass
Hi, bei älteren Virtex4 wird bei der Instantiierung von DCMs (je nach Wahl der Attribute) noch zusätzlich Slices generiert. Dies ist dann erforderlich, wenn der Eingangstakt nicht unterbrechungsfrei garantiert wird. War schon länger her, aber ich kann mich noch grob an ein AUTO_CALIBRATE_???-Message und eine GATED_CLOCK-Warning zu erinnern. Schau mal bei Xilinx unter Virtex4-Docus/Answers nach. Gruss
@hochpass: Wenn Deine Taktumschaltung funktioniert, kannst Du ja evtl. noch mal kurz beschreiben, wie Du es gelöst hast. Ich stehe demnächst auch vor dieser Aufgabenstellung und da können ein paar Tipps nicht schaden ;-) Duke
Hochpass schrieb: > Ich benutze eine einen DCM um meinen FPGA Takt aus dem Systemtakt > abzuleiten. > Der Systemtakt ist schaltbar. Wenn kein Takt anliegt soll mein FPGA mit > einem Reset neu starten. Zum generieren des Resets wollte ich das locked > Signal des DCM nutzen. Wieso nicht den Takt ganz normal (permanent) reingeben und den DCM generierten Ausgangstakt per Clk-Multiplexer ein-/ausschalten? Das wuerde die Sache deutlich einfacher gestalten. Woher kommt dein Eingangstakt eigentlich? Wer schaltet den?
Duke Scarring schrieb: > @hochpass: > > Wenn Deine Taktumschaltung funktioniert, kannst Du ja evtl. noch mal > kurz beschreiben, wie Du es gelöst hast. Ich stehe demnächst auch vor > dieser Aufgabenstellung und da können ein paar Tipps nicht schaden ;-) > > Duke Kommst du zufällieg aus Trier? :-)
berndl schrieb: > Wieso nicht den Takt ganz normal (permanent) reingeben und den DCM > generierten Ausgangstakt per Clk-Multiplexer ein-/ausschalten? Das > wuerde die Sache deutlich einfacher gestalten. > > Woher kommt dein Eingangstakt eigentlich? Wer schaltet den? Kommt von einem Übergeordneten FPGA. Wenn dort online Firmware updates laufen oder die Software einen Reset auführt sollen die untergeordneten FPGAs sauber loslaufen. Globale Resetleitung ist nicht vorhanden.
Hochpass schrieb: > Kommst du zufällieg aus Trier? :-) Nein, auch wenn ich schonmal zufällig in Trier gewesen bin ;-) Duke
So meine Lösung 2 Eingangstakte, 100 MHz läuft permanent 50 Mhz ist schaltbar. Welcher Takt genutzt wird ist über einen Schalter (switch_in(0)) wählbar. Erste DCM ist: DCM Clock Switching mit interner Resetlogik Zweite DCM: Single DCM Resetlogik (dcm_rst_1) wird getaktet mit dem Eingangstakt 100Mhz der permanent läuft. Die Statemachine dazu kannst dir ja selber überlegen. Ist nicht so schwierig. no_clock_out wird für Mäusekino benötigt. LED geht an wenn Board keinen Takt hat. Mit "reset" generiere ich dann Resets für meine Resetlogik. Mal sehen ob es sich bewährt.....
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.