¿Un registro de desplazamiento causará metaestabilidad?

ingrese la descripción de la imagen aquí

El gráfico anterior muestra la salida de un registro de desplazamiento.

La salida de Qa se muestrea en el primer flanco ascendente de la entrada de datos. el voltaje se acumula durante ese tiempo. ¿Provocará metaestabilidad ya que la salida de Qb también se muestrea en el primer flanco ascendente de Qa? La salida de Qb es cero en el primer flanco ascendente, ¿significa que los datos muestreados en ese momento son cero?

Necesitaría conocer los tiempos de configuración y espera especificados para la entrada; como se dibuja, el gráfico sugiere que se espera que el tiempo de configuración (antes del flanco ascendente de Clk) sea cero. Algunos dispositivos más antiguos (cosas verdaderamente antiguas) requieren que la entrada sea estable algún tiempo antes del borde del reloj.
El diagrama que OP mostró implica una sola parte: un registro de desplazamiento de 4 bits de TTL, LSTTL o CMOS vintage. En componentes discretos como estos, el proveedor de circuitos integrados se asegura de que se cumplan los tiempos de configuración y espera de los flip-flops individuales internos del dispositivo, por diseño.
@SteveSh. Agradeciendo también por el comentario a continuación, y reconociéndolo, recientemente busqué hojas de datos de TI, ST y Nexperia para el 4013 D-flip-flop, todas con la última revisión dentro de los últimos ~ 5 años, y todos dieron la típica y máx. tiempo de propagación, pero no el mínimo (que parece ser necesario para asegurar el t h o yo d del componente conectado a la salida). Parece que no es posible mezclar diferentes componentes/fabricantes y aún esperar esta garantía de las hojas de datos.
@devnull: tiene razón en que la mayoría de los fabricantes no especifican los tiempos mínimos de utilería, que serían necesarios para garantizar la configuración de la reunión y los tiempos de espera. En los días de diseño con dispositivos discretos, muchos ingenieros (incluido yo mismo) tomarían el número de tiempo de utilería típico y lo reducirían en algún factor, 2X, 3X, 5X, para obtener un SWAG razonable para retrasos mínimos de reloj a salida.
@SteveSh, pero la pregunta del OP está etiquetada para VHDL/Verilog, por lo que están buscando FPGA, no TTL/CMOS. Imagino que la foto es solo una sacada de internet. OP, edite la pregunta para dejar en claro qué parte está usando.
No hay nada en la publicación, el título o la etiqueta de OP que diga VHDL, Verilog o FPGA. Y además del diagrama de tiempo que mostró con las etiquetas QA, QB, QC y QD para las salidas, son etiquetas que normalmente se usan con dispositivos digitales discretos. Busque 54LS161 para ver un ejemplo típico de esta nomenclatura.
@SteveSh, las etiquetas estaban allí hasta que alguien las eliminó sin una buena razón (volver a colocarlas ahora). Las etiquetas no reemplazan los detalles, pero son muy relevantes. Estoy muy familiarizado con los dispositivos discretos y con PLD/ASIC y sus documentos :-) El aspecto que podría tener el diagrama de tiempos es prueba de ello, es una imagen de Internet. Por eso mi respuesta es genérica pero se inclina hacia el PLD. De todos modos, cuando el OP vuelva a caer, con suerte lo aclararán. No han hecho una pregunta específica de parte/circuito, por lo que la tecnología no es necesaria para obtener una respuesta.

Respuestas (3)

Las hojas de datos rara vez establecen un tiempo garantizado durante el cual la salida se mantendrá estable después del pulso del reloj. Por lo tanto, es difícil probar solo a partir de los tiempos de la hoja de datos en pines individuales que se pueden cumplir los tiempos del registro de desplazamiento.

Sin embargo, la capacidad de construir registros de desplazamiento a partir de flip-flops es un requisito tan común que, en la práctica, todas las familias de flip-flops están diseñadas de modo que cuando una salida impulsa una entrada de la misma familia, los tiempos de configuración y espera serán cumplido por los tiempos de retardo de salida. Una familia de flip-flop que no cumpliera con este requisito sería inutilizable y rápidamente rechazada por todos los usuarios.

Dentro de un FPGA, el problema se vuelve aún más discutible, ya que las herramientas de diseño/sincronización tienen que tener en cuenta cada bit de retraso variable a través de los dispositivos de conmutación de señal, y así hacer todo el trabajo por usted (si ha configurado las restricciones correctamente). ).

No, a menos que haya una demora excesiva entre el reloj que llega a un Flip-Flop tipo D (DFF) de registro de desplazamiento (SR) y el reloj que llega al DFF que le sigue.

Cada DFF no actualiza sus salidas Q con su nivel de entrada D instantáneamente. Hay un retraso mientras viaja a través del circuito interno del DFF. Entonces, cada DFF no ha producido una nueva salida Q mientras está bloqueando la Q de la DFF anterior, que tampoco ha producido una nueva salida.

ingrese la descripción de la imagen aquí

Una disposición de reloj perfecta haría que el reloj alcanzara la entrada de reloj de todos los DFF simultáneamente. En el borde activo del reloj, los DFF se engancharían en sus niveles de entrada D y, después de un retraso, actualizarían sus salidas Q.

En realidad, habrá un sesgo entre las señales de reloj en las entradas de todos los DFF en el SR. Un SR conectado correctamente asegura que este sesgo de reloj sea menor que el 'tiempo de viaje' DFF D->Q.

El sesgo puede ser negativo, de modo que el reloj alcance primero el DFF final en el SR, luego alcance el DFF un poco antes y así sucesivamente. Pero esto afecta la temporización de cualquier lógica sincronizada que controle el primer DFF en el SR, por lo que tiene más consecuencias de temporización para el circuito general.

Para un PLD (FPGA/CPLD) o ASIC, el software instalador se encargará de eso mientras intenta cumplir con cualquier requisito de reloj mínimo que se haya especificado.

¿Podría informar, para un IC DFF discreto, qué parámetro indica este "tiempo de viaje" D->Q mínimo ? El retraso de propagación viene con frecuencia solo con un valor típico, no con límites.
@devnull, lo consideré pero lo dejé de lado deliberadamente. La pregunta de OP está etiquetada para VHDL/Verilog, por lo que están buscando FPGA, no 7474. Los valores cambian entre FPGA.
@devnull: muchos circuitos integrados digitales discretos especifican un tiempo máximo de propagación (tiempo de viaje), para un rango de temperatura y un rango de VCC determinados. Si está utilizando una parte que no lo hace, y le importa ese parámetro, necesita encontrar una parte diferente para usar.

Dado que esta pregunta está etiquetada con [vhdl] y [verilog], responderé la pregunta desde una perspectiva de diseño ASIC/FPGA.

El problema que describes es totalmente posible. Si el reloj llega a la segunda etapa significativamente más tarde que la primera etapa, la segunda etapa puede entrar en un estado metaestable ya que su entrada ya ha comenzado a cambiar. Sin embargo, esto es precisamente lo que el análisis de tiempo pretende prevenir. Las herramientas de síntesis modernas están impulsadas por el tiempo y garantizarán que las celdas y el enrutamiento se presenten de manera que no se produzcan problemas de metaestabilidad. Si la herramienta no puede hacer esto por alguna razón, el análisis de tiempo final marcará la ruta como una violación de tiempo.