J_002-CONTADORjdudududjduwisux6c7eES.pdf

RodriguezLuis2604 9 views 25 slides Jun 25, 2024
Slide 1
Slide 1 of 25
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16
Slide 17
17
Slide 18
18
Slide 19
19
Slide 20
20
Slide 21
21
Slide 22
22
Slide 23
23
Slide 24
24
Slide 25
25

About This Presentation

contador binario


Slide Content

CONTADORES
Ck 1 2 3 4 5 6 7 8 9 10 11 12
Q
0
Q
1
Q
2
CONTADORES ASINCRONOS ASCENDENTE
S
Q
2
J
ck
Q
2
K
R
S
Q
1
J
ck
Q
1
K
R
S
Q
0
J
ck
Q
0
K
R
Vdd
Vdd
Vdd
Las entradas asincronas S y R estan desactivadas -- CI : 0 0 0

CONTADOR ASINCRONO DESCENDENTE
Ck 1 2 3 4 5 6 7 8 9 10 11 12
Q
0
Q
1
Q
2
S
Q
2
J
ck
Q
2
K
R
S
Q
1
J
ck
Q
1
K
R
S
Q
0
J
ck
Q
0
K
R
Vdd
Vdd
Vdd
Las entradas asincronas S y R estan desactivadas -- CI : 0 0 0

CONTADORES SINCRONOS 1
(CONECTAR LAS ENTRADAS ASINCRONAS)
Ck 1 2 3 4 5 6 7 8 9 10 11 12
Q
0
Q
1
Q
2
Q
3
S
Q
3
J
Ck
---- Q
3
K
R
S
Q
2
J
Ck
---- Q
2
K
R
S
Q
1
J
Ck
---- Q
1
K
R
S
Q
0
J
Ck
---- Q
0
K
R
0
1

MODELO VHDL – CONTADOR – ARQUITECTURA
ARCHITECTURE Behavior OF upcount IS
SIGNAL Count : STD_LOGIC_VECTOR (3 DOWNTO 0) ;
BEGIN
PROCESS ( Clock, Resetn )
BEGIN
IF Resetn = ´0´ THEN
Count <= “0000” ;
ELSIF (Clock’EVENT AND Clock = ´1´) THEN
IF E = ´1´ THEN
Count <= Count + 1;
ELSE
Count <= Count ;
END IF ;
END IF ;
END PROCESS ;
Q <= Count ;
END Behavoir ;
LIBRARY ieee ;
USE ieee.std_logic_1164.all ;
USE ieee.std_logic_unsigned.all ;
ENTITY upcount IS
PORT ( Clock, Resetn, E : IN STD_LOGIC ;
Q : OUT ST D_LOGIC_VECTOR(3 DOWNTO 0) ) ;
END upcount ;

MODELO VHDL - CONTADOR
J
Q
Q
K
SE
T
CL
R
J
Q
Q
K
SE
T
CL
R
J
Q
Q
K
SE
T
CL
R
J
Q
Q
K
SE
T
CL
R
E
Clock
Resetn
Este contador es identico al anteriormente visto, solo que hemos agregado una
compuerta adicional con la funcion de establecer una entrada de habilitacion E.
Se muestra el circuito de un contador ascendente de 4 bit, (de la diapositiva
anterior) con una entrada reset Resetn, y una entrada de habilitación, E. En el
cuerpo de la arquitectura los FFs en el contador estan representados por una señal
denominada Count(recordemos que una señal puede almacenar información y
representan conexiones o terminales físicos en el circuito) La sentencia process
especifica un reset asíncrono de Countsi Resten = 0. La clausula ELSIF
especifica que en el flanco positivo del Clock, si E = 1, la cuenta es incrementada ..
Si E = 0, el código explícitamente asigna Count <= Count. Las salidas Q estan
asignadas al valor de Countal final del código

