Inconvenientes de usar comunicación de un solo extremo sobre pares diferenciales

Recientemente compré una placa ZYBO FPGA solo para descubrir que hay exactamente seis líneas GPIO regulares de un solo extremo conectadas a la FPGA. En contraste con eso, 18 líneas diferenciales están disponibles. El manual de referencia de la placa dice que la comunicación de un solo extremo a través de las líneas diferenciales funcionará, pero tiene una "diafonía significativa". En este caso, se sugiere poner a tierra una línea del par diferencial, pero esto obviamente anulará todo el propósito de tener más líneas de E/S de un solo extremo.

Entonces, ¿qué es exactamente la diafonía "significativa"? ¿Qué tan rápido podría comunicarme (un solo extremo)? ¿Funcionaría bien I2C de alta velocidad? 2mbit SPI? ¿Qué pasa con una transferencia de datos en paralelo de 25 MHz? ¿Se puede hacer algo más para evitar o corregir la diafonía?

Respuestas (3)

Aunque las líneas se enrutan como pares diferenciales, no es necesariamente un factor decisivo para su tipo de aplicación. En realidad, es probable que la cantidad de diafonía sea bastante pequeña, ya que los pares diferenciales a menudo se enrutan más cerca del plano de tierra que entre sí. No es como si fueran un cable trenzado sin blindaje, donde las señales se acoplan mucho mejor entre sí. Y es probable que las huellas sean relativamente cortas, imagino (si está contemplando la transmisión en paralelo).

Sugeriría que felizmente podría configurar un bus paralelo de 25 MHz, con un reloj terminado en serie para señalar el dispositivo en el otro extremo para bloquear los datos. Conduzca los datos en un borde, asegúrelos en el borde opuesto, tendrá 20 ns de tiempo para que se estabilicen las diafonías y los reflejos). Puede conducir el lado negativo del controlador del reloj a '0' y colocarlo lejos del bus de datos para mantener esa señal lo más limpia posible. No suena tan diferente de cómo solíamos enrutar buses de datos SRAM asíncronos (todos los cables corren muy juntos con una línea de habilitación de escritura activada por el borde) y eso solía funcionar bien :)

Los cables de los pares diferenciales se tenderán muy cerca uno del otro, lo que permitirá que las señales de un cable se acoplen al cable adyacente. Es probable que la mayor parte de la diafonía sea capacitiva. Piense en los dos cables como placas en un capacitor. Un cambio repentino en un cable se 'filtrará' en el otro. Este tipo de acoplamiento depende de la frecuencia. DC no se acoplará en absoluto. Los bordes lentos pueden acoplarse un poco. Los bordes muy rápidos pueden acoplarse de manera muy significativa. Si coloca una onda cuadrada con flancos muy rápidos en un cable, el cable adyacente obtendrá flancos agudos positivos y negativos, seguidos de pendientes que decaen exponencialmente. Los picos positivos corresponden al borde ascendente de la onda cuadrada, los picos negativos corresponden al borde descendente.

Si se ve obligado a utilizar E/S diferenciales como E/S de terminación única, existen algunas consideraciones. Si la longitud total del trazo es corta, los efectos pueden ser tan pequeños que pueden ignorarse. Si el seguimiento es largo, es posible que deba hacer algo para mitigar la diafonía. Una solución fácil es usar solo un cable de cada par. El otro cable se puede conectar a tierra o los dos se pueden conectar al mismo nivel lógico. Sin embargo, esto reduce el número de E/S disponibles en un factor de 2. Otra posibilidad es disminuir la velocidad de giro de los pines de E/S de salida. Los FPGA de Xilinx tienen varias selecciones para la fuerza de la unidad y la velocidad de giro. Gire la velocidad de respuesta a la configuración más baja, quietio. Pruebe también a reducir la potencia de la unidad. También puede intentar encender la impedancia de la fuente de 50 ohmios, ya que esto limitará la cantidad de corriente que puede fluir desde el pin.

Es difícil decir qué tan rápido podría correr sin mucha más información sobre lo que está tratando de hacer. Desafortunadamente, no estoy lo suficientemente familiarizado con el tablero para poder darle una estimación. Sin embargo, parece que los rastros podrían ser bastante cortos.

