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

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