使用 VHDL 和 Verilog 在 FPGA 中进行高效 LFSR 设计
FPGA 中的 LFSR – VHDL 和 Verilog 代码
线性反馈移位寄存器如何在 FPGA 内部工作
LFSR 代表线性反馈移位寄存器,它是一种在 FPGA 内部有用的设计。 LFSR 易于综合,这意味着它们占用相对较少的资源,并且可以在 FPGA 内部以非常高的时钟速率运行。有许多应用程序可以从使用 LFSR 中受益,包括:
- 计数器
- 测试模式生成器
- 数据加扰
- 密码学
线性反馈移位寄存器作为 FPGA 内部的一系列触发器实现,这些触发器连接在一起作为移位寄存器。移位寄存器链的多个抽头用作 XOR 的输入 或同或 门。该门的输出然后用作反馈 到移位寄存器链的开头,因此反馈在 LFSR 中。
使用 XNOR 门的 5 位 LFSR
当 LFSR 运行时,各个触发器生成的模式是伪随机的,这意味着它接近随机。它不是完全随机的,因为从 LFSR 模式的任何状态,您都可以预测下一个状态。需要注意移位寄存器的一些属性:
- LFSR 模式是伪随机的。
- 输出模式是确定性的。您可以通过了解异或门的位置以及当前模式来计算出下一个状态。
- 当抽头使用异或门时,不会出现全 0 的模式。由于 0 与 0 异或将始终产生 0,因此 LFSR 将停止运行。
- 当抽头使用 XNOR 门时,不会出现全 1 的模式。由于 1 与 1 进行异或运算总是会产生 1,因此 LFSR 将停止运行。
- 任意 LFSR 的最大可能迭代次数 =2Bits-1
较长的 LFSR 将花费更长的时间来运行所有迭代。 N 位 LFSR 的最长可能迭代次数是 2N-1。如果你想一想,N 位长的东西的所有可能模式是 2N。因此,只有一种模式无法使用 LFSR 来表达。当使用 XOR 门时,该模式为全 0;当使用 XNOR 门作为反馈门时,该模式为全 1。
VHDL 和 Verilog 代码可创建您想要的任何 N 位宽 LFSR。它使用多项式(这是 LFSR 背后的数学原理)来为每个位宽创建最大可能的 LFSR 长度。因此,对于 3 位,需要 23-1=7 个时钟来运行所有可能的组合,对于 4 位:24-1=15,对于 5 位:25-1=31 等。我基于 XNOR 实现来允许 FPGA 在 LFSR 上以全零状态启动。以下是 Xilinx 发布的所有 LFSR 模式的完整表格。
VHDL 实现:
LFSR.vhd
<前>07前>测试平台(LFSR_TB.vhd)
<前>16前>Verilog 实现:
LFSR.v
<前>24前>测试平台(LFSR_TB.v)
<前>38前>Verilog