Forum: FPGA, VHDL & Co. Spannungspegel bei LVDS Ausgang am FPGA falsch, was tun?


von Christian W. (clupus)


Lesenswert?

Hallo allerseits,

ich habe folgendes Problemchen:
Ich habe einen FPGA (Altera Cyclone III EP3C25F) auf einem Starterboard 
(Dallas CMCS002). Die IOs werden fest mit 3,3V versorgt. An den FPGA 
möchte ich nun via LVDS einen ADC (ADS5292) anschließen.

Der ADC erwartet einen Eingangsspannungshub von 350 mV. Leider gibt der 
FPGA aber einen wesentlich größeren Spannungshub aus. Konkret sollte die 
Spannung 1.1 V +/- 0.35V sein. Gemessen hab ich ca. 1.1 V +/- 1.2V. Dass 
der Offset passt liegt wohl an der AC Kopplung mittels Kondensatoren.

Ich habe in Quartus II zunächst alle Pins auf 3,3V bzw auf LVDS gestellt 
(je nach Funktion). Quartus hat sich dann geweigert mit der Meldung, 
dass die Spannungsanforderungen in den einzelnen IO-Bänken nicht 
konsistent wären. Ich hatte am Anfang schon Befürchtungen, dass das 
nicht funktionieren könnte, aber im Netz habe ich mehrere Anhaltspunkte 
gefunden (Links weiß ich leider nicht mehr), dass ich einfach statt 3,3V 
2,5V Ausgangsspannung angeben solle. Die Funktion der nicht-LVDS wäre 
davon nicht eingeschränkt und ich könnte ohne Probleme das Design 
comilieren.

Jetzt fürchte ich, dass ich eben durch die zu hohe Spannung von 3,3 
statt der 2,5 V auch die Spannungshübe am LVDS Signal kaputt mache.

Ist das korrekt? Oder muss ich eine Einstellung in Quanser ändern (Dort 
steht LVDS_E_3R bei IO Standard)?

Welche Möglichkeit(en) habe ich, dass die Spannungen korrekt ausgegeben 
werden?

Vielen Dank schonmal
Christian

von Duke Scarring (Gast)


Lesenswert?

Christian Wolf schrieb:
> Der ADC erwartet einen Eingangsspannungshub von 350 mV. Leider gibt der
> FPGA aber einen wesentlich größeren Spannungshub aus.
Irgendwas ist bei Dir komisch. Bei mir gehen die Signale vom ADC zum 
FPGA und nicht umgekehrt. Der ADC ist Treiber und der FPGA die Senke.

Duke

von Weltbester FPGA Pongo (Gast)


Lesenswert?

Sind gfs die Taktleitungen zum ADC differentiell? Oder Steuerleitungen?

Oder misst du als Eingänge geschaltete Ports durch?

von Christian W. (clupus)


Lesenswert?

Hallo,

also der beschriebene ADC kann seinen Referenztakt (vom FPGA zum ADC) 
als LVDS oder als 1,8V CMOS Signal bekommen.

Damit ich weniger Probleme mit Störungen o.ä. bekomme, habe ich LVDS 
vorgesehen. Die anderen Leitungen (Datenleitungen, ADC zu FPGA) sind 
(noch) nicht das Problem. Die gehe ich erst an, wenn der Takt korrekt 
kommt.

Meine erste Idee war (nur für die hinlaufende Zeitbasis) einen 
Spannungsteiler auf beiden Signalen separat zu schalten, fürchte aber, 
dass das nicht so toll funktionieren wird bei höheren Geschwindigkeiten.

Christian

von tja (Gast)


Lesenswert?

Hallo,

ich bin Xilinx User, jetzt weiß ich nicht, ob auch das alles genau 
gleich zutrifft. Es ist gut möglich, dass LVDS nicht bei 3,3V 
"funktionieren", da die Beschaltung nicht dafür ausgelegt ist. Das hört 
sich für's erste schlimm an, ist es aber nicht unbedingt. Du kannst 
versuchen deine Bank als 2.5V Bank zu definieren, dann sollte es besser 
aussehen.

Was geschieht, wenn bei der Bank 3,3V anliegen, aber der Synthese 2,5V 
gesagt wird?
In einfachster Näherung kann man sagen, dass die Stromquellen den 
falschen Strom liefern und die internen Terminierungswiederstande nicht 
die geforderten 100 Ohm besitzen. Also die LVDS Leitung ist nicht mehr 
auf 100 Ohm Wellenwiderstand optimiert. Das solltest du im Hinterkopf 
haben.

In deinem Fall bin ich mir fast sicher, dass der große Spannungshub 
durch nicht-Verwendung der LVDS Schaltung entsteht sondern einfach der 
CMOS Beschaltung. Somit hast du einen Hub am Pin von 3,3V.


Am Rande würde ich dir sowieso empfehlen die Clock für deinen ADC von 
einer externen PLL zu generieren, da die Jitter-Werte wesentlich besser 
sind. Natürlich ist das alles immer von den Kosten und vom Design 
abhängig.

Um welche Frequenzen sprechen wir?

Gruß

von Christian W. (clupus)


Lesenswert?

Hallo,

wir reden von einigen 10 MHz für den Takt, der zum ADC geht. Zurück 
kommt natürlich was schnelleres.

Ich habe leider das Design schon auf Cu vorliegen. Ein Einbau einer 
externen PLL ist daher nur mit sehr viel AUfwand möglich (Platine neu 
machen).

Ich habe ja genau das gemacht: Der Synthese 2,5V "vorgegaukelt" wärend 
in der Realität 3,3V anliegen.
Trotzdem ist der positive Ausgang als LVDS Ausgang definiert. Ich sehe 
es auch daran, dass der entsprechende komplementäre Ausgang sich korrekt 
(komplementär) verhält, obwohl in der Synthese hier keine explizite 
logig angegeben wurde (eben als negativer Pin des LVDS Signals 
definiert).
Kurz und gut: Ich treibe ein logisches Signal in VHDL und die Synthese 
macht daraus ein positives und ein negatives Signal. Das sagt mir aber, 
dass scheinbar schon eine differentielle Übertragung aktiviert wurde.

Wenn gar nichts anderes geht, werde ich einfach auf CMOS Clock umstellen 
und mit einem Spannungsteiler die anliegende Spannung begrenzen.

Christian

von Christian R. (supachris)


Lesenswert?

PLL oder DCM für einen ADC-Takt ist immer schlecht, denn über den Jitter 
holst du dir jede Menge digitales Rauschen rein. Auch bei enigen 10MHz 
schon. Rechne mal mit dem Tool bei Maxim aus, wieviel Jitter du maximal 
bei deiner maximalen Signalfrequenz und Bitbreite haben darfst, dann 
wirst du sofort jede PLL oder DCM vergessen. Den ADC aus dem FPGA mit 
dem CLK zu versorgen war eine schlechte Idee. Für einen Prototypen naja, 
ok, aber die internen CLK Komponenten haben recht viel Jitter und die 
Ausgänge erst recht, auch wenn man ein ODDR nimmt.

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.