基于FPGA的LFSR16位伪随机数产生算法实现,可以配置不同的随机数种子和改生成多项式,包含testbench

简介: 基于FPGA的LFSR16位伪随机数产生算法实现,可以配置不同的随机数种子和改生成多项式,包含testbench

1.算法仿真效果
vivado2019.2仿真结果如下:

573c64702c5ac01e04db3a5b5f4e9caa_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png
67bcb8a674e66b6af1e143cfa3fd298d_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png

2.算法涉及理论知识概要
LFSR(线性反馈移位寄存器)提供了一种在微控制器上快速生成非序列数字列表的简单方法。生成伪随机数只需要右移操作和 XOR 操作。LFSR 完全由其多项式指定。例如,6千-次多项式与每个项存在用方程 x 表示6+ x5+ x4+ x3+ x2+ x + 1。有 2 个(6 - 1)= 32 个这种大小的不同可能多项式。与数字一样,一些多项式是素数或原始数。我们对原始多项式感兴趣,因为它们会在移位时为我们提供最大长度周期。n 次的最大长度多项式将有 2n- 1个不同的州。每个班次后都会转换到新状态。因此,6千-次多项式将有 31 种不同的状态。1 到 31 之间的每个数字在重复之前都会出现在移位寄存器中。在基元 6 的情况下千-次多项式,只有六个。表 1 列出了所有基元 6千-次多项式及其各自的多项式掩码。多项式掩码是通过采用多项式的二进制表示并截断最右侧的位来创建的。掩码用于实现多项式的代码中。实现 n 的多项式掩码需要 n 位千-次多项式。

    每个基元多项式都有奇数项,这意味着基元多项式的每个掩码都有一个偶数 1 位。每个原始多项式还定义了第二个原始多项式,即它的对偶。可以通过从每项的多项式次数中减去指数来找到对偶。例如,给定 6千-次多项式,x6+ x + 1,它的对偶是 x6-6+ x6-1+ x6-0,等于 x6+ x5+ 1.在表 1 中,多项式 1 和 2、3 和 4、5 和 6 是彼此的对偶。表 2 列出了每个不同大小多项式的周期以及每个大小存在的基元多项式的数量。表 3 列出了每个不同大小的多项式的一个多项式掩码。它还显示了当 LFSR 初始化为 1 时,LFSR 在连续班次后将保持的前四个值。此表应有助于确保实现正确。

   LFSR 的值永远不会为零,因为归零的 LFSR 的每个偏移都会将其保留为零。LFSR 必须初始化,即种子,为非零值。当 LFSR 保持 1 并移动一次时,其值将始终为多项式掩码的值。当寄存器除最高有效位外全部为零时,接下来的几个偏移将显示高位偏移到零填充的低位。例如,任何具有基元多项式的 8 位移位寄存器最终将生成序列 0x80、0x40、0x20、0x10、8、4、2、1,然后生成多项式掩码。

    一般来说,基本的LFSR不会产生非常好的随机数。通过选择较大的LFSR并使用较低的位作为随机数,可以改进更好的数字序列。例如,如果您有一个 10 位 LFSR 并且想要一个 8 位数字,则可以将寄存器底部的 8 位作为您的号码。使用此方法,您将看到每个 8 位数字四次和零,三次,然后 LFSR 完成一个周期并重复。这解决了得到零的问题,但数字仍然没有表现出非常好的统计特性。相反,您可以将 LFSR 的子集用于随机数,以增加数字的排列并改善 LFSR 输出的随机属性。

   在获得随机数之前多次移动LFSR也可以改善其统计特性。将LFSR移动其周期的一个因子将使总周期长度减少该因子。表2列出了各期间的因素。

   LFSR 相对较短的周期可以通过将两个或多个不同大小的 LFSR 的值异或相处来解决。这些异或LFSR的新周期将是周期的LCM(最小公倍数)。例如,基元 4 位和基元 6 位 LFSR 的 LCM 是 LCM(15, 63),即 315。以这种方式加入 LFSR 时,请确保仅使用最小位数的 LFSR;使用少于此量是更好的做法。对于 4 位和 6 位 LFSR,不应使用超过底部的 4 位。在图 2 中,底部的 16 位用于 32 位和 31 位 LFSR。 请注意,对两个相同大小的 LFSR 进行异或运算不会增加周期。

   LFSR的不可预测性可以通过用反馈项对一点“熵”进行异或来增加。这样做时应该小心——加上熵位,LFSR 到所有零的可能性很小。如果定期添加熵,LFSR 的归零将自行校正。这种与反馈项进行异或的方法就是CRC(循环冗余校验)的计算方式。

   多项式不是生而相等的。有些多项式肯定会比其他多项式更好。表 2 列出了可用于最大 31 位大小的基元多项式的数量。尝试不同的多项式,直到找到满足您需求的多项式。表3中给出的掩模是随机选择的。

   可以使用NIST的统计测试套件进行更广泛的测试。NIST还有几本出版物描述了随机数测试和对其他测试软件的引用。

   通过一定的算法对事先选定的随机种子(seed)做一定的运算可以得到一组人工生成的周期序列,在这组序列中以相同的概率选取其中一个数字,该数字称作伪随机数,由于所选数字并不具有完全的随机性,但是从实用的角度而言,其随机程度已足够了。

   这里的“伪”的含义是,由于该随机数是按照一定算法模拟产生的,其结果是确定的,是可见的,因此并不是真正的随机数。伪随机数的选择是从随机种子开始的,所以为了保证每次得到的伪随机数都足够地“随机”,随机种子的选择就显得非常重要,如果随机种子一样,那么同一个随机数发生器产生的随机数也会一样。

