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