Beruflich Dokumente
Kultur Dokumente
1.
2.
3.
4.
5.
6.
7.
8.
toc
Introduccin
Principios de diseo:
Diseo algortmico:
1. Introduccin
Mquinas de
estados finitos
generalizadas
Mquinas de
estados finitos
Algebra de
Boole
Fundamento
terico
toc
Componentes del
procesador
Diseo algortmico
Diseo de transferencia
entre registros
Componentes
combinacionales
Componentes
secuenciales
Tcnicas de diseo
lgico secuencial
Tcnicas de diseo
lgico combinacional
Puertas lgicas y
biestables
Diseo lgico FC
Biblioteca de
componentes
1. Introduccin
Estado2
toc
S2 / Z2
toc
X(t)
Circuito
Circuito
combinacional
combinacional
Estado siguiente (D)
Registro de
estado
1. Introduccin
Mealy
Z(t)
Inicializar
toc
X(t)
Circuito
combinacional
Estado siguiente (D)
Reloj
Circuito
combinacional
Registro de
estado
1. Introduccin
Moore
Inicializar
1. Introduccin
1. Introduccin
toc
1. Introduccin
toc
2. Principios de diseo
toc
2. Principios de diseo
toc
Divide y vencers
En teora de la programacin el trmino divide y
vencers hace referencia a uno de los paradigmas de
programacin ms importante.
2. Principios de diseo
toc
3. Diseo algortmico
Implementacin:
3. Diseo algortmico
toc
Modelo:
E
N
T
R
A
D
A
S
Entradas
de control
Unidad de control
Seales
de estado
Entradas
de datos
Salidas de
control
Seales
de control
Ruta de datos
Salidas
de datos
S
A
L
I
D
A
S
3. Diseo algortmico
3. Diseo algortmico
1. Estudio de la especificacin:
Codificar las seales de control hacia la ruta de datos: cada estado tendr
asociado unos valores de TODAS las seales que controlan los mdulos
complejos (por ejemplo: seal load de los registros).
3. Diseo algortmico
Estudio de la especificacin:
Entiendo completamente el enunciado del problema?
3. Diseo algortmico
Nmero de estados
Necesito ms o menos estados
Cuando se hacen efectivas las seales control
3. Diseo algortmico
Cond
No
toc
3. Diseo algortmico
a=0
S0
y<=1
S0
a=1
S1
toc
a=0
S0
a=1 y b=1
a=1 y b=0
S1
y<=1
S1
S2
y<=1
3. Diseo algortmico
y <=1
a = 1?
si
y <= 1
no
a = 1?
si
b = 0?
si
y <= 1
toc
no
no
3. Diseo algortmico
y <=1
a = 1?
si
y <= 1
no
a = 1?
si
b = 0?
si
y <= 1
toc
no
no
3. Diseo algortmico
Implementacin cannica:
Fundamentos de Computadores (1er cuatrimestre)
Registro de estado + red combinacional.
Ejemplo con n entradas, k variables de estado y m salidas. Para
implementar F y G se necesita un mdulo de n+k variables y m+k salidas.
X(t)
n
F
Registro
de estado
S(t)
k
Z(t)
m
CLK
toc
Existen otras
implementaciones: memoria
ROM, utilizacin de
contadores
Existen otras
implementaciones: memoria
ROM, RTL
3. Diseo algortmico
toc
3. Diseo algortmico
toc
3. Diseo algortmico
Estudio de la especificacin:
Esquema de pasos secuenciales a seguir (algoritmo)
i.
Estado inicial
ii.
Si cambio es 1
Carga paralelo de la clave
Vuelta al estado inicial
iii. Si cambio es 0
Realizar 4 desplazamientos a la derecha (4 ciclos)
Si la clave es correcta: acierto = 1 y volver al punto i.
Si la clave es incorrecta: acierto = 0 y volver al punto iii.
toc
Un comparador
3. Diseo algortmico
reset
Cmo se transforma en un
diagrama ASM
Estado Inicial
1
cambio
Carga Paralelo
Desplaza Derecha
Desplaza Derecha
Desplaza Derecha
Desplaza Derecha
Compara
1
Acierto = 1
toc
iguales
0
Acierto = 0
3. Diseo algortmico
Siempre necesario
reset
Cmo se transforma en un
diagrama ASM
Estado Inicial
1
cambio
Carga Paralelo
Desplaza Derecha
Seal externa
Desplaza Derecha
Desplaza Derecha
Podemos
desplazar y
comparar a la
vez?
Desplaza Derecha
Compara
Seal interna
Diseo como
mquina de Moore
1
Acierto = 1
toc
iguales
0
Acierto = 0
3. Diseo algortmico
P
4
Registro Paralelo
4
Registro Serie
4
reset
cambio
iguales
Comparador
acierto
Ruta de Datos
+
Unidad de Control
toc
end <= 1;
init = 1?
n b_in
a a_in
r 0
no
S0
S1
idle
S2
n = 0?
no
rr+a
nn-1
S3
toc
entity ASM is
port(reset, clk, init: in std_logic;
a_in, b_in: in std_logic_vector (7 downto 0);
end: out std_logic;
r: out std_logic_vector (7 downto 0));
end ASM;
clk
reset
init
controller
control
toc
a_in
b_in
Data_path
end
zero
toc
a_in
b_in
mux_n
load_n
0000
mux_r
aux_n
load_a
reg_n
load_r
= 0?
zero
toc
aux_r
reg_r
reg_a
1
end <= 1;
begin
init = 1?
n b_in
a a_in
r 0
no
S0
S1
idle
S2
n = 0?
no
rr+a
nn-1
S3
toc
when S1 =>
load_a <= 1;
load_n <= 1;
load_r <= 1;
mux_n <= 1;
mux_r <= 1;
NEXT_STATE<=S2;
when S2 =>
if (zero ='1') then
NEXT_STATE<=S0;
else
NEXT_STATE<=S3;
end if;
0000
mux_n
load_n
mux_r
aux_n
load_a
reg_n
load_r
= 0?
aux_r
reg_r
reg_a
1
zero
toc
a_in
b_in
begin
control_aux <= control;
register_a: register_8 port map (clk, reset, load_a, aux_a, reg_a);
aux_a <= a_in;
register_n: register_8 port map (clk, reset, load_n, aux_n, reg_n);
register_r: register_8 port map (clk, reset, load_r, aux_r, reg_r);
r <= reg_r; -- la salida es el valor almacenado en reg_r
with mux_n select aux_n <= (reg_n - 1) when 0, b_in when others;
with mux_r select aux_r <= (reg_r + reg_a) when 0, (others => 0) when others;
zero <=
toc
toc
end <= 1;
init = 1?
n b_in
a a_in
r 0
no
S0
S1
idle
S2
n = 0?
no
rr+a
nn-1
S3
5. Diseo RTL
problema algortmico.
Se describe el circuito final como un conjunto
de registros y unidades funcionales. Se indica
en cada ciclo qu registros y qu unidades
funcionales se estn utilizando.
Podramos decir que as funciona la CPU.
toc
5. Diseo RTL
Ciclo 0
Ciclo 1
Ciclo 2
Ciclo 3
toc
B C
D E
*
+
5. Diseo RTL
toc
5. Diseo RTL
Reutilizar hardware
Siempre est realizando clculos => gran consumo
de potencia
toc
5. Diseo RTL
Ciclo 0
Ciclo 1
Ciclo 2
RA
RB
RC
RD
RS1
RR
RS2
*
RM
Ciclo 3
+
RS3
toc
RE
5. Diseo RTL
toc
process (cuenta)
begin
case cuenta is
when 0 =>
load_RA<=1;
load_RB<=1;
load_RC<=1;
load_RD<=1;
load_RE<=1;
load_RS3<=1;
load_RS1<=0;
load_RS2<=0;
load_RR<=0;
load_RM<=0;
end process;
-- + COMPONENTES SUMADORES, RESTADOR Y MULTIPLICADOR
-- + CONTADOR MDULO 4
5. Diseo RTL
Comparticin de registros
Minimizar nmero de registros en la ruta de datos.
Comparticin de conexiones
Minimizar el nmero de conexiones en la ruta de
datos.
toc
5. Diseo RTL
Ciclo 0
Ciclo 1
Ciclo 2
RA
RB
RC
RD
RS1
RR
RS2
*
RM
Ciclo 3
+
RS3
toc
RE
5. Diseo RTL
Algoritmo
Determinar tiempo de vida de la variable.
Conjunto de estados en los que la variable est viva.
5. Diseo RTL
S0
NO hacen falta 10 registros!!!
RA
RB
RC
RD
RE
RS1
RR
RS2
RM
RS3
toc
S1
S2
X
X
5. Diseo RTL
toc
5. Diseo RTL
Grafo de compatibilidad
Vrtices = variables.
Arista: compatibilidad entre variables
Aristas de incompatibilidad
Aristas prioritarias (opcional). Incluye etiqueta s/d
UFs que usan ambos nodos
toc
5. Diseo RTL
RA
RS
1
RB
RR
RS
3
RC
RD
RE
toc
R
M
RS
2
5. Diseo RTL
RA
RS
1
RB
RR
RS
3
RC
RD
RE
toc
R
M
RS
2
5. Diseo RTL
RA/RS1
RB/RR
RC
RD/RM
*
+
RS3
toc
RE/RS2
5. Diseo RTL
toc
5. Diseo RTL
S0
No hacen falta 3 sumadores
Suma1
Suma2
S1
Suma3
Resta1
Mult1
toc
S2
X
X
X
5. Diseo RTL
Suma
3
Suma
2
Suma
1
toc
5. Diseo RTL
RA/RS1
RB/RR
RC
RD/RM
RE/RS2
+
*
toc
RS3
5. Diseo RTL
toc
6. Mdulos de memoria
toc
6. Mdulos de memoria
toc
S
0
0
1
1
R
0
1
0
1
Q+
Q
0
1
proh.
D Q+
0 0
1 1
J K
0 0
0 1
1 0
1 1
Q+
Q
0
1
Q
T Q+
0 Q
1 Q
Ecuaciones Caractersticas
R-S:
Q+ = S + R Q
D:
Q+ = D
J-K:
Q+ = J Q + K Q
T:
Q+ = T Q + T Q
6. Mdulos de memoria
toc
S
0
0
1
1
R
0
1
0
1
Q(t+)
Q(t)
0
1
proh.
R
Q
6. Mdulos de memoria
capacitacin (reloj).
Ejemplo: S-R con entrada de capacitacin.
S
Q
R
Enable
toc
S
0
0
1
1
R
0
1
0
1
Q(t+)
proh.
1
0
Q(t)
6. Mdulos de memoria
S
Q
R
clk
toc
clk D
0 0
0 1
1 0
1 1
6. Mdulos de memoria
toc
6. Mdulos de memoria
S
S
Q
R
clk
toc
6. Mdulos de memoria
toc
TIPO
siempre
Latch sensible
a nivel
Flipflop flanco de
subida
Flipflop flanco de
bajada
Flipflop Maestroesclavo
6. Mdulos de memoria
toc
Biestable de n-bits
6. Mdulos de memoria
Tipos:
Segn temporizacin
alto
bajo
subida
toc
Segn funcionalidad
bajada
6. Mdulos de memoria
toc
Tipos:
PIPO. Visto con anterioridad
SIPO
6. Mdulos de memoria
Tipos:
PISO
SISO
toc
6. Mdulos de memoria
toc
entity ff is
port (clk: in std_logic;
rst: in std_logic;
d: in std_logic;
q:
out std_logic);
end ff;
architecture rtl of ff is
begin
p_ff: process(clk, rst)
begin
if rst=1 then
d<=0;
elsif (clkevent and clk=1) then
q<=d;
end if;
end process p_ff;
end ff;
6. Mdulos de memoria
entity registro is
port (clk: in std_logic;
rst: in std_logic;
a:
in std_logic_vector(7 downto 0);
b:
out std_logic_vector(7 downto 0));
end registro;
architecture struct of registro is
component ff
port(clk, reset, d: in std_logic;
q: out std_logic);
end component ff;
begin
gen_ff: for i in 0 to 7 generate
u: ff port map(clk => clk,
rst => rst,
d
=> a(i),
q
=> b(i));
end generate gen_ff;
end estructural;
toc
toc
toc
toc
toc
Margen negativo
toc
toc
toc
toc
toc
toc
Tiempos
toc
Lgica
combinacional
registroB
registroA
toc
toc
toc
toc
toc
8. Segmentacin
toc
8. Segmentacin
toc
Tiempo de ciclo
8. Segmentacin
L = n tciclo
1
T =
tciclo
toc
8. Segmentacin
toc
tsetup = 12 ps
tck-q= 70 ps
8. Segmentacin
Ojo: posible
violacin
hold
Es necesario!
toc