首页 FPGA产生基于LFSR的伪随机数

FPGA产生基于LFSR的伪随机数

举报
开通vip

FPGA产生基于LFSR的伪随机数1.概念   通过一定的算法对事先选定的随机种子(seed)做一定的运算可以得到一组人工生成的周期序列,在这组序列中以相同的概率选取其中一个数字,该数字称作伪随机数,由于所选数字并不具有完全的随机性,但是从实用的角度而言,其随机程度已足够了。这里的“伪”的含义是,由于该随机数是按照一定算法模拟产生的,其结果是确定的,是可见的,因此并不是真正的随机数。伪随机数的选择是从随机种子开始的,所以为了保证每次得到的伪随机数都足够地“随机”,随机种子的选择就显得非常重要,如果随机种子一样,那么同一个随机数发生器产生的随机数也会...

FPGA产生基于LFSR的伪随机数
1.概念   通过一定的算法对事先选定的随机种子(seed)做一定的运算可以得到一组人工生成的周期序列,在这组序列中以相同的概率选取其中一个数字,该数字称作伪随机数,由于所选数字并不具有完全的随机性,但是从实用的角度而言,其随机程度已足够了。这里的“伪”的含义是,由于该随机数是按照一定算法模拟产生的,其结果是确定的,是可见的,因此并不是真正的随机数。伪随机数的选择是从随机种子开始的,所以为了保证每次得到的伪随机数都足够地“随机”,随机种子的选择就显得非常重要,如果随机种子一样,那么同一个随机数发生器产生的随机数也会一样。 2.由LFSR引出的产生 方法 快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载   产生伪随机数的方法最常见的是利用一种线性反馈移位寄存器(LFSR),它是由n个D触发器和若干个异或门组成的,如下图:     其中,gn为反馈系数,取值只能为0或1,取为0时表明不存在该反馈之路,取为1时表明存在该反馈之路;n个D触发器最多可以提供2^n-1个状态(不包括全0的状态),为了保证这些状态没有重复,gn的选择必须满足一定的条件。下面以n=3,g0=1,g1=1,g2=0,g3=1为例,说明LFSR的特性,具有该参数的LFSR结构如下图:       假设在开始时,D2D1D0=111(seed),那么,当时钟到来时,有:   D2=D1_OUT=1;   D1=D0_OUT^D2_OUT=0;   D0=D2_OUT=1; 即D2D1D0=101;同理,又一个时钟到来时,可得D2D1D0=001. ……………… 画出状态转移图如下:             从图可以看出,正好有2^3-1=7个状态,不包括全0;   如果您理解了上图,至少可以得到三条结论:   1)初始状态是由SEED提供的;   2)当反馈系数不同时,得到的状态转移图也不同;必须保证gn===1,否则哪来的反馈?   3)D触发器的个数越多,产生的状态就越多,也就越“随机”;   3.verilog实现   基于以上原理,下面用verilog产生一个n=8,反馈系数为g0g1g2g3g4g5g6g7g8=101110001的伪随机数发生器,它共有2^8=255个状态,该LFSR的结构如下: verilog源代码如下: module RanGen(     input              rst_n,    /*rst_n is necessary to prevet locking up*/     input              clk,      /*clock signal*/     input              load,    /*load seed to rand_num,active high */     input      [7:0]    seed,        output reg [7:0]    rand_num  /*random number output*/ ); always@(posedge clk or negedge rst_n) begin     if(!rst_n)         rand_num    <=8'b0;     else if(load)         rand_num <=seed;    /*load the initial value when load is active*/     else         begin             rand_num[0] <= rand_num[7];             rand_num[1] <= rand_num[0];             rand_num[2] <= rand_num[1];             rand_num[3] <= rand_num[2];             rand_num[4] <= rand_num[3]^rand_num[7];             rand_num[5] <= rand_num[4]^rand_num[7];             rand_num[6] <= rand_num[5]^rand_num[7];             rand_num[7] <= rand_num[6];         end 仿真波形:   以1111 1111为种子,load信号置位后,开始在255个状态中循环,可将输出值255、143、111……作为伪随机数。  
本文档为【FPGA产生基于LFSR的伪随机数】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_977556
暂无简介~
格式:doc
大小:55KB
软件:Word
页数:3
分类:生活休闲
上传时间:2017-09-20
浏览量:29