Ich verwende einen Xilinx FPGA (Virtex 5 LX30T Speedgrade -1) und einen TI AD-Wandler mit max 400MSample (ADS5474) Hier das Datenblatt des AD-Wandlers: http://focus.ti.com/lit/ds/symlink/ads5474.pdf Auf Seite 7 wird das Timing des Wandlers beschrieben. Der Wandler erzeugt ein Dataready Signal (DRY). Dies gibt an wann die Daten fertig sind. Zudem gibt es 14 Datenleitungen. Was mich jetzt sehr nachdenklich macht ist das tSKEW auf Seite 7 des Datenblatts. Hier steht das die Verzögerung (Skew) zwischen der DRY-Leitung und den Daten typisch 0ps beträgt. Im äußersten FALL aber +- 500ps beträgt. Da ich gerade beim Routen der Platine bin, überlege ich gerade ob es nicht sinnvoll ist das DRY-Signal um 500ps zu verzögerung. Dadurch möchte ich erreichen das die Daten am FPGA immer füher ankommen als das DRY-Signal, das auf einen globalen Clock Buffer geht. Es handelt sich beim DRY als auch bei den Daten um LDVS-Pegel
Wenn ich den OFFSET IN BEFORE Constraint benutze, wird dann auch ein IDELAY verwendet oder wird das dann über längere Leitungen realisiert?
Hallo! Bin auch gerade an einem Projekt mit TI ADC-ADS62P49... Ich habe von TI einige Informationen, wie die das auf dem Board TSW1200 realisiert haben... Wenn du Interesse hast, könnte man ein paar Ideen austauschen - sende mir dazu einfach deine Email Adresse über die Nachrichtenfunktion... Gruß Simon
Johann schrieb: > Wenn ich den OFFSET IN BEFORE Constraint benutze, wird dann auch ein > IDELAY verwendet oder wird das dann über längere Leitungen realisiert? Da wird gar nichts verwendet, sondern du teilst dem System nur mit, was du aus Datenblättern ausgerechnet hast... Wenn du ein IDELAY willst, mußt du ein IDELAY instatiieren: http://www.xilinx.com/itp/xilinx7/books/data/docs/v4lsc/v4lsc0122_113.html
Die Constraints dienen in erster Linie dazu, dem Router die Grenzwerte der Außenwelt des CPLD/FPGA mitzuteilen. Und der sagt dir nachher, ob die eingehalten werden können oder nicht. Wenn nicht, musst du selbst das Design ändern.
Demnach muss ich ein IDELAY selber einfügen. Und ich dachte schon ich gebe einfach das Constraint an und der Compiler routet mir das ganze so das es eingehalten wird. Demnach muss ich ein Constraint erzeugen und ein IDELAY einfügen. Mit dem Constraint überprüft dann der Compiler ob mit Hilfe des IDELAY die Setup Time eingehalten wird. Auf meinem Board ist das ganze wie folgt geroutet. Die Datenleitung und die Datenready-Leitung sind gleich lang. Die Datenreadyleitung geht auf einen Globalen Clock Eingang beim FPGA. Im Datenblatt des AD-Wandlers (siehe oben) steht das zwischen der Datareadyleitung und den Datenleitungen im typischen Fall ein Skew von 0ps vorhanden ist. Jedoch kann auch ein Skew von +- 500ps vorhanden sein. Dadurch bin ich der Meinung das man diesen Worst Case Fall abfangen muss, indem man die Datareadyleitung um mindestens 500ps verzögert. Also muss ich beim Constraint angeben, das die Datenreadyleitung einen maximalen Takt von 200MHz besitzt. Das IDELAY werde ich dann zwischen dem Globalen Clock Pin und dem BUFG setzen. Dadruch verzöger ich das ganze um 624ps --> 8 Steps a 200MHz. Das IDELAY benötigt laut Datenblatt einen Clock als Referenz. Auf meinem Board ist ein 50MHz Quarzoscillator verbaut, der mit einem Globalen Clock Eingang verbunden ist. Aus dem 50MHz Clock erzeuge ich dann ein 200MHz Clock, den ich dann als Referenzsignal für das IDELAY verwende. Ist das so richtig oder mache ich da einen Denkfehler. Ich hoffe das ich morgen ein kleines Testprogramm schreiben kann und dann darüber berichten kann. Schon mal vielen Dank für die bereits gegebenen Informationen.
Du brauchst außerdem das IDELAYCTL Element, an das geht die 200MHz. Dann kannst du die Delays > 0 bei den IDELAY Elementen einstellen.
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.