Download Asignación no bloqueante Señal de reloj Biestable RS Biestable JK

Document related concepts

Biestable wikipedia , lookup

Registro de desplazamiento wikipedia , lookup

Sistema secuencial wikipedia , lookup

Sesgo de reloj wikipedia , lookup

Metaestabilidad wikipedia , lookup

Transcript
Circuitos biestables Asignación no bloqueante Señal de reloj Biestable RS Biestable JK Asignación no bloqueante l 
En Verilog, cuando hay varias asignaciones para una marca de Bempo, se realizan de modo consecuBvo. Así si tenemos !
l 
l 
!
!#5 R=0; S=0;!
primero se calcula el resultado de asignar 0 a R y sus consecuencias, y posteriormente se asigna 0 a S La asignación no bloqueante usa como símbolo <=!
Si se usa asignación no bloqueante en el caso anterior !
!
!#5 R<=0; S<=0;!
primero se asignan todos los valores, antes de calcular sus consecuencias sobre el circuito. 2
Asignación no bloqueante •  ¿Cuál es el valor de a, b, c y d al final del siguiente ejemplo? #5 a=1; b=2; c=3; d=4;
!
#5 a=b; b=a;!
#5 c<=d; d<=c;!
3
Señal de reloj l 
Los procesadores funcionan a un determinado ritmo, que se conoce como la frecuencia de operación, que depende de una señal de reloj l 
l 
Si un procesador funciona a 1GHz, quiere decir que su señal de reloj Bene 1000 millones de ciclos por segundo Para simular la oscilación del reloj podemos usar un bloque always!
l 
Todo lo que se encuentre en el bloque se ejecuta conBnuamente hasta que termine (o se pare) el programa 4
Señal de reloj • 
Ejemplo: always #7 C=~C;!
• 
• 
• 
Suponiendo que antes se ha definido el registro C de un bit, este bucle hace que C cambie a su valor complementario cada 7 unidades de Bempo. Hemos conseguido, pues, un reloj que realiza un periodo o ciclo completo cada 14 unidades de Bempo Si una unidad de Bempo equivale a 1ns, ¿cuál sería la orden para un reloj que operara a 100 MHz? • 
• 
100 MHz = 100·∙106 Hz = 10-­‐8 s = 10 ns always #5 C=~C!
5
Circuito biestable •  Es un circuito que oscila entre dos (bi-­‐) estados •  La salida del circuito puede ser de dos Bpos: •  Estable: toma como salida la úlBma salida del circuito •  Entrada: toma como salida la entrada del circuito •  Una entrada control determina en que estado está el circuito •  Este Bpo de circuitos introducen la variable “Bempo” •  La salida de un circuito biestable es la que tenía en el momento anterior, a no ser que se tome de nuevo la entrada •  La entrada de control puede (suele) ser el reloj del sistema •  Son la base de los circuitos de desplazamiento que veremos en la sesión siguiente 6
Ejercicio 1 •  Programar un biestable RS con ayuda de dos puertas NOR •  ¿Cuál es la salida si se somete al biestable a la siguiente batería de entradas? $monitor($time," R=%b, S=%b, Q=%b, NQ=%b", R, S, Q, NQ);!
R=0; S=0;!
#5 R=0; S=1;!
#5 R=0; S=0;!
#5 R=1; S=0;!
#5 R=1; S=1;!
#5 R=0; S=0;!
#5 R=1; S=1;!
#5 S=0; R=0;!
7
Ejercicio 3 •  Añadir al biestable anterior una entrada de reloj a nivel alto •  Pista: soluciones y comentarios •  hdp://avellano.fis.usal.es/~compi/sol0703.htm 8
Ejercicio 5 •  Añadir un bloque always a las pruebas del ejercicio anterior para generar una señal de reloj de periodo 14 unidades de Bempo •  Obsérvese cómo el biestable sólo reacciona a las señales R y S cuando el reloj se encuentra en alto 9
Ejercicio 6 •  Modiiquese el diseño del ejercicio anterior para construir un biestable RS acBvo en el flanco de subida del reloj •  Para ello, pásese la señal de reloj por este circuito detector de flanco de subida antes de pasársela al biestable del ejercicio anterior •  Compruébese cómo el biestable es ahora acBvo en los flancos de subida 10
Ejercicio 7 •  Prográmese en Verilog, y comprúebese, este circuito que realiza un biestable JK acBvo 11
Ejercicio 7 (cont.) •  En parBcular, estúdiese lo siguiente 1.  Poniendo la señal de reloj en cero conBnuo, véase que las señales PRESET y CLEAR son asíncronas 2.  Poniendo la señal de reloj en uno conBnuo, y desacBvando las señales PRESET y CLEAR, comprobad el funcionamiento de las entradas J y K. • 
Es posible que al probar a acBvar a la vez las señales J y K, el funcionamiento no sea el esperado o incluso se bloquee la simulación. Si es el caso, pulsa CTRL+C 3.  RepeBd la prueba de J=1 y K=1, pero asignando un retardo de una unidad de Bempo a todas las puertas NAND 4.  InvesBgad qué sucede jugando con los retardos independientes de cada puerta, hasta alcanzar valores de comportamiento deseables. 12
13