第1章 绪论 1
1.1VHDL概述 1
1.1.1硬件描述语言的诞生 1
1.1.2 HDL语言的种类 2
1.1.3 VHDL语言的特点 3
1.1.4 VHDL语言的优势 4
1.2 VHDL语言设计环境 4
1.2.1设计工具 4
1.2.2仿真工具 6
1.3 VHDL语言设计实现 7
1.4 VHDL语言课程教学建议 9
1.4.1课时安排 9
1.4.2实验 9
1.5小结 11
1.6习题 11
第2章 VHDL语言的词法基础 12
2.1对象 12
2.1.1对象的声明与初始化 12
2.1.2常量 12
2.1.3变量 13
2.1.4信号 14
2.1.5文件 14
2.1.6对象的隐式创建 15
2.2词法元素 15
2.2.1数字 15
2.2.2字符、字符串及位串 16
2.2.3分隔符 17
2.2.4标识符和保留字 17
2.2.5注释 19
2.3数据类型 19
2.3.1类型与子类型 20
2.3.2标量类型 20
2.3.3复合类型 23
2.3.4存取类型 25
2.3.5文件类型 25
2.3.6隐含类型 25
2.3.7 IEEE标准类型 26
2.3.8类型转换 27
2.4运算操作符 28
2.4.1逻辑运算符 28
2.4.2关系运算符 29
2.4.3移位运算符 30
2.4.4并置运算符 31
2.4.5算术运算符 31
2.4.6状态运算符 31
2.4.7运算符的优先级 32
2.5小结 32
2.6习题 33
第3章VHDL语言的程序结构 34
3.1实体 35
3.1.1类型说明部分 36
3.1.2端口说明部分 36
3.1.3实体说明部分 38
3.1.4实体语句部分 38
3.2结构体 38
3.2.1结构体名 39
3.2.2结构体说明部分 39
3.2.3结构体语句 40
3.2.4进程语句 40
3.2.5模块语句 45
3.3子程序 49
3.3.1过程语句 49
3.3.2函数语句 51
3.3.3 RETURN语句 53
3.4 VHDL程序设计风格 54
3.4.1结构体的行为描述法 54
3.4.2结构体的数据流描述法 55
3.4.3结构体的结构化描述法 56
3.5小结 57
3.6习题 57
第4章 VHDL的语法基础 58
4.1并行语句与顺序语句 58
4.2变量赋值语句与信号代入语句 59
4.2.1变量赋值语句 60
4.2.2信号代入语句 61
4.3条件分支语句与循环语句 64
4.3.1 IF语句 64
4.3.2 CASE语句 67
4.3.3 LOOP语句 68
4.3.4 NULL语句 71
4.4元件与模块的复用 71
4.4.1元件声明与调用 71
4.4.2参数传递子句与参数映射 71
4.4.3 I/O端口子句与端口映射 73
4.4.4生成语句 74
4.5调试 77
4.5.1 REPORT语句 77
4.5.2断言语句 77
4.6小结 78
4.7习题 78
第5章 VHDL程序设计基础 79
5.1层次化设计方法 79
5.2元件库 79
5.2.1库的概念及语法 79
5.2.2库的分类 80
5.2.3构造元件 81
5.2.4程序打包 87
5.2.5构建元件库 88
5.2.6元件的调用 88
5.3配置 89
5.3.1默认连接和默认配置 90
5.3.2块配置 92
5.3.3元件的配置 94
5.3.4配置中的端口映射与参数传递 96
5.3.5多层配置 100
5.4可见性 100
5.4.1声明的可见性 100
5.4.2 USE语句 101
5.4.3变量共享 101
5.5重载 102
5.5.1函数重载 102
5.5.2运算符重载 105
5.6别名 106
5.7程序包 107
5.7.1程序包声明 108
5.7.2程序包体 109
5.7.3常用程序包 110
5.8文本I/O操作 116
5.8.1文本类型定义 116
5.8.2文件访问过程定义 117
5.8.3 TEXTIO程序包的语法 117
5.8.4 TEXTIO程序包的内容 118
5.8.5 TEXTIO程序包的调用 119
5.9小结 121
5.10习题 122
第6章 VHDL程序设计实践 123
6.1组合逻辑设计 123
6.1.1门电路 123
6.1.2编码器的设计 124
6.1.3译码器的设计 126
6.1.4加法器的设计 128
6.2时序逻辑电路设计 129
6.2.1时钟信号的VHDL描述方法 130
6.2.2时序电路中复位信号Reset的VHDL描述方法 132
6.3触发器的设计 133
6.3.1 D触发器 133
6.3.2带异步复位的D触发器 134
6.4寄存器的设计 136
6.4.1 8位通用寄存器 136
6.4.2串入/串出移位寄存器 136
6.5计数器的设计 138
6.5.1同步计数器 138
6.5.2可逆计数器 139
6.5.3具有数据加载和进位控制接口的同步计数器 140
6.6状态机的设计 142
6.6.1 Moore型状态机的设计 143
6.6.2状态机的建立过程 144
6.6.3状态机的复位 145
6.6.4状态机信号输出方法 150
6.6.5 Mealy型状态机的设计 155
6.6.6容错状态机的设计 155
6.7微处理器设计 157
6.7.1微处理器设计的任务 157
6.7.2精简指令集计算机 157
6.7.3 URISC处理器设计 160
6.7.4 4位微处理器设计 164
6.7.5构造微处理器基本元件 166
6.7.6 4位微处理器的顶层设计 174
6.8小结 175
6.9习题 176
第7章 VHDL仿真与测试 177
7.1概述 177
7.1.1 ModelSim的主要特点 177
7.1.2 ModelSim的操作步骤 179
7.1.3 ModelSim的操作实例 180
7.2用VHDL编写testbench 182
7.2.1简单的testbench 182
7.2.2八进制计数器测试平台设计 184
7.3激励信号 187
7.3.1具有独立激励源的testbench 188
7.3.2用TextIO输入激励信号 190
7.4用EDA工具生成testbench 194
7.5小结 196
7.6习题 196
第8章 VHDL标准程序接口 197
8.1VHPI概述 197
8.1.1 VH PI的应用 197
8.1.2 VHPI的功能 198
8.1.3 VHPI命名规则 199
8.1.4 VHPI句柄 199
8.2类继承层次和VHPI信息模型 200
8.2.1类继承层次 201
8.2.2 VHPI信息模型 201
8.3 VHPI访问函数 202
8.3.1信息访问函数 202
8.3.2属性访问函数 203
8.4 VH PI工具运行 204
8.4.1注册阶段 205
8.4.2分析阶段 208
8.4.3解释阶段 208
8.4.4初始化阶段 209
8.4.5仿真阶段 209
8.4.6保存阶段 209
8.4.7重启阶段 210
8.4.8重置阶段 210
8.4.9终止阶段 211
8.5 VHPI回调 211
8.5.1回调函数 212
8.5.2回调方法与回调属性 213
8.5.3回调原因 214
8.6 VHPI数值访问和更新 221
8.6.1数值结构和类型 221
8.6.2读取对象数值 224
8.6.3格式化 224
8.6.4更新对象值 225
8.6.5驱动事务调度 229
8.7 VHPI应用举例 230
8.7.1概述 230
8.7.2构建VHPI应用 230
8.7.3使用V HPI 231
8.7.4 VHPI实例 233
8.8小结 235
8.9习题 236
第9章 IP复用与SoC设计 237
9.1概述 237
9.2 IP模块的设计 238
9.2.1硬IP模块设计 239
9.2.2软IP模块设计 240
9.2.3 IP模块的封装 240
9.2.4 IP模块的复用 241
9.3 SoC芯片设计 242
9.3.1 SoC的设计基础 242
9.3.2 SoC的应用设计 244
9.3.3 SoC的芯片实现 244
9.3.4 SoC的芯片测试 245
9.4基于IP的SoC设计(1)——嵌入式微处理器系统 246
9.5基于IP的SoC设计(2)——网络多核处理器实现 255
9.6基于IP的SoC设计(3)——万兆网络收发器仿真 265
9.7小结 288
9.8习题 288
参考文献 289
附录A VHPI类的继承层次 290
附录B VHPI函数参考 294