Hallo Leute, ich möchte einen Camera Sensor an den Virtex 5 anschließen. Die Kamera besitzt 4 Daten-Lanes, 1 Sync-Lane und 1 Pixel_Clock Leitung Der Pixel Clock besitzt eine Frquenz von 72MHz. Die Daten werden per LVDS übertragen. Bei den Daten werden 12Bit serial mit einer Frequenz von 288MHz übertragen. Für die Datenübertragung wird das DDR-Verfahren verwendet. Demnach werden über 1-LVDS Lane 576MBit übertragen. Ich möchte die Daten mit Hilfe von Deserializern in einen parallelen Datenstrom umwanden. Da 1 Pixel 12Bit besitzt benötige ich 2 Deserializern für 1 Datenstream. So weit so gut. Ich bin mir jedoch unsicher mit der Clockfrequenz am Deserializer. Wenn der Clock eine Frequenz von 72MHz besitzt und die Daten mit 288MHz übertragen werden dann noch das DDR verfahren verwendet wird, dann müste ich am Deserializer eine Frequenz von 288MHz mal 2 = 576MHz anlegen. Demnach muss ich den Pixelclock mit Hilfe eines DCMs auf 576MHz (72MHz * 8) boosten. Oder reicht es das ich einen 288MHz Clock mit 0° und einen 288MHz Clock mit 180° erzeugen und diese an den Deserializer anschließe?
Da gibt es so viele CLK Anschlüsse an dem ISERDES. Es gibt den CLK, CLKB, CLKDIV und den OCLK. Wenn einer sich mit dem ISERDES auskennt bitte schreibt wozu die ganezn CLK Eingänge gut sind und vor allem welche ich davon anschließen muss. Momentan ist das Konzept das die Daten in einen Block RAM geschriebe werden sollen und zwar nur dann wenn es sich um gültige Pixel Daten sind. Deshalb muss ich noch eine State-Machine erzeugen.
OCLK fällt schon mal weg da ich nicht den Memory Mode benutze. Benötige ich überhaupt den CLKB Port wenn ich den ISERDES im DDR Mode betreibe? Es gibt zwei Möglichkeiten den CLK und CLKB bei foldenen Input Bedingungen anzuschließen (Daten kommen mit 288MHz rein durch DDR wird daraus 576MBit) 1. Möglichkeit: -CLK Port 288MHz -CLKB Port 288MHz 180° Phasenversetzt 2. Möglichkeit -CLK Port 576MHz -CLKB wird nicht angeschlossen Bei der 1. Möglichkeit würde ich den Clock Input (72MHz) auf ein BUFG geben. Diesen dann an ein DCM anschließen. Aus dden 72MHz 288MHz generieren (72MHz * 4 = 288MHz). Den Ausgang vom DCM auf einen BUFG geben und diesen dann an den CLK Port vom ISERDES anschließen. Außerdem erzeugt der DCM auch einen 288MHz 180° Phasenversetzen Clock. Diesen würde ich dann an den CLKB Port vom ISERDES anschließen. Alles Datenleitungen zum ISERDES werden über IODELAYS eingestellt. Dies ist vielleich auch nicht notwendig, da die Leitungen alle auf unter 78ps genau geroutet sind. Da die kleinste Zeitauflösung 78ps ist kann man sich das auch sparren.
Sebastian schrieb: > Wenn einer sich mit dem ISERDES auskennt > bitte schreibt wozu die ganezn CLK Eingänge gut sind und vor allem > welche ich davon anschließen muss. Was spricht denn gegen die Infos im entsprechenden Userguide? https://www.xilinx.com/support/documentation/user_guides/ug190.pdf Ab Seite 353.
Sorry wenn ich das sage: 1) rtfm: SelectIO - da wird alles genau beschrieben 2) Wizzard verwenden!!! Was du geschrieben hast habe ich nicht das Gefühl das du das auf diesem Niveau selber machen kannst. Der Wizzard nimmt dir die komplette Arbeit ab! 3) Simulation: Versuch erstmal alles zu simulieren, funktioniert überraschend gut ;-) 4) schau dir auch mal das Cascading Feature an, da kannst evtl. 12 Bit direkt machen, ansonsten musst du dir noch eine Gearbox zusammenschustern
Da die ISERDES nur 10Bit unterstützen, konfiguriere ich die Kamera auf 10Bit um. Dann sollte das passen @Tobias B. Dank für den Hinweis das Xilinx auch ein PDF, indem beschrieben wird wie der ISERDES funktioniert. Jedoch steht hier nicht eindeutig drin was mit dem CLKB gemacht werden soll und ob der nur im DDR Mode angeschlossen werden muss. Die 2. Sache ist der CE1 und CE2 hier werde ich auch nicht aus der Beschreibung schlau. @tja Gerfühle können täuschen ich habe schon ganz andere Dinge auf dem FPGA folbracht :-)
Sebastian schrieb: > @Tobias B. > > Dank für den Hinweis das Xilinx auch ein PDF, indem beschrieben wird wie > der ISERDES funktioniert. Jedoch steht hier nicht eindeutig drin was mit > dem CLKB gemacht werden soll und ob der nur im DDR Mode angeschlossen > werden muss. Hmmm, und was genau versteht man da nicht (siehe Anhang)? Du sollst CLKB an die negierte CLK anschliessen. Und das "Always" im Satz macht es dann doch ganz eindeutig. Aber immerhin hast du jetzt mal eine konkrete Frage gestellt. Darauf aufbauend macht es deutlich mehr Spass zu helfen. Sebastian schrieb: > Die 2. Sache ist der CE1 und CE2 hier werde ich auch nicht aus der > Beschreibung schlau. Und hier gibt es sogar einen ganzen Paragraphen zum Thema, einfach mal das UG190 richtig lesen und simulieren. Simulieren bildet. ;-)
Ok dann werde ich den negierten Clock an CLKB anschließen. Kannst Du meine 2. Frage auch beantworten? Ja den Paragraphen kenne ich jedoch verstehe ich ihn nicht. Wieso denn bitte schön 2 CE.
Sebastian schrieb: > Kannst Du meine 2. Frage auch beantworten? Ja den Paragraphen kenne ich > jedoch verstehe ich ihn nicht. Wieso denn bitte schön 2 CE. Was gibt es da nicht zu verstehen? Steht doch klipp und klar dabei.
1 | When NUM_CE = 1, the CE2 input is not used, and the CE1 input is an active High clock |
2 | enable connected directly to the input registers in the ISERDES_NODELAY. When |
3 | NUM_CE = 2, the CE1 and CE2 inputs are both used, with CE1 enabling the |
4 | ISERDES_NODELAY for 1⁄2 of a CLKDIV cycle, and CE2 enabling the |
5 | ISERDES_NODELAY for the other 1⁄2. The internal clock enable signal ICE shown in |
6 | Figure 8-4 is derived from the CE1 and CE2 inputs. ICE drives the clock enable inputs of |
Gegen Faulheit hilft Bares, also Geld in die Hand nehmen und nenn Kurs bei PLC2 oder Doulos buchen. Wenn Englisch das Problem ist vielleicht mal mit Deepl.com probieren.
:
Bearbeitet durch User
@Tobias Du bist so ein Held einfach den Text aus dem Datenblatt zu kopieren und anschließend die Leute zu beleidigen. Solche Leute benötigt das Forum hier. Aber die Frae kontest Du trotzdem nicht beantworten. Es ist einfach nicht logisch was dort steht und die Erklärung ist alles andere als gut gelungen. Da hilft auch keine Übersetzungmaschine. Lass es einfach bleiben Deine schlechte Laune an andere auszulassen. Entweder schreibst Du was anderen hilft oder lass es einfach bleiben. Denn wenn andere auch das Problem haben müssen Sie sich nicht durch so einen Mist lesen
Was ist denn die 2. Frage. Ein ich werde daraus nicht schlau ist keine Frage. Ja, das hat 2 CEs, aber man muss nicht beide verwenden, einer genügt. Wenn man nur einen CE verwendet dann ist das das CE für den ganzen IOSERDES. Wenn man zwei CEs verwendet dann gelten die für die beiden um π verschobenen Clocks getrennt. Also der eine ist dann der CE für die eine Hälfte der Zeit und der andere für die andere Hälfte der Zeit.
Danke für die Antwort jedoch ist das nicht gerade logisch. Denn beide CE sollen sich ja auf den CLKDV beziehen. Logisch wäre es wenn der eine CE1 für den CLK und CLKB pin ist und der CE2 für den CLKDIV. Somit kann man beide Clocknetze unabhängig voneinander aktivieren. Aber auch das macht keinen Sinn denn der ISERDES ist nur zu gebrauchen wenn alle Clock Netzwerke aktiviert sind, daher weder ich nur CE1 bei der Umsetzung benutzen.
eigentlich finde ich, dass Tobias dir schon sehr viel geholfen hat. Es steht wirklich einiges gut beschrieben im Userguide. Hilfreich ist auch immer der Übertragungsstandard, ich tippe auf "Camera Link". Ich empfehle wirklich zu wizard+simulieren. Damit erkennt man auch schnell wie sich die CE pins verhalten. Danach versteht man auch die Beschreibung besser.
Die Camera benutzt leider ein anderes Format als Camera Link. Beim Camera Link werde die Data auch nicht im DDR-Verfahren übertragen. Die Camera hat 4 Datenstreams und einen Sycn Stream (hier gibts es Kommandos wie Start_Frame, StopFrame, Start_Line, EndLine, DarkPixel, Data_Pixel usw) Zusätzlich gibt es einen LVDS Lock Stream mit 72MHz. Die Daten kommen mit 288MHz rein (DDR = 576MBit/s) Ein DCM kommt hier leider nicht in Frage, da die Input Freuquenz zu niedrig ist und die Output Frequenz zu hoch. Die PLLs auf dem Virtex 5 habe ich bisher noch nicht genutzt. Hier bin ich mir unsicher ob ich das Feedback (Ausgang mit Eingang verbinden muss und ob ich einen BUFG dazwischen schalten muss) Ich finde solche Beleidungen wie "Gegen Faulheit hilft Bares, also Geld in die Hand nehmen und nenn Kurs bei PLC2 oder Doulos buchen. Wenn Englisch das Problem ist vielleicht mal mit Deepl.com probieren" schon wieder sehr persönlich."
Den Clock Wizard kannte ich auch noch nicht. Danke für den Hinweis. Ich habe den immer selber konfiguriert.
Sebastian schrieb: > @tja > > Gerfühle können täuschen ich habe schon ganz andere Dinge auf dem FPGA > folbracht :-) Sebastian schrieb: > Den Clock Wizard kannte ich auch noch nicht. Danke für den Hinweis. Ich > habe den immer selber konfiguriert. Selten so gelacht ... Hast jetzt schon eine Simulation am Laufen?
Habe schon vor 8 Jahren ein 800MHz ADC Board gebaut was die Daten über extended Camera Link übertragen hat. Parallel habe ich noch ein Kamera Bild mit 100FPS übertragen. Beim Camera Link Standard habe ich damals auf die externen Serializer zurückgegriffen. Habe ein Testdesign implementiert. Simulation kommt Diesntag. Hatte heute einfach zu viel parallel laufen. Zumindestens zeigt er keine Fehler bei der Implementierung an das stimmt mich schon mal positiv fürs Wochende.
Die Bitslip-Funktion reagiert in der Simulation nicht. Ich habe einen Screenshot von der Simulation begefügt. Egal ob ich den BITSLIP-Pin dauerhaft auf '1' setzte oder Pulse sende, der Ausgang des ISERDES bleibt unverändert. Da ich 10Bit DDR benötige habe ich bei beiden ISERDES Module (Master und Slave) den BITSLIP-Mode aktiviert. Zudem laufen beide ISERDES-Module in Networking Mode. Die beiden SHIT_OUT Ports vom Master habe ich auch mit den SHIFT_IN Ports vom Slave verbunden.
Ich habe etwas aus dem Jahre 2009 gefunden. Der ISERDES muss bei der SIMULATION einmal zurückgesetzt werden. Hierfür den Reset Pin benutzen. Falls man dies nicht macht soll es Probleme mit der BITSLIP-Funktion geben.
Das ist iirc auch beim XADC oder dem FIFO von Xilinx der Fall. Auf Hardware funktioniert das auch ohne Reset, aber in der Simulation muss man den machen. Steht aber auch in der Fehlermeldung drinnen.
:
Bearbeitet durch User
Ich habe noch 1 Fehler in der Simulation den ich mir nicht erkären kann. Der Ausgang Q2 vom Master Deserializer funktioniert bei der Simualtion leider nicht. Ich verwendet dieses Muster als Trainingspattern "0000000001" In der Simulation sieht man das Muster 2 CLKDV Takte anliegt. Dies kann aber nicht sein. Ich habe schon versucht das Bitslip Signal durchgehen auf '1' zu setzen oder mit Pulsen es erzeugt keinen Unterschied.
Das komische dabei ist wenn der Bitslipt Pin den Zustand '0' besitzt, dann ist gerade in der Simulation der Ausgang Q2 gesetzt. Sofern ich aber den Bitslip aktiviere. Bekomme ich nie wieder den Zustand das Q2 '1' ist. Daher ist auch in der Simulation zu sehen das der eine Zustand (dout = 8) doppelt so lang ist wie die Anderen.
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.