具有线性反馈移位寄存器 (LFSR) 的伪随机数发生器 (Verilog)

特性

下面的主题涵盖使用 Lattice Diamond Design 设计软件2.0.1版。

•线性反馈移位寄存器概述
•使用中心极限定理和反馈来塑造分布
•基本 LFSR_Plus.V核心选项和配置
•使用测试台(Verilog测试夹具)
•将伪随机数字写入文件

介绍

该 Verilog 模块使用2个线性反馈移位寄存器 (LFSR),其中一个具有最大序列长度的多项式,其中一个可扩展到输出字长(4至24位),另一个可作为非均匀占空比时钟操作。该模块为用户提供了4种输出分布类型的选项,高斯单峰,双峰,均匀和非均匀分布。这些分布是通过改变可扩展的 LFSR 输出来创建的,通过使用非均匀时钟不规则地对输出进行时钟,将缩放的输出转移到缓冲加法器树中,以有效地使用中心极限定理来创建正态分布,并通过反馈回路进一步塑造分布。样本直方图包含在下面的图中。

LFSR_Plus。V模块通过将伪随机值写入文件在测试台中进行验证。这些数据可以输入到自己喜欢的统计分析软件包中进行验证。本例使用Excel统计插件包生成直方图。

背景

LFSR 是一个任意长度的移位寄存器,它的输入基于从前一状态导出的线性函数。选择这个函数是为了提供一个最大长度的序列。随着输出宽度的缩放,使用多项式构建不同的 LFSR 以提供最大长度。使用的多项式在 Verilog 模块中有注释。

本设计所需/使用的软件:

• Lattice Diamond Design 设计软件2.0.1版与第三方软件 Synplify Pro 的 Lattice 和 Active-HDL Lattice 版。

应用

构建电路

LFSR_Plus.V 可以通过改变模块实体块内泛型参数内的值来配置。输出字宽可以从4位缩放到24位。可以选择输出分布的类型。可以通过改变模块实体中的通用“V”值来改变用于时钟的 LFSR 的大小。查看模块内的注释以获得进一步的指导。

设计有两个输出端口,“u_noise_out”和“g_noise_out”用于更快的验证,仿真时两个文件可以同时写入两个。可以修改设计,在模块内进行一些Verilog更改,将完整的功能包含在一个输出端口中。

4-bit、单峰和统一输出实现的RTL图见下面的图1。

1 - LFSR_Plus RTL

(w-1)位宽总线移位 FIFO 用于实现中心极限定理并创建高斯分布。示例“g_noise_out”分布直方图可以在下面的图2到13中找到

2 - g_noise_out 端口的 6-Bit 单峰分布

3 - g_noise_out 端口的 6-Bit 双峰分布

4 - 来自“ g_noise_out 端口的 8-Bit 单峰分布

5 - g_noise_out 端口的 8-Bit 双峰分布

6 - 来自“ g_noise_out 端口的 10-Bit 单峰分布

7 - g_noise_out 端口的 10-Bit 双峰分布

8 - g_noise_out 端口的 13-Bit 单峰分布

9 - g_noise_out 端口的 13-Bit 双峰分布

10 - g_noise_out 端口的 19-Bit 单峰分布

11 - g_noise_out 端口的 19-Bit 双峰分布

12 - 来自“ g_noise_out 端口的 21 -Bit 单峰分布

13 - 来自“ g_noise_out 端口的 21 -Bit 双峰分布

示例“u_noise_out”分布直方图可以在下面的图14到17中找到。

14 - u_noise_out 端口的 8 -Bit 均匀分布

15 - u_noise_out 端口的 8 -Bit 平均均匀分布

16 - u_noise_out 端口的 19 -Bit 均匀分布

17 - u_noise_out 端口的 19 -Bit 平均均匀分布

所包含的测试台是通过“HDL Diagram”窗口中的“generate测试台模板”命令创建的。检查“LSFR_Plus_tf.v”文件通过阅读Verilog注释来理解。创建两个文件并打开进行写入;将“g_noise_out”和“u_noise_out”的输出数据写入这两个打开的文件。模拟足够长的时间,生成足够的数据,使其具有统计学意义。

设计软件

使用 Lattice Diamond 设计软件2.0.1版开发“LFSR_Plus.v”的支持软件来自 Synopsis (Synplify Pro for Lattice)和 Aldec (Active-HDL Lattice Edition)。Diamond 可以作为一个独立的开发环境,使用替代的合成和仿真软件。

结论

本设计演示了使用 Lattice Diamond 设计软件实现基于 LFSR 的伪随机序列发生器。测试台突出了该软件打开文件并向其写入输出数据以进行后仿真分析的能力。

额外的信息

进一步的设计支持、产品教程、应用说明、用户指南和其他文档可以在 Lattice 网站上找到

附录:下载

LFSR_Plus.v (11.2 KB)
LFSR_Plus_tf.v (1.5 KB)