Está en la página 1de 66

Tema 2

Sistemas Digitales
Contenidos del tema
El nivel RT
Diseo de la unidad de datos
Interconexin mediante buses
Ejemplo: diseo de una calculadora simple
Diseo de la unidad de control:
Descripcin mediante cartas ASM
Descripcin mediante Verilog
Otros ejemplos

2
Nivel RT: circuitos versus sistemas
CIRCUITOS SISTEMAS

0,1 Informacin Palabras de datos XIN


Unidad de ZOUT
x1 z1 Control
Circuito RT (Register
xn zk De conmutacin Nivel/Lenguaje
Combinacional Transfer)
Mquina de estados Instrucciones:
reloj
Funcionalidad X Z
finitos Operaciones
y1 MUX, ALU, , Unidad de
B1 Puertas y biestables Componentes Procesado
registros,
DIN DOUT
Lneas (cables) Conexin Buses
yr
Br X : cualificadores o entradas de control
Combinacional y Z : comandos o salidas de control
Procesado de datos y
reloj x almacenamiento Organizacin D: datos
control
(memoria)

Los sistemas que trataremos sern sncronos y sus biestables sern


todos disparados por el mismo flanco de la misma seal de reloj.
Con frecuencia omitiremos la representacin de la seal de reloj.

3
Nivel RT: Descripcin de componentes
Registro: unidad bsica de almacenamiento de datos

Representacin Representacin
estructural funcional

s1
n Control
S1 S2 .Sm
Operacin a
Nivel RT
D IN
A[n] 000 A DIN
sm D OUT Reloj
001 A0
n
111 otras

4
Nivel RT: Ejemplos de operacin

De escritura De lectura
(secuencial) (combinacional)

Operacin Notacin RT Operacin Notacin RT


Carga en paralelo A DIN Lect. incondicional Dout = [A]
Despl. a izquierdaR A SHL(A,DL) Lect. condicional R: Dout = [A]
Despl. a derecha R A SHR(A,DR)
Incremento AA+1 Funcin del dato Z=1 si [A]=0
Decremento AA-1
Puesta a 0 A0
Puesta a 1 A 11
NOP/Inhibicin AA

5
Nivel RT: Ejemplos de descripcin
Registro universal de n bits

Representacin Representacin
estructural funcional

S1

DIN
n Control
S1 S0
Escritura
A
Lectura
DOUT
S0 A[n] 00 AA
CK DOUT
01 A DIN
n 10
11
A SHR(A,DR)
A SHL(A,DL)
DOUT=[A]

6
Nivel RT: Ejemplos de descripcin
Memoria RAM comercial: RAM 2114

Representacin Representacin
estructural funcional

RAM 1Kx4 2114


Control Escritura Lectura
10 CS R/W RAM D3-0=
A9:0 D 4
3:0
1- RAM RAM HI
CS
01 RAM RAM [RAM(A)]
R/W 00 RAM(A) D3-0 D3-0

7
Nivel RT: Operaciones entre varios
registros

Ejemplos:

X2: A B C
X1: A B
B C
B
=1

X1 W A X2 W A

8
Nivel RT: Estructura general del
sistema digital
Generalizacin: f(x): A G(B, C, )

Unidad de control Unidad de datos


(o unidad de procesado)
RB
- evala f(x) R B
^
circ.
- genera la C comb.
^
secuencia de G()
seales de control WA
W A
^

Ck