8624ecb76a0e9245983f18b613998846_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png

   产生伪随机数的方法最常见的是利用一种线性反馈移位寄存器(LFSR)。它是由n个D触发器和若干个异或门组成的,如图: 

8bc84995e5635f942371b16bd945f97d_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png

   其中,gn为反馈系数,取值只能为0或1,取为0时表明不存在该反馈之路,取为1时表明存在该反馈之路;n个D触发器最多可以提供2^n-1个状态(不包括全0的状态),为了保证这些状态没有重复,gn的选择必须满足一定的条件。下面以n=3,g0=1,g1=1,g2=0,g3=1为例,说明LFSR的特性,具有该参数的LFSR结构如下图:

c597fc8af25123fa3003780e8509bca4_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png

3.Verilog核心程序
````timescale 1ns / 1ps
//
// Company:
// Engineer:

// Create Date: 2023/03/24 15:39:40
// Design Name:
// Module Name: TEST
// Project Name:
// Target Devices:
// Tool Versions:
// Description:
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
//

module TEST();

reg i_clk;
reg i_rst;
reg i_load;
reg [15:0] i_seed; //随机种子
wire [15:0] o_rand; //16位随机数

tops uut(
.i_clk (i_clk),
.i_rst (i_rst),
.i_load (i_load),
.i_seed (i_seed), //随机种子
.o_rand (o_rand) //16位随机数
);

initial
begin
i_clk=1'b1;
i_rst=1'b1;
i_load=1'b1;
i_seed=16'd12315;

1000

i_rst=1'b0;

100

i_load=1'b0;

500;

i_load=1'b1;
i_seed=16'd5285;

500;

i_load=1'b0;

800;

i_load=1'b1;
end

always #5 i_clk=~i_clk;

