verilog_hdl中阻塞赋值与非阻塞赋值的区别与应用

verilog_hdl中阻塞赋值与非阻塞赋值的区别与应用

ID:15396323

大小:368.50 KB

页数:4页

时间:2018-08-03

verilog_hdl中阻塞赋值与非阻塞赋值的区别与应用_第1页
verilog_hdl中阻塞赋值与非阻塞赋值的区别与应用_第2页
verilog_hdl中阻塞赋值与非阻塞赋值的区别与应用_第3页
verilog_hdl中阻塞赋值与非阻塞赋值的区别与应用_第4页
资源描述:

《verilog_hdl中阻塞赋值与非阻塞赋值的区别与应用》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、VerilogHDL中阻塞赋值与非阻塞赋值的区别与应用张文波摘要:VerilogHDL语言是世界上应用最广泛的硬件描述语言之一。在VerilogHDL语言中最容易混淆的概念之一就是阻塞赋值与非阻塞赋值,甚至一些非常有经验的VerilogHDL设计师也不能完全理解为什么和什么时候使用阻塞赋值和非阻塞赋值。本文详细阐述了阻塞赋值与非阻塞赋值的概念和区别,通过仿真和举例进一步解释了阻塞赋值与非阻塞赋值在工程中的典型应用和技巧。本文中的所有程序代码,在ISE10.1应用软件中均测试通过,可以直接引用。关键词:阻塞赋值;非阻塞赋值;仿真中图分类号:TP368文献标识

2、码:TheDifferenceandApplicationofBlockingassignmentandNonblockingassignmentinVerilogHDLZHANGWen-bo(ChinaAirborenMissileAcademy,HenanLuoyang471000,China)ABSTRACT:Intheworld,oneofthemostextensivehardwaredescriptionlanguageisVerilogHDL.OneofthemostmisunderstoodconstructsintheVeriloglan

3、guageistheblockingassignmentandnonblockingassignment,evenveryexperiencedVerilogdesignersdonotunderstandwhenandwhyblockingassignmentandnonblockingassignmentshouldbeused.Thispaperdetailsthedifferenceandtheconstructsoftheblockingassignmentandnonblockingassignment,andmakesafurtherexpl

4、anationaboutthetypicalapplicationandskillswhitthesimulationandexamples.Inthispaper,allofthecodewerevalidatedbyISE10.1.KEYWORDS:blockingassignment;nonblockingassignment;simulation41引言VerilogHDL语言是目前世界上最流行的硬件描述语言之一,被广泛的应用于基于可编程逻辑器件的项目开发。在VerilogHDL语言中,信号有两种赋值方式:阻塞赋值方式和非阻塞赋值方式。2功能定义赋

5、值语句的功能是用赋值语句右端的表达式所定义的逻辑来驱动该赋值语句左端表达式的变量。2.1阻塞赋值语句阻塞赋值用符号“=”表示。阻塞赋值表示在当前的赋值完成前阻塞其他的赋值任务。即在赋值时,先计算“=”右边的值,此时赋值语句不允许任何别的赋值任务的干扰,直到现行的赋值完成时,才允许别的赋值语句的执行。也就是说,在同一个块语句中,其后面的赋值语句是在前一句赋值语句结束后再开始赋值的。比如下面的程序:initialbegina=0;//阻塞赋值语句S1a=1;//阻塞赋值语句S2end中包含了两条阻塞赋值语句S1和S2,我们假设initial块是在仿真时刻0得到

6、执行的。由于S1和S2都是阻塞赋值语句,所以在执行S1时,S2被“阻塞”而不能得到执行;只有在S1执行完毕,a被赋值为0之后,S2才开始执行。而S2的执行将使变量a重新被赋值为1。2.2非阻塞赋值语句非阻塞赋值用符号“<=”表示。非阻塞赋值表示在当前的赋值未完成前不阻塞其他的赋值任务。即在赋值操作开始时计算“<=”右边的表达式,在赋值操作结束时更新“<=”左边的变量,并且在赋值操作的过程中,允许其他赋值语句同时执行。也就是说,在同一个块语句中,其后面的赋值语句是在前一句非阻塞赋值语句开始时,同时开始赋值的,并且是在块语句结束时,同时更新左边的变量后一起结束

7、的。比如下面的程序:initialbeginA=1;//非阻塞赋值语句S3B=1;//非阻塞赋值语句S4end4中包含了两条非阻塞赋值语句S3和S4,我们假设initial块是在仿真时刻0得到执行的。语句S3首先得到执行,但是对被赋值对象A的赋值操作要等到当前时间步结束时(initial块结束时)才执行,同时因为S3是一条非阻塞赋值语句,所以S3不会阻塞S4的执行,于是S4也随即开始执行,但对被赋值变量B的赋值操作也要等到当前时间步结束时(initial块结束时)才执行。所以,在当前时间步结束时(initial块结束时)被赋值变量A和B同时被赋值为1。3.

8、阻塞赋值与非阻塞赋值的仿真利用内部时间控制方式,可以对阻塞赋值和非

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。