第1章 VHDL语言概述 1
1.1 硬件描述语言(HDL) 1
1.1.1 HDL语言的产生 1
目录 1
1.1.2 HDL语言的种类 2
1.1.3 VHDL语言的发展历史 3
1.2 VHDL语言的特点 3
1.2.1 VHDL语言的优点 3
1.2.2 VHDL语言的缺点 4
1.3 VHDL语言的开发流程 5
1.3.1 VHDL语言的开发流程图 5
1.3.2 VHDL语言的开发步骤 5
本章小结 7
习题1 7
2.1.1 常量 8
第2章 VHDL语言程序的元素 8
2.1 VHDL语言的对象 8
2.1.2 信号 9
2.1.3 变量 10
2.1.4 文件 10
2.1.5 信号和变量的区别 11
2.2 VHDL语言的数据类型 13
2.2.1 标准定义的数据类型 13
2.2.2 用户定义的数据类型 15
2.2.3 VHDL语言程序中常用的数据类型 22
2.3 VHDL语言的运算符 23
2.3.1 逻辑运算符 23
2.3.2 算术运算符 24
2.3.3 关系运算符 25
2.3.4 并置运算符 26
2.4 VHDL语言的标识符 27
2.4.1 短标识符 27
2.3.5 各个运算符的优先级 27
2.4.2 扩展标识符 28
2.5 VHDL语言的词法单元 28
2.5.1 注释 28
2.5.2 数字 29
2.5.3 字符和字符串 29
2.5.4 位串 29
本章小结 30
习题2 30
第3章 VHDL语言程序的结构 32
3.1 VHDL语言程序的结构组成 32
3.1.1 库 32
3.1.3 实体说明 33
3.1.2 程序包 33
3.1.4 结构体 34
3.1.5 配置 34
3.2 实体说明 36
3.2.1 类属参数说明 36
3.2.2 端口说明 38
3.2.3 实体说明 39
3.3 结构体 39
3.3.1 结构体的书写格式 39
3.3.2 结构体的3种描述方式 41
3.4 库 46
3.4.1 库的概念及使用 46
3.4.2 常见的库 47
3.5 程序包 49
3.5.1 程序包的书写结构 49
3.5.2 常见的程序包 50
本章小结 51
习题3 52
第4章 VHDL语言结构体的子结构 53
4.1 块语句 53
4.1.1 块语句的书写结构 53
4.1.2 块语句的保护 54
4.1.3 块语句的一个完整实例 55
4.1.4 块语句的嵌套 57
4.2 进程语句 58
4.2.1 进程语句的书写结构 59
4.2.2 进程语句的启动 60
4.2.3 进程语句的同步 60
4.3 子程序1——过程 62
4.3.1 过程的书写结构 63
4.3.2 过程在不同位置的定义 65
4.3.3 过程调用 66
4.4 子程序2——函数 67
4.4.1 函数的书写结构 67
4.4.2 函数在不同位置的定义 69
4.4.3 函数的调用 70
4.5 VHDL语言中的重载 72
4.5.1 重载的概念 72
4.5.2 子程序重载的两种方式 72
4.5.3 运算符重载 77
本章小结 79
习题4 80
第5章 VHDL语言的顺序描述语句 81
5.1 信号赋值语句和变量赋值语句 81
5.2.1 WAIT ON语句 83
5.2 WAIT语句 83
5.2.2 WAIT UNTIL语句 84
5.2.3 WAIT FOR语句 85
5.2.4 超时等待的处理 87
5.3 IF语句 89
5.3.1 IF语句的书写结构 89
5.3.2 IF_THEN语句 89
5.3.3 IF_THEN_ELSE语句 90
5.3.4 IF_THEN_ELSIF ELSE语句 91
5.4 CASE语句 92
5.5 LOOP语句 94
5.5.1 FOR LOOP语句 94
5.5.2 WHILE LOOP语句 96
5.6 跳出循环的语句 97
5.7 RETURN语句 98
5.8 NULL语句 99
5.9 顺序断言语句 100
5.10 REPORT语句 101
本章小结 102
习题5 103
第6章 VHDL语言的并行描述语句 104
6.1 进程语句 104
6.2 并行信号赋值语句 107
6.2.1 并发信号赋值语句 107
6.2.2 条件信号赋值语句 109
6.2.3 选择信号赋值语句 111
6.3 并行断言语句 112
6.4 参数传递语句 113
6.5 元件例化语句 115
6.6 生成语句 118
6.6.1 FOR_GENERATE语句 118
6.6.2 IF_GENERATE语句 120
本章小结 122
习题6 123
第7章 VHDL语言的预定义属性 124
7.1 值类属性 124
7.1.1 常用数据类型的值类属性 124
7.1.2 数组的值类属性 125
7.1.3 块的值类属性 126
7.2 函数类属性 127
7.2.1 数据类型属性函数 128
7.2.2 数组属性函数 128
7.2.3 信号属性函数 130
7.3 信号类属性 132
7.3.1 属性′delayed[(t)] 132
7.3.2 属性′stable[(t)] 134
7.4 数据类型类属性 136
7.5 数据范围类属性 137
本章小结 138
习题7 139
第8章 VHDL语言的配置 140
8.1 默认连接和默认配置 140
8.1.1 默认连接 140
8.1.2 默认配置 141
8.2 元件配置 143
8.2.1 元件的低层配置 144
8.2.2 元件的实体-结构体对配置 145
8.3 块的配置 146
8.3.1 块的低层配置 146
8.3.2 块的实体-结构体对配置 148
8.4 结构体的配置 149
习题8 150
本章小结 150
9.1 基本门电路 152
9.1.1 二输入与门电路 152
第9章 组合电路的VHDL语言程序设计 152
9.1.2 其他简单门电路 154
9.1.3 多输入简单门电路 155
9.1.4 三态门电路 157
9.1.5 总线缓冲器 158
9.2 编码器 160
9.2.1 普通编码器 160
9.2.2 优先编码器 161
9.3 译码器 164
9.3.1 变量译码器 164
9.3.2 码制变换译码器 165
9.4 选择器 167
9.5.1 通用加法器 168
9.5 运算器 168
9.5.2 比较器 170
本章小结 171
习题9 172
第10章 时序电路的VHDL语言程序设计 173
10.1 触发器 173
10.1.1 D触发器 173
10.1.2 JK触发器 179
10.1.3 T触发器 180
10.1.4 锁存器 181
10.2 寄存器和移位寄存器 183
10.2.1 寄存器 183
10.2.2 串入/串出移位寄存器 185
10.2.3 串入/并出移位寄存器 186
10.2.4 循环移位寄存器 188
10.3 计数器 190
10.3.1 计数器简介 190
10.3.2 二进制同步计数器 190
10.3.3 同步可逆计数器 192
10.3.4 异步计数器 194
本章小结 196
习题10 196
第11章 有限状态机 197
11.1 有限状态机的基本概念 197
11.2 有限状态机的基本描述 199
11.2.1 有限状态机的描述方式 199
11.2.2 一个Moore型有限状态机的设计实例 200
11.3 有限状态机的同步和复位 210
11.3.1 输出信号的同步 210
11.3.2 有限状态机的同步复位 212
11.3.3 有限状态机的异步复位 215
11.4 改进的Moore型有限状态机 217
11.4.1 状态作为输出信号 217
11.4.2 并行输出寄存器的译码输出 220
本章小结 223
习题11 224
第12章 应用实例——数字密码引爆器的设计 225
12.1 数字密码引爆器的具体功能 225
12.2 顶层模块的VHDL语言程序 226
12.2.1 顶层实体说明的VHDL语言程序 227
12.2.2 顶层结构体的设计及其VHDL语言程序 228
12.3 底层模块的分析及其VHDL语言程序 235
12.3.1 输入消抖同步电路 235
12.3.2 编码电路 237
12.3.4 预置密码电路 239
12.3.3 比较电路 239
12.3.5 计数器选择电路 240
12.3.6 控制指示灯电路 241
12.3.7 分频电路 242
12.3.8 七段显示译码电路 245
12.3.9 其他简单电路 247
12.4 控制器模块的分析及其VHDL语言程序 248
本章小结 253
习题12 254
第13章 应用实例——微处理器的设计 287
第14章 XILINX ISE 5.1i的使用入门 287
14.1 XILINX ISE5.1i简介 287
14.2 XILINX ISE5.1i的入门 288
14.2.1 运行ISE5.1i开发系统 288
14.2.3 HDL方式的源代码输入 289
14.2.2 创建新的工程 289
14.2.4 HDL方式的源代码综合 293
14.2.5 源代码的Implement Design和下载文件生成 303
14.3 ISE5.1i的原理图设计输入 304
14.3.1 建立一个原理图输入文件 304
14.3.2 例化计数器模块 305
14.3.3 原理图中的连线操作 306
14.3.4 添加网络名 307
14.3.5 添加输入/输出管脚标记 309
本章小结 310
习题14 311
附录1 保留字 312
附录2 标准程序包 313
附录3 一些有用的网址 336
参考文献 337