目录
一、前言
二、工程设计
2.1 设计代码
2.2 综合结果
2.3 仿真结果
一、前言
计数器是较为基础的逻辑,很多其他逻辑可依靠计数器实现,如控制器,分频。原理为通过统计时钟脉冲的个数来输出计数值。
二、工程设计
2.1 设计代码
工程设计以计数20的计数器为例
module Counter(clk,out,rst);
input clk,rst;
output reg [5:0] out;
always@(posedge clk,negedge rst)
begin
if(!rst)
out<=6'b0;
else if(out==6'd19) //此处设置计数值,因为计数输出从0开始,因此如果计数20,则计数到19即结束
out<=6'b0;
else
out<=out+1'b1;
end
endmodule
测试代码
module Counter_tb( );
reg clk,rst;
wire [5:0] out;
initial
begin
rst=1;
clk=0;
#50 rst=0;
#30 rst=1;
end
always #1 clk=~clk;
Counter Counter_test(.clk(clk),.rst(rst),.out(out));
endmodule
2.2 综合结果
综合后的网表可知,6位的计数器由6个LUT和6个FF实现,多余的一个连接到rst的LUT1是用于取反,因为rst低电平复位
2.3 仿真结果
下图仿真中,计数输出out在计数到19后从0开始,符合预期文章来源:https://www.toymoban.com/news/detail-700474.html
文章来源地址https://www.toymoban.com/news/detail-700474.html
到了这里,关于Verilog基础之十、计数器实现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!