verlog测试代码——时钟信号和复位信号产生代码
module ();
reg clk,rst_l;//此处定义clk变量(时钟信号),和rst_l变量(复位信号),必须是reg类型,因为测试代码调用模块时:模块中的input类型必须用reg类型传入,(在设计代码调用就不是严格规定为reg类型)
initial//initial表示:其里面写的代码只执行一次
begin
clk=1'b1;//表示在0时刻对clk变量赋值为1
rst_l=1'b0;//对复位信号赋值为0,因为复位信号都是低电平有效,赋值为0,表 示在0时刻开始复位,本处用到的"#x(x是数字)”表示后面代码延迟多少个x个时刻执行,想具体聊解可以查阅书籍
#3rst_l=1'b1;//3时刻复位信号为1,表示在3时刻结束复位,可以按照正常时钟信号运行程序了
end
always#5//always表示每过时刻都执行一次,这里添加了#5,表示每过5个时刻执行一次,本处功能是:每过5个时刻对时钟信号翻转,产生周期为10个时刻的时钟信号
clk=~clk;
endmodule
另外版本
module ();
//和上面的区别在于:我对时钟信号和复位信号名字定义,不一样,这里用到sys_clk_in,sys_rst_n是和约束文件的时钟信号名称一样,
reg sys_clk_in,sys_rst_n;
initial
begin
sys_clk_in=1'b1;
sys_rst_n=1'b0;
#3sys_rst_n=1'b1;
end
always#5
sys_clk_in=~sys_clk_in;
endmodule