CIRCUITOS BIESTABLES
Transcripción
CIRCUITOS BIESTABLES
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 tiempo, se realizan de modo consecutivo. Así si tenemos ! l 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 ! l ! ! !#5 R<=0; S<=0;! primero se asignan todos los valores, antes de calcular sus consecuencias sobre el circuito. 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;! 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 oscila 1000 millones de veces 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 continuamente hasta que termine (o se pare) el programa 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 tiempo. Hemos conseguido, pues, un reloj de periodo 14 unidades de tiempo Si una unidad de tiempo equivale a 1ns, ¿cuál sería la orden para un reloj que operara a 100 MHz? § § 100 MHz = 100·10 6 Hz = 10 -8 s = 10 ns always #10 C=~C! ¡ Programar un biestable RS con ayuda de dos puertas NOR EJERCICIO 1 ¡ ¿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;! ¡ Añadir al biestable anterior una entrada de reloj a nivel alto ¡ Pista: soluciones y comentarios § http://avellano.fis.usal.es/~compi/ sol0703.htm EJERCICIO 3 ¡ Añadir un bloque always a las pruebas del ejercicio anterior para generar una señal de reloj de periodo 14 unidades de tiempo ¡ Obsérvese cómo el biestable sólo reacciona a las señales R y S cuando el reloj se encuentra en alto EJERCICIO 5 ¡ Modifíquese el diseño del ejercicio anterior para construir un biestable RS activo 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 activo en los flancos de subida EJERCICIO 6 ¡ Prográmese en Verilog, y comprúebese, este circuito que realiza un biestable JK activo EJERCICIO 7 ¡ En particular, estúdiese lo siguiente 1. Poniendo la señal de reloj en cero continuo, véase que las señales PRESET y CLEAR son asíncronas 2. Poniendo la señal de reloj en uno continuo, y desactivando las señales PRESET y CLEAR, comprobad el funcionamiento de las entradas J y K. § Es posible que al probar a activar 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. Repetid la prueba de J=1 y K=1, pero asignando un retardo de una unidad de tiempo a todas las puertas NAND 4. Investigad qué sucede jugando con los retardos independientes de cada puerta, hasta alcanzar valores de comportamiento deseables. EJERCICIO 7 (cont.)
Documentos relacionados
Asignación no bloqueante Señal de reloj Biestable RS Biestable JK
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 ...
Más detalles