Вы находитесь на странице: 1из 48

PARTE I.

TCNICAS DE DISEO ELECTRNICO MEDIANTE LENGUAJES DE DESCRIPCIN HARDWARE

TEMA 3. Modelos de sistemas con VHDL


Curso 07/08

Departamento de Arquitectura y Tecnologa de Sistemas Informticos - Facultad de Informtica Universidad Politcnica de Madrid - V. Rodellar

TEMA 3. Modelos de sistemas digitales


3.1 Sistemas combinacionales
3.1.1 Modelado de retardos en funciones lgicas y estilos de descripcin de arquitecturas. 3.1.2 Modelado de multiplexores en los estilos: algortmico, flujo y estructural 3.1.3 Modelado de decodificadores en los estilos: algortmico, flujo y estructural

3.2 Sistemas de memoria


3.2.1 Realizacin de biestables y latches en estilos: comportamiento, flujo y estructural. Entradas de control asncronas y asncronas. Relojes. 3.2.2 Realizacin de registros en estilo estructural. Reusabilidad. Bucles hardware. 3.2.3 Otros ejemplos.

Departamento de Arquitectura y Tecnologa de Sistemas Informticos - Facultad de Informtica Universidad Politcnica de Madrid - V. Rodellar

3.3 Sistemas secuenciales


3.3.1 Modelos para mquinas de estados finitos 3.3.2 Realizacin de una mquina de Moore 3.3.3 Realizacin de una mquina de Mealy

Resumen

NOTA: Los apartados 3.1 y 3.2 han sido desarrollados en las clases de teora de temas anteriores y en las clases de laboratorio.

Departamento de Arquitectura y Tecnologa de Sistemas Informticos - Facultad de Informtica Universidad Politcnica de Madrid - V. Rodellar

3.3.1 Modelos para mquinas de estados finitos (FSM)


- Modelos de Moore y Mealy - Metodologa de diseo de FSM -Modelo algortmico - Un mal modelo - Un modelo mejorado (Moore) - Seales de Reset - Varios PROCESS - Modelo Data flow - Modelo estructural - Comparacin entre los modelos de Mealy y Moore
Departamento de Arquitectura y Tecnologa de Sistemas Informticos - Facultad de Informtica Universidad Politcnica de Madrid - V. Rodellar 4

Esquemas de Moore y Mealy


Estructura de Moore
O(t) = F1( S(t)) S(t+1) = F2 (I(t), S(t)) O(t) Salidas (combinacional) O(t) = F1( S(t), I(t)) S(t+1) = F2 (I(t), S(t))

(FSMs)

Estructura de Mealy

O(t) Salidas (combinacional)

inputs I(t)

Estado futuro (Combinacional)

S(t+1) Estado futuro (Combinacional) inputs I(t) Estado actual clock S(t) Registro (Secuencial) 5 clock S(t+1)

Estado actual S(t) Registro (Secuencial)

Departamento de Arquitectura y Tecnologa de Sistemas Informticos - Facultad de Informtica Universidad Politcnica de Madrid - V. Rodellar

Metodologa de diseo de FSM


Etapas bsicas Niveles de Descripcin asociados con los HDLs

1) Diagrama-Tabla de estados, ASM entrada estado salida entrada/salida estado estado Mealy
6

Moore estado salida

Comportamiento o algortmico

Metodologa de diseo de FSM


Niveles de Descripcin asociados con los HDLs 2) Ecuaciones del estado futuro y salidas
Estado actual Entradas Estado futuro C1(t) C0(t) 0 0 0 ....... 0 0 0 Salidas X(t) Y(t) 1 1 1 0 1 1 A(t) B(t) C1(t+1) C0(t+1) 0 0 1 0 1 0 0 0 0 1 0 0 ...........

Etapas bsicas

...........

..........

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

Metodologa de diseo de FSM


Etapas bsicas Niveles de Descripcin asociados con los HDLs

3) Implementacin del circuito


Componentes: Dispositivos lgicos (puertas: NOT, AND ... MUX, DECODERS, .....) Elementos de memoria ( Flip-Flops) Conexionado

Estructural

Modelado Algortmico de FSM


