Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/154.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Verilog Delta循环模拟,当灵敏度列表中的两个输入同时改变,并且逻辑由这两个输入调节时会发生什么_Verilog - Fatal编程技术网

Verilog Delta循环模拟,当灵敏度列表中的两个输入同时改变,并且逻辑由这两个输入调节时会发生什么

Verilog Delta循环模拟,当灵敏度列表中的两个输入同时改变,并且逻辑由这两个输入调节时会发生什么,verilog,Verilog,我有一段代码如下: always_ff @(posedge X or posedge ~Y) begin if (~Y) Z <= '0; else Z <= 1'b1;

我有一段代码如下:

always_ff @(posedge X or posedge ~Y)              
        begin                                                
         if (~Y)  Z <= '0;                                  
         else      Z <=  1'b1;                                  
        end   
始终\u ff@(posedge X或posedge~Y)
开始

如果在Verilog等事件驱动模拟中(~Y)Z,则不存在“同时更改”这样的事情,一个必须在另一个之前,有时顺序是未定义的


您的问题很可能只需要灵敏度列表中的一个
posedge
,这是合成工具所必需的

嗨,Dave,感谢您快速回答,用于合成:这将被合成为一个异步复位触发器,~Y作为复位,X作为时钟。在硅中,如果这两者同时发生变化,这将使触发器处于亚稳态。但根据您的上述评论,在模拟中,Z的值将是不可预测/随机的?有时可能是0,有时可能是1。如果X和Y具有可预测的更改顺序,那么Z是可预测的。如果不是这样,那么Z是不可预测的。不可预测性与随机性不同。在硬件中,也会出现竞争条件/计时错误。如果异步复位寄存器要可靠工作,复位和时钟不得同时改变。(就像在D输入和时钟同时改变的情况下有一个竞争条件)你的“经典”异步复位触发器的例子根本不是一个触发器。这里没有时钟。@Kavin,谢谢你指出,这是我这边的失误,我无法编辑这个问题,你可以这样理解:`总是_ff@(posedge clk或posedge rst)
always_ff @(posedge rst)              
        begin                                                
         if (rst)  Z <= '0;                                  
         else      Z <=  1'b1;                                  
        end