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?
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 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.
"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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.