Figure 7.55
Code for a down-counter
LIBRARY ieee ;
USE ieee.std_logic_1164.all ;
ENTITY downcnt IS
GENERIC ( modulus : INTEGER := 8 ) ;
PORT ( Clock, L, E : IN STD_LOGIC ;
Q : OUT INTEGER RANGE 0 TO modulus-1 ) ;
END downcnt ;
ARCHITECTURE Behavior OF downcnt IS
SIGNAL Count : INTEGER RANGE 0 TO modulus-1 ;
BEGIN
PROCESS
BEGIN
WAIT UNTIL (Clock'EVENT AND Clock = '1') ;
IF E = '1' THEN
IF L = '1' THEN
Count <= modulus-1 ;
ELSE
Count <= Count-1 ;
END IF ;
END IF ;
END PROCESS;
Q <= Count ;
END Behavior ;
MODULO
PROGRAMABLE

Figure 7.54
A four-bit counter with parallel load, using INTEGER signals
LIBRARY ieee ;
USE ieee.std_logic_1164.all ;
ENTITY upcount IS
PORT ( R : IN INTEGER RANGE 0 TO 15 ;
Clock, Resetn, L : IN STD_LOGIC ;
Q : BUFFER INTEGER RANGE 0 TO 15 ) ;
END upcount ;
ARCHITECTURE Behavior OF upcount IS
BEGIN
PROCESS ( Clock, Resetn )
BEGIN
IF Resetn = '0' THEN
Q <= 0 ;
ELSIF (Clock'EVENT AND Clock = '1') THEN
IF L = '1' THEN
Q <= R ;
ELSE
Q <= Q + 1 ;
END IF;
END IF;
END PROCESS;
END Behavior;
PROGRAMABLE

CONTADORES SINCRONOS 2 - UP
D Q
Ck
Q
D Q
Ck
Q
D Q
Ck
Q
D Q
Ck
Q
ENABLE
CLOCK
Q
0
Q
1
Q
2
Q
3
CARRY
SI enable =1
D
0
= Q
0
= 1 Q
0
D
1
= Q
1
Q
0
D
2
= Q
2
Q
1
. Q
0
D
3
= Q
3
Q
2
. Q
1
. Q
0

CONTADOR DE CARGA PARALELA
D Q
Ck
Q
D Q
Ck
Q
D Q
Ck
Q
D Q
Ck
Q
ENABLE CLOCK
Q
0
Q
1
Q
2
Q
3
CARRY
LOAD
D
0
D
1
D
2
D
3

CONTADOR MODULO 6 –M : 6
Enable
D0 Q0
D1
D2 Q1
Load Q2
Clock
1
0
0
0
Clock
Cuando comienza el Ck – 5 si bien es cierto que en Load hay un 1, dicha
carga no se hace efectiva hasta que ingresa el Ck – 6. Alli los Qi = 0
Ck 1 2 3 4 5 6 7 8 9 10 11 12
Q0
Q1
Q2

DISEÑO CONTADOR CRECIENTE M=5
MODULO: N DE ESTADOS POR LOS QUE ATRAVIESA EL CONTADOR
n = CANTIDAD DE FLIP-FLOP NECESARIOS PARA EL DISEÑO
1) CANTIDAD DE FLIP-FLOP n = 3
2) DIAGRAMA DE ESTADOS 2exp (n) > M
EST
PRES
Qt
EST.
FUT
Qt + 1
ENT
J
K
0
0
0
X
0
1
1
X
1
0
X
1
1
1
X
0
TABLA DE ESTADOS

