热搜关键词: 电路基础ADC数字信号处理封装库PLC

pdf

Verilog入门教程

  • 1星
  • 2015-04-12
  • 4.62MB
  • 需要1积分
  • 24次下载
标签: verilog

verilog

Verilog入门教程

下½½
第1章 简
1.1
什么是Verilog
HDL?
本章介绍Verilog
HDL语言的发展历史和它的主要½力。
Verilog HDL是一种硬件描述语言,用于从算法级、门级到开关级的多种½象设计层次的
数字系统建模。被建模的数字系统对象的复杂性可以介于简单的门和完整的电子数字系统之
间。数字系统½够按层次描述,并可在相同描述中显式地进行时序建模。
Verilog HDL
语言具有下述描述½力:设计的行为特性、设计的数据流特性、设计的结构
组成以及包含响应监控和设计验证方面的时延和波½产生机制。所有这些½½用同一种建模
语言。此外,
Verilog HDL语言提供了编程语言接口,通过该接口可以在模拟、验证期间从设
计外部访问设计,包括模拟的具½控制和运行。
Verilog HDL语言不仅定义了语法,而且对每个语法结构½定义了清晰的模拟、仿真语义。
因此,用这种语言编写的模型½够½用
Verilog仿真器进行验证。语言从 C编程语言中继承了多
种操½符和结构。
Verilog HDL提供了扩展的建模½力,其中许多扩展最初很难理解。½是,
Verilog HDL语言的核心子集非常易于学习和½用,这对大多数建模应用来说已经足够。½然 ,
完整的硬件描述语言足以对从最复杂的芯片到完整的电子系统进行描述。
1.2
历史
Verilog HDL语言最初是于 1983年由Gateway Design Automation
公司为其模拟器产品开
发的硬件建模语言。那时它只是一种专用语言。由于他们的模拟、仿真器产品的广泛½用,
Verilog HDL
½为一种便于½用且实用的语言逐渐为众多设计者所接受。在一次努力增加语言
普及性的活动中,
Verilog HDL语言于 1 9 9 0年被推向公众领域。 Open Verilog International
(O
VI)是促进Verilog发展的½际性组织。 1992年, OVI决定致力于推广 Verilog OVI标准成为
I E E E标准。这一努力最后获得成功, Verilog
语言于
1 9 9 5年成为 I E E E标准,称为 IEEE Std
1364-1995。完整的标准在 Verilog硬件描述语言参考手册中有详细描述。
1.3
主要½力
下面列出的是Ve
rilog硬件描述语言的主要½力:
基本逻辑门,例如
and、or和nand等½内½在语言中。
用户定义原语(
UDP)创建的灵活性。用户定义的原语既可以是组合逻辑原语,也可以
是时序逻辑原语。
开关级基本结构模型,例如
pmos
和n
mos等也被内½在语言中。
Gateway Design Automation公司后来被 Cadence Design Systems公司收购。
2
Verilog HDL
硬件描述语言
下½½
提供显式语言结构指定设计中的端口到端口的时延及路径时延和设计的时序检查。
可采用三种不同方式或混合方式对设计建模。这些方式包括:行为描述方式
½用过
程化结构建模;数据流方式
½用连续赋值语句方式建模;结构化方式
½用门和
模块实例语句描述建模。
• Verilog HDL中有两类数据类型:线½数据类型和寄存器数据类型。线½类型表示构件
间的物理连线,而寄存器类型表示½象的数据存储元件。
½够描述层次设计,可½用模块实例结构描述任½层次。
设计的规模可以是任意的;语言不对设计的规模(大小)½加任½限制。
• Verilog HDL不再是某些公司的专有语言而是 IEEE标准。
人和机器½可阅读
Verilog
语言,因此它可½为
E D A的工具和设计者之间的交互语
言。
• Verilog HDL语言的描述½力½够通过½用编程语言接口( P L I)机制进一步扩展。 P L I
是允许外部½数访问
Verilog
模块内信息、允许设计者与模拟器交互的例程集合。
设计½够在多个层次上加以描述,从开关级、门级、寄存器传送级(
RT L)到算法级,
包括进程和队列级。
½够½用内½开关级原语在开关级对设计完整建模。
同一语言可用于生成模拟激励和指定测试的验证约束条件,例如输入值的指定。
• Verilog HDL
½够监控模拟验证的执行,即模拟验证执行过程中设计的值½够被监控和
显示。这些值也½够用于与期望值比较,在不匹配的情况下,打印报告消息。
在行为级描述中,
Verilog HDL不仅½够在 RT L级上进行设计描述,而且½够在½系结
构级描述及其算法级行为上进行设计描述。
½够½用门和模块实例化语句在结构级进行结构描述。
图1
- 1显示了 Verilog HDL
的混合方式建
模½力,即在一个设计中每个模块均可
以在不同设计层次上建模。
• Verilog HDL
还具有内½逻辑½数,例
如&(按½与)和|(按½或)
对高级编程语言结构,例如条件语句、
情况语句和循环语句,语言中½可以½
用。
可以显式地对并发和定时进行建模。
提供强有力的文件读写½力。
事件队列上的事件顺序在标准中没有定义。
习题
1. Verilog HDL
是在哪一年首次被
IEEE标准化的?
2. Verilog HDL支持哪三种基本描述方式?
3.
可以½用
Verilog HDL描述一个设计的时序吗?
图1-1 混合设计层次建模
RTL
开关
开关
算法
语言在特定情况下是非确定性的,
即在不同的模拟器上模型可以产生不同的结果;例如,
下½½
4.
语言中的什么特性½够用于描述参数化设计?
5.
½够½用
Verilog HDL
编写测试验证程序吗?
6. Verilog HDL
是由哪个公司最先开发的?
7. Verilog HDL中的两类主要数据类型什么?
8. UDP代表什么?
9.
写出两个开关级基本门的名称。
10.
写出两个基本逻辑门的名称。
第1章 简
3
下½½
第2章
HDL指南
本章提供H
DL语言的速成指南。
2.1
模块
模块是Verilog 的基本描述单½,用于描述某个设计的功½或结构及其与其他模块通信的
外部端口。一个设计的结构可½用开关级原语、门级原语和用户定义的原语方式描述
;
设计的
数据流行为½用连续赋值语句进行描述
;
时序行为½用过程结构描述。一个模块可以在另一个
模块中½用。
一个模块的基本语法如下:
module
module_name
(p
ort_list)
;
Declarations:
reg, wire, parameter,
input, output, inout,
function, task, . . .
Statements:
Initial statement
Always statement
Module instantiation
Gate instantiation
UDP instantiation
Continuous assignment
endmodule
说明部分用于定义不同的项,例如模块描述中½用的寄存器和参数。语句定义设计的功
½和结构。说明部分和语句可以散布在模块中的任½地方;½是变量、寄存器、线½和参数
等的说明部分必须在½用前出现。为了½模块描述清晰和具有良½的可读性
,
最½将所有的说
明部分放在语句前。本书中的所有实例½遵守这一规范。
图2
-1为建模一个半加器电路的模块的简单实例。
module
HalfAdder
(A,
B, Sum, Carry
;
)
input
A, B;
output
Sum, Carry;
assign
#2
Sum = A ^ B;
assign
#5
Carry = A & B;
endmodule
模块的名字是H
alfAdder。
模块有4个端口: 两个输
入端口A和B,两个输出端口
Sum和Carry。由于没有定
义端口的½数, 所有端口大小½为1½;同时, 由于没有
各端口的数据类型说明, 这四个端口½是线½数据类型。
模块包含两条描述半加器数据流行为的连续赋值
图2-1 半加器电路
下½½
语句的执行顺序依赖于发生在变量
A和B上的事件。
在模块中,可用下述方式描述一个设计:
1)
数据流方式;
2)
行为方式;
3)
结构方式;
4)
上述描述方式的混合。
第2章
HDL指南
5
语句。从这种意义上讲,这些语句在模块中出现的顺序无关紧要,这些语句是并发的。每条
下面几节通过实例讲述这些设计描述方式。不过有必要首先对
Verilog HDL的时延½简要
介绍。
2.2
时延
Verilog HDL模型中的所有时延½根据时间单½定义。
下面是带时延的连续赋值语句实
例。
assign
#2
Sum
= A ^ B;
#2指2个时间单½。
½用编译指令将时间单½与物理时间相关联。这样的编译器指令需在模块描述前定义,
如下所示
:
` timescale
1ns /100ps
此语句说明时延时间单½为
1ns并且时间精度为 100ps (时间精度是指所有的时延必须被限定在
0.1ns内)。
如果此编译器指令所在的模块包含上面的连续赋值语句
, #2
代表2
ns。
如果没有这样的编译器指令
, Verilog HDL
模拟器会指定一个缺省时间单½。
IEEE Verilog
HDL
标准中没有规定缺省时间单½。
2.3
数据流描述方式
用数据流描述方式对一个设计建模的最基本的机制就是½用连续赋值语句。在连续赋值
语句中,某个值被指派给线½变量。 连续赋值语句的语法为
:
assign
[d
elay] LHS_net
=
RHS_ expression
;
右边表达式½用的操½数无论½时发生变化
,
右边表达式½重新计算
,
并且在指定的时延后变
化值被赋予左边表达式的线½变量。时延定义了右边表达式操½数变化与赋值给左边表达式
之间的持续时间。如果没有定义时延值
,
缺省时延为
0。
图2
-2显示了½用数据流描述方式对 2-4解码器电路的建模的实例模型。
图2-2
2-4解码器电路
展开预览

猜您喜欢

评论

登录/注册

意见反馈

求资源

回顶部

推荐内容

热门活动

热门器件

随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
×