- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Verilog阻塞与非阻塞赋值使用要点
百度空间 | 百度首页 | 登录
贤臣儿_ Hou.HK_小侯哥
改变,从心 开始...
主页 博客 相册 | 个人档案 | 好友
查看文章
Verilog阻塞与非阻塞赋值使用要点
2009年05月13 日 星期三 10 :06 P.M.
越是看似简单 、经常接触的 。我们越是不知其所以然 。这就是我写本文的原因 。
阻塞和非阻塞赋值一般使用在进程中,包括always 和initial进程 、ass ign赋值等操作中 。
在Verilog HDL 中,描述进程的基本语句是always 和initial 。always过程反复执行其中的块语句,而initial过程语句只执行一次 。此外,一个ass ign赋值语句,一个实
例元件的调用也都是一个独立的进程 。
进程只有两种状 ,即执行状 和等待状 ,一旦满足特定的条件,如敏感变量发送变化,进程即进入执行状 ,执行完毕或遇到停止语句后,即停止执行,自动返
回到起始语句,进入等待状 。
在进行数字系统设计的时候,应该注意以下几点:
将硬件电路的行为以合理的方式映射为一些进程,对每个进程,以最合理的方式描述并实现 。
将组合逻辑实现的电路和用时序逻辑实现的电路尽量分配到不同的进程中 。
进程中输出的信号在各种可能的情况下都应该被赋值,且赋值号右端不再出现该信号 。
多个进程之间通过信号线进行通信,在设计中,为了达到多个进程协调运行,可以设置一些握手信号,在进程中检测这些握手信号的状 ,以决定是否进行必要的
操作 。在有的设计中,这种握手信号的协调是必不可少的 。
一个进程中一般只描述对应于一个时钟信号的同步时序逻辑 。
进程必须由敏感信号的变化来启动,因此必须精心选择进程敏感表达式中的敏感变量 。
——
阻塞赋值与非阻塞赋值
always @ (event-ex pression)
begin LHS 1=RHS 1
LHS2=RHS2
end
同样可将采用非阻塞赋值方式的always进程块写成下面的形式:
PDFmy URL.com
同样可将采用非阻塞赋值方式的always进程块写成下面的形式:
always @ (event-ex pression)
begin LHS 1=RHS 1
LHS2=RHS2
end
阻塞赋值“=”与非阻塞赋值“=”的本质区别在于:非阻塞赋值语句右端表达式计算完后并不立即赋值给左端,而是同时启动下一条语句继续执行,我们 可以将其理解为
所有的右端表达式RHS1 、RHS2等在进程开始时同时计算,计算完后 ,等进程结束时同时分别赋给左端变量LHS1 、LHS2等 。
而阻塞赋值语句在每个右端表达式计算完后立即赋给左端变量,即赋值语句LHS1=RHS1执行完后LHS1是立即更新的,同时只有LHS1=RHS1执行 完后才可执行语
句LHS1=RHS2 ,依次类推 。前一条语句的执行结果直接影响到后面语句的执行结果 。
文档评论(0)