verilog学习笔记(2)_一个小module及其tb

module-ex_cnt

module ex_cnt(
input wire sclk,
input wire rst_n,
output wire[9:0] cnt
); reg [9:0] cnt_r;//_r 代表reg always@(posedge sclk or negedge rst_n)
if(rst_n == 1'b0)
cnt_r <= 'd0;//'d0代表32位0,然后截取10位
else
cnt_r <= cnt_r + 1'b1; assign cnt = cnt_r;
endmodule

tb-cnt

`timescale lns/100ps	//单位时标声明 声明时间精度为100ps
//#100 //#作为延时开始 延时为10nm module tb_ex_cnt;//声明不需要端口列表
//例化模块的时候如果原始模块是输出信号,那么括号内可以为wire变量,亦可以为reg变量
reg bt_sclk,tb_rst_n;//激励信号的声明
//例化模块的时候如果原始模块是输出信号,那么括号内必须为wire变量
wire [9:0] tb_cnt;//原始模块输出信号连接线声明
initial//initial在上电之后仅运行一次 只能给寄存器reg变量赋值
begin//begin...end只是在test_bench文件内部顺序执行 
tb_sclk <= 0;//这里阻塞赋值,非阻塞赋值都可以
tb_rst_n <= 0;//以上两句赋值语句赋值是有先后顺序的,但是延时为0
#200 //延时20nm
tb_rst_n <= 1;
end always #10 tb_sclk <= ~tb_sclk; //循环震荡 震荡周期为20nm //例化的方法
//原始模块名字 例化的名字(可以自定义)
ex_cnt ex_cnt_inst(
.sclk(tb_sclk),//.后面的名字是原始模块的端口名字 括号内为测试基地(当前)端口的名字 例化模块的时候如果原始模块是输出信号,那么括号内可以为wire变量,亦可以为reg变量
.rst_n(tb_rst_n),
.cnt(tb_cnt) //例化模块的时候如果原始模块是输出信号,那么括号内必须为wire变量
); endmodule
上一篇:PHP 时间 date,strtotime ,time计算1970开始的第几天


下一篇:js匿名函数和date对象,math对象