为了确保计算机在接收该序列时不出现比特丢失现象,可预先向计算机发送一组周期序列来保证数据的可靠性。假设串口传输波特率为9 600,系统晶振为20 MHz,为了得到整数倍的分频,可根据公式:
n=(20×106×k)/9 600
令k=3,则可得出n为6 250。其中,比例因子k可通过锁相环来获得。上述两步骤可通过在QuartusⅡ中添加锁相环代码与分频器代码实现。此时,让系统时钟T=1/9 600再经过二分频后通过串口输出,如果在接收端收到“01010”的周期序列,则表明FPGA与计算机之间的通信无问题。
5 PN序列随机性能分析
5.1 频率测试(Frequency Test)
该测试可用来判断序列当中0和1的个数是否近似相等,若近似相等,则符合随机序列的必要条件。令n0,n1分别代表0与1的个数;n代表序列s的长度。
该统计方程为:
T1=(n0-n1)2/n
若n≥lO,则T1近似符合1维自由度的x2分布。
对采集到的PN序列进行自由度为l的x2检验,取显著性水平α=0.05,可以从标准表中查到显著性水平a=O.05的x2值为3.84。如果T1值小于3.84,则该序列通过测试。n0,n1和T1的测试值如表l所示,由此可知,该序列的T1值远小于3.84,通过测试。
5.2 串列测试(Serial Test)
该测试可用来判断序列中00,01,10,11子序列的个数是否近似相等。若近似相等,则符合随机序列的必要条件。令n0,n1分别代表0与1的个数,而n00,n01,n10,n11分别代表s序列中00,01,10,11的个数。由于n00+n01+no+nll=n-l,该统计方程为:
若n≥21,则T2近似符合2维自由度的x2分布。对序列进行自由度为2的x2检验。显著性水平α置为O.05,查标准表得此时的x2值为5.99。测试结果如表2所示,T2=O.352 5《5.99,通过测试。
5.3 Poker测试(Poker Test)
令m为符合(n/m)≥5×2m的正整数,并令k=n/m。将序列s分成k个不重复的部分,每部分的长度为m,令ni为第i个长度为m的序列标号,1≤i≤2m。Poker测试可用来确定ni在序列s中,长度为m的各个不同子序列出现的概率是否近似相等。该统计方程为:
式中:T3近似符合2m-1维自由度的x2分布。值得注意的是,频率测试其实是Poker测试的一个特例,令m=1,Poker测试即成为了频率测试。分别取m=1,2,3,4,5,6,对待测序列进行自由度为2m-1的x2检验,结果列于表3。由表3可见,对于不同m值的T3值均小于对应的x2值,通过测试。
5.4 游程测试(RLins Test)
该测试的目的是为了判断s序列中不同长度的游程是否具有随机序列的游程特性。理论上,在一个长度为n随机序列中,长度为i的连续O或连续1的期望值为ei=(n—i+3)/2i+2。令k为当ei≥5时的最大的i;Bi,Gi分别为各个block和gap的个数。游程测试的统计方程为:
则T4近似符合2k-2维自由度的χ2分布。
分别取i为1,2,3,4,5,6,7,8,9。对本序列,k值为9,所以可对T4进行自由度为16的χ2检验。查标准表知自由度为16的χ2值为26.3。将上述数值代人统计方程,运算得T4=19.883 1<26.3,通过测试。其测试结果如表4所示。
5.5 自相关测试(Autocorrelation Test)
该测试是为了检测s序列与其(非循环的)移动后的序列的相关性。令d为一个整数,1≤d≤(n/2)。比较s序列和它移动d位之后的序列,两者不同的位的数目可由计算得出。⊕表异或运算。自相关测试的统计方程为:
当,n-d≥10时,T5近似符合N(O,1)分布。
为判断序列是否符合N(O,1)分布,可用余误差函数计算再将erfc(z)与显著性水平α=O.05比较,若大于它,则通过测试,测试结果如表5所示。由检验结果可知,每一个erfc(z)都大于a,通过测试。
6 结 语
利用Logistic混沌映射作为随机信号源,基于FP-GA技术研究了PN序列的硬件产生。通过对产生的PN序列进行性能分析发现,其具有很好的随机性,可被应用于扩频通信和数字信息加密等领域。由于直接以离散混沌作为随机信号源,相对于将连续混沌离散化后再量化产生PN序列,其精确度更高。由于数字序列是通过抽取二进制数值中某一位产生的,只要迭代值的位数足够多,序列的可变性就更大,从而增大了密钥空间和通信的保密性。