9
Nivel RT: Macro y micro -operaciones
Macrooperacin (o instruccin):
Es cada tarea que especifica el usuario y que el sistema realiza
automticamente
En general, el sistema emplea varios ciclos en su ejecucin.
La unidad de control dirige/supervisa la tarea realizada
op):
Microoperacin (
Es cada tarea que el sistema realiza en un nico ciclo de reloj
En general, consiste en una o varias transferencias entre
registros

10
Nivel RT: Ejecucin de una op
Unidad de control Unidad de datos/procesado
RB
- evala f(x) R^ B
circ.
Ciclo K - genera la C comb.
^
f(x): A G(B, C, ) secuencia de
seales de control
G()
WA
W^ A

Ck

Ciclo K
f(x):

Ck:
WA :
RB :
Sal B: HI B0 HI
Sal G: ??? G(B0, C0, ...) ???
A: A0 G(B0, C0, ...)

11
Componentes de la Unidad de Datos
entradas

registros unidades funcionales

Bloque
de
interconexin

salidas

12
Bloque de interconexin: buses
Bus:
en un sistema digital, un bus es un conjunto de
n lneas ordenadas que discurren en paralelo y
transportan informacin (palabras)

B0 n B[n] = B0:n-1

{
n-1:0

BUS B1
Bn-1 n B[n] = B
Bn-1:0
0:n-1

13
Bloque de interconexin: buses
Tipos de salida: Tipos de interconexin:

Estndar (0,1) Unidireccional Dedicados


Fuente

Destino

Triestado (0,1, HI) Bidireccional Compartidos

Fu/De

De/Fu

14
Bloque de interconexin: ejemplo
Se dispone de 4 registros A3,A2,A1,A0 con carga en
paralelo.

A3 A2 A1 A0

Hay que realizar la conexin para la transferencia


AF AD, con F, D {0, 1, 2, 3}

Seleccin de fuente: F1F0


Seleccin de destino: D1D0

15
Bloque de interconexin: ejemplo
Caso 1: registros con salida y entrada separadas

Caso 2: registros con salida y entrada separadas,


salida triestado
Caso 3: registros con un nico bus bidireccional de
salida y entrada

W
R
w W
R

16
Bloque de interconexin: ejemplo
Caso 1: registros con salida y entrada separadas
DEC
Ejemplo, A3 A1
0 D1
2:4 3 AD = A 1
1 2
1 D0 0
1 AF = A3; F1F0 = 1 1
0

0 W 1 W 0 W 0 W
A0 A1 A2 A3
n n n n
[A3]

1 F1 1 0 1 2 3
1 F0 0
n x MUX 4 : 1 Solucin
multiplexada

17
Bloque de interconexin: ejemplo
Caso 2: registros con salida y entrada separadas,
salida triestado
DEC Ejemplo, A3 A1
2:4 3
0 D1 1 2
1
1 D0 0 0

0 W 1 W 0 W 0 W
A0 A1 A2 A
R R R R 3
n n n n
[A3]
DEC
2:4 0 0
1 F1 1 0
1
F0 2 0
1 0
3 1

18
Bloque de interconexin: ejemplo
Caso 3: registros con un nico bus bidireccional de
salida y entrada
DEC Ejemplo, A3 A1
2:4 3
0 D1 1 2
1
1 D0 0 0

0 W 1 W 0 W 0 W
A0 A1 A2 A
R R R R 3

0 0 0 1
DEC
2:4 0
1 F1 1 1
1 F0 2
0
3

19
Diseo de un sistema digital
Metodologa
Paso 1: Comprender claramente las especificaciones del sistema
a disear y definir el conjunto de instrucciones/operaciones.
Los registros que aparecen en la descripcin de las
macrooperaciones son los registros visibles.
Paso 2: Proponer una unidad de datos capaz de ejecutar todas
las operaciones especificadas. Debe incluir los registros visibles.
Paso 3: Describir todos los componentes a nivel RT estructural y
funcional.
Paso 4: Descomponer las macrooperaciones en microoperaciones
para la arquitectura propuesta.
Paso 5: Desarrollar la unidad de control

20
Diseo de una calculadora simple
Paso 1- Especificaciones del sistema a disear:
Se dispone de 2 registros, A y B y se desea poder realizar
cualquiera de las siguientes operaciones:

I1 I0 operacin
I1
00 AA+B I0 A
01 BA+B
B
10 AA-B
11 BA-B

Se han asignado los cdigos de modo que el registro destino se


identifica con I0 y la operacin con I1.

21
Diseo de la unidad de datos de una
calculadora
Paso 2 - Proponemos una arquitectura genrica de un bus
capaz de ejecutar las operaciones especificadas.

IN
RT W WRT
OUT

R Ra
IA IB DAT A W Wa
P1 C1 Rb
R
P0 C0 DAT B W Wb

OUT

WAC IN
W AC
RAC R OUT

22
Diseo de la unidad de datos de una
calculadora
Paso 3 Describimos los componentes a nivel RT
WR AC OUT=
W RT OUT=
IN W IN 00 AC HI
RT OUT W 0 RT [RT] R OUT
AC 01 AC [AC]
1 IN [RT] 10 IN HI
11 IN [AC]

R
DAT X W

C1 C0 OUT=
RW X DAT= IA IB
C1 00 IA + IB
00 X HI C0 01 IA
01 DAT DAT OUT 10 IA IB
10 X [X] 11 IB
11 Proh proh

23
Descripcin Verilog de la unidad de
datos de la calculadora
//declaracin del tipo mdulo correspondiente a RT

module type1 (input W, ck, input [7:0] IN, output reg [7:0] OUT);
always@(posedge ck)
if(W)
OUT<=IN;
endmodule W RT OUT=
IN
RT OUT W 0 RT [RT]
1 IN [RT]
//declaracin del tipo mdulo correspondiente a AC (instanciaremos a un mdulo type1 y
aadiremos lectura condicional)

module type2 (input W, R, ck, input [7:0] IN, output [7:0] OUT);
wire [7:0] internal_bus;
type1 internal_reg(W, ck, IN, internal_bus);
assign OUT = R ? internal_bus : 'bz;
endmodule

internal WR AC OUT=
REG IN
W 00 AC HI
OUT
W IN
R OUT
AC internal bus 01 AC [AC]
R 10 IN HI
11 IN [AC] 24
Descripcin Verilog de la unidad de
datos de la calculadora (con parmetros)
//declaracin del tipo mdulo correspondiente a RT

module type1 #(parameter N=8)


(input W, ck, input [N-1:0] IN, output reg [N-1:0] OUT);
always@(posedge ck)
if(W)
OUT<=IN; W RT OUT=
endmodule IN
RT OUT W 0 RT [RT]
1 IN [RT]

//declaracin del tipo mdulo correspondiente a AC (instanciaremos a un mdulo type1 y


aadiremos lectura condicional)

