FCSR原理及其VHDL语言的实现

时间:2007-11-24
  摘 要:伪随机序列发生器是序列密码设计中的重要环节,FCSR是其中一类重要思想。本文介绍了FCSR的特性和产生方法,并用VHDL语言予以实现,给出FCSR列的主程序和仿真波形,指出需要注意的问题。
  关键词:进位移位寄存器;
l-序列;VHDLFCSR序列

  伪随机信号在雷达、遥控、遥测、通信加密和无线电测量系统领域有着广泛的应用,其产生方法有多种途径。进位反馈移位寄存器(feedbackwithcarryshiftregisteFCSR)由KlapperGoresky1993年提出,是一类较新颖的方法,其理论实质类似于数学上产生随机数的模2同余法。经过一系列理论分析后普遍认为在序列密码的分析和设计中具有一定价值。

  
本文简要介绍了FCSR的基本原理和特性,重点讨论基于硬件描述语言VHDL的可变长FCSR设计。VHDL可编程逻辑器件CPLD/FPGA结合使用,可以方便、灵活地实现此类伪随机序列发生器。

1FCSR产生原理和序列特性
  某时刻一个r(非退化)FCSR如图1所示。其中aiGF(2) (i=n-1n-2,…,n -r)mn-1ZqiGF(2)(i=12,…,r-1)qr=1,∑为一般的整数加法。工作过程如下:
  
(1)计算整数和:

  (2)移位寄存器右移一位,输出an-r
  
(3) an=σn(mod 2)
反馈入移位寄存器。
  
(4) mn=[σn/2]反馈入进位寄存器。

  
q0= -1FCSR的一个状态为(mn-1an-1,…,
  
FCSR的连接数。
  
FCSR能返回到自身的状态称为周期状态。以q为连接数的FCSR的周期状态个数q+1,其中平凡的周期状态(00,…,0)(w-11,…,1)在状态图中形成2个长为1的圈,非平凡周期状态的个数为q-1,其余状态都是非周期的。其中w=wt(q+1)q+1的汉明重量,指qi(i=01,…,r)qi0的个数。  

 

  以q为连接数的FCSR相应的有理数为p/q。其中,q为奇数。如果pq素,那么a有周期T=ordq(2)。特殊的,如果T=Φ(q)(φ为欧拉函数),即2为模q本原根,那么该序列达到他的周期。由欧拉函数的性质可知,此时Φ(q)=q-1。称其为连接数为q的周期FCSR序列,或l序列。

  由于在FCSR中,初始状态、移位寄存器级数、抽头数目、抽头位置的变化都会产生不同的序列,因此可以通过设计参数可变的FCSR发生器来生成周期更长的伪随机序列。

2FCSR序列发生器的VHDL实现
  
  
n=10为例来设计参数可变的FCSR序列发生器。

2.1功能描述及外部引脚
  
由图1可知,进位反馈移位寄存器由加法器、进位寄存器和一组(n级)D触发器组成。加法器实现FCSR的反馈运算;进位寄存器保存前一时刻运算结果除2后的状态mn-1,并为下一运算提供输入;nD触发器构成移位寄存器,在时钟控制下实现右移,依次输出其内部态。同时某些触发器的输出反馈回来,与进位寄存器的输出进行运算,和模2反馈至寄存器输入端,和除2反馈至进位寄存器。

  式(1)中qiGF(2) (i=12,…,r-1)在实际电路中为抽头的连接状态,决定哪输出反馈至加法器,qi=0表示断开,qi=1表示连接。
  
FCSR序列发生器的外部引脚定义如图2所示。

 

  其中,CLK为时钟信号;RESET为置数信号;PRN为初态置数端;SEL为抽头置数端;Q为输出端。该FCSR序列发生器的特点在于可以通过设定SEL90]的值来改变抽头数、抽头位置和发生器的有效级数n1~10级);当RESET为低电平时,通过设定PR N90]的值改变FCSR的初态,从而可以改变输出序列周期,分析各种状态下输出 序列的变化。

2.2可变参数部分的设计

  
本设计通过手动或软件自动设定SEL90]的值来改变抽头数、抽头位置和发生器的有效级数3个参数,其中改变抽头位置可使有效长度可变。具体电路中,由SEL90]设定值作为加法器的输入,输出结果进行下一步运算,因此需要设计输入变量较多、延迟时间较短的加法器电路。

  
这里的求和运算可以等效为计算输入变量中“1”的个数。对此有多种实现方案,如计法、逻辑函数法、查表法、求和网络法等。单纯使用一种方法,在输入变量较多的情况下会有占用资源太多、延迟时间太大或表达式太繁琐等问题,因此需要综合使用这些方法。该加法器综合使用逻辑函数-求和网络法,由1位累加器和3位串行加法器实现。

  
由于n=10,则抽头数至多为10,可以分2组进行求和。因此首先设计5输入、3位输出的累加器。用卡诺图简化后,写逻辑表达式如下:
  

  
3位串行加法器的设计比较简单,不再赘述,则10输入变量、3位输出的加法器电路原理图如图3所示。

 

  这里求和网络只有1级,不难由此扩充成多级。该电路延迟至多为8级逻辑门的延迟时间,占用资源也较少。

2.3主程序
  
根据FCSR序列产生的原理,采用VHDL语言的混合描述方式对该逻辑进行硬件描述。主程序l_seq如下:
  
  
  

  
其中元件例化语句中所引用的元件已经作为组件在components.vhd用户包进行定义,在主程序中调用即可。

3时序仿真
  
该程序在Lattice公司的ispLEVER软件环境下编译、运行和仿真。该FCSR序列发生器可选级数为1~10级,周期范围为1~2 029。经分析知,当初态为平凡周期状态(00,…,0)(w -11,…,1)时,输出为全“0”或全“1”。当抽头置数为“0100000110”,即q9=q3 =q2=1,实际上是一个n=9l序列发生器;置FCSR初态为(0,0,0,00,0, 0,1,1,0,1,0,1,0)时,波形如图3所示,此时输出序列的周期T=523

4需要注意的问题
  
1)通过调整SELPRN的值并分析输出序列变化可知,不是任意整数作为连接数都能使F C SR达到周期。在工程应用当中,l-序列是希望得到的。因此在使用FCSR时,应该优先选用那些可以产生l-序列的特殊的连接数,如文献[1]中提供的一些连接数。

  
2)当q为非周期连接数时,某些初态会有周期更小的序列输出。例如当q=17ord17(2)=8,即他有周期T=8。而实际上除2个平凡状态外,某些初态会导致输出T=6的周期序列。在密码设计中,由于FCSR的初态对应着初始密钥,这就意味着基于FCSR发生器有弱密钥。因此,在实际应用中要仔细选择。

  
3)本例中,由于抽头数为9,所以4位进位寄存器即可满足要求。实际上,当t >2时(t为抽头数),进位寄存器应为log2t

  
4)当加法器采用组合电路实现时,需注意逻辑门延迟影响。在抽头数较大时,应适当调整电路的时钟频率。

 

5结语
  
FCSR是一类较新颖的思想,其数学特性目前还不太清晰。因此今后可以从理论和技术实践两方面来分析FCSR的随机特性和应用特点。本软件在通过时序仿真和适配后,配置La ttice公司的CPLD器件,输出序列达到了设计目标。


  
上一篇:电容式触控感应技术在家电产品中的应用
下一篇:用CPLD实现DSP与背板VME总线之间的连接

免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

相关技术资料