移位暫存器示例

2021-09-11 08:03:45 字數 1776 閱讀 8978

這裡的移位暫存器不是簡單的向左移位將序列輸入轉換為並行輸出,而且要保留最後乙個週期的輸入數作為下一次輸出的最高位,**如下所示:

module shift_reg(

clk,rst,din,dout//,ordy

);input clk;

input rst;

input [7:0] din;

output [31:0] dout;//4個週期

//output ordy;

reg [1:0] count;

//reg aaa;

//3分頻時鐘,占空比33%

always @ (posedge clk or posedge rst) begin

if (rst) begin

count <= 0;

// aaa <= 0;

endelse if (count == 2'b10) begin

count <= 0;

// aaa <= 1;

endelse begin

count <= count + 1;

// aaa <= 0;

endend

reg [31:0] zuobiancunchu;//256*6

reg rstdelay;

//移位暫存器,0001,0012,0123,,2345,3456.,5678,6789,【789 10】,不斷左移,帶黑框的進入fft模組

always @ (posedge clk or posedge rst)

begin

if (rst)

begin

zuobiancunchu <= 0;

rstdelay <= 1;

endelse if (rstdelay)

begin

zuobiancunchu[7:0] <= din;//第乙個週期

rstdelay <= 0;

endelse begin

zuobiancunchu <= ;//左移,後輸入的數在低位

endend

reg [31:0] zuobian;

reg qushudelay;

always @ (posedge clk or posedge rst)

begin

if (rst)

begin

zuobian <= 0;

qushudelay <= 1;

endelse if (count == 2'b01 && qushudelay == 1)

begin//qushudelay == 1時,暫存器為0123

qushudelay <= 0;

endelse if (count == 2'b01)

begin

zuobian <= zuobiancunchu;

endend

assign dout = zuobian;

endmodule

rtl**如下: 

雖然是每4個週期輸出一次,但是實際更新的數只有3個週期;只是在第一次輸出時要等待4個週期,此時按照規律有點麻煩,可以按上述**所示提前1個週期輸出,即假如本來是每3個週期輸出一次,在count=2時的輸出改變為提早乙個週期輸出,即在count=1輸出,只是在第一次輸出時需要將第一次count=1排除,所以要加標誌位qushudelay; 

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

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

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

線性反饋移位暫存器 移位暫存器 組合邏輯反饋 用處 產生偽隨機序列 資料壓縮 計數器 資料編碼解碼等等 好處 具有速度和面積優勢 特點 產生偽隨機序列的最大長度 2 n 1 種類 one to many many to one 最大 的線性反饋移位暫存器 最大是指能產生的偽隨機序列長度最長 乙個d觸...

如何在專案中使用移位暫存器

了解移位暫存器,包括它們如何工作以將並行連線轉換為序列連線。arduino uno開發板 74hc165 跳線電纜 移位暫存器有不同的版本,可用於各種應用。本文將向您介紹移位暫存器並說明它們的工作原理。此外,它還將解釋如何使用它們將多條並行資料線轉換為單個序列連線。移位暫存器是儲存單個資料字的同步裝...