Verilog HDL数字系统设计及其应用第6章.pptVIP

Verilog HDL数字系统设计及其应用第6章.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Verilog HDL数字系统设计及其应用第6章

  上面的过程块1相当于如下的过程块2: initial //过程块2 fork begin //语句块1 #5; a=b; end begin //语句块2 #10; c=d; end join   上例中的“过程块2”等价于“过程块1”。其中,“语句块1”和“语句块2”分别等价于赋值语句S1和赋值语句S2。“语句块1”和“语句块2”处于同一个fork-join并行块内,这表明了语句S1的执行不会阻塞语句S2的执行。而语句S1和S2的执行过程都是先延时等待然后再执行对应的赋值表达式计算和赋值操作。   所以上述“过程块1”的执行流程将是:当仿真进程遇到initial过程块后?(0时刻),语句S1和语句S2同时开始执行。S1的执行过程是在5个单位时间的延时后?(t=5时刻)?计算赋值表达式“b”的值并将其结果赋给赋值变量a,而S2的执行过程是在10个单位时间的延时后?(t=10时刻)?计算赋值表达式“d”的值并将其结果赋给赋值变量c。上例过程块的执行时序如图6.5所示。 图6.5 带有外部延时控制的非阻塞型过程赋值语句的执行时序   如果非阻塞型过程赋值语句带有内部延时控制,则仿真进程在遇到这种赋值语句后将立即计算语句右端赋值表达式的值,然后进入延时控制部分所指定的等待状态,直到退出等待状态时刻所在时间步的末尾才执行赋值操作,将已计算得到的赋值表达式结果值赋给被赋值变量。例如如下语句:   a=#10 b;   就是一条带有内部延时控制的非阻塞型过程赋值语句。在开始执行这条语句后,首先立即计算赋值表达式“b”的值?(在t=0时刻),然后等待10个单位时间的延时量,一直等到延时结束时刻?(t=10时刻)?所在时间步的末尾才将计算得到的赋值表达式取值结果赋给变量a。   我们再举一个例子来说明非阻塞型过程赋值语句带有延时控制的情况。   【例6-20】非阻塞型过程赋值语句带有延时控制的情况。 initial begin a = 0; //语句S1 a = #5 1; //语句S2 #10 a = 0; //语句S3 a =#25 1; //语句S4 end   在例6-20内的各条非阻塞型过程赋值语句中,有的带有外部延时控制,有的带有内部延时控制,还有的没有延时控制。这些非阻塞型过程赋值语句都处于同一个begin-end串行块内,所以它们将依次开始得到执行:   (1) 语句S1在0时刻最先开始执行,由于S1是非阻塞型赋值语句,它的执行不会阻塞下一条语句S2的执行,所以语句S2也随即开始执行?(在t=0时刻);同时由于S1中没有延时控制部分,所以语句S1对应的赋值操作在t=0时间步结束时得到执行,变量a被赋值“0”。   (2) 语句S2在开始执行后?(0时刻),由于它也是一条非阻塞型赋值语句,它的执行不会阻塞下一条语句S3的执行,所以语句S3也随即开始执行?(t=0时刻)。又由于S2中带有内部延时控制,所以语句S2所对应的赋值操作将在延时结束时刻?(t=5时刻)?所在时间步的末尾得到执行,变量a被赋值“1”。   (3) 语句S3在开始执行后?(0时刻),由于这条语句也是一条非阻塞型赋值语句,它的执行不会阻塞下一条语句S4的执行,所以语句S4也随即开始执行?(在t=0时刻)。又由于S3带有外部延时控制,所以它的执行过程是先进入延时状态,等到延时结束后?(t=10时刻)才开始语句“a = 0”的执行,在t=10时间步的末尾执行赋值操作,将值“0”赋给赋值变量a。   (4) 语句S4在t =0时刻开始执行后,由于带有内部延时控制,所以语句S4对应的赋值操作将在延时结束时刻?(t=25时刻)?所在时间步的末尾得到执行,a被赋值“1”。   图6.6给出了上例过程块仿真执行时变量a的波形。 图6.6 带有延时控制的非阻塞型过程赋值产生的波形   下面的例6-21是同时使用了阻塞型过程赋值语句和非阻塞型过程赋值语句的一个例子,注意两种赋值方式的区别。   【例6-21】同时使用阻塞型过程赋值语句和非阻塞型过程赋值语句。 reg a,b,c; initial begin a=0; //语句S1 a=1; //语句S2 b=a; //语句S3 #5; //等待一定的时延 c=a; //语句S4 end   为了确定例6-21内initial过程块执行后变量a,b,c的取值情况,我们必须对其中各条赋值语句所指定的赋值操作的执行时序进行分析,从而来判断各个变量的取值变化情况。   initial过程块开始执行后,语句S1首先得到执行,由于它是一条阻塞型赋值语句,所以它对应的赋值操作立即执行,变量

文档评论(0)

ligennv1314 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档