1m序列的产生使用的本源多项式是651)(xxxF,M=31查表n=6,可得到相应的反馈网络的函数f为(6,5),反馈f表示为:根据f的反馈函数,假设初始状态为111000,可以写出其64-1=63长度的序列信号;具体做法为:将每一列的6和5位置的数字相异或,得到的数字放在下一行的1位置,该行的54321位置上的数字移到下一行的65432位置上,合成下一行的6位数字。初始状态为111000,则真值表为:6543211111000211000031000004000001500001060001007001000801000091000011000001111000110120011001301100014110001151000101600010117001010180101001910100165QQf2001001121100111220011112301111024111101251110102611010027101000280100012910001130000111310011103201110033111001341100103510010036001001370100103810010139001011400101104110110142011011431101114410111045011101461110114711011048101100490110015011001151100110520011015301101054110101551010105601010157101011580101115910111160011111611111116211111063111100根据上面,可得到最长线性序列信号:111000001000011000101001111010001110010010110111011001101010111寻找起跳状态Q6输出序列为:Ⅰ:111000001000011000101001111010001110010010110111011001101010111左移32位,Ⅱ:000001000011000101001111010001110010010110111011001101010111111Ⅰ⊕Ⅱ=Ⅲ:000001000011000101001111010001110010010110111011001101010111111序列Ⅲ中100000(5个连0)处对应序列Ⅰ的四位代码为111100,此即为起跳状态。求M=31的序列信号可以在63长度的序列中,从起跳状态开始,消去32位码元,剩下的码元即组成31长度的序列信号:1110010010110111011001101010111设计产生长度为31的序列信号的逻辑表达式可直接通过修改m=63序列信号发生器的反馈函数f得到M=31的序列信号发生器的反馈函数f’:f’=f⊕起跳状态+/Q6/Q5/Q4/Q3/Q2/Q1=Q6⊕Q5⊕Q6Q5Q4Q3/Q2/Q1+/Q6/Q5/Q4/Q3/Q2/Q1=/(Q6⊕Q5)Q6Q5Q4Q3/Q2/Q1+Q6⊕Q5/(Q6Q5Q4Q3/Q2/Q1)+/Q6/Q5/Q4/Q3/Q2/Q1=(/Q5/Q6+Q5Q6)Q6Q5Q4Q3/Q2/Q1+(/Q5Q6+Q5/Q6)(/Q6+/Q5+/Q4+/Q3+Q2+Q1)+/Q6/Q5/Q4/Q3/Q2/Q1=Q6Q5Q4Q3/Q2/Q1+/Q5Q6+Q5/Q6+/Q6/Q5/Q4/Q3/Q2/Q1=/Q5Q6+Q5/Q6+Q6Q4Q3/Q2/Q1+/Q6/Q4/Q3/Q2/Q12C语言验证经过C语言程序验证,M=31的序列信号1110010010110111011001101010111C语言运行结果如图2-6所示。图1C语言验证结果C语言源程序代码程序运行环境:DEVC++4.9.9.2,WindowsXP/*F(x)=1+X5+X6M=31初始数列111000起跳状态111100f=/Q5Q6+Q5/Q6+Q6Q4Q3/Q2/Q1+/Q6/Q4/Q3/Q2/Q1验证输出数列是否为1110010010110111011001101010111C语言源程序代码程序运行环境:DEVC++4.9.9.2,WindowsXP*/#includestdio.hintmain(){intinitial[6]={0,0,1,1,1,1};intans[31][6];inti,j;for(i=0;i5;i++){ans[0][i+1]=initial[i];}if((!initial[4]&&initial[5])||(initial[4]&&!initial[5])||(initial[5]&&initial[3]&&initial[2]&&!initial[1]&&!initial[0])||(!initial[5]&&!initial[3]&&!initial[2]&&!initial[1]&&!initial[0])){ans[0][0]=1;}else{ans[0][0]=0;}for(i=1;i31;i++){for(j=0;j5;j++){ans[i][j+1]=ans[i-1][j];}if((!ans[i-1][4]&&ans[i-1][5])||(ans[i-1][4]&&!ans[i-1][5])||(ans[i-1][5]&&ans[i-1][3]&&ans[i-1][2]&&!ans[i-1][1]&&!ans[i-1][0])||(!ans[i-1][5]&&!ans[i-1][3]&&!ans[i-1][2]&&!ans[i-1][1]&&!ans[i-1][0])){ans[i][0]=1;}else{ans[i][0]=0;}}printf(\n);printf(F(x)=1+X5+X6M=31\n初始数列111000\n起跳状态111100\nf=/Q5Q6+Q5/Q6+Q6Q4Q3/Q2/Q1+/Q6/Q4/Q3/Q2/Q1\n验证输出数列为:);for(i=0;i31;i++){printf(%d,ans[i][5]);}printf(\n);while(1);}