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.
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
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
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
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.
Nur 600 MHz? Wie macht er es dann mit dem DDR-Ram? Konnte der nicht 800?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.