阻塞和非阻塞是FPGA硬件编程中需要了解的一个概念,绝大部分时候,因为非阻塞的方式更加符合时序逻辑设计的思想,有利于时钟和信号的同步,更加有利于时序收敛,所以除非特殊情况,尽量采用非阻塞方式。
一,非阻塞代码
符号“<=”用于非阻塞赋值,非阻塞赋值是由时钟节拍决定,在时钟上升到来时,执行赋值语句右边,然后将 begin-end之间的所有赋值语句同时赋值到赋值语句的左边,注意:是begin—end之间的所有语句,非阻塞赋值,A和B和C是同时被赋值的,具体是说在时钟的上升沿来的时刻,A和B和C同时被置1,一起执行且一个时钟只执行一次,属于并行执行语句。
always@(posedge clk or negedge rst n)
begin
if(!rst n)
begin
a <= 1;
b <= 2;
c <= 3;
end
else
begin
a <= 0:
b <=