Problema con el reloj de la unidad organizativa
Autor: Desconocido
Ya sea que cualquier diseño digital se implemente utilizando lógica discreta o lógica programable o dispositivos de silicio totalmente personalizados, una sincronización confiable es clave para una operación exitosa: Desconocido p>
Ya sea que un diseño digital se implemente mediante lógica discreta, lógica programable o dispositivos de silicio totalmente personalizados, un reloj confiable es fundamental para un funcionamiento exitoso. Un reloj mal diseñado puede causar un comportamiento erróneo bajo temperaturas extremas, voltaje o desviaciones en el proceso de fabricación y puede ser difícil y costoso depurar. En los diseños pld/fpga, se utilizan habitualmente varios tipos de relojes. Los relojes se pueden dividir en los siguientes cuatro tipos: relojes globales, relojes controlados, relojes lógicos de niveles múltiples y relojes fluctuantes. Un sistema de relojes múltiples puede incluir cualquier combinación de estos cuatro tipos de relojes.
1. Reloj global
Para proyectos de diseño, el reloj global (o reloj síncrono) es el reloj más simple y predecible. El mejor esquema de sincronización en diseños pld/fpga es un reloj maestro único impulsado por un pin de entrada de reloj global dedicado para sincronizar cada flip-flop en el proyecto de diseño. El pld/fpga tiene un pin de reloj global dedicado que está conectado directamente a cada registro del dispositivo. Este reloj global proporciona la latencia de reloj a salida más corta del dispositivo.
La figura 1 muestra un ejemplo de un reloj global. La forma de onda de temporización de la Figura 1 ilustra que las entradas de datos d[1..3] del flip-flop están sujetas a restricciones de tiempo de configuración y retención. Los valores para los tiempos de configuración y espera se proporcionan en la hoja de datos pld y también se pueden calcular utilizando un analizador de tiempos de software. Si los tiempos de configuración y espera no se pueden cumplir en la aplicación, la señal de entrada debe sincronizarse con el reloj (ver el siguiente capítulo "Entradas asíncronas").
Figura 1 Reloj global
(La mejor manera de cronometrar cada registro en pld es usar el pin del reloj global, de modo que los datos solo necesiten obedecer el tiempo de configuración relativo del reloj tsu y tiempo de espera th)
2. Relojes cerrados
En muchas aplicaciones, es imposible o poco práctico utilizar un reloj global externo durante todo el proyecto de diseño. pld tiene un reloj de matriz lógica de fase de producción (es decir, el reloj se genera mediante lógica), lo que permite que cualquier función registre cada flip-flop individualmente. Sin embargo, cuando utiliza relojes de matriz, debe analizar cuidadosamente la funcionalidad del reloj para evitar fallos.
Los relojes de matriz se utilizan a menudo para formar relojes cerrados. Los relojes controlados a menudo se asocian con interfaces de microprocesadores donde se utilizan líneas de dirección para controlar los pulsos de escritura. Sin embargo, el reloj controlado generalmente ocurre siempre que se usa una función combinacional para cronometrar un flip-flop. Un reloj controlado puede funcionar tan confiablemente como un reloj global si se cumplen las siguientes condiciones:
1. La lógica que controla el reloj debe contener solo una puerta "Y" o una puerta "O". Si se utiliza alguna lógica adicional en ciertos estados de trabajo, se producirán fallas debido a la contención.
2. Con una entrada de una puerta lógica actuando como el reloj real, todas las demás entradas a la puerta lógica deben tratarse como direcciones o líneas de control y cumplir con las restricciones de tiempo de configuración y retención relativas al reloj.
Las figuras 2 y 3 son ejemplos de relojes controlados confiables. En la Figura 2, la puerta AND se usa para generar el reloj cerrado, mientras que en la Figura 3, la puerta OR se usa para generar el reloj cerrado. En estos dos ejemplos, los pines nwr y nwe se consideran pines de reloj, el pin add[o.3] es el pin de dirección y los datos de los dos flip-flops se aleatorizan mediante las señales d[1...n] usando Logic generación.
Figura 2 "Con" reloj controlado
Figura 3 "Con" reloj controlado
Las formas de onda en la Figura 2 y la Figura 3 muestran las configuraciones relevantes y el tiempo de espera requisitos. Las líneas de dirección de ambos diseños deben permanecer estables (nwr y nwe están activos en nivel bajo) durante todo el tiempo que el reloj permanezca activo. Si la línea de dirección no permanece estable dentro del tiempo especificado, aparecerá un fallo en el reloj, lo que provocará que el flip-flop realice un cambio de estado incorrecto. Los pines de datos d[1...n], por otro lado, solo requieren tiempos de configuración y retención estándar en los bordes activos de nwr y nwe.
A menudo podemos convertir relojes controlados en relojes globales para mejorar la confiabilidad de los proyectos de diseño. La Figura 4 muestra cómo se puede rediseñar el circuito de la Figura 2 utilizando un reloj global.
La línea de dirección controla la entrada de habilitación del flip-flop d, y muchos software de diseño pld (como el software max+plusii) habilitan el flip-flop d. Cuando ena es alto, el valor en la entrada d se registra en el flip-flop: cuando ena es bajo, el estado actual permanece sin cambios.
Figura 4 "Uso" de la conversión del reloj de puerta a reloj global
Las formas de onda de temporización del circuito rediseñado en la Figura 4 muestran que no es necesario mantener la línea de dirección durante todo el el período de activación de nwr es estable; en cambio, solo necesitan cumplir con los mismos tiempos de configuración y retención que los pines de datos, lo que impone requisitos mucho más bajos en las líneas de dirección.
La figura muestra un ejemplo de un reloj cerrado no confiable. La salida rco del contador sumador síncrono de 3 bits se utiliza para cronometrar el flip-flop. Sin embargo, el contador proporciona múltiples entradas que actúan como relojes, lo que viola una de las condiciones requeridas para un reloj controlado confiable. Dado que todos los flip-flops se activan casi en el mismo instante, ninguno de los flip-flops que producen la señal rco puede considerarse una línea de reloj real. Y no podemos garantizar que la longitud de las líneas desde qa, qb, qc hasta d dentro del flip-flop pld/fpga sea la misma, como se muestra en la forma de onda de tiempo en la Figura 5, cuando el instrumento cuenta de 3 a 4. , aparecerán fallos en la línea rco (suponga que la ruta del flip-flop qc al d es más corta, es decir, la salida de qc voltea primero).
Figura 5 Reloj controlado no confiable
(La forma de onda de sincronización muestra cómo la señal rco falla cuando el contador cambia de 3 a 4)
La Figura 6 muestra un reloj controlado no confiable Circuito de control de reloj global, que es una mejora del circuito contador poco confiable de la Figura 5, en el que rco controla la entrada de habilitación del flip-flop d. Esta mejora no requiere la adición de unidades lógicas pld.
Figura 6 Conversión de reloj controlado no confiable en reloj global
(Este circuito es equivalente al circuito de la Figura 5, pero más confiable)
3. Multi- reloj lógico de nivel
Cuando se usa más de un nivel de lógica combinacional para generar un reloj controlado (es decir, se usa más de una puerta "Y" o "O"), el reloj controlado puede ser lógica usada. Es difícil demostrar la confiabilidad de un proyecto de diseño si se utiliza lógica combinacional multinivel para generar un reloj controlado (es decir, más de una puerta AND u OR). Incluso si los resultados del prototipo o la simulación no muestran peligros estáticos, es posible que aún existan en aplicaciones reales. Generalmente, no deberíamos utilizar lógica combinacional multinivel para implementar flip-flops de reloj en diseños pld.
La Figura 7 muestra un ejemplo de un reloj de varios niveles que contiene una imagen maligna. El reloj sale del multiplexor controlado por el pin SEL. Las entradas al multiplexor son el reloj (clk) y 2 veces ese reloj (div2). Como se puede ver en las formas de onda de sincronización en la Figura 7, cuando ambos relojes son lógicos 1, se produce una onda sinusoidal estática cuando cambia el estado de la línea SEL. La extensión de la onda sinusoidal depende de las condiciones de funcionamiento. Las señales de alerta en la lógica multinivel se pueden eliminar. Por ejemplo, puede insertar "lógica redundante" en su proyecto de diseño. Sin embargo, el compilador pld/fpga elimina esta lógica redundante durante la síntesis lógica, por lo que es difícil verificar que los artefactos realmente se eliminen. Por tanto, se deben buscar otros métodos para conseguir la funcionalidad del circuito.
Figura 7 Reloj de varios niveles con peligro estático
La Figura 8 proporciona una alternativa al reloj de un solo nivel para el circuito de la Figura 7. El pin sel y la señal div2 en el diagrama se utilizan para habilitar la entrada de habilitación del flip-flop tipo d, no el pin de reloj del flip-flop. El uso de este circuito no requiere unidades lógicas pld adicionales y funciona de manera más confiable. Diferentes sistemas requieren diferentes métodos para eliminar múltiples etapas de reloj y no existe un patrón fijo.
Figura 7 Reloj multinivel sin peligro estático
(Este circuito es lógicamente equivalente a la Figura 7, pero más confiable)
4. Reloj de Ondas de Fila
Otro circuito de reloj popular es el reloj de onda viajera, en el que la salida de un flip-flop se utiliza como entrada de reloj para otro flip-flop. Si se diseñan cuidadosamente, los relojes de ondas viajeras pueden funcionar con tanta fiabilidad como los relojes globales. Sin embargo, los relojes de ondas viajeras pueden complicar los cálculos de temporización asociados con el circuito.
Los relojes de ondas viajeras pueden crear un gran desvío de tiempo entre los relojes flip-flop en una cadena de ondas viajeras y pueden exceder los retrasos de configuración, retención y salida del circuito en el peor de los casos, lo que ralentiza la velocidad real del sistema.
Los contadores asíncronos construidos a partir de flip-flops contadores suelen utilizar un reloj de onda viajera, con la salida de un flip-flop sincronizando la entrada del siguiente flip-flop, consulte la Figura 9. Los contadores síncronos son generalmente una mejor alternativa a los contadores asíncronos porque requieren la misma cantidad de macroceldas y el tiempo de reloj a salida de los contadores síncronos es más rápido. La Figura 10 muestra un contador síncrono con un reloj global que tiene la misma funcionalidad que la Figura 9, se puede implementar con la misma cantidad de elementos lógicos y tiene un tiempo de reloj a salida más corto. Casi todo el software de desarrollo pld proporciona varios contadores de sincronización.
Figura 9 Reloj de onda viajera
Figura 10 Reloj de onda viajera convertido en reloj global
(Este contador de 3 bits es un circuito de reemplazo para el contador asíncrono en Figura 9, que utiliza las mismas 3 macroceldas, pero tiene un retardo de reloj a salida más corto)
5. Sistema de múltiples relojes
Muchos sistemas requieren el uso de múltiples relojes en el mismo pld. Los ejemplos más comunes son la interfaz entre dos microprocesadores asíncronos o la interfaz entre un microprocesador y un canal de comunicación asíncrono. Esta aplicación introduce restricciones de tiempo adicionales debido a los tiempos de configuración y retención requeridos entre las dos señales de reloj. Es posible que también necesiten sincronizar ciertas señales asincrónicas.
La Figura 11 muestra un ejemplo de un sistema multi-reloj. clk_a se usa para cronometrar reg_a, y clk_b se usa para cronometrar reg_b Dado que reg_a ingresa a la lógica combinacional de reg_b, el flanco ascendente de clk_a tiene requisitos de tiempo de configuración y retención en relación con el flanco ascendente de clk_b. Dado que reg_b no controla la lógica de la entrada reg_a, no existe ningún requisito de tiempo de establecimiento para el flanco ascendente de clk_b en relación con clk_a. Además, dado que el flanco descendente del reloj no afecta el estado del flip-flop, no hay requisitos de sincronización entre los flancos descendentes de clk_a y clk_b. Como se muestra en la Figura 4 2.ii, hay dos relojes independientes en el circuito, pero no se pueden garantizar los requisitos de tiempo de configuración y mantenimiento entre ellos. En este caso, el circuito debe estar sincronizado. La Figura 12 muestra cómo el valor de reg_a (antes de su uso) se sincroniza con clk_b. El nuevo flip-flop reg_c es activado por glk_b, lo que garantiza que la salida de reg_g coincida con el tiempo de establecimiento de reg_b. Sin embargo, este enfoque retrasa la salida en un ciclo de reloj.
Figura ll sistema de reloj múltiple
(diagrama de forma de onda de temporización del flanco ascendente de clk_a y el flanco ascendente de clk_b bajo las limitaciones de tiempo de configuración y tiempo de espera)
Figura 12 Sistema de reloj múltiple con salida de registro síncrono
(Si clk_a y clk_b son independientes entre sí,
En muchas aplicaciones, solo sincronizar señales asíncronas no es suficiente, cuando hay Cuando hay dos o más relojes no idénticos, será difícil garantizar la configuración de los datos y el tiempo de retención, y enfrentaremos problemas de sincronización complejos. La mejor manera es sincronizar todos los relojes que no sean iguales. Utilice el bucle interno de bloqueo de fase de pld. (pll o dll es un método muy eficaz, pero no todos los plds vienen con pll y dll, y la mayoría de los chips con función pll son caros, por lo que, a menos que existan requisitos especiales, los plds con pll no se pueden utilizar aquí). , necesitamos usar un flip-flop d con un terminal habilitado e introducir un reloj de alta frecuencia
Figura 13 Diferentes relojes de origen
Como se muestra en la Figura 13, el sistema tiene dos. Diferentes relojes de origen, uno con una frecuencia de 3 mhz y otro con una frecuencia de 5 mhz. Diferentes flip-flops utilizan diferentes relojes. Para garantizar la estabilidad del sistema, introducimos un reloj de 20 mhz para sincronizar los relojes de 3 m y 5 m. como se muestra en la figura 15. El reloj de alta frecuencia de 20 m se utilizará como reloj del sistema y la entrada a los terminales de reloj de todos los flip-flops 3m_en y 5m_en controlará los terminales de habilitación de todos los flip-flops.
3m_en y 5m_en controlarán los terminales de habilitación de todos los flip-flops, es decir, el flip-flop original conectado al reloj de 3m se conectará al reloj de 20m, mientras que 3m_en controlará la habilitación de los flip-flops, el flip-flop original conectado al reloj de 5 m se conectará al reloj de 20 m, y 5m_en controlará la habilitación del flip-flop. De esta forma podemos sincronizar cualquier reloj que no sea el mismo.
Figura 13 Sincronización de cualquier reloj que no sea fuente
(Un dff y la siguiente puerta NOT, así como la puerta constituyen un circuito de detección de flanco ascendente del reloj)
Además, las entradas asincrónicas siempre no pueden cumplir con el tiempo de retención de datos establecido, lo que puede hacer que el sistema entre en un estado metaestable. Por lo tanto, también se recomienda que los diseñadores sincronicen primero todas las entradas asincrónicas mediante flip-flops duales. Para obtener más información, consulte este artículo: ¿Su pld es mutable?
Resumen: Un reloj estable y confiable es una condición importante para un sistema estable y confiable. No podemos usar ninguna salida que pueda contener fallas como señal de reloj. Solo debemos usar el reloj global tanto como sea posible. Para sistemas de múltiples relojes, debemos prestar atención a las señales síncronas y asíncronas y a los relojes no homólogos.