Forum: FPGA, VHDL & Co. Etwas aufwendigere Taktteilung mit Xilinx DCM


von Matthias (Gast)


Lesenswert?

Hallo,

ich habe hier das Problem, dass ich dem Core Generator nicht das 
entlocken kann, was ich brauche und nun nachwassern muss und mir nicht 
sicher bin, ob das was ich vorhabe funktioniert.

Problem ist: Ich habe eine 250Mhz input clock und brauche für Teile des 
Designs 125Mhz und 62,5Mhz. Der Core Generator sagt mir allerdings, dass 
die niedrigste output Frequenz die er bei 250Mhz input erzeugen kann, 
140Mhz ist. Anscheinend kann ich also nicht, was der erste Plan war, 
eine einzelne DCM hernehmen und sie diese Takte erzeugen lassen. DCM in 
Serie zu schalten will ich mir eher sparen, das hat mir das letzte Mal 
ziemliche Kopfschmerzen gemacht und am Ende doch nicht funktioniert.

Mein neuer Plan ist: Die 250Mhz clk auf einen 2Bit-Counter, der laufend 
erhöht wird. Bit0 liefert den 125Mhz Takt, Bit1 den 62,5Mhz Takt. Um nun 
das phase alignment mit der 250Mhz clk wieder hinzubekommen sollen die 
beiden neuen Takte jeweils zuerst in einen BUFG und dann jeweils in eine 
DCM die als Feedback-Eingang die 250Mhz clk hat. Dadurch soll die Phase 
angeglichen werden. In meiner Überlegung habe ich nach diesen DCMs die 
drei Takte, die ziemlich synchron laufen.

Allerdings bin ich mir alles andere als sicher, dass das funktioniert, 
bei den Taktquellen bin ich immer noch am Kämpfen.

von Matthias (Gast)


Lesenswert?

Im Prinzip kann ich da noch eine zweite Frage anhängen, die gut 
dazupasst: Ich hab jetzt eben zwei Teile im Design die Daten über einen 
Dual Port RAM austauschen. Die eine Seite arbeitet mit 250Mhz, die 
andere mit 62,5. Soll ich nun an der Seite des RAMs, an der das Design 
mit 62,5Mhz Clock arbeitet auch diese 62,5Mhz Clock anlegen oder die 
250Mhz Clock, die durch meinen obigen Plan oder auf anderen Wegen 
synchron zur 62,5Mhz clock wird?

Ich würde mal die 62,5Mhz Clock nehmen weil es mir nicht gefällt, dass 
das 62,5Mhz Design aus seiner Sicht einen Schreibvorgang durchführt und 
aus Sicht des Speichers sind das eigentlich vier. Aber die beiden 
unterschiedlichen Clocks verunsichern mich hier auch etwas.

von Jan M. (mueschel)


Lesenswert?

Was spricht bei so einfachen Teilern gegen die Verwendung von clock 
enable?

Siehe Taktung FPGA/CPLD

von Matthias (Gast)


Lesenswert?

Eigentlich nur die Tatsache, dass ich dafür bestehende und getestete 
Codeteile angreifen muss. Das würde ich zwar gerne vermeiden aber wenn 
es nicht anders geht wäre es mir das sicher wert.

von Jan M. (mueschel)


Lesenswert?

Es geht schon ohne, allerdings nur mit erheblichem Aufwand. Wie du schon 
sagtest, du brauchst einen dual ported ram mit zwei Takten, du musst die 
beiden Clock Domains komplett voneinander trennen und zwischen ihnen nur 
über diesen RAM kommunizieren.
Mit Clockenable ist der Hardwareaufwand gerade mal ein zwei Bit großer 
Counter und zwei Signale.

von Matthias (Gast)


Lesenswert?

Klingt überzeugend. Die bestehenden Teile um einen CKE zu erweitern 
sollte mir hoffentlich auch gelingen, ohne großartig Fehler 
einzubringen.

Ob das Konzept aus meinem ersten Post Mist ist oder funktionieren könnte 
würde mich allerdings schon noch interessieren.

von Jan M. (mueschel)


Lesenswert?

Im Prinzip schon, aber "ziemlich synchron" reicht eben meist nicht aus. 
Und das "bisschen asynchron" das übrig bleibt, führt immer wieder zu 
schönen, kaum reproduzierbaren Fehlern.

Man kann aber durchaus zwei DCM hintereinanderschalten, siehe dazu 
Answer Record 18181 von xilinx.

von Matthias (Gast)


Lesenswert?

Den hab ich schon gesehen und ähnlich habe ich es auch gemacht. Meine 
Probleme entstanden, als ich eine DCM hatte, die einen 125Mhz clock 
erzeugt hat und dieses Clock signal auf zwei DCMs leiten wollte, wobei 
der Takt der gleiche bleiben sollte und die eine gegenüber der anderen 
einen Phasenverschub machen. Laut meinem Chef kann man in der 
Konstruktion nicht sagen, ob die beiden parallelen DCMs sich immer in 
derselben Phase stabiliseren oder evtl die eine um 180Grad 
phasenverschoben zur anderen locked.

Wie gesagt, da bin ich verständnismäßig immer noch am kämpfen.

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.