Consideraciones Generales: El estilo del cdigo tiene que ser independiente de la mquina de estados que se disee. Diferentes formas de modelar la misma mquina: Cuantos procesos PROCESS? Seales o variables? Sentencias IF o CASE? El uso de la sentencia WAIT Debe ser inicializada la mquina en un estado vlido? Hay que utilizar seal de reset? Portabilidad del cdigo
Departamento de Arquitectura y Tecnologa de Sistemas Informticos - Facultad de Informtica Universidad Politcnica de Madrid - V. Rodellar 9

Modelado algortmico de una FSM - Un mal modelo

Mquina de Moore
Retardo en la operacin de lectura en una memoria RAM
Slow (S)

Read (R) 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;
10

Departamento de Arquitectura y Tecnologa de Sistemas Informticos - Facultad de Informtica Universidad Politcnica de Madrid - V. Rodellar

Modelado algortmico de una FSM - Un mal modelo


Retardo en la operacin 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

Mquina 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 simulacin 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

Mquina 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 simulacin No puede activar un PROCESS. 2) Tres estados requieren dos FF, hay un estado sin utilizar. Ha de incluirse una seal 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 No deben mezclarse las partes combinacionales y memoria MOORE

Departamento de Arquitectura y Tecnologa de Sistemas Informticos - Facultad de Informtica Universidad Politcnica de Madrid - V. Rodellar

13

Moore
O(t) = F1( S(t), I(t)) S(t+1) = F2 (I(t), S(t))
O(t) Salidas (combinacional)

Mealy Las salidas y el estado futuro dependen de las mismas entradas, pueden agruparse en el mismo proceso
I(t) inputs S(t+1) Estado futuro y salidas (Combinacional) S(t+1) Estado actual Registro (Secuencial) O(t)

Estado futuro (Combinacional) inputs I(t) Estado actual S(t) Registro (Secuencial) clock Departamento de Arquitectura y Tecnologa de Sistemas Informticos - Facultad de Informtica Universidad Politcnica de Madrid - V. Rodellar 14 S(t) clock

Mejorando el modelo 3 PROCESS, RESET sncrono


read

Mquina 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 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

clock

Departamento de Arquitectura y Tecnologa de Sistemas Informticos - Facultad de Informtica Universidad Politcnica de Madrid - V. Rodellar

15

Mejorando el modelo 3 PROCESS, RESET sncrono


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 Tecnologa de Sistemas Informticos - Facultad de Informtica Universidad Politcnica de Madrid - V. Rodellar 16 Salida ( combinacional)

slow

Mejorando el modelo 3 PROCESS, RESET sncrono


slow

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)
ST_DELAY R=0 W=0

END PROCESS future;


17

Departamento de Arquitectura y Tecnologa de Sistemas Informticos - Facultad de Informtica Universidad Politcnica de Madrid - V. Rodellar

Mejorando el modelo 3 PROCESS, RESET sncrono


Salida ( combinacional)

actual: PROCESS BEGIN WAIT UNTIL rising_edge(clock); -- reset sncrono IF (reset = '1') THEN current_state <= ST_read; ELSE current_state <= next_state; END IF; END PROCESS actual; END good;

Estado futuro (combinacional)

Estado actual (secuencial)

reset

Departamento de Arquitectura y Tecnologa de Sistemas Informticos - Facultad de Informtica Universidad Politcnica de Madrid - V. Rodellar

18

Resultados de simulacin 3 PROCESS, RESET sncrono 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 Tecnologa de Sistemas Informticos - Facultad de Informtica Universidad Politcnica de Madrid - V. Rodellar

19

Resultados de simulacin 3 PROCESS, RESET sncrono 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 Tecnologa de Sistemas Informticos - Facultad de Informtica Universidad Politcnica de Madrid - V. Rodellar

20

Resultados de simulacin 3 PROCESS, RESET sncrono 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 Tecnologa de Sistemas Informticos - Facultad de Informtica Universidad Politcnica de Madrid - V. Rodellar

21

Resultados de simulacin 3 PROCESS, RESET sncrono 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 Tecnologa de Sistemas Informticos - Facultad de Informtica Universidad Politcnica de Madrid - V. Rodellar

22

Modelo utilizando la sentencia SELECT y RESET asncrono


--Generacin 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; - -?

Salida ( combinacional)

Estado futuro (combinacional)

Estado actual (secuencial)

reset

El estado futuro lo dejamos igual que en la arquitectura con reset sincrono


Departamento de Arquitectura y Tecnologa de Sistemas Informticos - Facultad de Informtica Universidad Politcnica de Madrid - V. Rodellar 23

