1、英语很重要刚开始看的时候没明白英语啥意思。后来看明白英语意思之后就知道怎么做了。
2、就是一个右移一位的寄存器。ena为高且load为低时右移一位。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)begin
q<=0;
end
else begin
if(load)
q<=data;
if(ena&&load==0)//理清逻辑关系最后的提示告诉你只有当两个同时为高时,那么load有优先级,就是说只有load为0时ena才有意义。
q<=(q>>1);
//如果两个都为底那就不进行任何操作,此时既不加载数据也不进行移位。维持原样就行也不用写
end
end
endmodule