Frequenzverdopplung in FPGA

Gast #1485715
Lesenswert?

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
#1485736
Lesenswert?

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.
Gast #1485865
Lesenswert?

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
Gast #1486047
Lesenswert?

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
(Firma: abaxor engineering) #1486185
Lesenswert?

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
Gast #1486262
Lesenswert?

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
#1486423
Lesenswert?

@  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
Gast #1487595
Lesenswert?

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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren