一种基于FPGA的真随机数发生器设计与实现

合集下载

基于 FPGA 一种真随机数生成器的设计和实现

基于 FPGA 一种真随机数生成器的设计和实现

基于 FPGA 一种真随机数生成器的设计和实现吴飞;李艳萍【摘要】Aiming at the application of random number in secure communication , we design and implement a new FPGA-based true random number generator ( TRNG) in this paper .It takes the metastability of RS flip-flop as the random source to reduce the phase shift of clock signal and minimises the process differences of internal components so as to guarantee the randomness of output sequence .The outputs of multi-triggers are conducted the XOR operations and are added the post-processing module for enhancing the quality of random sequences and increasing the entropy per bit .This design has been implemented on Xilinx Spartan 3 XC3S400 platform, the random sequence generated can pass the NIST test , and all the indexes meet the design requirements .The true random number generator consists of common logic unites only, it can be quickly transplanted into ASIC design and shorten the development cycle .%针对随机数在保密通信中的应用,设计并实现一种基于FPGA的真随机数生成器,将RS触发器的亚稳态作为随机源,减小时钟信号的相位偏移,最小化内部元件的工艺差异,从而保证输出序列的随机性,对多个触发器的输出进行异或操作并且加入后处理模块来提高随机序列的质量和增加每比特的熵。

一种基于FPGA的真随机数发生器设计与实现 (1)

一种基于FPGA的真随机数发生器设计与实现 (1)

好。但是如果振荡器的数目太多,会消耗过多的硬件资源,功 耗也过大。因此,不宜通过单纯地增加振荡器数目的方法提 高随机序列的性能。 定性分析如下:将序列的每位看作是一个随机的二进制 变量X,定义b是序列的偏置。即
b=lP(X=1)一l/21=IP(X=0)一1,2I (2)
测试。检验随机序列的性能。 DIEHARD测试是由16项测试组成的用来度量随机数 发生器性能的一组统计学测试,它由George M躺羽ia开发 并于1995年首次发布。DIEHARD的测试结果叫做P-vMue。 它由方程P-value=Fi(X)计算得到,其中E试图建立样本X 在O和l间服从均匀分布的分布函数。因为E是渐进逼近的, 它在尾部的近似效果变差.所以数值接近O或1的P_value 在真随机序列中极少出现。当被测序列随机性能很差时。会 有很多P-value的值是精确到小数点后数位的O或者1.例如.
TRNG的设计
1.1相位漂移与抖动 由于受到电路中噪声的影响,数字电路中时钟信号的周 期在每个不同的周期上可能缩短或者加长。这就是时钟抖 动。抖动可以用许多方法来衡量和表征.它是一个均值为零 的随机变量。振荡器起振时刻的差异和电路元件的工艺偏 差,使得振荡器间存在相位漂移。因此抖动信号和相位漂移 适合在数字电路中作为TRNG的随机源。 1.2亚稳态 锁存器是有逻辑‘l’和‘0’两个稳定状态的双稳态器件。 但是在特殊情况下其可能进入亚稳态[41。此时它的输出是介
真随机数发生器(TRNG)在统计学、信息安全等领域有 着广泛的应用。在这些领域中。不仅要求数据序列分布均匀、 彼此独立.而且要求其具有不可预测性.能够抵御针对随机 性的攻击。B.Sunar。W.J.Martin和D.R.Stinson提出【”,真随 机数发生器的性能受3个因素的影响:熵源(Entropy Source),采集方式(Harvesting Mechanism)和后续处理(Post— Processing)。在电路系统中最常见的三种真随机数产生方法 为田:1)直接放大法:放大电路中的电阻热噪声等物理噪声。 通过比较器进行比较后获得随机数序列;2)振荡采样法:用 带有抖动的慢振荡器通过D触发器采样一个周期固定的快 振荡器,输出随机序列;3)离散时间混沌法:利用混沌电路不 可预测以及对初始条件敏感的依赖性的特点产生随机序列。 基于模拟电路的结构,熵源的统计分布更加理想,且熵源噪 声不随采样周期的变化而改变;基于数字电路的结构,集成 度高。便于在FPGA等通用可编程平台上实现,但熵源的统 计特性与模拟电路相比不够理想131。 本文尝试了一种用纯数字电路实现的TRNG结构,且不 收稿日期:2011—02—24

