⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 prbs_byte.tdf

📁 《FPGA嵌入式应用系统开发典型实例》-书的光盘资料
💻 TDF
字号:
-- 按字节方式产生伪随机码
--以下的程序是按字节方式产生伪随机图案,对于该程序中不同图案的选择采用不同的使能信号来控制,同样,程序中对不同的图案输出的极性按照表6-5的规定进行了相应的处理。
--////////////////////////////////////////////////////////////////////////////////////////////////////////////
--// 该电路为按比特方式产生伪随机码电路;                                                                   //
--// 该电路的输入信号为 prbs_byte_sel 和 byte_clock 信号;                                                   //
--// 其输出为 prbs_byte_out 信号;                                                                           //
--////////////////////////////////////////////////////////////////////////////////////////////////////////////

SUBDESIGN prbs_byte       -- 设计实体名;
(
	clock,en_9,en_10,en_11,en_15,en_20,en_23                : INPUT;
	prbs_byte_9[7..0],prbs_byte_10[7..0],prbs_byte_11[7..0] : OUTPUT;
	prbs_byte_15[7..0],prbs_byte_20[7..0],prbs_byte_23[7..0]: OUTPUT;
)
VARIABLE
    m[7..0][2..0]:DFF;          -- 说明一个 D 触发组;
