组合逻辑:输出只是当前输入逻辑电平的函数(有延时),与电路的原始状态无关。当前电路输入信号任何一个发生改变,输出都将发生改变。
时序逻辑:输出不仅是当前输入电平的函数,还与目前电路的状态有关。 

同步时序:表示状态的寄存器组只能在唯一确定的触发条件发生时刻改变。
异步时序:表示触发条件由多个控制因素组成,如一个触发器的输出连接到另一个触发器的时钟就是异步时序逻辑。

阻塞赋值是按序执行,计算等号右边的值并同时赋给左边变量,当前语句完成才能执行下一句

所谓阻塞的概念是指在同一个always块中,其后面的赋值语句从概念上(即使不设定延迟)是在前一句赋值语句结束后再开始赋值的。

非阻塞赋值是并行执行,各语句同时执行,注意如果begin——end中存在非阻塞赋值,由于非阻塞是并发执行的,这时就不是一条一条执行的,有点类似fork——join块语句。

当执行“x=next_x;”时,x会立即的到next_x的值。而下一句“y=x;”必须等到“x=next_x;”执行完毕才能被执行。由于这两条语句都没有延迟(相当于导线),导致他们的等价语句为“y=next_x;”。时序逻辑用《=

① 在组合逻辑电路描述中采用阻塞赋值
② 时序逻辑描述,采用非阻塞赋值方式赋值

initial不可综合,一般是用在程序模块最开始初始化数据用,对寄存器、输出等变量进行清零等工作。特别是在testbench中应用非常普遍,

wire对应于连续赋值,如assign; reg对应于过程赋值,如always,initial;wire型变量综合出来一般情况下是一根导线。 reg变量在always中有两种情况: (1)always @(a or b or c)形式的,即不带时钟边沿的,综合出来还是组合逻辑,此时用阻塞赋值。; (2)always @(posedge clk)形式的,即带有边沿的,综合出来一般是时序逻辑,会包含触发器(Flip-Flop)

在组合电路always语句块里面,output信号必须定义为reg,不能用wire,如果只是assign语句,左侧必须为net类型(例如,wire),右侧wire和reg都可以。wire表示connection,reg表示variable,其实有两种意思,一种是时序电路的register,一种是组合电路的logic,verilog语法没有仔细地区分,造成一些误解,其实组合电路里面的应该定义成logic类型

设计中,输入信号一般来说不能判断出上一级是寄存器输出还是组合逻辑输出,对于本级来说,就当成一根导线,即wire型。而输出信号则由自己来决定是reg还是组合逻辑输出,wire和reg型都可以。但一般的,整个设计的外部输出(即最顶层模块的输出),要求是reg输出,这比较稳定、扇出能力好。

#1: 当为时序逻辑建模,使用“非阻塞赋值”。
#2: 当为锁存器(latch)建模,使用“非阻塞赋值”。
#3: 当用always块为组合逻辑建模,使用“阻塞赋值”
#4: 当在同一个always块里面既为组合逻辑又为时序逻辑建模,使用“非阻塞赋值”。
#5: 不要在同一个always块里面混合使用“阻塞赋值”和“非阻塞赋值”。
#6: 不要在两个或两个以上always块里面对同一个变量进行赋值。
#7: 使用$strobe以显示已被“非阻塞赋值”的值。
#8: 不要使用#0延迟的赋值。