module type2 #(parameter N=8)


(input W, R, ck, input [N-1:0] IN, output [N-1:0] OUT);
wire [N-1:0] internal_bus;
type1 #(N) internal_reg(W, ck, IN, internal_bus);
assign OUT = R ? internal_bus : 'bz;
endmodule
Internal WR AC OUT=
REG IN
W 00 AC HI
OUT
W IN
R OUT
AC internal bus 01 AC [AC]
R 10 IN HI
11 IN [AC] 25
Descripcin Verilog de la unidad de
datos de la calculadora
//declaracin del tipo mdulo correspondiente a RA y RB, (instanciamos al mdulo type2)

module type3 #(parameter N=8) (input W, R, ck, inout [N-1:0] DAT); R


type2 #(N) internal_register(W,R,ck,DAT,DAT); DAT X W
endmodule
RW X DAT=
00 X HI
01 DAT DAT
10 X [X]
//declaracin del tipo mdulo correspondiente a la ALU
11 Proh proh
module ALU_type #(parameter N=8)
(input C1, C0, input [N-1:0] IA,IB, output reg [N-1:0] OUT);
always@(*)
case({C1,C0})
2'b00: OUT=IA+IB;
2'b01: OUT=IA;
2'b10: OUT=IA-IB;
2'b11: OUT=IB;
C1 C0 OUT=
IA IB
endcase C1 00 IA + IB
endmodule C0 01 IA
OUT 10 IA IB
11 IB
26
Descripcin Verilog de la unidad de
datos de la calculadora
//declaracin de la unidad de procesado de datos

module unidad_datos #(parameter N=8) (input ck,WAC,RAC,WRT,Ra,Rb,Wa,Wb,P0,P1);


wire [N-1:0] common_bus, ALU_out, RT_out;
type1 #(N) RT(WRT,ck,common_bus,RT_out);
type2 #(N) AC(WAC,RAC,ck,ALU_out,common_bus);
type3 #(N) A(Wa,Ra,ck,common_bus);
type3 #(N) B(Wb,Rb,ck,common_bus);
ALU_type #(N) ALU(P1,P0,common_bus,RT_out,ALU_out);
endmodule

