我正在看一些来自“asic-world”的Verilog东西,有一个关于异步重置的问题。不太确定当重置处于正边缘时它是如何工作的。如果仅考虑复位的上升沿,下面的Verilog代码将检查复位是否等于1。如果reset为1,则输出将重置为零。有谁能解释一下吗?
Asic-world的Verilog代码:
module asyn_reset(clk,reset,a,c);
input clk;
input reset;
input a;
output c;
wire clk;
wire reset;
wire a;
reg c;
always @ (posedge clk or posedge reset)
if ( reset == 1'b1) begin
c <= 0;
end else begin
c <= a;
end
endmodule发布于 2019-04-24 21:55:56
异步复位意味着,无论时钟如何,只要复位信号有效,您的电路就应该复位。当然,这应该包括在敏感度列表中,因为这样的语法使它被认为是异步复位。请注意,它不需要活动时钟来使触发器进入默认(复位)状态,并且在进入复位状态时,您不应担心任何亚稳态问题。always process的第一个块(检查重置输入状态)在这里是必需的,您需要遵循这样的编码风格。最重要的一点是,在复位断言期间,可以忽略时钟和复位之间的相对时序。Reset Release必须与时钟同步,因为它确实会导致亚稳态问题。有一些已知的电路可用于异步重置释放过程(这些电路有点具体,但在ASIC的世界中广泛使用,因此您应该能够通过google浏览器找到参考资料)。
https://stackoverflow.com/questions/55669212
复制相似问题