APP下载

基于FPGA的LFSR结构伪随机数发生器的实现*

2018-06-14彭雅岚肖顺文

数字技术与应用 2018年3期
关键词:级数寄存器移位

彭雅岚 肖顺文

(西华师范大学 电子信息工程学院,四川南充 637009)

在计算机、通信系统中采用的随机数均为伪随机数[1],由线性反馈移位寄存器[2]所构成的伪随机数发生器是扩频通信系统中的核心。线性反馈移位寄存器是一种十分有用的时序逻辑结构,其结构简单、速度快,它被广泛应用于可编程分频器、信道编码、CRC(Cyclic Redundancy Check)校验码生成、密码算法实现等多个方面[3-4]。本文基于FPGA(Field Programmable Gate Array)实现用N级线性反馈移位寄存器(Linear Feedback Shift Register, LFSR)产生伪随机数组。

图1 N级线性反馈移位寄存器结构图

图2 n=8,G=18DH,SEED=FFH时的仿真图

图3 n=8,G=18DH,SEED=EAH时的仿真图

1 设计原理

线性反馈移位寄存器是给定前一状态的输出,将该输出的线性函数再用作输入的移位寄存器。异或运算是最常见的单比特线性函数:对寄存器的某些位进行异或操作后作为输入,再对寄存器中的各比特进行整体移位。图1是由n个D触发器和若干个异或门组成的线性反馈移位寄存器结构图,其特性由移位寄存器级数(周期长度)、初始状态(各寄存器的初始值)、反馈逻辑(异或逻辑)和时钟周期共同决定[5]。

图1中,Qi+1表示各级寄存器Di的输出,gi为反馈系数,gi的取值决定了Qi是否参与反馈。gi只能取0或1,当gi=0时,表示Qi被断开不参与反馈;当gi=1时,表示Qi将参与反馈。由于反馈的需要,其中gn与g0必须取1,使线性反馈移位寄存器的输出端Qn参与反馈。移位寄存器的初始状态由使用者设定,初值装载完成后,每当时钟周期CLK到来,移位寄存器移位一次,即若gi+1=1,则寄存器Di将其输出值Qi+1(0或1)与Qn进行反馈逻辑(异或)运算后,传递给下一级寄存器Di+1;若gi+1=0,则寄存器Di直接将其内容传递给下一级寄存器Di+1。

2 设计方案

本文基于VHDL硬件描述语言设计了一个级数与反馈系数均可控的,由线性反馈移位寄存器所构成的伪随机数发生器。参考文献[6]介绍了多种VHDL的语法,这里采用了GENERIC参数定义语句,对级数N进行有效设定,并利用FOR_LOOP循环语句对反馈系数的值进行判断后,再带入反馈逻辑运算得到下一级寄存器的值。最后由用户设定随机种子的值,从而得到一系列伪随机数。

部分VHDL源程序如下:

IF CLK'EVENT AND CLK = '1' THEN

IF LOAD = '1' THEN REGN <= SEED;ELSE

REGN(0) <= REGN(n-1);

FOR i IN n-2 DOWNTO 0 LOOP

IF G(i+1)='1' then

REGN(i+1) <=REGN(i) XOR REGN(n-1);ELSE

REGN(i+1) <=REGN(i);

END IF;END LOOP;END IF;END IF;

3 仿真与验证

使用ALTERA公司的QUARTUS II 9.0软件对所设计的线性反馈移位寄存器进行编译和仿真。CLK为仿真时钟信号,时钟周期为5ns;LOAD是装载数据的控制端,高电平有效;SEED为用户选定的随机种子;G为反馈系数的取值。

图2为级数取8,随机种子取11111111,反馈系数取110001101时产生的伪随机数。

图3为级数取8,随机种子取11101010,反馈系数取110001101时产生的伪随机数。

图4为级数取8,随机种子取11101010,反馈系数取111000001时产生的伪随机数。

图5为级数取16,随机种子取FFFFH,反馈系数取18003H时产生的伪随机数。

运用控制变量法,从上述四种不同条件下的仿真图中可以看出,当将线性反馈移位寄存器的级数、反馈系数和随机种子中任一项取不同值的时候均可以得到不同的伪随机数组。

图4 n=8,G=1C1H,SEED=EAH时的仿真图

图5 n=16,G=18003H,SEED=FFFFH时的仿真图

4 结语

本文用VHDL语言设计了一种能有效产生伪随机数的N级线性反馈移位寄存器,通过改变级数N、反馈系数G和随机种子SEED的值可以得到多种多样的伪随机数。较其他线性反馈移位寄存器的设计来说,本设计的级数和反馈系数均可调,且设计过程简单易懂,具有灵活性好,使用便捷的优点。

[1]刘沛华,鲁华祥,龚国良,刘文鹏,陈天翔.基于FPGA的高速任意分布伪随机数发生器[J].应用科学学报,2012,30(03):306-310.

[2]崔嵬,李承恕.线性反馈移位寄存器的改进算法及其电路实现[J].北方交通大学学报,2004(05):69-72.

[3]管超,周润德,葛元庆.高速线性反馈移位寄存器的实现[J].微电子学,2000(04):241-243.

[4]郑诚玮,戴紫彬,李伟.面向可重构并行化处理的线性反馈移位寄存器统一架构研究[J].微电子学与计算机,2015,32(11):111-115.

[5]陈澄,张茂青,崔秀美.基于FPGA的可编程M序列发生器的设计[J].工业控制计算机,2013,26(06):15-16.

[6]潘松,黄继业.EDA技术实用教程[M].科学出版社.2013.

猜你喜欢

级数寄存器移位
Lite寄存器模型的设计与实现
再生核移位勒让德基函数法求解分数阶微分方程
大型总段船坞建造、移位、定位工艺技术
Dirichlet级数及其Dirichlet-Hadamard乘积的增长性
Σ(X)上权移位算子的不变分布混沌性
分簇结构向量寄存器分配策略研究*
几个常数项级数的和
p级数求和的两种方法
多指离断手指移位再植拇指25例
Dirichlet级数的Dirichlet-Hadamard乘积