type1 IN
type3
RT W WRT
Se han utilizado instancias de los OUT
modulos definidos anteriormente:
type1, type2, type3 y alu_type RT_out
R Ra
IA IB DAT A W Wa
Se han nombrado los buses P1 C1 Rb
R
internos de la unidad: P0 C0 ALU_type DAT B W Wb
RT_out, ALU_out y common_bus
OUT
ALU_out
WAC
W
IN type2 common_bus
RAC AC
R OUT
27
Descomposicin en microoperaciones
Paso 4 Descomponemos las macrooperaciones en
microoperaciones.

Durante la ejecucin de una macrooperacin solo pueden


modificarse los registros ocultos y los registros visibles que
aparezcan como destino en la descripcin de la
macrooperacin.

AA+B BA+B AA-B BA-B


op 1 RT B
op 2 AC A + RT AC A - RT
op 3 A AC B AC A AC B AC

28
Descripcin mediante cartas ASM
Definiciones

CAJA DE ESTADO CAJA DE ACCIN


CAJA DE DECISIN CONDICIONAL
camino de camino de entrada camino de
entrada entrada
smbolo
de estado
vector de
acciones condiciones
S valor valor valor
acciones
1 2 n

camino camino camino


camino de camino de
de de de
salida salida
salida salida salida

29
Descripcin mediante cartas ASM
Definiciones
una y solo una
BLOQUE ASM
caja de estados
CARTA ASM

acciones
grafo orientado
y cerrado que
interconecta
condicin
bloques ASM

condicin acciones

nmero variable de caminos de salida

30
Errores comunes en cartas ASM

31
Consideraciones temporales
El orden de las cajas en un bloque ASM
no implica orden temporal.

Todas las tareas de un bloque ASM se hacen


en un ciclo de reloj

Igual significado lgico

32
Descripcin mediante cartas ASM
Inicio y fin de operacin
estado inicial (NOP)

S0

0
Xs Xs: entrada con la que se
inicia la operacin (Xstart)
1

cuerpo de FIN: salida que indica que


la carta ASM la operacin ha terminado

FIN estado de fin


SF

33
Diseo de la calculadora simple
Organizacin del sistema digital:

I 1 I 0 XS

WAC, RAC U. de datos


U. de control
P1 El usuario especifica la
P0 A operacin proporcionando
WRT el valor de I1, I0 y genera la
Ra,RbWa,Wb B orden de comienzo con XS

FIN

34
Carta ASM de la calculadora S0

0 Xs
AA+B BA+B AAB BA-B
I1I0=00 I1I0=01 I1I0=10 I1I0=11 1
1 RT B unidad S1 RT B

2 AC A + RT AC A - RT de
S2
datos
3 A AC B AC A AC B AC
0 1
I1
AC A+RT AC A-RT
I 1 I 0 XS

WAC, RAC U. de datos S3


U. de control
P1
P0 A 0 1
I0
WRT
A AC B AC
Ra,RbWa,Wb B
SF FIN
FIN

35
Carta ASM de la calculadora
S0 S0

0 Xs 0 Xs
1 1
S1 RT B S1 WRT,Rb

S2 S2 WAC ,Ra
unidad unidad
0 1 0 1
de I1 de I1
datos AC A+RT AC A-RT control P1

S3 S3 RAC

0 1 0 1
I0 I0
A AC B AC Wa Wb

SF FIN SF FIN

36
Descripcin Verilog de la u. de control de
la calculadora
La descripcin cannica de mquinas de estado en HDL
Verilog es un proceso sistemtico

Se utilizar una estructura general del cdigo en la que


hay 2 procesos

Uno de asignacin de siguientes estados

Otro de calculo de siguiente estado y salidas

37
Descripcin Verilog de la u. de control
de la calculadora, estructura general.
module mi_carta_asm(
input LISTA_DE_ENTRADAS,
output reg LISTA_DE_SALIDAS);

