vivado实现模16的计数器

 `timescale 1ns / 1ps
module ctr_mod_16(
clk,
rst_n,
count
);
input clk, rst_n;
output [:] count;
wire clk, rst_n;
reg [:] count; always @ (posedge rst_n or negedge clk)
begin
if(rst_n == )
count = 'b0000;//这里也要符合4比特的格式
else
count <= (count + ) % ;
end
endmodule

testbench:

 `timescale 1ns / 1ps
module ctr_mod_16_tb;
reg clk, rst_n;
wire [:] count;
initial
$monitor ("count = %b", count);
initial
begin
# rst_n = 'b0;
# rst_n = 'b1;
end
initial
begin
# clk = 'b0;
forever
# clk = ~clk;
end
initial
begin
# $stop;
end ctr_mod_16 inst(
.clk(clk),
.rst_n(rst_n),
.count(count)
);
endmodule

结果为:

vivado实现模16的计数器

这里需要注意的是:initial后的#延时是相对于零时刻了,而且,这里新接触了一个关键字forever,这里是实现无线次数的操作。

这里的时钟clk取反,很巧妙,实现的clk的01变化。

另一个注意点就是always括号中的敏感变量必须是输入信号!!

上一篇:快捷键整理(来源:http://www.cnblogs.com/xing901022/p/4741630.htm)


下一篇:C++基于TCP和UDP的socket通信