CN204883682U - 一种多通道伪随机信号发生器 - Google Patents
一种多通道伪随机信号发生器 Download PDFInfo
- Publication number
- CN204883682U CN204883682U CN201520611536.7U CN201520611536U CN204883682U CN 204883682 U CN204883682 U CN 204883682U CN 201520611536 U CN201520611536 U CN 201520611536U CN 204883682 U CN204883682 U CN 204883682U
- Authority
- CN
- China
- Prior art keywords
- pseudo random
- random number
- number generator
- pseudorandom number
- generator
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Landscapes
- Tests Of Electronic Circuits (AREA)
Abstract
本实用新型公开了一种多通道伪随机信号发生器设计方法,对两个以上伪随机数发生器进行运算,产生长序列周期高速伪随机数;其中每个伪随机数的产生基于并行结构最长线性反馈移位寄存器电路;要求参与运算的每个伪随机数发生器产生的伪随机数互不相关;能实时产生有多个数据位的均匀分布伪随机数;也能产生其它分布的伪随机数;能产生宽频带的数字白噪声信号;其均值、方差等参数可调节;能产生多路伪随机信号。
Description
技术领域
本实用新型涉及信号发生领域,具体是一种多通道伪随机信号发生器的设计方法。
背景技术
理想白噪声信号的功率谱密度函数在所有频率上是一个常数,其功率无穷大,因此是不能物理实现的。一个噪声信号在感兴趣的频率范围内其功率谱密度函数近似为一个常数,被称为带限白噪声信号,物理上是能够实现的。带限白噪声信号与理想白噪声信号的性质类似。实际电路系统的带宽是有限的,只要产生的带限白噪声信号的频率范围宽于实际电路的带宽,其对信号系统的影响跟相同谱密度、相同概率分布的理想白噪声信号的影响是相同的。将模拟白噪声信号的电压数字化后,可形成较为理想的数字白噪声信号。
传统上噪声信号发生是基于物理技术。例如,利用放射性物质的放射性,使用探测器对其计数产生随机数。利用气体放电管的放电产生噪声信号。在上世纪六七十年代,气体放电管作为噪声标准在国内外曾得到广泛的应用。以上产生噪声的方法技术复杂、安全性不高,因此又诞生了基于电路噪声的固态噪声发生技术。例如,利用电阻的热噪声或半导体器件的噪声,可产生宽带噪声信号,其原理框图如图1所示。
导体中载流子随机热运动而产生的起伏噪声叫热噪声,热噪声电压与温度有关,其均方值为:
V2=4kTBR
其中R为导体的电阻,B为电路的带宽,k为波尔兹曼常数,T为绝对温度。因为热噪声起源于多数载流子的运动,所以它的瞬时幅值服从均值为零的高斯分布,当温度和阻值一定时,热噪声电压的谱密度与频率无关,因此,电阻的热噪声是高斯型的白噪声。
一个半导体二极管反向偏置工作于雪崩击穿状态,在雪崩区内,由于电子-空穴对产生速率的随机起伏性质而产生雪崩散弹噪声。在一定的雪崩频率下,雪崩散弹噪声与白噪声相似,其噪声功率谱密度均匀分布。因此,反向工作于雪崩击穿状态的二极管可成为一个较理想的噪声源。利用齐纳二极管或PIN二极管的雪崩击穿产生噪声信号,再经宽带放大,可产生宽带噪声信号。
固态噪声发生器频率范围较宽,可覆盖至微波频段,输出信号的概率密度符合高斯分布,属于高斯白噪声信号。传统噪声信号发生器的缺点是输出信号的概率分布不能调整、谱密度调整困难。实际应用中,经常需要数字型的随机数或噪声信号。将固态噪声发生器的输出量化,可产生数字型的噪声信号。
下面阐述基于物理技术产生真随机数的方法。利用齐纳二极管的雪崩击穿产生的噪声,经隔直与宽带放大,可产生模拟的宽带白噪声信号,该噪声信号是高斯分布的。使用高速的A/D转换器将模拟噪声信号数字化,可产生高斯分布的数字噪声信号,原理框图如图2所示。图中Vcc为直流电压源,R为限流电阻,以使二极管D工作在雪崩击穿区。L提供直流通路,同时隔离交流信号,C为隔直流电容,同时将噪声信号耦合输出,N是放大电路。量化的噪声信号再跟数值0比较,如果数值大于等于0就输出1,如果小于0就输出0,用这种方法产生了一个均匀分布的二进制随机数,原理框图如图3所示。当然也可以使用高速的模拟比较器将模拟噪声信号转换成二进制的数字噪声信号。
序列周期有限的随机数称为伪随机数,序列周期有限的随机信号称为伪随机信号。伪随机数的序列周期越长,其统计特性越好,越接近真随机数。由于真随机数的产生电路较为复杂,工程上,常使用伪随机数代替真随机数,因为其数学性质类似,能够满足工程需要。
利用计算机可以方便的产生均匀分布伪随机数。产生伪随机数的方法有平方取中法、乘同余法、线性同余算法。平方取中法、乘同余法产生伪随机数的质量不高。在计算机上,常用线性同余算法产生伪随机数。线性同余法递推公式为:
rand(n)=(rand(n-1)*mult+inc)modM
其中rand(n)是当前随机数,rand(n-1)是前一时刻随机数,mult是乘数因子,M=2L为模值。inc是增量,通常情况下可取小于M的奇数。C语言编译器中函数rand()可产生0~32767之间的随机整数。VC中产生伪随机数的公式为:
rand(n)=((rand(n-1)*214013+2531011)mod65536)&0x7fff
BC中产生伪随机数的公式为:
rand(n)=((rand(n-1)*22695477+1)mod65536)&0x7fff
利用数字技术,产生均匀分布伪随机数后,可方便的产生其它分布伪随机数,例如高斯分布伪随机序列,以及均值、方差、谱密度可调的伪随机数字白噪声信号。
m序列又称最长线性反馈移位寄存器序列,是研究得比较深入的一种二进制伪随机序列。常用于扩频通信、测距、电路测试等领域。它由带线性反馈的移位寄存器产生,如图4所示。图中一位移位寄存器的状态用ai表示,ai=0或ai=1,i为整数。反馈线的连接状态用Ci表示,Ci=0表示该反馈线断开,Ci=1表示反馈存在。
移位寄存器在时钟信号的控制下,一步步向外移位输出。由于反馈的存在,若初始状态为全“0”,则移位后得到的仍为全“0”,因此应避免出现全“0”状态;又因为n级移存器共有2n种可能的不同状态,除全“0”状态外,剩下2n-1种状态可用。每移位一次,就出现一种状态,在移位若干次后,一定能重复出现前某一状态,其后的过程便周而复始,也就是说,输出信号一定是周期信号。反馈线位置不同将出现不同周期的不同序列,希望找到合适的线性反馈逻辑,能使移位寄存器产生的序列最长,即达到周期M=2n-1。按图2中连线关系,移位寄存器组左端所得到的输入可以写为:
an=c1an-1⊕c2an-2⊕c3an-3⊕...⊕cn-1a1⊕cna0
式中⊕是异或运算符。选择合适的线性反馈逻辑时,输出序列就是一个周期为2n-1的m序列。
Ci的取值决定了具体移位寄存器的反馈连接、序列结构和周期,为便于表达Ci的状态,引进多项式:
f(x)=c0+c1x+c2x2+...+cn-1xn-1+cnxn
该式称为特征多项式。当知道一个线性反馈移位寄存器的特征多项式,就可以决定线性反馈移位寄存器的结构。已经证明,若线性反馈移位寄存器的特征多项式为本原多项式,则此线性反馈移位寄存器能产生m序列。这是线性反馈移位寄存器产生m序列的充分必要条件。在实际应用中,根据数据位数需要首先确定m序列的长度,然后通过查表就可以方便地得到m序列发生器的反馈逻辑。一定长度的线性反馈移位寄存器,有很多个本原多项式,对应不同的m序列。常用的本原多项式,前人已经以表格的形式给出。例如,当n=31时,f(x)=1+x3+x31为本原多项式,可产生m序列。对应公式中的C0=1,C3=1,C31=1。序列周期为231-1,恰好为一个梅森素数。m序列有以下性质:
(1)平衡特性。在m序列的每个2n-1周期中,“1”码元出现的数目为2n-1次,“0”码元出现的数目为2n-1-1次,即“0”的个数总是比“1”的个数少一个,这表明,序列平均值极小。
(2)游程特性。游程是指在一个序列周期中连续排列的且取值相同的码元的合称,在一个游程中的码元的个数为游程长度。m序列中共有2n-1个游程。其中长度为k(1≤k≤n-2)的游程数目占总游程数的2-k,长度为n-1的连“0”的游程数为1,长度为n的连“1”游程数为1。
(3)移位相加特性。一个m序列{an}与其任意次延迟移位后产生的另一个不同序列{an+k}模2相加,得到的仍是该m序列的延迟移位序列。如,01001l1右移1次产生另一个序列1010011,模2相加后的序列为1l10100,相当于原序列右移3次后得到的序列。
(4)m序列具有优良的自相关特性,其自相关函数:
最长线性反馈移位寄存器通常存在很多个m序列。例如3位的最长线性反馈移位寄存器存在2个m序列,4位的最长线性反馈移位寄存器存在2个m序列,5位的最长线性反馈移位寄存器存在6个m序列,6位的最长线性反馈移位寄存器存在6个m序列,7位的最长线性反馈移位寄存器存在18个m序列,8位的最长线性反馈移位寄存器存在16个m序列,9位的最长线性反馈移位寄存器存在48个m序列,10位的最长线性反馈移位寄存器存在60个m序列,11位的最长线性反馈移位寄存器存在176个m序列,12位的最长线性反馈移位寄存器存在144个m序列,13位的最长线性反馈移位寄存器存在630个m序列,14位的最长线性反馈移位寄存器存在756个m序列,15位的最长线性反馈移位寄存器存在1800个m序列。随着最长线性反馈移位寄存器位数的增加,m序列的个数迅速增加。
系数为5个的19位最长线性反馈移位寄存器存在158个m序列。其本原多项式为1+x+x2+x5+x19、1+x+x2+x6+x19、1+x+x4+x6+x19、1+x3+x4+x6+x19、1+x+x5+x6+x19、1+x+x4+x7+x19、1+x5+x6+x7+x19、1+x+x6+x8+x19、…、1+x13+x17+x18+x19、1+x14+x17+x18+x19。系数为3个的25位最长线性反馈移位寄存器存在4个m序列。其本原多项式为1+x3+x25、1+x7+x25、1+x18+x25、1+x22+x25。一个本原多项式通常存在一个镜像本原多项式,这两个本原多项式系数的个数相同,系数的阶数以最长线性反馈移位寄存器的位数对称。例如19阶本原多项式1+x+x2+x5+x19与1+x14+x17+x18+x19镜像,1+x+x2+x6+x19与1+x13+x17+x18+x19镜像。25阶本原多项式1+x3+x25与1+x22+x25镜像,1+x7+x25与1+x18+x25镜像。两个镜像的本原多项式生成的m序列有较强的相关性。没有镜像关系的本原多项式生成的m序列的互相关函数几乎为零,可以认为是不相关的。例如本原多项式1+x+x2+x5+x19、1+x+x2+x6+x19、1+x+x4+x6+x19、1+x3+x4+x6+x19、1+x+x5+x6+x19、1+x+x4+x7+x19、1+x5+x6+x7+x19、1+x+x6+x8+x19、1+x3+x25、1+x7+x25之间互不相关。
m序列的伪随机性很好,但它每次只能输出一位。要想产生一个多数据位的伪随机数,很自然的想法是从最长线性反馈移位寄存器中直接抽取几位,得到一个多位的随机数。图5是一个从8位的最长线性反馈移位寄存器中得到4位伪随机数的电路示意图。其线性反馈逻辑电路对应的本原多项式可选择1+x2+x3+x4+x8,即a6、a5、a4、a0数据位对应的反馈线处于连接状态。但这种方法不好,因为本时刻输出的伪随机数,与下一时刻输出的伪随机数,除一个数据位是新生成的外,其它几个数据位是相同的,只不过位置偏移了一位。本时刻输出的伪随机数,与下一下一时刻输出的伪随机数,除两个数据位是新生成的外,其它两个数据位是相同的,只不过位置偏移了两位。依次类推。也就是说用这种方法生成的伪随机数前后之间有较强的相关性,因此其质量不够好。
实用新型内容
本实用新型的目的是提供一种多通道伪随机信号发生器设计方法,以解决现有技术存在的问题。
为了达到上述目的,本实用新型所采用的技术方案为:
一种多通道伪随机信号发生器,其特征在于:基于并行结构最长线性反馈移位寄存器的Na位伪随机数发生器A,生成了m位的均匀分布伪随机数,记为A[k],以二进制表示为Am-1[k]Am-2[k]...A1[k]A0[k];基于并行结构的Nb位最长线性反馈移位寄存器的伪随机数发生器B,生成了m位的均匀分布伪随机数,记为B[k],以二进制表示为Bm-1[k]Bm-2[k]...B1[k]B0[k];伪随机数A[k]与伪随机数B[k]并联,生成2m位伪随机数D[k],以二进制表示为D2m-1[k]D2m-2[k]...D1[k]D0[k];要求伪随机数发生器A生成的伪随机数A[k]与伪随机数发生器B生成的伪随机数B[k]不相关,即伪随机数发生器A的本原多项式与伪随机数发生器B的本原多项式不能是镜像本原多项式;由于伪随机数发生器A与伪随机数发生器B之间不相关,生成的伪随机数D[k]中的每一位是均匀分布的,因此D[k]是2m位均匀分布伪随机数;
当m为偶数时,并行结构伪随机数发生器A的序列周期为2Na-1,并行结构伪随机数发生器B的序列周期为2Nb-1;伪随机数D[k]的序列周期为伪随机数发生器A与B序列周期的最小公倍数,因此伪随机数D[k]的序列周期得到了极大扩展。
所述的一种多通道伪随机信号发生器,其特征在于:采用三组伪随机数发生器电路结构时,基于并行结构最长线性反馈移位寄存器的Na位伪随机数发生器A,生成了m位的均匀分布伪随机数,记为A[k];基于并行结构最长线性反馈移位寄存器的Nb位伪随机数发生器B,生成了m位的均匀分布伪随机数,记为B[k];基于并行结构最长线性反馈移位寄存器的Nc位伪随机数发生器C,生成了m位的均匀分布伪随机数,记为C[k];A[k]与B[k]与C[k]并联,生成3m位的均匀分布伪随机数D[k];要求伪随机数发生器A与伪随机数发生器B与伪随机数发生器C互不相关;
当m为偶数时,并行结构伪随机数发生器A的序列周期为2Na-1,并行结构伪随机数发生器B的序列周期为2Nb-1,并行结构伪随机数发生器C的序列周期为2Nc-1;伪随机数D[k]的序列周期为伪随机数发生器A与B与C序列周期的最小公倍数,因此伪随机数D[k]的序列周期得到了极大扩展。
本实用新型能高速产生有多个数据位的长序列周期伪随机数,也能产生多种分布的伪随机数,也能产生宽频带的数字白噪声信号,其均值、方差等参数可调节,还能产生多路伪随机信号。
附图说明
图1固态噪声信号发生器原理框图。
图2高斯分布数字噪声信号发生器原理框图。
图3二进制均匀分布数字噪声信号发生器原理框图。
图4最长线性反馈移位寄存器原理框图。
图5从8位最长线性反馈移位寄存器抽取4位数的原理框图。
图6并行结构伪随机数发生电路原理框图。
图7实用新型的伪随机数产生电路原理框图。
图8有三个电路单元的高速伪随机数产生电路原理框图。
图9编码电路原理框图。
图10Hash编码电路原理框图。
图11不同分布数字噪声信号产生电路原理框图。
图12伪随机数产生电路的一个具体实施原理框图。
图13编码电路的一个具体实施原理框图。
图14伪随机信号发生器输出电路仿真时序图。
图15伪随机数产生电路的另一个具体实施原理框图。
图16编码电路的另一个具体实施原理框图。
图17伪随机信号发生器输出电路仿真时序图。
图18高斯分布噪声信号概率密度曲线。
图19高斯分布噪声信号累积分布函数曲线。
图20产生高斯分布噪声信号时查找表中的数值曲线。
具体实施方式
一种多通道伪随机数字噪声信号发生器,对两个以上伪随机数发生器进行运算,产生长序列周期高速伪随机数;其中每个伪随机数的产生基于并行结构最长线性反馈移位寄存器电路;要求参与运算的每个伪随机数发生器产生的伪随机数互不相关;能实时产生多路有多个数据位的均匀分布伪随机数;也能产生多路其它分布的伪随机数;能产生多路宽频带的伪随机数字白噪声信号;其均值、方差等参数可调节。下面阐述本实用新型的技术原理。
从最长线性反馈移位寄存器中抽取几位数的方法中相临伪随机数之间有部分数据位是相同的,只不过位置有所偏移,生成的伪随机数质量不好,需要做出改进。
对于n位的最长线性反馈移位寄存器,内部寄存器的值表示了电路的状态{Q[k]},当前时刻寄存器的值记为Qn-1[k]、Qn-2[k]、Qn-3[k]...Q1[k]、Q0[k],Qn[k]为
Qn[k]=c1Qn-1[k]⊕c2Qn-2[k]⊕c3Qn-3[k]⊕...⊕cn-1Q1[k]⊕cnQ0[k]
下时刻电路的状态记为{Q[k+1]},寄存器的值为Qn-1[k+1]、Qn-2[k+1]、Qn-3[k+1]...Q1[k+1]、Q0[k+1],则
Qn-1[k+1]=Qn[k]
Qn-2[k+1]=Qn-1[k]
Qn-3[k+1]=Qn-2[k]
Q1[k+1]=Q2[k]
Q0[k+1]=Q1[k]
Qn[k+1]=c1Qn-1[k+1]⊕c2Qn-2[k+1]⊕c3Qn-3[k+1]⊕...⊕cn-1Q1[k+1]⊕cnQ0[k+1]
下下时刻电路的状态记为{Q[k+2]},寄存器的值为Qn-1[k+2]、Qn-2[k+2]、Qn-3[k+2]...Q1[k+2]、Q0[k+2],则
Qn-1[k+2]=Qn[k+1]
Qn-2[k+2]=Qn-1[k+1]
Qn-3[k+2]=Qn-2[k+1]
Q1[k+2]=Q2[k+1]
Q0[k+2]=Q1[k+1]
Qn[k+2]=c1Qn-1[k+2]⊕c2Qn-2[k+2]⊕c3Qn-3[k+2]⊕...⊕cn-1Q1[k+2]⊕cnQ0[k+2]
依次类推。如果准备并行输出m位的二进制数据,为了克服前述方法生成伪随机数的缺点,需要来m个时钟,将电路的状态从{Q[k]}变为{Q[k+m]},寄存器的值为Qn-1[k+m]、Qn-2[k+m]、Qn-3[k+m]...Q1[k+m]、Q0[k+m]。用这种方法生成的m位的二进制数据为Qm-1[k+m]、Qm-2[k+m]、...、Q1[k+m]、Q0[k+m]。这样生成的m位伪随机数前后之间没有任何数据位是相同的,很好地的克服了数据之间的相关性,伪随机数的质量得到了极大改善。由于每位二进制数“0”与“1”码元的概率是相同的,因此生成的m位的伪随机数是均匀分布的。当m位的伪随机数看作补码时,数值范围为[-2m-1,2m-1-1]。当m位的伪随机数看作无符号数时,数值范围为[0,2m-1]。
上述方法的缺点是每来m次时钟,才能得到一个伪随机数,因此电路生成伪随机数的速度下降了m倍。如果对上述电路的状态{Q[k]}递推,依次得到{Q[k+1]}...{Q[k+m]},将电路状态{Q[k+m]}的逻辑推导出只依赖于{Q[k]}的状态,那么设计出来的最长线性反馈移位寄存器每来一个时钟,就能输出一个m位的伪随机数,生成伪随机数的速度得到了极大提高,其内部状态相当于原来的最长线性反馈移位寄存器改变m次的状态。这种并行结构的最长线性反馈移位寄存器原理框图如图6所示。
本实用新型提出了一种将一个并行结构最长线性反馈移位寄存器与一个以上并行结构最长线性反馈移位寄存器相结合产生长序列周期伪随机数的方法,原理框图如图7所示。
如果基于并行结构最长线性反馈移位寄存器的Na位伪随机数发生器A,生成了m位的均匀分布伪随机数,记为A[k],以二进制表示为Am-1[k]Am-2[k]...A1[k]A0[k]。基于并行结构的Nb位最长线性反馈移位寄存器的伪随机数发生器B,生成了m位的均匀分布伪随机数,记为B[k],以二进制表示为Bm-1[k]Bm-2[k]...B1[k]B0[k]。伪随机数A[k]与伪随机数B[k]并联,生成2m位伪随机数D[k],以二进制表示为D2m-1[k]D2m-2[k]...D1[k]D0[k]。要求伪随机数发生器A生成的伪随机数A[k]与伪随机数发生器B生成的伪随机数B[k]不相关,即伪随机数发生器A的本原多项式与伪随机数发生器B的本原多项式不能是镜像本原多项式。由于伪随机数发生器A与伪随机数发生器B之间不相关,生成的伪随机数D[k]中的每一位是均匀分布的,因此D[k]是2m位均匀分布伪随机数。
当m为偶数时,并行结构伪随机数发生器A的序列周期为2Na-1,并行结构伪随机数发生器B的序列周期为2Nb-1。伪随机数D[k]的序列周期为伪随机数发生器A与B序列周期的最小公倍数。因此伪随机数D[k]的序列周期得到了极大扩展。
采用三组伪随机数发生器电路结构时,原理框图如图8所示。基于并行结构最长线性反馈移位寄存器的Na位伪随机数发生器A,生成了m位的均匀分布伪随机数,记为A[k]。基于并行结构最长线性反馈移位寄存器的Nb位伪随机数发生器B,生成了m位的均匀分布伪随机数,记为B[k]。基于并行结构最长线性反馈移位寄存器的Nc位伪随机数发生器C,生成了m位的均匀分布伪随机数,记为C[k]。A[k]与B[k]与C[k]并联,生成3m位的均匀分布伪随机数D[k]。要求伪随机数发生器A与伪随机数发生器B与伪随机数发生器C互不相关。
当m为偶数时,并行结构伪随机数发生器A的序列周期为2Na-1,并行结构伪随机数发生器B的序列周期为2Nb-1,并行结构伪随机数发生器C的序列周期为2Nc-1。伪随机数D[k]的序列周期为伪随机数发生器A与B与C序列周期的最小公倍数。因此伪随机数D[k]的序列周期得到了极大扩展。
可以设计有更多电路单元的伪随机数发生器。例如可以设计有四个并行结构最长线性反馈移位寄存器的伪随机数发生器,将这四个伪随机数发生器的输出并联,生成有多个数据位的均匀分布伪随机数。要求这四个伪随机数发生器互不相关。生成伪随机数的序列周期为这四个伪随机数发生器序列周期的最小公倍数。
Hash类函数,能够把一个数据空间中的数据映射成另一数据空间中的数据。输出数据对输入数据的变化非常敏感,输入数据哪怕一位的变化,输出数据也会极为不同。设计良好的Hash函数能够把输入空间中的数据映射成输出空间中均匀分布的随机数。这个Hash函数可以根据应用需求自行设计,也可以选用一种性能优良的Hash函数。安全哈希算法SHA是Hash函数的一种,经SHA处理后的随机数具有很好的统计特性。SHA家族算法由美国国家安全局(NSA)所设计,并由美国国家标准与技术研究院(NIST)发布。SHA-2包括SHA-224,SHA-256,SHA-384和SHA-512四种。四种算法中,SHA-224运算复杂度相对较低,运算速度最快。SHA-2算法输入最大长度不超过264位,输出为224位或者256位或者384位或者512位。算法处理包括以下步骤:(1)附加填充比特;(2)附加长度值;(3)初始化缓存;(4)处理分组序列;(5)输出最后的数据摘要。SHA-2主要用到的逻辑运算有:移位、按位与和按位异或,都可以简单地用数字电路实现,且SHA-2在硬件中的运算速度很快。SHA-2可以很容易地实现对数据的压缩,采用数据输入输出比为1:1时,输入位数与输出位数相同,不减小数据输出速度。
从信号发生的角度看,本文论述的方法,生成的均匀分布伪随机数的质量已经比较好了。如果将本实用新型生成的伪随机数经过如图9所示编码电路处理后,可改善生成伪随机数的质量。当此编码电路选用如图10所示Hash编码电路时,可生成极高质量的均匀分布伪随机数,能够很好的满足各项随机性测试,可用于密码学等领域对随机数质量有严格要求的场合。经过此编码电路处理后,输出伪随机数的序列周期跟输入伪随机数的序列周期相同,但每一位的序列周期都扩展为跟多数据位伪随机数的序列周期相同,也就是说伪随机数的熵值得到了改善。图10电路中输入的伪随机信号,经过数据位转换电路,将高速率低位宽的伪随机信号串并转换成低速率高位宽的伪随机信号,经过Hash编码电路生成相同速率的伪随机信号,再经数据位转换电路,将低速率高位宽的伪随机信号并串转换成高速率低位宽的输出伪随机信号。多相时钟发生电路,将输入时钟信号分频,产生多路的低频时钟信号,每路低频时钟信号的相位相差一个输入时钟周期,用于串并及并串转换电路。输入时钟与低频时钟的频率比等于Hash编码信号与输入信号数据位宽的比值。输出时钟与低频时钟的频率比等于Hash编码信号与输出信号数据位宽的比值。编码输出的w字节均匀分布伪随机数,划分成t路伪随机数同时输出,每路仍为均匀分布伪随机数,其位宽为w/t个字节。例如当w为8字节,输出4路伪随机信号时,每路伪随机信号的位宽为2字节。由于经过了复杂的编码运算,输出的每路信号可以看成独立的均匀分布伪随机信号。
生成均匀分布的伪随机数后,就容易生成各种分布的伪随机噪声信号了。例如可以产生均匀分布数字白噪声信号、高斯分布数字白噪声信号,也可以产生其它分布数字噪声信号,其均值、方差、谱密度可调节。由均匀分布数字白噪声信号转换成其它分布伪随机数字噪声信号的电路框图如图11所示。生成其它分布数字噪声信号时,均匀分布数字白噪声信号经过查找表转换成所需分布的数字噪声信号。改变查找表中的数值,可以改变数字噪声信号的分布、均值、方差。生成伪随机数字白噪声信号时,输出的数字噪声信号带宽最高约为电路时钟频率的一半。每路均匀分布数字白噪声信号都经过图11所示电路处理时,可产生t路不同分布、均值、方差的伪随机噪声信号。
以32位最长线性反馈移位寄存器生成8位伪随机数为例,说明本实用新型中用到的高速伪随机数生成方法的具体实现。取本原多项式1+x2+x6+x7+x32,当前时刻k的电路状态为{Q[k]},其寄存器值为Q31[k]、Q30[k]、...、Q1[k]、Q0[k],Q32[k]为
Q32[k]=Q30[k]⊕Q26[k]⊕Q25[k]⊕Q0[k]
则递推式中k+8时刻的电路状态{Q[k+8]}为
Q0[k+8]=Q8[k]
Q1[k+8]=Q9[k]
Q23[k+8]=Q31[k]
Q24[k+8]=Q32[k]=Q30[k]⊕Q26[k]⊕Q25[k]⊕Q0[k]
Q25[k+8]=Q32[k+1]=Q30[k+1]⊕Q26[k+1]⊕Q25[k+1]⊕Q0[k+1]
=Q31[k]⊕Q27[k]⊕Q26[k]⊕Q1[k]
Q26[k+8]=Q32[k+2]=Q30[k+2]⊕Q26[k+2]⊕Q25[k+2]⊕Q0[k+2]
=Q32[k]⊕Q28[k]⊕Q27[k]⊕Q2[k]
=Q30[k]⊕Q28[k]⊕Q27[k]⊕Q26[k]⊕Q25[k]⊕Q2[k]⊕Q0[k]
Q27[k+8]=Q32[k+3]=Q30[k+3]⊕Q26[k+3]⊕Q25[k+3]⊕Q0[k+3]
=Q32[k+1]⊕Q29[k]⊕Q28[k]⊕Q3[k]
=Q31[k]⊕Q29[k]⊕Q28[k]⊕Q27[k]⊕Q26[k]⊕Q3[k]⊕Q1[k]
Q28[k+8]=Q32[k+4]=Q30[k+4]⊕Q26[k+4]⊕Q25[k+4]⊕Q0[k+4]
=Q32[k+2]⊕Q30[k]⊕Q29[k]⊕Q4[k]=Q30[k]⊕Q28[k]⊕Q27[k]
⊕Q26[k]⊕Q25[k]⊕Q2[k]⊕Q0[k]⊕Q30[k]⊕Q29[k]⊕Q4[k]
=Q29[k]⊕Q28[k]⊕Q27[k]⊕Q26[k]⊕Q25[k]⊕Q4[k]⊕Q2[k]⊕Q0[k]
Q29[k+8]=Q32[k+5]=Q30[k+5]⊕Q26[k+5]⊕Q25[k+5]⊕Q0[k+5]
=Q32[k+3]⊕Q31[k]⊕Q30[k]⊕Q5[k]
=Q30[k]⊕Q29[k]⊕Q28[k]⊕Q27[k]⊕Q26[k]⊕Q5[k]⊕Q3[k]⊕Q1[k]
Q30[k+8]=Q32[k+6]=Q30[k+6]⊕Q26[k+6]⊕Q25[k+6]⊕Q0[k+6]
=Q32[k+4]⊕Q32[k]⊕Q31[k]⊕Q6[k]=Q29[k]⊕Q28[k]⊕Q27[k]
⊕Q26[k]⊕Q25[k]⊕Q4[k]⊕Q2[k]⊕Q0[k]⊕Q30[k]⊕Q26[k]
⊕Q25[k]⊕Q0[k]⊕Q31[k]⊕Q6[k]
=Q31[k]⊕Q30[k]⊕Q29[k]⊕Q28[k]⊕Q27[k]⊕Q6[k]⊕Q4[k]⊕Q2[k]
Q31[k+8]=Q32[k+7]=Q30[k+7]⊕Q26[k+7]⊕Q25[k+7]⊕Q0[k+7]
=Q30[k+7]⊕Q26[k+7]⊕Q25[k+7]⊕Q0[k+7]=Q32[k+5]⊕Q32[k+1]
⊕Q32[k]⊕Q7[k]=Q30[k]⊕Q29[k]⊕Q28[k]⊕Q27[k]⊕Q26[k]
⊕Q5[k]⊕Q3[k]⊕Q1[k]⊕Q31[k]⊕Q27[k]⊕Q26[k]⊕Q1[k]
⊕Q30[k]⊕Q26[k]⊕Q25[k]⊕Q0[k]⊕Q7[k]
=Q31[k]⊕Q29[k]⊕Q28[k]⊕Q26[k]⊕Q25[k]⊕Q7[k]⊕Q5[k]⊕Q3[k]
⊕Q0[k]
Q32[k+8]=Q30[k+8]⊕Q26[k+8]⊕Q25[k+8]⊕Q0[k+8]
推导出的上述各式中,k+8时刻的电路状态只依赖于k时刻的电路状态。用这种方法设计出的并行结构最长线性反馈移位寄存器每来一个时钟,就相当于原来的最长线性反馈移位寄存器的内部状态改变了8次,能输出1个8位的伪随机数,改进了串行输出方法速度慢的缺点。由于32位最长线性反馈移位寄存器有232-1个状态,其不能被8整除,因此8位伪随机数的周期为232-1。
用相同的方法可以推导出31位最长线性反馈移位寄存器的并行结构反馈逻辑电路。以生成8位伪随机数为例,取本原多项式1+x3+x31,当前时刻k的电路状态为{Q[k]},其寄存器值为Q30[k]、Q29[k]、...、Q1[k]、Q0[k],Q31[k]为
Q31[k]=Q28[k]⊕Q0[k]
则递推式中k+8时刻的电路状态{Q[k+8]}为
Q0[k+8]=Q8[k]
Q1[k+8]=Q9[k]
Q22[k+8]=Q30[k]
Q23[k+8]=Q31[k]=Q28[k]⊕Q0[k]
Q24[k+8]=Q31[k+1]=Q28[k+1]⊕Q0[k+1]
=Q29[k]⊕Q1[k]
Q25[k+8]=Q31[k+2]=Q28[k+2]⊕Q0[k+2]
=Q30[k]⊕Q2[k]
Q26[k+8]=Q31[k+3]=Q28[k+3]⊕Q0[k+3]
=Q28[k]⊕Q3[k]⊕Q0[k]
Q27[k+8]=Q31[k+4]=Q28[k+4]⊕Q0[k+4]
=Q31[k+1]⊕Q4[k]=Q28[k+1]⊕Q0[k+1]⊕Q4[k]
=Q29[k]⊕Q4[k]⊕Q1[k]
Q28[k+8]=Q31[k+5]=Q28[k+5]⊕Q0[k+5]
=Q31[k+2]⊕Q5[k]=Q28[k+2]⊕Q0[k+2]⊕Q5[k]
=Q30[k]⊕Q5[k]⊕Q2[k]
Q29[k+8]=Q31[k+6]=Q28[k+6]⊕Q0[k+6]
=Q31[k+3]⊕Q6[k]=Q28[k+3]⊕Q0[k+3]⊕Q6[k]
=Q28[k]⊕Q0[k]⊕Q3[k]⊕Q6[k]
=Q28[k]⊕Q6[k]⊕Q3[k]⊕Q0[k]
Q30[k+8]=Q31[k+7]=Q28[k+7]⊕Q0[k+7]
=Q31[k+4]⊕Q7[k]=Q28[k+4]⊕Q0[k+4]⊕Q7[k]
=Q31[k+1]⊕Q4[k]⊕Q7[k]=Q28[k+1]⊕Q0[k+1]⊕Q4[k]⊕Q7[k]
=Q29[k]⊕Q7[k]⊕Q4[k]⊕Q1[k]
Q31[k+8]=Q28[k+8]⊕Q0[k+8]=Q30[k]⊕Q8[k]⊕Q5[k]⊕Q2[k]
推导出的上述各式中,k+8时刻的电路状态只依赖于k时刻的电路状态。用这种方法设计出的并行结构最长线性反馈移位寄存器每来一个时钟,就相当于原来的最长线性反馈移位寄存器的内部状态改变了8次,能输出1个8位的伪随机数,改进了串行输出方法速度慢的缺点。由于31位最长线性反馈移位寄存器有231-1个状态,其不能被8整除,因此8位伪随机数的周期为231-1。
下面以两个电路单元的伪随机数发生器为例,说明本实用新型的一个具体实施。电路框图如图12所示。伪随机数发生器A为32位并行结构最长线性反馈移位寄存器,每来一个时钟输出一个8位伪随机数A[k],选择本原多项式1+x2+x6+x7+x32,其并行结构反馈逻辑前面已做过推导。伪随机数发生器B为31位并行结构最长线性反馈移位寄存器,每来一个时钟输出一个8位伪随机数B[k],选择本原多项式1+x3+x31,其并行结构反馈逻辑前面已做过推导。伪随机数A[k]与B[k]并联在一起,生成16位伪随机数D[k]。伪随机数A[k]的序列周期为232-1。伪随机数B[k]的序列周期为231-1,是一个梅森素数。伪随机数D[k]的序列周期为伪随机数A[k]的序列周期与伪随机数B[k]的序列周期的最小公倍数,为(232-1)(231-1),约为263,比A[k]的序列周期大大增加。伪随机数的序列周期越长,性能越接近理想随机数。
伪随机信号D[k]送入如图13所示的编码电路后,可生成极高质量的均匀分布伪随机信号,能够很好的满足各项随机性测试,可用于密码学等领域对随机数质量有严格要求的场合。输出伪随机信号的序列周期跟伪随机信号D[k]的序列周期相同,每一数据位的序列周期都扩展为跟伪随机信号D[k]的序列周期相同,伪随机信号的熵值得到了极大改善。该编码电路输入图12所示的16位数字噪声信号,输出编码后的64位数字噪声信号。输入的数字噪声信号,经过16至256数据位转换电路,将高速率的16位噪声信号串并转换成1/16速率的256位噪声信号,经过SHA-256编码电路生成相同速率的256位噪声信号,再经256至64数据位转换电路,将1/16速率的256位噪声信号并串转换成1/4速率的64位输出噪声信号。多相时钟发生电路,将输入时钟信号分频,产生16路的1/16速率低频时钟信号,每路低频时钟信号的相位相差一个输入时钟周期,用于串并转换电路。多相时钟发生电路,将输入时钟信号分频,产生1/4速率输出时钟信号,用于256位至64位并串转换电路。编码器输出的8字节均匀分布伪随机数,划分成4路伪随机数X[k]、Y[k]、Z[k]、F[k]同时输出,每路仍为均匀分布伪随机数,位宽为2个字节。图14是输出电路仿真时序图,CLK是周期为2ns的输入时钟信号,其频率为500MHz;伪随机数X[15..0]、Y[15..0]、Z[15..0]、F[15..0]的输出时钟CLKA的周期为8ns,其频率为125MHz。
下面以三个电路单元的伪随机数发生器为例,说明本实用新型的另一个具体实施。电路框图如图15所示。伪随机数发生器A为32位并行结构最长线性反馈移位寄存器,每来一个时钟输出一个8位伪随机数A[k],选择本原多项式1+x2+x6+x7+x32。伪随机数发生器B为31位并行结构最长线性反馈移位寄存器,每来一个时钟输出一个8位伪随机数B[k],其本原多项式为1+x3+x31。伪随机数发生器C为19位并行结构最长线性反馈移位寄存器,每来一个时钟输出一个8位伪随机数C[k],其本原多项式为1+x+x2+x5+x19,其并行结构反馈逻辑可参考前面的推导方法。伪随机数A[k]与B[k]与C[k]并联在一起,生成24位伪随机数D[k]。伪随机数A[k]的序列周期为232-1。伪随机数B[k]的序列周期为231-1,是一个梅森素数。伪随机数C[k]的序列周期为219-1,是一个梅森素数。伪随机数D[k]的序列周期为伪随机数A[k]与B[k]与C[k]的序列周期的最小公倍数,为(232-1)(231-1)(219-1),约为282,比A[k]的序列周期大大增加。应说明,本例中伪随机数发生器A与伪随机数发生器B与伪随机数发生器C的阶数选择是任意的,只要三者互不相关即可。
伪随机信号D[k]送入如图16所示的编码电路后,可生成极高质量的均匀分布伪随机信号。输出伪随机信号的序列周期跟伪随机信号D[k]的序列周期相同,每一数据位的序列周期都扩展为跟伪随机信号D[k]的序列周期相同,伪随机信号的熵值得到了极大改善。该编码电路输入图15所示的24位数字噪声信号,输出编码后的48位数字噪声信号。输入的数字噪声信号,经过24至384数据位转换电路,将高速率的24位噪声信号串并转换成1/16速率的384位噪声信号,经过SHA-384编码电路生成相同速率的384位噪声信号,再经384至48数据位转换电路,将1/16速率的384位噪声信号并串转换成1/2速率的48位输出噪声信号。多相时钟发生电路,将输入时钟信号分频,产生16路的1/16速率低频时钟信号,每路低频时钟信号的相位相差一个输入时钟周期,用于串并转换电路。多相时钟发生电路,将输入时钟信号分频,产生1/2速率输出时钟信号,用于384位至48位并串转换电路。编码器输出的6字节均匀分布伪随机数,划分成3路伪随机数X[k]、Y[k]、Z[k]同时输出,每路仍为均匀分布伪随机数,位宽为2个字节。图17是输出电路仿真时序图,CLK是周期为2ns的输入时钟信号,其频率为500MHz;伪随机数X[15..0]、Y[15..0]、Z[15..0]的输出时钟CLKB的周期为4ns,其频率为250MHz。
本实用新型可产生均匀分布数字白噪声信号、高斯分布数字白噪声信号,也可以产生其它分布数字噪声信号,其均值、方差可调节。
要产生概率密度为f(x)的随机数,其累积分布函数为F(x),有
当y为[0,1.0]之间的均匀分布随机数序列时,x即为概率密度为f(x)的随机数序列。
工程实践中,产生的随机数范围不是从负无穷大到正无穷大,而是一个有位数限制的随机数。因此,实际产生的某种分布的随机数,是对这种分布的理想随机数的一种近似。例如要产生一个8位的随机数,其数值范围为-128~127,要产生一个16位的随机数,其数值范围为-32768~32767。由y值得到x值可通过一个查找表电路实现。查找表是一个通过输入地址值查找得到输出数值的电路,一般用RAM实现。
产生均匀分布数字白噪声信号时,由以上方法得知,查找表中存储的数值曲线为一条直的斜线。
产生高斯分布数字白噪声信号时,其概率密度曲线如图18所示,其累积分布函数曲线如图19所示,查找表中存储的数值曲线如图20所示。
用以上方法,可产生其它分布的噪声信号。生成不同的噪声信号,只需按要求,计算好查找表中的数值曲线,进行装载即可。
对伪随机数或数字噪声信号进行采样,采样序列设为{xi},N个样本的均值u为:
方差σ2相当于求信号交流部分的功率,公式为:
当N值较大时,采样序列的均值u、方差σ2可以作为该噪声信号的真实均值、真实方差的一个估计,其误差很小。
把均值为u、方差为σ2的噪声信号序列{xi}归一化成均值为0、方差为1的噪声信号序列{yi},公式为:
用均值为0、方差为1的噪声信号序列{xi}构造均值为u、方差为σ2的噪声信号序列{yi},公式为:
yi=u+σ*xi
设带限白噪声信号的带宽为B、均值为0、方差为σ2,则其幅度谱密度为:
A(f)=σ/B
功率谱密度为:
P(f)=σ2/B
用以上方法,可控制输出数字噪声信号的均值、方差,以及数字白噪声信号的幅度谱密度或功率谱密度。
使用高速FPGA电路实现本文论述的方法,输入时钟频率可达500MHz,可输出多路宽带伪随机数字噪声信号,满足多维伪随机数字噪声信号的产生需求,输出时钟频率高于100MHz。使用超高速的数字电路实现,可输出更高带宽的数字噪声信号。
应当理解本文所述的例子和实施方式仅为了说明,本领域技术人员可根据它做出各种修改或变化,在不脱离本实用新型的精神实质的情况下,都属于本实用新型的保护范围。
Claims (2)
1.一种多通道伪随机信号发生器,其特征在于:基于并行结构最长线性反馈移位寄存器的Na位伪随机数发生器A,生成了m位的均匀分布伪随机数,记为A[k],以二进制表示为Am-1[k]Am-2[k]...A1[k]A0[k];基于并行结构的Nb位最长线性反馈移位寄存器的伪随机数发生器B,生成了m位的均匀分布伪随机数,记为B[k],以二进制表示为Bm-1[k]Bm-2[k]...B1[k]B0[k];伪随机数A[k]与伪随机数B[k]并联,生成2m位伪随机数D[k],以二进制表示为D2m-1[k]D2m-2[k]...D1[k]D0[k];要求伪随机数发生器A生成的伪随机数A[k]与伪随机数发生器B生成的伪随机数B[k]不相关,即伪随机数发生器A的本原多项式与伪随机数发生器B的本原多项式不能是镜像本原多项式;由于伪随机数发生器A与伪随机数发生器B之间不相关,生成的伪随机数D[k]中的每一位是均匀分布的,因此D[k]是2m位均匀分布伪随机数;
当m为偶数时,并行结构伪随机数发生器A的序列周期为2Na-1,并行结构伪随机数发生器B的序列周期为2Nb-1;伪随机数D[k]的序列周期为伪随机数发生器A与B序列周期的最小公倍数,因此伪随机数D[k]的序列周期得到了极大扩展。
2.根据权利要求1所述的一种多通道伪随机信号发生器,其特征在于:采用三组伪随机数发生器电路结构时,基于并行结构最长线性反馈移位寄存器的Na位伪随机数发生器A,生成了m位的均匀分布伪随机数,记为A[k];基于并行结构最长线性反馈移位寄存器的Nb位伪随机数发生器B,生成了m位的均匀分布伪随机数,记为B[k];基于并行结构最长线性反馈移位寄存器的Nc位伪随机数发生器C,生成了m位的均匀分布伪随机数,记为C[k];A[k]与B[k]与C[k]并联,生成3m位的均匀分布伪随机数D[k];要求伪随机数发生器A与伪随机数发生器B与伪随机数发生器C互不相关;
当m为偶数时,并行结构伪随机数发生器A的序列周期为2Na-1,并行结构伪随机数发生器B的序列周期为2Nb-1,并行结构伪随机数发生器C的序列周期为2Nc-1;伪随机数D[k]的序列周期为伪随机数发生器A与B与C序列周期的最小公倍数,因此伪随机数D[k]的序列周期得到了极大扩展。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201520611536.7U CN204883682U (zh) | 2015-08-12 | 2015-08-12 | 一种多通道伪随机信号发生器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201520611536.7U CN204883682U (zh) | 2015-08-12 | 2015-08-12 | 一种多通道伪随机信号发生器 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN204883682U true CN204883682U (zh) | 2015-12-16 |
Family
ID=54828035
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201520611536.7U Expired - Fee Related CN204883682U (zh) | 2015-08-12 | 2015-08-12 | 一种多通道伪随机信号发生器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN204883682U (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111694546A (zh) * | 2020-06-12 | 2020-09-22 | 成都海光集成电路设计有限公司 | 伪随机二进制序列码生成方法以及装置 |
WO2022198652A1 (zh) * | 2021-03-26 | 2022-09-29 | 华为技术有限公司 | 随机数生成装置及生成方法、随机数生成系统、芯片 |
-
2015
- 2015-08-12 CN CN201520611536.7U patent/CN204883682U/zh not_active Expired - Fee Related
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111694546A (zh) * | 2020-06-12 | 2020-09-22 | 成都海光集成电路设计有限公司 | 伪随机二进制序列码生成方法以及装置 |
WO2022198652A1 (zh) * | 2021-03-26 | 2022-09-29 | 华为技术有限公司 | 随机数生成装置及生成方法、随机数生成系统、芯片 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105045561A (zh) | 一种伪随机数产生方法 | |
CN105138306A (zh) | 一种数据位数可选的伪随机信号发生方法 | |
CN100369404C (zh) | 混沌密码序列发生器 | |
CN101957741A (zh) | 一种基于亚阈值特性的真随机数发生器 | |
CN105183428A (zh) | 一种伪随机信号产生方法 | |
Michaels | A maximal entropy digital chaotic circuit | |
Fan et al. | Counteracting the dynamical degradation of digital chaos by applying stochastic jump of chaotic orbits | |
CN105183427A (zh) | 一种产生不同分布高速噪声信号的方法 | |
CN204883682U (zh) | 一种多通道伪随机信号发生器 | |
CN204856461U (zh) | 一种数据位数可选的伪随机信号发生器 | |
WO2020014993A1 (zh) | 基于fpga的并行伪随机序列发生器设计方法 | |
CN109683852B (zh) | 一种真随机数发生器 | |
Suneel | Cryptographic pseudo-random sequences from the chaotic Hénon map | |
CN105159652A (zh) | 一种多通道伪随机信号发生方法 | |
Yu et al. | Approximate divider design based on counting-based stochastic computing division | |
CN111078191A (zh) | 一种基于fpga硬件实现的伪随机数的生成方法 | |
CN106201435A (zh) | 基于细胞神经网络的伪随机数生成方法 | |
Ma et al. | A pseudo-random sequence generation scheme based on RNS and permutation polynomials | |
CN114911455A (zh) | 基于fpga的高速伪随机数生成方法及高速伪随机数生成器 | |
TWI387921B (zh) | 利用中央極限定理之常態分佈亂數產生器及其亂數產生方法 | |
Jonatan et al. | Gaussian Pseudo-Random Number Generator using LFSR's Rotation and Split | |
PV et al. | Design and implementation of efficient stochastic number generator | |
Chen et al. | A Low Complexity and Long Period Digital Random Sequence Generator Based on Residue Number System and Permutation Polynomial | |
CN201845328U (zh) | 一种基于亚阈值特性的真随机数发生器 | |
RU2309549C2 (ru) | Способ криптографического преобразования цифровых данных |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20151216 Termination date: 20170812 |