一种基于FPGA的真随机数发生芯片设计

一种基于FPGA的真随机数发生芯片设计
电路 进 而完 成 芯片 设计 ,利用 F P G A 芯 片 资源 ,
用F P G A 构建 片上 真 随机数 发生 器典 型 的随机 源主 要有 2种 :一种 是利 用 F P GA 的逻辑 门构 建高 速数 字 电路振 荡器 ;另 一种 是利 用模 拟 P L L( 锁相 环 ) 电路 发 生 的 数 字 时 钟 信 号 上 面 的 抖 动 构 建 随 机 量 .对 比这 2种方 法 ,前者 的方 法较 为简 单 ,但是 对芯 片 电路性 能要 求很 高 , 电路 功耗 很大 ,芯 片寿 命很 短 .而基 于模 拟 P L L( 锁相 环 )电路 的方 法 J ,
h t t p : / / x b . s z p t . e d u . c n 一3一
在 多路 扰动 器线 当 中, 一共 有 4个控 制 位 . 每 个 控 制位 可 以控 制选 择 一条 延迟 线 或者 是 一条 导 线 进 行扰 动 , 利用 F P G A 中的 C MOS传 输 门来 实 现 两 路选 择 的 效果 .4个控 制 位 的延迟 线 按 照 2 作为 延 迟 的权值 ,第 一 个延 迟 线延 迟为 1个 时间 单位 ,第二 个延 迟 线 的延 迟为 2个 时 间单 位 ,第 三个 延 迟线 的 延迟 为 4个 时 间单位 ,第 四个 延迟 线 的延 迟为 8个时 间单 位 .这 样 ,随着 4个控 制
中接 口模 块负 责和 外部 电路 通信 ,给 芯片 提供 系统
构建 随机数 发 生 电路是 一种 很 好 的实 现真 随机 数
发生 芯 片 的方案 L 4 J .
真 随机 数 的发 生必 须依 赖物 理 过程 ,在 电路 中真 随机 数 的 发生 也必 须依 赖 电路 中具 有 随机 特 性 的一 些物 理过 程 ,利 用 电路 中 的结构 ,典 型的 片上 真 随机 数 的发 生方 法有 3类I 5 J , 包 括 直接 放 大法 、 振 荡采 样 法 和离散 时 间混 沌法 . 由于 F P G A 芯片 内部 的资源 为数 字 电路 结构 以及少 量和 数 字

基于FPGA的伪随机序列发生器设计方案

基于FPGA的伪随机序列发生器设计方案

基于FPGA的伪随机序列发生器设计方案1基本概念与应用1)1FSR:线性反馈移位寄存器(1inear feedbackshiftregister,1FSR)是指给定前一状态的输出,将该输出的线性的薮再用作输入的移位寄存器。

异或运算是最常见的单比特线性函数:对寄存器的某些位进行异或操作后作为输入,再对寄存器中的各比特进行整体移位。

1FSR产生的两种形式为伽罗瓦(Ga1ois)和斐波那契(FibonaCCi)两种形式。

也有成为外部(Ex隹rna1)执行方式和内部(Interna1)执行方式。

(1)伽罗瓦方式(Interna1)X0X4X17! ! TepCount ,-Θ□□EF-Γ>4300000000Θ{3B0-*~*DaiaFtowW>)∙ι.x4.χ“(Ga1oisImp1ementation)Ga1ois方式特征数据的方向从左至右,反馈线路是从右至左。

其中XCo项(本原多项式里面的T'这一项)作为起始项。

按照本原多项式的指示确定异或门(XOR)在移位寄存器电路上的位置。

如上图所示XM。

因此Ga1ois方式也有人称作线内或模类型(M-型)1FSRo(2)斐波那契方式(Externa1)TapCountB*0;E3t3-⅛QEHIH30GHZHHDGIFSHpcivncrTMrig(M)-X14.X,>♦X n»1(Fibonacciimp1ementation)从图中我们可以看到Fibonacci方式的数学流向和反馈形式是恰好跟Ga1ois方式相反的,按照本原多项式,其中XCO这一项作为最后一项,这里需要一个XOR∏,将本原多项式中所给的taps来设定它的异或方式。

因此Fibonacci方式也被叫做线外或者简型(S-型)1FSR。

2)本原多项式本原多项式是近世代数中的一个概念,是唯一分解整环上满足所有系数的最大公因数为1的多项式。