BEGIN
  IF en_9 THEN --PRBS图案产生,n=9
    m[][].clk=clock;
    IF (m[][]!=H"0") THEN
    	m[][0].d=m[][1];
    	m[7][1].d=m[4][1] xor m[0][0];  m[6][1].d=m[7][0] xor m[3][0];
      m[5][1].d=m[6][0] xor m[2][0];  m[4][1].d=m[5][0] xor m[1][0];
      m[3][1].d=m[4][0] xor m[0][0];  m[2][1].d=m[7][1] xor m[3][0];
      m[1][1].d=m[6][1] xor m[2][0];  m[0][1].d=m[5][1] xor m[1][0];
    ELSE
    	m[0][0].d=VCC;
    END IF;
    prbs_byte_9[7]=m[6][0];  prbs_byte_9[6]=m[5][0];
    prbs_byte_9[5]=m[4][0];  prbs_byte_9[4]=m[3][0];
    prbs_byte_9[3]=m[2][0];  prbs_byte_9[2]=m[1][0];
    prbs_byte_9[1]=m[0][0];  prbs_byte_9[0]=m[7][0];
  END IF;   

  IF en_10 THEN --PRBS图案产生,n=10
    m[][].clk=clock;
    IF (m[][]!=H"0") THEN
    	m[][0].d=m[][1];
    	m[7][1].d=m[6][1] xor m[1][0];  m[6][1].d=m[5][1] xor m[0][0];
      m[5][1].d=m[7][0] xor m[4][0];  m[4][1].d=m[6][0] xor m[3][0];
      m[3][1].d=m[5][0] xor m[2][0];  m[2][1].d=m[4][0] xor m[1][0];
      m[1][1].d=m[3][0] xor m[0][0];  m[0][1].d=m[7][1] xor m[2][0];
    ELSE
    	m[0][0].d=VCC;
    END IF;
    prbs_byte_9[7]=!m[5][0];  prbs_byte_9[6]=!m[4][0];
    prbs_byte_9[5]=!m[3][0];  prbs_byte_9[4]=!m[2][0];
    prbs_byte_9[3]=!m[1][0];  prbs_byte_9[2]=!m[0][0];
    prbs_byte_9[1]=!m[7][0];  prbs_byte_9[0]=!m[6][0];
   
  IF en_11 THEN --PRBS图案产生,n=11
    m[][].clk=clock;
    IF (m[][]!=H"0") THEN
    	m[][0].d=m[][1];
    	m[7][1].d=m[2][0] xor m[0][0];  m[6][1].d=m[7][1] xor m[1][0];
      m[5][1].d=m[6][1] xor m[0][0];  m[4][1].d=m[7][0] xor m[5][0];
      m[3][1].d=m[6][0] xor m[4][0];  m[2][1].d=m[5][0] xor m[3][0];
      m[1][1].d=m[4][0] xor m[2][0];  m[0][1].d=m[3][0] xor m[1][0];
    ELSE
    	m[0][0].d=VCC;
    END IF;
    prbs_byte_9[7]=m[4][0];  prbs_byte_9[6]=m[3][0];
    prbs_byte_9[5]=m[2][0];  prbs_byte_9[4]=m[1][0];
    prbs_byte_9[3]=m[0][0];  prbs_byte_9[2]=m[7][0];
    prbs_byte_9[1]=m[6][0];  prbs_byte_9[0]=m[5][0];  

  IF en_15 THEN --PRBS图案产生,n=15
    m[][].clk=clock;
    IF (m[][]!=H"0") THEN
    	m[][0].d=m[][1];
    	m[7][1].d=m[6][0] xor m[5][0];  m[6][1].d=m[5][0] xor m[4][0];
      m[5][1].d=m[4][0] xor m[3][0];  m[4][1].d=m[3][0] xor m[2][0];
      m[3][1].d=m[2][0] xor m[1][0];  m[2][1].d=m[1][0] xor m[0][0];
      m[1][1].d=m[7][1] xor m[0][0];  m[0][1].d=m[7][0] xor m[6][0];
    ELSE
    	m[0][0].d=VCC;
    END IF;
    prbs_byte_9[7]=!m[0][0];  prbs_byte_9[6]=!m[7][0];
    prbs_byte_9[5]=!m[6][0];  prbs_byte_9[4]=!m[5][0];
    prbs_byte_9[3]=!m[4][0];  prbs_byte_9[2]=!m[3][0];
    prbs_byte_9[1]=!m[2][0];  prbs_byte_9[0]=!m[1][0];    

  IF en_20 THEN --PRBS图案产生,n=20
    m[][].clk=clock;
    IF (m[][]!=H"0") THEN
    	m[][0].d=m[][1];
    	m[][1].d=m[][2];
    	m[7][2].d=m[3][0] xor m[0][0];  m[6][2].d=m[7][1] xor m[2][0];
      m[5][2].d=m[6][1] xor m[1][0];  m[4][2].d=m[5][1] xor m[0][0];
      m[3][2].d=m[7][0] xor m[4][0];  m[2][2].d=m[6][0] xor m[3][0];
      m[1][2].d=m[5][0] xor m[2][0];  m[0][2].d=m[4][0] xor m[1][0];
    ELSE
    	m[0][0].d=VCC;
    END IF;
    prbs_byte_9[7]=m[3][0];  prbs_byte_9[6]=m[2][0];
    prbs_byte_9[5]=m[1][0];  prbs_byte_9[4]=m[0][0];
    prbs_byte_9[3]=m[7][0];  prbs_byte_9[2]=m[6][0];
    prbs_byte_9[1]=m[5][0];  prbs_byte_9[0]=m[4][0];    

  IF en_23 THEN  --PRBS图案产生,n=23
    m[][].clk=clock;
    IF (m[][]!=H"0") THEN
    	m[][0].d=m[][1];
    	m[][1].d=m[][2];
    	m[7][2].d=m[6][0] xor m[1][0];  m[6][2].d=m[5][0] xor m[0][0];
      m[5][2].d=m[7][1] xor m[4][0];  m[4][2].d=m[6][1] xor m[3][0];
      m[3][2].d=m[5][1] xor m[2][0];  m[2][2].d=m[4][1] xor m[1][0];
      m[1][2].d=m[3][1] xor m[0][0];  m[0][2].d=m[7][0] xor m[2][0];
    ELSE
    	m[0][0].d=VCC;
    END IF;
    prbs_byte_9[7]=!m[0][0];  prbs_byte_9[6]=!m[7][0];
    prbs_byte_9[5]=!m[6][0];  prbs_byte_9[4]=!m[5][0];
    prbs_byte_9[3]=!m[4][0];  prbs_byte_9[2]=!m[3][0];
    prbs_byte_9[1]=!m[2][0];  prbs_byte_9[0]=!m[1][0];   
END;

⌨️ 快捷键说明

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