線性移位寄存器(LFSR)
定義
- 一個n級寄存器是一個由n個存儲單元b1,b2,……,bn和一個計算單元f(b1,b2,……,bn)構成的裝置,
bn+1=f(b1,b2,……,bn)
若f為線性函數
f(b1,b2,……,bn)=t1b1+t1b2+……+tn*bn
稱為線性反饋寄存器,即為LFSR
其中ti=0,1,ti的作用相當於一個開關,用斷開和閉合來表示0和1.
例n=3,f(b1,b2,b3)=b1+b3,則輸入101,
則輸出為:101001110100111010011……
周期T=7=2^3-1
LFSR周期
- 寄存器上始終存儲着n個元素,該n個元素稱為一個狀態,初始時刻的狀態為:
- S1=(b1,b2,……,bn)
第i時刻的狀態為:
Si=(bi,bi+1,……,bi+n-1)
在n級條件下,最多有2n個狀態,而在線性運算下,全0不會轉入其他狀態,故LFSR序列的最長周期為:2n-1
m序列
定義:
- 當n級LFSR序列{bi}的周期T=2^n-1時,稱{bi}為n級m序列。
注:如何選擇合適的反饋函數LFSR使得序列周期達到最大(m序列),是研究重點。
m序列的產生
- 特征多項式
- 若LFSR序列{bi}滿足bn+1=t1b1+t2b2+……—+tnbn,令p(x)=1-t1x+t2x2+……+tnxn (t0=1)稱p(x)為LFSR的特征多項式
Th
- LFSR序列{bi}為n級m序列的充要條件是其特征多項式p(x)是本原多項式。
注1:本原多項式概念略。
注2:n次本原多項式的個數:
Matlab中調用本原多項式的命令:
primpoly(n,'all')
常用本原多項式
x^2+x+1
x^3+x+1
x^4+x+1
x^5+x^2+1
x^6+x+1
x^7+x^3+1
x^8+x^4+x^3+x^2+1
x^9+x^4+1
x^10+x^3+1
x^11+x^2+1