Академический Документы
Профессиональный Документы
Культура Документы
Departamento de Arquitectura y Tecnologa de Sistemas Informticos - Facultad de Informtica Universidad Politcnica de Madrid - V. Rodellar
Departamento de Arquitectura y Tecnologa de Sistemas Informticos - Facultad de Informtica Universidad Politcnica de Madrid - V. Rodellar
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
(FSMs)
Estructura de Mealy
inputs I(t)
S(t+1) Estado futuro (Combinacional) inputs I(t) Estado actual clock S(t) Registro (Secuencial) 5 clock S(t+1)
Departamento de Arquitectura y Tecnologa de Sistemas Informticos - Facultad de Informtica Universidad Politcnica de Madrid - V. Rodellar
1) Diagrama-Tabla de estados, ASM entrada estado salida entrada/salida estado estado Mealy
6
Comportamiento o algortmico
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) = ................
Estructural
Mquina de Moore
Retardo en la operacin de lectura en una memoria RAM
Slow (S)
Clock
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
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;
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
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
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;
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
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
Departamento de Arquitectura y Tecnologa de Sistemas Informticos - Facultad de Informtica Universidad Politcnica de Madrid - V. Rodellar
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;
reset
Departamento de Arquitectura y Tecnologa de Sistemas Informticos - Facultad de Informtica Universidad Politcnica de Madrid - V. Rodellar
18
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
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
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
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
Salida ( combinacional)
reset
Salida ( combinacional)
reset
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
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
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
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
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
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
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
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
read = q1 q0 = d0
Aux1=write
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
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
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
1/0
dos
0/1
tres
0/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/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
Departamento de Arquitectura y Tecnologa de Sistemas Informticos - Facultad de Informtica Universidad Politcnica de Madrid - V. Rodellar
40
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
Departamento de Arquitectura y Tecnologa de Sistemas Informticos - Facultad de Informtica Universidad Politcnica de Madrid - V. Rodellar
46
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