**
線性反饋移位暫存器 = 移位暫存器 + 組合邏輯反饋
●用處:產生偽隨機序列、資料壓縮、計數器、資料編碼解碼等等
●好處:具有速度和面積優勢
●特點:
★產生偽隨機序列的最大長度: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 軟體的電腦 實驗內容...