首页 > 编程知识 正文

vhdl产生随机数,lfsr指的是

时间:2023-05-05 14:39:37 阅读:119839 作者:3561

在FGA生成基于LFSR的伪随机数之前的《基于FPGA 的CRC校验码生成器》文章中,“实现这个过程仍然需要LFSR电路。 在此添加《FPGA产生基于LFSR的伪随机数》。 欢迎交流学习。 不言而喻,运送物品。

1、概念

对预先选定的随机种子(seed )用一定的算法进行一定的运算,可以得到人工生成的一系列周期序列,可以从这一系列中以相同的概率选择任意一个数字。 这个数字称为伪随机数。 所选数字并不具有完全的随机性,但在实际应用中其随机性是足够的。

这里的“假”的意思是随机数不是真随机数,因为它是按照一定的算法模拟生成的,结果是确定的,是可见的。 因为伪随机数的选择是从随机种子开始的,所以随机种子的选择对于确保每次得到的伪随机数足够“随机”是非常重要的。 如果随机种子相同,则同一随机数发生器产生的随机数也相同。

2、基于LFSR的发生方法

生成伪随机数的最常见方法是利用由n个d触发器和几个异或门组成的线性反馈移位寄存器(LFSR ),如下图所示。

这里,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、反馈系数为g0g1g2g3g4g5g6g8=10110001的伪随机数发生器,共有2^8=255个状态。 该LFSR的结构如下。

verilog源代码如下:

模拟波形:

以1111 1111为种子,在已设置load信号之后,开始255个状态的循环,输出值255、143、111……可为伪随机数。 这个补充到此为止。

【QQ交流群】

群号: 173560979,进群隐语: FPGA技术江湖迷。

多年的FPGA企业开发经验,各种通俗的学习资料和学习方法,浓厚的交流学习氛围,QQ群目前已经有1000多名同好伙伴,为没有广告的纯模式、技术交流带来了净土。 从初学俊逸的巨人到业界精英行业的大人物等,从军需产业领域到民营企业等,从通信、图像处理到人工智能,一切方向都很齐全。

【微信交流群】

目前微信交流群已成立08个群,人数达数千人,关注“FPGA技术江湖”微信公众号,可获得进群方式。

结束了

然后继续更新,带来Vivado、ISE、Quartus II、candence等安装相关的设计教程,学习资源、项目资源、好文推荐等,值得grand员工持续关注

江湖大,继续飞驰,大老爷一切平安,有缘再见。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。