Hallo Leute, ich habe folgendes Probleme und brauche mal einen Rat. (und ich denke es gibt hier welche die mein Problem lösen können ;)) Also ich entwickle gerade ein Modul auf dem Spartan6 (lx75). Teil dieses Moduls ist unter anderem ein DDR2-Ram-Controller. Den hab ich mit dem MIG-tool entworfen und auf einfache weise mit meinem SP601-Evalboard getestet. Der funktioniert auch soweit. Mein Problem ist nun, dass der Ram-Core ne Clock brauch und meine restliche Logik ebenfalls mehrere Clockcore besitzen. Die Clock für den Ram-Core und für die Clockcores sollen von einem Pin gespeißt werden (das ganze Modul braucht 95% der I/O-Pins, hab also nicht umbedingt viele Pins über). Wenn ich nun meinen Ram-Core mit meiner restlichen Logik zusammenpacke, gibt es immer wieder Fehler entweder in der Synthese oder der Implementation durch die Clockbuffer. Einerseits sagt er ein Pin kann nicht 2 IBUF Instanzen treiben. Wenn ich aber als Clock für den Ram-Core nen Ausgang von einen der Clockcores verwende, sagt er mir ich darf nicht 2 Clockbuffer in Serie verwenden. Das heißt ich kann weder 2 Clockbuffer in serie noch parallel verwenden??? Kann doch nicht sein. Ich kenne mich leider mit den internen Clockprimitives noch nicht wirklich aus, aber es muss doch einen Weg geben, den Ram-Core und die restliche Logik von einem Taktpin zu speisen. Bin sehr dankbar für jeden Hilfsansatz. Grüße Shaheed
Schau mal in diesen Thread: Beitrag "Spartan3: zwei DCMs in Serie schalten" Da hatte ich ein ähnliches Problem.
Eventuell verwechselts du da was: Clockbuffer (Clock-tree driver) sollte BUFG oder BUFGMUX heissen, die Input-buffer IBUF MfG,
G. A. schrieb: > Das heißt ich kann weder 2 Clockbuffer in serie noch > parallel verwenden??? Kann doch nicht sein. In diesem Fall mußt Du den Clockbuffer aus dem MCB manuell entfernen (memc?_infrastucture.vhd). Der Core kennt leider nur die Optionen "single ended" und "differential". In diesem Fall kann es prinzipiell nicht schaden, den UG382 durchzulesen. Duke
Das entspricht ie demgleichen Problem, 2DCMs von einem Clock-Pin speisen zu lassen. Beim manuellen Instantiieren der DCMs/PLLs/etc. kann man einen IBUFG für den CLK-Pin erzeugen und in beide DCMs speisen. Beim Generieren per Generator kann im DCM-Menü angegeben werden, ob Clock intern oder extern eingespeist wird (intern: ich weiss jetzt nicht genau, ob dann ein BUFG für den Clock-Eingang erzeugt wird. In diesem Fall muss dieser manuell entfernt werden. Ist leider nicht ganz einfach, aber auch nicht so kompliziert). Für MIG gibt's ebenfalls unterschiedliche Optionen: entweder werden alle Clock-Signale vom MIG-Generator erzeugt werden (ob hier zwischen internen/externen CLK-Signalen unterschieden wird:??) oder sie werden durch den User erzeugt (in diesem Fall kannst du per 2.DCM wie Oben alle Signale erzeugen und an dein MIG-Modul weiterreichen).
Sigi schrieb: > (intern: ich > weiss jetzt nicht genau, ob dann ein BUFG für den Clock-Eingang > erzeugt wird. Mittlerweile ist dann kein Buffer mehr dran, man muss dann allerdings selbst einen instanziieren. In älteren Versionen des CoreGen war das mit manueller Nacharbeit.
Danke für die schnellen Antworten, ist der Ram-Core den noch sicher funktionstüchtig wenn ich einen Teil daraus manuell entferne?? Hast du das schon ausprobiert? Variante 2 wäre also nicht den Clockwizard zu benutzen, sondern meine Clockstruktur selbst aufbauen, so dass ich von einem Pin sowohl Ram-Core als auch restliche Logik versorgen kann... hab ich das richtig verstanden?? kann mir jmd Links schicken wie man sich eine Clockstruktur selbst aufbaut?? Habe sowas noch nie gemacht. Ich hab zwar das xilinx Dokument für die Clockresources aber nen Beispiel für eine manuelle Clockstruktur hab ich da nicht gesehen. nochmals Danke
Ich kenn mich selbst weniger mit dem S6 aus, schau dir aber mal ug382.pdf (S6 Clock Management) und das vom CoreGenerator erstellte VHDL-Design eines DCMs bzw. PLLs an (plus evtl. die VHDL Library Guide zum S6); ist eigentlich sehr logisch aufgebaut. Liefert ausreichend Einsicht in die ganze Clocking-Geschichte. Zum Speicher-Controller: zum MIG-Design wird ein PDF generiert (ug086.pdf??). Da sind sämtliche Optionen gut erklärt.
Zu selber ausprobiert..: Meine MIGs werden immer mit selbsterstellten DCM-Controllern betrieben, funktionieren alle prächtig (allerdings nur auf S3/V4/V5, andere hatte ich noch nicht probiert).
also ich denke ich habs geschafft (zummindest implementiert ISE mein code). für alle die es interessiert, ich hab die Ausgangsclock von dem Ram-Controller benutzt und diese an die Clockmodule weitergeleitet. Beim Clocking-Wizard hab ich noch die Einstellung "no Buffer" verwendet so das kein Input-Buffer implementiert wurde und jetzt funktioniert es. Danke für eure Hilfe
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.