```

相关文章
|
3月前
|
机器学习/深度学习 运维 算法
基于粒子群优化算法的配电网光伏储能双层优化配置模型[IEEE33节点](选址定容)(Matlab代码实现)
基于粒子群优化算法的配电网光伏储能双层优化配置模型[IEEE33节点](选址定容)(Matlab代码实现)
230 0
|
3月前
|
存储 算法 生物认证
基于Zhang-Suen算法的图像细化处理FPGA实现,包含testbench和matlab验证程序
本项目基于Zhang-Suen算法实现图像细化处理,支持FPGA与MATLAB双平台验证。通过对比,FPGA细化效果与MATLAB一致,可有效减少图像数据量,便于后续识别与矢量化处理。算法适用于字符识别、指纹识别等领域,配套完整仿真代码及操作说明。
|
4月前
|
机器学习/深度学习 算法 安全
计及需求响应的粒子群算法求解风能、光伏、柴油机、储能容量优化配置(Matlab代码实现)
计及需求响应的粒子群算法求解风能、光伏、柴油机、储能容量优化配置(Matlab代码实现)
|
5月前
|
存储 算法 数据安全/隐私保护
基于FPGA的图像退化算法verilog实现,分别实现横向和纵向运动模糊,包括tb和MATLAB辅助验证
本项目基于FPGA实现图像运动模糊算法,包含横向与纵向模糊处理流程。使用Vivado 2019.2与MATLAB 2022A,通过一维卷积模拟点扩散函数,完成图像退化处理,并可在MATLAB中预览效果。
|
8月前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于FPGA的SNN脉冲神经网络之LIF神经元verilog实现,包含testbench
本项目展示了 LIF(Leaky Integrate-and-Fire)神经元算法的实现与应用,含无水印运行效果预览。基于 Vivado2019.2 开发,完整代码配有中文注释及操作视频。LIF 模型模拟生物神经元特性,通过积分输入信号并判断膜电位是否达阈值产生脉冲,相较于 Hodgkin-Huxley 模型更简化,适合大规模神经网络模拟。核心程序片段示例,助您快速上手。
|
9月前
|
算法 数据安全/隐私保护 异构计算
基于LSB最低有效位的音频水印嵌入提取算法FPGA实现,包含testbench和MATLAB对比
本项目展示了一种基于FPGA的音频水印算法,采用LSB(最低有效位)技术实现版权保护与数据追踪功能。使用Vivado2019.2和Matlab2022a开发,完整代码含中文注释及操作视频。算法通过修改音频采样点的最低有效位嵌入水印,人耳难以察觉变化。然而,面对滤波或压缩等攻击时,水印提取可能受影响。该项目运行效果无水印干扰,适合实时应用场景,核心逻辑简单高效,时间复杂度低。
|
9月前
|
算法 数据安全/隐私保护 异构计算
基于FPGA的2ASK+帧同步系统verilog开发,包含testbench,高斯信道,误码统计,可设置SNR
本内容展示了基于Vivado2019.2的算法仿真效果,包括设置不同信噪比(SNR=8db和20db)下的结果及整体波形。同时,详细介绍了2ASK调制解调技术的原理与实现,即通过改变载波振幅传输二进制信号,并提供数学公式支持。此外,还涉及帧同步理论,用于确定数据帧起始位置。最后,给出了Verilog核心程序代码,实现了2ASK解调与帧同步功能,结合DDS模块生成载波信号,完成信号处理流程。
177 0
|
10月前
|
算法 数据可视化 数据安全/隐私保护
一级倒立摆平衡控制系统MATLAB仿真,可显示倒立摆平衡动画,对比极点配置,线性二次型,PID,PI及PD五种算法
本课题基于MATLAB对一级倒立摆控制系统进行升级仿真,增加了PI、PD控制器,并对比了极点配置、线性二次型、PID、PI及PD五种算法的控制效果。通过GUI界面显示倒立摆动画和控制输出曲线,展示了不同控制器在偏转角和小车位移变化上的性能差异。理论部分介绍了倒立摆系统的力学模型,包括小车和杆的动力学方程。核心程序实现了不同控制算法的选择与仿真结果的可视化。
653 15
|
9月前
|
编解码 算法 数据安全/隐私保护
基于FPGA的信号DM编解码实现,包含testbench和matlab对比仿真
本项目展示了DM编解码算法的实现与测试结果。FPGA测试结果显示为T1,Matlab仿真结果为T2。使用软件版本为Matlab 2022a和Vivado 2019.2。核心程序包含详细中文注释和操作视频。DM编解码通过比较信号样本差值进行编码,适用于音频等低频信号处理。硬件结构包括编码器(采样器、减法器、比较器)和解码器(解码器、积分器)。
|
11月前
|
算法 数据安全/隐私保护 异构计算
基于FPGA的变步长LMS自适应滤波器verilog实现,包括testbench
### 自适应滤波器仿真与实现简介 本项目基于Vivado2022a实现了变步长LMS自适应滤波器的FPGA设计。通过动态调整步长因子,该滤波器在收敛速度和稳态误差之间取得良好平衡,适用于信道均衡、噪声消除等信号处理应用。Verilog代码展示了关键模块如延迟单元和LMS更新逻辑。仿真结果验证了算法的有效性,具体操作可参考配套视频。
396 74

热门文章

最新文章