Forum: FPGA, VHDL & Co. 1 auf 7 Iserdes auf Spartan 3


von Michael (Gast)


Lesenswert?

Hallo Leute,

ich möchte einen Camera Link Receiver auf einen Spartan 3 
implementieren. Hierzu würde ich einen ISERDES am besten 1 zu 7 
verwenden. Hat das von Euch schon mal einer gemacht? Kann man beim 
Spartan 3 die ISERDES überhauft so konfigurieren.

Die Frequenz liegt bei 280MHz. Nach dem 1 zu 7 Deserializer würde die 
Frequenz dann bei ca. 40MHz liegen.

von Duke Scarring (Gast)


Lesenswert?

Beim S3 gibt es noch kein SERDES, der hat nur DDR-IO (und Delays).
Da muß man die Register händisch ansteuern. Dabei könnte es mit der 
Taktung haarig werden: So ein DCM hat (je nach Betriebsart) bis zu vier 
phasenverschobene Taktausgänge (0, 90, 180 und 270-Grad).
Das passt eher auf einen 1-8 statt auf einen 1-7 Deserializer.

Außerdem finde ich auf die Schnelle im Datenblatt [1] nicht, wie schnell 
die IOBs schalten können.
Der interne Takt von 40 MHz dürfte unproblematisch sein.

Weiß jemand, welche von den vielen Zeiten aus dem Datenblatt man 
verwenden muß, um die maximale Togglerate am Pin herauszubekommen?
Sind evtl.
 und
 relevant?

Duke

[1] https://www.xilinx.com/support/documentation/data_sheets/ds099.pdf

von Michael (Gast)


Lesenswert?

Laut dem Datenblatt bei CLB Timing ist die maximale toggle Frequenz 
630MHz.

Demnach kann ich ja einen FF nehmen den 280MHz Clock in einen DCM 
schieben. Einem um 180° versetzten Clock erzeugen und diesen auf den FF 
Eingang geben.

Die seriellen Daten werden dann an den FF Eingang angelegt. Das 
Ausgangssignal kommt dann in ein Schieberegister mit 7 FFs. Das Problem 
wird dann jedoch sein das das Schieberegister eventuell nicht für 280MHz 
geeignet ist.

ungefähr so mit jeden Clock Flanke dann

SLOPE_d2 <= SLOPE_d1;
SLOPE_d3 <= SLOPE_d2;
SLOPE_d4 <= SLOPE_d3;
SLOPE_d5 <= SLOPE_d4;
SLOPE_d6 <= SLOPE_d5;
SLOPE_d7 <= SLOPE_d6;

oder

Data(6 downto 0) <= Data(6 downto 1) & NEW_INPUT VALUE;

Macht denn der Compiler das gleich draus

von Duke Scarring (Gast)


Lesenswert?

Michael schrieb:
> Das Problem
> wird dann jedoch sein das das Schieberegister eventuell nicht für 280MHz
> geeignet ist.
Wenn der CLB 630 MHz schafft, sollte er das Schieberegister auch 
schaffen.
Die paar FF würde ich per Hand gleich nach dem IOB platzieren (im 
ucf-File oder per Attribut).

Mit dem Schieberegistertrick, brauchst Du ja auch die vielen 
phasenverschobenen Abtasttakte nicht.

Ggf. brauchst Du noch eine Logik, die erkennt an welcher Stelle Dein 
Datenwort anfängt.

Duke

von Michael (Gast)


Lesenswert?

Ja Ich benutze auch ein Ringschiebereister in dem in eine 1 
durchschiebe. Wenn die 1 dann im 7. Register angekommen ist weiß ich das 
ich die Werte aus den FFs übernehmen kann.

von Michael W. (Gast)


Lesenswert?

Nur 600 MHz? Wie macht er es dann mit dem DDR-Ram? Konnte der nicht 800?

von Martin S. (strubi)


Lesenswert?

Moin,

schau Dir doch mal den MachXO2 von Lattice an, der kann das deutlich 
besser mit seinen Gearboxen. Beim Spartan3 rennt man je nach ISE-Version 
in div. Logfile-Abenteuer und Skew-Probleme rein. Der Umstieg von Xilinx 
auf Lattice ist auch nicht so ein Ding, und die Evalkits gibt's bei 
Mouser für ca 30 USD.

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.