网站大量收购闲置独家精品文档,联系QQ:2885784924

Verilog HDL2指南.ppt

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

说明部分用于定义不同的项,例如模块描述中使用的寄存器和参数。语句定义设计的功能和结构。说明部分和语句可以散布在模块中的任何地方;但是变量、寄存器、线网和参数等的说明部分必须在使用前出现。为了使模块描述清晰和具有良好的可读性, 最好将所有的说明部分放在语句前。 第二章 HDL指南 2.1 模块 模块的名字是Halfadder。模块有4个端口: 两个输入端口A和B,两个输出端口Sum和Carry。由于没有定义端口的位数, 所有端口大小都为1位;同时, 由于没有各端口的数据类型说明, 这四个端口都是线网数据类型。 模块包含两条描述半加器数据流行为的连续赋值语句。从这种意义上讲,这些语句在模块中出现的顺序无关紧要,这些语句是并发的。每条语句的执行顺序依赖于发生在变量A和B上的事件。 在模块中,可用下述方式描述一个设计: 1) 数据流方式; 2) 行为方式; 3) 结构方式; 4) 上述描述方式的混合。 下面几节通过实例讲述这些设计描述方式。不过有必要首先对Verilog HDL的时延作简要介绍。 2.2 时延 Verilog HDL模型中的所有时延都根据时间单位定义。下面是带时延的连续赋值语句实例。 2个时间单位延时 使用编译指令将时间单位与物理时间相关联。这样的编译器指令需在模块描述前定义,如下所示: 如果此编译器指令所在的模块包含上面的连续赋值语句, #2 代表2 n s。 如果没有这样的编译器指令, Verilog HDL 模拟器会指定一个缺省时间单位。 2.3 数据流描述方式 用数据流描述方式对一个设计建模的最基本的机制就是使用连续赋值语句。在连续赋值语句中,某个值被指派给线网变量。连续赋值语句的语法为: 右边表达式使用的操作数无论何时发生变化, 右边表达式都重新计算, 并且在指定的时延后变化值被赋予左边表达式的线网变量。时延定义了右边表达式操作数变化与赋值给左边表达式之间的持续时间。如果没有定义时延值, 缺省时延为0。 图2-2显示了使用数据流描述方式对2-4解码器电路的建模的实例模型。 以反引号“ ` ”开始的第一条语句是编译器指令, 编译器指令` timescale 将模块中所有时延的单位设置为1ns,时间精度为1ns。 连续赋值语句是并发执行的,也就是说各语句的执行顺序与其在描述中出现的顺序无关。 参见图2-3中的波形图。当EN在第5ns变化时,语句3、4、5和6执行。这是因为EN是这些连续赋值语句中右边表达式的操作数。Z[0]在第7ns时被赋予新值0。当A在第15ns变化时, 语句1、5和6执行。执行语句5和6不影响Z[0]和Z[1]的取值。执行语句5导致Z[2]值在第17ns变为0。执行语句1导致Abar在第16ns被重新赋值。由于Abar的改变,反过来又导致Z[0]值在第18ns变为1。 2.4 行为描述方式 设计的行为功能使用下述过程语句结构描述: initial语句:此语句只执行一次。 2) always语句:此语句总是循环执行, 或者说此语句重复执行。 只有寄存器类型数据能够在这两种语句中被赋值。寄存器类型数据在被赋新值前保持原有值不变。所有的初始化语句和always语句在0时刻并发执行。 下例为always语句对1位全加器电路建模的示例。 由于Sum、Cout、T1、T2和T3在always 语句中被赋值,它们被说明为reg类型(reg是寄存器数据类型的一种)。 这意味着只要A、B或Cin 上发生事件,即A、B或Cin之一的值发生变化,顺序过程就执行。在顺序过程中的语句顺序执行,并且在顺序过程执行结束后被挂起。顺序过程执行完成后,always语句再次等待A、B或Cin上发生的事件。 在顺序过程中出现的语句是过程赋值模块化的实例。模块化过程赋值在下一条语句执行前完成执行。过程赋值可以有一个可选的时延。 时延可以细分为两种类型: 1) 语句间时延: 这是时延语句执行的时延。 2) 语句内时延: 这是右边表达式数值计算与左边表达式赋值间的时延。 下面是语句间时延的示例: 在第二条语句中的时延规定赋值延迟4个时间单位执行。就是说,在第一条语句执行后等待4个时间单位,然后执行第二条语句。 下面是语句内时延的示例: 这个赋值中的时延意味着首先计算右边表达式的值, 等待3个时间单位,然后赋值给Sum。 如果在过程赋值中未定义时延,缺省值为0时延,也就是说,赋值立即发生。 下面是initial语句的示例:

文档评论(0)

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

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

1亿VIP精品文档

相关文档