【verilog中的阻塞赋值与非阻塞赋值】

1: 非阻塞赋值语句

非阻塞(Non_Blocking)赋值方式块结束后才完成赋值操作。b的值并不是立刻就改变的。对于时序电路中的always块的reg信号,一般采用非阻塞语句赋值。这种方式的赋值并不是马上执行的,也就是说always块内的下一条语句执行后,b并不等于a,而是保持原来的值。always块结束后,才进行赋值。
如:

module no_blocking (clk, a ,c
                   );
    input  clk;
    input wire a;
    output reg c;
    reg b;

        always @(posedge clk) begin
            b <= a;
            c <= b;
        end
endmodule

得到的电路如下所示:
在clk信号的上升沿到来时,b就等于a,c就等于b,只不过赋值是在always块结束后执行的,c应为原来b的值。
在这里插入图片描述

2:阻塞赋值语句

赋值语句执行完后,块才结束,b的值在赋值语句执行完后立刻就改变的。如下为阻塞赋值写法:

module blocking (clk, a ,c
                   );
    input  clk;
    input wire a;
    output reg c;
    reg b;

        always @(posedge clk) begin
            b = a;
            c = b;
        end
endmodule

生成的电路图就变为如下所示,可以看出,c和b的值在时钟上升沿到来时均取为a。
在这里插入图片描述

总结

  1. 在时序电路中最好使用非阻塞赋值,组合电路中使用阻塞赋值
  2. 在实际使用中,一些时序中要注意非阻塞赋值的特点,如想拉高某一使能信号后开始读写数据,此时使用非阻塞赋值时应该注意赋值不是立即发生。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

借问众神明.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值