本原多项式不等于零,与本原多项式相伴的多项式仍为本原多项式。

最新 利用FPGA产生真随机噪声技术分析-精品

最新 利用FPGA产生真随机噪声技术分析-精品

利用FPGA产生真随机噪声技术分析【摘要】在工程应用中,经常需要产生随机数,从而对实际的工程算法进行仿真验证,并且最好是在项目调试现场进行仿真输入从而对系统的整体性能进行测试,规避了常见的在上验证正常,在实际系统中工作不正常的问题,并且由于在Matlab中常见的伪随机数的算法均较为复杂,不利于实现.本文采用了一种基于FPGA中非门逻辑单元来实现真随机数的方式,利于嵌入到实际运行的工程中,从而进行现场验证.【关键词】真随机数;FPGA;非门环0 引言真随机数在密码学以及其它的学科中有着重要并广泛的应用,工程应用中的随机数常常用来产生实际环境中的本底噪声附加到理想信号上用于仿真实际情况下的输入信号.随机数分为伪随机数以及真随机数,通常在计算机系统中产生的随机数都是伪随机数,所谓的伪随机数通常是利用特定的函数来生成的,虽然在不同程度上逼近真随机数,但是它的致命的弱点是可追溯的.真随机数,顾名思义,即是真正的随机数,一般都是由物理过程产生的随机数,不能预先演算得到的,具有天然的不可破解的特性.产生真随机数的方式有很多,其中利用FPGA内部时钟抖动产生真随机数的方式已经广泛被使用[1-2],利用FPGA产生真随机数利用的是时钟的抖动,时钟抖动越大,真随机性能越好.本文中给出了一种经过实际验证的真随机数的产生方式,利用该种方式产生的随机数能够通过NIST推出的专用软件进行性能测试,之后才能够投入到实际的生产使用中.1 FPGA中真随机数产生产生真随机数的基础是利用真实存在的熵源,FPGA中的真实熵源是时钟JITTER,例如在D触发器时钟到达的时候,数据线处在跳变的过程中,导致不能满足其常规工作时所需要的建立保持时间的要求,输出的数据处于不稳定的随机状态,这是利用FPGA产生随机数的基本原理.在FPGA中产生真随机数的方式是利用三个非门组成的非门环,在将多个非门环进行异或操作,最终再进行时钟采样的方式,如图1所示.非门环本身运转起来之后,线上的数字在高速的进行跳变,在高电平以及低电平之间高速的切换,然后将其中一个非门的输出接到D触发器上,这样D触发器根据其工作时钟定期到非门环上取一个数据进行锁存,这样有一定概率出现取数时D触发器的数据线正好在进行跳变的过程中,这样其输出的数值就是真正意义上的随机数.但是,单个非门环的数据中真随机数的概率有限,还不能做到真正意义上的真随机数,必须要利用多个非门环进行联合工作,然后再进行全局的异或操作,只要有一个状态为真随机数,则最终输出为真随机数.如图1所示,该种方式产生的随机数为真随机数,非门环本身运转的速度很高,高低跳变的周期小于1ns,并且各个非门环之间的状态是完全独立的,故在进行异或操作时,如果非门环输出为1的个数为偶数时,则输出为0,个数为奇数时,输出为1;在进入D触发器时,由于采样时钟为低速时钟,在D 触发器采样时钟到来时,数据线上的输入如果发生跳变,则会产生真随机数,我们通过增加非门环的个数来增加该真随机数出现的概率.在工程应用中,可以控制不同的M,N,L值,从而获得不同效果的真随机数,N值主要控制单路的非门环之后的非门的个数,M值主要控制非门环的个数,M个非门环最终通过1个异或门从而得到1路真随机数输出,该路输出再经过L个非门之后再送入到一路D触发器中进行时钟采样,从而得到最终的输出.异或门是整个系统中的关键部位之一,它的作用是将所有的单路中的真随机数的因素汇总起来,在这里合成到一路中,其基本原理是真随机数和任何数据进行异或的结果都是真随机数,这种结构下要想得不是真随机数的情况只有所有路的输出都是非随机数,即每一路都能满足建立保持时间的要求,这个要求随着路数的增加,变得越来越难满足,概率越来越小.通过增加非门环的数量从而减少输出端非真随机数的出现概率,最终得到真随机数.2 真随机数测试3 结论利用FPGA产生真随机数能够达到较高的速度,且利于系统集成,并且能够进行位扩展,能够同时生成多个真随机数源,再通过并串转换再产生更高速率的真随机数,并且集成度高,能够在系统现场进行仿真输入,测试系统工作的稳定性,可以应用于工程实践中.【】[1]张聪,于忠臣.一种基于FPGA的真随机数发生器设计与实现[J].电子设计工程,2011,19(10):176-179.[2]霍文捷,刘政林,陈毅成,等.一种基于FPGA的真随机数生成器的设计[J].华中科技大学学报:自然科学版,2009,37(1):73-76.。

