Sin título de diapositiva

Anuncio
PARTE I. TÉCNICAS DE DISEÑO ELECTRÓNICO
MEDIANTE LENGUAJES DE DESCRIPCIÓN HARDWARE
TEMA 3. Modelos de sistemas con VHDL
Curso 05/06
© Departamento de Arquitectura y Tecnología de Sistemas Informáticos - Facultad de Informática Universidad Politécnica de Madrid - V. Rodellar
1
TEMA 3. Modelos de sistemas digitales
3.1 Sistemas combinacionales
3.1.1 Modelado de retardos en funciones lógicas y estilos de descripción de
arquitecturas.
3.1.2 Modelado de multiplexores en los estilos: algorítmico, flujo y estructural
3.1.3 Modelado de decodificadores en los estilos: algorítmico, flujo y estructural
3.2 Sistemas de memoria
3.2.1 Realización de biestables y latches en estilos: comportamiento, flujo y
estructural. Entradas de control asíncronas y asíncronas. Relojes.
3.2.2 Realización de registros en estilo estructural. Reusabilidad. Bucles hardware.
3.2.3 Otros ejemplos.
© Departamento de Arquitectura y Tecnología de Sistemas Informáticos - Facultad de Informática Universidad Politécnica de Madrid - V. Rodellar
2
3.3 Sistemas secuenciales
3.3.1 Modelos para máquinas de estados finitos
3.3.2 Realización de una máquina de Moore
3.3.3 Realización de una máquina de Mealy
Resumen
NOTA:
Los apartados 3.1 y 3.2 han sido desarrollados en las clases de
teoría de temas anteriores y en las clases de laboratorio.
© Departamento de Arquitectura y Tecnología de Sistemas Informáticos - Facultad de Informática Universidad Politécnica de Madrid - V. Rodellar
3
3.3.1 Modelos para máquinas de estados finitos (FSM)
- Modelos de Moore y Mealy
- Metodología de diseño de FSM
-Modelo algorítmico
- Un mal modelo
- Un modelo mejorado (Moore)
- Señales de Reset
- Varios PROCESS
- Modelo Data flow
- Modelo estructural
- Comparación entre los modelos de Mealy y Moore
© Departamento de Arquitectura y Tecnología de Sistemas Informáticos - Facultad de Informática Universidad Politécnica de Madrid - V. Rodellar
4
Esquemas de Moore y Mealy
Estructura de Moore
(FSMs)
Estructura de Mealy
O(t) = F1( S(t))
O(t) = F1( S(t), I(t))
S(t+1) = F2 (I(t), S(t))
S(t+1) = F2 (I(t), S(t))
O(t)
Salidas
O(t)
Salidas
(combinacional)
(combinacional)
inputs
I(t)
Estado futuro
S(t+1)
Estado futuro
(Combinacional)
S(t+1)
(Combinacional)
inputs
I(t)
Estado actual
S(t)
Estado actual
Registro (Secuencial)
clock
S(t)
Registro (Secuencial)
© Departamento de Arquitectura y Tecnología de Sistemas Informáticos - Facultad de Informática Universidad Politécnica de Madrid - V. Rodellar
5
clock
Metodología de diseño de FSM
Niveles de Descripción
asociados con los HDLs
Etapas básicas
1) Diagrama-Tabla de estados, ASM
entrada
Moore
estado
estado
salida
salida
}
entrada/salida
estado
Comportamiento o
algorítmico
estado
Mealy
6
Metodología de diseño de FSM
Etapas básicas
Niveles de Descripción
asociados con los HDLs
2) Ecuaciones del estado futuro y salidas
Estado actual Entradas Estado futuro
C1(t) C0(t)
Salidas
A(t) B(t) C1(t+1) C0(t+1)
X(t) Y(t)
0
0
0
0
0
1
1
0
0
0
0
1
0
0
1
1
0
0
1
0
0
0
1
1
.......
...........
...........
..........
D1(t+1) = C1(t) A(t) + C0(t) A(t)’+ ......
D0(t+1) = C1(t) B(t) + C0(t) B(t)’+ ......
X(t) = ........
Y(t) = ................
}
Flujo de datos o
transferencia entre
registros
7
Metodología de diseño de FSM
Etapas básicas
Niveles de Descripción
asociados con los HDLs
3) Implementación del circuito
Componentes: Dispositivos lógicos
(puertas: NOT, AND ... MUX, DECODERS, .....)
}
Estructural
Elementos de memoria ( Flip-Flops)
Conexionado
8
Modelado Algorítmico de FSM
• Consideraciones Generales:
– El estilo del código tiene que ser independiente de la
máquina de estados que se diseñe.
– Diferentes formas de modelar la misma máquina:
• ¿Cuantos procesos PROCESS?
• ¿Señales o variables?
• ¿Sentencias IF o CASE?
• El uso de la sentencia WAIT
– ¿Debe ser inicializada la máquina en un estado válido? ¿Hay
que utilizar señal de reset?
– Portabilidad del código
© Departamento de Arquitectura y Tecnología de Sistemas Informáticos - Facultad de Informática Universidad Politécnica de Madrid - V. Rodellar
9
Modelado algorítmico de una FSM - Un mal modelo
Máquina de Moore
Retardo en la operación de lectura
en una memoria RAM
Read (R)
Slow (S)
Write (W)
Clock
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.all;
ST_READ
R=1 W=0
ST_WRITE
S=0
R=0 W=1
S=1
ST_DELAY
R=0 W=0
ENTITY fsm_bad IS
PORT (
clock:
IN STD_LOGIC; -- flanco subida
slow:
IN STD_LOGIC; -- entrada control
read, write: OUT STD_LOGIC -- salidas
);
END fsm_bad;
© Departamento de Arquitectura y Tecnología de Sistemas Informáticos - Facultad de Informática Universidad Politécnica de Madrid - V. Rodellar
10
Modelado algorítmico de una FSM - Un mal modelo
Retardo en la operación de
lectura en una memoria RAM
ST_READ
R=1 W=0
ST_WRITE
S=0
R=0 W=1
S=1
ST_DELAY
R=0 W=0
Máquina de Moore
ARCHITECTURE bad OF fsm_bad IS
BEGIN
PROCESS
TYPE state_type IS (ST_read, ST_write, ST_delay);
VARIABLE state :state_type := ST_read;
BEGIN
WAIT UNTIL rising_edge(clock);
CASE state IS
WHEN ST_read => read <= '1';
write <= '0';
state := ST_write;
WHEN ST_write => read <= '0';
write <= '1';
IF (slow = '1') THEN
state := ST_delay;
ELSE
state := ST_read;
END IF;
WHEN ST_delay => read <= '0';
write <= '0';
state := ST_read;
END CASE;
END PROCESS;
11
END bad;
Resultados de simulación del modelo malo
ST_READ
R=1 W=0
ST_WRITE
S=0
R=0 W=1
S=1
ST_DELAY
R=0 W=0
Máquina de Moore
CASE state IS
WHEN ST_read => read <= '1';
write <= '0';
state := ST_write;
WHEN ST_write => read <= '0';
write <= '1';
IF (slow = '1') THEN
state := ST_delay;
ELSE
state := ST_read;
END IF;
WHEN ST_delay => read <= '0';
write <= '0';
state := ST_read;
END CASE;
12
¿Por qué este modelo es malo?
1) El estado actual (state) está definido como una variable, no puede ser directamente
monitorizado durante la simulación No puede activar un PROCESS.
2) Tres estados requieren dos FF, hay un estado sin utilizar. Ha de incluirse una señal
de reset para poder salir del estado sin usar en el caso de que entrar en él.
3) El estado futuro y el estado actual no deben ser definidos en el mismo PROCESS.
El estado futuro es combinacional, el estado actual es memoria
Pueden usarse:
- dos PROCESS uno para salidas y estado futuro y otro para la memoria - MEALY
- tres PROCESS uno para las salidas, otro estado futuro, otro memoria -
MOORE
No deben mezclarse las partes combinacionales y memoria
© Departamento de Arquitectura y Tecnología de Sistemas Informáticos - Facultad de Informática Universidad Politécnica de Madrid - V. Rodellar
13
Moore
Mealy
Las salidas y el estado futuro
dependen de las mismas entradas,
pueden agruparse en el mismo
proceso
O(t) = F1( S(t), I(t))
S(t+1) = F2 (I(t), S(t))
O(t)
Salidas
(combinacional)
I(t)
inputs
O(t)
Estado futuro y salidas
(Combinacional)
S(t+1)
Estado futuro
S(t+1)
(Combinacional)
Estado actual
inputs
I(t)
Registro (Secuencial)
S(t)
Estado actual
S(t)
Registro (Secuencial)
clock
clock
© Departamento de Arquitectura y Tecnología de Sistemas Informáticos - Facultad de Informática Universidad Politécnica de Madrid - V. Rodellar
14
Mejorando el modelo – 3 PROCESS, RESET síncrono
read
Máquina de Moore
Salida ( combinacional)
write
slow
Estado futuro (combinacional)
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.all;
ENTITY fsm_good IS
PORT (
clock
:
slow
:
reset
:
read, write :
);
END fsm_good;
Estado actual (secuencial)
reset
clock
IN STD_LOGIC ; -- activo por flanco de subida
IN STD_LOGIC ; -- entrada de control del sistema
IN STD_LOGIC ; -- activo a nivel alto
OUT STD_LOGIC
© Departamento de Arquitectura y Tecnología de Sistemas Informáticos - Facultad de Informática Universidad Politécnica de Madrid - V. Rodellar
15
Mejorando el modelo – 3 PROCESS, RESET síncrono
Salida ( combinacional)
slow
ARCHITECTURE good OF fsm_good IS
TYPE state_type IS (ST_read, ST_write, ST_delay);
Estado futuro (combinacional)
SIGNAL current_state, next_state :state_type;
BEGIN
Estado actual (secuencial)
output: PROCESS (current_state)
BEGIN
reset
clock CASE current_state IS
WHEN ST_read => Read <= '1‘ ; Write <= '0';
RESET
WHEN ST_write => Read <= '0‘ ; Write <= '1';
ST_READ
ST_WRITE
WHEN ST_delay => Read <= '0‘ ; Write <= '0';
R=1 W=0
R=0 W=1
S=0
-- seria necesario poner la siguiente sentencia?
WHEN OTHERS => Read <= '1 ; Write <= '0’;
S=1
END CASE;
ST_DELAY
R=0 W=0
END PROCESS output;
© Departamento de Arquitectura y Tecnología de Sistemas Informáticos - Facultad de Informática Universidad Politécnica de Madrid - V. Rodellar
16
Mejorando el modelo – 3 PROCESS, RESET síncrono
future: PROCESS (current_state,slow)
BEGIN
CASE current_state IS
Estado futuro (combinacional)
WHEN ST_read => next_state <= ST_write;
WHEN ST_write => IF (slow = '1')
Estado actual (secuencial)
THEN
next_state <= ST_delay;
clock
reset
ELSE
RESET
next_state <= ST_read;
END IF;
ST_READ
ST_WRITE
R=1 W=0
R=0 W=1
S=0
WHEN ST_delay => next_state <= ST_read;
WHEN OTHERS => next_state <= ST_read;
S=1
END CASE;
Salida ( combinacional)
slow
ST_DELAY
R=0 W=0
END PROCESS future;
© Departamento de Arquitectura y Tecnología de Sistemas Informáticos - Facultad de Informática Universidad Politécnica de Madrid - V. Rodellar
17
Mejorando el modelo – 3 PROCESS, RESET síncrono
Salida ( combinacional)
actual: PROCESS
BEGIN
WAIT UNTIL rising_edge(clock);
Estado futuro (combinacional)
Estado actual (secuencial)
reset
-- reset síncrono
IF (reset = '1') THEN
current_state <= ST_read;
ELSE
current_state <= next_state;
END IF;
END PROCESS actual;
END good;
© Departamento de Arquitectura y Tecnología de Sistemas Informáticos - Facultad de Informática Universidad Politécnica de Madrid - V. Rodellar
18
Resultados de simulación – 3 PROCESS, RESET síncrono I
RESET
ST_READ
R=1 W=0
ST_WRITE
S=0
R=0 W=1
S=1
ST_DELAY
R=0 W=0
© Departamento de Arquitectura y Tecnología de Sistemas Informáticos - Facultad de Informática Universidad Politécnica de Madrid - V. Rodellar
19
Resultados de simulación – 3 PROCESS, RESET síncrono II
RESET
ST_READ
R=1 W=0
ST_WRITE
S=0
R=0 W=1
S=1
ST_DELAY
R=0 W=0
© Departamento de Arquitectura y Tecnología de Sistemas Informáticos - Facultad de Informática Universidad Politécnica de Madrid - V. Rodellar
20
Resultados de simulación – 3 PROCESS, RESET síncrono III
RESET
ST_READ
R=1 W=0
ST_WRITE
S=0
R=0 W=1
S=1
ST_DELAY
R=0 W=0
© Departamento de Arquitectura y Tecnología de Sistemas Informáticos - Facultad de Informática Universidad Politécnica de Madrid - V. Rodellar
21
Resultados de simulación – 3 PROCESS, RESET síncrono IV
RESET
ST_READ
R=1 W=0
ST_WRITE
S=0
R=0 W=1
S=1
ST_DELAY
R=0 W=0
© Departamento de Arquitectura y Tecnología de Sistemas Informáticos - Facultad de Informática Universidad Politécnica de Madrid - V. Rodellar
22
Modelo utilizando la sentencia SELECT y RESET asíncrono
Salida ( combinacional)
Estado futuro (combinacional)
Estado actual (secuencial)
reset
--Generación de las salidas
WITH current_state SELECT
read <= '1' WHEN ST_read,
'0' WHEN ST_write,
'0' WHEN ST_delay,
'1' WHEN OTHERS; --?
WITH current_state SELECT
write <= '0' WHEN ST_read,
'1' WHEN ST_write,
'0' WHEN ST_delay,
'0' WHEN OTHERS; - -?
El estado futuro lo dejamos igual que en la arquitectura con reset sincrono
© Departamento de Arquitectura y Tecnología de Sistemas Informáticos - Facultad de Informática Universidad Politécnica de Madrid - V. Rodellar
23
Modelo utilizando la sentencia SELECT y RESET asíncrono
Salida ( combinacional)
Estado futuro (combinacional)
Estado actual (secuencial)
reset
-- Generación del estado actual con reset asincrono
-- Observese que ahora reset forma parte de la lista de
sensibilidad del process
actual: PROCESS (reset, clock)
BEGIN
IF (reset = '1') THEN
current_state <= ST_read;
ELSIF rising_edge (clock) THEN
current_state <= next_state;
END IF;
END PROCESS actual;
END good1;
© Departamento de Arquitectura y Tecnología de Sistemas Informáticos - Facultad de Informática Universidad Politécnica de Madrid - V. Rodellar
24
Resultados de simulación – Select, RESET asíncrono I
RESET
ST_READ
R=1 W=0
ST_WRITE
S=0
R=0 W=1
S=1
ST_DELAY
R=0 W=0
© Departamento de Arquitectura y Tecnología de Sistemas Informáticos - Facultad de Informática Universidad Politécnica de Madrid - V. Rodellar
25
Resultados de simulación – Select, RESET asíncrono II
RESET
ST_READ
R=1 W=0
ST_WRITE
S=0
R=0 W=1
S=1
ST_DELAY
R=0 W=0
© Departamento de Arquitectura y Tecnología de Sistemas Informáticos - Facultad de Informática Universidad Politécnica de Madrid - V. Rodellar
26
Resultados de simulación – Select, RESET asíncrono III
RESET
ST_READ
R=1 W=0
ST_WRITE
S=0
R=0 W=1
S=1
ST_DELAY
R=0 W=0
© Departamento de Arquitectura y Tecnología de Sistemas Informáticos - Facultad de Informática Universidad Politécnica de Madrid - V. Rodellar
27
Resultados de simulación – Select, RESET asíncrono IV
RESET
ST_READ
R=1 W=0
ST_WRITE
S=0
R=0 W=1
S=1
ST_DELAY
R=0 W=0
© Departamento de Arquitectura y Tecnología de Sistemas Informáticos - Facultad de Informática Universidad Politécnica de Madrid - V. Rodellar
28
Modelo en flujo de datos
Reset asíncrono
Tabla de transiciones
RESET
Entradas estado actual estado futuro
salidas
slow
q1
q0
d1
d0
read
-
0
0
0
1
1
0
0
0
1
0
0
0
1
1
0
1
1
0
0
1
-
1
0
0
0
0
0
-
1
1
- (0)
- (0)
0
0
d1 = slow q1’ q0 (reset’)
d0 = q1’ q0’ (reset’)
read = q1’ q0’
write = q1’ q0
write
ST_READ
R=1 W=0
ST_WRITE
R=0 W=1
S=0
S=1
ST_DELAY
R=0 W=0
Codificación de estados
ST_READ
00
ST_WRITE
01
ST_DELAY
10
29
ARCHITECTURE data_flow OF fsm_good IS
SIGNAL d1, d0, q1,q0: STD_LOGIC;
BEGIN
Modelo en flujo de datos
Utilizando asignación condicional de
señal solamente y función para la
detección de flancos
--generacion del estado futuro
d1 <= ((slow) AND (NOT q1) AND (q0));
d0 <= ((NOT q1) AND (NOT q0));
d1 = slow q1’ q0 (reset’)
d0 = q1’ q0’
(reset’)
--generación de las salidas
read <= ((NOT q1) AND (NOT q0));
write <= ((NOT q1) AND (q0));
read = q1’ q0’
write = q1’ q0
--generación del estado actual, reset asincrono
q1 <= '0' WHEN (reset= '1') ELSE d1 WHEN rising_edge(clock);
q0 <= '0' WHEN (reset= '1') ELSE d0 WHEN rising_edge(clock);
END data_flow;
© Departamento de Arquitectura y Tecnología de Sistemas Informáticos - Facultad de Informática Universidad Politécnica de Madrid - V. Rodellar
30
Resultados de simulación del modelo en flujo de datos
1
Obsérvese el comportamiento asincrono de la señal de reset y como con el
flanco de subida del reloj se actualizan los valores de la memoria
© Departamento de Arquitectura y Tecnología de Sistemas Informáticos - Facultad de Informática Universidad Politécnica de Madrid - V. Rodellar
31
Modelo estructural
slow
d1 = slow q1’ q0 (reset’)
q0
Nq0
d0 = q1’ q0’(reset’)
q1
Nq1
read = q1’ q0’ = d0
Aux1=write
d1
FF
clock
read
write = q1’ q0
Componentes necesarios:
•Inversores
•Puertas AND
d0
FF
clock
•Biestables con entrada de reset activa a
nivel alto y reloj activo por flanco de
subida
32
reset
Modelo estructural
ARCHITECTURE structural OF fsm_good IS
slow
COMPONENT inversor PORT (e:IN STD_LOGIC; s: OUT STD_LOGIC);
END COMPONENT;
COMPONENT and_2 PORT (e1,e2:IN STD_LOGIC; s: OUT STD_LOGIC);
END COMPONENT;
COMPONENT or_2 PORT (e1,e2:IN STD_LOGIC; s: OUT STD_LOGIC);
END COMPONENT;
COMPONENT biestable_D
PORT (clock, reset, d: IN STD_LOGIC; q: OUT STD_LOGIC);
END COMPONENT;
SIGNAL q1,Nq1,q0,Nq0,d1,d0, aux1: STD_LOGIC;
BEGIN
q0
q1
Nq0
Nq1
Aux1=write
d1
FF
read
clock
d0
FF
clock
inv_q1 : inversor PORT MAP (e => q1, s => Nq1);
inv_q0 : inversor PORT MAP (e => q0, s => Nq0);
and_write: and_2
PORT MAP (e1 => Nq1, e2 => q0,
s => aux1);
and_d1 : and_2
PORT MAP (e1 => slow, e2 => aux1,
s => d1);
and_read : and_2
PORT MAP (e1 => Nq1, e2 => Nq0,
s => d0);
ff_d1 : biestable_D PORT MAP (clock => clock, reset => reset, d => d1, q =>q1);
ff_d0 : biestable_D PORT MAP (clock => clock, reset => reset, d => d0, q =>q0);
read <= d0;
write <= aux1;
END structural;
33
Comparación entre los modelos de Mealy y Moore
Las salidas y el estado futuro
dependen de las mismas entradas,
pueden agruparse en el mismo
proceso
O(t) = F1( S(t), I(t))
S(t+1) = F2 (I(t), S(t))
O(t)
Salidas
(combinacional)
I(t)
inputs
O(t)
Estado futuro y salidas
(Combinacional)
S(t+1)
Estado futuro
S(t+1)
(Combinacional)
Estado actual
inputs
I(t)
Registro (Secuencial)
S(t)
Estado actual
S(t)
Registro (Secuencial)
clock
clock
© Departamento de Arquitectura y Tecnología de Sistemas Informáticos - Facultad de Informática Universidad Politécnica de Madrid - V. Rodellar
34
3.3.2 Realización de un modelo de Mealy
Ejemplo de un detector de la secuencia 010
0/0
1/0
0/0
0/1
1/0
ninguno
uno
0/0
dos
tres
0/0
1/0
1/0
© Departamento de Arquitectura y Tecnología de Sistemas Informáticos - Facultad de Informática Universidad Politécnica de Madrid - V. Rodellar
35
--------------------------------------------------------------------------------- © Universidad Politécnica de Madrid
-- Se permite copia para fines de estudio
--------------------------------------------------------------------------------- Proyecto
: Maquinas de estados finitos
-- Diseño
: Detector de secuencia 010
-- Nombre del fichero : Detector010_mealy_B.vhd
-- Autor
: Profesores de Tecnologia
-- Fecha
: 30/5/2005
-- Versión
: 1.0
-- Resumen
: Este fichero contiene la entidad y arquitectura de
-una una FSM que implementa un dectector de la
-secuencia 010 como una máquina de Mealy. Se han utilizado
-datos tipo bit. No tiene reset.
--- Modificaciones:
--- Fecha
Autor
Versión
Descripción del cambio
---------------------------------------------------------------------------------------------------------------------------------------------------------------ENTITY detector_secuencia_010 IS
PORT (
clock : IN BIT; -- activo por flanco de subida
entrada: IN BIT;
salida : OUT BIT
);
END detector_secuencia_010;
© Departamento de Arquitectura y Tecnología de Sistemas Informáticos - Facultad de Informática Universidad Politécnica de Madrid - V. Rodellar
36
WHEN dos =>
IF entrada = '0' THEN
estado_futuro <= tres;
salida <= '1';
ELSE
estado_futuro <= ninguno;
salida <= '0';
END IF;
WHEN tres =>
IF entrada = '1' THEN
estado_futuro <= ninguno;
salida <= '0';
ELSE
estado_futuro <= uno;
salida <= '0';
END IF;
END CASE;
END PROCESS combinacional;
ARCHITECTURE comportamiento OF detector_secuencia_010 IS
--Parte declarativa
TYPE estado IS (ninguno, uno, dos, tres);
SIGNAL estado_actual: estado := ninguno;
SIGNAL estado_futuro: estado;
--Comienzo de la arquitectura
BEGIN
--Proceso para generar el estado futuro y salida
--combinacional:
PROCESS (entrada, estado_actual)
BEGIN
CASE estado_actual IS
WHEN ninguno =>
IF entrada = '0' THEN
estado_futuro <= uno;
salida <= '0';
ELSE
estado_futuro <= ninguno;
salida <= '0';
1/0
END IF;
WHEN uno =>
IF entrada = '1' THEN
ninguno
estado_futuro <= dos;
salida <= '0';
ELSE
estado_futuro <= uno;
salida <= '0';
END IF;
0/0
0/0
0/1
1/0
uno
0/0
dos
tres
0/0
1/0
1/0
37
--Proceso para actualizar la memoria
memoria:
PROCESS (clock)
BEGIN
IF (clock = '1' AND clock'EVENT) THEN
estado_actual <= estado_futuro;
ELSE
estado_actual <= estado_actual;
END IF;
END PROCESS memoria;
END comportamiento;
© Departamento de Arquitectura y Tecnología de Sistemas Informáticos - Facultad de Informática Universidad Politécnica de Madrid - V. Rodellar
38
ENTITY test_detsec_010 IS
END test_detsec_010;
ARCHITECTURE test OF test_detsec_010 IS
--Parte declarativa
COMPONENT detector_secuencia_010
PORT (
clock : IN BIT; -- activo por flanco de subida
entrada: IN BIT;
salida : OUT BIT
);
END COMPONENT;
FOR U1: detector_secuencia_010 USE ENTITY WORK.detector_secuencia_010(comportamiento);
CONSTANT ciclo: TIME := 10 ns;
SIGNAL clock: BIT := '0';
SIGNAL entrada, salida: BIT;
--Descripcion de la arquitectura
BEGIN
clock <= NOT clock AFTER ciclo/2;
U1: detector_secuencia_010 PORT MAP(clock => clock, entrada => entrada, salida => salida);
entrada <= '0' AFTER 0 ns,
'1' AFTER 11 ns,
'0' AFTER 19 ns,
'1' AFTER 32 ns,
'0' AFTER 46 ns,
'1' AFTER 56 ns;
END test;
© Departamento de Arquitectura y Tecnología de Sistemas Informáticos - Facultad de Informática Universidad Politécnica de Madrid - V. Rodellar
39
Mealy: la salida cambia con la generación
del estado futuro a los 19 ns
© Departamento de Arquitectura y Tecnología de Sistemas Informáticos - Facultad de Informática Universidad Politécnica de Madrid - V. Rodellar
40
3.3.3 Realización de un modelos de Moore
Ejemplo de un detector de la secuencia 010
0
1
0
ninguno
/0
0
1
uno
0
/0
0
1
dos
Tres
/0
/1
1
© Departamento de Arquitectura y Tecnología de Sistemas Informáticos - Facultad de Informática Universidad Politécnica de Madrid - V. Rodellar
41
--------------------------------------------------------------------------------- © Universidad Politécnica de Madrid
-- Se permite copia para fines de estudio
--------------------------------------------------------------------------------- Proyecto
: Maquinas de estados finitos
-- Diseño
: Detector de secuencia 010
-- Nombre del fichero : Detector010_moore_B.vhd
-- Autor
: Profesores Tecnología
-- Fecha
: 30/5/2005
-- Versión
: 1.0
-- Resumen
: Este fichero contiene la entidad y arquitectura de una una FSM que implementa un dectector de la
-secuencia 010 como una máquina de Moore. Se han utilizado datos tipo bit. No tiene reset. Se ha
-realizado mediante tres procesos
--- Modificaciones:
--- Fecha
Autor
Versión
Descripción del cambio
---------------------------------------------------------------------------------------------------------------------------------------------------------------ENTITY detector_secuencia_010 IS
PORT (
clock : IN BIT; -- activo por flanco de subida
entrada: IN BIT;
salida : OUT BIT
);
END detector_secuencia_010;
© Departamento de Arquitectura y Tecnología de Sistemas Informáticos - Facultad de Informática Universidad Politécnica de Madrid - V. Rodellar
42
ARCHITECTURE comportamiento_moore OF detector_secuencia_010 IS
--Parte declarativa
TYPE estado IS (ninguno, uno, dos, tres);
SIGNAL estado_actual: estado := ninguno;
SIGNAL estado_futuro: estado;
--Comienzo de la arquitectura
BEGIN
--Proceso para generar la salida
resultado:
PROCESS (estado_actual)
BEGIN
CASE estado_actual IS
WHEN ninguno
WHEN uno
WHEN dos
WHEN tres
=>
salida <= '0';
=>
salida <= '0';
=>
salida <= '0';
=>
salida <= '1';
END CASE;
END PROCESS resultado;
© Departamento de Arquitectura y Tecnología de Sistemas Informáticos - Facultad de Informática Universidad Politécnica de Madrid - V. Rodellar
43
-- Proceso para generar el estado futuro
futuro:
PROCESS (entrada, estado_actual)
BEGIN
CASE estado_actual IS
WHEN ninguno
=>
IF entrada = '0' THEN
estado_futuro <= uno;
ELSE
estado_futuro <= ninguno;
END IF;
WHEN uno
=>
IF entrada = '1' THEN
estado_futuro <= dos;
ELSE
estado_futuro <= uno;
END IF;
WHEN dos
=>
IF entrada = '0' THEN
estado_futuro <= tres;
ELSE
estado_futuro <= ninguno;
END IF;
WHEN tres
=>
IF entrada = '1' THEN
estado_futuro <= ninguno;
ELSE
estado_futuro <= uno;
END IF;
END CASE;
END PROCESS futuro;
© Departamento de Arquitectura y Tecnología de Sistemas Informáticos - Facultad de Informática Universidad Politécnica de Madrid - V. Rodellar
44
memoria:
PROCESS (clock)
BEGIN
IF (clock = '1' AND clock'EVENT) THEN
estado_actual <= estado_futuro;
ELSE
estado_actual <= estado_actual;
END IF;
END PROCESS memoria;
END comportamiento_moore;
© Departamento de Arquitectura y Tecnología de Sistemas Informáticos - Facultad de Informática Universidad Politécnica de Madrid - V. Rodellar
45
Moore: La salida cambia con el estado actual a los 25 ns
© Departamento de Arquitectura y Tecnología de Sistemas Informáticos - Facultad de Informática Universidad Politécnica de Madrid - V. Rodellar
46
Ejercicio para los alumnos:
1) Modificar el código anterior para utilizar datos
STD_LOGIC.
2) Realizar el diseño del detector en estilo de flujo de
datos.
3) Realizar el diseño del detector en estilo estructural.
4) Realizar el test de los diseños anteriores con el test de
la transparecia 39.
5) Analizar los resultados de simulación.
© Departamento de Arquitectura y Tecnología de Sistemas Informáticos - Facultad de Informática Universidad Politécnica de Madrid - V. Rodellar
47
RESUMEN:
-Se han de utilizar datos de tipo enumerado para definir los estados de
la máquina
-Han de definirse dos señales para llevar el control del estado actual y
el futuro
-Si la máquina es de Moore se han de utilizar tres procesos
-Si la máquina es de Mealy es suficiente con utilizar dos procesos
-Si la maquina tiene reset síncrono no es necesario que reset aparezca
en la lista de sensibilidad
- Si el reset es asíncrono necesariamente ha de aparecer en la lista de
sensiblidad
© Departamento de Arquitectura y Tecnología de Sistemas Informáticos - Facultad de Informática Universidad Politécnica de Madrid - V. Rodellar
48
Descargar