寄存器,移位寄存器的電路原理以及verilog代碼實現


寄存器:用以存放二進制代碼的電路,下圖為由維特阻塞D觸發器組成的4位數碼寄存器:

image

邏輯功能分析:

1.異步端CR置0時,輸出置0;

2.同步並行置數:D0~D3為4個輸入代碼,當CP上升沿到達時,D0~D3被同時並行置入。

3.在置數端為1,CP端為0時,保持不變。

2.移位寄存器:具有存放數碼和使數碼逐位右移或左移的電路稱為移位寄存器。

image

移位寄存器按照不同的分類方法可以分為不同的類型。 如果按照移位寄存器的移位方向來進行分類, 可以分為左移移位寄存器、移位寄存器和雙向移位寄存器等;如果按照工作方式來分類,可以分為串入/串出移位寄存器、串入/並出移位寄存器和並入/串出移位寄存器等。

以下為異步清零的4位並入串出移位寄存器(輸入為並行數據,輸出為串行數據)

module reg_bc(clk,clr,din,dout);
input clk,clr; // 輸入時鍾端,清零端(高電平有效)
input[3:0] din; // 數據輸入端
output dout; // 數據輸出端
reg[1:0] cnt; 
reg[3:0] q;
reg dout;
always@(posedge clk)  // 時鍾上升沿觸發
begin
cnt<=cnt+1;  //cnt  自加 1
if(clr)  // 判斷清零信號是否有效
begin
q<=4'b0000; //q 置 置 0
end
else
begin
if(cnt>0) // 判斷 cnt  是否大於 0
begin
q[3:1]<=q[2:0];  //q  中的值向左移 1  位
end
else if(cnt==2'b00) // 判斷 cnt  是否為 0
begin
q<=din; //把 把 din  的值賦予 q
end
dout<=q[3];  //把 把 q  的最高位輸出
end
end

image


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM