¿Por qué Xilinx Translate para Virtex-6 no conoce IOSTANDARD LVDS?

Estoy usando varios FPGA Xilinx y placas desde Spartan3E hasta KC705/VC707 y estoy muy familiarizado con los archivos UCF, pero hay una pregunta que me molesta...

¿Por qué la traducción para Virtex-6 no conoce IOSTANDARD LVDS, pero la traducción para Series7 sí?

o

¿Debo usar IOSTANDARD LVDS_15 en KC705 para sysclk en lugar de LVDS?

Aquí está el fragmento de UCF correcto para el SystemClock de una placa KC705:

##  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";

Y aquí hay un fragmento de UCF aceptado para SystemClock de una placa ML605:

##  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";

Normalmente, un estándar de E/S está asociado con un voltaje para que STA pueda calcular los tiempos correctos. Además, vi muchos relojes diferenciales alimentados en FPGA con acoplamiento de CA (por ejemplo, de ICS844021I para SGMII).

Pero cuando observamos ambos esquemas, no podemos encontrar un acoplamiento de CA para sysclk:
- Esquema ML605
- Esquema KC705

Normalmente, diría que se debe usar LVDS si está acoplado a CA y LVDS_xx si está acoplado a CC. Pero la UCF del KC705 dice lo contrario.

¿ Alguien puede explicar cuándo LVDSse debe usar?

PS
1. El fragmento KC705 es de KC705 master-XDC incl. Estándares IO
2. El ML605 master-UCF se envía sin estándares IO

Respuestas (1)

Xilinx ha sido inconsistente con el estándar io de LVDS, ¡no profundizaré en generaciones anteriores a spartan-6!

En primer lugar, LVDS se basa en la corriente (3,5 mA en 100 ohmios, oscilación de alrededor de 350 mV) y es eléctricamente el mismo sea cual sea el voltaje del banco.

Spartan-6 admite salidas LVDS de un banco con un VCCO de 3,3 (LVDS_33) o 2,5 (LVDS_25). Dado que Virtex-6 no admite bancos 3.3, solo tienen LVDS_25 y mantuvieron la misma nomenclatura que Spartan-6 para evitar el suicidio del diseñador.

Spartan-6 y Virtex-6 usan VCCAUX (3.3 o 2.5 para spartan, 2.5 solo para Virtex) para la entrada LVDS y deberían estar disponibles en todos los bancos sea cual sea su VCCO (sin embargo, nunca lo probé, siempre lo puse en un VCCO coincidente banco).

La salida LVDS de la serie 7 requiere que el VCCO sea 2,5 en los bancos HR (LVDS_25) o 1,8 en los bancos HP (LVDS). ¿Por qué le dieron el nombre LVDS en lugar de LVDS_18? Xilinx solo lo sabe. Nuevamente, son iguales eléctricamente, pero obviamente el controlador tiene que ser diferente si no tienen el mismo VCCO.

La entrada LVDS Serie 7 requiere que VCCO sea 1.8/2.5 solo si se usa la terminación interna. Se puede usar otro VCCO para la entrada (con algunas restricciones) siempre que haya una terminación externa presente. Supongo que este es el caso de KC705. También supongo que por consistencia (suspiro), esperan entradas LVDS_25 en bancos HR y LVDS en HP.

Entonces, desde la serie 6 tenemos LVDS a VCCO de 1.8, LVDS_25 para 2.5 y LVDS_33 para 3.3. Nuevamente, son eléctricamente iguales, solo difieren el controlador y el mecanismo de terminación interna.