第1章 EDA技术概述 1
1.1 EDA技术及其发展 1
1.1.1 EDA技术的含义 2
1.1.2 EDA技术的发展历程 2
1.2 EDA技术的主要内容 3
1.2.1 自顶向下的设计方法 3
1.2.2 ASIC设计 5
1.2.3 硬件描述语言 6
1.2.4 主要PLD厂商概述 7
1.3 常用的EDA工具 8
1.3.1 设计输入编辑器 9
1.3.2 HDL综合器 9
1.3.3 仿真器 10
1.3.4 适配器 10
1.3.5 下载器 10
1.4 EDA设计流程 11
1.4.1 设计输入 11
1.4.2 综合 12
1.4.3 适配 12
1.4.4 时序仿真与功能仿真 13
1.4.5 编程下载 13
1.4.6 硬件测试 14
1.5 EDA技术的发展趋势 14
1.6 EDA技术的应用 15
1.6.1 EDA技术的应用形式 15
1.6.2 EDA技术的应用场合 16
本章小结 16
思考与练习 17
第2章 可编程逻辑器件及FPGA开发简介 18
2.1 可编程逻辑器件基础 18
2.1.1 可编程逻辑器件简介 18
2.1.2 可编程逻辑器件的发展历史 19
2.1.3 可编程逻辑器件的基本结构 20
2.1.4 可编程逻辑器件的分类 21
2.2 CPLD的基本结构及特点 22
2.3 FPGA的基本结构及特点 30
2.4 FPGA和CPLD的开发应用选择 34
2.4.1 FPGA和CPLD的性能比较 34
2.4.2 FPGA和CPLD的开发应用选择 35
2.5 Xilinx新型系列器件简介 36
2.5.1 Spartan系列 36
2.5.2 Virtex系列 41
本章小结 46
思考与练习 46
第3章 基于ISE的开发环境使用指南 48
3.1 ISE介绍与安装 48
3.1.1 ISE软件介绍 48
3.1.2 ISE软件的安装 50
3.1.3 ISE软件的基本操作 54
3.2 ISE的工程建立与设计输入 60
3.2.1 ISE的工程建立 60
3.2.2 基于ISE的HDL代码输入 64
3.2.3 基于ISE代码模板的使用 67
3.2.4 基于ISE的原理图输入法 69
3.2.5 基于ISE的IP Core的使用 73
3.3 基于ISE的仿真 79
3.4 基于ISE的综合与实现 83
3.4.1 基于Xilinx XST的综合 83
3.4.2 基于ISE的实现 92
3.5 FPGA配置与编程 103
3.5.1 Xilinx FPGA配置电路综述 104
3.5.2 iMPACT的基本操作 108
3.5.3 使用iMPACT创建配置文件 110
3.6 约束文件的编写 121
3.6.1 约束文件的定义 122
3.6.2 UCF文件的语法说明 122
3.6.3 ISE中UCF的编写 123
3.7 集成化逻辑分析仪 126
3.7.1 Chipscope Pro——集成化逻辑分析工具简介 127
3.7.2 Chipscope Pro的使用流程 127
3.7.3 Chipscope Pro Inserter的操作和使用 128
3.7.4 Chipscope Pro Analyzer使用流程 135
本章小结 140
思考与练习 140
第4章 第三方工具介绍 142
4.1 Modelsim SE 6.2 软件的使用 142
4.1.1 Modelsim SE 6.2 软件的安装 142
4.1.2 利用Modelsim SE 6.2 进行功能仿真 143
4.1.3 利用Modelsim SE 6.2 进行时序仿真 146
4.2 Synplify Pro软件的使用 150
4.2.1 Synplify Pro 9.0.1 软件的安装 151
4.2.2 Synplify Pro 9.0.1 软件的使用 152
本章小结 158
思考与练习 158
第5章 简单数字逻辑电路的设计 159
5.1 基于Xilinx FPGA的组合逻辑电路设计 159
5.1.1 基本逻辑门电路设计 159
5.1.2 编码器设计 167
5.1.3 译码器设计 168
5.1.4 数值比较器设计 169
5.1.5 数据选择器设计 171
5.1.6 总线缓冲器设计 173
5.2 时序逻辑电路设计 174
5.2.1 时钟信号和复位信号 174
5.2.2 触发器设计 175
5.2.3 移位寄存器 177
5.2.4 计数器设计 179
5.3 存储器设计 180
5.3.1 只读存储器ROM 181
5.3.2 随机存储器RAM 182
5.3.3 FIFO的设计 184
5.4 有限状态机的设计 189
5.4.1 有限状态机原理 189
5.4.2 有限状态机分类 189
5.4.3 有限状态机设计 190
本章小结 194
思考与练习 194
第6章 EDA技术综合设计应用 196
6.1 数字时钟的设计及实现 196
6.1.1 数字时钟的功能要求 196
6.1.2 数字时钟的Verilog HDL描述 197
6.1.3 设计实现及验证 198
6.2 多功能信号发生器的设计及实现 199
6.2.1 功能要求 200
6.2.2 模块设计 200
6.2.3 设计实现及验证 202
6.3 序列检测器的设计及实现 204
6.3.1 功能要求和结构 204
6.3.2 序列检测器的Verilog HDL描述 205
6.3.3 序列检测器仿真验证 206
6.4 交通灯信号控制器的设计及实现 207
6.4.1 功能要求 207
6.4.2 模块设计 208
6.4.3 设计实现及验证 211
6.5 通用异步接收发送器的设计及实现 212
6.5.1 UART设计原理 213
6.5.2 接收模块设计 213
6.5.3 接收模块设计 216
6.6 AD实验 218
6.6.1 功能要求 218
6.6.2 模块设计 219
6.6.3 设计实现及验证 224
6.7 VGA显示实验 226
6.7.1 VGA显示原理 226
6.7.2 VGA控制器的设计 227
6.7.3 设计实现及验证 229
6.8 PS/2实验 230
6.8.1 PS/2通信协议 230
6.8.2 PS/2控制器的设计 232
6.9 LCD显示字符实训 238
6.9.1 功能要求 238
6.9.2 模块设计 239
6.9.3 设计实现及验证 245
6.10 步进电动机实验 247
6.10.1 功能要求 247
6.10.2 模块设计 247
6.10.3 设计实现及验证 250
本章小结 251
思考与练习 252
第7章 基于FPGA的嵌入式系统开发 253
7.1 可编程嵌入式系统介绍 253
7.1.1 基于FPGA的嵌入式系统 253
7.1.2 Xilinx公司的嵌入式解决方案 254
7.2 EDK简介 255
7.2.1 EDK的介绍 255
7.2.2 EDK设计的实现流程 256
7.2.3 EDK的文件管理架构 258
7.3 XPS软件基本操作 260
7.3.1 利用BSB创建新工程 260
7.3.2 XPS的用户界面 269
7.4 XPS软件的高级操作 273
7.4.1 XPS的软件输入 273
7.4.2 XPS工程的实现和下载 277
7.5 EDK开发实例 282
7.5.1 DDR SDRAM控制器的工作原理 282
7.5.2 DDR SDRAM控制器的基本要求 282
7.5.3 DDR SDRAM控制器的EDK实现 283
本章小结 295
思考与练习 296
参考文献 297