Lab #6 FPGA - Contadores
Lab #6 FPGA - Contadores
Lab #6 FPGA - Contadores
Práctica Nº 6. Contadores
1. Datos de la práctica
2. Objetivos
3. Medios a utilizar
Por cada práctica y por cada puesto de laboratorio, los materiales a utilizar son:
Cantidad Descripción
1 Computadora
1 Tarjeta de desarrollo Basys2 Digilent
1 Software Xilinx ISE® Webpackv14.7
4. Actividades previas
Diagrama de estado
Tablas de estado del sistema
Diagrama del circuito del contador con flip flop tipo D
5. Introducción
Un contador digital corresponde a una máquina secuencial que recibe pulsos de una señal de reloj,
cuenta los flancos de bajada (o de subida) de la misma señal y entrega dicha cuenta, en binario, por
las salidas. La cantidad máxima que se alcance a contar dependerá del número de bit de salida que
se dispongan. Los contadores de década, del tipo BCD, se utilizan ampliamente en aplicaciones
donde los pulsos o sucesos van a ser contados y los resultados exhibidos en algún tipo de dispositivo
de visualización numérica decimal.
En este laboratorio se realizará el código para modelar dos tipos de Flip Flops (Tipo D y JK). Una vez
comprendido su funcionamiento, se hará un contador digital binario que cuente desde 0000 a
1111(0 – F). Utilizaremos el módulo x7seg de la práctica de laboratorio 4 para visualizar estos dígitos
en un display de la tarjeta Basys2 y el módulo Bin2BCD para apreciarlo en formato decimal. El diseño
incluye una señal de reloj y una señal de reset (clr) que se utiliza para poner a cero dichas cuentas.
6. Desarrollo de la práctica
entity DFF is
Port ( clk : in STD_LOGIC;
clr : in STD_LOGIC;
set : in STD_LOGIC;
D : in STD_LOGIC;
Q : out STD_LOGIC;
notQ : out STD_LOGIC);
end DFF;
3. Crear el módulo JKFF para el tipo de Flip Flop JK descrito en el siguiente programa.
entity JKFF is
Port ( J : in STD_LOGIC;
K : in STD_LOGIC;
set : in STD_LOGIC;
clr : in STD_LOGIC;
clk : in STD_LOGIC;
Q : inout STD_LOGIC;
notQ : inout STD_LOGIC);
end JKFF;
end Behavioral;
Simulación
1. Verificamos la sintaxis, agregamos una nueva fuente “New Source” y escogemos el tipo de
archivo “VHDL Test Bench”. Se tendrá que crear una simulación para cada archivo de Flip
Flop que se ha realizado.
2. Recordemos pasarnos al modo Simulación y en el archivo VHDL Test Bench no comentar
todas las líneas que hacen referencia a clock.
3. Agregue los siguientes estímulos para cada código correspondiente:
J <= '1';
K <= '0';
wait for 100 ns;
J <= '1';
K <= '1';
wait for 100 ns;
4. Una vez agregado el estímulo deberíamos obtener las formas de onda para cada flip flop.
Enseñe su simulación al profesor.
7. Actividades propuestas
Una vez realizado el análisis de los dos tipos de flip flop más utilizados, se reutilizará el módulo del
Flip Flop tipo D para poder diseñar el contador de 0 a 15.
3. Instanciar el modulo las veces que sea necesario para diseñar el contador final según el diagrama
de la Figura 1 y las ecuaciones de la Tabla.
U6:C
9
QA
8
10
NOTQB
7408
U4:B
U6:D 4
12 6
QA U7:A
11 5
13 1
NOTQC
74LS32 3
7408 2
U4:D 74LS32
U8:A 12
1 11
QA
3 13
2 U1:A
4
NOTQD
74LS32
7408 U1:A(CLK) 2 5
?
S
D Q QA QA
3
U9:A CLK
1
NOTQA
2 6
QB Q notQA
R
6
4
QC
1
5 7474
QD
74LS21
U6:B
4
QB
6
5
NOTQC
7408
U4:A
U6:A 1
1 3
QB
3 2
U4:C U1:B
10
2
NOTQD
74LS32 9
7408 8 12 9
?
S
D Q QB QB
10
U5:A 11
CLK
1 74LS32
NOTQB
2 12 8
QC Q notQB
R
13
QD
13
74LS11 7474
U3:A U2:A
4
1
QC
3 2 5
?
S
D Q QC QC
2
QD
3
CLK
74HC86
6
Q notQC
R
1
7474
U2:B
10
12 9
?
S
NOTQD D Q QD QD
11
CLK
8
Q notQD
R
13
7474
𝐷𝐴 = (𝑄𝐴 𝑎𝑛𝑑 𝑛𝑜𝑡𝑄𝐵) 𝑜𝑟 (𝑄𝐴 𝑎𝑛𝑑 𝑛𝑜𝑡𝑄𝐵) 𝑜𝑟 (𝑄𝐴 𝑎𝑛𝑑 𝑛𝑜𝑡𝑄𝐷) 𝑜𝑟 (𝑛𝑜𝑡𝑄𝐴 𝑎𝑛𝑑 𝑄𝐵 𝑎𝑛𝑑 𝑄𝐶 𝑎𝑛𝑑 𝑄𝐷)
𝐷𝐵 = (𝑄𝐵 𝑎𝑛𝑑 𝑛𝑜𝑡𝑄𝐶) 𝑜𝑟 (𝑄𝐵 𝑎𝑛𝑑 𝑛𝑜𝑡𝑄𝐷)𝑜𝑟 (𝑛𝑜𝑡𝑄𝐵 𝑎𝑛𝑑 𝑄𝐶 𝑎𝑛𝑑 𝑄𝐷)
𝐷𝐶 = 𝑄𝐶 𝑥𝑜𝑟 𝑄𝐷
𝐷𝐷 = 𝑛𝑜𝑡𝑄𝐷
4. Agregar el Modulo Bin2BCD y el X7Seg para que el conteo binario realizado por el contador se
visualice en los displays de siete segmentos a como se muestra en la Figura 2.
X7Seg
Bin2BCD
Contador
Binario
Realice el contador asignado en clases en un nuevo proyecto VHDL de tal forma que su conteo se
visualice en el display de siete segmentos. Recuerde incluir en el reporte el diagrama de estados, la
tabla de estados, mapa de Karnaugh y la carpeta del proyecto generada por el Xilinx.