随机数发生器设计原理及实现

随机数发生器设计原理及实现

随机数发⽣器设计原理及实现随机数发⽣器设计原理及实现作者:不赖猴内核编程和密码学群:20264887随机数是密码学算法的基础,是现代加密体系中最重要的部分之⼀。

⼏乎所有的密码学算法都需要使⽤随机数。

那么是否真的存在真正的随机数呢?这个问题已经讨论了很多年,我们这⾥就不论述了,我们只需要知道量⼦⼒学已经证明在现实世界中随机数是真实存在的。

什么是随机数发⽣器?定义:⼀个随机数发⽣器就是⼀个产⽣数据流的设备,数据流中的每⼀位都是不可预测,偶然的。

但是从⼀定长度的数据流来看,它⼜符合某种分布。

从定义上看,随机数发⽣器具备以下三个属性:i.看起来具备随机性。

ii.不可预测性。

iii.不能被可靠的重复产⽣。

⼤多数编译器都已嵌⼊了随机数⽣成器,但是这些随机数发⽣器对密码来说⼏乎肯定是不安全的,甚⾄他们中的⼤部分产⽣的是⾮常差的随机数。

通常应⽤中对随机数有两个不同的并且不⼀定相容的要求:随机程度和不可预测程度。

随机程度:通常在产⽣的⼀系列声称是随机的数值时,我们关⼼的是这些数值在某种统计意义上是随机的。

即均匀分布和独⽴性。

不可预测程度:对于“真正的”随机序列,每个数与序列中的其他数都是统计独⽴的,因此不可预测。

然⽽,实际上我们很少能使⽤到真正的随机数;相反我们⽤到的都是由某种算法⽣成的。

这个时候,我们得防⽌攻击者从序列前边的元素预测出将来的元素。

随机数发⽣器的分类。

⼀般来说,随机数发⽣器有三种,它们分别是真随机数发⽣器(TRNG,True Random Number Generator)、伪随机数发⽣器(PRNG,Pseudo Random Number Generator)和密码学安全随机数发⽣器(CSPRNG,Cryptographically Secure Pseudo Random Number Generator)。

i.TRNG⽣成的是真正的随机数,但是真正的随机数的来源难以得到。

物理的噪声发⽣器,⽐如离⼦辐射事件的脉冲检测器、⽓体放电管和带泄露的电容,是⼀个可能的来源。

基于FPGA的高速高斯随机数发生器

基于FPGA的高速高斯随机数发生器

基于FPGA的高速高斯随机数发生器基于FPGA的高速高斯随机数发生器陆兴平,许拔(国防科学技术大学电子科学与工程学院湖南长沙410073)摘要:设计了一个基于FPGA的高速、高性能的高斯随机数发生器。

首先简要介绍了以前的一些算法并指出其不足之处。

然后阐明了本文的算法:对均匀随机数进行高效的变换以生成非常接近高斯分布的随机数,再依据中心极限定理把两个上述随机数相加得到高斯随机数。

算法所需的运算只有RAM的读操作与乘法、加法运算。

分析了算法的性能并与其他算法做了对比,证明了本文算法的高效性。

最后给出了FPGA实现的系统结构,并分析了所需的硬件资源。

关键词:正态分布;随机数发生器;FPGA;RAMHighspeed Gaussian Random Number Generator Impl emented with FPGALU Xingping,XU Ba(College of Electronic Science and Engineering, National University of DefenseTechnology, Changsha, 410073, China)Abstract:A highspeed gaussian random number generator implemented with FPGA is pr esented in this paper Several algorithms are briefly introduced and their sh ortcomings are pointed out Then algorithm is presented: firstly,uniformly distributed random numbers are effectively transformed to "GaussianLike" numbers,secondly,based on central limit theorem,each two of such "Gau ssianLike"numbers are added together to generate a gaussian sample A ll the operations needed are addition,multiplication and RAM reading The perfo rmance of the generator is excellent compared with others Finally the system s tructure in FPGA is givenKeywords:norm distribution;random number generator;FPGA;RAM高速地产生高斯随机数在仿真领域具有重要意义。

