5 votos

Cronometraje dentro de un registro de desplazamiento

Cómo imagino que funcionan las redes digitales síncronas: las líneas de datos se muestrean en el flanco ascendente del reloj, se producen una serie de transitorios, el sistema se asienta y las líneas de datos se muestrean de nuevo en el siguiente flanco ascendente. Yo colocaría los transitorios en los flancos descendentes del reloj, de esa manera tanto el tiempo Tsu como Th para el muestreo están claros. (Algo similar al comportamiento del bus SPI).

Lo que se ve en una hoja de datos de un dispositivo del mundo real (74595): Flipflops D conectados en serie que tienen un reloj común. En la salida del primer flipflop, el transitorio en la línea de datos sigue al flanco de subida del reloj con Tpd. El siguiente flipflop necesita que el tiempo de la línea de datos sea estable después del flanco de subida para funcionar correctamente. Por supuesto que funciona porque Tpd>Th, pero es sólo una cuestión de nanosegundos.

Mi problema con todo esto es que no es robusto (quizá no sea la mejor palabra). Visualizar las cosas en un analizador lógico será menos útil porque las líneas de datos prácticamente cambian en sincronía con el flanco de subida del reloj. Los errores aleatorios causados por Th>Tpd no son realmente visibles y pasan desapercibidos. Si conecto otro registro de desplazamiento en serie de una tecnología diferente, que requiere tiempos de retención más largos, el circuito no funcionará, no importa lo lento que sea el reloj que haya elegido.

¿Es ésta la forma en que se construyen la mayoría de los circuitos digitales síncronos? ¿Sólo el retardo de propagación de los componentes hace que funcione? ¿Estoy siendo demasiado idealista? :)

43voto

jfmessier Puntos 223

Sí, pero lo que no muestra el esquema es que el diseñador del CI ha incluido un pequeño retardo en la línea de datos. En una situación normal, los datos estarían pasando por algunas puertas lógicas y haciendo "trabajo real" antes de ser muestreados

2voto

GetFree Puntos 495

Tienes razón en tu intuición de que hay un problema potencial. Dentro de un chip, los diseñadores de chips se han encargado de ello. Cuando conectas una cadena de, por ejemplo, 74x595, puedes tener problemas, especialmente con una cadena larga, un controlador débil y un cableado de reloj que comienza en el "primer" chip (el que recibe los datos). Una solución "estándar" es alimentar el reloj empezando por el último chip.

Una mejor solución es utilizar un chip como el CD4094 que tiene una salida retardada. Tiene un flipflop extra, que se sincroniza en el borde opuesto. El uso de esta salida para alimentar el SR nect elimina todos los problemas de configuración/retención (pero reduce la frecuencia de reloj máxima).

Creo que se puede conseguir el mismo efecto (una especie de implementación pobre de la salida retardada) sincronizando los 595 pares con el reloj normal, y los impar 595 con el reloj invertido. Pero nunca lo he resuelto.

0voto

fearphage Puntos 250

Mi problema con todo esto es que no es robusto (quizá no sea la mejor palabra). Visualizar las cosas en un analizador lógico será menos útil porque las líneas de datos prácticamente cambian en sincronía con el flanco de subida del reloj. Los errores aleatorios causados por Th>Tpd no son realmente visibles y pasan desapercibidos. Si conecto otro registro de desplazamiento en serie de una tecnología diferente, que requiere tiempos de retención más largos, el circuito no funcionará, no importa lo lento que sea el reloj que haya elegido.

Usted plantea dos cuestiones. Llamemos a los dos circuitos síncronos A y B, donde A se alimenta de B, y ambos comparten el mismo reloj

  1. El circuito no funcionará si el total de T pd(A) < T h(B) donde T pd es el retardo combinacional del reloj. ¿Es esto cierto? Por supuesto. Tú eres el diseñador del circuito y es tu responsabilidad final asegurarte de que el circuito funciona. En realidad, no suele ser una fuente de preocupación; incluso si alimentas la salida de un registro justo en la entrada de otro, el margen de diseño de las especificaciones del chip es alto. Para un NXP 74HC595, por ejemplo, el retardo de propagación típico a una alimentación de 4,5 V es de 19 ns, el tiempo de retención requerido es de 3 ns, y el tiempo de retención típico es de -2 ns: no hay problema. Para un TI SN74LV595A a 5V, el retardo de propagación típico es de 4,5nseg, el retardo de propagación mínimo es de 1nseg, el tiempo de retención requerido es de 2nseg. ¿Podría ser esto un problema si el retardo de propagación y los tiempos de retención están en su peor caso? Sí, claro. ¿Podría ser un problema si se conecta en cascada un SN74LV595A con un NXP74HC595? Por supuesto. En esos casos, es posible que tenga que añadir elementos combinacionales (búferes) con suficiente retardo para asegurarse de que se cumple el tiempo de retención.

  2. "Visualizar cosas en un analizador lógico será menos útil porque las líneas de datos prácticamente cambian en sincronía con el flanco de subida del reloj". Es cierto. Toma un consejo de los buses SPI, y configura el analizador lógico para que muestre los datos en el reloj la caída de borde. Las reglas del SPI son sencillas: usted actualización salidas en un borde, y usted muestra entradas en el otro.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X