rtps-fpga/syn/test3.vhd
Greek b47d409f13 Make codebase Quartus synthesizable
Remove non-Quartus-supported VHDL 2008 features.
Remove inferred Latches.
Add test Entities to see resulting hw synthesis of various code
segments.
2021-12-07 13:05:24 +01:00

74 lines
1.8 KiB
VHDL

library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
use work.math_pkg.all;
use work.rtps_package.all;
-- Test how FSM states guarded with a synthesis guard are handled.
entity test3 is
generic (
BUILD : boolean := FALSE
);
port (
clk : in std_logic;
reset : in std_logic;
input : in std_logic_vector(31 downto 0);
output : out std_logic_vector(31 downto 0)
);
end entity;
architecture arch of test3 is
type STAGE_TYPE is (IDLE, STATE1, STATE2);
signal stage, stage_next : STAGE_TYPE := IDLE;
begin
process(all)
begin
stage_next <= stage;
output <= (others => '0');
case (stage) is
when IDLE =>
case (input) is
when x"00000000" =>
if (BUILD) then
stage_next <= STATE1;
else
stage_next <= STATE2;
end if;
when x"00000001" =>
stage_next <= STATE2;
when others =>
null;
end case;
when STATE1 =>
if (BUILD) then
stage_next <= IDLE;
output <= x"DEADBEEF";
end if;
when STATE2 =>
stage_next <= IDLE;
output <= x"BEEFDEAD";
when others =>
null;
end case;
end process;
sync : process(all)
begin
if rising_edge(clk) then
if (reset = '1') then
stage <= IDLE;
else
stage <= stage_next;
end if;
end if;
end process;
end architecture;