Documente Academic
Documente Profesional
Documente Cultură
Especificación: Diseñar un contador de 2 bits con entrada para inhibir el conteo (ALTO) y entrada de reinicio
(RST).
Solución
V ALTO
F F
C3 11
ALTO
V V
C1 01
ALTO
F F
C2 10
ALTO V
Paso 2: Obtener la tabla de transición de estados usando la tabla de excitación del flip flop elegido para la
implementación (D en este caso).
= + + +
= + + +
= + +
= +
R1 R2 U1:A U1:B
10
4
10K 10K
Db 2 5 b Da 12 9 a
S
S
D Q D Q
U1:A(CLK)
3 11
RST
CLK CLK
6 /b 8 /a
Q Q
R
R
ALTO
Db
Da
1
13
b
a
74LS74 74LS74
U4:D
ALTO 13
/ALTO
11
12
RST
74LS00
U2:A U4:A
b 1 a 1
3 3
/ALTO
/a 2 2
U4:C
74LS00 74LS00 10
8 Da
U2:B U3:A U4:B 9
b 4 1
/a 4
6 2 12 Db 74LS00
/ALTO 6
5 13 ALTO
5
74LS00 74LS10
74LS00
U3:B
/b 3
a 4 6
ALTO 5
74LS10
Ejemplo 2: Síntesis usando VHDL y un PLD (gal22v10).
Paso 2: Realizar la implementación, codificar en VHDL siguiendo una estructura definida, compilar y depurar el
código finalmente implementar en un PLD (gal22v10).
LIBRARY ieee; ELSE
USE ieee.std_logic_1164.all; nx_state <= uno;
------------------------------------------------- END IF;
ENTITY counter IS WHEN uno =>
PORT ( clk, rst, alto: IN STD_LOGIC; contador <= "01";
contador: OUT STD_LOGIC_VECTOR (1 DOWNTO 0)); IF alto = '1' THEN
END counter; nx_state <= uno;
------------------------------------------------- ELSE
ARCHITECTURE state_machine OF counter IS nx_state <= dos;
TYPE state IS (cero, uno, dos, tres); END IF;
SIGNAL pr_state, nx_state: state; WHEN dos =>
BEGIN contador <= "10";
-------------------------------------------------- IF alto = '1' THEN
PROCESS (rst, clk) nx_state <= dos;
BEGIN ELSE
IF (rst='1') THEN nx_state <= tres;
pr_state <= cero; END IF;
ELSIF (clk'EVENT AND clk='1') THEN WHEN tres =>
pr_state <= nx_state; contador <= "11";
END IF; IF alto = '1' THEN
END PROCESS; nx_state <= tres;
-------------------------------------------------- ELSE
PROCESS (pr_state) nx_state <= cero;
BEGIN END IF;
CASE pr_state IS END CASE;
WHEN cero => END PROCESS;
contador <= "00"; END state_machine;
IF alto = '1' THEN -------------------------------------------------
nx_state <= cero;
U1(I0/CLK) U1
1 23 d1
I0/CLK IO0
rst 2 22
I1 IO1
ALTO 3 21
I2 IO2
R1 R2 4
I3 IO3
20
10K 10K 5 19
I4 IO4
6 18
I5 IO5
7 17
I6 IO6
8 16
I7 IO7
9 15
I8 IO8
rst 10
11
I9 IO9
14 d0
d1
d0
rst I10
13
I11
ALTO AM22V10
ALTO