Mr.*_*hou 1 arguments verilog clock task
我在VCS(G-2012.09)中编写了一个测试平台来验证SPI模块.
这是从SPI主站获取字节的任务:
task get_byte;
begin
repeat(8) @(posedge spck)
begin
if (spss == 1'b0)
tmp = {tmp[6:0], mosi};
end
$display ("[Time:%dns]---->Get a byte: 0x%h", $stime, tmp);
end
endtask
Run Code Online (Sandbox Code Playgroud)
有用.然后我想参数化这个任务并用以下代码替换代码:
task get_byte;
input clk, oen, din;
output [7:0] byte;
begin
byte = 8'd0;
repeat(8) @(posedge clk)
begin
if (oen == 1'b0)
byte = {byte[6:0], din};
end
$display ("[Time:%dns]---->Get a byte: 0x%h", $stime, byte);
end
endtask
Run Code Online (Sandbox Code Playgroud)
但是当我用get_byte(spck, spss, mosi, tmp)VCS 调用任务并运行测试平台时,它就停止了.似乎spck没有通过clk这项任务的内部工作.
那么有一个规则,即时钟信号不能用作任务中的输入参数,或者我做错了什么?