View
223
Download
0
Category
Preview:
Citation preview
toc
toc
1. Introducción 2. Principios de diseño:
– Top-down/bottom-up, divide y vencerás, iterativo 3. Diseño algorítmico:
– Diagrama ASM, unidad de control y ruta de datos 4. Diseño algorítmico en VHDL 5. Diseño RTL 6. Elementos de memoria 7. Temporización de sistemas secuenciales 8. Segmentación
toc
Algebra de Boole
Puertas lógicas y biestables
Técnicas de diseño lógico combinacional
Máquinas de estados finitos
Componentes secuenciales
Técnicas de diseño lógico secuencial
Componentes combinacionales
Máquinas de estados finitos generalizadas Diseño de transferencia
entre registros
Diseño lógico ≡ FC
Diseño algorítmico
Fundamento teórico
Biblioteca de componentes
Componentes del procesador
1. In
trod
ucci
ón
toc
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) )
Moore: Sólo el cambio del estado influye en la salida. Z(t) = H (S(t) ) S(t+1) = G (X(t), S(t) )
Estado1 Estado2
a / b
S1 / Z1 S2 / Z2
X1
1. In
trod
ucci
ón
toc
Circ
uito
co
mbi
naci
onal
Regi
stro
de
esta
do
Reloj
X(t)
Z(t)
Inicializar
Estado actual (Q)
Estado siguiente (D)
Circ
uito
co
mbi
naci
onal
Mealy
1. In
trod
ucci
ón
toc
Circ
uito
co
mbi
naci
onal
Regi
stro
de
esta
do
Reloj
X(t)
Z(t)
Inicializar
Estado actual (Q)
Estado siguiente (D)
Moore
Circ
uito
co
mbi
naci
onal
1. In
trod
ucci
ón
toc
La hipótesis de funcionamiento síncrono de los sistemas secuenciales supone que: – El estado sólo cambia una vez por ciclo de reloj y
el cambio es simultáneo 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.
1. In
trod
ucci
ón
toc
Generar diagrama de estados
Generar las tablas de transición de estados y salida
Codificar estados y salida
Obtener ecuaciones de excitación y salida
Obtener ecuaciones de estado siguiente
1. In
trod
ucci
ón
toc
Elegir elementos hardware
Implementar y optimizar
Obtener esquema lógico y análisis estático de tiempos (STA)
Simular
Verificar
1. In
trod
ucci
ón
toc
Diseño up-down y bottom-up ¿Cómo nos acercamos al problema?
– Diseñamos primero los componentes más sencillos y los unimos para crear componentes más complicados (bottom-up)
– Diseñamos el comportamiento del circuito a alto nivel y cada vez vamos acercándonos más al diseño hardware (up-down)
• Diseño algorítmico.
2. P
rinci
pios
de
dise
ño
toc
Divide y vencerás En teoría de la programación el término divide y
vencerás hace referencia a uno de los paradigmas de programación más importante. – Éste implica la resolución recursiva de un problema
dividiéndolo en dos o más sub-problemas de igual tipo o similar. El proceso continúa hasta que éstos llegan a ser lo suficientemente sencillos como para que se resuelvan directamente.
Podemos aplicar la misma metodología en hardware – Simplificando el problema original al dividirlo. – Es mucho más fácil y eficiente solucionar problemas
pequeños.
2. P
rinci
pios
de
dise
ño
toc
Iterativo: trata de resolver un problema mediante aproximaciones sucesivas a la solución, empezando desde una estimación inicial – Deseamos obtener un circuito con un determinado tiempo
de ciclo. – Deseamos obtener un circuito con una determinado
consumo de potencia. Partiremos de una solución inicial obtenida según la
sección anterior (diseño algorítmico) e iremos modificando los componentes y/o unidad de control para conseguir los objetivos de rendimiento.
2. P
rinci
pios
de
dise
ño
toc
Modo de especificación e implementación de sistemas digitales, que permite sistematizar y automatizar en gran medida su construcción. Parte siempre de una especificación en la que
el comportamiento del sistema se describe en forma de un algoritmo: – Cómo calcular la salida en función de la entrada.
Implementación: – Unidad de Control y Ruta de Datos.
3. D
iseño
alg
orítm
ico
toc
Sistemas secuenciales síncronos. Comportamiento definido IMPLÍCITAMENTE
– No se especifica el valor de Z sino el modo de calcularlo: el algoritmo.
Modelo: Unidad de control
Ruta de datos
Entradas de control
Entradas de datos
Salidas de control
Salidas de datos
Señales de control
Señales de estado
E N T R A D A S
S A L I D A S
3. D
iseño
alg
orítm
ico
toc
Definición del sistema • Especificar: entradas y salidas, función, bloques disponibles.
Diseño del algoritmo • Obtener conjunto ordenado y finito de operaciones. • Modelo de máquina de estados generalizada.
Definición de la arquitectura del sistema • Determinar entradas, salidas y señales internas.
Diseño de la ruta de datos (unidad de proceso) Diseño de la unidad de control Ensamblado (de U.P y U.C.) y verificación
3. D
iseño
alg
orítm
ico
toc
1. Estudio de la especificación: – Esquema de pasos secuenciales a seguir (algoritmo) – Posible HW a utilizar (módulos específicos complejos)
2. Creación de un diagrama ASM: partiendo de las conclusiones del apartado 1, crear un diagrama que cumpla las especificaciones.
3. Diseño de la unidad de control: – Codificar cada uno de los estados del ASM – Codificar el cambio de estado
• Mediante señales internas de control • Mediante señales externas de control
– Codificar las señales de control hacia la ruta de datos: cada estado tendrá asociado unos valores de TODAS las señales que controlan los módulos complejos (por ejemplo: señal load de los registros).
4. Diseño de la ruta de datos: – Interconectar las señales de datos externas e internas a los módulos. – Interconectar las señales de control (obtenidas en el apartado 3) a los
módulos de la ruta de datos.
3. D
iseño
alg
orítm
ico
toc
Estudio de la especificación: ¿Entiendo completamente el enunciado del problema?
– Esquema de pasos secuenciales a seguir (algoritmo)
¿Cumple las especificaciones? ¿Puede simplificarse?
– Posible HW a utilizar (módulos específicos complejos)
¿Añadir este HW me obliga a replantear el punto anterior?
3. D
iseño
alg
orítm
ico
toc
Creación de un diagrama ASM: partiendo de las conclusiones del apartado anterior – Número de estados – Necesito más o menos estados – Cuando se hacen efectivas las señales control
• Cuándo se carga un dato en un registro • Cuándo deja de contar un contador • Cuándo es correcta una comparación • …
– Estoy realizando un diseño Moore, Mealy o una mezcla
3. D
iseño
alg
orítm
ico
toc
Forma gráfica de representar el algoritmo. Elementos:
• Caja de estado: asignaciones y operaciones simultáneas.
• Caja de decisión: bifurcación condicional con 2 posibles salidas.
• Caja de salida condicional: asignaciones que se realizan cuando se cumple una condición (Mealy).
• Bloque ASM: una caja de estado con red de cajas de decisión y de salida condicional.
Cond Sí No 3.
Dise
ño a
lgor
ítmic
o
toc
S0 y<=‘1’
S1
S0
S1 y<=‘1’
a=‘0’
a=‘1’
S0
S2 y<=‘1’
a=‘0’
a=‘1’ y b=‘0’
S1
a=‘1’ y b=‘1’ 3. D
iseño
alg
orítm
ico
toc
y <=‘1’
y <= ‘1’
a = ‘1’?
y <= ‘1’
a = ‘1’?
b = ‘0’?
si si
si
no no
no
3. D
iseño
alg
orítm
ico
toc
y <=‘1’
y <= ‘1’
a = ‘1’?
y <= ‘1’
a = ‘1’?
b = ‘0’?
si si
si
no no
no
3. D
iseño
alg
orítm
ico
toc
Implementación canónica: – 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 módulo de n+k variables y m+k salidas.
F Registro de estado
G
n X(t)
k k
CLK
m
Z(t) S(t)
Existen otras implementaciones: memoria
ROM, utilización de contadores …
Existen otras implementaciones: memoria
ROM, RTL …
3. D
iseño
alg
orítm
ico
toc
Registro de estado y red combinacional – Implementación canónica. – 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 más simple.
• Estado siguiente sólo 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 través de una máscara). • Registro de desplazamiento realimentado. • Registro de desplazamiento no realimentado.
3. D
iseño
alg
orítm
ico
toc
Utilizando los conceptos de diseño algorítmico diseñar 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 señal 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 señal acierto a 0 y el sistema volvería a pedir de nuevo que se introduzca la clave (bit a bit).
3. D
iseño
alg
orítm
ico
toc
Estudio de la especificación: – 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 (módulos específicos complejos) – 2 registros, uno en modo carga paralelo y otro en modo carga serie. – Un comparador
3. D
iseño
alg
orítm
ico
toc
Estado Inicial
Carga Paralelo Desplaza Derecha
Desplaza Derecha
Desplaza Derecha
Desplaza Derecha
Compara
Acierto = 1 Acierto = 0
cambio
iguales
reset
1 0
1 0
Cómo se transforma en un diagrama ASM
3. D
iseño
alg
orítm
ico
toc
Estado Inicial
Carga Paralelo Desplaza Derecha
Desplaza Derecha
Desplaza Derecha
Desplaza Derecha
Compara
Acierto = 1 Acierto = 0
cambio
iguales
reset
1 0
1 0
Cómo se transforma en un diagrama ASM
Siempre necesario
Señal externa
Señal interna
¿Podemos desplazar y
comparar a la vez?
Diseño como máquina de Moore
3. D
iseño
alg
orítm
ico
toc
Unidad de Control
reset
cambio
Registro Paralelo Registro Serie
Comparador iguales
P B 4
4 4
acierto
señales de control
Ruta de Datos +
Unidad de Control
3. D
iseño
alg
orítm
ico
toc
ASM multiplicador : sumar n veces
a = a_in; n = b_in; r = 0; while (n!=0) { r = r + a; n = n - 1; }
end <= ‘1’;
n ← b_in a ← a_in r ← ‘0’
init = ‘1’?
idle
n = 0?
no
no
S0
S1
S2
S3
r ← r + a n ← n - 1
4. D
iseño
alg
orítm
ico
en V
HDL
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;
controller
Data_path
clk reset init
end
a_in b_in
r
control zero
4. D
iseño
alg
orítm
ico
en V
HDL
toc
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);
4. D
iseño
alg
orítm
ico
en V
HDL
toc
a_in b_in “000…0”
-
1
+
0 0
aux_n
reg_n reg_a reg_r
aux_r
= 0?
zero
load_a load_r
mux_n mux_r
4. D
iseño
alg
orítm
ico
en V
HDL
load_n
toc
La máquina de control tiene 4 estados – La señal zero indica internamente cuando se ha
terminado la multiplicación
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. D
iseño
alg
orítm
ico
en V
HDL
toc
begin 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; 4.
Dise
ño a
lgor
ítmic
o en
VHD
L
end <= ‘1’;
n ← b_in a ← a_in r ← ‘0’
init = ‘1’?
idle
n = 0?
no
no
S0
S1
S2
S3
r ← r + a n ← n - 1
toc
4. D
iseño
alg
orítm
ico
en V
HDL
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; …
toc
Declaración 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. D
iseño
alg
orítm
ico
en V
HDL
toc
4. D
iseño
alg
orítm
ico
en V
HDL
a_in b_in “000…0”
-
1
+
0
aux_n
reg_n reg_a reg_r
aux_r
zero
load_n load_a load_r
mux_n mux_r
= 0?
toc
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 <= ‘1’ when reg_n = 0 else ‘0’;
4. D
iseño
alg
orítm
ico
en V
HDL
toc
¿Podemos simplificar esta codificación obteniendo el mismo resultado HW tras el proceso de síntesis? – Sí, pero hay que ser muy cuidadosos
4. D
iseño
alg
orítm
ico
en V
HDL
toc
Nuevas señales para los registros antes de la definición 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 descripción. El antiguo process “COMB”, que codificaba la función de salida y la función de
transición de estados puede ser modificado en otros 2 process que evitan tener que instanciar componentes y su control correspondiente.
case STATE when S0 => if init =‘1’ then NEXT_STATE <= S0; else NEXT_STATE <= S1; when s1 => …
4. D
iseño
alg
orítm
ico
en V
HDL
toc
end <= ‘1’;
n ← b_in a ← a_in r ← ‘0’
init = ‘1’?
idle
n = 0?
no
no
S0
S1
S2
S3
r ← r + a n ← n - 1
4. D
iseño
alg
orítm
ico
en V
HDL
Este proceso codifica la actualización de los registros (componentes con comportamiento síncrono):
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; …
toc
4. D
iseño
alg
orítm
ico
en V
HDL
Este proceso codifica la función de salida y los multiplexores (elementos combinacionales) ASYNC_REG: process (STATE, inicio, reg_a, reg_n, reg_r) begin end <= ‘0’; r <= (others => ‘0’); aux_a <= (others =>’0’); 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’);
when S2 =>
-- STATE idle
when S3 =>
aux_n <= reg_n - 1;
aux_r <= reg_r + reg_a;
end case;
toc
El diseño RTL es la solución natural a un problema algorítmico. 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 están utilizando. – Podríamos decir que así funciona la CPU.
En los siguientes ejemplos vamos a crear código VHDL a partir de un diseño RTL.
5. D
iseño
RTL
toc
+ - +
*
+
A B C D E Ciclo 0
Ciclo 1
Ciclo 2
Ciclo 3
5. D
iseño
RTL
toc
Implementación rápida en VHDL process (clk) begin wait until clk’event and clk = ‘1’; S1 <= A + B; R <= C – D; S2 <= E + S3; M <= S1*R; S3 <= M + S2; end process;
5. D
iseño
RTL
toc
La solución anterior es rápida pero no permite: – Reutilizar hardware – Siempre está realizando cálculos => gran consumo
de potencia
5. D
iseño
RTL
toc
+ - +
*
+
Ciclo 0
Ciclo 1
Ciclo 2
Ciclo 3
RA RB RC RD RE
RS1 RR RS2
RM
RS3
5. D
iseño
RTL
toc
Implementación 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 MÓDULO 4
5. D
iseño
RTL
toc
Compartición de unidades funcionales – Minimizar número de U.F. en la ruta de datos.
Compartición de registros – Minimizar número de registros en la ruta de datos.
Compartición de conexiones – Minimizar el número de conexiones en la ruta de
datos.
5. D
iseño
RTL
toc
+ - +
*
+
Ciclo 0
Ciclo 1
Ciclo 2
Ciclo 3
RA RB RC RD RE
RS1 RR RS2
RM
RS3
5. D
iseño
RTL
toc
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.
• Agrupación con distintos criterios: p.e. minimizar el número de registros, …
Algoritmo del vértice izquierdo (left-edge algorithm)
5. D
iseño
RTL
toc
S0 S1 S2
RA X
RB X
RC X
RD X
RE X
RS1 X
RR X
RS2 X X
RM X
RS3 X
NO hacen falta 10 registros!!!
5. D
iseño
RTL
toc
¿Compartir RA con RS1 o con RM …? ¿Compartir RB con RS2 o con RM …? …
5. D
iseño
RTL
toc
Dependiendo de la asignación cambia el número de MUX en la ruta de datos. ¿Asignación óptima?
– Algoritmo basado en grafo de compatibilidad Grafo de compatibilidad
– Vértices = variables. – Arista: compatibilidad entre variables
• Aristas de incompatibilidad • Aristas prioritarias (opcional). Incluye etiqueta s/d
UFs que usan ambos nodos UFs que generan ambos nodos
5. D
iseño
RTL
toc
RA
RB
RC
RD
RE
RS1
RR
RM
RS2
RS3
Nota: Para simplificar el esquema no están dibujadas todas las aristas
5. D
iseño
RTL
toc
RA
RB
RC
RD
RE
RS1
RR
RM
RS2
RS3
5. D
iseño
RTL
toc
+ - +
*
+
RA/RS1 RB/RR RC RD/RM RE/RS2
RS3
5. D
iseño
RTL
toc
Igual que los registros (mismo algoritmo), UFs que se utilizan en ciclos diferentes se pueden reutilizar. Además:
– Agrupar UFs sencillas en UFs más complejas: UFs multifunción.
• ¿Cuándo? UF multifunción y el coste de conexión es menor que el coste de las UF sencillas.
• ¿Cómo? Algoritmo de particionamiento grafo de compatibilidad
5. D
iseño
RTL
toc
S0 S1 S2
Suma1 X
Suma2 X
Suma3 X
Resta1 X
Mult1 X
No hacen falta 3 sumadores
5. D
iseño
RTL
toc
¿Compartir Suma 3 con Suma1 o Suma 3 con Suma 2?
Suma3
Suma2
Suma1
5. D
iseño
RTL
toc
+ -
+ *
RA/RS1 RB/RR RC RD/RM RE/RS2
RS3
5. D
iseño
RTL
toc
Basado en grafo de compatibilidad: – Tabla de uso de conexiones. – Grafo de compatibilidad:
• Vértices 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.
5. D
iseño
RTL
toc
Cuando estamos diseñando un sistema secuencial unos de los elementos HW más importantes son los elementos de almacenamiento: – Almacenan el estado actual del sistema (máquina de
control). – Almacenan valores intermedios (registros de datos).
El elemento de memoria más sencillo es el biestable. – Se denomina biestable porque presenta dos únicos
estados estables: • Salida 0 • Salida 1
– Sirve para almacenar un bit de información.
6. M
ódul
os d
e m
emor
ia
toc
Según su comportamiento lógico: – S-R – D – J-K – T
Según su comportamiento temporal:
– Latch – Latch síncrono (sensible a nivel) – Flip-flop disparado por flanco – Flip-flop maestro-esclavo
Ecuaciones Características R-S: D: J-K: T:
Q+ = S + R Q Q+ = D Q+ = J Q + K Q Q+ = T Q + T Q
S R Q+ 0 0 Q 0 1 0 1 0 1 1 1 proh.
J K Q+ 0 0 Q 0 1 0 1 0 1 1 1 Q
D Q+ 0 0 1 1
T Q+ 0 Q 1 Q
Deducidas a partir de diagramas de Karnaugh para Q(t+1) = Q+ = ƒ(Entradas, Q)
6. M
ódul
os d
e m
emor
ia
toc
La salida cambia cuando cambian las entradas. Ejemplo 1: S-R (con entradas activas a nivel
alto).
S R Q(t+) 0 0 Q(t) 0 1 0 1 0 1 1 1 proh.
R
S
Q
Q
6. M
ódul
os d
e m
emor
ia
toc
La salida cambia cuando está activa la señal de capacitación (reloj). Ejemplo: S-R con entrada de capacitación.
S
R
Q
Enable
Q
6. M
ódul
os d
e m
emor
ia
S R Q(t+) 0 0 proh. 0 1 1 1 0 0 1 1 Q(t)
toc
¿Cómo conseguimos que sea un biestable tipo D?
S
R
Q
Q
D
clk
clk D 0 0 0 1 1 0 1 1
6. M
ódul
os d
e m
emor
ia
toc
Si usamos latches debemos garantizar que: – El pulso de reloj es más corto que el retardo del latch. – La entradas se mantienen constantes durante el pulso
de reloj.
Una alternativa es usar FLIP-FLOPs: más fiables. • Disparados por flanco: la salida sólo varía durante la
transición del reloj (que es la entrada dinámica). • Maestro-esclavo.
6. M
ódul
os d
e m
emor
ia
toc
Se lee la entrada en un nivel y se modifica la salida en el contrario.
S
R
D
clk
S
R
Q
Q
6. M
ódul
os d
e m
emor
ia
toc
TIPO ¿Cuándo se muestrean las entradas? ¿Cuándo son válidas las salidas?
Latch sin reloj siempre retardo de propagación 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 propagación desde el cambio en la entrada
Flipflop flanco de subida
transición de reloj de baja a alta (Tsetup y Thold a cada lado del eje de subida)
retardo de propagación desde flanco de subida del reloj
Flipflop flanco de bajada
transición de reloj de alta a baja (Tsetup y Thold a cada lado del eje de bajada)
retardo de propagación desde flanco de bajada del reloj
Flipflop Maestro-esclavo
transición de reloj de alta a baja (Tsetup y Thold a cada lado del eje de bajada)
retardo de propagación desde flanco de bajada del reloj
6. M
ódul
os d
e m
emor
ia
toc
Biestable de n-bits
≡6. M
ódul
os d
e m
emor
ia
toc
Tipos: – Según temporización
• Disparado por nivel
• Disparado por flanco
– Según funcionalidad
• Carga paralelo/Salida paralela-PIPO • Carga serie/Salida paralela-SIPO • Carga paralelo/Salida serie-PISO • Carga serie/Salida serie-SISO
alto bajo
subida bajada
6. M
ódul
os d
e m
emor
ia
toc
Tipos: – PIPO. Visto con anterioridad – SIPO
6. M
ódul
os d
e m
emor
ia
toc
Tipos: – PISO
– SISO
6. M
ódul
os d
e m
emor
ia
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 (clk’event and clk=‘1’) then q<=d; end if; end process p_ff; end ff;
6. M
ódul
os d
e m
emor
ia
toc
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;
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;
6. M
ódul
os d
e m
emor
ia
toc
¿De qué tenemos que preocuparnos? – Una vez que hemos obtenido un posible circuito
(o al mismo tiempo), debemos comprobar que el circuito funciona correctamente y es eficiente:
• Cuánto tiempo tarda en obtener el resultado => X ciclos • Cuánto “tiempo” es un ciclo • ¿Todas las señales de control, de datos y el reloj llegan
correctamente en tiempo a su destino ?
7. Te
mpo
rizac
ión
sist.
secu
enci
ales
toc
El reloj determina cuándo se actualiza el estado de los elementos de memoria del sistema.
La hipótesis de funcionamiento síncrono 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. Te
mpo
rizac
ión
sist.
secu
enci
ales
toc
– Tiempo de set-up (establecimiento) • Tiempo mínimo que la entrada debe permanecer estable ANTES del
suceso del reloj
– Tiempo de hold (mantenimiento) • Tiempo mínimo que la entrada debe permanecer estable DESPUÉS del
suceso del reloj
– Tiempo propagación 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 propagación 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 más lento, denominado camino crítico. 7.
Tem
poriz
ació
n sis
t. se
cuen
cial
es
toc
7. Te
mpo
rizac
ión
sist.
secu
enci
ales
toc
7. Te
mpo
rizac
ión
sist.
secu
enci
ales
toc
Tomando el clock skew y el clock jitter: Margen negativo
7. Te
mpo
rizac
ión
sist.
secu
enci
ales
toc
7. Te
mpo
rizac
ión
sist.
secu
enci
ales
toc
Indecisión prolongada en el comportamiento lógico del biestable al intentar almacenar uno de sus estados estables.
Si existe violación del tiempo de setup o hold. Mientras biestable permanece en metaestabilidad sus señales de salida
(𝑞𝑞, 𝑞𝑞�) están indefinidas a nivel lógico. Duración indeterminada. Probabilidad de permanecer en estado
metaestable sigue una curva decaimiento exponencial controlada por una constante de tiempo, τ (coeficiente de resolución)
7. Te
mpo
rizac
ión
sist.
secu
enci
ales
toc
Da lugar a errores funcionales ya que las señales metaestables no están correctamente definidas.
7. Te
mpo
rizac
ión
sist.
secu
enci
ales
toc
Clock skew: sesgo del reloj Este es un fenómeno 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 parásitas, imperfecciones del silicio,…
Cuando el tiempo de ciclo es pequeño este problema se convierte en uno de los más importantes a la hora de diseñar el circuito.
7. T
empo
rizac
ión
sist.
secu
enci
ales
toc
Hay dos tipos de clock skew: – Positive skew: el registro que trasmite recibe el
reloj antes que el registro que recibe. – Negative skew: el registro que trasmite recibe el
reloj después que el registro que recibe.
7. Te
mpo
rizac
ión
sist.
secu
enci
ales
toc
Tiempos – El reloj llega al registroA en 10ns. – El reloj llega al registroB en 15ns. – ¿Cuándo sería un problema?
reg
istro
A
reg
istro
B
Lógica combinacional
7. Te
mpo
rizac
ión
sist.
secu
enci
ales
toc
El flanco de subida ocurrió a los 405 ns Los primeros biestables empiezan a modificar su valor después de los 414 ns Retardo total: 11 ns Diferencia entre biestables: 2ns 7.
Tem
poriz
ació
n sis
t. se
cuen
cial
es
toc
Jitter: modificación no deseada en la periodicidad del reloj. En otras palabras, es la variación de los flancos de reloj respecto de su posición ideal en el tiempo.
7. Te
mpo
rizac
ión
sist.
secu
enci
ales
toc
Origen: muy variado. – Variaciones en la fabricación de los osciladores – Ruido en la alimentación de los PLLs. – …
Se especifica de tres formas: – Jitter absoluto: diferencia entre la posición real del flanco de
reloj y su posición ideal. – Jitter periódico: diferencia entre periodo real de reloj y el
periodo ideal (en realidad, el periodo medio). Es el más importante a efectos de STA.
– Jitter ciclo-a-ciclo: diferencia en la duración de dos periodos de reloj adyacentes.
7. Te
mpo
rizac
ión
sist.
secu
enci
ales
toc
Es necesario tenerlo en cuenta en el análisis temporal del circuito porque puede acortar la duración del ciclo de reloj. Especificado como rms o valor pico-a-pico
– Se mide la duración media del ciclo sobre una muestra y se obtiene su desviación estándar (rms).
7. Te
mpo
rizac
ión
sist.
secu
enci
ales
toc
¿Funcionaría a una frecuencia de reloj de 1 GHz? Clock skew: 110 ps Clock jitter: 20 ps Análisis en worst-case fast: -40 C, 1.32V, proceso rápido
7. Te
mpo
rizac
ión
sist.
secu
enci
ales
toc
7. Te
mpo
rizac
ión
sist.
secu
enci
ales
toc
7. Te
mpo
rizac
ión
sist.
secu
enci
ales
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. S
egm
enta
ción
toc
Tiempo de ciclo
jitterskewsetupcombqckciclo tttttt ++++> − 2
8. S
egm
enta
ción
toc
Latencia (Latency): tiempo para obtener un nuevo resultado Intervalo de inicialización (Throughput): tasa de nuevo datos
por unidad de tiempo.
ciclo
ciclo
tT
tnL1
=
⋅=
8. S
egm
enta
ción
toc
tsetup = 12 ps tck-q= 70 ps
8. S
egm
enta
ción
toc
¡Es necesario!
Ojo: posible violación hold
8. S
egm
enta
ción
Recommended