阻塞非阻塞使用,initial assign always区别相关推荐

  1. 阻塞/非阻塞与同步/异步的区别

    阻塞,非阻塞 同步,异步 阻塞与非阻塞最大的区别是调用方一直等待还是先去处理别的事情. 同步与异步最大的区别就是被调用方返回结果之前的这段时间内,调用方是否一直等待. 那么阻塞和同步,非阻塞和异步是一 ...

  2. 同步异步与阻塞非阻塞的区别 (不定时更新)

    同步异步与阻塞非阻塞的概念对于很多初学者来说是一个模糊的概念,其实我们的生活中存在着很多同步和异步的例子. 同步和异步关注的是消息通信机制 在计算机领域,同步就是指一个进程在执行某个请求的时候,若该请 ...

  3. 阻塞非阻塞与同步异步的区别?

    之前一直对阻塞非阻塞与同步异步这两对概念理解不深,总是把它们搞混.看了网上一些相关的解释之后,发现大家站在不同的角度得出了不同的理解,这个问题没有确切的答案,只能根据场景不同做出解释. 进程间的通信 ...

  4. 异步就是异步,根本就没有 异步非阻塞IO这个说法。阻塞 非阻塞,同步I/O 异步I/O 的区别

    先给大家安利一下这个 https://www.ibm.com/developerworks/cn/linux/l-async/ 里面关于 异步非阻塞IO 是错的. 异步就是异步,别扯 异步阻塞 异步非 ...

  5. 正确理解同步/异步和阻塞/非阻塞的区别:

    之前一直把异步和非阻塞混为一谈,在 了解BIO和NIO的区别时才发现了两者的差异,看了网上很多文章觉得说的总是差点意思,下面是个人理解: 1.同步 非同步 阻塞 非阻塞 概念 怎样理解阻塞非阻塞与同步 ...

  6. 同步/异步 阻塞/非阻塞区别

    我喜欢用自己的语言通过联系现实生活中的一些现象解释一些概念,当我能做到这一点时,说明我已经理解了这个概念.今天要解释的概念是:同步/异步与阻塞/非阻塞的区别. 这两组概念常常让人迷惑,因为它们都是涉及 ...

  7. 怎样理解阻塞非阻塞与同步异步的区别

    怎样理解阻塞非阻塞与同步异步的区别? 发现很多人对这两个概念往往混为一谈 6 条评论 分享 按投票排序 按时间排序 47 个回答 605赞同 反对,不会显示你的姓名 卢毅 ,Lyft full-sta ...

  8. Socket 同步/异步 与阻塞/非阻塞区别

    2019独角兽企业重金招聘Python工程师标准>>> 在网上看了很多答案,也没找到合适的,也许本文也不是合适答案:) 同步和异步关注的是消息通信机制,而阻塞非阻塞关注的是程序在等待 ...

  9. 怎样理解阻塞非阻塞与同步异步的区别?

    发现很多人对这两个概念往往混为一谈(包括本人,不是很理解). 阻塞"与"非阻塞"与"同步"与"异步"不能简单的从字面理解,提供一个 ...

  10. 同步/异步与阻塞/非阻塞的区别

    这两组概念常常让人迷惑,因为它们都是涉及到IO处理,同时又有着一些相类似的地方. 首先来解释同步和 异步的概念,这两个概念与消息的通知机制有关. 举个 例子,比如我去银行办理业务,可能选择排队等候,也 ...

最新文章

  1. 教你用10行Python代码实现目标检测(附代码)
  2. 微信小程序记账应用实例课程(完结)——对接服务端账目CRUD
  3. LeetCode--Search in Rotated Sorted Array
  4. 关于寻路算法的一些思考(3):A*算法的实现
  5. 分子结构模拟工具UCSF Chimera的安装及基本操作
  6. 当今年轻人创业,什么行业最有前途
  7. Domino下启用SMTP验证及创建允许匿名验证
  8. SSH项目搭建-02-配置文件
  9. mysql maxwait_数据库连接池 maxActive,maxIdle,maxWait参数
  10. 正龙广告借接入平台实现财务集中管理
  11. F2FS源码分析-1.1 [F2FS 元数据布局部分] F2FS文件系统的总体结构
  12. 变速齿轮”再研究-----(转帖)
  13. android 大屏幕平台,手机大屏新玩法 体验MHL全能应用平台
  14. 小红书爆款笔记推送周期是多久?做小红书是视频好还是图文好
  15. 基于h5的航空订票系统的设计与实现
  16. 仿小米商城官网首页模板(HTML+CSS)
  17. 3D 渲染的 5 种方式
  18. peakdet: Peak detection using MATLAB 峰识别 峰面积计算 peak area 相关matlab基本详解
  19. Multisim、面包板、示波器的使用
  20. 工厂应该怎样规划生产品质管理?

热门文章

  1. ADS2019学习笔记:三、SPICE model导入
  2. Python爬取股票信息
  3. 二手车电商风波:改革路上,请给予一定的容错空间!
  4. 幼儿园初级职称计算机考试,幼儿园教师考试
  5. cacai安装与配置
  6. 典型的FPGA芯片有哪些,看完这篇文章就知道了
  7. vue背景图片路径问题
  8. 北大计算机博士有多难考,我是怎样考上北大博士的
  9. office2016
  10. 计算机密码学学习笔记(二)——Shannon理论