Está en la página 1de 7

Circuitos Secuenciales, Latches y Flip-Flops

Objetivos:
Los objetivos del laboratorio son:

 Diseñar un registro de 4 y 8 bits con habilitador y un reset asíncrono.


 Adicionar los registros implementados a la calculadora desarrollada en el
laboratorio anterior.

Equipos y Materiales:
El equipo de experimentación necesario para realizar el presente laboratorio es:

 PC con Sistema Operativo Windows de 64 bits\ 32 bits.


 Módulo Altera DE2-115
 Adaptador DC 12V/2A
 Cable USB Tipo A y B
 Libro Diseño Sintetizable de VHDL para FPGA

Software Utilizado:

 Quartus II Web Edition\ Prime Lite Edition


 ModelSim – Altera

Sesión de Laboratorio:

Implementar el siguiente circuito usando los códigos usados anteriormente:


Para diseñar el circuito mostrado en la imagen debemos crear un nuevo proyecto
añadiendo los componentes usados en capítulos anteriores y añadir dos nuevos los
cuales serán el registro de 4 y 8 bits, los cuales funcionaran como registros tipo D sin
desplazamiento únicamente su función es permitir o no el paso de los datos hacia los
decodificadores o al LEDR.

Procedimiento:

Como el registro que nos pide implementar es uno síncrono notaremos que en nuestra
lista sensible introduciremos el Clock (clk) que usaremos para el cambio y las entradas
asíncronas las cuales serán el Habilitador (Ena) y el Clear o Reset (Reset)

Figura 1
El proceso para implementar el registro requerido será usando el estilo algorítmico y
haciendo uso de la sentencia if aprovechando el efecto de memoria al no declarar la
sentencia else.
Para entenderlo mejor lo ilustraremos con un ejemplo:
Analizando el siguiente código notamos:
Process(A,B)
begin
If A=’1’ then
Q <= B;
else
Q <= ‘0’;
end if;
end process;

Es la implementación de una compuerta AND, se aprecia que si no se cumple la


condición de todas maneras debe haber una asignación a la señal de salida.
Ahora, repitamos el proceso al siguiente código:
Process(A,B)
begin
if A=’1’ then
Q <= B;
End if;
End process;

Es la implementación correspondiente a un latch donde A realiza la función del


habilitador y cuando se encuentre en nivel alto cualquier cambio de B hará que se refleje
directamente a la salida. Ahora, que pasa si A=’0’ y B cambia de valor, el Process se
dispara pero como la condición no se cumple no afecta a Q, memorizando de esta
manera el valor que tenía Q.

Es importante notar que las dos entradas del circuito están presentes en la lista sensible,
esto hará que cualquier cambio en A o B hará que todo el proceso se dispare.

Ahora, analicemos el siguiente código VHDL:

Process(A)
begin
if A=’1’ then
Q <= B;
End if;
End process;

Es la implementación de un Flip – Flop que dispara por flanco de subida, donde la


entrada A hace la función de la señal de reloj y cada vez que A cambie de valor sólo en
el flanco de subida hará que Q tome el valor de B, memorizando el valor de Q bajo
cualquier otra condición. Note que las sentencias del proceso es igual a la
implementación anterior (latch), la diferencia está en las señales que aparecen en la
lista sensible, que en el último caso es sensible sólo a la señal A.

Entonces notamos que en nuestra implementación tenemos dos if que gobiernan el


process siendo el más importante el que tiene por condición al Reset, como observamos
al ser activo en bajo en el momento que este reciba un ‘0’ lógico la salida cambia a
“0000” pero de recibir un ‘1’ lógico no realiza ninguna acción y el process es regido por
la condición de Ena el cual al recibir un ‘1’ lógico dejará pasar el dato recibido en su
entrada en caso contrario no realiza ninguna acción y mantiene la anterior salida sin
mostrar cambios.

Para diseñar el registro de 8 bits el procedimiento es el mismo lo único que cambia es


la cantidad de bits de las variables de entrada y salida.

Figura 2
Ahora en el archivo al que consideramos TOP introducimos todos los componentes a
usar incluyendo sus entradas, salidas, buffers, etc.

Figura 3

Figura 4
Figura 5
Con lo que al realizar el mapeo tendríamos lo siguiente:

Figura 6
Simulación:

A continuación mostraremos algunos casos realizados en el software de simulación


ModelSim – Altera.

Figura 7

Key (1)= enable ; Key (0)= reset

Sw(17,16) = selector mux =00 (suma) ; Sw(15 dowto 8) = B = 00001000 ;

Sw(7 dowto 0) = A=00000010; salida led= 00001010

Figura 8

Key (1,0)= enable, reset

Sw(17,16) = selector mux; 00,01,10,11


Se observa los casos A+B, A OR B, A XOR B y NOT A, respectivamente

B = Sw(15 dowto 8) = 01101001 ;

A=Sw(7 dowto 0) = 00110111;

Ahora deshabilitamos enable (key 1) y se observa que la salida se mantiene en su ultimo valor.
Posteriormente volvemos a habilitarlo pero activando reset (key 0) , Se observa que la salida se
vuelve 0.

Figura 9

Volvemos a desactivar el reset (key 0) y se observa la salida es A + B

Figura 10

También podría gustarte