寄存器,移位寄存器的电路原理以及verilog代码实现「建议收藏」

发布时间:2025-12-09 13:57:55 浏览次数:5

寄存器:用以存放二进制代码的电路,下图为由维特阻塞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)  // 时钟上升沿触发begincnt<=cnt+1;  //cnt  自加 1if(clr)  // 判断清零信号是否有效beginq<=4'b0000; //q 置 置 0endelsebeginif(cnt>0) // 判断 cnt  是否大于 0beginq[3:1]<=q[2:0];  //q  中的值向左移 1  位endelse if(cnt==2'b00) // 判断 cnt  是否为 0beginq<=din; //把 把 din  的值赋予 qenddout<=q[3];  //把 把 q  的最高位输出endend
需要做网站?需要网络推广?欢迎咨询客户经理 13272073477