Modelo utilizando la sentencia SELECT y RESET asncrono


-- Generacin 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 Tecnologa de Sistemas Informticos - Facultad de Informtica Universidad Politcnica de Madrid - V. Rodellar 24

Salida ( combinacional)

Estado futuro (combinacional)

Estado actual (secuencial)

reset

Resultados de simulacin Select, RESET asncrono 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 Tecnologa de Sistemas Informticos - Facultad de Informtica Universidad Politcnica de Madrid - V. Rodellar

25

Resultados de simulacin Select, RESET asncrono 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 Tecnologa de Sistemas Informticos - Facultad de Informtica Universidad Politcnica de Madrid - V. Rodellar

26

Resultados de simulacin Select, RESET asncrono 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 Tecnologa de Sistemas Informticos - Facultad de Informtica Universidad Politcnica de Madrid - V. Rodellar

27

Resultados de simulacin Select, RESET asncrono 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 Tecnologa de Sistemas Informticos - Facultad de Informtica Universidad Politcnica de Madrid - V. Rodellar

28

Modelo en flujo de datos


Reset asncrono

Tabla de transiciones
Entradas estado actual estado futuro slow 0 1 q1 0 0 0 1 1 q0 0 1 1 0 1 d1 0 0 1 0 - (0) d0 1 0 0 0 - (0) salidas read 1 0 0 0 0 write 0 1 1 0 0
ST_READ R=1 W=0

RESET
ST_WRITE

S=0

R=0 W=1

S=1
ST_DELAY R=0 W=0

d1 = slow q1 q0 (reset) d0 = q1 q0 (reset) read = q1 q0 write = q1 q0

Codificacin de estados ST_READ ST_WRITE ST_DELAY 00 01 10


29

ARCHITECTURE data_flow OF fsm_good IS SIGNAL d1, d0, q1,q0: STD_LOGIC; BEGIN --generacion del estado futuro d1 <= ((slow) AND (NOT q1) AND (q0)); d0 <= ((NOT q1) AND (NOT q0)); --generacin de las salidas read <= ((NOT q1) AND (NOT q0)); write <= ((NOT q1) AND (q0)); --generacin del estado actual, reset asincrono

Modelo en flujo de datos


Utilizando asignacin condicional de seal solamente y funcin para la deteccin de flancos

d1 = slow q1 q0 (reset) d0 = q1 q0 (reset)

read = q1 q0 write = q1 q0

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 Tecnologa de Sistemas Informticos - Facultad de Informtica Universidad Politcnica de Madrid - V. Rodellar 30

Resultados de simulacin del modelo en flujo de datos

Obsrvese el comportamiento asincrono de la seal de reset y como con el flanco de subida del reloj se actualizan los valores de la memoria

Departamento de Arquitectura y Tecnologa de Sistemas Informticos - Facultad de Informtica Universidad Politcnica de Madrid - V. Rodellar

31

Modelo estructural
slow q0 Nq0 q1 Nq1

d1 = slow q1 q0 (reset) d0 = q1 q0(reset)

read = q1 q0 = d0
Aux1=write

write = q1 q0 Componentes necesarios:


Inversores Puertas AND

d1

read

FF
clock

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 clock d0 FF clock read

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

Comparacin entre los modelos de Mealy y Moore


O(t) = F1( S(t), I(t)) S(t+1) = F2 (I(t), S(t))
O(t) Salidas (combinacional)

Las salidas y el estado futuro dependen de las mismas entradas, pueden agruparse en el mismo proceso
I(t) inputs S(t+1) Estado futuro y salidas (Combinacional) S(t+1) Estado actual Registro (Secuencial) O(t)

Estado futuro (Combinacional) inputs I(t) Estado actual S(t) Registro (Secuencial) clock Departamento de Arquitectura y Tecnologa de Sistemas Informticos - Facultad de Informtica Universidad Politcnica de Madrid - V. Rodellar 34 S(t) clock

3.3.2 Realizacin de un modelo de Mealy


Ejemplo de un detector de la secuencia 010
0/0 1/0 0/0
ninguno uno

1/0
dos

0/1
tres

0/0

0/0 1/0 1/0

Departamento de Arquitectura y Tecnologa de Sistemas Informticos - Facultad de Informtica Universidad Politcnica de Madrid - V. Rodellar

35

