zoukankan      html  css  js  c++  java
  • verilog中阻塞与非阻塞

    越是看似简单、经常接触的。我们越是不知其所以然。这就是我写本文的原因。
    阻塞和非阻塞赋值一般使用在进程中,包括always和initial进程、assign赋值等操作中。

    阻塞赋值与非阻塞赋值

    always @(event-expression)

        begin     <LHS1=RHS1>

                      <LHS2=RHS2>

          ......   

        end

    同样可将采用非阻塞赋值方式的always进程块写成下面的形式:

    always @(event-expression)

        begin     <LHS1<=RHS1>

                      <LHS2<=RHS2>

       ......

        end

            阻塞赋值“=”与非阻塞赋值“<=”的本质区别在于:非阻塞赋值语句右端表达式计算完后并不立即赋值给左端,而是同时启动下一条语句继续执行,我们 可以将其理解为所有的右端表达式RHS1、RHS2等在进程开始时同时计算,计算完后 ,等进程结束时同时分别赋给左端变量LHS1、LHS2等。
            而阻塞赋值语句在每个右端表达式计算完后立即赋给左端变量,即赋值语句LHS1=RHS1执行完后LHS1是立即更新的,同时只有LHS1=RHS1执行 完后才可执行语句LHS1=RHS2,依次类推。前一条语句的执行结果直接影响到后面语句的执行结果。

  • 相关阅读:
    BitSet源码
    BitSet
    webrtc在ubuntu14.04上的编译过程(12.04亦可)
    使用 ssh -R 建立反向/远程TCP端口转发代理
    爬虫与反爬虫
    Linux IO模式及 select、poll、epoll详解
    PF_RING 总结
    40行代码的人脸识别实践
    初学者必读:IBM长文解读人工智能、机器学习和认知计算
    C 格式化显示时间(time.h)
  • 原文地址:https://www.cnblogs.com/yulone/p/4059737.html
Copyright © 2011-2022 走看看