Forum: FPGA, VHDL & Co. LVDS receiver in FPGA


von matzunami (Gast)


Lesenswert?

Hallo,
ich habe mal ein paar verständnissfragen zu LVDS.
Ich möchte an einem FPGA (Xilinx Virtex 5) ein LVDS-Signal empfangen.
In den Spezifikationen zu dem FPGA, wird beschrieben, dass bestimmte I/O 
Pins für diesen zweck geeignet sind.
Nun meine Fragen:

1. In den spezifikationen zu LVDS wird beschrieben das der 
"Output-Swing" plus minus 350mV beträgt... wird dies vom FPGA problemlos 
erkannt?

2. Wie kann ich aus dem differenziellen Signal mein "normales" digitales 
Signal zurückgewinnen? Muss ich dafür etwas bestimmtes in meinem 
VHDL-code implementieren (gibts da was von Xilinx... wenn ja wo)? oder 
muss ich mir da selber was in VHDL einfalles lassen.

schon mal Danke

von matzunami (Gast)


Lesenswert?

ok... ich hab jetzt von Xilinx VHDL code gefunden, der mir das differenz 
Signal wider wandelt (Stichwort IBUFDS). Bleibt noch die Frage ob das 
LVDS Signal einfach an die dafür vorgesehenen Pins am FPGA angeschlossen 
werden kann?

von Matthias (Gast)


Lesenswert?

An sich gehört zwischen den p- und den n-Pin bei LVDS noch ein 100 Ohm 
Widerstand, sonst funktionierts nicht. Es gibt aber auch die 
Möglichkeit, das mit DCI zu machen, da wird dieser Widerstand im FPGA 
dazwischen geschalten. Welche Variante man nimmt hängt hauptsächlich 
davon ab, wieviel Platz man für Widerstände auf dem Board hat. Lies dir 
mal DCI Kapitel im V5 User Guide durch, da gibts auch gute Diagramme, 
die das verständlich machen.

von matzunami (Gast)


Lesenswert?

mit dem Widerstand mach ich mir keine Sorgen, weil ich für diesen Zweck 
das Eval Board ML507 von Xilinx benutzen werde und die schon drauf sind.

Was ich noch nicht verstehe, ob dieser Output Swing von 350mV bei LVDS 
standart ist und ich damit dierekt an den FPGA gehen kann, oder ob es da 
noch etwas zu beachten gibt. Sind das am FPGA spezielle Pins, die diese 
geringe Spannung erkennen?

von Christian R. (supachris)


Lesenswert?

Wenn du die zum LVDS-Standard passende IO-Spannung anlegst und den 
richtigen IO-Standard einstellst, passt das zusammen. Am besten noch per 
DCI die Impedanz einstellen, sonst musst du wie geschrieben an jedes 
Paar den Widerstand dran machen. Wenn du die beiden Widerstände für den 
DCI korrekt bestückst, macht das der Virtex intern.

von Matthias (Gast)


Lesenswert?

Das ganze geht dann an einen Komparator, der aus diesem Voltage Swing 
ein Signal mit dem Spannungspegel der internen Logik macht. Wenn man den 
richtigen I/O-Standard für die Synthese vorgibt (zb LVDS 2.5 V) dann 
wird dieser Komparator an die beiden Pins geschalten und es ist alles 
geregelt. am Ausgangssignal der IBUFDS Komponente kriegt man ein Signal, 
das man einfach im VHDL Code weiter verarbeiten kann.

von matzunami (Gast)


Lesenswert?

bei dem VHDL code, den ich gefunden hab steht unter anderem:
IOSTANDARD => "LVDS_25"

ist damit die Versorgungsspannung des FPGA's gemeint, oder doch der 
Spannungspegel der LVDS Schnittstelle, wobei die denke ich wesentlich 
kleiner ist???

von Matthias (Gast)


Lesenswert?

Nein, das ist schon der I/O Standard, den du brauchst (ich hab mich da 
oben falsch erinnert, LVDS gibts eh nur mit 2.5 V). Der I/O Standard 
kann auch im UCF File gesetzt werden, so mach ich das immer. Die von dir 
genannte Methode sollte aber auch funktionieren.

Bei der Synthese wird auch eine *.pad Datei erzeugt, die auflistet, 
welche Ausgänge an welchen Pin mit welchem I/O Standard gehängt wurden, 
es kann nicht schaden (zumindest nicht nach der ersten Synthese), dort 
zu kontrollieren, dass wirklich LVDS für die Pins eingetragen ist.

von matzunami (Gast)


Lesenswert?

ok schonmal vielen dank, aber wenn du sagst LVDS gibt es eh nur mit 
2,5V, warum steht dann in denn spezifikationen was von +/- 350mV? Kann 
ich die 2,5V an der LVDS Schnittstelle messen? Aus dem Datenblatt, von 
dem Gerät, von dem ich das LVDS Signal bekomme steht eben nix drin über 
die Spannungspegel? Was mich vermuten lies das es da eienen Standart 
gibt und ich eben die besagten +/-350mv gefunden hab.

von Matthias (Gast)


Lesenswert?

Puh, jetzt fällt mir auch schon langsam nix mehr ein. Was ich sicher 
weiß: Die I/O Bank auf der die LVDS Traensceiver am FPGA hängen braucht 
2.5V I/O Spannung. Die 250 mV auf die du dich beziehst sind die 
Spannung, die über den Widerstand abfallen. An sich ist LVDS ein 
Stromtreiber, das Ding ist also so gebaut, dass es ca 3.5 mA durch die 
Leitung durchtreibt und damit diesen besagten 350 mV Spannungsabfall 
über den Widerstand macht. Die I/O Spannung wird für die Komponenten im 
FPGA gebraucht, auf die bezieht sich eben die Spannung von 2.5 V.

Nach meinem Verständnis kann man das ganze auch, sofern ein geeigneter 
Komparator benutzt wird, an eine 3,3 V Schaltung dranhängen, wichtig ist 
dass der Komparator am Eingang hochohmig ist und den Unterschied von ca 
350 mV zu einem Spannungspegel wandeln kann, der von der 
dahinterliegenden Schaltung sicher abgegriffen und weiter verarbeitet 
werden kann.

von Matthias (Gast)


Lesenswert?

Sorry, Korrektur, die ersten "250 mV" sollten natürlich 350 mV sein.

von matzunami (Gast)


Lesenswert?

ok vielen dank ich glaub/hoffe jetzt ist alles klar... danke

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.