Está en la página 1de 11

Registros

D0 Q0 D0 Q0
D Q D Q
LE

D1 Q1 D1 Q1
D Q D Q
LE

D2 Q2 D2 Q2
D Q D Q
LE
Sincrónico
D3 Q3
D3 Q3
D Q
D Q
LE
PL PE

reloj
Tipo Latch

Cap 10 - Registros 1

reloj

Sincrónico de 4
PE

Q0
D Q

bits con entrada


D0

de habilitación de
Q1

D1
D Q
carga paralelo

Q2
D Q
D2

Q3
D Q
D3

Cap 10 - Registros 2

1
Conversor paralelo-serie
multiplexor

A0 A0
A1 A1
D0
D Q I0
LE I1 salida serie
O
I2
D1
D Q I3
LE

D2
D Q
LE

D3
D Q
LE
PL
Cap 10 - Registros 3

Latch direccionable de 4 bits


D (entrada serie) Q0
D Q
LE

Q1
D Q
LE
decodificador
Q2
LE
EN D Q
Q0 LE
A0
Q1
A0 Q3
A1 Q2 D Q
A1
Q3 LE
Cap 10 - Registros 4

2
Registro de Desplazamiento
Q0 Q1 Q2
0 1 2 3
SI SO (Q3)
D Q D Q D Q D Q

reloj

pulsos de reloj SI Q0 Q1 Q2 Q3
recibidos
0 1 0 1 0 1
1 0 1 0 1 0
2 1 0 1 0 1
3 1 1 0 1 0
4 1 1 0 1

Cap 10 - Registros 5

Registro de desplazamiento
Bimodo
M

MUX MUX MUX MUX


A A A A
SI
I0 I0 I0 I0 SO
D Q D Q D Q D Q
O O O O
I1 I1 I1 I1

reloj

desplazar (M=0) y retener (M=1)

Cap 10 - Registros 6

3
Registro de desplazamiento
Bidireccional
M

SOL SIL

MUX MUX MUX MUX

A A A A
SIR
I0 I0 I0 I0 SOR
D Q D Q D Q D Q
O O O O
I1 I1 I1 I1

reloj

Cap 10 - Registros 7

Carga paralelo sincrónica


D0 D1 D2 D3

PE

MUX MUX MUX MUX


A A A A
SI
I0 I0 I0 I0 SO
D Q D Q D Q D Q
O O O O
I1 I1 I1 I1

reloj

Cap 10 - Registros 8

4
Contador en anillo módulo 4
Registro de despl.
1000 0100
Q0

Q1
SI
Q2
reloj
0001 0010
Q3
(a) (b)

Registro de desplaz. Registro de desplaz.


Q0 Q0

Q1 Q1

SI Q2 SI Q2
reloj reloj
Q3

Arranque automático Cap 10 - Registros 9

Contadores Johnson
Estado Q0 Q1 Q2 Q3 Decodificación
0 0 0 0 0 Q0’ Q3’
1 1 0 0 0 Q0 Q1’
2 1 1 0 0 Q1 Q2’
3 1 1 1 0 Q2 Q3’
4 1 1 1 1 Q0 Q3
5 0 1 1 1 Q0’ Q1
6 0 0 1 1 Q1’ Q2
7 0 0 0 1 Q2’ Q3

Cap 10 - Registros 10

5
Contadores Johnson Módulo 8
Registro de despl.

Q0 0000 1000 1100 1110


Q1
SI
Q2
reloj
0001 0011 0111 1111
Q3

• todos los flip flops están en 0


• todos los flip flops están en 1
• los primeros flip flops están en 0 pero los últimos están en 1
• los primeros flip flops están en 1 pero los últimos están en 0

Cap 10 - Registros 11

Contadores Johnson Módulo 8 Con


arranque automático
Registro de desplazamiento
SI
reloj

PE
0 D0 Q0
0 D1 Q1
0 D2 Q2
0 D3 Q3

Cap 10 - Registros 12

6
Contadores Johnson Módulo 7

Registro de desplaz.
Q0 0000 1000 1100 1110
Q1
SI
Q2
reloj
0001 0011 0111
Q3

Cap 10 - Registros 13

Reg 8
LIBRARY ieee ;
USE ieee.std_logic_1164.all ;

ENTITY reg8 IS
PORT ( D : IN STD_LOGIC_VECTOR(7 DOWNTO 0) ;
Resetn, Clock : IN STD_LOGIC ;
Q : OUT
STD_LOGIC_VECTOR(7 DOWNTO 0) ) ;
END reg8 ;

ARCHITECTURE Behavior OF reg8 IS


BEGIN
PROCESS ( Resetn, Clock )
BEGIN
IF Resetn = '0' THEN
Q <= "00000000" ;
ELSIF Clock'EVENT AND Clock = '1' THEN
Q <= D ;
END IF ;
END PROCESS ;
Cap 10 - Registros 14
END Behavior ;

7
Regn
LIBRARY ieee ;
USE ieee.std_logic_1164.all ;
ENTITY regn IS
GENERIC ( N : INTEGER := 8 ) ;
PORT ( R : IN STD_LOGIC_VECTOR(N-1 DOWNTO 0) ;
Rin, Clock : IN STD_LOGIC ;
Q : OUT STD_LOGIC_VECTOR(N-1
DOWNTO 0) ) ;
END regn ;

