線性反饋移位寄存器(LFSR)是產生m序列的原型,m序列有強自相關性和低互相關性(體現在雙極性化后,相關運算后的峰均比),其序列長度為(2^n)-1,每一個序列元素都對應一個寄存器組的狀態。
生成m序列的關鍵因素有:階數(同時決定了反饋邏輯),種子(寄存器初始狀態)。
這里規定:移位操作是從MSB向LSB移位,MSB被反饋值覆蓋,LSB作為輸出並被相鄰高位覆蓋(對應Verilog語法中reg)。或者,移位從大下標到小下標進行(如C中長度為6的數組stat,stat[5]被反饋值覆蓋,stat[0]作為輸出並被stat[1]覆蓋)。
一、階數。
重要的概念是本原多項式(Primitive Polynomial),本原多項式可以幫助我們確定反饋邏輯。
本原多項式表:(8進制表示即將2進制表示從LSB起每3個bit划分為一個數碼)
來源:https://wenku.baidu.com/view/045de58a680203d8ce2f24b8.html
舉例說明:6階本原多項式為:,通過以下的映射規則可以確定反饋邏輯:
(1)說明:多項式從冪次最高位到冪次最低位,共有7位,而寄存器有6個。對於n階本原多項式,必含有和
項。
(2)多項式中,項不是反饋邏輯的輸入,其余項對應到寄存器/數組的對應下標,作為反饋邏輯輸入。
多項式和LFSR的對應關系:
再舉一例:12階本原多項式為:,對應LFSR為:
二、種子。
種子是寄存器組的初始狀態,注意種子不能是全0,否則狀態會停留在全0.
三、關於m序列的相關性。
相關運算之前,對m序列做了雙極性處理(1-->+1,0-->-1)。
1、自相關性。(6階,種子0x32)
這個自相關結果的峰均比為7875,約合38.96dB.(相關運算的輸出信號以電壓平方為單位,所以用了10倍log10?)
2、互相關性:相同階數序列間的互相關。
同一階數的,不同種子的m序列其實是循環移位的關系,所以這些m序列的互相關可以有“相位”的概念。以6階為例:
種子為0x32和0x39互相關:(這兩個狀態為相鄰狀態,0x32下一個狀態是0x39)
這兩個序列相關性非常高,其實0x39序列就是就是把0x32序列的第一位放到末位,其余完全一樣。
種子為0x32和0x19互相關:(這兩個狀態為遠離的狀態,0x32的后31個狀態是0x19)
按寄存器狀態來看,序列產生過程共有63個狀態,0x32和0x19狀態相隔31個狀態。得到的相關峰幅度很接近。
3、互相關性:不同階數序列間的互相關。
下面是6階0x32和12階0x555的互相關:
它的頻譜長這個模樣:
看到互相關的頻譜比較平坦。