基于FPGA的快速均匀分布随机数发生器_宋克俭

基于FPGA的快速均匀分布随机数发生器_宋克俭
图1随机数产生序列fig1randomnumbersequence图2随机数分布情况fig2randomnumberdistributing由以上模拟的试验数据可以看出本文采用的由乘同余法来产生前p55个数然后再由lagfibonaicc序列来变换产生后面的数利用乘同余法来解决了lagfibonaicc序列前个数的选取问题同时利用lagfibonaicc序列的高速长周期高维均匀性解决了乘同余法的周期短强相关等缺点获得了质量更佳的均匀随机数
随机数是数列中每个数的出现都是偶然的 , 且 与该数列内的其他数无关 , 每个数落入任何给定的 范围都有一个确定的概率 . 按随机数的分布情况可 分为平均( 均匀) 分布随机数 、指数分布随机数 、 正 态分布随机数 、 二项分布随机数 、Possion 分布随机 数等 , 其中以均匀随机数最为重要是产生其它分布 随机数的基础[ 1] . 随机数广泛应用于信息论 、控制 论、 排队论 、 可靠性理论及人工智能等领域 . 随机数的产生方法可分为软件法和硬件法两 种. 在软件法中种子( seed) 的选取一般通过系统时 钟来获取 , 同一时刻的种子相同 , 这就使得软件法 中的随机序列存在很大的相关性 , 且利用软件进行 复杂的数学计算存在速度慢的问题 , 限制了该方法 的使用 ; 在硬件法中 , 种子可以通过硬件噪声或者 随机频率来获取 , 实现了真正的种子随机 , 同时将 算法固化在 ASIC 中来进行计算提高了运算速度 , 该方法被广泛的用于对随机数产生速度要求较高 的领域 , 如控制 、 游戏等领域 . 但是传统 ASIC 电路开发周期长 、开发成本高 等缺点阻碍了硬件随机数发生器的发展 . 近年来随 着 FPGA 技 术的发 展[ 2] , FPGA 的 低功 耗 、高可靠 性、 在线可编程性 、 可重构性 、开发周期短 、开发费 用低廉等特性使得利用硬件快速实现随机数发生

一种基于FPGA的真随机数发生器设计与实现

一种基于FPGA的真随机数发生器设计与实现

