Sie sind auf Seite 1von 101

toc

1.
2.
3.
4.
5.
6.
7.
8.
toc

Introduccin
Principios de diseo:

Top-down/bottom-up, divide y vencers, iterativo

Diseo algortmico:

Diagrama ASM, unidad de control y ruta de datos

Diseo algortmico en VHDL


Diseo RTL
Elementos de memoria
Temporizacin de sistemas secuenciales
Segmentacin

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

Mealy: Un cambio en la entrada en cualquier instante influye


inmediatamente en la salida.
Z(t) = H ( X(t), S(t) )
S(t+1) = G (X(t), S(t) )
a/b
Estado1

Estado2

Moore: Slo el cambio del estado influye en la salida.


Z(t) = H (S(t) )
S(t+1) = G (X(t), S(t) )
X1
S1 / Z1

toc

S2 / Z2

toc
X(t)
Circuito
Circuito
combinacional
combinacional
Estado siguiente (D)
Registro de
estado

1. Introduccin
Mealy
Z(t)
Inicializar

Estado actual (Q)


Reloj

toc
X(t)
Circuito
combinacional
Estado siguiente (D)

Reloj

Circuito
combinacional

Registro de
estado

1. Introduccin
Moore
Inicializar

Estado actual (Q)


Z(t)

1. Introduccin

La hiptesis de funcionamiento sncrono de


los sistemas secuenciales supone que:

El estado slo cambia una vez por ciclo de reloj y


el cambio es simultneo en todos los bits del
registro de estado.
Tras un cambio de estado las entradas de los bits
del registro de estado tienen tiempo para alcanzar
un valor estable antes del siguiente cambio de
estado.
toc

1. Introduccin

Generar diagrama de estados


Generar las tablas de transicin de
estados y salida
Codificar estados y salida
Obtener ecuaciones de excitacin y
salida
Obtener ecuaciones de estado
siguiente

toc

1. Introduccin

Elegir elementos hardware


Implementar y optimizar
Obtener esquema lgico y anlisis
esttico de tiempos (STA)
Simular
Verificar

toc

2. Principios de diseo

Diseo up-down y bottom-up


Cmo nos acercamos al problema?
Diseamos primero los componentes ms
sencillos y los unimos para crear componentes
ms complicados (bottom-up)
Diseamos el comportamiento del circuito a alto
nivel y cada vez vamos acercndonos ms al
diseo hardware (up-down)
Diseo algortmico.

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.

ste implica la resolucin recursiva de un problema


dividindolo en dos o ms sub-problemas de igual tipo o
similar. El proceso contina hasta que stos llegan a ser lo
suficientemente sencillos como para que se resuelvan
directamente.

Podemos aplicar la misma metodologa en hardware


Simplificando el problema original al dividirlo.
Es mucho ms fcil y eficiente solucionar problemas
pequeos.

2. Principios de diseo

toc

Iterativo: trata de resolver un problema mediante


aproximaciones sucesivas a la solucin, empezando
desde una estimacin inicial
Deseamos obtener un circuito con un determinado tiempo
de ciclo.
Deseamos obtener un circuito con una determinado
consumo de potencia.

Partiremos de una solucin inicial obtenida segn la


seccin anterior (diseo algortmico) e iremos
modificando los componentes y/o unidad de control
para conseguir los objetivos de rendimiento.

3. Diseo algortmico

Modo de especificacin e implementacin de

sistemas digitales, que permite sistematizar y


automatizar en gran medida su construccin.
Parte siempre de una especificacin en la que
el comportamiento del sistema se describe en
forma de un algoritmo:
Cmo calcular la salida en funcin de la entrada.

Implementacin:

Unidad de Control y Ruta de Datos.


toc

3. Diseo algortmico
toc

Sistemas secuenciales sncronos.


Comportamiento definido IMPLCITAMENTE
No se especifica el valor de Z sino el modo de
calcularlo: el algoritmo.

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

Definicin del sistema


Especificar: entradas y salidas, funcin, bloques disponibles.

Diseo del algoritmo

Obtener conjunto ordenado y finito de operaciones.


Modelo de mquina de estados generalizada.

Definicin de la arquitectura del sistema


Determinar entradas, salidas y seales internas.

