在我设计的顶层模块中,我调用了另外两个模块,但它们并行运行。我想先让它们一个接一个地运行,所以一旦完成,另一个就会开始。
我该怎么做?
由于
答案 0 :(得分:0)
使用推送信号在第一个实例中运行并等待推送信号变为高电平以指示第二个实例化的开始
答案 1 :(得分:0)
也许您可以使用启用信号来控制您的模块。
例如,如果模块A完成后需要激活模块B,
在
之后,您可以使模块A输出信号作为模块B的使能信号模块A完成.A的输出信号可以通过复位信号初始化。
答案 2 :(得分:0)
使第一个模块输出DONE信号,该信号在忙碌时保持低电平,并在完成时驱动1。第二个模块应该等到DONE为1之后再执行任何操作。例如,
module A (
output reg done
);
initial begin
done = 0;
// Do all procesing
done = 1;
end
endmodule
module B (
input done
);
initial begin
@(done == 1); // Wait till done goes high
// Start processing
end
endmodule
顺便说一句,这个简单的例子假设模块中的所有代码都在初始块内。如果有多个始终/初始块或组合逻辑,那么确定何时驱动DONE为高可能会变得更加棘手