Hallo erstmal.
Ich wollte die Wandlungen des AD-Wandlers AD7266
(http://www.analog.com/en/prod/0,,AD7266,00.html) mit einem FPGA
einlesen. Leider habe ich dabei ein kleines Problem:
Um die 2MS/s Abtastrate zu erreichen, benötigt der ADC einen Takt von
32MHz (31,25ns). Laut Datenblatt ist aber die Zeit, die der ADC benötigt
um gültige Datem am Ausgang zu garantieren max. 27ns@5Vdd (gerechnet ab
der fallenden Taktflanke des SCLK). Das heißt aber nicht, dass nicht
früher gültige Daten anliegen könnten.
Ca. 5ns Stabilisierungszeit für das Datensignal ist mir ein wenig zu
kurz. Das Datum des vorigen Taktes an der steigenden Taktflanke
einzulesen ist auch nicht möglich, denn es könnte ja sein, dass es das
gültig Datum des aktuellen Taktes ist (wenn es keine 27ns gedauert hat,
das Datum anzulegen).
Kann mir jemand einen Tip geben, wie ich sicherstellen kann, dass die
Daten zum richtigen Zeitpunkt eingelesen werden?
Danke.
@ Gast
>Ich wollte die Wandlungen des AD-Wandlers AD7266>Um die 2MS/s Abtastrate zu erreichen, benötigt der ADC einen Takt von>32MHz (31,25ns). Laut Datenblatt ist aber die Zeit, die der ADC benötigt>um gültige Datem am Ausgang zu garantieren max. 27ns@5Vdd (gerechnet ab>der fallenden Taktflanke des SCLK). Das heißt aber nicht, dass nicht>früher gültige Daten anliegen könnten.
Könnten, aber nicht garantiert.
>Ca. 5ns Stabilisierungszeit für das Datensignal ist mir ein wenig zu
Der Fachmann nennt das Setup-Zeit. Für ein FPGA von heute sind 5ns
Setup-Zeit mehr als ausreichend.Allerdings sind die meisten FPGAs nicht
5V tolerant. Da brauchst du ggf. ein Levelshifter. Dann wirds eng.
Vielleicht musst du ein FlipFlop der LVC Baureihe nehmen.
>kurz. Das Datum des vorigen Taktes an der steigenden Taktflanke>einzulesen ist auch nicht möglich,
Doch, genauso funktioniert synchrone Schaltungstechnik. Z.B. der PCI-Bus
in jedem PC. Und der läuft auch mit 33 MHz. Jeder Zähler, jede State
Machine im FPGA läuft so.
> denn es könnte ja sein, dass es das>gültig Datum des aktuellen Taktes ist (wenn es keine 27ns gedauert hat,>das Datum anzulegen).
Nein, definitiv nicht. Es gibt auch eine minimale Zeit, die die Daten
brauchen um aus dem AD-Wandler ausgegeben zu werden (Minimum Hold Time),
und die ist hier 5ns@5V. Deine Daten liegen als min. 5ns vor und 5ns
nach der Flanke stabil an. Das reicht dicke. Der "Trick" ist, dass du im
FPGA die FLipFolp der IO-Zellen benutzen musst, dann sind diese Zeiten
kein Problem.
>Kann mir jemand einen Tip geben, wie ich sicherstellen kann, dass die>Daten zum richtigen Zeitpunkt eingelesen werden?
Siehe oben.
MFg
Falk
@Falk
Erstmal vielen Dank für deine Antworten.
> Der Fachmann nennt das Setup-Zeit.
Dann habe ich mich wohl durch die Unterlassung der Nutzung des
Fachwortes aufs Fürchterlichste blamiert ;o)
> Allerdings sind die meisten FPGAs nicht> 5V tolerant.
Ich weiß.
> Da brauchst du ggf. ein Levelshifter.
Glücklicherweise nicht, denn der AD-Wandler hat noch eine extra
Versorgung für das serielle Interface.
> Doch, genauso funktioniert synchrone Schaltungstechnik. Z.B. der PCI-Bus> in jedem PC. Und der läuft auch mit 33 MHz. Jeder Zähler, jede State> Machine im FPGA läuft so.
Das ist mir wohl bewusst! Allerdings erschienen mir 5ns als zu kurz, als
dass das Signal bereits sauber anliegen könnte. Unter diesem
Gesichtspunkt, und unter der Annahme, dass das Signal praktisch an jedem
Zeitpunkt der Zykluszeit angelegt werden konnte, empfand ich es als
schwierig, den richtigen Abtastpunkt zu finden. Wenn allerdings ~ 4-5ns
Setup-Zeit ausreichen, ist die Sache deutlich entschärft.
> Deine Daten liegen als min. 5ns vor und 5ns> nach der Flanke stabil an. Das reicht dicke. Der "Trick" ist, dass du im> FPGA die FLipFolp der IO-Zellen benutzen musst, dann sind diese Zeiten> kein Problem.
Ah, ok. Dann werd ich mich mal in der Richtung schlau machen.
Basiert die Aussage, dass 5ns setup- und 5ns hold-zeit dicke reichen auf
Erfahrung? Im Datenblatt (CycloneII) habe (noch) nichts genaueres zu
diesem Punkt gefunden.
Danke.
@ Gast
>> Da brauchst du ggf. ein Levelshifter.>Glücklicherweise nicht, denn der AD-Wandler hat noch eine extra>Versorgung für das serielle Interface.
Jaja, aber bei 3,3V ist es langsamer als bei 5V Betrieb!
Möglicherweise kannst du einen "Ultra-Low-Cost" Levelshifter benutzten,
einen 100 OHm Vorwiderstand.
>> Doch, genauso funktioniert synchrone Schaltungstechnik. Z.B. der PCI-Bus>> in jedem PC. Und der läuft auch mit 33 MHz. Jeder Zähler, jede State>> Machine im FPGA läuft so.>Das ist mir wohl bewusst! Allerdings erschienen mir 5ns als zu kurz, als>dass das Signal bereits sauber anliegen könnte. Unter diesem
Doch, das Datenblatt sagt es ja. Maximale "Data access time" ist
27ns@5V, d.h. nach 27ns liegen gültige Daten GARANTIERT an.
>Ah, ok. Dann werd ich mich mal in der Richtung schlau machen.>Basiert die Aussage, dass 5ns setup- und 5ns hold-zeit dicke reichen auf>Erfahrung? Im Datenblatt (CycloneII) habe (noch) nichts genaueres zu>diesem Punkt gefunden.
Sowohl als auch.
http://www.altera.com/literature/hb/cyc2/cyc2_cii51005.pdf
Seite 19, Tabelle 5-17. TSU (Setup Time) und TH (Hold Time). Allerdings
ist das nicht alles. Man muss ncoh die Verzögerung des Taktes
berücksichtigen. Das kann ich auf die Schnelle aber nicht ausrechnen.
Die Altera-Datenblätter sind ein wenig, ähhh, gewöhnungsbedürftig.
Zum Vergleich. Beim Spartan3 von Xilinx, welcher mit Cyclone-II
vergleichbar ist, liegen die Setup-Zeiten bei 2-3ns (mit DLL) bzw.
2,5-6ns (ohne DLL, wobei die grossen Zeiten nur für die SEHR grossen
Typen mit 1M++ Gates gelten). Hold-Zeiten sind Null oder sogar negativ.
Fakt ist, dass es zwar machbar, aber nicht ganz trivial ist. Die
Taktverteilung will solide und RICHTIG gemacht sein, sonst läuft das
Ganze nicht sonderlich zuverlässig.
MFG
Falk
@Falk
Danke für die geduldige Beantwortung meiner Fragen. :o)
Allerdings hätte ich da noch welche:
> Jaja, aber bei 3,3V ist es langsamer als bei 5V Betrieb!
Im Datenblatt steht max. Datenzugriffszeit: 27ns max @ Vdd = 5V .
Die Spannung des Seriellen Interfaces wird jedoch nicht durch Vdd
sondern durch Vdrive festgelegt. Demnach hinge die Geschwindigkeit doch
von der Versorgungsspannung des Digitalteils ab, und nicht von der des
Interfaces, oder?
> Doch, das Datenblatt sagt es ja. Maximale "Data access time" ist> 27ns@5V, d.h. nach 27ns liegen gültige Daten GARANTIERT an.
Dass zu diesem Zeitpunkt gültige Daten anliegen, davon war ich
ausgegangen. Meine Gedanken gingen in die Richtung, ob sich bis dahin
die Pegel beruhigt haben (Überschwinger etc.).
Gruß
@ Gast
>> Jaja, aber bei 3,3V ist es langsamer als bei 5V Betrieb!>Im Datenblatt steht max. Datenzugriffszeit: 27ns max @ Vdd = 5V .>Die Spannung des Seriellen Interfaces wird jedoch nicht durch Vdd>sondern durch Vdrive festgelegt. Demnach hinge die Geschwindigkeit doch>von der Versorgungsspannung des Digitalteils ab, und nicht von der des>Interfaces, oder?
Ja, stimmt. Ist zwar etwas merkwürdig, dass die hier mit 3 Spannungen
hantieren, aber laut Datenblat ist es wohl so. Glück gehabt, damit
kannst direkt mit einem 3,3V FPGA bei maximaler Geschwindigkeit
kommunizieren.
>ausgegangen. Meine Gedanken gingen in die Richtung, ob sich bis dahin>die Pegel beruhigt haben (Überschwinger etc.).
Das ist bei richtiger Schaltung/Layout so. Eine Serienterminierung der
Datenleitung kann nicht schaden.
MfG
Falk
Es gibt Leute, die klemmen 80..140MSample Wandler an ein FPGA an. Der
Ausleseclock ist dort dann 80..140MHz, mit einem Parallelinterface. Das
geht auch sehr gut.