阻塞与非阻塞赋值,当在always块中的每一个条件分支中,仅有一条赋值语句(不管是阻塞与非阻塞,且要满足条件中的条件判断式不含有在本模块中定义并赋值的reg变量(采用非阻塞赋值)),那么阻塞和非阻塞都是在时钟边沿瞬间完成的;(理解非阻塞赋值分两个过程,RHS的计算为第一步,LHS的赋值为第二步,这是第一层面;第二,由于两步时间非常短,变现出来就是在时钟边沿瞬间完成,故表现的和阻塞一样,这是第二个层面)
其二,当条件判断式中含有的条件判断式是外部输入的数据,或者是本模块的阻塞赋值变量,那么也是在边沿瞬间完成赋值(外部输入信号边沿对齐时钟边沿时要延后一个周期);
其三,如果条件判断式中含有本模块的非阻塞赋值的reg变量,那么在该条件分支下的非阻塞赋值语句会延后一个周期完成(相对于条件判断式中的变量的赋值完成)。
其四,一个条件分支中含有多条非阻塞语句时,若non1(第一条LHS)出现在第二条语句的RHS中,则会出现non2延迟一个周期的情况,如下;
要理解赋值和采样的不同,条件判断式中的条件相当于采样,即在时钟边沿条件变量的值被采样并与条件做对比,之所以条件中含有非阻塞变量时会延后一个周