传送门:Shift4 - HDL数据 (01xz.net)https://hdlbits.01xz.net/wiki/Shift4
题目:
设计一个同步load,异步(asynchronous)复位,拥有使能端的4bit右移移位寄存器。
- areset : 寄存器复位为0
- load : 将data[3:0]输入至移位寄存器中
- ena : 使能信号控制向右移动(q[3] 变为零,q[0] 移出并消失)
- q : 移位寄存器的内容。
如果ena和load同时为1,load有更高的优先级。
以下为本人提供的代码,有更好的代码欢迎评论区提供:
module top_module(
input clk,
input areset, // async active-high reset to zero
input load,
input ena,
input [3:0] data,
output reg [3:0] q);
always@(posedge clk or posedge areset)
begin
if(areset)
q[3:0] <= 4'd0;
else if(load)
q[3:0] <= data[3:0];
else if(ena)
q[3:0] <= q[3:0]>>1;
else q <= q;
end
endmodule