ml_lfsr.vhd

来自「BIST 电路IP核的VHDL语言源代码」· VHDL 代码 · 共 43 行

VHD
43
字号
library IEEE;
use IEEE.std_logic_1164.all;

entity maximal_length_lfsr is
port (
  clock    : std_ulogic;
  reset    : std_ulogic;
  data_out : out std_ulogic_vector(9 downto 0)
);
end maximal_length_lfsr;

architecture modular of maximal_length_lfsr is

  signal lfsr_reg : std_ulogic_vector(9 downto 0);
  
  -- consider writing a tip on how to use generates to implement only the taps
  -- required from a generic rather than implementing a full-blown NSL block
  -- for all possible tap combos - which is what you get in a process - prove
  -- or disprove

    signal cycle : integer := -1;

begin

  process (clock)
    variable lfsr_tap : std_ulogic;
  begin
    if clock'EVENT and clock='1' then
      if reset = '1' then
        lfsr_reg <= (others => '1');
      else
        lfsr_tap := lfsr_reg(6) xor lfsr_reg(9);
        lfsr_reg <= lfsr_reg(8 downto 0) & lfsr_tap;
      end if;
    end if;
  end process;
  
  data_out <= lfsr_reg;
  
end modular;


⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?