Wie erzeuge ich die beiden Takte, mit denen ich die beiden Flanken aus dem FF treibe? Ich habe gesehen, dass einige aus einer PLL nicht einen, sondern zwei Takte (einen mit 180 Grad) beziehen und diese auf das FF geben, manchmal mit und manchmal ohne BUFG. Braucht man keinen BUFG? Andererseits wird in manchen Beschreibungen auch komplett auf den negierten Takt verzichtet und dieser per Inverter generiert. und auch hier wieder mit und ohne Buffer dazwischen. Was ist wann richtig?
Die ODDR Primitive hat nur einen Takteingang C. Die Dateingänge werden bei steigender bzw. fallender Taktflanke durchgeschaltet. Es ist nicht notwendig einen zweiten Takt zu generieren. Gruß
:
Bearbeitet durch User
das hängt - wie so oft - vom konkreten FPGA ab. Der Spartan 6 beispielsweise hat keine ODDR sondern ODDR2, die mit 2 Takten (oder mit einem Takt und lokalem Taktinverter) angesteuert werden.
Wenn der negierte Takt einzig an das ODDR2 geht, kann das mit dem lokalen Inverter gemacht werden, ich hab das auch oft so, Taktausgang ist trotzdem OK und keine Timing Probleme.
Achim S. schrieb: > Der Spartan 6 hat keine ODDR sondern ODDR2, die mit 2 Takten Welchen Grund gab es, für XILINX, das beim Spartan 6 anders zu handhaben? Führt der Inverter dann nicht zu einem anderen d.c. als 50%? Ok, das wäre meistens wohl nicht relevant, nehme ich an - mur so interessehalber. Christian R. schrieb: > Wenn der negierte Takt einzig an das ODDR2 geht Warum nimmt man den negierten? Um den anderen frei zu haben?
Das ODDR2 am Spartan 3 und 6 hat nun mal zwei Takteingänge, die beschaltet werden müssen. Bei den Virtex und der 7er Serie ist dann wieder nur einer. Wahrscheinlich Sparmaßnahmen.
FPGA-Ingenieur schrieb im Beitrag #4335053: > Welchen Grund gab es, für XILINX, das beim Spartan 6 anders zu > handhaben? Wie Christian denke ich auch, dass es dabei um die "ökonomische Optimierung" der verschiedenen FPGA-Serien geht. Spartan6-Kunden sind daran gewohnt, dass ihr FPGA bei der Genauigkeit der IO-Timings hinter anderen herhinkt. FPGA-Ingenieur schrieb im Beitrag #4335053: >> Wenn der negierte Takt einzig an das ODDR2 geht > Warum nimmt man den negierten? Um den anderen frei zu haben? Das hast du glaube ich falsch verstanden: man schickt den "normalen" Takt zum ODDR2. Dort invertiert man ihn lokal und nutzt die invertierte Kopie, um den zweiten Takteingang des ODDR2 zu bedienen. Christian meinte, dass der invertierte Takt nur fürs ODDR2 benutzt wird (und nicht als Takt für andere Teile des Designs).
Genau so. Spartan kommt halt von spartanisch ausgestattet.
Achim S. schrieb: > Dort invertiert man ihn lokal und nutzt die invertierte > Kopie, um den zweiten Takteingang des ODDR2 zu bedienen. Christian > meinte, dass der invertierte Takt nur fürs ODDR2 benutzt wird (und nicht > als Takt für andere Teile des Designs). Ok, aber wäre es gfs ein Vorteil wegen fan out, den negativen Takt zum ODDR2 zu führen und ihn dort zu invertieren?
es mag sein, dass die eine Variante ein paar ps Timingvorteil gegenüber der anderen hat. Wenn man das wirklich wissen will, muss man halt tief in die timing Modelle des FPGAs einsteigen. Und wenn du auf diese paar ps angewiesen bist, dann hast du mit dem Spartan 6 den falschen Baustein gewählt (wobei noch nicht klar ist, von welchen konkreten Baustein es der TO zu tun hat). Meine Empfehlung: mach dir keinen Kopf über solche hypothetischen Fragen. Setze die Timings Constraints so, wie sie benötigt werden, und schau, ob sie eingehalten werden können. Wenn ja: pfeiff auf ein paar hypothetischen ps. Wenn nein: versuche das timing der Signalpfade zu verstehen, die zur Verletzung der constraints führen, und arbeite an den Parametern, die tatsächlich begrenzend für dein Design sind.
Für einen ADC ist der Ausgang wegen Jitter sowieso nicht brauchbar, alles andere sollte auch mit einem nicht ganz 50:50 Tastverhältnis klar kommen. Ich hab jedenfalls gerade da beim S6 keine Probleme. Ansonsten ist der halt wirklich Low Cost. Aber tut seinen Dienst, wenn man um die Bugs und Clocking Sachen herum schiffen kann. Für neue Designs nehmen wir aber nur noch die 7er Serie.
Christian R. schrieb: > alles andere sollte auch mit einem nicht ganz 50:50 Tastverhältnis klar > kommen. Solange es nicht DDR ist, definitiv. FPGA-Ingenieur schrieb im Beitrag #4335897: > Ok, aber wäre es gfs ein Vorteil wegen fan out, den negativen Takt zum > ODDR2 zu führen und ihn dort zu invertieren? Theoretisch könnte es so sein, dass dieser Takt, weil er einen geringeren fan out hat, mit weniger Verzögerung daher kommt, aber wenn das Timing im Chip getroffen wird, bleibt es sich gleich. Der Grund, den Takt aus einem eigenen Zeig der PLL kommen zu lassen, ist meist ein anderer, nämlich der, dass der Takt gegen die Daten etwas verschoben werden muss und die beiden Optionen 0 Grad und 180Grad, die das DDR-Reg bietet, nicht reichen.
Ich kämpfe schon auf viel weiter unten. Welches Vivado-IP muss ich nehmen, um ein ODDR zu erhalten (Ersatz für Altera altddio_out)?
ODDR wird nicht als IP-Core implementiert. Du kannst es einfach direkt instanziieren. Im Libraries Guide gibt es entsprechend Instanziierungs-templates, die du in deinen Code kopieren kannst.
Das geht aber auch direkt aus ISE oder Vivado mit dem Templates-Tab.
Achim S. schrieb: > Im Libraries Guide gibt es entsprechend > Instanziierungs-templates, die du in deinen Code kopieren kannst. Funktioniert tipp-topp. Nur schade, dass lediglich ein Instanziierungs-Template vorhanden ist (und man die zu verwendenden Typen mangels Entitydefinition erraten muss).
Dafür gibt es einen Library-Guide. Nur ist in dem eben nicht erwähnt, wie man es sinnvoll schließt. Daher meine Frage.
Der Anschluss sollte doch klar sein....was soll man da groß beschreiben? Ich glaube im Spartan 3 User Guide war da mal ein Bild drin.
Es ging um den Anschluss der Clock-Pins. Mit Buffer oder Ohne, aus PLL oder per Inverter.
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.