网上看到的觉得不错分享下 组合逻辑的always模块中使用阻塞赋值; 时序逻辑的always模块中使用非阻塞赋值; 可以这样理解,组合中计算马上赋值,时序逻辑中上升沿计算,下降沿赋值
关键是组合逻辑中是实时变化的,而时序逻辑中一个cycle才变化一次 比如: always @(a or b) begin c = a + b; end always @(posedge clk) begin if(rst) c <= 0; else c <= a + b; end 在组合逻辑的always block中,a和b的变化都会引起c值的变化; 而时序逻辑中c至少会维持一个clock cycle,也就是说如果a和b的变化导致c变化的时间是在下一个clock的上升沿,而不会让c立刻改变