// DEFINICIN Y ASIGNACIN DE ESTADOS


parameter LISTA_DE_ESTADOS

// VARIABLES PARA ALMACENAR EL ESTADO PRESENTE Y SIGUIENTE


reg [N:0] current_state, next_state;

// PROCESO DE CAMBIO DE ESTADO


always @(posedge ck or posedge reset)
.......
// PROCESO SIGUIENTE ESTADO Y SALIDA
always @(current_state, LISTA_DE_ENTRADAS)
.......
endmodule

38
Descripcin Verilog de la u. de control de
la calculadora, procedimiento.
En la estructura general hay que completar 4 partes de cdigo:

1. Definicin y asignacin de estados, segn el nmero de estados


utilizaremos ms o menos bits.

2. Definicin de registros para almacenar el estado actual y el


siguiente. Deben ser del mismo tamao en bits que el utilizado
en el punto anterior.

3. Proceso de cambio de estado: siempre es el mismo cdigo

4. Proceso de clculo de siguiente estado y salida: Hay que


rellenar el cdigo correspondiente a la carta ASM

39
Descripcin Verilog de la u. S0

de control de la calculadora 0 Xs
module unidad_control( 1
input ck, XS, I0, I1, reset,
output reg RAC, Rb, Ra, WRT, WAC, Wa, Wb, P1, P0, FIN S1 WRT,Rb
);
parameter S0 = 3'b000, S2
S1 = 3'b001, WAC ,Ra
Asignacin
S2 = 3'b010,
S3 = 3'b011, de estados 0 1
SF = 3'b100; I1
P1
reg [2:0] current_state,next_state;

always @(posedge ck or posedge reset)


begin S3 RAC
if(reset)
current_state <= S0; Proceso de 0 1
else
cambio de I0
current_state <= next_state;
end estado Wa Wb

SIGUE ->
SF FIN

40
Descripcin Verilog de la u. S0

de control de la calculadora 0 Xs
1
S1 WRT,Rb
El proceso de clculo del siguiente estado
y salida se realiza con una nica S2 WAC ,Ra
sentencia CASE
0 1
I1
La sentencia CASE debe contemplar P1
todos los estados de la carta ASM
S3 RAC
Antes de la sentencia CASE se
0 1
recomienda establecer por defecto a cero I0
todas las salidas y next state a S0 Wa Wb

SF FIN

41
Descripcin Verilog de la u.
S0
de control de la calculadora
0 Xs
always @(current_state,I0,I1,XS) 1
begin S1
RAC = 0; WRT,Rb
WAC = 0;
Ra = 0; S2 WAC ,Ra
Rb = 0;
P0 = 0;
Valor por defecto de las salidas
P1 = 0; establecido a cero 0
I1 1
WRT = 0;
Wa = 0; P1
Wb = 0;
FIN = 0;
next_state = S0;
case(current_state) S3 RAC
S0:
if(XS) next_state = S1; 0 1
S1: Estado S0 I0
begin
WRT = 1;
Wa Wb
Rb = 1;
next_state = S2; Estado S1 SF
end
FIN

42
Descripcin Verilog de la u.
S0
de control de la calculadora
S2:
0 Xs
begin
WAC = 1;
1
Ra = 1; Estado S2 S1 WRT,Rb
if(I1)
P1 = 1;
next_state = S3; S2 WAC ,Ra
end
S3: 0 1
begin I1
RAC = 1;
if(I0) P1
Wb = 1;
Estado S3
else
Wa = 1; S3 RAC
next_state = SF;
end
SF: 0 1
I0
FIN = 1; Estado SF
endcase Wa Wb
end
endmodule
SF FIN

43
Diseo de la calculadora simple
Conexin de unidades de datos y de control:
I 1 I 0 XS

WAC, RAC
P1 Unidad
Unidad P0
de de
WRT
control datos
Ra,RbWa,Wb

FIN
module calculadora #(parameter N=8) ( input ck, XS, I0, I1, reset, output FIN);

wire w1,w2,w3,w4,w5,w6,w7,w8,w9;

unidad_datos #(N) ud_calc (.ck(ck),.WAC(w1),.RAC(w2),.WRT(w3),


