LFSR用於產生可重復的偽隨機序列PRBS,該電路有n級觸發器和一些異或門組成,如下圖所示。
其中,gn為反饋系數,取值只能為0或1,取為0時表明不存在該反饋之路,取為1時表明存在該反饋之路;這里的反饋系數決定了產生隨機數的算法的不同。用反饋函數表示成y=a0x^0+a1x+a2x^2.......反饋函數為線性的叫線性移位反饋序列,否則叫非線性反饋移位序列。
LFSR的初始值被稱為偽隨機序列的種子,影響下一個狀態的比特位叫做抽頭。LFSR的觸發器編號一般從1開始,抽頭取值范圍是1到2n-1。抽頭序列可以用來描述該LFSR的反饋多項式。由n個觸發器構成的LFSR電路可以產生一個周期為2n-1的序列。理論表明,要使LFSR得到最長的周期,這個抽頭序列構成的多項式加1就是其反饋多項式,必須是一個本原多項式,也就是說這個多項式不可約,比方下圖的抽頭序列為(4,1),其對應的反饋多項式為,其對應的線性反饋移位寄存器電路如下所示。
假設的初始值各自是1 0 0 0,反饋函數選取
,那么得到例如以下序列
能夠看出周期為15。在這一個周期里面涵蓋了開區間內的全部整數,而且都是沒有固定順序出現的,有非常好的隨機性。
目前常用的LFSR電路可分為斐波那契LFSR和伽羅瓦LFSR。
- 斐波那契LFSR
斐波那契LFSR也可以稱為多到一型LFSR,即抽頭序列對應bit位置的多個觸發器的輸出通過異或邏輯來驅動一個觸發器的輸入。如下圖所示
- 伽羅瓦LFSR
伽羅瓦LFSR和斐波那契剛好相反,它是一到多型的LFSR,即最后一個觸發器的輸出通過與抽頭序列對應位置觸發器前一級觸發器的輸出異或邏輯驅動多個抽頭序列對應位置觸發器的輸入。如下圖所示
- 雖然這兩種電路都產生偽隨機序列,但是一到多型的伽羅瓦LFSR具有更高的速度,因為它的兩個觸發器之間僅使用一個異或門。
- 應該避免寄存器進入全為0的禁止態,因為全為0的狀態是不用的,而且可能會導致在這個狀態出不來。
預防辦法:
(1)想辦法給寄存器置位到某個允許的狀態
(2)用額外的電路讓寄存器能夠從禁止狀態自動進入允許狀態