设计一个计数器,该计数器在电路复位后会循环的从0值递增计数到最大值,计数最大值是一个循环变化的过程,计数器复位之后,第一次计数最大值是6,然后是7、8、9,然后计数最大值又变成6,如此往复循环,计数过程如下所示:
module jh (CLK,RST,CNT);
output[3:0]CNT;//定义输出
input CLK,RST;//定义输入
reg[3:0] CNT;//定义一个四位寄存器记录输出
reg[3:0] VALUE=6;//定义一个四位寄存器记录作参考值
always@(posedge RST or posedge CLK)//两个敏感事件复位和时钟信号
begin
if(RST)//先判断是否有复位操作
begin
CNT<=4'd0000;
end
else begin
if(VALUE>9) begin//判断参考是否达到最大值
VALUE<=6;
end
if(CNT<VALUE) begin//判断当前值是否达到参考最大值
CNT <= CNT+4'd0001;
end
else
begin //当前值达到最大值,参考值加1,当前值置零
CNT<=4'd0000;
VALUE<=VALUE+1;
end
end
end
endmodule
viso绘制RTL图
quartus绘制RTL图
波形图