Verilog HDL简明教程Word文档下载推荐.docx
- 文档编号:15391788
- 上传时间:2022-10-29
- 格式:DOCX
- 页数:43
- 大小:50.09KB
Verilog HDL简明教程Word文档下载推荐.docx
《Verilog HDL简明教程Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《Verilog HDL简明教程Word文档下载推荐.docx(43页珍藏版)》请在冰豆网上搜索。
第1章简介
VerilogHDL是一种硬件描述语言,用于从算法级、门级到开关级的多种抽象设计层次的数字系统建模。
历史
VerilogHDL语言最初是于1983年由GatewayDesignAutomation公司为其模拟器产品开发的硬件建模语言。
那时它只是一种专用语言。
由于他们的模拟、仿真器产品的广泛使用,VerilogHDL作为一种便于使用且实用的语言逐渐为众多设计者所接受。
在一次努力增加语言普及性的活动中,VerilogHDL语言于1990年被推向公众领域。
OpenVerilogInternational(OVI)是促进Verilog发展的国际性组织。
1992年,OVI决定致力于推广VerilogOVI标准成为IEEE标准。
这一努力最后获得成功,Verilog语言于1995年成为IEEE标准,称为IEEEStd1364-1995。
完整的标准在Verilog硬件描述语言参考手册中有详细描述。
主要能力
下面列出的是Verilog硬件描述语言的主要能力:
*基本逻辑门,例如and、or和nand等都内置在语言中。
*用户定义原语(UDP)创建的灵活性。
用户定义的原语既可以是组合逻辑原语,也可以是时序逻辑原语。
*开关级基本结构模型,例如pmos和nmos等也被内置在语言中。
*提供显式语言结构指定设计中的端口到端口的时延及路径时延和设计的时序检查。
*可采用三种不同方式或混合方式对设计建模。
这些方式包括:
行为描述方式—使用过程化结构建模;
数据流方式—使用连续赋值语句方式建模;
结构化方式—使用门和模块实例语句描述建模。
*VerilogHDL中有两类数据类型:
线网数据类型和寄存器数据类型。
线网类型表示构件间的物理连线,而寄存器类型表示抽象的数据存储元件。
*能够描述层次设计,可使用模块实例结构描述任何层次。
*设计的规模可以是任意的;
语言不对设计的规模(大小)施加任何限制。
*VerilogHDL不再是某些公司的专有语言而是IEEE标准。
*人和机器都可阅读Verilog语言,因此它可作为EDA的工具和设计者之间的交互语言。
*VerilogHDL语言的描述能力能够通过使用编程语言接口(PLI)机制进一步扩展。
PLI是允许外部函数访问Verilog模块内信息、允许设计者与模拟器交互的例程集合。
*设计能够在多个层次上加以描述,从开关级、门级、寄存器传送级(RTL)到算法级,包括进程和队列级。
*能够使用内置开关级原语在开关级对设计完整建模。
*同一语言可用于生成模拟激励和指定测试的验证约束条件,例如输入值的指定。
*VerilogHDL能够监控模拟验证的执行,即模拟验证执行过程中设计的值能够被监控和显示。
这些值也能够用于与期望值比较,在不匹配的情况下,打印报告消息。
*在行为级描述中,VerilogHDL不仅能够在RTL级上进行设计描述,而且能够在体系结构级描述及其算法级行为上进行设计描述。
*能够使用门和模块实例化语句在结构级进行结构描述。
*VerilogHDL的混合方式建模能力,即在一个设计中每个模块均可以在不同设计层次上建模。
*VerilogHDL还具有内置逻辑函数,例如&
(按位与)和(按位或)。
*对高级编程语言结构,例如条件语句、情况语句和循环语句,语言中都可以使用。
*可以显式地对并发和定时进行建模。
*提供强有力的文件读写能力。
*语言在特定情况下是非确定性的,即在不同的模拟器上模型可以产生不同的结果;
例如,事件队列上的事件顺序在标准中没有定义。
习题
1.VerilogHDL是在哪一年首次被IEEE标准化的?
2.VerilogHDL支持哪三种基本描述方式?
3.可以使用VerilogHDL描述一个设计的时序吗?
4.语言中的什么特性能够用于描述参数化设计?
5.能够使用VerilogHDL编写测试验证程序吗?
6.VerilogHDL是由哪个公司最先开发的?
7.VerilogHDL中的两类主要数据类型什么?
8.UDP代表什么?
9.写出两个开关级基本门的名称。
10.写出两个基本逻辑门的名称。
======================================
第2章HDL指南
本章提供HDL语言的速成指南。
2.1模块
模块是Verilog的基本描述单位,用于描述某个设计的功能或结构及其与其他模块通信的外部端口。
一个设计的结构可使用开关级原语、门级原语和用户定义的原语方式描述;
设计的数据流行为使用连续赋值语句进行描述;
时序行为使用过程结构描述。
一个模块可以在另一个模块中使用。
一个模块的基本语法如下:
modulemodule_name(port_list);
Declarations:
reg,wire,parameter,
input,output,inout,
function,task,...
Statements:
Initialstatement
Alwaysstatement
Moduleinstantiation
Gateinstantiation
UDPinstantiation
Continuousassignment
endmodule
说明部分用于定义不同的项,例如模块描述中使用的寄存器和参数。
语句定义设计的功能和结构。
说明部分和语句可以散布在模块中的任何地方;
但是变量、寄存器、线网和参数等的说明部分必须在使用前出现。
为了使模块描述清晰和具有良好的可读性,最好将所有的说明部分放在语句前。
本书中的所有实例都遵守这一规范。
以下为建模一个半加器电路的模块的简单实例。
moduleHalfAdder(A,B,Sum,Carry);
inputA,B;
outputSum,Carry;
assign#2Sum=A^B;
assign#5Carry=A&
B;
模块的名字是HalfAdder。
模块有4个端口:
两个输入端口A和B,两个输出端口Sum和Carry。
由于没有定义端口的位数,所有端口大小都为1位;
同时,由于没有各端口的数据类型说明,这四个端口都是线网数据类型。
模块包含两条描述半加器数据流行为的连续赋值语句。
从这种意义上讲,这些语句在模块中出现的顺序无关紧要,这些语句是并发的。
每条语句的执行顺序依赖于发生在变量A和B上的事件。
在模块中,可用下述方式描述一个设计:
1)数据流方式;
2)行为方式;
3)结构方式;
4)上述描述方式的混合。
下面几节通过实例讲述这些设计描述方式。
不过有必要首先对VerilogHDL的时延作简要介绍。
2.2时延
VerilogHDL模型中的所有时延都根据时间单位定义。
下面是带时延的连续赋值语句实例。
assign#2Sum=A^B;
#2指2个时间单位。
使用编译指令将时间单位与物理时间相关联。
这样的编译器指令需在模块描述前定义,如下所示:
`timescale1ns/100ps
此语句说明时延时间单位为1ns并且时间精度为100ps(时间精度是指所有的时延必须被限定在0.1ns内)。
如果此编译器指令所在的模块包含上面的连续赋值语句,#2代表2ns。
如果没有这样的编译器指令,VerilogHDL模拟器会指定一个缺省时间单位。
IEEEVerilogHDL标准中没有规定缺省时间单位。
2.3数据流描述方式
用数据流描述方式对一个设计建模的最基本的机制就是使用连续赋值语句。
在连续赋值语句中,某个值被指派给线网变量。
连续赋值语句的语法为:
assign[delay]LHS_net=RHS_expression;
右边表达式使用的操作数无论何时发生变化,右边表达式都重新计算,并且在指定的时延后变化值被赋予左边表达式的线网变量。
时延定义了右边表达式操作数变化与赋值给左边表达式之间的持续时间。
如果没有定义时延值,缺省时延为0。
下面的例子显示了使用数据流描述方式对2-4解码器电路的建模的实例模型。
`timescale1ns/1ns
moduleDecoder2x4(A,B,EN,Z);
inputA,B,EN;
output[0:
3]Z;
wireAbar,Bbar;
assign#1Abar=~A;
//语句1。
assign#1Bbar=~B;
//语句2。
assign#2Z[0]=~(Abar&
Bbar&
EN);
//语句3。
assign#2Z[1]=~(Abar&
B&
//语句4。
assign#2Z[2]=~(A&
//语句5。
assign#2Z[3]=~(A&
//语句6。
以反引号“`
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Verilog HDL简明教程 HDL 简明 教程