Hallo, ich möchte in meinem FPGA (Spartan 3A) die Eingangsfrequenz (36Mhz) auf 72Mhz verdoppeln OHNE eine DCM oder DLL zu verwenden, weil ich das 6x benötige und in meinem FPGA nur 4 DCMs vorhanden sind. Mir schwebt da eine Schaltung mit 90° Phasenverschiebung und einem XOR im Kopf herum, wie hier besprochen: Beitrag "Frequenz verdoppeln" Wie ich allerdings die 90° Phasenverschiebung (wieder ohne DCM) zusammenbekomme, ist mir noch nicht klar. Ggf. könnte man den Takt mit 300Mhz abtasten und so eine relativ konstante Verzögerung zustande bringen. Hat jemand eine Idee, wie das am besten hinzubekommen ist, oder so etwas schon gemacht? Schöne Grüße, Wolfgang
du könntest dir ein Delay-Element mittels Handinstanzierung von LUTs und XLOC bauen. Das hat ein relativ determinitisches Delay. Dann erzeugte Clock rausleiten und "abstimmen".
Du hast also 6 getrennte Eingangsignale mit je 36 MHz und willst jedes von diesen verdoppeln? Du hast nicht geschrieben wozu Du das brauchst, aber ich könnte mir vorstellen, dass Dein Lösungsansatz nicht optimal ist. Wenn der verdoppelte Takt nur intern verwendet wird, dann sollte man mit einem höheren Takt mit Clock Enable arbeiten, das dann eben pro Flanke 2 x kommt. Eine Taktverdopplung mit irgendwelchen Verzögerungselementen und XOR ist nicht so empfehlenswert.
Danke für die Antworten erstmal! Ok, hier die Geschichte rundherum: ich habe 6 Kameraeingänge die mit unabhängigen, unzusammenhängenden Clocks daherkommen. Ich bekomme Daten an beiden Flanken des Clocks (DDR sozusagen), muss die Daten aber mit der steigenden Flanke weitergeben, oder ggf. intern in einem Blockram buffern, was ja auch nur mit der steigenden Flanke möglich ist. Das mit dem Delay Element habe ich mir auch schon überlegt, aber da kenn ich mich nicht richtig aus. Wie groß sind denn da die Toleranzen? Wenn das Tastverhältnis nicht ganz 50/50 ist, ist das nicht so tragisch. Müsste ich das im "Floorplaner" machen? Wolfgang
An den Eingangpins sind programmierbare delayelemente, (Xilinx UG331, Kapitel: "Input Delay Functions" wenn du also an zwei pins das selbe Signal einfädelst ... MfG Wolfgang Kopp schrieb: > Danke für die Antworten erstmal! > Ok, hier die Geschichte rundherum: ich habe 6 Kameraeingänge die mit > unabhängigen, unzusammenhängenden Clocks daherkommen. Ich bekomme Daten > an beiden Flanken des Clocks (DDR sozusagen), muss die Daten aber mit > der steigenden Flanke weitergeben, oder ggf. intern in einem Blockram > buffern, was ja auch nur mit der steigenden Flanke möglich ist. > > Das mit dem Delay Element habe ich mir auch schon überlegt, aber da kenn > ich mich nicht richtig aus. Wie groß sind denn da die Toleranzen? Wenn > das Tastverhältnis nicht ganz 50/50 ist, ist das nicht so tragisch. > Müsste ich das im "Floorplaner" machen? > > Wolfgang
Wolfgang Kopp schrieb: > Danke für die Antworten erstmal! > Ok, hier die Geschichte rundherum: ich habe 6 Kameraeingänge die mit > unabhängigen, unzusammenhängenden Clocks daherkommen. Ich bekomme Daten > an beiden Flanken des Clocks (DDR sozusagen), Um DDR-Daten in SDR zu wandeln ist das IDDR2 Element da. Danach hast du deine Daten in doppelter Breite mit 36 MHz. Die kannst du mit dieser Frequnez einen BRAM schreiben. Auf der anderen Seite kannst du sie mit 72MHz wieder auslesen. Tom
das mit dem Input Delay ist eine gute Idee, aber das mit dem IDDR2 gefällt mir besser. Ich brauche dann zwar wieder einen 72Mhz Takt, aber der muss dann nicht mehr in Phase sein und würde nur eine DCM verschwenden. Klingt weniger nach Trickserei... DANKE, Wolfgang
@ Wolfgang Kopp (Gast) >das mit dem Input Delay ist eine gute Idee, aber das mit dem IDDR2 >gefällt mir besser. Das ist die professionelle Lösung. > Ich brauche dann zwar wieder einen 72Mhz Takt, aber >der muss dann nicht mehr in Phase sein und würde nur eine DCM >verschwenden. Klingt weniger nach Trickserei... Ganz einfach. Deine Daten werden mit den 6 Eingangstakten eingelesen und in kleine ASYNCHRONE FIFOs geschrieben. Ein 7. Takt (nicht Zwerg ;-) nahezu beliebiger Frequenz und Phasenlage liest die Daten aus den FIFOs und macht die gesamte Datenverarbeitung. Bleibt sogar noch ein Globals Taktnetz frei, welch eine Verschwendung ;-) MfG Falk
Das Input Delay reicht aber doch nicht, oder? Man braucht für den EXOR-Konstrukt doch das originale und das verzögerte Signal. Das Delay muss schon IM FPGA sitzen. Ein Verkettung aus n LUTS müsste eigentlich reichen.
@ Oberpauker (Gast) >Das Delay muss schon IM FPGA sitzen. Ein Verkettung aus n LUTS müsste >eigentlich reichen. Murks^3
Bei 36MHz Datenrate kann man es auch einfach einsynchronisieren, indem man 4x 36MHz nimmt und bei steigender Flanke eines jeden Taktes sowie jeweils 2 Takte später die Daten übernimmt. Zur Not geht es sogar ganz ohne Takte. Mit z.B. dem 3fachen des DDR-Taktes (hier ca 200MHz) geht es recht bequemn.
Falls mal keine DCM/PLL zur verfuegung steht: http://www.pldworld.com/_xilinx/html/tip/sixeasypieces.htm Unterpunkt 4. Gruss
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.