Ke r s t e a d m n m e n rtr oc l inr g p aedi n t r me s bly F G ywo d :r n o u b r e e o ; sia o n ; h s r a dj t ; t t it ; P A ur g a lt i t f ie aa i
o c l tr h r e mitd o fe — u s il os tata e p r te t r e r n.AtS Ie pon . te fe —u i s il tr l c r e o a OT i t h r e r nnng o clao s a e  ̄ c d t ma c sae va a l th t ts i
发周期 。
关 键 词 :真 随 机 数发 生 器 ;振 荡环 ;相 位 漂移 与抖 动 ;亚 稳 态 ;F GA P
中图 分 类 号 : N 8 T 72
文 献 标 识码 : A
文章 编 号 :1 7 — 2 6 2 l ) 0 0 7 — 4 6 4 6 3 ( 0 1 1— 1 6 0
张 聪 .于 忠 臣
( 京 工 业 大 学 北 京 市嵌 入 式 系统 重 点 实验 室 ,北 京 1 01 4 北 0 2)
摘 要 :设 计 并 实现 了一 种 基 于 F G 的 真 随机 数 发 生 器 . 用 一 对振 荡 环路 之 间 的相 位 漂 移和 抖 动 以及 亚稳 态作 为 P A 利
p r me e ,s c s te n mb r o s i ao s a d s mp ig f q e c r e d s u s d T e r s l o EHARD s i e t a a t r u h a h u e f o cl tr n a l r u n y,a i se . h e u t fDI s l n e c u t tss e fr r n o l e 8 i d c ts t a h ef r n e o h a d m s q e c ft e T 0 a d nn s n iae l t t e p r ma c f t e r n o e u n e o h RNG e s t e r q i me t i c e l o me t e u r h e n .S n e t h T NG n y u e o R o l s s c mmo o i nt s tc n b u c l r n p a td t h I e i d s ot n t e d v l p n n l gc u i .i a e q ik y t s ln e o t e AS C d s e a n n g a h r h e eo me t e c ce y l.

基于FPGA的简易智能函数发生器设计

基于FPGA的简易智能函数发生器设计

1.2 EDA 技术的设计方案
1.2.1 EDA 技术设计信号发生器的 流程
函数信号发生器的设计流程, 如 图 1 所示。 信号发生器功能的设计是基于美国 A ltera 公司提供的 FPGA 的开发集成环 境 QuartusII 软件经过设计输入编辑、 编译网表提取、数据库建立、 逻辑综
合、 逻辑分割、 适配、 延时网表提
0);
BEGபைடு நூலகம்N
IF
REST='0'
THEN
TMP:=(OTHERS=>'1');
ELSIF CLK'EVENT AND CLK='1' THEN
IF TMP="00000000" THEN
TMP:=(OTHERS=>'1');
ELSE
TMP:=TMP-1;
END IF;
END IF;
Q<=TMP;
TMP:=(OTHERS=>'1');A:='1'; ELSE
TMP:=TMP+1; END IF; ELSE IF TMP="00000001" TMP:=(OTHERS=>'0');A:='0'; ELSE TMP:=TMP-1; END IF; END IF; END IF; Q<=TMP; END PROCESS; END DELTA_ARC;
1.2.2 函数波形和智能选择模块的设计
在利用 VHDL 的硬件设计方法中, 经过了 3 个层次对信号发生器的硬 件设计。 第一层行为描述 , 就是对整个系统的 数学模型的描述 , 把系统分成几个具 体的模块, 采用 VHDL 语言生成所需 的基本模块。 递增斜波的设计: 采用 0 ~ 255 循 环加法计数器实现。设计思路是:reset 是复位信号 , 要首先考虑。tm p 是引 进的一个中间变量。通过赋值给输出 值。clk 是时钟信号 , 当复位信号有效 时 , 输 出为 `0' , 输 出最 小 值 设 为 “ 0”, 最大值设为“255” , 从 “0” 开始 , 当时钟检测到有上升沿的时, 输出就 会呈现递增的趋势 , 加 “1”。 元件如图 3 所示

一种基于FPGA的真随机数发生芯片设计

一种基于FPGA的真随机数发生芯片设计

一种基于FPGA的真随机数发生芯片设计
余菲;赵杰
【期刊名称】《深圳职业技术学院学报》
【年(卷),期】2013(12)5
【摘要】为了解决电子系统对随机数越来越高的要求,利用FPGA芯片,结合PLL 技术和组合逻辑竞争冒险的原理,设计并实现了一款真随机发生芯片.由于避免使用震荡采样的方法,实验研究证明随机数发生器具有良好的随机特性及均匀性,芯片的功耗和寿命都得到了大幅提高.芯片利用门控时钟技术和可变频率的方法,降低了功耗,经过理论分析和仿真,该芯片达到了理想的随机性效果,有良好的应用价值.【总页数】4页(P3-6)
【作者】余菲;赵杰
【作者单位】深圳职业技术学院电子与通信工程学院,广东深圳518055;深圳职业技术学院电子与通信工程学院,广东深圳518055
【正文语种】中文
【中图分类】TN791
【相关文献】
1.一种基于FPGA的真随机数发生器设计与实现 [J], 张聪;于忠臣
2.一种基于FPGA实现的真随机数发生器 [J], 张润捷
3.基于 FPGA 一种真随机数生成器的设计和实现 [J], 吴飞;李艳萍
4.基于混沌系统的真随机数发生器芯片设计和实现 [J], 张亮;戎蒙恬;诸悦;吕永其
5.一种基于比较器共模模式的真随机数发生器设计方案 [J], 李桢;汪鹏君;程旭;李刚;张会红
因版权原因,仅展示原文概要,查看原文内容请购买。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

for
rs.ndomes8
indicates that
the performance of the random sequence of the TRNG meets the requirement.Since the
can
TRNG only cycle.
UseS common logic unites,it
linear feedback of the
register(LFSR)is used
as post-precessinK In the
tests
oll
l platform,the
e如cts
design
tests
parameters。such as the number of oscillators and sampling frequency,are discussed.The result of DIEHARD suite
be quickly transplanted
to
the ASIC
design
and
shorten the development
Key words:true
random number
generator;oscillation ring;phase drift
and jitter;metastability;FPGA
第19卷
V01.1 9
第lO期
No.10
电子设计工程
Electronic Design Engineering
2011年5月
May 201 1
一种基于FPGA的真随机数发生器设计与实现
张聪,于忠臣
(北京工业大学北京市嵌入式系统重点实验室。北京100124) 摘要:设计并实现了一种基于FPGA的真随机数发生器。利用一对振荡环路之间的相位漂移和抖动以及亚稳态作为 随机源。使用线性反馈移位寄存器的输出与原始序列运算作为后续处理。在Xili啦Virtex一5平台的测试实验中,探讨 了振荡器数量以及采样频率等参数对随机序列的统计特性的影响。测试结果表明本设计产生的随机序列能够通过 DIEHARD测试。性能满足要求。由于仅使用了普通逻辑单元,使得本设计能够迅速移植到ASIC设计。大大缩短了开 发周期。 关键词:真随机数发生器;振荡环;相位漂移与抖动;亚稳态;FPGA 中图分类号:TN782
∞…∞一鸶矗图
(a)采样 ("¥ampling (b)保持
《b)hold ‘c)transfer chal"actefistic
(d】mechanical diagram of meta¥table
图1 Fig.1
亚稳态
Metability
1.3振荡器的设计 如图2所示。二选一复用器既作为延迟单元又作为选通 单元使用。当选通信号为‘1’时,形成两个相互独立、自由振 荡的环形振荡器。当选通信号为‘0’时,两组反相器交叉相连 形成双稳态器件。自由振荡时.两个振荡器之间存在着抖动 和相位偏移。在振荡的停止时刻,即振荡环路断开、两组反相 器交叉连接时。反相器的瞬时输出电压以及内部噪声的绝对 和相对值决定了电路最终稳定在哪个逻辑值上。有时即使反 相器跨接在一起。电路也会振荡很长・段时间才能稳定下 来。形成亚稳态。综上所述,随机序列的来源用到了抖动和亚 稳态两种机制。
-176.. 稿件编号:201102063
使用诸如PLL等特殊资源。便于设计由FPGA验证移植到芯 片设计。其核心思想是使用反相器和延时单元构成两个相互 独立的振荡器.由于内部噪声的差异引起的相位偏移作为熵 源,经过一段时间振荡后。随机的状态由数字双稳态电路锁 存。多组振荡器的输出。经过异或和同步处理后得到随机序 列。该TRNG在FPGA物理平台上实现并进行了测试验证。 1
好。但是如果振荡器的数目太多,会消耗过多的硬件资源,功 耗也过大。因此,不宜通过单纯地增加振荡器数目的方法提 高随机序列的性能。 定性分析如下:将序列的每位看作是一个随机的二进制 变量X,定义b是序列的偏置。即
b=lP(X=1)一l/21=IP(X=0)一1,2I (2)
测试。检验随机序列的性能。 DIEHARD测试是由16项测试组成的用来度量随机数 发生器性能的一组统计学测试,它由George M躺羽ia开发 并于1995年首次发布。DIEHARD的测试结果叫做P-vMue。 它由方程P-value=Fi(X)计算得到,其中E试图建立样本X 在O和l间服从均匀分布的分布函数。因为E是渐进逼近的, 它在尾部的近似效果变差.所以数值接近O或1的P_value 在真随机序列中极少出现。当被测序列随机性能很差时。会 有很多P-value的值是精确到小数点后数位的O或者1.例如.
TRNG的设计
1.1相位漂移与抖动 由于受到电路中噪声的影响,数字电路中时钟信号的周 期在每个不同的周期上可能缩短或者加长。这就是时钟抖 动。抖动可以用许多方法来衡量和表征.它是一个均值为零 的随机变量。振荡器起振时刻的差异和电路元件的工艺偏 差,使得振荡器间存在相位漂移。因此抖动信号和相位漂移 适合在数字电路中作为TRNG的随机源。 1.2亚稳态 锁存器是有逻辑‘l’和‘0’两个稳定状态的双稳态器件。 但是在特殊情况下其可能进入亚稳态[41。此时它的输出是介
采样时钟 选通信号 振荡输出
Sequence)ts的输出与采样得到的随机序列进
行异或运算作为后续处理,PRBS产生电路消耗资源少并且 使用线性反馈移位寄存器实现,非常适合于在FPGA上实 现。它的生成多项式是: G116FXl6+X13+X12+X“+F+X6+X3+X+l 多项式表示如图5所示。 2
真随机数发生器(TRNG)在统计学、信息安全等领域有 着广泛的应用。在这些领域中。不仅要求数据序列分布均匀、 彼此独立.而且要求其具有不可预测性.能够抵御针对随机 性的攻击。B.Sunar。W.J.Martin和D.R.Stinson提出【”,真随 机数发生器的性能受3个因素的影响:熵源(Entropy Source),采集方式(Harvesting Mechanism)和后续处理(Post— Processing)。在电路系统中最常见的三种真随机数产生方法 为田:1)直接放大法:放大电路中的电阻热噪声等物理噪声。 通过比较器进行比较后获得随机数序列;2)振荡采样法:用 带有抖动的慢振荡器通过D触发器采样一个周期固定的快 振荡器,输出随机序列;3)离散时间混沌法:利用混沌电路不 可预测以及对初始条件敏感的依赖性的特点产生随机序列。 基于模拟电路的结构,熵源的统计分布更加理想,且熵源噪 声不随采样周期的变化而改变;基于数字电路的结构,集成 度高。便于在FPGA等通用可编程平台上实现,但熵源的统 计特性与模拟电路相比不够理想131。 本文尝试了一种用纯数字电路实现的TRNG结构,且不 收稿日期:2011—02—24
于‘l’和‘0’之间的中间电平。如图l所示锁存器用两个反相 器和两个开关表征。当锁存器导通时,采样开关闭合,保持开 关打开(图a);当锁存器关闭时,采样开关打开,保持开关闭 合(图b)。图e展示了两个反相器的直流传输特性。当锁存器 关闭时A=B,稳态是A=B--0和A=B=Vno,亚稳态为A=B=V。。
稳态的传播会造成后续电路的错误动作。因此使用同步器将 异或后的随机序列与后续电路隔离开来。同时也方便采集稳 定的输出序列做性能分析。此处采用了三级寄存器的同步结 构。由MTBF(Mean
Time Between
Failure)四的定义可知,平均需
要经过数百年时间才会发生一次亚稳态通过同步器向下传播 的事件。因此是满足设计要求的。该模块电路图如图4所示。
图4随机源模块电路
Fig.4 Circuit of random
source
1.5后续处理模块的设计 理想情况下.D触发器所采集的信号具有随机的统计特 性。可是FPGA内部电路不可避免地会受到温度漂移、电压 抖动等不良因素影响。从而导致采样得到的随机信号中存在
图2振荡器结构图
Fig.2 Oscillator
true
System Key Lab,Belling University
ofTechnology,Be;iing 100124,China)

random number
to
generator(TRNG)is presented in this paper.The design utilizes
point.the free-running oscillators
作者简介:张聪(1985一),男,辽宁铁岭人,硕士研究生。研究方向:集成电路数字前端设计。
万方数据
张聪.等
一种基于FPGA的真随机数发生器设计与实现
其中V。不是一个合理的逻辑值。因为电平在该点是相互稳 定的并且可以无限期停留,所以称该点为亚稳态。但是,任何 噪声或者其他干扰都会使得A和B最终稳定在两个稳态中 的一个状态。图d非常形象地表征了亚稳态。它就好像处于 山顶的小球任何干扰都会使小球滚落到山两端的稳定状态。
structure
偏置.影响结果的统计特性。所以在采样得到随机序列后要 对数据进行消偏处理.使O和l出现的概率相当。 本设计采用16位最大长度二进制伪随机序列(Pseudo
Random Binary
波形如图3所示,为了方便数据采集选通信号是由时钟 经过分频得到的。在自由振荡阶段,输出信号快速变化不属 于任何稳定状态。在图中用斜线表示。在解析阶段,电路是双 稳态器件。此时应该保持解析时间足够长。从而使输出电平 在大多数情况下稳定在逻辑‘l’或‘0’。
are are
pair of via

that a弛permitted
free-run.At some
coerced
to
match

states
device.Metastability and oscillator drift
相关文档
最新文档