第1章 EDA技术概述 1
1.1 EDA技术及其发展概况 1
1.2 EDA技术的基本特征和设计工具 3
1.2.1 EDA技术的基本特征 3
1.2.2 EDA设计工具 5
1.2.3 EDA技术的优势 8
1.3 EDA技术的实现目标和设计流程 9
1.3.1 EDA技术的实现目标 10
1.3.2 EDA设计主要流程 11
1.3.3 数字集成电路的设计流程 12
1.3.4 模拟集成电路的设计流程 13
1.4 硬件描述语言 14
1.4.1 VHDL 15
1.4.2 Verilog HDL 15
1.4.3 ABEL-HDL 16
1.4.4 Verilog HDL和VHDL的比较 17
1.5 EDA技术与ASIC设计 18
1.5.1 ASIC的特点与分类 18
1.5.2 ASIC的设计方法 19
1.5.3 IP核复用技术与SOC设计 21
1.6 EDA技术的发展趋势 24
习题 26
第2章 可编程逻辑器件基础 27
2.1 概述 27
2.1.1 可编程逻辑器件发展历程 27
2.1.2 可编程逻辑器件分类 28
2.1.3 可编程逻辑器件的优势 31
2.2 PLD器件的基本结构 31
2.2.1 基本结构 32
2.2.2 电路符号 33
2.2.3 PROM 34
2.2.4 PLA 35
2.2.5 PAL 37
2.2.6 GAL 38
2.3 CPLD/FPGA的结构特点 39
2.3.1 Lattice公司的CPLD/FPGA 40
2.3.2 Xilinx公司的CPLD/FPGA 42
2.3.3 Altera和Actel公司的CPLD/FPGA 45
2.4 可编程逻辑器件的基本资源 45
2.4.1 功能单元 46
2.4.3 布线资源 47
2.4.2 输入—输出焊盘 47
2.4.4 片内RAM 50
2.5 可编程逻辑器件的编程元件 50
2.5.1 熔丝型开关 51
2.5.2 反熔丝型开关 51
2.5.3 浮栅编程元件 52
2.5.4 基于SRAM的编程元件 55
2.6 可编程逻辑器件的设计与开发 55
2.6.1 CPLD/FPGA设计流程 56
2.6.2 CPLD/FPGA开发工具 58
2.7.1 边界扫描测试法概述 61
2.7 可编程逻辑器件的测试技术 61
2.7.2 JTAG边界扫描寄存器 62
2.7.3 JTAG BST的操作控制 64
习题 66
第3章 Altera的CPLD/FPGA 68
3.1 概述 68
3.2 Altera的CPLD结构特点 72
3.3 Altera的FPGA结构特点 76
3.3.1 ACEX 1K器件的结构 76
3.3.2 APEX 20K/20KE器件的结构 83
3.4.1 ByteBlaster及其使用 94
3.4 Altera的CPLD/FPGA的配置 94
3.4.2 CPLD器件的配置 96
3.4.3 FPGA器件的配置 97
习题 102
第4章 原理图输入设计方式 103
4.1 原理图设计的流程 103
4.2 Quartus Ⅱ原理图设计 106
4.2.1 半加器原理图输入 106
4.2.2 半加器编译 111
4.2.3 半加器仿真 113
4.2.4 全加器设计与仿真 116
4.3 MAX+plus Ⅱ原理图设计 118
4.3.1 原理图设计输入 118
4.3.2 编译与手动调整 123
4.3.3 仿真与时间特性分析 127
4.3.4 编程下载 131
4.4 基于LPM宏单元库的设计 134
4.4.1 LPM宏单元库 134
4.4.2 LPM设计举例 136
习题 138
5.1 HDL输入设计的流程 141
第5章 HDL输入设计方式 141
5.2 MAX+plus Ⅱ的VHDL输入设计 142
5.2.1 源文件编辑输入 142
5.2.2 编译、仿真与测试 145
5.2.3 MAX+plus Ⅱ在Windows 2000上的安装设置 151
5.3 Quartus Ⅱ的VHDL输入设计 151
5.3.1 创建工程文件 151
5.3.2 编译 153
5.3.3 仿真 155
5.4.1 顶层VHDL文件设计 157
5.4 Quartus Ⅱ设计正弦信号发生器 157
5.4.2 正弦信号数据ROM定制 161
5.4.3 仿真与测试 164
5.4.4 使用嵌入式逻辑分析仪进行实时测试 167
5.5 Synplify Pro的VHDL输入设计 170
5.5.1 用Synplify Pro综合的过程 172
5.5.2 Synplify Pro与MAX+plus Ⅱ的接口 176
5.5.3 Synplify Pro与Quartus Ⅱ的接口 177
5.6 Synplify的VHDL输入设计 178
习题 182
6.1.1 半加器的VHDL描述 183
第6章 VHDL语言初步 183
6.1 VHDL的程序结构 183
6.1.2 实体 184
6.1.3 结构体 185
6.2 VHDL的基本语法 187
6.2.1 数据对象 187
6.2.2 数据类型 189
6.2.3 VHDL的运算操作符 190
6.3 并行赋值语句 191
6.3.1 简单信号赋值语句 191
6.3.2 条件信号赋值语句(when-else语句) 192
6.3.3 选择信号赋值语句(with-select语句) 193
6.4 进程(process)语句 193
6.5 顺序赋值语句 195
6.5.1 if语句 195
6.5.2 case语句 196
6.6 VHDL描述组合逻辑电路 197
6.6.1 七段显示译码器 197
6.6.2 双向总线 198
6.6.3 优先编码器 199
6.6.4 8位加法器 200
6.7 VHDL描述时序逻辑电路 201
6.7.1 触发器 201
6.7.2 寄存器 203
6.7.3 计数器 204
6.7.4 状态图描述 206
习题 207
第7章 VHDL数字系统设计方法及举例 210
7.1 结构化设计方法与举例 210
7.1.1 结构化设计方法 210
7.1.2 结构化设计举例——数字跑表 213
7.1.3 结构化设计举例——数字频率计 220
7.1.4 结构化设计举例——音乐演奏电路 223
7.2 寄存器传输级设计及举例 227
7.2.1 算术状态机 227
7.2.2 寄存器传输级定义 229
7.2.3 寄存器传输级设计方法 230
7.2.4 寄存器传输级设计举例——二进制乘法器 234
7.2.5 寄存器传输级设计举例——正负脉宽数控信号发生器 237
7.2.6 寄存器传输级设计举例——十字路口交通信号控制系统 240
习题 243
8.1.1 时钟匹配队列原理 246
第8章 VHDL在通信系统中的应用实例 246
8.1 时钟匹配队列 246
8.1.2 从算法模型到VHDL描述的转换 247
8.2 BCH编码和译码 250
8.2.1 BCH编码原理 250
8.2.2 BCH的译码 254
8.2.3 BCH译码的校正子计算实例代码 258
8.3 块交织和反交织 267
8.3.1 交织器基本原理 267
8.3.2 块交织实现原理 268
8.3.3 交织/解交织实现代码 270
8.4 卷积编码和Viterbi译码 277
8.4.1 卷积编码原理 277
8.4.2 卷积编码的实现代码 278
8.4.3 Viterbi译码的基本原理 281
8.4.4 Viterbi译码的实现 282
8.4.5 Viterbi译码实例代码 285
习题 299
附录 EDA实验系统简介 300
参考文献 307