描述
伽罗瓦线性反馈移动寄存器
该项目是用VHDL语音实现伽罗瓦线性反馈移位寄存器(LFSR),并且该项目可用于PRBS生成与同步、CRC计算、加扰和解扰、加密等项目中
。这种设计是非常通用的/参数化,在某种意义上说,它能够根据用户的输入(使用VHDL语言),智能化的“创造”(或生成)线性反馈移
位寄存器结构。在LFSR实体(伽罗瓦lfsr.vhdl)中,有一个通用的头文件,它允许我们为此线性反馈移位寄存器输入一个头文件地址的矢
量。
例如,要用多项式 x^8 + x^2 + x + 1来创建一个线性反馈移位寄存器, 你只需要指定一个头文件矢量(0,1,2,8),寄存器就会输出
0,1,2,8被锁定了。指定头文件向量与正确的头文件地址后, 只需将向量映射到线性反馈移位寄存器的实例中即可,如下所示:
/* user.vhdl example file. */
i_lfsr: entity work.lfsr(rtl) generic map(
taps => (
/* Specify the tap vector here. */
0|1|2|8=>true,
7 downto 3=>false
)
)
port map(...);
需要注意的是,该设计是通过与以前头文件中每一个异或门的输入连接,假定的最大头文件地址才被反馈到所有以前的头文件中。
我们可以使用Mentor Graphics Questa/ ModelSim进行仿真该设计,只需进入到测试平台,并从Unix提示符中执行simulate.sh即可:
$ ./simulate.sh
如果你已经安装了ModelSim/QuestaSim,运行脚本后,界面就会出现。
目前,我们只对Linux / Unix系统提供了模拟脚本。如果你在仿真时需要帮忙,请联系我们,我们会为你传送单独的指令。
如果你使用的是其他模拟器,让我们知道该软件是怎么工作的。该项目的目的是让这个核心尽可能的独立于供应商。
This design synthesises in Quartus.该设计实在Quartus中综合的。在接下来的几周里,我们会在硬件上对该核心进行核实。我们也计划
在塞琳思的FPGA开发板上核实该核心。敬请期待更新。
请注意,如果您在Quartus中设定的选项是VHDL-2008版本,将会造成Quartus不支持boolean_vector和integer_vector。所以,我们需要添
加这些定义进行合成。 你可以在一个单独的文件中找到这些定义(packages/pkg-types.vhdl):
type boolean_vector is array(natural range <>) of boolean;
type integer_vector is array(natural range <>) of integer;
VHDL-2008新增的一些功能是非常有用的,如果你的软件供应商还不支持这个,那么你要建议他们增加这些功能。
|