線性反饋移位寄存器這個名字,首先它是個移位寄存器,然後這個移位寄存器的輸入是上壹個狀態的線性組合。看壹個例子:
該LFSR對應的生成多項式為:
多項式裏的1代表輸入,即x^0。x^3與x^4分別代表移位寄存器的第3位與第4位。
移位寄存器的動作過程如同上面圖中所示,每壹次移位都會使移位寄存器切換到下壹個狀態,4位移位寄存器總***可以有2^4=16種狀態,除去0000狀態之外,該LFSR可以在剩下的15個狀態中循環切換。
如果我們令LFSR的狀態從0001開始,每壹次移位都將x^4輸出,則可以生成的隨機碼序列為:
100010011010111 - 100010011010111 - 100010011010111……
完成15個bit輸出後,循環重復。
那麽為什麽選用第3位與第4位相加反饋?如果是選用第2位與第4位會怎麽樣?
同樣以0001開始,LFSR的狀態切換過程為:
可以看到,只遍歷了6個狀態就回到了初始狀態,生成的隨機序列為100010……
只有6個隨機碼,然後開始循環重復,隨機性顯然不如之前的多項式,而且如果使用其它初始狀態,可能會生成不同的隨機碼。(例如初始狀態為1111)
前面的生成多項式(1+x^3+x^4)稱為MLS(Maximum Length Sequence),關於MLS分析有時間再單獨討論,常用的PRBS都是MLS。
不同的PRBS生成多項式可以生成不同的碼型,有不同的應用場景,以PRBS7為例,移位寄存器可以遍歷除0000000外的所有狀態,所以可以遍歷的狀態為2^7-1個,生成的碼型位數為2^7-1。碼型中連續1最長為7位,最長連續0為6位。在實際應用中常用於8B/10B編碼的信道測試,8B/10B編碼的碼型最長的1或0的位數為5位。同樣的信道使用PRBS7碼型要比8B/10B編碼產生的結果要稍差壹些,這樣也可以保證壹定的設計裕量。