Forum: FPGA, VHDL & Co. DDR zu SDR Datenstrom


von Sebastian B. (sfreak) Benutzerseite


Lesenswert?

Hi,

mein Sparten-3e 500 bekommt von extern 5 LVDS-Pärchen mit Daten (DDR), 
und ein LVDS-Pärchen mit der passenden, um 90 Grad verschobenen, Clock.

Aus den LVDS-Takt erzeuge ich über IBUFGDS und DCM zwei 
phasenverschobene Takte Clock0 und Clock180.  Die Daten gehen über 
IBUFDS auf 5 IDDR2 (betrieben mit Clock0 und Clock180). Um die 
IDDR2-Ausgänge zusammenzufassen, könnte ich z.b. zwei Vektoren 
rxdata_0(4 downto 0) und rxdata_180(4 downto 0) definieren.

Hoffe, das habe ich mir soweit richtig überlegt. Nun möchte ich die 
Daten mit Clock0 weiterverarbeiten und dazu aus den beiden 5-Bit 
Vektoren einen 10-Bit SDR Datenstrom zusammenbauen. Wie mache ich das am 
einfachsten? Irgendeine Pufferung werde ich doch sicher brauchen, FIFO 
klingen aber überdimensioniert, habe da einen kleinen Blackout.

Sebastian

von Christian R. (supachris)


Lesenswert?

Du kannst das Cascade Feature des IDDR2 nehmen. Siehe User Guide auf 
Seite 330 unten. Wenn du bei der Instanziierung sagst 
"DDR_ALIGNMENT=C0", dann wird ein 2. FF in den D Ausgang eingeschleift, 
was das Signal von 180° auf 0° bringt. Geht aber nur bei differenziellen 
Signalen, aber die hast du ja. Ansonsten einfach selber ein FlipFlip 
getaktet mit CLK0 hinter deine 180° Daten und fertig ist die Laube.

von Sebastian B. (sfreak) Benutzerseite


Lesenswert?

Top, das Cascading habe ich übersehen, dann ist das natürlich extrem 
einfach! Werd ich morgen ausprobieren.

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.