第1章 绪论 1
1.1 EDA技术的含义 1
1.2 EDA技术发展历程 1
1.2.1 20世纪70年代的计算机辅助设计CAD阶段 1
1.2.2 20世纪80年代的计算机辅助工程设计CAE阶段 2
1.2.3 20世纪90年代电子系统设计自动化EDA阶段 2
1.3 EDA技术的主要内容 3
1.3.1 大规模可编程逻辑器件 3
1.3.2 硬件描述语言(HDL) 4
1.3.3 软件开发工具 4
1.3.4 实验开发系统 5
1.3.5 关于EDA技术的学习重点及学习方法 5
1.4 EDA软件系统的构成 6
1.5 EDA工程设计流程 7
1.5.1 设计输入 7
1.5.2 逻辑综合和优化 8
1.5.3 目标器件的布线/适配 9
1.5.4 设计过程中的有关仿真 9
1.5.5 目标器件的编程/下载 10
1.5.6 硬件仿真/硬件测试 10
1.6 数字系统的设计方法简介 10
1.7 数字系统的设计准则 11
1.8 EDA技术的应用展望 12
1.9 本章小结 13
1.10 思考和练习 13
第2章 大规模可编程逻辑器件 14
2.1 可编程逻辑器件概述 14
2.1.1 PLD的发展进程 14
2.1.2 PLD介绍 15
2.1.3 可编程逻辑器件的结构和分类 17
2.1.4 CPLD/FPGA相对于MCU的优势 19
2.2 CPLD的结构与工作原理 20
2.2.1 CPLD的基本结构 20
2.2.2 Altera公司的器件产品 26
2.3 现场可编程门阵列FPGA 40
2.3.1 Xilinx Virtex系列器件性能特点 40
2.3.2 FPGA器件的结构描述 40
2.3.3 Xilinx公司的XC4000系列FPGA简介 42
2.3.4 XC5000系列的LCA结构 45
2.3.5 Xilinx公司XC6200、XC8100系列FPGA简介 48
2.4 FPGA的配置模式 49
2.4.1 主动串行配置模式 50
2.4.2 主动并行配置模式 50
2.4.3 外设配置模式 51
2.4.4 从动串行配置模式 52
2.4.5 菊花链配置模式 52
2.4.6 FPGA的配置流程 53
2.4.7 FPGA标识说明 54
2.5 FPGA和CPLD的开发应用选择 55
2.6 本章小结 59
2.7 思考和练习 59
第3章 硬件描述语言VHDL的语法结构及编程 60
3.1 概述 60
3.1.1 什么是VHDL及VHDL语言的发展历史 60
3.1.2 VHDL的作用 61
3.1.3 VHDL语言特点 61
3.1.4 VHDL与其他硬件描述语言的比较 61
3.1.5 VHDL的优点 62
3.1.6 VHDL程序设计约定 63
3.2 VHDL程序基本结构 63
3.2.1 VHDL设计简述 64
3.2.2 结构体(ARCHITECTURE) 67
3.2.3 配置(CONFIGURATION) 69
3.2.4 库、程序包 72
3.3 VHDL语言要素 78
3.3.1 VHDL文字规则 78
3.3.2 VHDL数据对象 80
3.3.3 VHDL数据类型 83
3.3.4 VHDL操作符 94
3.4 VHDL顺序语句 98
3.4.1 对象与赋值语句 99
3.4.2 转向控制语句 101
3.4.3 WAIT语句 112
3.4.4 子程序调用语句 114
3.4.5 返回语句(RETURN) 116
3.4.6 空操作语句(NULL) 117
3.4.7 其他语句和说明 118
3.5 VHDL并行语句 125
3.5.1 进程语句 127
3.5.2 块语句 132
3.5.3 并行信号赋值语句 135
3.5.4 并行过程调用语句 137
3.5.5 VHDL的层次化设计与元件声明(COMPONENT) 139
3.5.6 元件例化语句 140
3.5.7 生成语句 142
3.6 子程序(SUBPROGRAM) 148
3.6.1 子程序声明 148
3.6.2 子程序主体 149
3.6.3 重载函数 151
3.7 VHDL描述风格 153
3.7.1 行为描述 153
3.7.2 数据流描述 154
3.7.3 结构化描述 155
3.8 本章小结 156
3.9 思考和练习 156
第4章 常用EDA工具软件操作指南 158
4.1 MAX+PLUSⅡ软件的安装 158
4.1.1 概述 158
4.1.2 常用的设计输入方法 159
4.1.3 MAX+PLUSⅡ的特点 159
4.1.4 MAX+PLUSⅡ安装 160
4.1.5 MAX+PLUSⅡ软件组成 162
4.1.6 MAX+PLUSⅡ的编辑规则 164
4.2 MAX+PLUSⅡ操作指南 165
4.2.1 原理图编辑工具 165
4.2.2 MAX+PLUSⅡ原理图编辑流程 165
4.2.3 其他设计输入方法 170
4.2.4 设计项目的处理 170
4.2.5 设计项目的校验 174
4.2.6 器件编程 179
4.3 MAX+PLUSⅡ操作实例 182
4.3.1 源文件的编辑 182
4.3.2 系统的编译、综合和适配 185
4.3.3 系统的有关仿真 186
4.3.4 系统的编程下载 189
4.4 利用LPM兆功能块的电路设计 190
4.4.1 常用LPM兆功能块 190
4.4.2 基于LPM_COUNTER的数据分频器设计 193
4.5 本章小结 194
4.6 思考和练习 194
第5章 基本逻辑电路设计 195
5.1 组合逻辑电路设计 195
5.1.1 基本门电路 195
5.1.2 三态门及总线缓冲器 200
5.1.3 单向总线驱动器 201
5.1.4 双向总线缓冲器 201
5.2 时序逻辑电路设计 202
5.2.1 时序电路特殊信号描述 202
5.2.2 常用时序电路设计 204
5.2.3 寄存器和移位寄存器 207
5.2.4 计数器 209
5.2.5 序列信号发生器、检测器 216
5.3 存储器设计 220
5.3.1 只读存储器ROM 220
5.3.2 静态数据存储器SRAM 221
5.3.3 先进先出堆栈FIFO 223
5.4 状态机的VHDL设计 226
5.4.1 状态机概述 226
5.4.2 状态机的特点 226
5.4.3 状态机的基本结构和功能 227
5.4.4 一般状态机的VHDL描述 228
5.4.5 摩尔状态机的设计 231
5.4.6 米勒状态机的VHDL设计 233
5.4.7 ONE-HOT状态机 235
5.5 本章小结 236
5.6 思考和练习 236
第6章 CPLD/FPGA在数字系统中的应用 237
6.1 正负脉宽数控调制信号发生器的设计 237
6.1.1 设计思路 237
6.1.2 VHDL源程序 238
6.1.3 仿真结果 239
6.2 智能函数发生器的设计 239
6.2.1 智能函数发生器的设计思路 239
6.2.2 模块及模块功能 240
6.3 序列检测器的设计 247
6.3.1 序列检测器设计思路 247
6.3.2 VHDL源程序 247
6.3.3 仿真结果 248
6.4 数字频率计的设计 248
6.4.1 数字频率计设计思路 248
6.4.2 数字频率计的VHDL源程序 250
6.5 数字秒表的设计 254
6.5.1 数字秒表设计思路 254
6.5.2 数字秒表的VHDL源程序 254
6.6 交通信号控制器的设计 258
6.6.1 交通信号控制器设计思路 258
6.6.2 VHDL源程序 259
6.6.3 系统的有关仿真 266
6.6.4 系统的硬件验证 266
6.6.5 设计技巧分析 266
6.7 三层电梯控制器的设计 267
6.7.1 三层电梯控制器的功能 267
6.7.2 三层电梯控制器的设计思路 267
6.7.3 三层电梯控制器的综合设计 268
6.7.4 三层电梯控制器的波形仿真分析 273
6.7.5 N层电梯控制器的设计技巧分析 274
6.8 本章小结 274
6.9 思考和练习 274
第7章 FPGA在通信工程中的实践应用 276
7.1 二进制振幅键控(ASK)调制器与解调器设计 276
7.1.1 ASK信号调制原理 276
7.1.2 ASK信号解调原理 277
7.1.3 ASK调制VHDL程序 278
7.1.4 ASK解调VHDL程序 280
7.2 二进制频移键控(FSK)调制器与解调器设计 281
7.2.1 FSK信号调制原理 281
7.2.2 FSK信号解调原理 282
7.2.3 FSK调制VHDL程序及仿真 283
7.2.4 FSK解调VHDL程序及仿真 284
7.3 二进制相位键控(PSK)调制器与解调器设计 286
7.3.1 基本概念 286
7.3.2 CPSK信号调制 288
7.3.3 DPSK信号调制 290
7.3.4 DPSK信号解调 290
7.3.5 DPSK调制方框图及电路符号 291
7.4 UART接口设计 293
7.4.1 UART概述 293
7.4.2 UART系统FPGA接口电路 294
7.4.3 UART系统FPGA程序设计 294
7.5 本章小结 294
7.6 思考和练习 295
第8章 FPGA在DSP领域中的应用 296
8.1 快速加法器的设计 296
8.1.1 4位二进制并行加法器 296
8.1.2 8位二进制加法器的源程序 297
8.2 快速乘法器的设计 299
8.2.1 设计思路 299
8.2.2 快速乘法器VHDL源程序 300
8.3 数字滤波器的设计 305
8.3.1 数字滤波器概述 305
8.3.2 数字滤波器的原理分析 305
8.3.3 数字滤波器系统实现 306
8.3.4 数字滤波器系统原理框图 307
8.3.5 数字滤波器顶层IIR模块 307
8.3.6 数字滤波器的VHDL语言程序 308
8.3.7 数字滤波器系统性能测试 309
8.4 本章小结 310
8.5 思考和练习 310
第9章 FPGA在微机工程中的实践应用 312
9.1 键盘接口设计 312
9.1.1 键盘工作原理 312
9.1.2 矩阵式按键概述 313
9.1.3 矩阵式按键FPGA描述 315
9.2 LED驱动器设计 321
9.2.1 LED数码管工作原理 321
9.2.2 静态LED数码管驱动原理及其FPGA电路设计 322
9.2.3 动态LED数码管驱动原理及其FPGA电路设计 323
9.3 D/A接口设计 327
9.3.1 D/A转换器概述 327
9.3.2 典型D/A转换器芯片DAC0832 328
9.3.3 FPGA与DAC0832接口电路原理图 329
9.3.4 DAC0832接口电路时序 330
9.3.5 DAC0832接口电路程序 330
9.4 A/D接口设计 331
9.4.1 A/D转换器概述 331
9.4.2 典型A/D转换器芯片ADC0809 331
9.4.3 A/D接口设计 333
9.4.4 ADC0809 VHDL采样控制程序设计 334
9.5 本章小结 337
9.6 思考和练习 337
第10章 CPLD/FPGA实验 338
10.1 实验要求 338
10.1.1 概述 338
10.1.2 实验报告的撰写 338
10.2 实验内容 339
10.2.1 实验一:简单逻辑电路设计与仿真 339
10.2.2 实验二:全加器设计、仿真与下载 341
10.2.3 实验三:分频电路与12归1电路设计 343
10.2.4 实验四:利用硬件描述语言进行数字钟设计 344
10.2.5 实验五:串行扫描显示电路设计 345
10.2.6 实验六:复杂数字钟设计与扫描显示 346
10.2.7 实验七:智力竞赛抢答器的设计 346
10.2.8 实验八:数字频率计的设计 347
10.2.9 实验九:交通灯信号控制器的设计 348
附录A VHDL程序设计的语法结构 349
附录B 利用WWW进行EDA资源的检索 354
主要参考文献 356