Verilog HDL实现N进制计数器
N进制计数器代码如下:
//N进制计数器
module counter(count,clk,reset);
parameter N=6; //定义进制N的值
output reg [4:1]count; //定义四位寄存器变量
input clk,reset; //定义1个wire型clk时钟变量,1个wire型清零信号变量
always@(posedge clk) //当有时钟上升沿来到,执行下列语句
if(!reset) //清零信号是否为有效,低电平有效
count<=4'b0000; //有效计数器清零
else
if(count==N-1) //是否计导第N个数(0-N)
count<=4'b0000; //清零
else //否则加1
count<=count+1;
endmodule
测试代码如下:
`timescale 1ns/1ns //时间精度为1ns
module counter_tb();
reg clk,reset; //initial语句块中左边必须是reg型
wire [4:0] count;
defparam u.N=11; //将默认的模6改为模11
counter u(.clk(clk),.reset(reset),.count(count));
always #5 clk=~clk; //每5ns翻转一次,10ns为一周期
initial
begin
clk=0; reset=0; //reset=0,将count初始化为4'b0000,否则count一直处于未知态
#5 reset=1; //reset=1,计数器才能正常计数
end
endmodule