广州周立功单片机发展有限公司 Tel: (020)38730976 38730977 Fax:38730925 http://www.zlgmcu.com
- 1 -
Verilog®黄金参考指南
V1.0 1996 年 8 月
©版权 1996
Doulos 保留所有权力
本刊物的任何部分在得到 DOULOS 的书面许可前都不能通过包括电子
机械 影印 录像或其他任
何形式或任何方式复制
保存在搜索系统或发布 在英国和北爱尔兰印刷
Verilog-XL
TM
是商标 Verilog®是 Cadence Design System Inc 的注册商标
DOULOS
Church Hatch,
22 Market Place,
Ringwood.
Hampshire.
BH24 1AW
England.
Tel (+44) (0)1425 471223
Fax (+44) (0)1425 471573
Email
info@doulos.co.uk
URL
http://www.doulos.co.uk
广州周立功单片机发展有限公司 Tel: (020)38730976 38730977 Fax:38730925 http://www.zlgmcu.com
- 2 -
序言
.............................................................................................................................. 4
指南的使用 ................................................................................................................................. 4
索引............................................................................................................................................ 4
用于定义 Verilog 语法的记号说明............................................................................................... 4
Verilog
的简单介绍
....................................................................................................... 5
背景............................................................................................................................................ 5
语言............................................................................................................................................ 5
编译............................................................................................................................................ 6
模块结构..................................................................................................................................... 6
语句............................................................................................................................................ 7
按字母顺序参考的部分
................................................................................................. 9
Always........................................................................................................................................ 9
Begin........................................................................................................................................ 10
Case......................................................................................................................................... 12
编码标准................................................................................................................................... 13
注释.......................................................................................................................................... 14
连续赋值................................................................................................................................... 15
Defparam ................................................................................................................................. 16
Delay........................................................................................................................................ 17
设计流程................................................................................................................................... 18
Disable..................................................................................................................................... 18
错误.......................................................................................................................................... 19
事件.......................................................................................................................................... 20
表达式 ...................................................................................................................................... 21
For............................................................................................................................................ 22
Force........................................................................................................................................ 23
Forever..................................................................................................................................... 24
Fork.......................................................................................................................................... 25
函数.......................................................................................................................................... 26
函数调用................................................................................................................................... 27
门 ............................................................................................................................................. 27
IEEE1364................................................................................................................................. 30
If............................................................................................................................................... 31
Initial......................................................................................................................................... 32
实例化 ...................................................................................................................................... 33
模块.......................................................................................................................................... 35
名字.......................................................................................................................................... 37
线网.......................................................................................................................................... 38
数字.......................................................................................................................................... 41
运算符 ...................................................................................................................................... 43
参数.......................................................................................................................................... 44
PATHPULSE$ .......................................................................................................................... 46
端口.......................................................................................................................................... 47
过程赋值................................................................................................................................... 48
广州周立功单片机发展有限公司 Tel: (020)38730976 38730977 Fax:38730925 http://www.zlgmcu.com
- 3 -
过程连续赋值 ........................................................................................................................... 50
编程语言接口 ........................................................................................................................... 51
寄存器 ...................................................................................................................................... 51
Repeat ..................................................................................................................................... 53
保留字 ...................................................................................................................................... 53
Specify ..................................................................................................................................... 54
Specparam............................................................................................................................... 57
语句.......................................................................................................................................... 57
强度.......................................................................................................................................... 58
字符串 ...................................................................................................................................... 60
任务.......................................................................................................................................... 61
任务使能................................................................................................................................... 64
定时控制................................................................................................................................... 65
用户定义的原语........................................................................................................................ 67
While........................................................................................................................................ 70
编译器伪指令
............................................................................................................. 71
编译器伪指令 ........................................................................................................................... 71
`define...................................................................................................................................... 72
`ifdef......................................................................................................................................... 74
`timescale................................................................................................................................. 74
系统任务和函数
.......................................................................................................... 76
系统任务和函数........................................................................................................................ 76
$display 和$write...................................................................................................................... 81
$fopen 和$fclose ...................................................................................................................... 82
$monitor 等............................................................................................................................... 83
$readmemb 和$readmemh ...................................................................................................... 84
$strobe..................................................................................................................................... 85
$timeformat.............................................................................................................................. 86
随机建模................................................................................................................................... 86
定时检查................................................................................................................................... 89
值改变转储 ............................................................................................................................... 91
命令行选项
................................................................................................................. 93
命令行选项 ............................................................................................................................... 93
广州周立功单片机发展有限公司 Tel: (020)38730976 38730977 Fax:38730925 http://www.zlgmcu.com
- 4 -
序言
Verilog 黄金参考指南是 Verilog 硬件描述语言及其语法 语义 合并以及将它应用到硬件设计的一个
简明的快速参考指南
Verilog 黄金参考指南并不是要代替 IEEE 的标准 Verilog 语言参考手册
它不像 IEEE 的标准手册提供
了 Verilog 完整
正式的描述 相反 黄金参考指南以一种方便的参考格式解答了在 Verilog 的实践应用过
程中经常遇到的问题
Verilog 黄金参考指南也不想成为介绍性的指南
这里所提出的信息是一种扼要的参考格式 而不是学
习像 Verilog 这种复杂的主题所必要的渐进和共鸣方式
但必须承认的是已经熟悉计算机语言的人希望将这
个参考指南作为 Verilog 的课本
因此在开始本指南就会对这个主题进行一个简单的非正式介绍
Verilog 黄金参考指南的主要特征是它包含了从许多 Verilog 项目中积聚起来的大量实践知识
指南不
仅提供方便的语法参考
很多类似的书也有 还对最常见的语言错误提出警告 在代码不能编译的时候给
出线索指出要看什么地方
警告你注意合并问题并对改善你的编码形式提出建议
Verilog 黄金参考指南是为了给 Doulos 的系列 Verilog 训练课程增值
也是 HDL PaceMaker Doulos
Verilog 计算机基础训练包的补充
指南的使用
本指南的主体被分成 3 个主要部分
每个部分都按字母顺序组织 每一部分都以每页顶部的关键字词
条作为索引
通常 你只要快速翻阅指南查找相应的关键字词条的就可以找到想要的信息 如果找不到
也可以用最后的完整索引查找
本指南的很多信息都围绕 Verilog 的句法组织
但也有另外一些有关编码标准 设计流程 错误 保留
字以及在正文按字母顺序参考部分后面的编译器伪指令
系统任务和函数以及命令行选项等特殊的部分
如果你是 Verilog 的新手
请先阅读次页的 Verilog 简单介绍
索引
粗体的索引条目在指南的主体有对应的页
剩下的索引条目按重要性的顺序在字符参考部分的页参考
后面
用于定义
Verilog
语法的记号说明
在任何可能的时候
语法定义要写得和例子相似 但有需要引入一些额外的记号 简单地来说 方括
号[ ]包含可选的项目
三个点号…表示重复 花括号{ }包含的是注释 斜体表示语法该部分在别处定义
记号的完整描述如下
包含注释的花括号{ }所不是被定义的 Verilog 语法的一部分
但它向你提供了有关语法定义的补充信
息
粗体的花括号{ }是 Verilog 句法的一部分 连接运算符
包含在方括号[ ]中的语法是可选的
粗体的方括号是[ ]Verilog 语法的一部分 矢量范围 位和部分选
择
存储器元素
…表示前面的项目或行的重复 0 次或者多次
或者表示一个列表 例如
Item…表示 Item 重复 0 次或多次
,…表示在用逗号分隔的列表重复
例如 A,B,C
列表中至少有一个项目
列表的结尾没有,号
小写的字是保留字
是 Verilog 语言的组成部分 例如 module
以大写字母开头的字
不是斜体 是 Verilog 的标识符 即用户定义的名字 它们都不是保留的标识符
例如 InstanceName
斜体的字是句法范畴
即在别处完整给出句法名字的定义 句法范畴可以在相同的页里定义 也可以
在独立的页定义
还可以在下面定义的其中一个特殊范畴中定义
广州周立功单片机发展有限公司 Tel: (020)38730976 38730977 Fax:38730925 http://www.zlgmcu.com
- 5 -
斜体=表示在同一页定义和使用的句法范畴
特殊的语法范畴
MinTypMaxExpression 以 Expression 定义
UnsignedNumber 以 Number 定义
SomethingExpression=Expression
其中 Something 给出有关表达式的含意信息 例如
ConstantExpression ConstantMinTypMaxExpression
Verilog
的简单介绍
下面向不懂 Verilog 语言的读者在技术上简要介绍一下 Verilog
背景
Verilog 硬件描述语言
HDL 是描述电子电路行为和结构的一种语言 是一种 IEEE 标准 IEEE
Std.1364-1995
Verilog 用于模拟从随机和纯行为到门级和开关级的抽象范围等层次的数字电子电路功能
也用于从许
多抽象
寄存器传输级 描述合并 即自动产生 门级描述 Verilog 一般用于支持高层次的设计 或基于
语言的设计
其中电子设计在用自动合并工具进行详细设计前要通过高层次的完全抽象仿真来检验
Verilog 也广泛应用于 IC 的门级检验 包括仿真 故障仿真和定时检验
Verilog 最初是在 1984 年由 Gateway Design Automation 公司开发 Verilog-XL 仿真器的时候一起开发
出来
1989 年 Cadence Design Systems 公司并购 Gateway 公司 同时拥有对 Verilog 语言和 Verilog-XL
仿真器的权力
1990 年 Cadence 将 Verilog 语言 不是 Verilog-XL 放到公共领域 为了使 Verilog 语
言通过 IEEE 标准化过程
一个非赢利性组织 Open Verilog International OVI 将它不断推进 结果在 1995
年 Verilog 成为一个 IEEE 标准
此后 OVI 仍继续不断维护和开发这种语言
语言
在本部分和指南剩下的部分
以大写字母开头的斜体字都是技术术语 都可以在本指南的主体中找到
硬件设计的层次部分在 Verilog 中用模块
Module 描述 模块定义了硬件单元的接口 即输入和输
出
及其内部结构或行为
大量的原语或者门
Gates 都内置在 Verilog 语言内 它们表示基本的逻辑门 例如 and or 另
外
还可以定义用户定义的原语 User Defined Primitives UDPs
电子电路的结构通过在高层模块内对模块和原语
UDPs 和门 举实例 Instances 来描述 而且实
例之间通过线网
Nets 连接 线网表示一个电气连接 一条线路或总线 端口 Port 连接列表用于将
线网连接到模块的端口或者连接到原语的实例
其中一个端口表示一个管脚 寄存器 Registers 见下面
也可以连接到实例的输入端口 只能连接到输入端口
线网
和寄存器 的值由逻辑值 0 1 X 未知或未初始化的 和 Z 高阻或悬空 组成 除了逻辑
值外
线网还有强度 Strength 值 强度广泛地用于开关级模型以及解释网络有超过一个驱动器的情况
电子电路的行为是用 Initial 和 Aways 结构以及连续赋值
Continuous Assignments 描述 这些结构
以及 UDPs 和门表示设计的层次树的叶子
每个 Initial Always 连续赋值 UDP 和门实例相对于所有其
他结构是同时执行的
Initial 或 Always 内的语句 Statements 在很多方面上都和软件编程语言的语句相
似
它们在用定时控制 Timing Controls 规定的时间例如延迟以及用 仿真 事件控制触发执行 语句
在 Begin-End 块顺序地执行
在 Fork-Join 块并行地执行 连续赋值语句修改线网的值 Initial 和 Aways
修改寄存器的值
Initial 或 Always 可以分解成有给定变量的指定的任务 Tasks 和函数 Functions
Verilog 语言还有大量内置的系统任务 System Tasks 和函数 Functions 编程语言接口 Programming
Language Interface
PLI 是 Verilog 语言的一个组成部分 它提供了一种和调用系统任务和函数相同的
方法调用以 C 写的函数
评论0