微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > verilog if判断和非阻塞赋值

verilog if判断和非阻塞赋值

时间:10-02 整理:3721RD 点击:
请问,如果用下面的代码来判断,if是判断的CLK上升沿到来之前的Start_Sig,还是CLK上升沿之后的电平?如果在这个上升沿Start_Sig的电平也发生变化,该如何判断?

  1. always @ (posedge CLK or negedge RSTn)
  2.                 if(!RSTn)
  3.                         begin
  4.                                 i<=4'd0;
  5.                         end
  6.                 else if(Start_Sig)
  7.                         case (i)
  8.                                 0:
  9.                                 1:
  10.                         endcase

复制代码


还有就是非阻塞赋值,例如Start_Sig<=1'b1;是在下一个CLK到来之前就更新完LHS变量的值,还是到来之后更新?恳请各位前辈解答。

貌似是将跳变前后分为 0- 0+ 两个时刻,按照经验仿真来看,if判断时用的是0-时刻的值,例如Start_Sig上升沿,if用0做条件判断,下降沿,if用1做条件判断。

第一个问题:在时序逻辑中,if语句判断的Start_Sig是上升沿前的,上升沿时Start_Sig的电平也发生变化则下一个上升沿,if语句才能检测到
第二个问题:一般非阻塞赋值用在时序逻辑中,故非阻塞赋值是上升沿后值再更新。

学习了,原来是这么回事,谢谢楼上二位

上升沿后再更新

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top