Diseo de la ruta de datos (unidad de proceso)


Diseo de la unidad de control
Ensamblado (de U.P y U.C.) y verificacin
toc

3. Diseo algortmico

1. Estudio de la especificacin:

Esquema de pasos secuenciales a seguir (algoritmo)


Posible HW a utilizar (mdulos especficos complejos)

2. Creacin de un diagrama ASM: partiendo de las conclusiones del


3.

apartado 1, crear un diagrama que cumpla las especificaciones.


Diseo de la unidad de control:

Codificar cada uno de los estados del ASM


Codificar el cambio de estado
Mediante seales internas de control
Mediante seales externas de control

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).

4. Diseo de la ruta de datos:


toc

Interconectar las seales de datos externas e internas a los mdulos.


Interconectar las seales de control (obtenidas en el apartado 3) a los
mdulos de la ruta de datos.

3. Diseo algortmico

Estudio de la especificacin:
Entiendo completamente el enunciado del problema?

Esquema de pasos secuenciales a seguir


(algoritmo)
Cumple las especificaciones?
Puede simplificarse?

Posible HW a utilizar (mdulos especficos


complejos)
Aadir este HW me obliga a replantear el punto anterior?
toc

3. Diseo algortmico

Creacin de un diagrama ASM: partiendo de las


conclusiones del apartado anterior

Nmero de estados
Necesito ms o menos estados
Cuando se hacen efectivas las seales control

Cundo se carga un dato en un registro


Cundo deja de contar un contador
Cundo es correcta una comparacin

Estoy realizando un diseo Moore, Mealy o una


mezcla
toc

3. Diseo algortmico

Forma grfica de representar el algoritmo.


Elementos:
Caja de estado: asignaciones y operaciones simultneas.

Caja de decisin: bifurcacin condicional con 2 posibles salidas.

Cond

No

Caja de salida condicional: asignaciones que se realizan cuando se cumple una


condicin (Mealy).

Bloque ASM: una caja de estado con red de cajas de


decisin y de salida condicional.

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

Registro de estado y red combinacional


Implementacin cannica.
Uso de ROMs y PLAs en redes secuenciales en las que:
Estado siguiente y salida dependen de subconjuntos diferentes de las
variables.
Si ocurre esto, ambas funciones son independientes y se pueden codificar por
separado de manera MUCHO ms simple.

Estado siguiente slo depende de una variable de entrada en cada


estado actual.

La ROM o PLA resultante no es tan grande.

Contador y red combinacional


Si en muchos casos S(t+1) = S(t)+1
Registro de desplazamiento y red combinacional
Permite optimizar ciertas operaciones (e.g., acceso selectivo a los bits
de una palabra a travs de una mscara).
Registro de desplazamiento realimentado.
Registro de desplazamiento no realimentado.

toc

3. Diseo algortmico

Utilizando los conceptos de diseo algortmico disear


un sistema que sea capaz de reconocer una clave.
El sistema tendr dos modos de funcionamiento:
Cambiar clave: En este modo se puede introducir la nueva
clave (4 bits) en un ciclo de reloj.
Introducir clave: en este modo se introduce la clave, un bit
por cada ciclo y se compara con la clave guardada:
En caso de acierto se pone la seal acierto a 1 y se vuelve al estado
inicial (decidir si se introduce o se cambia la clave).
En caso de fallo se pone la seal acierto a 0 y el sistema volvera a
pedir de nuevo que se introduzca la clave (bit a bit).

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.

Posible HW a utilizar (mdulos especficos complejos)


2 registros, uno en modo carga paralelo y otro en modo carga serie.

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

Unidad de Control seales de control

iguales

Comparador

acierto

Ruta de Datos
+
Unidad de Control

toc

4. Diseo algortmico en VHDL

end <= 1;

ASM multiplicador : sumar n


