lag_cnt1),
.led_out(led_out),
//.led_out_cnt1(led_out_cnt1),
.rst_n(rst_n)
);
//这一部分是对建立的.v文件中的模块声明部分,led_source就是.v文件中的模块名字
//------------------------------
//generate clock
localparam PERIOD = 20; //50MHz
initial
begin
clk = 0 ;
forever #(PERIOD / 2) clk = ~clk;
end
//上面这一段是针对clk信号做的模拟仿真;
//------------------------------
//task reset
task task_reset;
begin
rst_n = 0 ;
repeat(2) @(negedge clk);
rst_n = 1 ;
end
endtask
//上面一部分是针对复位信号,也就是rst_n。
//一开始也是赋初值rst_n = 0 ;然后利用repeat重复执行命令;
initial
begin
$monitor($time,"led_value = %04b\n", led_out); //just test the changing of led_out //value
task_reset;
end
//上面这一部分就是对上面的task模块进行调用和对输入信号进行仿真,当然这一部分并没有用到用 //户输入信号。
endmodule
图8.5是对于按键的仿真程序,将输入也定义为一个task,然后在101行到105行进行任务的调用,清楚明了。
图8.5 输入信号的调用
|