Warum kennt Xilinx Translate for Virtex-6 IOSTANDARD LVDS nicht?

Ich verwende mehrere Xilinx FPGAs und Boards von Spartan3E bis KC705/VC707 und bin mit UCF-Dateien sehr vertraut, aber es gibt eine Frage, die mich stört ...

Warum kennt translate for Virtex-6 kein IOSTANDARD LVDS, aber translate for Series7 schon?

oder

Sollte ich IOSTANDARD LVDS_15 auf KC705 für Sysclk anstelle von LVDS verwenden?

Hier ist das korrekte UCF-Snippet für die SystemClock eines KC705-Boards:

##  Bank:           33 - VCC=1.5V (VCC1V5_FPGA)
##  Location:       U6 (SIT9102)
##      Vendor:     SiTime
##      Device:     SIT9102AI-243N25E200.0000 - 1 to 220 MHz High Performance Oscillator
##      Frequency:  200 MHz, 50ppm
NET "KC705_SystemClock_200MHz_n"    LOC = "AD11";               ## {IN} U6.5
NET "KC705_SystemClock_200MHz_p"    LOC = "AD12";               ## {IN} U6.4
NET "KC705_SystemClock_200MHz_?"    IOSTANDARD = LVDS;
NET "KC705_SystemClock_200MHz_p"    TNM_NET = "NET_SystemClock_200MHz";

Und hier ist ein akzeptiertes UCF-Snippet für die SystemClock eines ML605-Boards:

##  Bank:           34 - VCCO=2.5V (VCC2V5)
##  Location:       U11 (SIT9102)
##      Vendor:     SiTime
##      Device:     SiT9102 - 1 to 220 MHz High Performance Oscillator
##      Frequency:  200 MHz, 50ppm
NET "ML605_SystemClock_200MHz_n"    LOC = "H9";                 ## {IN} U11.5
NET "ML605_SystemClock_200MHz_p"    LOC = "J9";                 ## {IN} U11.4
NET "ML605_SystemClock_200MHz_?"    IOSTANDARD = LVDS_25;
NET "ML605_SystemClock_200MHz_p"    TNM_NET = "NET_SystemClock_200MHz";

Normalerweise ist ein I/O-Standard mit einer Spannung verknüpft, damit STA die richtigen Timings berechnen kann. Außerdem habe ich gesehen, dass viele differentielle Takte in FPGAs mit AC-Kopplung eingespeist wurden (zB von ICS844021I für SGMII).

Aber wenn wir uns beide Schemata ansehen, können wir keine AC-Kopplung für sysclk finden:
- ML605-Schema
- KC705-Schema

Normalerweise würde ich sagen, dass LVDS verwendet werden sollte, wenn AC-gekoppelt und LVDS_xx verwendet werden sollte, wenn DC-gekoppelt wird. Aber das UCF des KC705 sagt das Gegenteil.

Kann jemand erklären, wann es LVDSverwendet werden sollte?

PS
1. Das KC705-Snippet ist von KC705 Master-XDC inkl. IO-Standards
2. Der ML605 Master-UCF wird ohne IO-Standards ausgeliefert

Antworten (1)

Xilinx widersprach dem LVDS-Iostandard, ich werde mich nicht mit früheren Generationen als Spartan-6 befassen!

Erstens ist LVDS strombasiert (3,5 mA an 100 Ohm, etwa 350 mV Hub) und unabhängig von der Bankspannung elektrisch gleich.

Spartan-6 unterstützt LVDS-Ausgänge von einer Bank mit einem VCCO von 3,3 (LVDS_33) oder 2,5 (LVDS_25). Da Virtex-6 keine 3.3-Banken unterstützt, haben sie nur LVDS_25 und behalten die gleiche Nomenklatur wie die Spartan-6 bei, um Designer-Selbstmord zu verhindern.

Spartan-6 und Virtex-6 verwenden VCCAUX (3.3 oder 2.5 für Spartan, 2.5 nur für Virtex) für den LVDS-Eingang und sollten unabhängig vom VCCO auf allen Bänken verfügbar sein (habe es aber nie ausprobiert, ich habe es immer auf einen passenden VCCO gelegt). Bank).

Für die LVDS-Ausgabe der Serie 7 muss VCCO entweder 2,5 auf HR-Bänken (LVDS_25) oder 1,8 auf HP-Bänken (LVDS) sein. Warum haben sie ihm den Namen LVDS statt LVDS_18 gegeben? Nur Xilinx weiß es. Auch hier sind sie elektrisch gleich, aber natürlich muss der Treiber anders sein, wenn sie nicht den gleichen VCCO haben.

Der LVDS-Eingang der Serie 7 erfordert nur dann einen VCCO-Wert von 1,8/2,5, wenn die interne Terminierung verwendet wird. Andere VCCOs können für die Eingabe verwendet werden (mit einigen Einschränkungen), solange eine externe Terminierung vorhanden ist. Ich vermute, dass dies bei KC705 der Fall ist. Ich vermute auch, dass sie aus Gründen der Konsistenz (seufz) LVDS_25-Eingaben auf HR-Banken und LVDS auf HP erwarten.

Seit Serie 6 haben wir also LVDS mit einem VCCO von 1,8, LVDS_25 für 2,5 und LVDS_33 für 3,3. Auch hier sind sie elektrisch gleich, nur der Treiber unterscheidet sich und der Mechanismus für die interne Terminierung.