線性反饋移位暫存器(LFSR)實現

2021-09-13 12:03:13 字數 1488 閱讀 5120

**

線性反饋移位暫存器 = 移位暫存器 + 組合邏輯反饋

●用處:產生偽隨機序列、資料壓縮、計數器、資料編碼解碼等等

●好處:具有速度和面積優勢  

●特點:

★產生偽隨機序列的最大長度:2^n-1;

●種類:       

one_to_many:

many_to_one:

●「最大」的線性反饋移位暫存器

★最大是指能產生的偽隨機序列長度最長

★乙個d觸發器叫做移位暫存器中的乙個位元,d觸發器的數目稱為移位暫存器的位元數

★「最大」的移位暫存器表(one_to_many):

防止進入禁止的狀態

如下圖所示的移位暫存器,如果進入狀態0000(即四個d觸發器的值都是0),那麼就永遠出不來了

防止進入禁止的狀態

如下圖所示的移位暫存器,如果進入狀態0000(即四個d觸發器的值都是0),那麼就永遠出不來了

預防辦法:

(1)想辦法給暫存器置位到某個允許的狀態

(2)用額外的電路讓暫存器能夠從禁止狀態自動進入允許狀態

如何設計具有2^n個狀態的移位暫存器?

以8個位元的線性反饋移位暫存器為例:

參照「最大」的移位暫存器表,先做乙個2^n-1狀態的移位暫存器:

其實,只要暫存器狀態不是00000000,暫存器就會正常工作,如果暫存器的狀態是00000000,那麼暫存器就會永遠被困在狀態00000000中。

我們要做的工作是:

把00000000也變成正常工作狀態。

這需要:

(1)我們能從某個正常狀態轉到00000000,

(2)我們能從00000000轉到另乙個正常工作狀態

(3)加入00000000盡量不影響其他狀態之間的轉移。

首先看(2)和(3),如果我們能實現下圖所示的電路,就能滿足(2)和(3)。

此時,00000000的下乙個狀態是10111000

正好是圖1所示電路中00000001的下乙個狀態。

所以我們讓00000001轉到00000000

下圖所示電路就能滿足要求:

綜上:同時滿足(1)、(2)、(3)的電路如下圖所示:

其對應的many_to_one實現是:

example: one_to_many 8-bit lfsr (具有2^n個狀態)

具有2^n個狀態的n-bit 一般(generic)lfsr

●難點:

★要把n當成引數傳入lfsr設計模組中

★要能綜合

★要使用盡量少的資源,盡量不使用rom

●設計參照:

●**分析:

小結:這段**最經典的地方就在第乙個always(即always @(reset))裡面,這裡寫了這麼多,看似會被存在乙個rom中,其實,經過綜合工具優化後,tapsarray根本就不會出現在電路裡,既實現了通用性,又不會帶來額外電路開銷。看來,綜合工具也是可以被設計者利用的,了解綜合工具的脾性,可以提高我們的設計質量。

●模組呼叫:

線性反饋移位暫存器與梅森旋轉演算法

今天主要是來研究梅森旋轉演算法,它是用來產生偽隨機數的,實際上產生偽隨機數的方法有非常多種,比方線性同餘法,平方取中法等等。可是這些方法產生的隨機數質量往往不是非常高,而今天介紹的梅森旋轉演算法能夠產生高質量的偽隨 機數,而且效率高效,彌補了傳統偽隨機數生成器的不足。梅森旋轉演算法的最長週期取自乙個...

移位暫存器示例

這裡的移位暫存器不是簡單的向左移位將序列輸入轉換為並行輸出,而且要保留最後乙個週期的輸入數作為下一次輸出的最高位,如下所示 module shift reg clk,rst,din,dout ordy input clk input rst input 7 0 din output 31 0 dou...

左移暫存器vhdl 移位暫存器的VHDL設計

系部 計算機與資訊工程系 班級學號 姓名課程名稱 pld原理與應用 實驗日期 2012.10.31 實驗名稱 實驗三移位暫存器的 vhdl 設計成績 實驗目的 建立乙個移位模式可控的 位移位暫存器。練習建立工程 檔案 實體 結構體的建立,編譯 修改 實驗條件 裝有quartus 軟體的電腦 實驗內容...