.Ra(w4),.Rb(w5),.Wa(w6),.Wb(.w7),.P0(w8),.P1(w9));

unidad_control uc_calc(.ck(ck),.reset(reset),.XS(XS),.FIN(FIN),.I0(I0),.I1(I1),
.WAC(w1),.RAC(w2),.WRT(w3),.Ra(w4),.Rb(w5),
.Wa(w6),.Wb(.w7),.P0(w8),.P1(w9));
endmodule

44
Diseo de la unidad de datos de una
calculadora: solucin con 3 buses
Para las mismas especificaciones del ejemplo anterior
proponemos una unidad de datos diferente.

Arquitectura especfica.
IN
B W Wb
OUT
Con esta arquitectura se
IN
A OUT
W Wa necesitan menos registros.

IA IB
P1 C1 W X OUT=
IN
P0 C0 X OUT W 0 X [X]
OUT 1 IN [X]

45
Descripcin Verilog de la u. datos de la
calculadora : solucin con 3 buses
//declaracin del tipo mdulo correspondiente a RA y RB

module type1 #(parameter N=8)


IN (input W, ck, input [N-1:0] IN,
B OUT
W Wb output reg [N-1:0] OUT);
always@(posedge ck)
IN
W if(W)
A OUT
Wa
OUT<=IN;
endmodule

IA //declaracin del tipo mdulo correspondiente a la ALU


IB
P1 C1
P0 module ALU_type #(parameter N=8)
C0
( input C1, C0, input [N-1:0] IA,IB,
OUT
output reg [N-1:0] OUT);
always@(*)
case({C1,C0})
2'b00: OUT=IA+IB;
2'b01: OUT=IA;
2'b10: OUT=IA-IB;
2'b11: OUT=IB;
endcase
endmodule

46
Descripcin Verilog de la u. datos de la
calculadora : solucin con 3 buses
type1
//declaracin de la unidad de procesado de datos

module unidad_datos2 #(parameter N=8)


IN (input ck,Wa,Wb,P0,P1);
B OUT
W Wb
wire [N-1:0] ALU_out, OUT_A, OUT_B;
IN
A W Wa
OUT type1 #(N) A(Wa,ck,ALU_out,OUT_A);
OUT_B
OUT_A type1 #(N) B(Wb,ck,ALU_out,OUT_B);
ALU_type #(N) ALU(P1,P0,OUT_A,OUT_B,ALU_out);
IA IB
P1 endmodule
C1
P0 C0

OUT
ALU_TYPE
ALU_out

47
Carta ASM: solucin con 3 buses
Las macrooperaciones se S0
realizan en un nico ciclo
0
de reloj. Xs
1
S1
IN
B OUT
W Wb
00 11
IN I1I0
A W Wa
OUT
I1 I0 operacin A A+B 01 10 B A-B

IA
00 AA+B B A+B A A-B
IB
P1 C1
P0
01 BA+B
C0

OUT
10 AA-B
SF FIN
11 BA-B

48
Carta ASM: solucin con 3 buses
unidad unidad
S0 S0
de de
0 datos 0 control
Xs Xs
1 1
S1 S1

00 11 00 11
I1I0 I1I0

A A+B 01 10 B A-B Wa 01 10 P1,Wb

B A+B A A-B Wb P1,Wa

SF FIN SF FIN

49
Descripcin Verilog de la u. de control
de la calculadora: solucin con 3 buses
module unidad_control2( S0
input ck, XS, I0, I1, reset,
output reg Wa, Wb, P1, P0, FIN
); 0 Xs
parameter S0 = 2'b00,
S1 = 2'b01, 1
SF = 2'b10; S1
reg [1:0] current_state,next_state;
00 11
always @(posedge ck or posedge reset)
I1I0
begin 01 10 P1,Wb
if(reset) Wa
current_state <= S0;
else Wb P1,Wa
current_state <= next_state;
end

SIGUE ->
SF FIN

