¿Qué problemas pueden ocurrir al encadenar 40 registros de turno?

16

Estoy planeando encadenar 40 x 74HC595 registros de desplazamiento. Toda la cadena de 74HC595s será controlado por un microcontrolador 5 V, que generará los SDI, CLOCKy LATCHseñales.

Cada registro de desplazamiento y el microcontrolador tendrán su propia PCB, como se ilustra en el siguiente diagrama:

diagrama

Debido a restricciones mecánicas, la distancia entre cada registro de desplazamiento será de aproximadamente 30 cm (12 pulgadas), por lo que las señales de control viajarán a lo largo de una distancia de aprox. 12 m (40 pies). Además de eso, todo el sistema se montará en un entorno muy ruidoso (cerca de luces fluorescentes, cables de alimentación, etc.)

Mi preocupación es que las señales de control serán muy ruidosas y los registros de desplazamiento pueden generar cosas incorrectas. Estaba pensando en:

  • Usando un buffer IC en cada placa, para amortiguar las señales de control. ¿Cuál recomendarías?
  • Usando cables blindados entre los tableros para las señales
  • Bajando la CLOCKfrecuencia tanto como sea posible. Solo necesito actualizar el contenido de los registros varias veces al día.

¿Son buenas las soluciones anteriores? ¿Qué más puedo hacer para mantener el ruido (potencial) en los cables de señal al mínimo?

m.Alin
fuente
3
Esto suena como un candidato fantástico para un CPLD en lugar de los 40 registros de turnos.
Joel B
2
@JoelB Puede sonar como una buena opción para un CPLD, pero eso significaría tener 320 (= 40 * 8) señales que van desde la placa principal (CPLD) a todo el lugar. Sería muy difícil instalarlo, en mi caso, en ese entorno; y será muy difícil de mantener Además, las señales, aunque más cortas, aún estarán sujetas a ruido.
m.Alin
1
@Joel: Digikey enumera solo unos pocos CPLD con 320 E / S, y todos son BGA. Son más caros que 40 '595 también, y como m.Alin dice que no tiene la ventaja de las señales distribuidas. Desde un punto de vista lógico, este es un trabajo perfecto para un CPLD, desde un punto de vista práctico.
stevenvh
2
@ M.Alin - Tienes toda la razón. Acabo de leer 40 registros de turno y escribí CPLD. Después de leer la pregunta a fondo, tiene sentido cómo lo esté haciendo.
Joel B

Respuestas:

14

Utilice buffers de disparador Schmitt en las entradas de cada placa. Limpiarán las señales para que cualquier ruido no dé pulsos falsos en el reloj, por ejemplo. El 74LVC3G17 es un buffer triple no inversor.

Además, pase las señales almacenadas al siguiente tablero. De lo contrario, todas las entradas serían paralelas y es posible que exceda el despliegue del microcontrolador de conducción (especialmente estoy pensando en la carga capacitiva total). La cadena tipo margarita de las señales de reloj y pestillo generará un retraso de onda en toda la cadena, pero los datos también lo harán, y de todos modos planeas ir a baja velocidad.

stevenvh
fuente
1
@ m.Alin - Sí, una etapa push-pull estaría bien. Pero recomendaría encarecidamente los búferes, no solo por la capacidad de la unidad, sino especialmente por la histéresis del disparador Schmitt , que evitará falsos pulsos de reloj causados ​​por el ruido alrededor del umbral.
stevenvh
2
@Saad: ¿Quieres decir que el búfer dirige la señal al cable? Lo bueno es que proporcionará una baja impedancia que reduce el ruido. Pero si hubiera ruido en el lado del receptor, no puede hacer nada al respecto en el lado emisor. Por lo tanto, es el receptor el que necesita una buena inmunidad al ruido, que proporciona el disparador Schmitt.
stevenvh
1
@Saad: Sí, pero en este caso parece excesivo: los cables tienen solo 30 cm de largo y ya tiene un repetidor / buffer en cada placa.
stevenvh
1
@stevenvh Sí, estaba hablando en general. ¡Tus publicaciones tienen una gran cantidad de información y casi siempre aprendo algo nuevo! En este caso, tengo memorias intermedias en una placa controladora que se conectan a un cable que se conecta a una 'placa secundaria'. No espero mucho ruido, así que podría quedarme con mi arreglo. Solo tengo buffers allí para que mi fuente no termine manejando 8 dispositivos (con capacitancia de entrada de 8pF + capacitancia de rastreo y cable).
Saad
1
@Saad - ¡Gracias por las flores! :-) Vigile la capacidad del cable, especialmente si es más de un metro o más. Regla general: 100 pF / m, eso es mucho más que la capacitancia de entrada.
stevenvh
9

El problema que puede ocurrir es que algunos relojes SR antes de los siguientes relojes SR, por lo que el siguiente SR registrará los datos incorrectos. Una solución (¿estándar?) Para esto es conectar el reloj a partir del último SR.

Consideraría agregar un búfer (schmit-trigger?) En cada placa para las 3 líneas de señal.

(editar) Reducir la frecuencia del reloj no ayudará (a menos que sea demasiado alto para empezar). Los problemas que puede tener ocurren en los bordes del reloj, que tendrá de todos modos, sin importar cuán baja elija la frecuencia de su reloj.

Wouter van Ooijen
fuente
8

El mayor problema al encadenar registros de turnos es garantizar que la relación de tiempo entre el reloj utilizado por cada placa utiliza para recibir datos y el cambio en los datos de la placa anterior es predecible. El hecho de que la salida del 74HC595 cambie en el mismo borde que el reloj es un poco molesto en ese sentido. Sugeriría que la señal del reloj se proteja a medida que pasa por cada placa y que la señal de datos que sale del 74HC595 de una placa se transfiera a un búfer que la retrasará un tiempo un poco más que el búfer del reloj.

Alternativamente, podría usar un registro de desplazamiento como el 74HC4094 que tiene su cambio de salida de datos en el borde del reloj descendente, o podría agregar un flip flop entre la salida del último 74HC595 en el tablero y el siguiente tablero, y tener ese flip flop bloquee su salida en el borde descendente del reloj que acciona los 74HC595 (tal vez pase el reloj a través de dos inversores para protegerlo y alimentar la señal del reloj invertido al flip flop).

Si el número de salidas 74HC595 que usará es uno (o más) menor que el número suministrado por sus chips (por ejemplo, en una placa con dos 74HC595, en realidad solo necesita 15 salidas), puede alimentar el último 74HC595 en una placa con un reloj invertido de los demás, pero eso le costaría el uso de una salida 74HC595 por cada vez que la señal pase entre un reloj no invertido 74HC595 y un reloj invertido 74HC595.

Super gato
fuente