Verilog Set在触发器中的使用
1) 据我所知,ASIC中使用重置从已知状态开始。像Verilog Set在触发器中的使用,verilog,flip-flop,Verilog,Flip Flop,1) 据我所知,ASIC中使用重置从已知状态开始。像 always @ (posedge clk or negedge reset) begin if (reset) //Initialize the signals else //do something end 但是如果是这样的话,为什么我们不使用设置信号,从一个不同的状态开始,最终得到电路应该做的事情呢?这看起来很愚蠢,但我很好奇 就是这样。我从未见过有人编写这样的代码 always @ (posedge clk or negedg
always @ (posedge clk or negedge reset)
begin
if (reset)
//Initialize the signals
else
//do something
end
但是如果是这样的话,为什么我们不使用设置信号,从一个不同的状态开始,最终得到电路应该做的事情呢?这看起来很愚蠢,但我很好奇
就是这样。我从未见过有人编写这样的代码
always @ (posedge clk or negedge set)
begin
if (set)
//Initialize the signals
else
//do something
end
2) 此外,我还了解到,有必要使用带有reset inif
条件的if/else
语句对复位信号进行建模。有人能给我举个例子说明如何做吗?你的问题中的例子有一个小错误,应该是:
always @ (posedge clk or negedge reset) begin
if (~reset) begin //<-- Reset when rest low
//Initialize the signals
end
else begin
//do something
end
end
重置条件不必设置为0。它可以是任何东西,但必须是已知的静态值。ie不是next_state
或a+b
等。它连接到触发器的复位引脚,这就是我们保持名称复位的原因
有源低电平复位在ASIC中是首选的,因为当没有电源时,它处于复位状态。当芯片启动时,您通常会同步释放时钟边缘的复位。通常至少有两条边。这样可以避免在很短的时间内出现重置故障
因为您希望在芯片通电时应用有源低电平复位,所以当通电时,一切都处于已知状态,我们使用异步复位。使用同步重置,您不知道第一个状态是什么。同步重置通常由需要清除数据的状态机和筛选器使用。异步复位用于上电复位(POR)以设置已知值
使用了if(reset)else
结构,因此合成工具可以将其重新转换为带异步重置的触发器,尝试另一种结构可能会模拟得很好,甚至可能会合成(错误),但很容易出现硬件错误,这些错误不会在模拟中显示,这使得调试非常困难
你可能有兴趣了解一下。这只是一个没有切换功能的JK
可通过以下方式暗示:
always @ (posedge clk or negedge reset or posedge set) begin
if (~reset) begin
//reset the signals
end
else if (set) begin
//set the signals
end
else begin
//do something
end
end
您的问题中的示例有一个小错误,应该是:
always @ (posedge clk or negedge reset) begin
if (~reset) begin //<-- Reset when rest low
//Initialize the signals
end
else begin
//do something
end
end
重置条件不必设置为0。它可以是任何东西,但必须是已知的静态值。ie不是next_state
或a+b
等。它连接到触发器的复位引脚,这就是我们保持名称复位的原因
有源低电平复位在ASIC中是首选的,因为当没有电源时,它处于复位状态。当芯片启动时,您通常会同步释放时钟边缘的复位。通常至少有两条边。这样可以避免在很短的时间内出现重置故障
因为您希望在芯片通电时应用有源低电平复位,所以当通电时,一切都处于已知状态,我们使用异步复位。使用同步重置,您不知道第一个状态是什么。同步重置通常由需要清除数据的状态机和筛选器使用。异步复位用于上电复位(POR)以设置已知值
使用了if(reset)else
结构,因此合成工具可以将其重新转换为带异步重置的触发器,尝试另一种结构可能会模拟得很好,甚至可能会合成(错误),但很容易出现硬件错误,这些错误不会在模拟中显示,这使得调试非常困难
你可能有兴趣了解一下。这只是一个没有切换功能的JK
可通过以下方式暗示:
always @ (posedge clk or negedge reset or posedge set) begin
if (~reset) begin
//reset the signals
end
else if (set) begin
//set the signals
end
else begin
//do something
end
end