50
Descripcin Verilog de la u. de control
de la calculadora: solucin con 3 buses
always @(current_state,I0,I1,XS)
begin S0
P1 = 0;
P0 = 0; 0
Wa = 0; Xs
Wb = 0; 1
FIN = 0;
next_state = S0; S1
case(current_state)
S0: 00 11
if (XS) next_state = S1; I1I0
SIGUE ->
Wa 01 10 P1,Wb

Wb P1,Wa

SF FIN

51
Descripcin Verilog de la u. de control
de la calculadora: solucin con 3 buses
S1:
begin
if(I1==0 && I0==0) S0
Wa = 1;
else if(I1==0 && I0==1)
Wb = 1;
0 Xs
else if(I1==1 && I0==0)
begin
1
P1 = 1; S1
Wa = 1;
end
00 11
else I1I0
begin
P1 = 1; Wa 01 10 P1,Wb
Wb = 1;
end Wb P1,Wa
next_state = SF;
end
SF:
FIN = 1;
endcase
end SF FIN
endmodule

52
Descripcin Verilog (compacta) de la u.
de control de la calculadora: solucin
con 3 buses S 0
module unidad_control2(
input ck, XS, I0, I1, reset,
0 Xs
output reg P0,P1,Wa,Wb,FIN
); 1
parameter S0 = 2'b00,
S1 = 2'b01, S1
SF = 2'b10;

reg [1:0] current_state,next_state; I0 I1


0 1 0 1
always @(posedge ck or posedge reset)
begin
if(reset) Wa Wb P1
current_state <= S0;
else
current_state <= next_state;
end

SIGUE -> SF FIN

53
Descripcin Verilog (compacta)
always @(current_state,I0,I1,XS)
begin
P0 = 0;
P1 = 0;
FIN = 0;
S0
Wa = 0;
Wb = 0; 0
next_state = S0;
Xs
case(current_state) 1
S0:
if(XS) next_state = S1;
S1
S1:
begin
if(I0) I0 I1
Wb = 1; 0 1 0 1
else
Wa = 1;
if(i1) Wa Wb P1
P1 = 1;
next_state = SF;
end
SF:
FIN = 1;
endcase SF FIN
end
endmodule

54
Diseo de la calculadora simple:
solucin con 3 buses
Conexin de unidades de datos y de control:
I 1 I 0 XS

P1
Unidad P0 Unidad
de Wa de
control 2 Wb datos 2

FIN

module calculadora #(parameter N=8) ( input ck, XS, I0, I1, reset, output FIN);

wire w1,w2,w3,w4;

unidad_datos2 #(N) ud_calc (.ck(ck),.P1(w1),.P0(w2),.Wa(w3),.Wb(.w4));

unidad_control2 uc_calc(.ck(ck),.reset(reset),.XS(XS),.FIN(FIN),.I0(I0),.I1(I1),
.P1(w1),.P0(w2),.Wa(w3),.Wb(.w4));
endmodule

55
Diseo de una calculadora con 8 registros

Especificaciones del sistema a disear:


Se dispone de 8 registros (R0, R1, , R7) y se desea
poder realizar cualquiera de las siguientes operaciones:
I1I0 operacin
00 RD RD + RF
10 RD RD - RF
01 R D RF
D,F {0,1,2,,6,7}

D y F vienen determinados por (D2D1D0) y (F2F1F0)

56
Diseo de una calculadora con 8 registros
Arquitectura de la u. de datos:
0
W .
EN W0 .
0 .
W1 W W0
DEC 3:8 1 . R0
W2
D2 2 2 7
W3 R1 W W1
D1 1 3
4 W4 D2-0
D0 0 W5 R2 W W2
5 0
6 W6 22
W7
. . R 3
W W3
7 .
. . R4 W W4

IA IB
. . W W5
P1 C1
7 R5
P0 C0 W6
F2-0 R6 W

W W7
OUT
R7

57
Diseo de una calculadora con 8 registros
Descripcin Verilog de la unidad de procesado

//declaracin de la unidad de procesado de datos

module unidad_datos3 #(parameter N=8) (input ck,W,P0,P1, input [2:0] F,D);

reg [N-1:0] R [7:0];

