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
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?
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.
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?
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.
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.
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???
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.
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.
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.