美文网首页文学创作中华文学想法
verilog 阻塞赋值 vs 非阻塞赋值

verilog 阻塞赋值 vs 非阻塞赋值

作者: 佩玖吟 | 来源:发表于2021-08-17 22:53 被阅读0次

阻塞赋值 =

always @ (posedge clk)
    begin
        c = b;
        b = a;
        $display("blocking: a = %d, b = %d, c = %d.", a, b, c);
    end

在clk上升沿到来的时候,把a的值赋给b,再把b的值赋给c,并显示a、b 的值。在把a的值赋给b的这个过程中,其他的语句都“被阻塞”,被迫 停下来,结束之后,进入下一句,直到执行完begin---end中语句。所以相当于把a的值通过b传递给c。

非阻塞赋值 <=

always @ (posedge clk)
    begin
        c <= b;
        b <= a;
        $display("non_blocking: a = %d, b = %d, c = %d.", a, b, c);
    end

在posedge clk到来时,计算所有的右侧值,此 时,a的值为3,b的值为x,这是同时进行的, 没有先后顺序;然后更新左侧值,结束之后, b的值变为3,c的值为前一时刻b的值,即x。

  • 阻塞赋值 “=”:顺序执行。语句的顺序很重要,在本语句中“右式计算”和“左式更新”完全完成之后,才开始执行下一条语句。

  • 非阻塞赋值“<=”:并行执行。同时执行,与顺序无关,当前语句的执行不会阻塞下一语句的执行。

    1. 在开始时,计算所有非阻塞赋值右侧表达式

    2. 在结束时,更新所有非阻塞赋值左侧表达式

使用原则

① 在assign的结构中,必须使用阻塞赋值。

② 用always块建立组合逻辑模型时,用阻塞赋值。

③ 时序电路(锁存器)建模时,用非阻塞赋值。

④ 在同一个always块中建立时序和组合逻辑电路时,用非阻塞赋值。

⑤ 在同一个always块中不要既用非阻塞赋值又用阻塞赋值。

⑥ 不要在一个以上的always块中为同一个变量赋值。

相关文章

  • verilog 阻塞赋值 vs 非阻塞赋值

    阻塞赋值 = 在clk上升沿到来的时候,把a的值赋给b,再把b的值赋给c,并显示a、b 的值。在把a的值赋给b的这...

  • Verilog 阻塞赋值与非阻塞赋值 Blocking assi

    [TOC] Verilog Blocking and Nonblocking Assignment 官方文档原文...

  • 【FPGA】赋值语句

    赋值语句应该是开发过程中使用最多的语句,在FPGA中,赋值语句分为“非阻塞赋值”和“阻塞赋值”,什么是“非阻塞赋值...

  • 阻塞赋值和非阻塞赋值

    1.用always块描述组合逻辑时,应该使用阻塞赋值,比如二段式状态机 2.对时序逻辑的描述和建模应该使用非阻塞赋...

  • 专题:阻塞赋值&非阻塞赋值

    阻塞赋值(=)一般用于描述组合逻辑电路,也可以描述时序逻辑电路(不推荐)。非阻塞赋值(<=)只描述时序逻辑电路。 ...

  • 阻塞赋值和非阻塞赋值的区别

    阻塞赋值操作符用等号(即 = )表示。“阻塞”是指在进程语句(initial和always)中,当前的赋值语句阻断...

  • 【Verilog】语法tips

    Verilog初学建议(墙裂推荐!!!感动到哭泣!) 1.=和<=(类似vhdl:=和<=) =为阻塞赋值,类似v...

  • FPGA基础(1)verilog语法

    1、begin end 顺序语句块,fork join 并行语句块。 2、=是阻塞赋值,顺序执行,<=是非阻塞赋值...

  • 8位频率计

    模10计数器就是从0开始计数,到9就进一位; 对阻塞和非阻塞赋值的详细解释:https://www.cnblogs...

  • 异步I/O

    阻塞 / 非阻塞 VS 同步 / 异步 第一种是阻塞 I/O。阻塞 I/O 发起的 read 请求,线程会被挂起,...

网友评论

    本文标题:verilog 阻塞赋值 vs 非阻塞赋值

    本文链接:https://www.haomeiwen.com/subject/cvrwbltx.html