TU-VHDL/10_LFSR_Example/design.vhd
2025-02-10 20:28:13 +01:00

32 lines
1.1 KiB
VHDL

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.NUMERIC_STD.ALL;
entity LFSR is
Port ( clk : in std_logic;
value32 : out std_logic_vector (31 downto 0);
value16 : out std_logic_vector (15 downto 0);
value8 : out std_logic_vector ( 7 downto 0));
end LFSR;
architecture Behavioral of LFSR is
signal rnd32 : std_logic_vector (31 downto 0) := (others=>'0');
signal rnd16 : std_logic_vector (15 downto 0) := (others=>'0');
signal rnd8 : std_logic_vector ( 7 downto 0) := (others=>'0');
begin
process begin
wait until rising_edge(CLK);
-- 8Bit
rnd8(7 downto 1) <= rnd8(6 downto 0) ;
rnd8(0) <= not(rnd8(7) XOR rnd8(6) XOR rnd8(4));
-- 16Bit
rnd16(15 downto 1) <= rnd16(14 downto 0) ;
rnd16(0) <= not(rnd16(15) XOR rnd16(14) XOR rnd16(13) XOR rnd16(4));
-- 32 Bit
rnd32(31 downto 1) <= rnd32(30 downto 0) ;
rnd32(0) <= not(rnd32(31) XOR rnd32(22) XOR rnd32(2) XOR rnd32(1));
end process;
value32 <= rnd32;
value16 <= rnd16;
value8 <= rnd8;
end Behavioral;