Forum: FPGA, VHDL & Co. Bug im Xilinx DCM? Locked tut nicht das was es soll


von Hochpass (Gast)


Angehängte Dateien:

Lesenswert?

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

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


Lesenswert?

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?

von Hochpass (Gast)


Lesenswert?

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

von DCMler (Gast)


Lesenswert?

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

von Duke Scarring (Gast)


Lesenswert?

@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

von berndl (Gast)


Lesenswert?

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?

von Hochpass (Gast)


Lesenswert?

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? :-)

von Hochpass (Gast)


Lesenswert?

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.

von Duke Scarring (Gast)


Lesenswert?

Hochpass schrieb:
> Kommst du zufällieg aus Trier? :-)

Nein, auch wenn ich schonmal zufällig in Trier gewesen bin ;-)

Duke

von Hochpass (Gast)


Angehängte Dateien:

Lesenswert?

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
Noch kein Account? Hier anmelden.