Paso 2: Descripción de los registros de estado
registros: process(clk, rst)
begin
if rst = '1' then
estado_actual <= A;
elsif rising_edge(clk) then
estado_actual <= estado_siguiente;
end if;
end process;
Diseño de una máquina de Mealy: Detector de “101”
Máquinas de estado (FSM)
Paso 3: Descripción de los bloques combinacionales de
próximo estado y de salida
transiciones: process(estado_actual, secuencia)
begin
case estado_actual is
when A =>
if secuencia = '1' then
estado_siguiente <= B;
det_flag <= '0';
else
estado_siguiente <= A;
det_flag <= '0';
end if;
…
Diseño de una máquina de Mealy: Detector de “101”
Máquinas de estado (FSM)
…
when B =>
if secuencia = '1' then
estado_siguiente <= B;
det_flag <= '0';
else
estado_siguiente <= C;
det_flag <= '0';
end if;
…
Diseño de una máquina de Mealy: Detector de “101”
Máquinas de estado (FSM)
Diseño de una máquina de Mealy: Detector de “101”
…
when C =>
if secuencia = '1' then
estado_siguiente <= B;
det_flag <= '1';
else
estado_siguiente <= A;
det_flag <= ‘0';
end if;
end case;
end process;
end;
Máquinas de estado (FSM)
Reporte de síntesis (ISE)
Máquinas de estado (FSM)
Reporte de síntesis (ISE)
Máquinas de estado (FSM)
Esquemático (ISE – RTL Schematic)
Máquinas de estado (FSM)
Esquemático (ISE – RTL Schematic)
Máquinas de estado (FSM)
Esquemático (ISE – Technology Schematic)
Máquinas de estado (FSM)
Diseño de una máquina de Mealy: Simulación (ISim)
Máquinas de estado (FSM)
Diseño de una máquina de Moore: Detector de “101”
Máquinas de estado (FSM)
Consiste en 3 pasos:
Definición de los estados
Descripción de los registros de estado
Descripción de los bloques combinacionales de próximo
estado y de salida
Diseño de una máquina de Moore: Detector de “101”
Máquinas de estado (FSM)
Paso 1: Definición de los estados
architecture det_arq of detector is
type tipo_estado is (A, B1, B2, C);
signal estado_actual, estado_siguiente: tipo_estado;
begin
…
end;
Diseño de una máquina de Moore: Detector de “101”
Máquinas de estado (FSM)
Paso 2: Descripción de los registros de estado
registros: process(clk, rst)
begin
if rst = '1' then
estado_actual <= A;
elsif rising_edge(clk) then
estado_actual <= estado_siguiente;
end if;
end process;
Diseño de una máquina de Moore: Detector de “101”
Máquinas de estado (FSM)
Paso 3: Descripción de los bloques combinacionales de
próximo estado y de salida
Diseño de una máquina de Moore: Detector de “101”
transiciones: process(estado_actual, secuencia)
begin
case estado_actual is
when A =>
if secuencia = '1' then
estado_siguiente <= B1;
else
estado_siguiente <= A;
end if;
…
Máquinas de estado (FSM)
Diseño de una máquina de Moore: Detector de “101”
…
when B1 =>
if secuencia = '1' then
estado_siguiente <= B1;
else
estado_siguiente <= C;
end if;
when B2 =>
if secuencia = '1' then
estado_siguiente <= B1;
else
estado_siguiente <= C;
end if;
…
Máquinas de estado (FSM)
Diseño de una máquina de Moore: Detector de “101”
…
when C =>
if secuencia = '1' then
estado_siguiente <= B2;
else
estado_siguiente <= A;
end if;
end case;
end process;
det_flag <= '1' when estado_actual = B2 else '0';
end; — fin de la arquitectura
Máquinas de estado (FSM)
Reporte de síntesis de la máquina de Moore (ISE)
Máquinas de estado (FSM)
Reporte de síntesis de la máquina de Moore (ISE)
Máquinas de estado (FSM)
Esquemático de la máquina de Moore (ISE – RTL Schem)
Máquinas de estado (FSM)
Esquemático de la máquina de Moore (ISE – Tech Schem)
Máquinas de estado (FSM)
Diseño de una máquina de Moore: Simulación (ISim)
Máquinas de estado (FSM)
Página anterior | Volver al principio del trabajo | Página siguiente |