Documente Academic
Documente Profesional
Documente Cultură
1.1.- Introduccin:
Introduccin: Mquinas
Mquinasde
deestado
estadoalgortmico.
algortmico.
1.2.- Unidad de procesamiento de datos (Ruta de datos).
1.3.- Controladores. Implementacin de un controlador.
1.4.- Control cableado.
1.5.- Control microprogramado palabra de control.
1.6.- Respuesta condicional de controladores.
datos
Registros,
reg. operativos
CLK
op.code
CLK
UNIDADES DE
PROCESO Y
CONTROL
Memorias
circuitos
aritmeticos
buses / mux.
entradas de
control
salidas de
estado
salidas de
control
entradas de
condicion
codigo de
operacion
SECUENCIADOR
UNIDAD
DE
PROCESO
UNIDAD
DE
CONTROL
DIAGRAMAS ASM
Normalmente los circuitos digitales complejos se definen mediante algoritmos, en los que se
especifican una serie de procedimientos y caminos de decisin que, a partir de
micooperaciones elementales, permiten realizar una tarea compleja.
Los algoritmos se representan grficamente mediante diagramas ASM (Algorithmic State
Machines), tambin llamados organigramas:
Caja de estado:
Entrada
Nombre
Entrada
IDLE
000
R0
RUN
Salida
Salida
Entrada
Salida 0
Salida
Salida 1
Entrada
Condicin
de 1 bit
Entrada
Salida 0
Salida 1
Condicin
de n bits
Salida 2n-1
DIAGRAMAS ASM
Un bloque ASM consiste en una caja de estado y todas las cajas de decisin y de salida condicional
conectadas entre su salida y los caminos de entrada a la misma caja de estado o a otras.
Ejemplo:
Estado START,Q0/CLRA
AVAIL
0/0
Salida
IDLE
10/1
Salida
Salida
11/1
MUL0
MUL1
DIAGRAMAS ASM
TEMPORIZACIN DE SEALES
Siguiendo con nuestro ejemplo:
Ciclo:
Entrada
Bloque ASM
CLK
Salida
START
Q0
Estado
Salida
IDLE
IDLE
MUL1
0034
0034
0000
AVAIL
CLRA
Reg A
Salida
Algoritmo:
Multiplicando
Multiplicador
Multiplicador
Producto
Multiplicando
Contador P
Registro B
k bits
n bits
P=0?
Sumador
n bits
INICIO
COUT
n
Unidad de
control
FF C
Multiplicador
n
Registro A
Registro M
n bits
n bits
Pn-1
PP-1
Registro B: BMtndo (asn)
Registro M: MMtdor (asn)
Contador P
Flip-flop C
M0
n
Controles
Operaciones:
Resultado de la operacin
C0
CCOUT
A0
AA+B
Desplazamiento a la dcha de
C, A y M: CAMsr CAM
Registro A
Est. Q3 Q2 Q1 Q0
0
1
2
3
0
0
0
0
0
0
0
0
0
0
1
1
0
1
0
1
4
5
6
7
0
0
0
0
1
1
1
1
0
0
1
1
0
1
0
1
8
9
10
11
1
1
1
1
0
0
0
0
0
0
1
1
0
1
0
1
12
13
14
15
1
1
1
1
1
1
1
1
0
0
1
1
0
1
0
1
P0
PP-1
Q
J
K FF0
Q
P1
Q
J
K FF1
Q
P2
Q
J
K FF2
Q
P3
Q
J
K FF3
CLK
Aadimos una operacin de carga en paralelo sncrona para el nmero n-1:
(n-1)0
(n-1)1
(n-1)2
(n-1)3
Pn-1
PP-1
FF0
CLK
Q
P0
FF1
Q
P1
FF2
Q
P2
FF3
Q
P3
Mtndo3
Mtndo2
Mtndo1
Mtndo0
BMtndo
B3
B2
B1
B0
B3
B2
B1
B0
Mtdor2
Mtdor1
Mtdor0
CAMsr CAM
A0
(bit menos
significativo del
registro A)
MMtdor
Sd D
Rd
FF3
Q
Sd D
Rd
FF2
Q
Sd D
Rd
FF1
Q
Sd D
Rd
FF0
Q
CLK
M3
M2
M1
M0
S3
S2
S1
S0
A0
AA+B
CAMsr CAM
FF
FF3
FF2
FF1
FF0
A3
A2
A1
A0
CLK
INICIO
n-1
Multiplicando
Contador P
k bits
M0
P=0?
INICIO
COUT
Unidad de
control
Sumador
n bits
n
Z
M
Registro B
n bits
FF C
Registro A
n bits
Registro M
n bits
M0
n
Controles
Multiplicador
Resultado de la operacin
SEALES DE CONTROL
n-1
Multiplicando
Contador P
k bits
Registro B
n bits
P=0?
INICIO
INICIO
COUT
Sumador
n bits
Multiplicador
Unidad de
control
FF C
Registro A
n bits
M0
n
Controles
M0
Registro M
n bits
n
Resultado de la operacin
Mdulo
Microperaciones
Controles
Expresiones
Registro A
A
AA+B
CAMsr CAM
Initialize
Load
Shitf_dec
IDLEINICIO
MUL0M0
MUL1
Flip-flop C
C0
CCOUT
Clear_C
Load
IDLEINICIO+MUL1
MUL0M0
Registro M
CAMsr CAM
Shift_dec
MUL1
Initialize
Shift_dec
IDLEINICIO
MUL1
Contador P Pn-1
PP-1
INICIO
INICIO
M0
Est. Sig.
Nombre
Q1Q0
INICIO Z
Q1Q0
IDLE
MUL0
MUL1
IDLE
0 0
0 0
0
1
0 0
0 1
1
1
0
0
0
0
MUL0
0 1
1 0
MUL1
1 0
1 0
0
1
0 1
0 0
0
0
0
0
1
1
1 1
INICIO
Estado actual
Salidas decodificador
INICIO
D
FF0
Z
Los flip-flops se inicializan a
0 a travs de las entradas de
reset directas para que el
sistema empiece a funcionar
en el estado IDLE.
Q
A0
CLK
FF1
A1
O0
DEC O1
O2
O3
IDLE
MUL0
MUL1
Mdulo
Microperaciones
Controles
Expresiones
Registro A
A
AA+B
CAMsr CAM
Initialize
Load
Shitf_dec
IDLEINICIO
MUL0M0
MUL1
Flip-flop C
C0
CCOUT
Clear_C
Load
IDLEINICIO+MUL1
MUL0M0
Registro M
CAMsr CAM
Shift_dec
MUL1
Initialize
Shift_dec
IDLEINICIO
MUL1
Contador P Pn-1
PP-1
Initialize
Clear_C
INICIO
D
FF0
A0
D
CLK
M0
FF1
A1
O0
DEC O1
O2
O3
IDLE
MUL0
MUL1
Shift_dec
Load
Estado
Estado
FF
Salida
Salida
Entrada
1
Salida 0
Salida 1
Salida 0 Salida 1
I
X0,X1,,Xn-1
Entrada
Entrada
X0
X1
Salida 2 -1
n
Xn-1
S0
S1
Sn-1
DEMUX
Entrada
Salida
Salida 0
Salida 1
Salida
Entrada 2
Entrada
Entrada 1
Entrada
Entrada 2
Entrada
Unin:
Entrada 1
Caja de estado:
O0
O1
O2n-1
Salida 0
Salida 1
Salida 2n-1
Entrada
1
Control
Salida 1
Salida 1 Control
IDLE
INICIO
FF
INICIO
MUL0
FF
MUL1
FF
Para que el circuito funcione correctamente, el flip-flop IDLE hay que inicializarlo en 1, y el resto en 0.
INICIO
Microperaciones
Controles
Expresiones
A, Pn-1
AA+B, CCOUT
CAMsr CAM, PP-1
C0
Initialize
Load
Shitf_dec
Clear_C
IDLEINICIO
MUL0M0
MUL1
IDLEINICIO+MUL1
IDLE
FF
INICIO
M0
Initialize
MUL0
D
M
FF
M0
Clear_C
MUL1
FF
Load
Shift_dec
BIFURCACIONES
En ocasiones es necesario ejecutar una serie distinta de microoperaciones en funcin de
uno o varios bits, y despus seguir con una secuencia comn de estados. Para ello se
implementa una bifurcacin en el controlador:
DEMUX
0
FF
D
FF
FF
FF
FF
FF
MUX
D
F1F0
FF
FF
FF
FF
SALTOS CONDICIONALES
A veces es conveniente poder eliminar la ejecucin de una o varias microoperaciones en
funcin de uno o varios bits. Para ello se implementa un salto condicional en el controlador:
CB
FFA
FFB
CC
D
FFC
FFD
D
F
CB
CC
F
D
FFA
FFB
FFC
FFD
BUCLES
Con gran frecuencia se necesita ejecutar varias veces la misma secuencia de
microoperaciones. En vez de repetir los flip-flops que generan dichas secuencias, se puede
implementar un bucle en el controlador:
Contador mdulo N
INIC
TC
I
INICIO
D
FFIDLE
D
Q
FFA
D
Q
FFB
FFC
FFD
Si queremos que la secuencia dada por los flip-flops B y C se repita N veces, ser necesario
utilizar un contador de mdulo N. Habr que inicializarlo cuando el controlador empiece a
funcionar (al activarse la seal INICIO). Se incrementar cada vez que se pase por los
estados del bucle. Al pasar N veces, el contador habr llegado a su ltimo estado y el final
de cuenta TC se hace igual a 1. Por tanto, el controlador abandonar el bucle despus de
haberlo ejecutado N veces.
clk
estado
actual
ROM 32 x 6
A4
D5
A3
D4
clr
Entradas
de
condicion
M0
A2
A1
INICIO
A0
estado
siguiente
D3
Load
D2
Shift_Dec
D1
Clear_C
D0
Initialize
Salidas
de
control
S0
(A3)
M0
(A2)
Z
(A1)
Inicio
(A0)
S1
(D5)
S0
(D4)
Load
(D3)
Shift_
Dec
(D2)
Clear
_C
(D1)
Initial
ize
(D0)
0
1
-
0
1
-
0
1
-
0
0
1
1
0
0
-
0
1
0
0
1
0
-
0
0
0
1
0
0
-
0
0
0
0
1
1
-
0
1
0
0
1
1
-
0
1
0
0
0
0
-
S0
M0
INICIO
Matriz OR
Matriz AND
S1
S0
Load
Shift
_Dec
Clr_C Initialize
S0
M0
INICIO
Vcc
S1
S0
Load
Shift
_Dec
Clr_C Initialize
Generador de la
direccin siguiente
Secuenciador
Registro CAR
Direccin de
control
Entradas de
direccin
ROM
Salidas de datos
Registro CDR
Microinstruccin
Salidas Controles para la
unidad de proceso
Contador
de uInstr.
Y
X
Vcc
3
2
1
0
mux
ROM
16x8
Q3
Q2
Res.
sincr. Q1
Q0
A3
A2
A1
A0
D7
D6
D5
D4
D3
D2
D1
D0
clk
D1
D0
Direccion siguiente
Dir+1
Comentarios
Incondicional
Condicional
salidas
de
control
3
2
1
0
A1 A0
Contador
de uInstr.
D3
D2
D1
D0
mux
P3
P2
P1
P0
Q3
Q2
Q1
Q0
ROM
16x8
A3
A2
A1
A0
Load
D7
D6
D5
D4
D3
D2
D1
D0
salidas
de
control
clk
D3
D2
Direccion siguiente
Dir+1
Tabla[D1:D0]
Comentarios
Incondicional
Condicional
D1,D0: indice de la
tabla de saltos
INICIO
INICIO
M0
M0
INICIO
10
NXTADD1
3 bits
9 8
NXTADD0
2 bits
6 5
4 3
SEL
4 bits
2
CONTUP
M0
Por tanto, el CAR ser un registro de 3 bits, y la ROM tendr una capacidad mnima de 2 3x12 bits.
11
10
NXTADD1
NXTADD0
SEL
CONTUP
Microperaciones
Estado UC
Initialize
Load
Shift_dec
Clear_C
A, Pn-1
AA+B, CCOUT
CAMsr CAM, PP-1
C0
INIT
ADD
MUL1
INIT, MUL1
Cdigo
Microoperaciones
Bit I
0
1
2
3
Smbolo
IT
LD
SD
CC
NXT
00
CARNXTADD0
Estado
DIN
01
DM
10
DZ
11
Z: CAR NXTADD0
Z: CAR NXTADD1
IDLE
INIT
MUL0
ADD
MUL1
Direccin
000
001
010
011
100
Multiplicador
UNIDAD DE
PROCESO
SECUENCIADOR
Producto
CONTUP
ROM
812 bits
INICIO
M0
Direccin
Microoperaciones
IDLE
INICIO: CARINIT
INICIO: CARIDLE
INIT
MUL0
M0: CARADD
M0: CARMUL1
ADD
MUL1
M0
Microprograma simblico:
Microprograma en binario:
Direccin
NXADD1
NXADD0
SEL
CONTUP
Direccin
IDLE
INIT
MUL0
ADD
MUL1
INIT
IDLE
MUL0
MUL1
MUL1
MUL0
DIN
NXT
DM
NXT
DZ
000
001
010
011
100
ADD
IDLE
IT, CC
LD
CC, SD
NXADD1
NXADD0
SEL
CONTUP
001
011
000
000
010
100
100
010
01
00
10
00
11
0000
1001
0000
0010
1100