LAB_4. Maquina de estados 1.

LAB_4. Maquina de estados tipo Moore





A continuación se muestra el proceso de implementación de máquinas de estado tipo Moore sobre la basys 2 siéndo la siguiente la estructura escogida:


---------------------------------------------------------------------------------






LAB_4. Código en Xilinx de la máquina de estados


library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

-- Uncomment the following library declaration if using
-- Uncomment the following library declaration if instantiating
entity maquina_1 is
architecture Behavioral of maquina_1 is
begin
FFs: process (clk, reset)
output : process (currentstate)

-- arithmetic functions with Signed or Unsigned values
--use IEEE.NUMERIC_STD.ALL;

-- any Xilinx primitives in this code.
--library UNISIM;
--use UNISIM.VComponents.all;

 port (
        a: in  STD_LOGIC;
           b : in STD_LOGIC;
           y : out  STD_LOGIC_vector (2 downto 0);
  clk : in STD_LOGIC;
       reset : in STD_LOGIC);
         
end maquina_1;

type estado is (s1,s2,s3,s4,s5,idle);
signal nextstate , currentstate :estado;

siguiente : process (a,b,currentstate)
begin
case Currentstate is
when idle=>
Nextstate <= s1;
when s1 =>
if a ='1' then
Nextstate <= s2;
else
Nextstate <= s1;
end if
When s2=>
if a ='0' and b = '1' then
Nextstate <=s3;
elsif a ='1' and b = '1' then
Nextstate <= s4;
elsif a ='1' and b = '0' then
Nextstate <= s5;
else Nextstate <= s2;
end if;
when s3 =>
Nextstate <= s4;
when s4 =>
nextstate <= idle;
when s5 =>
nextstate <= idle;
end case;
end process;

begin
if reset = '1' then
currentstate <= idle;
elsif clk'event and clk='1' then
currentstate <= nextstate;
end if;
end process;

begin
case Currentstate is
when idle =>
y <= "000";
when s1 =>
y <= "101";
when s2 =>
y <= "111";
when s3 =>
y <= "011";
when s4 =>
y <= "000";
when s5 =>
y <= "100";
end case  ;
end process;

end Behavioral;





No hay comentarios:

Publicar un comentario