补充: FPGA产生基于LFSR的伪随机数

大家好,又到了每日学习的时间了,上一篇《荐读:基于fpga 的crc校验码生成器》文中,提到了“要实现这一过程,仍然需要lfsr电路,参看《fpga产生基于lfsr的伪随机数》中关于该电路特性的介绍”,在这补一篇《fpga产生基于lfsr的伪随机数》,欢迎大家交流学习。
1.概念
通过一定的算法对事先选定的随机种子(seed)做一定的运算可以得到一组人工生成的周期序列,在这组序列中以相同的概率选取其中一个数字,该数字称作伪随机数,由于所选数字并不具有完全的随机性,但是从实用的角度而言,其随机程度已足够了。这里的“伪”的含义是,由于该随机数是按照一定算法模拟产生的,其结果是确定的,是可见的,因此并不是真正的随机数。伪随机数的选择是从随机种子开始的,所以为了保证每次得到的伪随机数都足够地“随机”,随机种子的选择就显得非常重要,如果随机种子一样,那么同一个随机数发生器产生的随机数也会一样。
2.由lfsr引出的产生方法
产生伪随机数的方法最常见的是利用一种线性反馈移位寄存器(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源代码如下:
仿真波形:
以1111 1111为种子,load信号置位后,开始在255个状态中循环,可将输出值255、143、111……作为伪随机数。
这篇补充就说到这里,各位,加油。

OPPOR9s和vivoX9双雄战华为,小米无人问津
影响马达性能的线圈 (下)
显示驱动芯片商视芯科技创业板IPO获受理!销量突破6亿颗,募资近8亿自建IC测试中心等
盒子支付:移动支付的黑马,红海之外的远航
手把手教你打造3线制Jlink ARM-OB STM32
补充: FPGA产生基于LFSR的伪随机数
米家可量耳定制众筹HelloEar Arc耳机发布:299元
EDA365电子论坛指出未来AI芯片发展趋势
从生产层面强调了深度学习项目开发中需要更加重视数据集的构建
亿铸科技入选中国AI芯片企业50强榜单
浅谈汽车连接器端子夹紧力控制的优缺点
ARM44B0x实现信号发射机控制器
可连接智能手机和电脑设备的智能口罩
RISC-V彰显巨大潜能 百度战略投资赛昉科技
5mm发光二极管(LED)灯珠的工作电压多少
特斯拉已与存储器大厂旺宏联系洽谈收购1座6寸晶圆厂
2018年AI Now报告发布 以下是关键要点
哪款电动牙刷好?国内电动牙刷品牌排行
台达人机界面与SC500PLC在工业控制中的应用
TensorFlow Lite for MCUs - 网络边缘的人工智能