- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第2章HDL指南
下载
第2章 HDL指南
本章提供H D L语言的速成指南。
2.1 模块
模块是Verilog 的基本描述单位,用于描述某个设计的功能或结构及其与其他模块通信的
外部端口。一个设计的结构可使用开关级原语、门级原语和用户定义的原语方式描述 ; 设计的
数据流行为使用连续赋值语句进行描述 ; 时序行为使用过程结构描述。一个模块可以在另一个
模块中使用。
一个模块的基本语法如下:
m o d u l e m o d u l e _ n a m e (p o r t _ l i s t) ;
D e c l a r a t i o n s :
reg, wire, parameter,
input, output, inout,
function, task, . . .
S t a t e m e n t s :
Initial statement
Always statement
Module instantiation
Gate instantiation
UDP instantiation
Continuous assignment
e n d m o d u l e
说明部分用于定义不同的项,例如模块描述中使用的寄存器和参数。语句定义设计的功
能和结构。说明部分和语句可以散布在模块中的任何地方;但是变量、寄存器、线网和参数
等的说明部分必须在使用前出现。为了使模块描述清晰和具有良好的可读性 , 最好将所有的说
明部分放在语句前。本书中的所有实例都遵守这一规范。
图2 - 1为建模一个半加器电路的模块的简单实例。
m o d u l e H a l f A d d e r (A, B, Sum, Carry) ;
i n p u t A, B;
o u t p u t Sum, Carry;
a s s i g n #2 Sum = A ^ B;
a s s i g n #5 Carry = A B;
e n d m o d u l e
模块的名字是H a l f A d d e r 。 模块有4个端口: 两个输
入端口A 和B ,两个输出端口S u m和C a rry 。由于没有定
义端口的位数, 所有端口大小都为1位;同时, 由于没有
各端口的数据类型说明, 这四个端口都是线网数据类型。
模块包含两条描述半加器数据流行为的连续赋值 图2-1 半加器电路
第2章 HDL指南 5
下载
语句。从这种意义上讲,这些语句在模块中出现的顺序无关紧要,这些语句是并发的。每条
语句的执行顺序依赖于发生在变量 A和B上的事件。
在模块中,可用下述方式描述一个设计:
1) 数据流方式;
2) 行为方式;
3) 结构方式;
4) 上述描述方式的混合。
下面几节通过实例讲述这些设计描述方式。不过有必要首先对 Verilog HDL 的时延作简要
介绍。
2.2 时延
Verilog HDL 模型中的所有时延都根据时间单位定义。 下面是带时延的连续赋值语句实
例。
a s s i g n #2 S u m = A ^ B;
# 2指2个时间单位。
使用编译指令将时间单位与物理时间相关联。这样的编译器指令需在模块描述前定义,
如下所示:
` timescale1ns /100ps
此语句说明时延时间单位为 1 n s并且时间精度为 100ps (时间精度是指所有的时延必须被限定在
0 . 1 n s 内) 。 如果此编译器指令所在的模块包含上面的连续赋值语句 , #2 代表2 n s 。
如果没有这样的编译器指令 , Verilog HDL 模拟器会指定一个缺省时间
文档评论(0)