目 录
第1章 绪论 1
1.1 VHDL概述 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.1 VHPI概述 197
8.1.1 VHPI的应用 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 VHPI工具运行 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 使用VHPI 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
·IV·
·IX·