TABLA DE ESTADOS
ESTADO
PRESENTE
ESTADO FUTURO
ENTRADAS DE LOS
FLIP-FLOP
FUNCION
DE
RESET
Q2
Q1
Q0
Q2
Q1
Q0
J2
K2
J1
K1
J0
K0
f
u
0
0
0
0
1
1
1
1
0 0 1
1
0
0
1
1
0 1 0
1
0
1
0
1
0 0 0
1
0
X
X
X
0 1 1
0
0
X
X
X
1 0 1
0
0
X
X
X
0
0
0
1
X
X
X
X
X
X
X
X
1
X
X
X
0
1
X
X
0
X
X
X
X
X
0
1
X
X
X
X
1
X
1
X
0
X
X
X
X
1
X
1
X
X
X
X
0 0 0
0
0
1
1
1
EST
PRES
Qt
EST.
FUT
Qt + 1
ENT
J
K
0
0
0
X
0
1
1
X
1
0
X
1
1
1
X
0
TABLA DE ESTADOS

IMPLEMENTACION
4) SIMPLIFICACION: UN DIAGRAMA PARA CADA ENTRADA JK DE TODOS LOS
F/F, MAS UNA FUNCION RESET (fu).
RESULTADO DE LA SIMPLIFICACIÓN

ALTERNATIVA PARA ESTADOS NO USADOS
LA ALTERNATIVA CONSISTE EN FORZAR AL CONTADOR CUANDO ENTRE EN
UN ESTADO NO USADO A IR POR EJEMPLO AL ESTADO 000 U OTRO
ESTADO
PRESENTE
ESTADO FUTURO
ENTRADAS DE LOS
FLIP-FLOP
Q2
Q1
Q0
Q2
Q1
Q0
J2
K2
J1
K1
J0
K0
0
0
0
0
1
1
1
1
0 0 1
1
0
0
1
1
0 1 0
1
0
1
0
1
0 0 0
1
0
0
0
0
0 1 1
0
0
0
0
0
1 0 1
0
0
0
0
0
0
0
0
1
X
X
X
X
X X X
X
1
1
1
1
0 1
X
X
0
0
X
X
X X
0
1
X
X
1
1
1
X
1
X
0
X
0
X
X
1
X
1
X
1
X
1

CONTADOR UP/DW -M = 5
DIAGRAMA DE ESTADOS
000
001
010
011
111
110
101
100
X = 0
X = 1
X = 0, UP
X = 1, DW
X X X X
1 X 0 X 0 X 1 0 0 0 0 0 1
0 X 0 X 1 X 0 0 0 0 0 1 1
0 X X 1 1 X 0 0 1 0 1 0 1
0 X X 0 X 1 0 1 0 0 1 1 1
X 1 1 X 1 X 0 1 1 1 0 0 1
X 1 0 X 0 X 0 0 0 1 0 0 0
1 X X 1 X 1 1 0 0 0 1 1 0
0 X X 0 1 X 0 1 1 0 1 0 0
0 X 1 X X 1 0 1 0 0 0 1 0
0 X 0 X 1 X 0 0 0 0
J2 K2 J1 K1 J0 K0 Q
2
Q
1
Q
0
Q
2
Q
1
Q
0
X
ENTRADAS FUTURO PRESENTE CONTROL
0 0 1

CONTADOR UP/DW –MAPA K
0 0 0 1 10
X X X X 11
X X X X 01
0 1 0 0 00
10 11 01 00 XQ2
Q1Q0
J2 = XQ1Q0 + XQ1Q0
CONSTRUYENDO EL RESTO DE LOS MAPAS, ENCONTRAMOS:
J1 = XQ2 + XQ0 ; J0 = XQ2 +XQ2 + Q1
K2 = 1; K1 = XQ0 + XQ0 ; K0 = 1
SIGUIENTE PASO LA IMPLEMENTACION Y PRUEBA DE FUNCIONAMIENTO

CONTADOR ANILLO
D Q
Q
D Q
Q
D Q
Q
Start
Clock
Q0 Q1 Qn-1
Set
Reset
N bits
Clock
Q1
Q0
Clear
W0 y0
y1
y2
W1 y3
Q0
Q1
Q2
Q3
Start
Clock
Contador 2 bits Decodificador 2:4
4 bits

