第9章 实用建模技术.ppt

  1. 1、本文档共65页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第9章 实用建模技术

第9章 实用建模技术 学习目标 ●描述过程连续赋值语句assign,deassign,force和release,解释它们在建模和调试时的重要性。 ●掌握怎样在模块调用时用defparam语句重新定义参数值。 ●解释条件编译和Verilog描述部件的执行。 ●认识和理解系统任务,如文件输出、显示层次、选通显示(strobing)、随机数生成、存储器初始化和值变转储等系统任务。 9.1 过程连续赋值 我们在7.2节中研究了过程赋值。过程赋值将值赋给寄存器,值一直保存在寄存器中,直到另一个过程赋值将另外一个值存放在该寄存器中。过程连续赋值行为与之不同,它们是这样的过程语句:允许在有限时间段内将表达式的值连续地加(驱动)到寄存器或者线网。过程连续赋值改写了寄存器或线网上的现有值。过程连续赋值给一般过程赋值语句提供了一种有用的扩展。 9.1.1 assign和deassign 关键字assign和deassign用来表示第一类过程连续赋值语句。过程连续赋值语句的左边只能是一个寄存器或一个拼接的寄存器组,不能是线网类型变量的部分位选择、位选择或寄存器组。过程连续赋值语句可以改写(覆盖)常用的过程赋值的结果。过程连续赋值一般只用于受控制的一段时间内。 9.1.2 force和release 关键字force和release用来表示过程连续赋值语句的第二种形式。它们既可以用来改写(覆盖)寄存器上的赋值也可以改写(覆盖)线网上的赋值。force和release语句的典型应用是在交互式调试过程中。此时,某些寄存器或线网被强制赋值,并且提示对其他寄存器和线网的影响。建议不要在设计模块内部使用force和release语句,它们应当只出现在激励中,或仅作为调试语句。 9.2 改写(覆盖)参数 正如前面在3.2.8节里所讨论的,参数可以在模块定义内定义。但是,在Verilog模块编译过程中,参数值可以针对每个模块调用单独改变。这样就允许我们在编译时将一组组不同的参数值组合传递给每个模块,而不考虑预定义的参数值。 有两种方法改写(覆盖)参数值:通过defparam语句或通过模块调用参数赋值。 9.2.1 defparam语句 用关键字defparam在任意模块调用中改变参数值。模块调用的层次名称可以用在改写(覆盖)参数值的语句中。 9.2.2 模块实例的参数值 在调用模块时可以改写(覆盖)其原来定义的参数值。为了解释这种用法,我们以例9.2为例,对它做一点修改,在模块调用时将新参数值传人模块。顶层模块可以把参数传递给被调用的w1和w2实例,如下所示。注意,不需要defparam。仿真输出将与用defparam语句所得到的输出一样。 9.3 条件编译和执行 Verilog代码中的一部分可能适用于某个编译环境,但不适用于另一个环境。如果设计者不想为两个环境创建不同版本的Verilog设计,还有另外一种方法,设计者在代码中指定其中某一部分代码只有在设置了特定的标志后才能被编译。这就是所谓的条件编译。 设计者也可能希望在程序的运行中仅当设置了某个标志后才能执行Verilog设计的某些部分。这就是所谓的条件执行。 9.3.1 条件编译 条件编译可以用编译指令`ifdef,`ifndef,`else,`elsif和`endif实现。 `ifdef和`ifndef指令可以出现在设计的任何地方。设计者可以有条件地编译语句、模块、语句块、声明以及其他编译指令。`else指令是可选的。一个`else指令最多可以匹配一个`ifdef或者`ifndef。一个`ifdef或者`ifndef可以匹配任意数量的`elsif命令。`ifdef或`ifndef总是用相应的`endif来结束。 在Verilog文件中,条件编译标志可以用`define语句设置。在上例中,可以通过在编译时用`define语句定义文本宏TEST和ADD_B2的方式来定义标志。如果没有设置条件编译标志,那么Verilog编译器会简单地跳过该部分。`ifdef语句中不允许使用布尔表达式,例如使用TESTADD_B2来表示编译条件是不允许的。 9.3.2 条件执行 条件执行标志允许设计者在运行时控制语句执行的流程。所有语句都被编译,但是有条件地执行它们。条件执行标志仅能用于行为语句。系统任务关键字$test$plusargs用于条件执行。 仅当在运行时设置了标志DISPLAY_VAR时才显示变量。可以指定+DISPLAY_VAR选项在程序运行时设置标志。 可以使用系统任务关键字$value$plusargs来进一步控制条件执行。该系统任务用于测试调用选项的参数值。如果没有找到匹配的调用选项,那么$value$plusargs

文档评论(0)

qwd513620855 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档