基于FPGA可配置m序列发生器的设计与实现
2018-04-13晏浩文陈伟吴琼黄庆超刘建国祝宁华
晏浩文 陈伟 吴琼 黄庆超 刘建国 祝宁华
摘 要: 针对某些设计场合对可变m序列的需求,提出并验证了一种基于FPGA的m序列发生器方案。该方案采用线性反馈移位寄存器的结构,可通过外设对发生器的初始状态进行配置来改变所产生的m序列。使用ModelSim仿真软件对此设计进行了仿真,并将该m序列发生器应用于某光跳频保密通信系统中完成了实验验证。结果表明,使用该方案实现的m序列發生器结构简单、易于集成,可产生大量不同的m序列,且具有可动态配置的特点。
关键词: FPGA; m序列; 信号发生器; 移位寄存器; ModelSim仿真软件; 光跳频通信系统
中图分类号: TN911?34; TN918 文献标识码: A 文章编号: 1004?373X(2018)08?0001?04
Abstract: In allusion to the demand of variable m?sequence in some design occasions, an m?sequence generator scheme based on FPGA is proposed and verified. In the scheme, the linear feedback shift register structure is adopted, and the generated m?sequence can be changed by using peripherals to configure the initial state of the generator. The Modelsim simulation software is used to perform simulation for the design, and the m?sequence generator is applied to a certain optical frequency hopping secure communication system to accomplish the experimental verification. The results show that the m?sequence generator realized by this scheme has simple structure, is easy to be integrated, can produce a large number of different m?sequences, and has the characteristic of dynamic configuration.
Keywords: FPGA; m?sequence; signal generator; shift register; ModelSim simulation software; optical frequency hopping communication system
m序列作为伪随机序列[1]的一种,具有优良的伪随机序列性质,在雷达[2]、导航[3]、常规通信[4?5]、保密通信[6]、地球物理勘察[7]和电子对抗[8]等领域中都有着广泛的应用。有关产生m序列发生器的方案很多。其中,基于专用集成电路的m序列发生器,其发生速率可以很快,但由于硬件电路不便修改的特性,只能产生单一的m序列;基于软件的m序列发生器[9] 采用灵活的数据查询方式可以获得任意的m序列,因而得到了大量的关注和研究,但其产生速率不及硬件实现方式且实现过程较为复杂,故而在许多高速设计场合往往使用更为简单的FPGA实现方式。FPGA即现场可编程门阵列,使用FPGA来实现设计,既具有硬件电路实现的优点,又具有设计上的灵活性。本文提出了一种基于FPGA的 m序列发生器,具有初始状态可配置的特点,可以通过配置线性反馈移位寄存器的初始值来改变产生的m序列,并给出了一个在保密通信系统中的应用实例,对工程应用有一定的现实意义。
1 m序列发生器的设计原理
传统的m序列发生器有Fabonacci和Galois两种类型[10],其中前者是在n级线性移位寄存器的基础上,加上反馈回路构成的,结构简单,易于实现,具体结构如图1所示。图1中的[ci]是反馈系数,由本原多项式系数确定,当[ci]=1时,反馈回路连接,当[ci]=0时,反馈回路断开。[ai]用于表示各级触发器的状态,[ai]只能等于0或1,表示触发器的储值是0还是1。 发生器工作时,产生的m序列从移位寄存器的右端mout输出,每时钟周期产生一位。设触发器的初始状态为[an-1],…,[a1][a0],每一个时钟周期,移位寄存器的左端都将得到一个新的输入[an],其值可表示
由以上分析可知,m序列归根到底取决于本原多项式和移位寄存器的初始状态,要改变m序列,就必须改变设计所采用的本原或改变移位寄存器的初始状态。目前,大多方案都是通过改变本原多项式来改变m序列。这样的方法优点在于它可以彻底地改变产生的m序列,但在有的设计场合这样的方法并不适用,因为目前使用的本原多项式至多300多个,通过该方法得到的不同的m序列十分有限。本文提出的方案,是从改变移位寄存器初始状态的角度来改变m序列。实际上根据某一本原多项式不同的初始状态可以得到多个m序列,但它们只不过是相差若干步位移,这些m序列称作一个平移等价类。平移等价类m序列用来模拟信道噪声时它们可以看作一样的,但对于用m序列控制的同步通信系统而言,它们是不同的,即使两个m序列相差一个位移,同步系统也无法正常工作。在全部n级m序列中,平移等价类[11]的个数为[φ(2n-1)n],其中[φ(υ)]表示[υ]的欧拉函数。可知n越大,平移等价类越多。在实际应用中往往希望平移等价类很多,因此,文中设计了一个128级的m序列发生器,其本原多项式[11]为[f(x)=1+x126+x127],可以由一个128位的移位寄存器和两个模二加法器构成,结构简单,平行等价类多。其初始状态的配置是设计重点,文中选择通过外设对移位寄存器赋初值的方式来实现。
2 m序列发生器的设计与实现
FPGA是可编程逻辑器件的一种,资源丰富功能强大,既有专用集成电路高速的特点又不失灵活性。文中采用Xilinx公司的FPGA芯片Kintex?7,使用硬件描述语言Verilog和电子设计自动化工具ISE14.1,设计和实现了上述方案中提出的m序列发生器,即通过外设配置移位寄存器的初始值的方式来改变m序列发生器产生的m序列。所设计系统的主要硬件框图如图2所示,其中4×4矩阵键盘和液晶显示器LCD1602分别用于移位寄存器初始值的输入与显示。从图2可以看出,该m序列发生器主要由4个模块组成:输入模块、储值模块、m序列发生模块、显示模块。其中显示模块是显示器LCD1602的驱动电路,用于控制显示器显示按键输入的字符,以确保输入无误。
由于该方案实现的是一个128级的m序列发生器,其移位寄存器共有128位,需要128位二进制数来实现移位寄存器的初始化,所以最多可以产生2128个不同的m序列。但该设计在具体的实现过程中并没有采取对移位寄存器的每一位进行逐一赋值的方式,而是通过16个字符来完成移位寄存器的初始状态设置。按键输入的字符在进入输入模块后会被编译成8位二进制代码,此8位二进制代码同时也是字符在LCD1602中的显示代码。例如,字符D在进入输入模块后被编译成它的LCD1602显示代码2′b0100_0100。相比于逐位赋值,这样的赋值方式简单快捷,体验更好,只需16次按鍵输入就可以实现移位寄存器初始状态的配置,虽然牺牲了可产生的m序列的数量,但即使在这种情况下同样可以产生216个不同的m序列,远大于300。
从数据流的角度来看,按键输入的字符流入输入模块后会被编译成上述所说的8位二进制代码,但在编译之前输入模块必须对输入信号进行去抖处理,这是因为按键输入过程中抖动是不可避免的,它会影响系统的稳定性。该设计中使用计数器对采样进行控制,从而实现了去抖功能。经过去抖和编译后的信号流出输入模块,一方面流向显示模块,告知显示模块要显示的字符;另一方面流向储值模块。
储值模块本质上是一个128位的寄存器,从低位到高位,依次存储输入的8位二进制代码,在16次按键操作完成后,该寄存器被写满,此时会产生一个指示信号用于告知m序列发生器模块,移位寄存器的初始值已经准备好了。
m序列发生模块最终用同步有限状态机的设计方法实现,其主体部分是原理中提到的带反馈回路的线性反馈移位寄存器。该有限状态机只有惟一的驱动时钟(50 MHz),状态转移如图3所示。空闲状态是该状态机的初始状态,该状态用于等待移位寄存器初始值的输入,在检测到储值模块的指示信号等于1后,在下个时钟上升沿自动转移到配置状态。配置状态实现移位寄存器的初始状态配置,该状态下系统将储值模块中128位寄存器中的值赋给m序列发生器的移位寄存器,赋值操作完成后进入m序列发生状态,开始产生m序列。
为了实现系统的动态配置,以满足更多场合的应用需求,该系统对储值模块发出的指示信号做了特殊的控制。该指示信号在由0变为1后,如果又有按键输入会重新置0,直到储值模块的寄存器被重新写满后再变为1。从图3可以看出,这样设计的好处是,处于m序列发生状态的m序列发生模块可以利用此信号跳出该状态,重新进行初始状态设置,实现动态配置的功能。这里没有使用指示信号变为0这一条件,而使用指示信号的上升沿来跳出m序列发生状态,可以避免按键的误触发。
3 ModelSim仿真及结果分析
Mentor公司的ModelSim是业界最优秀的HDL语言仿真软件,它能提供友好的仿真环境以及完善高性能的验证功能。使用ModelSim对上述设计中的m序列发生器进行了仿真,结果如图4所示。图中num是测试信号,用于模拟按键输入,标记1处模拟了按键D被按下的情况,2处模拟了抖动信号。keyboard_val是编译后的输入信号,没有按键按下时值为2′b1000_0000;而store_val则是储值模块的128位寄存器。由图4可知,当按键D被按下时,输入信号被编译为2′b0111_1000并被存储于store_val[127:120]中。因为此前已经模拟了15次按键操作,此时寄存器store_val被存满,指示信号full信号由0变为1。m序列发生模块在检测到指示信号等于1后将store_val的值赋给128位移位寄存器A,配置完成,随后产生的m序列从端口M_out输出。因为整个系统工作在50 MHz的时钟频率下,m序列发生的速度很快,高达50 Mbit/s,所以信号M_out呈现密集的黑色,放大后可读出产生的m序列为1000_1100_0010_1100…符合m序列的产生原理。另外,图4标记2处的抖动信号没有被译码,说明输入模块成功实现了去抖功能。此后,继续模拟输入了多组不同的16位字符,由于图片太长这里没有给出。由仿真结果可知,m序列发生器在每接收完一组字符后都会重新配置,实现了动态配置的功能。通过对输入各组字符后产生的m序列进行对比,可以发现它们各不相同,也就是说通过改变m序列发生器中移位寄存器的初始状态可以改变所产生的m序列,与文中的理论分析一致,证明了该设计的正确性和可行性。
4 实验验证及结果分析
为了进一步验证该m序列发生器设计方案的正确性和可行性,本文将该m序列发生器应用于某光跳频保密通信系统中,并通过搭建光纤链路来验证实际1.25 Gbit/s以太网通信中该m序列发生器的应用,光纤链路如图5所示。2台电脑使用局域网通信软件腾讯通(RTX)进行视频交流,信息的传输是双向的,其中交换机用于完成电光/光电转换,光跳频通信系统用于实现对所传信息的加/解密。该光跳频保密通信系统的加/解密通过m序列来控制,由于2台机器的工作上要求加解密同步,所以产生的m序列必须完全相同。
当2台系统通过4×4矩阵键盘设置相同的16位“密码”时,视频通信连接成功。使用在线逻辑分析仪Chipscope Pro监测了关键信号,如图6所示,从图中可以看出,输出端M_out有加/解密需要的m序列产生。当2台系统设置的“密码”不同时,视频连接失败。分析可知,这是由于2台系统中m序列发生器的初始状态不同,导致产生的m序列不同,加/解密不同步,所以无法成功通信,实验和理论一致,说明该方案切实可行。另外,在此工程应用中,该m序列发生器在提供加/解密所需的m序列的同时,还实现了设备加密,可以看出第三方即使获得了相同的通信系统,在不知道“密码”的情况下同样无法窃取信息。
5 结 语
本文系统地介绍了一种基于FPGA可配置m序列发生器的实现方案,该方案通过对m序列发生器中线性移位寄存器的初始状态进行配置,可以产生大量不同的m序列,远多于使用不同本原多项式的方法。另外,此m序列发生器发生速率快,高达50 Mbit/s,具有可动态配置的特点,且易于集成。将其应用于某光跳频通信系统中,进行了实验验证。结果表明该m序列发生器在为通信系统的加/解密控制提供了可变m序列的同时,还实现了设备上的加密,对工程应用有一定的现实意义。设计中为了更好的用户体验,使用的外设是4×4矩阵键盘,使用16个字符完成了m序列发生器的初始状态配置,如果需要产生更多的m序列,可使用2个按键,分别对应二进制0和1来完成m序列发生器的初始状态配置。
参考文献
[1] 万哲先.代数和编码[M].2版.北京:科学出版社,1980.
WAN Zhexian. Algebra and coding [M]. 2nd ed. Beijing: Science Press, 1980.
[2] 韩春,蒋德富,张芳玲.基于FPGA的宽带噪声发生器的设计[J].电子测量技术,2013,36(12):53?55.
HAN Chun, JIANG Defu, ZHANG Fangling. Design of broad band noise generator based on FPGA [J]. Electronic measurement technology, 2013, 36(12): 53?55.
[3] 党骙,马林华,田雨,等.m序列压缩感知测量矩阵构造[J].西安电子科技大学学报(自然科学版),2015,42(2):186?192.
DANG Kui, MA Linhua, TIAN Yu, et al. Construction of the compressive sensing measurement matrix based on m sequences [J]. Journal of Xidian University (Natural science edition), 2015, 42(2): 186?192.
[4] 虞鑫栋,赵建中,李优,等.基于高速串行接口的m序列采样特性研究与应用[J].科学技术与工程,2015,15(22):162?166.
YU Xindong, ZHAO Jianzhong, LI You, et al. A study and application on properties of m?sequence sampling based on high?speed serial communication [J]. Science technology and engineering, 2015, 15(22): 162?166.
[5] 权磊,肖嵩,薛晓,等.低复杂度压缩感知中的快速观测方法[J].西安电子科技大学学报(自然科学版),2017,44(1):106?111.
QUAN Lei, XIAO Song, XUE Xiao, et al. Fast sensing method in compressive sensing with low complexity [J]. Journal of Xidian University (Natural science edition), 2017, 44(1): 106?111.
[6] 胡建勇,张文政,陈克非,等.m序列频谱免疫度的研究[J].计算机工程与应用,2017,53(16):74?78.
HU Jianyong, ZHANG Wenzheng, CHEN Kefei, et al. Research on spectral immunity of m?sequences [J]. Computer engineering and applications, 2017, 53(16): 74?78.
[7] 淳少恒,陈儒军,耿明会.伪随机m序列及其在电法勘探中的应用进展[J].地球物理学进展,2014,29(1):439?446.
CHUN Shaoheng, CHEN Rujun, GENG Minghui. Review of the pseudo?random m sequence and its application in electrical prospecting of exploration geophysics [J]. Progress in geophysics, 2014, 29(1): 439?446.
[8] 赵晓燕.混合同余法产生随机噪声的FPGA实现[J].电子科技,2016,29(5):49?50.
ZHAO Xiaoyan. FPGA implementation of random noise generation by mix congruence method [J]. Electronic science and technology, 2016, 29(5): 49?50.
[9] 王诚,吴蕾,曾兴雯.任意长度的m序列的生成[J].西安电子科技大学学报(自然科学版),2001,28(1):129?132.
WANG Cheng, WU Lei, ZENG Xingwen. The generation of arbitary length m?sequences [J]. Journal of Xidian University (Natural science edition), 2001, 28(1): 129?132.
[10] 林可祥,汪一飞.伪随机码的原理与应用[M].北京:人民邮电出版社,1998.
LIN Kexiang, WANG Yifei. Principle and application of pseudo?random code [M]. Beijing: Posts &; Telecom Press, 1998.
[11] 攀昌信.通信原理[M].北京:国防工业出版社,2001.
PAN Changxin. Principles of communication [M]. Beijing: National Defense Industry Press, 2001.