forked from mirrors/nixpkgs
46 lines
958 B
VHDL
46 lines
958 B
VHDL
|
library IEEE;
|
||
|
use IEEE.STD_LOGIC_1164.all;
|
||
|
use IEEE.NUMERIC_STD.ALL;
|
||
|
use IEEE.STD_LOGIC_MISC.or_reduce;
|
||
|
|
||
|
entity simple is
|
||
|
|
||
|
port (
|
||
|
CLK, RESET : in std_ulogic;
|
||
|
DATA_OUT : out std_ulogic_vector(7 downto 0);
|
||
|
DONE_OUT : out std_ulogic
|
||
|
);
|
||
|
end simple;
|
||
|
|
||
|
architecture beh of simple is
|
||
|
|
||
|
signal data : std_ulogic_vector(7 downto 0);
|
||
|
signal done: std_ulogic;
|
||
|
|
||
|
begin
|
||
|
|
||
|
proc_ctr : process(CLK)
|
||
|
begin
|
||
|
if (CLK = '1' and CLK'event) then
|
||
|
if (RESET = '1') then
|
||
|
data <= "01011111";
|
||
|
done <= '0';
|
||
|
else
|
||
|
case data is
|
||
|
when "00100000" => data <= "01001110";
|
||
|
when "01001110" => data <= "01101001";
|
||
|
when "01101001" => data <= "01111000";
|
||
|
when "01111000" => data <= "01001111";
|
||
|
when "01001111" => data <= "01010011";
|
||
|
when others => data <= "00100000";
|
||
|
end case;
|
||
|
done <= not or_reduce(data xor "01010011");
|
||
|
end if;
|
||
|
end if;
|
||
|
end process;
|
||
|
|
||
|
DATA_OUT <= data;
|
||
|
DONE_OUT <= done;
|
||
|
|
||
|
end beh;
|