寄存器:用以存放二進制代碼的電路,下圖為由維特阻塞D觸發器組成的4位數碼寄存器:
邏輯功能分析:
1.異步端CR置0時,輸出置0;
2.同步並行置數:D0~D3為4個輸入代碼,當CP上升沿到達時,D0~D3被同時並行置入。
3.在置數端為1,CP端為0時,保持不變。
2.移位寄存器:具有存放數碼和使數碼逐位右移或左移的電路稱為移位寄存器。
移位寄存器按照不同的分類方法可以分為不同的類型。 如果按照移位寄存器的移位方向來進行分類, 可以分為左移移位寄存器、移位寄存器和雙向移位寄存器等;如果按照工作方式來分類,可以分為串入/串出移位寄存器、串入/並出移位寄存器和並入/串出移位寄存器等。
以下為異步清零的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