【发布时间】:2018-10-29 05:12:56
【问题描述】:
假设我有一个通用的 verilog 模块,我想将它导出到 2 种不同的设计 - 一种用于同步重置,另一种用于异步重置。
在这个通用模块中编写 always 块的正确方法是什么,以便它在两种设计中都能正常工作?我在想我们可以像这样使用异步重置块 -
always @(posedge clk or negedge reset_) begin
if(!reset_) temp <= 'd0;
else <do something>
end
如果我使用同步重置,那么在异步重置设计中,如果时钟开始比重置断言-取消断言晚得多,那么可能会完全错过所需的重置。
在同步重置中,我们知道 clk 的 posedge 和 reset_ 的 negedge 总是重合的,那有什么问题吗?
【问题讨论】:
标签: verilog