--------------------------------------------------------------------------------- Universidad Politcnica de Madrid -- Se permite copia para fines de estudio --------------------------------------------------------------------------------- Proyecto : Maquinas de estados finitos -- Diseo : Detector de secuencia 010 -- Nombre del fichero : Detector010_mealy_B.vhd -- Autor : Profesores de Tecnologia -- Fecha : 30/5/2005 -- Versin : 1.0 -- Resumen : Este fichero contiene la entidad y arquitectura de -una una FSM que implementa un dectector de la -secuencia 010 como una mquina de Mealy. Se han utilizado -datos tipo bit. No tiene reset. --- Modificaciones: --- Fecha Autor Versin Descripcin 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 Tecnologa de Sistemas Informticos - Facultad de Informtica Universidad Politcnica de Madrid - V. Rodellar 36

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;

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;
0/0

0/0 uno 0/0

1/0 dos 0/0 1/0

0/1 tres

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 Tecnologa de Sistemas Informticos - Facultad de Informtica Universidad Politcnica 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 Tecnologa de Sistemas Informticos - Facultad de Informtica Universidad Politcnica de Madrid - V. Rodellar 39

Mealy: la salida cambia con la generacin del estado futuro a los 19 ns

Departamento de Arquitectura y Tecnologa de Sistemas Informticos - Facultad de Informtica Universidad Politcnica de Madrid - V. Rodellar

40

3.3.3 Realizacin de un modelos de Moore


Ejemplo de un detector de la secuencia 010
0 1 0
ninguno /0 uno

1
dos

0
Tres /1 /0

/0

0 1

Departamento de Arquitectura y Tecnologa de Sistemas Informticos - Facultad de Informtica Universidad Politcnica de Madrid - V. Rodellar

41

--------------------------------------------------------------------------------- Universidad Politcnica de Madrid -- Se permite copia para fines de estudio --------------------------------------------------------------------------------- Proyecto : Maquinas de estados finitos -- Diseo : Detector de secuencia 010 -- Nombre del fichero : Detector010_moore_B.vhd -- Autor : Profesores Tecnologa -- Fecha : 30/5/2005 -- Versin : 1.0 -- Resumen : Este fichero contiene la entidad y arquitectura de una una FSM que implementa un dectector de la -secuencia 010 como una mquina de Moore. Se han utilizado datos tipo bit. No tiene reset. Se ha -realizado mediante tres procesos --- Modificaciones: --- Fecha Autor Versin Descripcin 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 Tecnologa de Sistemas Informticos - Facultad de Informtica Universidad Politcnica 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 END CASE;
END PROCESS resultado; Departamento de Arquitectura y Tecnologa de Sistemas Informticos - Facultad de Informtica Universidad Politcnica de Madrid - V. Rodellar 43

=> salida <= '0'; => salida <= '0'; => salida <= '0'; => salida <= '1';

-- 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 Tecnologa de Sistemas Informticos - Facultad de Informtica Universidad Politcnica 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 Tecnologa de Sistemas Informticos - Facultad de Informtica Universidad Politcnica de Madrid - V. Rodellar

45

Moore: La salida cambia con el estado actual a los 25 ns

Departamento de Arquitectura y Tecnologa de Sistemas Informticos - Facultad de Informtica Universidad Politcnica de Madrid - V. Rodellar

46

Ejercicio para los alumnos:


1) Modificar el cdigo anterior para utilizar datos STD_LOGIC. 2) Realizar el diseo del detector en estilo de flujo de datos. 3) Realizar el diseo del detector en estilo estructural. 4) Realizar el test de los diseos anteriores con el test de la transparecia 39. 5) Analizar los resultados de simulacin.
Departamento de Arquitectura y Tecnologa de Sistemas Informticos - Facultad de Informtica Universidad Politcnica de Madrid - V. Rodellar 47

RESUMEN:
-Se han de utilizar datos de tipo enumerado para definir los estados de la mquina -Han de definirse dos seales para llevar el control del estado actual y el futuro -Si la mquina es de Moore se han de utilizar tres procesos -Si la mquina es de Mealy es suficiente con utilizar dos procesos -Si la maquina tiene reset sncrono no es necesario que reset aparezca en la lista de sensibilidad - Si el reset es asncrono necesariamente ha de aparecer en la lista de sensiblidad
Departamento de Arquitectura y Tecnologa de Sistemas Informticos - Facultad de Informtica Universidad Politcnica de Madrid - V. Rodellar 48

Вам также может понравиться