(7)模块基本结构.pdfVIP

  1. 1、本文档共61页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
可编程逻辑器件及其应用 行为描述(一) :模块基本结构 第5章 行为描述(一) :模块基本结构 5.1 行为描述的结构 5.2 语句块 5.1 行为描述的结构 模块采用行为描述方式时的基本语法格式如下: module 模块名(端口列表) 模块端口说明 参数定义(可选) 数据类型说明 过程块(initial过程块或always过程块,可有一个或多个) 连续赋值语句; 任务定义(task)(可选) 函数定义(function)(可选) endmodule 其中: 端口列表中可以有单个或多个输入、输出或双向端口;这 些端口类型要在“模块端口说明”部分进行类型说明。 参数定义用关键词parameter实现,如果模块定义了参数,那 么该模块的每个实例可以对该参数进行重新定义,使得该参数值 对每一个具体实例是惟一的。 数据类型说明用来对模块中用到的各类变量类型进行说明, 如果某个变量没有进行数据类型说明,则它的类型缺省为连线类 型(wire) 。 过程块是由过程语句initial或always开头的一个语句块,根据 这两个不同的关键词,过程块可以被分为“initial过程块”和 “always过程块”两种类型。过程块中包含一条或多条行为语句, 过程块是行为描述的主要组成部分。 连续赋值语句是由关键词assign来标识的一种赋值语句,它 只能对连线型类型(net类型)变量进行驱动,它和语句块一样也是 一种行为描述语句。在下一章讨论过程赋值语句时我们将对连续 赋值语句一并进行讨论。 任务定义和函数定义部分都是可选的,它们引入的目的是为 了描述模块中被多次执行的部分以及为了增强代码的易读性。 上面列出的各个模块组成项可以以任意次序出现,但是端口 说明和数据类型说明必须出现在这些端口和数据被引用之前。 与第2章中描述的模块的一般格式定义相比,我们可以看出: 在进行行为描述时,模块内不能出现模块实例和原语实例语句(包 括用户自定义原语实例) ,模块内只能存在过程块(initial过程块和 always过程块) 、连续赋值语句、任务定义(task)和函数定义 (function)这四种结构成分。对电路进行行为描述主要是通过过程 块和连续赋值语句来进行的,任务和函数的使用也需要在过程块 或连续赋值语句中进行调用。本章以及第6、7章将对这几种结构 成分进行介绍。 一个行为描述模块中可以同时包含多个过程块和多个连续赋 值语句,这些组成成分将以并行方式各自独立地执行;行为描述 模块也可以只包含过程块或者只包含连续赋值语句。 5.1.1 过程块 每个过程块是由“过程语句(initial或always)”和语句块所组成的, 而语句块主要是由过程性赋值语句(包括“过程赋值语句”和“过程 连续赋值语句”)和高级程序语句(包括“条件分支语句”和“循环 控制语句”)这两种行为语句构成的。过程块具有如下特点: (1) 在行为描述模块中出现的每个过程块(always过程块或initial 过程块)都代表一个独立的进程。 (2) 在进行仿真时,所有initial过程块和always过程块的执行都 是从0时刻开始并行地进行的。 (3) 每一个过程块内部的多条语句的执行方式可以是顺序执行 的(当块定义语句为begin-end时的情况) ,也可以是并行执行的(块定 义语句为fork-join 时的情况) 。 (4)  always过程块和initial过程块都是不能嵌套使用的。比如下 例5-1就是错误的。 【例5-1】错例:嵌套的过程块。 module nested_procedural_block(a,b,c) ; input a,b ; output c ; reg a,b,c ; initial // initial过程块1 begin c=a ; initial //嵌套在initial过程块1内部的initial过程块2 begin

文档评论(0)

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

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

1亿VIP精品文档

相关文档