第1章 EDA技术概述1
1.1 EDA技术及其发展历程1
1.2 EDA技术的特征和优势3
1.2.1 EDA技术的基本特征4
1.2.2 EDA技术的优势6
1.3 EDA设计的目标和流程7
1.3.1 EDA技术的实现目标8
1.3.2 EDA设计流程8
1.3.3 数字集成电路的设计9
1.3.4 模拟集成电路的设计10
1.4 EDA技术与ASIC设计11
1.4.1 ASIC的特点与分类11
1.4.2 ASIC的设计方法12
1.4.3 SoC设计15
1.5 硬件描述语言18
1.5.1 VHDL18
1.5.2 Verilog HDL19
1.5.3 AHDL19
1.5.4 Verilog HDL和VHDL的比较20
1.6 EDA设计工具20
1.6.1 EDA设计工具分类21
1.6.2 EDA公司与工具介绍22
习题125
第2章 可编程逻辑器件基础26
2.1 概述26
2.1.1 可编程逻辑器件发展历程26
2.1.2 可编程逻辑器件分类27
2.1.3 可编程逻辑器件的优势30
2.1.4 可编程逻辑器件的发展趋势30
2.2 PLD器件的基本结构32
2.2.1 基本结构32
2.2.2 电路符号33
2.2.3 PROM34
2.2.4 PLA35
2.2.5 PAL36
2.2.6 GAL37
2.3 CPLD/FPGA的结构特点39
2.3.1 Lattice公司的CPLD/FPGA39
2.3.2 Xilinx公司的CPLD/FPGA41
2.3.3 Altera和Actel公司的CPLD/FPGA44
2.3.4 CPLD和FPGA的异同45
2.4 可编程逻辑器件的基本资源45
2.4.1 功能单元46
2.4.2 输入-输出焊盘46
2.4.3 布线资源47
2.4.4 片内RAM49
2.5 可编程逻辑器件的编程工艺50
2.5.1 熔丝型开关50
2.5.2 反熔丝型开关51
2.5.3 浮栅编程器件51
2.5.4 基于SRAM的编程器件54
2.6 可编程逻辑器件的设计与开发54
2.6.1 CPLD/FPGA设计流程54
2.6.2 CPLD/FPGA开发工具57
2.6.3 CPLD/FPGA的应用选择59
2.7 可编程逻辑器件的测试技术61
2.7.1 边界扫描测试原理62
2.7.2 IEEE 1149.1标准62
2.7.3 边界扫描策略及相关工具66
习题266
第3章 典型FPGA/CPLD的结构与配置68
3.1 Stratix高端FPGA系列68
3.1.1 Stratix器件68
3.1.2 Stratix II器件71
3.2 Cyclone低成本FPGA系列74
3.2.1 Cyclone器件74
3.2.2 Cyclone II器件78
3.3 典型CPLD器件84
3.3.1 MAX II器件84
3.3.2 MAX 7000器件85
3.4 FPGA/CPLD的配置87
3.4.1 CPLD器件的配置88
3.4.2 FPGA器件的配置89
习题393
第4章 原理图与宏功能模块设计94
4.1 Quartus II原理图设计94
4.1.1 半加器原理图输入94
4.1.2 半加器编译97
4.1.3 半加器仿真99
4.1.4 全加器设计与仿真101
4.2 Quartus II的优化设置102
4.2.1 Settings设置102
4.2.2 分析与综合设置104
4.2.3 优化布局布线104
4.2.4 使用设计助手检查设计可靠性110
4.3 Quartus II的时序分析112
4.3.1 时序设置与分析112
4.3.2 时序逼近115
4.4 宏功能模块设计117
4.4.1 Megafunctions库117
4.4.2 Maxplus2库126
4.4.3 Primitives库127
习题4129
第5章 VHDL设计输入方式132
5.1 Quartus II的VHDL输入设计132
5.1.1 创建工程文件133
5.1.2 编译134
5.1.3 仿真136
5.2 Synplify Pro的VHDL输入设计137
5.2.1 用Synplify Pro综合的过程139
5.2.2 Synplify Pro与Quartus II的接口142
5.3 Synplify的VHDL输入设计143
习题5146
第6章 VHDL结构与要素147
6.1 实体147
6.1.1 类属参数说明148
6.1.2 端口说明149
6.1.3 实体描述举例150
6.2 结构体151
6.2.1 结构体的命名151
6.2.2 结构体信号定义语句152
6.2.3 结构体功能描述语句152
6.2.4 结构体描述方法152
6.3 VHDL库154
6.3.1 库的种类154
6.3.2 库的用法155
6.4 VHDL程序包157
6.4.1 程序包组成和格式157
6.4.2 VHDL标准程序包158
6.5 配置159
6.5.1 默认配置159
6.5.2 结构体的配置161
6.6 VHDL文字规则163
6.6.1 标志符163
6.6.2 数字164
6.6.3 字符串164
6.7 VHDL数据类型165
6.7.1 预定义数据类型165
6.7.2 自定义数据类型167
6.7.3 用户自定义的子类型169
6.7.4 数据类型的转换169
6.8 VHDL操作符171
6.8.1 逻辑操作符171
6.8.2 关系操作符171
6.8.3 算术操作符172
6.8.4 并置操作符173
6.8.5 操作符重载173
6.9 数据对象174
6.9.1 常量174
6.9.2 变量175
6.9.3 信号176
6.9.4 文件176
习题6177
第7章 VHDL基本语句与基本设计178
7.1 顺序语句178
7.1.1 赋值语句178
7.1.2 IF语句178
7.1.3 CASE语句181
7.1.4 LOOP语句182
7.1.5 NEXT语句184
7.1.6 EXIT语句184
7.1.7 WAIT语句185
7.1.8 子程序调用语句186
7.2 并行语句188
7.2.1 并行信号赋值语句188
7.2.2 进程语句191
7.2.3 并行过程调用语句192
7.2.4 元器件例化语句193
7.2.5 生成语句195
7.3 VHDL组合逻辑电路设计198
7.4 VHDL时序逻辑电路设计204
7.4.1 触发器204
7.4.2 寄存器206
7.4.3 计数器207
7.4.4 分频器208
习题7211
第8章 VHDL设计进阶212
8.1 VHDL行为描述方式212
8.2 VHDL结构化描述方式214
8.3 VHDL RTL描述方式217
8.4 有限状态机(FSM)设计218
8.4.1 Moore和Mealy状态机的选择218
8.4.2 有限状态机的描述方式220
8.4.3 有限状态机的同步和复位228
8.4.4 改进的Moore型有限状态机234
8.4.5 小结239
习题8240
第9章 数字接口实例及分析242
9.1 ST-BUS总线接口设计242
9.1.1 ST-BUS总线时序关系242
9.1.2 ST-BUS总线接口实例244
9.2 数字复接分接接口技术及设计248
9.2.1 数字复接分接接口技术原理249
9.2.2 同步数字复接分接接口设计实例250
9.3 I2C接口设计256
9.3.1 I2C总线工作原理257
9.3.2 I2C总线接口设计实例259
9.4 GMSK基带调制接口设计265
9.4.1 GMSK调制基本原理265
9.4.2 GMSK调制实现的基本方法267
9.4.3 GMSK基带调制接口的实现代码268
习题9286
第10章 通信算法实例及分析287
10.1 伪随机序列的产生、检测设计287
10.1.1 m序列的产生287
10.1.2 m序列的性质288
10.1.3 m序列发生器的VHDL设计288
10.1.4 m序列检测电路的VHDL设计290
10.2 比特同步设计294
10.2.1 锁相功能的自同步法原理294
10.2.2 锁相比特同步的EDA实现方法296
10.3 基带差分编码设计305
10.3.1 PSK调制和差分编码原理305
10.3.2 PSK差分编码设计308
10.4 FIR滤波器设计314
10.4.1 FIR滤波器简介314
10.4.2 使用MATLAB设计FIR滤波器316
10.4.3 FIR滤波器的FPGA普通设计317
10.4.4 FIR滤波器的并行FPGA优化设计319
习题10326
参考文献327