Forum: FPGA, VHDL & Co. LVDS mit DDR annehmen


von Gast (Gast)


Lesenswert?

Ich stehe vor dem Folgendem Problem: Ein AD-Wandler sendet über LVDS 
seine ausgehenden Signale seine seriellen Daten an mein FPGA. Diese 
kommen aber erstens über seine eigene PLL, zweitens mit genau doppelter 
Frequenz, mit der ich ihn steuern kann und drittens als LVDS und in 
doppelter Datenrate.

Praktisch muss ich also 2x LVDS je für daten und clock annehmen, DDR auf 
SDR wandeln, die Frequenz halbieren und alle Clockübergänge beachten und 
wer weiss was sonst noch.

Erstes Problem:  Die instanzieirbaren SERDES schaffen nur 10 Bit, 
während der Wandler bis zu 14 bringen kann.

Zweites Problem: Die PLL des Wandlerss schafft mir ja eine Art Jitter 
und erfordert wieder Einsynchronisieren. Wie macht man das auf der 
doppelten Frequenz? Ich sende dem Wandler schon 100 MHz und will keine 
negativen Clockzustände benutzen.

Wie muss so eine Schaltung aussehen?

von Klaus F. (kfalser)


Lesenswert?

1) Die eingebauten SERDES Blöcke mit 10 Bit, die Du wahrscheinlich 
meinst, sind für die Kommunikationsprotokolle gedacht.
Das Einlesen der A/D Daten kann mit einem Schieberegister erfolgen. 
Eventuell brauchst Du 2 Schieberegister, je eins für jede Flanke.
Danach wird das ganze zu einem 14 Bit Word zusammengesetzt.
Das alles erfolgt mit dem Takt des A/D Wandlers
2) Zum Übergeben an den Rest der Schaltung, die mit einem anderen Takt 
läuft, verwendet man am besten ein FIFO mit 2 getrennten Taktemn für 
Eingang und Ausgang.

von Sebastian U. (sebp20)


Lesenswert?

Von Xilinx gibt es zu dem Thema ein App Note:

http://www.xilinx.com/support/documentation/application_notes/xapp774.pdf

darin ist ganz gut beschrieben wie ein solches Interface realisiert 
werden kann.

von Chef (Gast)


Lesenswert?

"Ich sende dem Wandler schon 100 MHz"

Sind das dann 100MHz x DDR oder 100MHz x 2 auf DDR, also 400?

Zumindest im ersten Fall geht das auch noch mit einer einizgen 
Sampleclock von dann 200MHz, die man per PLL-Ausgang=100 auf die 
positive Flanke trimmt. Die Zwischenflanken nehmen dann die ODD samples 
an. Macht ein 200 MHz Schieberegister, dass alle 14 clocks ein Datum 
abwirft, welches dann 14MHz lang gueltig ist.

von Gast (Gast)


Lesenswert?

Also genau genommen ist es so, dass der Wandler mit 200MHz DDR daher 
kommt. Gesteuert wird er mit einem n-teil davon, also z.B. 100,50,25 - 
er macht sich dann seinen eigenene Takt.

Wenn ich es richtig verstanden habe, muss ich also die negativen und 
positiven Takte getrennt sampeln? Dann liefe jedes Register mit 200MHz.

Aber mit welchem Takt lese ich die aus? Ich will möglichst wenig nutzen, 
wegen des Stroms, ausserdem sehe ich noch nicht, wie ich die beiden 
Register zusammenbekomme - die arbeiten ja nicht auf derselben Flanke.

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