错误:<location>处的Verilog HDL条件语句错误:If-Else语句与任何灵敏度列表边缘不匹配-Altera-Intel社区-FPGA CPLD-ChipDebug

错误:<location>处的Verilog HDL条件语句错误:If-Else语句与任何灵敏度列表边缘不匹配

如果您尝试使用多个控制信号建模DFF,则可能会发生此错误。在Quartus®II软件将仅在一个推断从单一辅助信号的辅助信号IF条件。例如,您可能编写了以下示例结构来建模可以通过两个信号rst1或rst2重置的DFF原语:

 always @ (posedge clk or posedge rst1 or posedge rst2) begin if (rst1 == 1'b1 || rst2 == 1'b1) q <= 1'b0; else q <= d; end

always @ (posedge clk or posedge rst1 or posedge rst2) begin if (rst1 == 1'b1 || rst2 == 1'b1) q <= 1'b0; else q <= d; end 

要更正此问题,请编辑设计以仅为条件指定一条边。例如,如果您要编辑前面的示例以仅为每个if条件指定一个边,那么Quartus II软件将成功识别DFF原语。然后示例代码如下所示:

 always @ (posedge clk or posedge rst1 or posedge rst2) begin if (rst1 == 1'b1) q <= 1'b0; else if (rst2 == 1'b1) q <= 1'b0; else q <= d; end

always @ (posedge clk or posedge rst1 or posedge rst2) begin if (rst1 == 1'b1) q <= 1'b0; else if (rst2 == 1'b1) q <= 1'b0; else q <= d; end 

或者,您可以在Always构造之外生成rst1和rst2的OR

这种限制将在Quartus II软件的未来版本中得到解决。

请登录后发表评论

    没有回复内容