1 中心极限定理的定义
大家可以在网上查询中心极限定理的定理和解释。中心极限定理意思就是说在一组服从均匀分布的数据中,随机抽取选取m个数,然后求这个m个数的平均值,这个平均数作为x1。继续随机抽取m个数,求这m个数的平均值,作为x2,就这样一直抽取n组数,也就是获得n个的数,每一个数都是m个的数平均值。这个n个数是符合01的正态分布的。
2 使用m序列产生均匀分布的随机数
基于fpga产生的均匀分布的噪声代码
3 均匀分布转换为高斯分布
3.1 设置m序列不同的初始值
调用30个以上的均匀随机数(我这里是34个),设置其初始状态不一致,初始值为30(大于14就可以了)。
parameter jiange = 14'h1e;
//这个初始值需要大于14,这样就不会重合
parameter INIT1= 14'h1;
parameter INIT2= INIT1+jiange;//30
parameter INIT3= INIT2+jiange;//60
parameter INIT4= INIT3+jiange;//90
parameter INIT5= INIT4+jiange;//120
parameter INIT6= INIT5+jiange;//150
parameter INIT7= INIT6+jiange;//180
parameter INIT8= INIT7+jiange;//90
parameter INIT9= INIT8+jiange;//180
parameter INIT10= INIT9+jiange;//90
parameter INIT11= INIT10+jiange;//30
parameter INIT12= INIT11+jiange;//60
parameter INIT13= INIT12+jiange;//90
parameter INIT14= INIT13+jiange;//120
parameter INIT15= INIT14+jiange;//150
parameter INIT16= INIT15+jiange;//180
parameter INIT17= INIT16+jiange;//90
parameter INIT18= INIT17+jiange;//180
parameter INIT19= INIT18+jiange;//90
parameter INIT20= INIT19+jiange;//90
parameter INIT21= INIT20+jiange;//30
parameter INIT22= INIT21+jiange;//60
parameter INIT23= INIT22+jiange;//90
parameter INIT24= INIT23+jiange;//120
parameter INIT25= INIT24+jiange;//150
parameter INIT26= INIT25+jiange;//180
parameter INIT27= INIT26+jiange;//90
parameter INIT28= INIT27+jiange;//180
parameter INIT29= INIT28+jiange;//90
parameter INIT30= INIT29+jiange;//150
parameter INIT31= INIT30+jiange;//180
parameter INIT32= INIT31+jiange;//90
parameter INIT33= INIT32+jiange;//180
parameter INIT34= INIT33+jiange;//90
3.2 调用均匀分布的噪声模块
这里只显示了两个,后面还有,只要改个名字就可以了
ms14_generate
ms14_generate1
(
.data_1(INIT1),
.clk(clk_80M),
.rst_n(rst_n),
.en(en),
.noise_addr(r14_1)
);
ms14_generate
ms14_generate2
(
.data_1(INIT2),
.clk(clk_80M),
.rst_n(rst_n),
.en(en),
.noise_addr(r14_2)
);
3.2 对抽取的数据求平均数
这时候求出的平均数就是符合高斯分布的数据
assign add_1 = r14_1+r14_2+r14_3+r14_4+r14_5+r14_6;
assign add_2 = add_1+r14_7+r14_8+r14_9+r14_10+r14_11;
assign add_3 = add_2+r14_12+r14_13+r14_14+r14_15+r14_16;
assign add_4 = add_3+r14_17+r14_18+r14_19+r14_20+r14_21;
assign add_5 = add_4+r14_22+r14_23+r14_24+r14_25+r14_26;
assign add_6 = add_5+r14_27+r14_28+r14_29+r14_30+r14_31;
assign add_7 = add_6+r14_32+r14_33+r14_34;
assign gao_noise_te = add_7/34;
//用了几个模块就除以几
4 ISE仿真验证
从图像还是可以看到噪声数据没什么问题
5 matlab仿真验证
可以看到数据还是呈现一个高斯分布的
减去均值之后
mean = 8.1005e-14
var = 8.4643e+05文章来源:https://www.toymoban.com/news/detail-499103.html
6 问题和展望
这样处理的高斯噪声方差比较大,均值可以变为0,但是要想均值变为0,就必须要把这个无符号数转换为有符号数。后续对信号加噪处理,也是需要有符号的噪声。文章来源地址https://www.toymoban.com/news/detail-499103.html
到了这里,关于基于FPGA的高斯白噪声的生成(中心极限定理)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!