Para tener una idea de cuánta diafonía puede obtener en un par, configure el FPGA para mantener uno en un nivel constante (GND o VDD) y cambie el otro a unos pocos MHz. Establezca la velocidad de giro en rápida en el pin IO. Luego conecte un endoscopio al pin de 'víctima' y mida la altura de los picos. Si es mucho menor que VDD, es posible que no cause ningún problema.

Si tiene un solo cable y un retorno (tierra) y datos transmitidos, en cualquier punto a lo largo del cable, el campo eléctrico promedio será del cable de datos y tierra; en términos simples, si los datos fueron 5V pp, el campo eléctrico sería la mitad de este valor. Esto no está justo en el cable sino a una corta distancia del par.

En un par de cables impulsados ​​diferencialmente, las señales son antifase, lo que significa que si uno está a 5 V, el otro estará a -5 V: el campo eléctrico neto es cero en toda la longitud del cable, excepto cuando está cerca de un cable u otro.

Es lo mismo con los niveles lógicos antifase normales: puede imaginar que 2,5 V es el punto medio: un cable está a 2,5 V por encima del punto medio mientras que el otro está a 2,5 V por debajo del punto medio.

Entonces, si un cable accionado diferencialmente no genera un campo eléctrico significativo, entonces no hay diafonía. Esa es la versión simple. También hay que considerar el campo magnético pero, debido a que la corriente viaja por un cable y en sentido inverso por el otro Y los dos cables tienen geometrías iguales, el campo magnético neto a una distancia más corta es cero teóricamente.

Entonces, ¿qué es exactamente la diafonía "significativa"? ¿Qué tan rápido podría comunicarme? ¿Funcionaría bien I2C de alta velocidad? 2mbit SPI? ¿Qué pasa con una transferencia de datos en paralelo de 25 MHz? ¿Se puede hacer algo más para evitar o corregir la diafonía?

  1. Espero haber respondido eso, pero se vuelve más complejo a medida que aumenta la velocidad de los datos porque necesita terminaciones equilibradas.
  2. Sobre par trenzado apantallado, he diseñado circuitos que funcionan a más de 35 metros a aproximadamente 400 Mbps. Hay muchos más rápidos que eso, pero pensé en compartir mi trabajo personal como ejemplo.
  3. I2C requiere pull-ups y no estoy seguro de que esto funcione debido a problemas de capacitancia del cable; supongo que no llegará tan lejos. SPI está bien: he hecho 2 Mbps en 15 m usando técnicas de cable balanceado.
  4. Los datos paralelos de 25 Mbps se convierten en un problema cuando los tiempos de retraso entre un par y el siguiente hacen que los datos se lean mal en el receptor. Tiendo a usar conjuntos de chips como el MAX9205: es un serializador de datos de 10 bits de ancho bueno para 600 Mbps: -

ingrese la descripción de la imagen aquí

Puede obtener el mismo chip de TI pero tiene un número diferente y son intercambiables.

Gracias hasta ahora, hizo las cosas mucho más claras. Voy a mirar en el MAX también. Sin embargo, lo que quería preguntar era en qué medida se vería afectada la comunicación de un solo extremo cuando se usan líneas (o cables, en general) para la señalización diferencial. Por el momento, mi preocupación es puramente sobre los carriles en la placa desde el FPGA hasta el conector (Pmod). Los cables tampoco serán tan largos; Básicamente se trata de un experimento del tamaño de una placa de prueba con una cámara OV7670 que registra datos de 8 bits a 25 MHz; me estoy quedando sin GPIO.
Que tan larga es una pieza de cordon. He enviado 40 Mbps de un solo extremo por muy buen coaxial a una distancia de 350 metros. No hay nada intrínsecamente malo en la señalización no diferencial, pero, en presencia de interferencia, es muchas veces más susceptible, pero "muchas veces" podría significar dos o diez veces: depende del trabajo, del cable, de la velocidad y del protocolo.
Hay cosas que puede hacer para minimizar el ruido y los problemas de diafonía. Una forma en que solía hacerlo era usar un viejo cable IDE de 80 hilos para conectar mis señales a mi placa FPGA. Lleva algo de tiempo hacer los conectores especiales, pero luego tiene un cable con GND entre cada señal, lo que es bastante útil si está ejecutando muchas señales a una velocidad relativamente alta. Para el PMOD, creo que 25MHz debería estar bien, el problema es la cantidad de cables y cómo los conecta al FPGA.