always@(posedge ck)
if(W)
case({P1,P0})
2b00: R[D] <= R[D] + R[F];
2b01: R[D] <= R[D];
2b10: R[D] <= R[D] - R[F];
2b11: R[D] <= R[F];
endcase
endmodule

58
Diseo de una calculadora con 8 registros
Organizacin del sistema digital:

I 1 I 0 XS D2-0 F2-0

U. de control U. de datos El usuario especifica la


W,P1,P0 R. 1 operacin proporcionando
. el valor de I1, I0, D2-0, F2-0, y
.
genera la orden de
R7
comienzo con XS

FIN

59
Diseo de una calculadora con 8 registros
Carta ASM unidad unidad
de S0 de
S0 datos control
0 Xs
0 Xs
1
1
S1 W
S1
0 1
0 1 I0
I0
1 0
1 0 RD RF
I10
I10
P1 P0,P1
RD RD-RF RD RD+RF

I1I0 operacin FIN


SF
SF FIN
00 RD RD + RF
10 RD RD - RF
01 RD RF
60
Diseo de una calculadora con 8 registros
Carta ASM y descripcin Verilog del controlador
S0 module unidad_control3(
input ck, XS, I0, I1, reset,
output reg P0,P1,W,FIN
0 Xs );
parameter S0 = 2'b00,
1 S1 = 2'b01,
S1 W
SF = 2'b10;

reg [1:0] current_state,next_state;


0 1
I0
always @(posedge ck or posedge reset)
begin
1 0 if(reset)
I10 current_state <= S0;
else
P1 P0,P1
current_state <= next_state;
end

SIGUE ->
SF FIN

61
Carta ASM y descripcin Verilog del controlador

always @(current_state,I0,I1,XS)
begin
P0 = 0;
P1 = 0;
S0 FIN = 0;
W = 0;
next_state = S0;
0 Xs case(current_state)
S0:
1 if(XS) next_state = S1;
S1:
S1 W begin
W = 1;
0 1 if(I0)
I0 begin
P0 = 1;
P1 = 1;
1 0 end
I10 else if (I1)
P1 = 1;
P1 P0,P1
next_state = SF;
end
SF:
FIN = 1;
endcase
SF FIN end
endmodule

62
Diseo de una calculadora con 8 registros
Conexin de unidades de datos y de control:
I 1 I 0 XS D2:0 F2:0

W
Unidad Unidad
P1
de P0 de
control datos

FIN
module calculadora8reg #(parameter N=8) ( input ck, XS, I0, I1, reset, input [2:0] D, F,
output FIN);

wire w1,w2,w3;

unidad_datos3 #(N) ud_calc (.ck(ck),.W(w1),.P0(w2),.P1(w3),.D(D),.F(F));

unidad_control3 uc_calc(.ck(ck),.reset(reset),.XS(XS),.FIN(FIN),.I0(I0),.I1(I1),
.W(w1),.P0(w2),.P1(w3));
endmodule

63
Tcnicas de realizacin de u. de control
Netlist del
Verilog diseo

Herramienta
de
sntesis

Estrategias:
Cableada (como circuito secuencial sncrono)
Un biestable por estado
Microprogramado

64
Ejemplo de uso de la calculadora
Realizacin de la operacin R03R1-R2
Se trata de una operacin ms compleja no incluida en la
tabla de operacin del sistema.
Se puede realizar mediante una secuencia de instrucciones
(nivel ISP)
Instruccin 1: R0R1
Instruccin 2: R0R0 - R2
Instruccin 3: R0R0+R1
Instruccin 4: R0R0+R1

65
Calculadora frente a computador
Similitudes
Podemos resolver problemas complejos a partir de las
instrucciones del sistema mediante programacin (software).
El usuario no necesita ser especialista en la electrnica del
sistema (hardware).
Deficiencias
No hay automatizacin en la ejecucin del programa: cada
vez que se ejecuta una instruccin el usuario debe activar Xs,
esperar la seal de FIN y suministrar la siguiente.
No hay programa almacenado: para ejecutar cada
instruccin el usuario debe proporcionar los valores D2:0 y
F2:0 para cada una de las tres instrucciones.

66

También podría gustarte