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

Universidad Politécnica de

Puebla

Ingeniería: Electrónica y
Telecomunicaciones

Materia: Análisis de dispositivos


electrónicos.

Nombre de la práctica: FSM

Numero de la Practica: #7

Realizado por: Bryan Guerra Fernández

Revisado por: Dr. Carolina Rosas Huerta

Fecha: Martes, 25 de Febrero del 2019


Objetivo: Que el alumno diseñe una maquina de de estados y la simule en VHDL

Desarrollo: Simule la FSM de la figura 8.2 del ejemplo 8.1 del libro Circuit Design with VHDL de la
página 164 0 176 del PDF

Codigo
library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

-- Uncomment the following library declaration if using

-- arithmetic functions with Signed or Unsigned values

--use IEEE.NUMERIC_STD.ALL;

-- Uncomment the following library declaration if instantiating

-- any Xilinx primitives in this code.

--library UNISIM;

--use UNISIM.VComponents.all;

entity sergio1 is

Port ( clk : in STD_LOGIC;

rst : in STD_LOGIC;

count : out STD_LOGIC_VECTOR (3 downto 0));

end sergio1;

ARCHITECTURE state_machine OF counter IS

TYPE state IS (zero, one, two, three, four,

five, six, seven, eight, nine);

SIGNAL pr_state, nx_state: state;

BEGIN

PROCESS (rst, clk)

BEGIN

IF (rst='1') THEN

pr_state <= zero;


ELSIF (clk'EVENT AND clk='1') THEN

pr_state <= nx_state;

END IF;

END PROCESS;

PROCESS (pr_state)

BEGIN

CASE pr_state IS

WHEN zero =>

count <= "0000";

nx_state <= one;

WHEN one =>

count <= "0001";

nx_state <= two;

WHEN two =>

count <= "0010";

nx_state <= three;

WHEN three =>

count <= "0011";

nx_state <= four;

WHEN four =>

count <= "0100";

nx_state <= five;

WHEN five =>

count <= "0101";

nx_state <= six;

WHEN six =>

count <= "0110";

nx_state <= seven;

WHEN seven =>


count <= "0111";

nx_state <= eight;

WHEN eight =>

count <= "1000";

nx_state <= nine;

WHEN nine =>

count <= "1001";

nx_state <= zero;

END CASE;

END PROCESS;

END state_machine;

Test Bench

Simulación
B) Realice y simule una maquina de estados para el siguiente contador

Codigo
library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

-- Uncomment the following library declaration if using

-- arithmetic functions with Signed or Unsigned values

--use IEEE.NUMERIC_STD.ALL;

-- Uncomment the following library declaration if instantiating

-- any Xilinx primitives in this code.

--library UNISIM;

--use UNISIM.VComponents.all;

entity counter is

Port ( clk : in STD_LOGIC;

rst : in STD_LOGIC;

count : out STD_LOGIC_VECTOR (3 downto 0));

end counter;

ARCHITECTURE state_machine OF counter IS

TYPE state IS (zero, three,

five, seven, nine, eleven);

SIGNAL pr_state, nx_state: state;

BEGIN

PROCESS (rst, clk)

BEGIN

IF (rst='1') THEN

pr_state <= zero;

ELSIF (clk'EVENT AND clk='1') THEN

pr_state <= nx_state;


END IF;

END PROCESS;

PROCESS (pr_state)

BEGIN

CASE pr_state IS

WHEN zero =>

count <= "0000";

nx_state <= three;

WHEN three =>

count <= "0011";

nx_state <= five;

WHEN five =>

count <= "0101";

nx_state <= seven;

WHEN seven =>

count <= "0111";

nx_state <= nine;

WHEN nine =>

count <= "1001";

nx_state <= eleven;

WHEN eleven =>

count <= "1011";

nx_state <= zero;

END CASE;

END PROCESS;

END state_machine;
Test Bench

Simulación

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