Valor inicial o indefinido de flip flop

4

Estoy modelando circuitos digitales utilizando circuitos integrados en un software. He trabajado con chanclas y contadores, pero no lo recuerdo bien. ¿Cómo modelo un valor indefinido o inicial de flip flop (SR o JK, etc.)? Tengo tres opciones

  1. estado '0' para todos los nodos no inicializados
  2. asigne el valor aleatorio '0' o '1' al nuevo nodo
  3. generar un mensaje de error, & pida al usuario que borre o ajuste preestablecido el flip flop

También considere un flip flop JK, si la entrada del usuario es '0' & '0', la salida es 'Q' & 'Q bar'. ¿Qué valor asigno en este caso? '0' & '1'? Este es el caso inicial, es decir, el circuito se ha realizado & la consola acaba de encender.

Por favor, comparte tu experiencia.

    
pregunta Vinayak Garg

3 respuestas

1

En algunos tipos de simulación, cuantos más estados, mejor. Si solo está haciendo lógica síncrona de un solo reloj, sugeriría tres estados (alto / bajo / indefinido), pero expandir la lógica del flip flop de JK para incluir el cálculo completo del siguiente valor. Por ejemplo, si uno tiene un circuito en el que ambas entradas J y K están vinculadas al AND de la salida y una señal RESET, se debe aplicar output := (J & !output) | (!K & output) , de modo que el término anterior se cancelará, dejando output := !RESET & output , cuyo el valor estaría bien definido si el restablecimiento es alto, incluso si output no está definido.

Si está tratando de hacer una simulación en tiempo continuo, muchos más estados se vuelven necesarios, incluyendo 'ascendente', 'descendente', 'desconocido desconocido', 'desconocido inestable', etc. con algunas tablas de verdad complicadas que dependen de los estados anteriores de los insumos, así como los estados actuales (por ejemplo, 'ascendente: alto & ascendente: alto == subiendo', pero 'subiendo: alto & alto: cayendo' == 'inestable desconocido'), desde la primera señal podría o no haberse elevado lo suficientemente pronto para generar un pulso alto en la salida.

    
respondido por el supercat
4

En general, existen dos enfoques que los simuladores pueden usar para algo como esto:

1) Asignar, o asistir en la asignación de un estado inicial

2) Simule con 3 (o más) lógica de estado, una de las cuales es "indefinida" - y haga que la entrada indefinida se propague a través de toda la lógica dependiente que produce salidas no definidas. Este es un enfoque bastante común: construya una máquina de estados en Verilog, ponga una declaración para que el simulador imprima la variable de estado y vea que muestre "x" hasta que se defina todo lo que tenga en cuenta ese valor. (En el caso de su Q y / Q, ambos estarían indefinidos)

    
respondido por el Chris Stratton
2

Iría con el aumento de un error y se negaría a simular.

Tener una entrada flotante nunca es una buena idea.

    
respondido por el Majenko

Lea otras preguntas en las etiquetas