1.完整项目描述和程序获取
>面包多安全交易平台:https://mbd.pub/o/bread/ZJaclpdt
>如果链接失效,可以直接打开本站店铺搜索相关店铺:
>如果链接失效,程序调试报错或者项目合作也可以加微信或者QQ联系。
2.部分仿真图预览
3.算法概述
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 位千-次多项式。
4.部分源码
`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;
endmodule