参考一下,三位M序列发生器
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity mseq_sm is
generic(x:integer:=3);
port(
clk:in std_logic;
q: out std_logic_vector(x-1 downto 0)
);
end mseq_sm ;
architecture rt1 of mseq_sm is
signal reg:std_logic_vector(x-1 downto 0);
begin
process(clk)
begin
if clk'event and clk='1'then
if reg<="000" then
reg<="001";
else
reg<=((reg(0)xor reg(1)) & reg(x-1 downto 1));
end if;