第1章 EDA技术概述 1
1.1 EDA技术及其发展 1
1.2 Top-down设计与IP核复用 4
1.2.1 Top-down设计 4
1.2.2 Bottom-up设计 5
1.2.3 IP复用技术与SoC 5
1.3 数字设计的流程 7
1.3.1 设计输入 8
1.3.2 综合 9
1.3.3 布局布线 9
1.3.4 仿真 10
1.3.5 编程配置 10
1.4 常用的EDA软件工具 10
1.5 EDA技术的发展趋势 14
习题1 15
第2章 FPGA/CPLD器件 16
2.1 PLD器件概述 16
2.1.1 PLD器件的发展历程 16
2.1.2 PLD器件的分类 17
2.2 PLD的基本原理与结构 19
2.2.1 PLD器件的基本结构 19
2.2.2 PLD电路的表示方法 20
2.3 低密度PLD的原理与结构 21
2.4 CPLD的原理与结构 26
2.4.1 宏单元结构 26
2.4.2 典型CPLD的结构 27
2.5 FPGA的原理与结构 30
2.5.1 查找表结构 30
2.5.2 典型FPGA的结构 32
2.6 FPGA/CPLD的编程元件 37
2.7 边界扫描测试技术 41
2.8 FPGA/CPLD的编程与配置 43
2.8.1 在系统可编程 43
2.8.2 CPLD器件的编程 44
2.8.3 FPGA器件的配置 44
2.9 FPGA/CPLD器件概述 50
2.10 FPGA/CPLD的发展趋势 54
习题2 55
第3章 Quartus Ⅱ集成开发工具 56
3.1 Quartus Ⅱ原理图设计 56
3.1.1 半加器原理图设计输入 56
3.1.2 编译与仿真 60
3.1.3 1位全加器编译与仿真 64
3.2 Quartus Ⅱ的优化设置 65
3.2.1 分析与综合设置 65
3.2.2 优化布局布线 67
3.2.3 设计可靠性检查 72
3.3 Quartus Ⅱ的时序分析 74
3.3.1 时序设置与分析 74
3.3.2 时序逼近 75
3.4 基于宏功能模块的设计 78
3.4.1 乘法器模块 78
3.4.2 除法器模块 81
3.4.3 计数器模块 83
3.4.4 常数模块 85
3.4.5 锁相环模块 86
3.4.6 存储器模块 90
3.4.7 其他模块 94
习题3 97
第4章 VHDL设计初步 102
4.1 VHDL简介 102
4.2 VHDL组合电路设计 103
4.2.1 用VHDL设计基本组合电路 103
4.2.2 用VHDL设计加法器 105
4.3 VHDL时序电路设计 107
4.3.1 用VHDL设计D触发器 107
4.3.2 用VHDL设计计数器 110
4.4 Synplify Pro综合器 114
4.5 Synplify综合器 119
习题4 121
第5章 VHDL结构与要素 122
5.1 实体 122
5.1.1 类属参数说明 122
5.1.2 端口说明 124
5.2 结构体 124
5.3 VHDL库和程序包 125
5.3.1 库 125
5.3.2 程序包 128
5.4 配置 129
5.5 子程序 133
5.5.1 过程(PROCEDURE) 133
5.5.2 函数(FUNCTION) 135
5.6 VHDL文字规则 137
5.6.1 标识符 137
5.6.2 数字 138
5.6.3 字符串 139
5.7 数据对象 139
5.7.1 常量 140
5.7.2 变量 140
5.7.3 信号 141
5.7.4 文件 141
5.8 VHDL数据类型 142
5.8.1 预定义数据类型 143
5.8.2 用户自定义数据类型 146
5.8.3 数据类型的转换 149
5.9 VHDL运算符 151
5.9.1 逻辑运算符 151
5.9.2 关系运算符 152
5.9.3 算术运算符 152
5.9.4 并置运算符 153
5.9.5 运算符重载 154
习题5 155
第6章 VHDL基本语句 156
6.1 顺序语句 156
6.1.1 赋值语句 156
6.1.2 IF语句 156
6.1.3 CASE语句 163
6.1.4 LOOP语句 165
6.1.5 NEXT与EXIT语句 168
6.1.6 WAIT语句 169
6.1.7 子程序调用语句 170
6.1.8 断言语句 170
6.1.9 REPORT语句 171
6.1.10 NULL语句 172
6.2 并行语句 173
6.2.1 并行信号赋值语句 173
6.2.2 进程语句 178
6.2.3 块语句 181
6.2.4 元件例化语句 182
6.2.5 生成语句 184
6.2.6 并行过程调用语句 187
6.3 属性说明与定义语句 188
6.3.1 数据类型属性 188
6.3.2 数组属性 189
6.3.3 信号属性 190
习题6 190
第7章 VHDL设计进阶 192
7.1 行为描述 192
7.2 数据流描述 193
7.3 结构描述 194
7.3.1 用结构描述设计1位全加器 195
7.3.2 用结构描述设计4位加法器 197
7.3.3 用结构描述设计8位加法器 197
7.4 三态逻辑设计 199
7.5 RAM存储器设计 202
7.6 分频器设计 205
7.6.1 占空比为50%的奇数分频 205
7.6.2 半整数分频 207
7.6.3 数控分频器 209
7.7 数字跑表 210
7.8 音乐演奏电路 216
7.8.1 音乐演奏实现的方法 216
7.8.2 实现与下载 217
习题7 221
第8章 有限状态机设计 222
8.1 有限状态机 222
8.1.1 有限状态机的描述 222
8.1.2 枚举数据类型 225
8.2 有限状态机的描述方式 226
8.2.1 三进程表述方式 227
8.2.2 双进程表述方式 228
8.2.3 单进程表述方式 231
8.3 状态编码 234
8.3.1 常用的编码方式 234
8.3.2 用常量进行编码 235
8.4 有限状态机设计要点 237
8.4.1 起始状态的选择和复位 237
8.4.2 多余状态的处理 239
8.5 用状态机设计流水灯 240
8.6 状态机A/D采样控制电路 242
习题8 244
第9章 VHDL数字设计与优化 246
9.1 流水线设计技术 246
9.2 资源共享 249
9.3 字符液晶显示控制 253
9.3.1 字符液晶H1602B 254
9.3.2 用状态机实现字符显示控制 257
9.4 VGA图像显示控制器设计 262
9.4.1 DE2-70平台的VGA显示电路 262
9.4.2 VGA图像显示原理与时序 263
9.4.3 VGA图像显示实现 266
9.5 FIFO缓存器设计 271
9.5.1 用参数化模块库定制FIFO 272
9.5.2 用VHDL描述FIFO 273
9.6 异步串行接口(UART)设计 275
9.6.1 UART传输协议 276
9.6.2 UART接口设计 277
习题9 284
第10章 VHDL数字电路的仿真 286
10.1 VHDL仿真概述 286
10.2 VHDL测试平台 287
10.2.1 用VHDL描述仿真激励信号 287
10.2.2 用TEXTIO进行仿真 290
10.3 ModelSim仿真概述 294
10.4 ModelSim仿真实例 296
10.4.1 图形界面仿真方式 297
10.4.2 命令行仿真方式 299
习题10 300
第11章 DSP Builder设计初步 301
11.1 DSP Builder设计流程 301
11.2 DSF Builder设计示例 302
11.2.1 新建一个模型 302
11.2.2 在Simulink中仿真模型 308
11.2.3 编译模型 310
11.2.4 RTL级仿真 311
11.2.5 将DSP Builder模型加入设计工程 313
11.3 建立DSP Builder子系统 315
11.3.1 建立Simulink Subsystem子系统 315
11.3.2 建立HDL子系统示例 316
11.4 基于DSP Builder的数字AGC设计 320
11.4.1 数字AGC的原理与设计思想 320
11.4.2 数字AGC的DSP Builder设计实现 321
11.5 硬件在回路(HIL)仿真 324
习题11 326
第12章 VHDL通信与接口设计实例 327
12.1 m序列发生器 327
12.1.1 m序列的原理与性质 327
12.1.2 用原理图方式设计m序列 329
12.1.3 用VHDL设计m序列 330
12.2 Gold码 332
12.2.1 Gold码的原理与性质 332
12.2.2 用原理图方式设计Gold码 333
12.2.3 用VHDL设计Gold码 334
12.3 FSK解调 335
12.3.1 FSK解调的原理 335
12.3.2 2FSK解调的实现 336
12.4 数字过零检测法和等精度频率测量 338
12.4.1 数字过零检测法 339
12.4.2 等精度频率测量 341
12.5 I2C总线接口设计 343
12.5.1 I2C总线原理 343
12.5.2 I2C总线设计实现 345
习题12 349
附录A VHDL关键字 350
附录B VHDL程序包 351
附录C DE2-70系统介绍 357
附录D DE2系统介绍 365
附录E 有关术语与缩略语 372
参考文献 377