第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 VHDL 18
1.5.2 Verilog HDL 19
1.5.3 AHDL 19
1.5.4 Verilog HDL和VHDL的比较 20
1.6 EDA设计工具 20
1.6.1 EDA设计工具分类 21
1.6.2 EDA公司与工具介绍 22
习题1 25
第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 PROM 34
2.2.4 PLA 35
2.2.5 PAL 36
2.2.6 GAL 37
2.3 CPLD/FPGA的结构特点 38
2.3.1 Lattice公司的CPLD/FPGA 39
2.3.2 Xilinx公司的CPLD/FPGA 41
2.3.3 Altera和Actel公司的CPLD/FPGA 43
2.3.4 CPLD和FPGA的异同 44
2.4 可编程逻辑器件的基本资源 45
2.4.1 功能单元 45
2.4.2 输入-输出焊盘 46
2.4.3 布线资源 47
2.4.4 片内RAM 48
2.5 可编程逻辑器件的编程工艺 49
2.5.1 熔丝型开关 50
2.5.2 反熔丝型开关 50
2.5.3 浮栅编程器件 51
2.5.4 基于SRAM的编程器件 53
2.6 可编程逻辑器件的设计与开发 54
2.6.1 CPLD/FPGA设计流程 54
2.6.2 CPLD/FPGA开发工具 56
2.6.3 CPLD/FPGA的应用选择 58
2.7 可编程逻辑器件的测试技术 61
2.7.1 边界扫描测试原理 61
2.7.2 IEEE 1149.1 标准 62
2.7.3 边界扫描策略及相关工具 65
习题2 66
第3章 典型FPGA/CPLD的结构与配置 67
3.1 Stratix高端FPGA系列 67
3.1.1 Stratix器件 67
3.1.2 Stratix Ⅱ器件 70
3.2 Cyclone低成本FPGA系列 73
3.2.1 Cyclone器件 73
3.2.2 Cyclone Ⅱ器件 77
3.3 典型CPLD器件 83
3.3.1 MAX Ⅱ器件 83
3.3.2 MAX 7000器件 84
3.4 FPGA/CPLD的配置 86
3.4.1 CPLD器件的配置 87
3.4.2 FPGA器件的配置 88
习题3 92
第4章 原理图与宏功能模块设计 93
4.1 Quartus H原理图设计 93
4.1.1 半加器原理图输入 93
4.1.2 半加器编译 96
4.1.3 半加器仿真 98
4.1.4 全加器设计与仿真 100
4.2 Quartus Ⅱ的优化设置 101
4.2.1 Settings设置 101
4.2.2 分析与综合设置 103
4.2.3 优化布局布线 103
4.2.4 使用设计助手检查设计可靠性 109
4.3 Quartus Ⅱ的时序分析 111
4.3.1 时序设置与分析 111
4.3.2 时序逼近 114
4.4 宏功能模块设计 116
4.4.1 Megafunctions库 116
4.4.2 Maxplus2库 125
4.4.3 Primitives库 126
习题4 128
第5章 VHDL设计输入方式 131
5.1 Quartus Ⅱ的VHDL输入设计 131
5.1.1 创建工程文件 132
5.1.2 编译 133
5.1.3 仿真 134
5.2 Synplify Pro的VHDL输入设计 136
5.2.1 用Synplify Pro综合的过程 137
5.2.2 Synplify Pro与Quartus Ⅱ的接口 141
5.3 Synplify的VHDL输入设计 141
习题5 144
第6章 VHDL结构与要素 145
6.1 实体 145
6.1.1 类属参数说明 146
6.1.2 端口说明 147
6.1.3 实体描述举例 148
6.2 结构体 149
6.2.1 结构体的命名 149
6.2.2 结构体信号定义语句 150
6.2.3 结构体功能描述语句 150
6.2.4 结构体描述方法 150
6.3 VHDL库 152
6.3.1 库的种类 152
6.3.2 库的用法 153
6.4 VHDL程序包 155
6.4.1 程序包组成和格式 155
6.4.2 VHDL标准程序包 156
6.5 配置 157
6.5.1 默认配置 157
6.5.2 结构体的配置 159
6.6 VHDL文字规则 161
6.6.1 标识符 161
6.6.2 数字 162
6.6.3 字符串 162
6.7 VHDL数据类型 163
6.7.1 预定义数据类型 163
6.7.2 自定义数据类型 165
6.7.3 用户自定义的子类型 167
6.7.4 数据类型的转换 167
6.8 VHDL操作符 169
6.8.1 逻辑操作符 169
6.8.2 关系操作符 169
6.8.3 算术操作符 170
6.8.4 并置操作符 171
6.8.5 操作符重载 171
6.9 数据对象 172
6.9.1 常量 172
6.9.2 变量 173
6.9.3 信号 174
6.9.4 文件 174
习题6 175
第7章 VHDL基本语句与基本设计 176
7.1 顺序语句 176
7.1.1 赋值语句 176
7.1.2 IF语句 176
7.1.3 CASE语句 179
7.1.4 LOOP语句 180
7.1.5 NEXT语句 182
7.1.6 EXIT语句 182
7.1.7 WAIT语句 183
7.1.8 子程序调用语句 184
7.2 并行语句 186
7.2.1 并行信号赋值语句 186
7.2.2 进程语句 189
7.2.3 并行过程调用语句 190
7.2.4 元器件例化语句 191
7.2.5 生成语句 193
7.3 VHDL组合逻辑电路设计 196
7.4 VHDL时序逻辑电路设计 202
7.4.1 触发器 202
7.4.2 寄存器 204
7.4.3 计数器 205
7.4.4 分频器 206
习题7 209
第8章 VHDL设计进阶 210
8.1 VHDL行为描述方式 210
8.2 VHDL结构化描述方式 212
8.3 VHDL RTL描述方式 215
8.4 有限状态机(FSM)设计 216
8.4.1 Moore和Mealy状态机的选择 216
8.4.2 有限状态机的描述方式 218
8.4.3 有限状态机的同步和复位 226
8.4.4 改进的Moore型有限状态机 232
8.4.5 小结 237
习题8 238
第9章 数字接口实例及分析 240
9.1 ST-BUS总线接口设计 240
9.1.1 ST-BUS总线时序关系 240
9.1.2 ST-BUS总线接口实例 242
9.2 数字复接分接接口技术及设计 246
9.2.1 数字复接分接接口技术原理 247
9.2.2 同步数字复接分接接口设计实例 248
9.3 I2C接口设计 254
9.3.1 I2C总线工作原理 255
9.3.2 I2C总线接口设计实例 257
9.4 GMSK基带调制接口设计 263
9.4.1 GMSK调制基本原理 263
9.4.2 GMSK调制实现的基本方法 265
9.4.3 GMSK基带调制接口的实现代码 266
习题9 284
第10章 通信算法实例及分析 285
10.1 伪随机序列的产生、检测设计 285
10.1.1 m序列的产生 285
10.1.2 m序列的性质 286
10.1.3 m序列发生器的VHDL设计 286
10.1.4 m序列检测电路的VHDL设计 288
10.2 比特同步设计 292
10.2.1 锁相功能的自同步法原理 292
10.2.2 锁相比特同步的EDA实现方法 294
10.3 基带差分编码设计 303
10.3.1 PSK调制和差分编码原理 303
10.3.2 PSK差分编码设计 306
10.4 FIR滤波器设计 312
10.4.1 FIR滤波器简介 312
10.4.2 使用MATLAB设计FIR滤波器 314
10.4.3 FIR滤波器的FPGA普通设计 315
10.4.4 FIR滤波器的并行FPGA优化设计 317
习题10 323
参考文献 324