下载
第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位;同时, 由于没有
各端口的数据类型说明, 这四个端口都是线网数据类型。
模块包含两条描述半加器数据流行为的连续赋值