Opciones para transmisión diferencial de señal digital

1

Tengo una configuración en la que varias (3 o 4) placas de microcontroladores (localmente, están a una distancia de 3 a 5 metros una de la otra) deben estar "perfectamente" sincronizadas, por lo que estamos transmitiendo un "reloj maestro" señal; un reloj muy lento (en el orden de 1 Hz).

Ya que estamos bastante seguros de que tendremos que lidiar con el ruido, los bucles de tierra y los desagradables relacionados, me gustaría enviar esa señal de manera diferente (posiblemente solo dos cables, y luego todos los terrenos de las placas van a un punto común de la "tierra").

Mi primer pensamiento fue: designar dos pines GPIO del procesador (tenemos muchos pines disponibles) e impulsarlos desde un procedimiento de interrupción por temporizador para que siempre se complementen entre sí. De esa manera, obtenemos una señal diferencial que oscila de -3.3V a + 3.3V. Para el receptor, estoy pensando en un circuito diferencial analógico --- un amplificador operacional riel a riel alimentado con 3.3V y GND (fuente única) conducido a saturación para que produzca una señal digital. señal.

Luego, existe la opción de usar un controlador / receptor de línea como el DS90LV019, o el combo SN65LVDS1 + SN65LVDS2; Entonces, me doy cuenta de que todos estos producen un voltaje diferencial del orden de 300 a 500 mV. Soy un poco paranoico, y un nivel tan bajo, incluso siendo diferencial, me asusta.

Pensé en un híbrido: podía transmitir con dos salidas directas de pines GPIO que siempre se complementan entre sí, y en el extremo receptor utilizo un receptor SN65LVDS2 --- pero esto (y un par de otros receptores I "viendo") especifique como valores máximos absolutos una tensión de entrada diferencial de +/- 1V (es decir, que no exceda de +/- 1V).

¿Estoy complicando demasiado las cosas? Mi conjetura es que debo confiar en el combo controlador / receptor; pero tengo la mala sensación de que voy a arrepentirme de tomar esa ruta (además, parece muy fácil dedicar dos pines y mantenerlos como complemento uno del otro).

¿Alguna experiencia con estos? ¿Algún consejo o consejo sobre qué crees que debería funcionar mejor?

¡Gracias!

    
pregunta Cal-linux

2 respuestas

1

Lo primero que debes hacer es especificar el error de tiempo aceptable. Las soluciones para sincronizar dentro de 100ns o 10ps son muy diferentes. Si solo necesita activar una interrupción dentro de unos pocos ciclos en cada procesador, entonces la señalización diferencial no es necesaria, un cable coaxial hará el truco.

La solución de los dos GPIO es arriesgada. Si no puede garantizar que iniciarán sus transiciones al mismo tiempo, tendrán la misma salida y la diferencia será 0. Si la diferencia es 0, la salida del receptor de línea es indeterminada y podría deberse a una rápida oscilación al ruido.

El controlador / receptor de línea le brindará un rendimiento de sincronización mucho mejor, si es necesario. No tiene que ser paranoico, las señales diferenciales pueden ser muy robustas. Por ejemplo, LVDS se usa ampliamente en la industria automotriz. Sin embargo, las señales diferenciales solo pueden tolerar una cierta cantidad de cambio de voltaje, por lo que si su tierra es muy ruidosa, podría tener problemas.

Para una sincronización de hasta unos pocos nanosegundos, en una distancia corta, y con una frecuencia inferior a 1 MHz, una señal LVCMOS a través de un cable coaxial puede dar buenos resultados:

simular este circuito : esquema creado usando CircuitLab Puede agregar otras protecciones según sea necesario.

También debe mirar dónde ingresará esa señal al microprocesador si necesita una sincronización mejor de lo que le pueden dar las interrupciones.

Si está esperando bucles de tierra, quizás trabaje en la raíz del problema y trate de minimizar el área entre sus conexiones a tierra.

    
respondido por el pserra
1

Un controlador LVDS no es muy diferente de un par de GPIOs; está diseñado para conducir la corriente LVDS especificada a la impedancia LVDS especificada.

La principal diferencia está en el receptor: una entrada CMOS simple tiene una impedancia de entrada casi infinita, mientras que LVDS usa una resistencia de 100 Ω. La baja impedancia aumenta la resistencia al ruido (necesitaría un campo electromagnético mucho más fuerte para inducir un error de voltaje lo suficientemente alto como para afectar la señal).

Cuando use GPIOs, simplemente coloque una resistencia entre los pines del receptor (para una corriente de aproximadamente 3.5 mA), y su señal será tan robusta como LVDS.

Debes reemplazar el opamp con un comparador; este último está optimizado para una rápida conmutación y saturación de su salida. (Nota: un receptor LVDS es un comparador.)

    
respondido por el CL.

Lea otras preguntas en las etiquetas