CONTADOR JOHNSON
D Q
Q
D Q
Q
D Q
Q
Clock
Q0
Q1
Qn-1
Reset
N bits
Ck
Q
0
Q
1
Q
2
Q
3
CONTADOR JOHNSON - 4 BITS

EJERCICIOS – 1

EJERCICIO -2

Figure 7.55
Code for a down-counter
LIBRARY ieee ;
USE ieee.std_logic_1164.all ;
ENTITY downcnt IS
GENERIC ( modulus : INTEGER := 8 ) ;
PORT ( Clock, L, E : IN STD_LOGIC ;
Q : OUT INTEGER RANGE 0 TO modulus-1 ) ;
END downcnt ;
ARCHITECTURE Behavior OF downcnt IS
SIGNAL Count : INTEGER RANGE 0 TO modulus-1 ;
BEGIN
PROCESS
BEGIN
WAIT UNTIL (Clock'EVENT AND Clock = '1') ;
IF E = '1' THEN
IF L = '1' THEN
Count <= modulus-1 ;
ELSE
Count <= Count-1 ;
END IF ;
END IF ;
END PROCESS;
Q <= Count ;
END Behavior ;

Figure 7.53
Code for a four-bit up-counter
LIBRARY ieee ;
USE ieee.std_logic_1164.all ;
USE ieee.std_logic_unsigned.all ;
ENTITY upcount IS
PORT ( Clock, Resetn, E : IN STD_LOGIC ;
Q : OUT STD_LOGIC_VECTOR (3 DOWNTO 0)) ;
END upcount ;
ARCHITECTURE Behavior OF upcount IS
SIGNAL Count : STD_LOGIC_VECTOR (3 DOWNTO 0) ;
BEGIN
PROCESS ( Clock, Resetn )
BEGIN
IF Resetn = '0' THEN
Count <= "0000" ;
ELSIF (Clock'EVENT AND Clock = '1') THEN
IF E = '1' THEN
Count <= Count + 1 ;
ELSE
Count <= Count ;
END IF ;
END IF ;
END PROCESS ;
Q <= Count ;
END Behavior ;

Figure 7.78a
Code for a two-digit BCD counter
LIBRARY ieee ;
USE ieee.std_logic_1164.all ;
USE ieee.std_logic_unsigned.all ;
ENTITY BCDcount IS
PORT ( Clock : IN STD_LOGIC ;
Clear, E : IN STD_LOGIC ;
BCD1, BCD0 : BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0) ) ;
END BCDcount ;
ARCHITECTURE Behavior OF BCDcount IS
BEGIN
PROCESS ( Clock )
BEGIN
IF Clock'EVENT AND Clock = '1' THEN
IF Clear = '1' THEN
BCD1 <= "0000" ; BCD0 <= "0000" ;
…con’t

Figure 7.78b
Code for a two-digit BCD counter (con’t)
ELSIF E = '1' THEN
IF BCD0 = "1001" THEN
BCD0 <= "0000" ;
IF BCD1 = "1001" THEN
BCD1 <= "0000";
ELSE
BCD1 <= BCD1 + '1' ;
END IF ;
ELSE
BCD0 <= BCD0 + '1' ;
END IF ;
END IF ;
END IF;
END PROCESS;
END Behavior ;

Figure 7.73
Code for a two-bit up-counter with asynchronous reset
LIBRARY ieee ;
USE ieee.std_logic_1164.all ;
USE ieee.std_logic_unsigned.all ;
ENTITY upcount IS
PORT ( Clear, Clock : IN STD_LOGIC ;
Q : BUFFER STD_LOGIC_VECTOR(1 DOWNTO 0) ) ;
END upcount ;
ARCHITECTURE Behavior OF upcount IS
BEGIN
upcount: PROCESS ( Clock )
BEGIN
IF (Clock'EVENT AND Clock = '1') THEN
IF Clear = '1' THEN
Q <= "00" ;
ELSE
Q <= Q + '1' ;
END IF ;
END IF;
END PROCESS;
END Behavior ;