ARCHITECTURE Behavior OF regn IS


BEGIN
PROCESS
BEGIN
WAIT UNTIL Clock'EVENT AND Clock = '1' ;
IF Rin = '1' THEN
Q <= R ;
END IF ;
END PROCESS ; Cap 10 - Registros 15
END Behavior ;

Shift
LIBRARY ieee ;
USE ieee.std_logic_1164.all ;
LIBRARY lpm ;
USE lpm.lpm_components.all ;

ENTITY shift IS
PORT ( Clock : IN STD_LOGIC ;
Reset : IN STD_LOGIC ;
Shiftin, Load : IN STD_LOGIC ;
R : IN STD_LOGIC_VECTOR(3 DOWNTO 0) ;
Q : OUT STD_LOGIC_VECTOR(3 DOWNTO 0) ) ;
END shift ;

ARCHITECTURE Structure OF shift IS


BEGIN
instance: lpm_shiftreg
GENERIC MAP (LPM_WIDTH => 4, LPM_DIRECTION => "RIGHT")
PORT MAP (data => R, clock => Clock, aclr => Reset,
load => Load, shiftin => Shiftin, q => Q ) ;
END Structure ;
Cap 10 - Registros 16

8
Shift 4
LIBRARY ieee ;
USE ieee.std_logic_1164.all ;

ENTITY shift4 IS
PORT ( R : IN STD_LOGIC_VECTOR(3 DOWNTO 0) ;
Clock : IN STD_LOGIC ;
L, w : IN STD_LOGIC ;
Q : BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0) ) ;
END shift4 ;

ARCHITECTURE Behavior OF shift4 IS


BEGIN
PROCESS
BEGIN
WAIT UNTIL Clock'EVENT AND Clock = '1' ;
IF L = '1' THEN
Q <= R ;
ELSE
Q(0) <= Q(1) ;
Q(1) <= Q(2);
Q(2) <= Q(3) ;
Q(3) <= w ;
END IF ;
END PROCESS ; Cap 10 - Registros 17
END Behavior ;

Shift 4 - 2
LIBRARY ieee ;
USE ieee.std_logic_1164.all ;

ENTITY shift4 IS
PORT ( R : IN STD_LOGIC_VECTOR(3 DOWNTO 0) ;
L, w, Clock : IN STD_LOGIC ;
Q : BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0) ) ;
END shift4 ;

ARCHITECTURE Structure OF shift4 IS


COMPONENT muxdff
PORT ( D0, D1, Sel, Clock : IN STD_LOGIC ;
Q : OUT STD_LOGIC ) ;
END COMPONENT ;
BEGIN
Stage3: muxdff PORT MAP ( w, R(3), L, Clock, Q(3) ) ;
Stage2: muxdff PORT MAP ( Q(3), R(2), L, Clock, Q(2) ) ;
Stage1: muxdff PORT MAP ( Q(2), R(1), L, Clock, Q(1) ) ;
Stage0: muxdff PORT MAP ( Q(1), R(0), L, Clock, Q(0) ) ;
END Structure ;

Cap 10 - Registros 18

9
Shift 4 - 3
LIBRARY ieee ;
USE ieee.std_logic_1164.all ;

ENTITY shift4 IS
PORT ( R : IN STD_LOGIC_VECTOR(3 DOWNTO 0) ;
Clock : IN STD_LOGIC ;
L, w : IN STD_LOGIC ;
Q : BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0) ) ;
END shift4 ;

ARCHITECTURE Behavior OF shift4 IS


BEGIN
PROCESS
BEGIN
WAIT UNTIL Clock'EVENT AND Clock = '1' ;
IF L = '1' THEN
Q <= R ;
ELSE
Q(3) <= w ;
Q(2) <= Q(3) ;
Q(1) <= Q(2);
Q(0) <= Q(1) ;
END IF ;
END PROCESS ; Cap 10 - Registros 19
END Behavior ;

LIBRARY ieee ;
Shift n
USE ieee.std_logic_1164.all ;

ENTITY shiftn IS
GENERIC ( N : INTEGER := 8 ) ;
PORT ( R : IN STD_LOGIC_VECTOR(N-1 DOWNTO 0) ;
Clock : IN STD_LOGIC ;
L, w : IN STD_LOGIC ;
Q : BUFFER STD_LOGIC_VECTOR(N-1 DOWNTO 0) ) ;
END shiftn ;

ARCHITECTURE Behavior OF shiftn IS


BEGIN
PROCESS
BEGIN
WAIT UNTIL Clock'EVENT AND Clock = '1' ;
IF L = '1' THEN
Q <= R ;
ELSE
Genbits: FOR i IN 0 TO N-2 LOOP
Q(i) <= Q(i+1) ;
END LOOP ;
Q(N-1) <= w ;
END IF ;
END PROCESS ; Cap 10 - Registros 20
END Behavior ;

10
Registros en los
microprocesadores

Cap 10 - Registros 21

Registros en los
microprocesadores

Cap 10 - Registros 22

11

También podría gustarte