Tema 8. Circuitos secuenciales de Propósito general: REGISTROS

Anuncio
Registros y Contadores 1
Tema 8. Circuitos secuenciales de Propósito general: REGISTROS Y
CONTADORES
Una colección de dos o más biestables D con una entrada común se conoce
como un registro. Los registros se usan para almacenar una serie de bits
relacionados, como un byte (8 bits) de una computadora.
La figura muestra un registro de 3 bits. La palabra A[0-2] solo aparece en
la salida Q[0-2], si se produce el disparo del biestable, mediante el flanco
de subida del reloj CLK:
A0
A1
A2
CLK
Q
D
CLK
Q
D
Q
CLK
Q
Q0
Q
D
Q
CLK
Q1
Q2
Como vemos este circuito “registra” el dato de la entrada y lo transmite a la
salida solo cuando se le da la orden. La transmisión del dato se hace de
forma paralela.
Registros de Desplazamiento
Es un registro que ‘registra’ y ‘desplaza’ la información. La figura
siguiente presenta un registro de desplazamiento a la derecha de 4 bits con
carga serie:
Salida de Datos Paralelo
Entrada de
Datos Serie
A
D
CLR
CLK
Q
B
D
Q
C
D
Q
D
D
Q
CLK Q
CLK Q
CLK Q
CLK Q
CLR
CLR
CLR
CLR
Salida de
Datos Serie
Registros y Contadores 2
Veamos el funcionamiento del circuito anterior:
La señal de borrado (CLR) coloca a los biestables en el estado 0. Cada vez
que llega un flanco de subida de la señal de reloj (CLK), cada biestable
‘captura’ lo que hay en su entrada, o sea, lo que hay en el biestable anterior,
con lo que la información se va desplazando a la derecha.
Un ejemplo: Vamos a registrar y desplazar la palabra de 4 bits 0101.
Esta sería la secuencia de funcionamiento del circuito:
CLR = 0
CLR = 1 / 1er Pulso de CLK
CLR = 1 / 2º Pulso de CLK
CLR = 1 / 3er Pulso de CLK
CLR = 1 / 4º Pulso de CLK
Salidas
ABCD
0000
1000
0100
1010
0101
La palabra 0101 ha sido cargada en el registro, de hecho la tenemos
disponible en las salidas paralelo usando 4 pulsos de reloj. Para que
tuviéramos toda la palabra disponible en la salida serie, debemos esperar 3
pulsos más:
CLR = 1 / 4º Pulso de CLK
CLR = 1 / 5º Pulso de CLK
CLR = 1 / 6º Pulso de CLK
CLR = 1 / 7º Pulso de CLK
Salidas Serie
D
1
0
1
0
La palabra se ha cargado en el registro bit a bit, a esto se le denomina carga
serie.
Registros y Contadores 3
Registro de Despalazamiento con carga paralelo
Un registro de este tipo carga todos los bits al mismo tiempo, con lo que no
es necesario esperar muchos pulsos de reloj para obtener la información.
El siguiente circuito es un registro de desplazamiento de 4 bits de carga
paralelo y desplazamiento a la derecha:
Salida de Datos Paralelo
A
Carga de
Datos Paralelo
D
C
B
A
J
PR
CLK
B
J
Q
PR
CLK
Q
K CLR
J
Q
PR
CLK
Q
K CLR
D
C
J
Q
PR
CLK
Q
K CLR
Q
Q
K CLR
CLR
CLK
Los datos se cargan por el PRESET de cada biestable (se trata de una
entrada asíncrona). Veamos un ejemplo de cómo se realiza el registro y el
desplazamiento de un dato.
Vamos a cargar la palabra 0110:
Esta es la secuencia de funcionamiento
Salidas
ABCD
CLR = 0
0000
CLR = 1
0110
er
CLR = 1 / 1 Pulso de CLK
0011
CLR = 1 / 2º Pulso de CLK
1001
er
CLR = 1 / 3 Pulso de CLK
1100
CLR = 1 / 4º Pulso de CLK
0110
Se puede observar, que el dato se carga de forma asíncrona, y que antes del
primer pulso del reloj, el dato ya está registrado; lo que se hace de forma
síncrona es el desplazamiento a la derecha. Como se ve, se produce una
circulación de la palabra digital, de ahí que se conozcan estos registros
como recirculantes.
Registros y Contadores 4
Registro de Desplazamiento Universal
Se trata de un circuito integrado, que dispone de un registro de
desplazamiento, que permite carga serie, carga paralela, desplazamiento a
izquierda y a derecha, mediante el uso de unas señales de control.
La figura muestra un Registro de Desplazamiento Universal de 4 bits
(74194).
A
B
C
D
Carga
Paralelo
Carga serie, despl. derecha
Carga serie, despl. izquierda
Reloj
Borrado
SRG4
QA
QB
QC
QD
Salida
Paralelo
DSR
DSL
CLK
CLR
S0 S1
Control de
modo
Modo de operación
Mantenimiento
Despl. Izquierda
Despl. Derecha
Carga paralelo
S0
0
0
1
1
S1
0
1
0
1
El funcionamiento de este dispositivo es similar a los descritos
anteriormente; cabe hacer notar que cuando se selecciona la operación de
desplazamiento a la derecha el bit que se carga (entrada: DSR) queda
registrado en la posición A (salida: QA), mientras que si seleccionamos la
operación de desplazamiento a la izquierda, el bit que se carga (entrada:
DSL) queda registrado en la posición D (salida: QD).
Registros y Contadores 5
CONTADORES
El nombre de contador se usa para designar cualquier circuito secuencial
que cuente m estados en un solo ciclo de funcionamiento. El número m de
estados que cuenta se conoce como módulo del contador. Nuestro interés
se centrará en los contadores binarios, aquellos que realizan una cuenta en
binario de un número determinado de estados.
Por ejemplo, veamos un contador de módulo-8 (mod-8)
Este circuito cuenta 8 estados, con lo que necesita 3 bits, a cada pulso de
reloj, avanza en la cuenta de estados:
1
CLK
EN
Q
T
Q
1
EN
Q
T
Q
1er Pulso de CLK
2º Pulso de CLK
3er Pulso de CLK
4º Pulso de CLK
5º Pulso de CLK
6º Pulso de CLK
7º Pulso de CLK
8º Pulso de CLK
1
CBA
000
001
010
011
100
101
110
111
000
EN
Q
T
Q
000
001
110
111
Se le suele llamar A este tipo de contador contador de rizado
Un contador en general puede contar con una entrada que le permita contar
tanto adelante como hacia atrás, incluso con entrada de inhibición que
detenga la secuencia de conteo, y por último con un registro que permita
establecer un estado inicial a partir del cuál comienza la cuenta.
Registros y Contadores 6
Vamos a diseñar un contador síncrono binario que cuente de 0 a 7 y sea
reversible. Emplearemos biestables JK y circuitos lógicos SSI o MSI.
Comencemos con la tabla de transición:
Ent Estado presente Estado futuro
A/D qc qb qa QC QB QA
0
0
0
0
0
0
1
0
0
0
1
0
1
0
0
0
1
0
0
1
1
0
0
1
1
1
0
0
0
1
0
0
1
0
1
0
1
0
1
1
1
0
0
1
1
0
1
1
1
0
1
1
1
0
0
0
1
0
0
0
1
1
1
1
0
0
1
0
0
0
1
0
1
0
0
0
1
1
0
1
1
0
1
0
1
1
0
0
0
1
1
1
1
0
1
1
0
0
1
1
1
0
1
0
1
1
1
1
1
1
1
0
Jc
0
0
0
1
X
X
X
X
1
0
0
X
X
X
X
X
Entrada biestables
Kc Jb Kb Ja
X
0
X
1
X
1
X
X
X
X
0
1
X
X
1
X
0
0
X
1
0
1
X
X
0
X
0
1
1
X
1
X
X
1
X
1
X
0
X
X
X
X
1
1
1
1
X
1
1
1
X
1
0
0
X
X
0
X
1
X
0
X
0
1
Ka
X
1
X
1
X
1
X
1
X
1
X
X
X
1
1
X
De la tabla se obtienen las funciones combinacionales que excitarán cada
biestable, pudiéndose realizar con decodificadores de 4 a 16 líneas:
Ja = Ka = 1
Jb = Kb = Σm(1,3,5,7,8,10,11,12,14)
Jc = Kc = Σm(3,7,8,11,12)
QA
QB
QC
A/D
GND
4/16 0
1
2
3
0
4
5
3
6
7
8
9
10
11
12
13
14
EN 15
J
VCC
CLK
Q
Q
K
J
CLK
Q
QB
QB’
Q
QC
Q
QC’
Q
K
J
CLK
K
CLK
QA
QA’
Registros y Contadores 7
Diseño de Sistemas Secuenciales Síncronos con Registros
1. Codificación en binario natural y uso de un decodificador:
Supongamos el siguiente diagrama de flujo y la asignación de estados
0/0
1/1 D
0/1
0/0
A
1/0
C
1/0
B
Estados
A
B
C
1/1
D
Q1
0
0
1
1
Q0
0
1
0
1
0/1
Usaremos los biestables D que “contiene” el registro universal. Se
comienza observando en que estados internos cada una de las variables Q1
y Q0 toman el valor 1, o sea, cuando se activan. Suponiendo X la entrada y
Z la salida:
Q0 se activará cuando se llegue a los estados B y D; al estado B se llega
desde A con entrada 1 (término AX); al estado D se llega desde C con
entrada 0 (término CX’) y desde el propio D con entrada 0 (término DX’),
así la expresión booleana de Q0 será:
Q0n+1 = AX + CX’ + DX’
Q1 se activará cuando se llegue a los estados C y D; al estado C se llega
desde B con entrada 0 (término BX’) y desde el propio C con entrada 1
(término CX), así la expresión booleana de Q1 será:
Q1n+1 = BX’ + CX + CX’ + DX’ = BX’ + C + DX’
De la misma manera se puede obtener Z como:
Z = AX’ + DX + CX + BX’
Teniendo en cuenta que el registro contiene biestables D: Qn+1 = D
D0 = AX + CX’ + DX’
D1 = BX’ + C + DX’
Registros y Contadores 8
A continuación implementemos el circuito (excepto la salida). La última
etapa la forman el registro (en este caso de 2 bits) y un decodificador de 2
bits:
CLK
A
X
SRG
C
X’
Q0
1D
D
X’
C’
B
X’
Q1
GND
2/4 0
1
2
3
EN
A’
B’
C’
D’
2. Codificación mediante un código de uno entre n (un FF por estado).
Este proceso de diseño es aún más sistemático y permite diseñar más
rápidamente el sistema pero se deben usar más biestables (uno por cada
variable de estado interno). Basándonos en el diagrama de flujo anterior:
Estados
A
B
C
D
Q3
1
0
0
0
Q2
0
1
0
0
Q1
0
0
1
0
Q0
0
0
0
1
CLK
A
X’
D
X
ECUACIONES:
Q3n+1 = AX’ + DX + BX
Q2n+1 = AX
Q1n+1 = BX’ + CX
Q0n+1 = CX’ + DX’
B
X
A
X
B
X’
C
X
C
X’
D
X’
SRG
1D
Q3 = A
Q2 = B
Q1 = C
Q0 = D
Registros y Contadores 9
Diseño de sistemas secuenciales síncronos usando Contadores
En los diagramas de flujo de los sistemas secuenciales existen pasos de un
estado a otro (como los contadores) y pasos al propio estado (como si el
contador “parase”). Todas las posibilidades en un diagrama de flujo pueden
ser cubiertas usando contadores de manera apropiada.
El contador síncrono que usaremos para nuestros ejemplos tendrá una
entrada de reloj, una entrada de reset (R) que permita situar al contador en
el estado inicial, una entrada de cuenta y no carga (M1=0) y no cuenta y
carga en paralelo (M1=1) y n entradas de carga paralelo. Para ver el
método de diseño nos basaremos en el diagrama de flujo siguiente:
BA/Z
a
XX/0
XX/1
X0/0
R CTR
M1
h
XX/X
b
XX/1
X1/1
g
c
n
1X/1
0X/0
D
Q
n
e
d
XX/0
XX/1
f
Debemos generar entonces las entradas D y la señal M1.
Comenzaremos deduciendo el número de variables de estado Q que nos
hacen falta para describir los estados. Este será número de biestables que
contenga el contador. Debe cumplirse que se necesitan k biestables para n
estados tal que 2k ≥ n. La asignación de los códigos correspondiente a cada
estado debe realizarse de manera el número de saltos entre estados que no
tengan asignados códigos consecutivos sea mínimo.
Estado
A
B
C
D
Q2
0
0
0
0
Q1
0
0
1
1
Q0
0
1
0
1
Estado
E
F
G
H
Q2
1
1
1
1
Q1
0
0
1
1
Q0
0
1
0
1
Registros y Contadores 10
La tabla de estados que debemos realizar debe contener: las entradas, el
estado presente, el estado futuro, M1 (no carga-0 o carga-1), el estado a
cargar si no cuenta y la salida:
Entrada
B
A
X
X
X
0
X
1
0
X
1
X
X
X
X
X
X
X
X
X
X
X
Estado Presen.
q2 q1 q0
0
0
0
0
0
1
0
0
1
0
1
0
0
1
0
0
1
1
1
0
0
1
0
1
1
1
0
1
1
1
Estado Futuro Carga Carga Estado
Q2 Q1 Q0 M1 D2 D1 D0
0
0
1
0
X
X
X
0
1
0
0
X
X
X
1
1
0
1
1
1
0
0
1
1
0
X
X
X
1
0
0
1
1
0
0
1
0
1
1
1
0
1
1
0
1
0
X
X
X
0
0
0
1
0
0
0
1
1
1
0
X
X
X
0
0
0
0
X
X
X
Sal
Z
0
0
1
0
1
0
1
1
1
0
Ya solo queda deducir D2, D1, D0, M1 y Z por el método que se quiera:
D2 = q2’
D1 = q1’q2’
D0 = q0q1
M1 (B,A,q2,q1,q0) = Σm(3,5,9,11,13,18,19,21,25,26,27,29)
Z (B,A,q2,q1,q0) = Σm(4,5,6,9,12,13,14,18,20,21,22,25,26,28,29,30)
El sistema quedaría como la figura indica. El circuito combinacional que
implementa M1 y Z se realizará a modo de ejercicio en clase
Reset
R CTR
M1
CLK
D0
A
B
1D
Q0
D1
Q1
D2
Q2
Q0
Q1
Q2
A
B
M1
Z
CIRCUITO
PARA
DISEÑAR
Descargar