哪位大神verilog语言熟悉啊 帮老弟弄个5位随机数发生器 就是5个D触发器一个异或门芯片最简单的那种

FPGA产生基于LFSR的伪随机数 - BitArt - 博客园
Ideas Worth Spreading
posts - 40, comments - 21, trackbacks - 0, articles - 0
  通过一定的算法对事先选定的随机种子(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=的伪随机数发生器,它共有2^8=255个状态,该LFSR的结构如下:
verilog源代码如下:
module RanGen(
/*rst_n is necessary to prevet locking up*/
/*clock signal*/
/*load seed to rand_num,active high */
output reg [7:0]
/*random number output*/
always@(posedge clk or negedge rst_n)
if(!rst_n)
else if(load)
rand_num &=
/*load the initial value when load is active*/
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];
仿真波形:
以为种子,load信号置位后,开始在255个状态中循环,可将输出值255、143、111&&作为伪随机数。您现在的位置是: &
一种基于FPGA实现的真随机数发生器
摘 要:本文分析和实现了一种基于FPGA的真随机数发生器,采用对延迟链各级输出同时采样的方法来增加输出序列的随机性。电路为纯数字形式,50MHz采样时钟采得的输出数据可以无需后处理,直接通过随机性测试,且未发现随机性与采样频率存在显著联系。
  摘要:本文分析和实现了一种基于FPGA的真随机数发生器,采用对延迟链各级输出同时采样的方法来增加输出序列的随机性。电路为纯数字形式,50 MHz采样时钟采得的输出数据可以无需后处理,直接通过随机性测试,且未发现随机性与采样频率存在显著联系。
  关键词:真随机数发生器;延迟链;FPGA
  虽然消除各种不确定性是大多数学科的目标之一,但人们有时仍然离不开对随性胜的依赖。从日常生活中的博彩到学术领域的统计学、密码学,随机数以及随机数发生器(RNG)都有着广泛的应用。在很多场合下,以数学公式不断的迭代方式工作的伪随机数发生器(PRNG)就可以满足需求。虽然伪随机数可以具有很好的统计特性,但其可以被准确预测的特点使得它无法应用于特定场合,比如信息安全领域。在这些领域中,不仅要求随机数有良好的统计特性,更要求其具有不可预测性,只有这样才可以抵挡住对随机性的攻击。
  真随机数发生器之所以能产生不可预测的输出,是因为其利用了物理过程中的各种随机噪声。最常见的三种真随机数产生方法为:
  1.直接放大法:放大电路中的电阻热噪声等物理噪声,并通过比较器进行比较后可获得随机数序列,参见文献[1],[2]。
  2.振荡采样法:通过D触发器把两个独立的振荡信号进行数字混合,用低频信号采样高频信号,利用环形振荡器的频率抖动作为随机源,并进行后处理,从而得到随机数序列。文献[5]中给出了振荡采样法的详细分析以及改进结构。
  3.离散时间混沌法:利用混沌电路不可预测以及对初始条件敏感的依赖性的本质特点产生随机数。
  Sunar.Martin和Stinson提出,真随机数发生器的性能受以下三部分的性能影响:熵源(EntropySource),采集手段(Harvesting Mechanism),以及后处理(Post-processing)。基于模拟电路的结构,如直接放大法真随机数发生器,其熵源的统计分布更加理想,且熵源噪声不随采样周期变化而改变;基于数字电路的结构,如振荡采样法真随机数发生器,其功耗较低,集成度较高,便于在通用可编程平台(如FPGA,CPLD)上进行实现,且易于在SoC中使用。但熵源的统计特性与模拟电路相比不够理想,且采样速率与随机性能之间有着一定的联系。
  受到文献[5]的启发,本文尝试了一种用纯数字电路实现的真随机数发生器结构。其基本思想是通过对延迟链各级输出同时采样来增加输出序列的随机性。关于后处理方法及其对序列统计特性的影响已有大量研究,本文将重点关注于后处理之前的部分,通过提高这部分的随机性来改善数字电路实现方案的整体表现。
  2 振荡采样法回顾
  利用振荡较慢的时钟去采集环形振荡器的输出信号可以得到具有一定随机性的输出序列。其随机性来源于输入信号的相位和频率中存在的物理噪声。但相位噪声方差较小,频率漂移的周期较长,故只有在采样时钟周期较长的情况下,得到的值才有较高的不确定性。这是因为相位噪声和频率漂移的影响只有在经过多个振荡周期的积累后,效果才明显。实验表明,采样时钟频率越接近环形振荡器振荡频率,输出比特的周期性就越明显。
  振荡采样法对采样周期的要求限制了采集速率。当需要高速率产生随机数时,采样频率与环形振荡器振荡频率可以相比拟,任意两次采样间隔很近,则噪声的影响减小,每两次采样得到的数据相关性增加,最终导致输出值的随机性减小。如何使得高速采样频率下,每个采样时钟都能采集到随机事件,对于设计高速率随机数发生器的工作者来说,是一个值得关注的问题。
  3 工作原理
  在数字电路中,当D触发器的数据输入信号边沿与采样时钟边沿重合或相隔很近时,D触发器输出值具有不确定性。本文简称该现象为“边沿碰撞”。
  对于单独的D触发器,每次采样时刻都发生边沿碰撞是很难的。若采用多个D触发器对多点信号同时进行采样,把各个输出异或起来,只要有一个D触发器发生边沿碰撞,最终的输出就具有不确定性。在这种结构下,便可以产生每次采样都发生边沿碰撞的效果。无论采样频率的高低,发生边沿碰撞时的输出值都具有很好的随机性。
  3.1 电路结构
  如图1所示,振荡器输出经过多极反相器延迟,在每个反相器输出端可得到不同延迟的输出信号,将这些信号分别输入D触发器同时进行采样,并把各个输出异或起来,得到最终的比特输出。
......(未完,请点击下方“在线阅读”)
特别说明:本文献摘要信息,由维普资讯网提供,本站只提供索引,不对该文献的全文内容负责,不提供免费的全文下载服务。
金月芽期刊网 2017君,已阅读到文档的结尾了呢~~
一种无记忆的真随机数发生器
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
一种无记忆的真随机数发生器
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer--144.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口

我要回帖

 

随机推荐