veces
a = a_in;
n = b_in;
r = 0;
while (n!=0) {
r = r + a;
n = n - 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

4. Diseo algortmico en VHDL

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

4. Diseo algortmico en VHDL

architecture estructural of ASM is


component controller
port(clk, reset, init: in std_logic;
zero: in std_logic;
control: out std_logic_vector(4 downto 0);
end: out std_logic);
end component controller;
component data_path
port(clk, reset: in std_logic;
a_in, b_in: in std_logic_vector(7 downto 0);
control: in std_logic_vector(4 downto 0);
zero: out std_logic;
r: out std_logic_vector(7 downto 0));
end component data_path;

signal zero: std_logic;


signal control: std_logic_vector(4 downto 0);

toc

4. Diseo algortmico en VHDL

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

4. Diseo algortmico en VHDL


toc

La mquina de control tiene 4 estados

La seal zero indica internamente cuando se ha


terminado la multiplicacin

architecture behavioral of controller is


type T_STATE is (S0, S1, S2, S3);
signal STATE, NEXT_STATE: T_STATE;
signal control_aux: std_logic_vector(4 downto 0);
alias load_a : std_logic is control_aux(0);
alias load_n : std_logic is control_aux(1);
alias load_r : std_logic is control_aux(2);
alias mux_n : std_logic is control_aux(3);
-- mux_n = 1 for external input
alias mux_r : std_logic is control_aux(4);
-- mux_r = 1 for external input

4. Diseo algortmico en VHDL

end <= 1;
begin

init = 1?

control <= control_aux;


SYNC_STATE: process(clk,reset)
begin
if reset ='1' then
STATE<=S0;
elsif clk'event and clk='1' then
STATE<= NEXT_STATE;
end if;
end process SYNC_STATE;

n b_in
a a_in
r 0

no

S0

S1

idle
S2
n = 0?
no
rr+a
nn-1
S3

toc

4. Diseo algortmico en VHDL


toc

COMB: process(STATE, init, zero)


begin
load_a <= 0;
load_n <= 0;
load_r <= 0;
mux_n <= 0;
mux_r <= 0;
fin <= 0;
case STATE is
when S0 =>
fin <=1;
if (init='1') then
NEXT_STATE<=S1;
else
NEXT_STATE<=S0;
end if;

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;

4. Diseo algortmico en VHDL


toc

Declaracin de componentes de la ruta de datos:


architecture estructural of ruta_datos is
-- 8 bit register
component register_8
port (clk, reset, load: in std_logic;
A: in std_logic _vector(7 downto 0);
B: out std_logic _vector(7 downto 0));
end component register_8;
signal control_aux: std_logic_vector(4 downto 0);
alias load_a : std_logic is control_aux(0);

alias mux_r : std_logic is control_aux(4);


signal reg_a, reg_n, reg_r: std_logic_vector(7 downto 0);
signal aux_a, aux_n, aux_r: std_logic_vector(7 downto 0);

4. Diseo algortmico en VHDL

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

4. Diseo algortmico en VHDL

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

1 when reg_n = 0 else 0;

4. Diseo algortmico en VHDL


toc

Podemos simplificar esta codificacin

obteniendo el mismo resultado HW tras el


proceso de sntesis?
S, pero hay que ser muy cuidadosos

4. Diseo algortmico en VHDL

Nuevas seales para los registros antes de la definicin de la arquitectura:

architecture behavioral of ASM is


-- Sin componentes
type T_STATE is (S0, S1, S2, S3);
signal T_STATE, NEXT_STATE: T_STATE;
signal reg_a, reg_n, reg_r: std_logic_vector(N-1 downto 0);
signal aux_a, aux_n, aux_r: std_logic_vector(N-1 downto 0);

El proceso SYNC_STATE tiene la misma descripcin.


El antiguo process COMB, que codificaba la funcin de salida y la funcin de
transicin de estados puede ser modificado en otros 2 process que evitan
tener que instanciar componentes y su control correspondiente.
case STATE
when S0 =>
when s1 =>

toc

if init =1 then NEXT_STATE <= S0;


else NEXT_STATE <= S1;

4. Diseo algortmico en VHDL


toc

end <= 1;

Este proceso codifica la actualizacin de los registros


(componentes con comportamiento sncrono):

SYNC_REG: process(clk, reset, STATE)


begin
if reset = '1' then
reg_a <= (others => 0);
reg_n <= (others => 0);
reg_r <= (others => 0);
elsif clk'event and clk = '1' then
if STATE = S1 then
reg_a <= aux_a;
reg_n <= aux_b;
reg_r <= aux_r;
-- This is equivalent to set load=1 in S1
elsif STATE = S3 then
reg_n <= aux_n;
reg_r <= aux_r;

init = 1?

n b_in
a a_in
r 0

no

S0

S1

idle
S2
n = 0?
no
rr+a
nn-1
S3

4. Diseo algortmico en VHDL


toc

Este proceso codifica la funcin de salida y los multiplexores (elementos combinacionales)


ASYNC_REG: process (STATE, inicio, reg_a, reg_n, reg_r)
begin
end <= 0;
when S2 =>
r <= (others => 0);
-- STATE idle
aux_a <= (others =>0);
when S3 =>
aux_r <= (others =>0);
aux_n <= (others =>0);
case STATE is
when S0 =>
end <= 1;
r <= reg_r;
when S1 =>
aux_a <= a_in;
aux_n <= b_in;
aux_r <= (others => 0);

aux_n <= reg_n - 1;


aux_r <= reg_r + reg_a;
end case;

5. Diseo RTL

El diseo RTL es la solucin natural a un

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.

En los siguientes ejemplos vamos a crear


cdigo VHDL a partir de un diseo RTL.

toc

5. Diseo RTL

Ciclo 0
Ciclo 1
Ciclo 2
Ciclo 3

toc

B C

D E

*
+

5. Diseo RTL
toc

Implementacin rpida en VHDL


process (clk)
begin
wait until clkevent and clk = 1;
S1 <= A + B;
R <= C D;
S2 <= E + S3;
M <= S1*R;
S3 <= M + S2;
end process;

5. Diseo RTL

La solucin anterior es rpida pero no


permite:

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

Implementacin ESTRUCTURAL en VHDL

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 unidades funcionales


Minimizar nmero de U.F. en la ruta de datos.

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.

Agrupar variables con tiempos de vida disjuntos y


asignarles un mismo registro.
Agrupacin con distintos criterios: p.e. minimizar el
nmero de registros,

Algoritmo del vrtice izquierdo (left-edge algorithm)


toc

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

Compartir RA con RS1 o con RM ?


Compartir RB con RS2 o con RM ?

5. Diseo RTL

Dependiendo de la asignacin cambia el


nmero de MUX en la ruta de datos.
Asignacin ptima?

Algoritmo basado en grafo de compatibilidad

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

UFs que generan ambos nodos

5. Diseo RTL

RA

RS
1

RB

RR
RS
3

RC

RD

RE

toc

R
M

RS
2

Nota: Para simplificar el esquema no estn dibujadas todas las aristas

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

Igual que los registros (mismo algoritmo), UFs


que se utilizan en ciclos diferentes se pueden
reutilizar.
Adems:
Agrupar UFs sencillas en UFs ms complejas: UFs
multifuncin.
Cundo? UF multifuncin y el coste de conexin es
menor que el coste de las UF sencillas.
Cmo? Algoritmo de particionamiento grafo de
compatibilidad

toc

5. Diseo RTL

S0
No hacen falta 3 sumadores

Suma1

Suma2

S1

Suma3
Resta1
Mult1

toc

S2

X
X
X

5. Diseo RTL

Compartir Suma 3 con Suma1 o Suma 3 con


Suma 2?

Suma
3

Suma
2

Suma
1

toc

5. Diseo RTL

RA/RS1

RB/RR

RC

RD/RM

RE/RS2

+
*

toc

RS3

5. Diseo RTL

Basado en grafo de compatibilidad:


Tabla de uso de conexiones.
Grafo de compatibilidad:
Vrtices son conexiones.
Arista:
Incompatibles: no tienen la misma fuente pero son usadas en
el mismo ciclo.
Prioritarias: tienen una misma fuente o un mismo destino.

toc

6. Mdulos de memoria

Cuando estamos diseando un sistema secuencial unos de los


elementos HW ms importantes son los elementos de
almacenamiento:
Almacenan el estado actual del sistema (mquina de
control).
Almacenan valores intermedios (registros de datos).

El elemento de memoria ms sencillo es el biestable.


Se denomina biestable porque presenta dos nicos
estados estables:
Salida 0
Salida 1

toc

Sirve para almacenar un bit de informacin.

6. Mdulos de memoria
toc

Segn su comportamiento lgico:


S-R
D
J-K
T

Segn su comportamiento temporal:


Latch
Latch sncrono (sensible a nivel)
Flip-flop disparado por flanco
Flip-flop maestro-esclavo

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

Deducidas a partir de diagramas de Karnaugh


para Q(t+1) = Q+ = (Entradas, Q)

6. Mdulos de memoria
toc

La salida cambia cuando cambian las entradas.


Ejemplo 1: S-R (con entradas activas a nivel
alto).

S
0
0
1
1

R
0
1
0
1

Q(t+)
Q(t)
0
1
proh.

R
Q

6. Mdulos de memoria

La salida cambia cuando est activa la seal de

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

Cmo conseguimos que sea un biestable tipo D?

S
Q

R
clk

toc

clk D
0 0
0 1
1 0
1 1

6. Mdulos de memoria

Si usamos latches debemos garantizar que:


El pulso de reloj es ms corto que el retardo del latch.
La entradas se mantienen constantes durante el pulso
de reloj.

Una alternativa es usar FLIP-FLOPs: ms fiables.


Disparados por flanco: la salida slo vara durante la
transicin del reloj (que es la entrada dinmica).
Maestro-esclavo.

toc

6. Mdulos de memoria

Se lee la entrada en un nivel y se modifica la


salida en el contrario.

S
S
Q
R

clk

toc

6. Mdulos de memoria
toc

TIPO

Cundo se muestrean las entradas?

Cundo son vlidas las salidas?

Latch sin reloj

siempre

retardo de propagacin desde el cambio


en la entrada

Latch sensible
a nivel

reloj en alta (Tsetup y Thold a cada lado del eje


de bajada)

retardo de propagacin desde el cambio


en la entrada

Flipflop flanco de
subida

transicin de reloj de baja a alta (Tsetup y Thold


a cada lado del eje de subida)

retardo de propagacin desde flanco de


subida del reloj

Flipflop flanco de
bajada

transicin de reloj de alta a baja (Tsetup y Thold


a cada lado del eje de bajada)

retardo de propagacin desde flanco de


bajada del reloj

Flipflop Maestroesclavo

transicin de reloj de alta a baja (Tsetup y Thold


a cada lado del eje de bajada)

retardo de propagacin desde flanco de


bajada del reloj

6. Mdulos de memoria
toc

Biestable de n-bits

6. Mdulos de memoria

Tipos:
Segn temporizacin

Disparado por nivel

alto

bajo

Disparado por flanco

subida

toc

Segn funcionalidad

bajada

Carga paralelo/Salida paralela-PIPO


Carga serie/Salida paralela-SIPO
Carga paralelo/Salida serie-PISO
Carga serie/Salida serie-SISO

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

architecture rtl of registro is


begin
p_reg: process(rst, clk)
begin
if rst=1 then
b <= (others => 0);
elsif rising_edge(clk) then
b <= a;
end if;
end process p_reg;
end rtl;

7. Temporizacin sist. secuenciales

De qu tenemos que preocuparnos?

toc

Una vez que hemos obtenido un posible circuito


(o al mismo tiempo), debemos comprobar que el
circuito funciona correctamente y es eficiente:
Cunto tiempo tarda en obtener el resultado => X ciclos
Cunto tiempo es un ciclo
Todas las seales de control, de datos y el reloj llegan
correctamente en tiempo a su destino ?

7. Temporizacin sist. secuenciales

toc

El reloj determina cundo se actualiza el estado de los


elementos de memoria del sistema.
La hiptesis de funcionamiento sncrono obliga a que la
diferencia en tiempo entre dos flancos consecutivos (positivos
o negativos los dos) sea superior al tiempo necesario para que
los valores de las entradas de los registros sean estables.

7. Temporizacin sist. secuenciales


toc

Tiempo de set-up (establecimiento)


Tiempo mnimo que la entrada debe permanecer estable ANTES del
suceso del reloj

Tiempo de hold (mantenimiento)


Tiempo mnimo que la entrada debe permanecer estable DESPUS del
suceso del reloj

Tiempo propagacin registro (clk-2-Q)


Tiempo que tarda en propagarse el dato desde la entradas hasta la
salida del registro cuando ocurre el flanco activo de clk.

Tiempo de propagacin combinacional


Tiempo desde que cambian las entradas del circuito combinacional
hasta que se produce un cambio en las salidas. Depende del camino.
Se usa el valor del camino ms lento, denominado camino crtico.

toc

7. Temporizacin sist. secuenciales

toc

7. Temporizacin sist. secuenciales

7. Temporizacin sist. secuenciales

Tomando el clock skew y el clock jitter:

Margen negativo

toc

toc

7. Temporizacin sist. secuenciales

7. Temporizacin sist. secuenciales

toc

Indecisin prolongada en el comportamiento lgico del biestable al


intentar almacenar uno de sus estados estables.
Si existe violacin del tiempo de setup o hold.
Mientras biestable permanece en metaestabilidad sus seales de salida
(, ) estn indefinidas a nivel lgico.
Duracin indeterminada. Probabilidad de permanecer en estado
metaestable sigue una curva decaimiento exponencial controlada por una
constante de tiempo, (coeficiente de resolucin)

7. Temporizacin sist. secuenciales

Da lugar a errores funcionales ya que las seales

toc

metaestables no estn correctamente definidas.

7. Temporizacin sist. secuenciales

Clock skew: sesgo del reloj


Este es un fenmeno que ocurre en los circuitos
secuenciales cuando el reloj no llega al mismo
tiempo a todos los componentes de memoria.

Puede deberse a la longitud del cable, variaciones de


temperatura, capacidades parsitas, imperfecciones
del silicio,

Cuando el tiempo de ciclo es pequeo este

toc

problema se convierte en uno de los ms


importantes a la hora de disear el circuito.

7. Temporizacin sist. secuenciales

Hay dos tipos de clock skew:

toc

Positive skew: el registro que trasmite recibe el


reloj antes que el registro que recibe.
Negative skew: el registro que trasmite recibe el
reloj despus que el registro que recibe.

7. Temporizacin sist. secuenciales

Tiempos

toc

Lgica
combinacional

registroB

registroA

El reloj llega al registroA en 10ns.


El reloj llega al registroB en 15ns.
Cundo sera un problema?

7. Temporizacin sist. secuenciales


toc

El flanco de subida ocurri a los 405 ns


Los primeros biestables empiezan a modificar su valor despus de los 414 ns
Retardo total: 11 ns
Diferencia entre biestables: 2ns

7. Temporizacin sist. secuenciales

Jitter: modificacin no deseada en la periodicidad del

toc

reloj. En otras palabras, es la variacin de los flancos


de reloj respecto de su posicin ideal en el tiempo.

7. Temporizacin sist. secuenciales

toc

Origen: muy variado.


Variaciones en la fabricacin de los osciladores
Ruido en la alimentacin de los PLLs.

Se especifica de tres formas:


Jitter absoluto: diferencia entre la posicin real del flanco de
reloj y su posicin ideal.
Jitter peridico: diferencia entre periodo real de reloj y el
periodo ideal (en realidad, el periodo medio). Es el ms
importante a efectos de STA.
Jitter ciclo-a-ciclo: diferencia en la duracin de dos periodos de
reloj adyacentes.

7. Temporizacin sist. secuenciales

Es necesario tenerlo en cuenta en el anlisis

toc

temporal del circuito porque puede acortar la


duracin del ciclo de reloj.
Especificado como rms o valor pico-a-pico
Se mide la duracin media del ciclo sobre una muestra y se
obtiene su desviacin estndar (rms).

7. Temporizacin sist. secuenciales


toc

Funcionara a una frecuencia de reloj de 1 GHz?


Clock skew: 110 ps
Clock jitter: 20 ps
Anlisis en worst-case fast: -40 C, 1.32V, proceso rpido

toc

7. Temporizacin sist. secuenciales

toc

7. Temporizacin sist. secuenciales

8. Segmentacin
toc

Dividir un circuito en etapas usando FF. Las salidas de FFs de


una etapa proporciona las entradas de la siguiente etapa.

Todas las etapas operan concurrentemente.

8. Segmentacin

toc

Tiempo de ciclo

tciclo > tck q + tcomb + t setup 2 + t skew + t jitter

8. Segmentacin

Latencia (Latency): tiempo para obtener un nuevo resultado


Intervalo de inicializacin (Throughput): tasa de nuevo datos
por unidad de tiempo.

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

Das könnte Ihnen auch gefallen