第1章 EDA设计导论1
1.1 EDA技术综述1
1.1.1 EDA技术发展历史1
1.1.2 EDA技术含义3
1.1.3 EDA技术主要内容3
1.2 PLD设计方法学7
1.2.1 PLD设计概论7
1.2.2 PLD设计流程8
1.2.3 SOPC设计流程11
1.3 HDL硬件描述语言11
1.3.1 HDL硬件描述语言概念11
1.3.2 HDL语言特点和比较12
1.3.3 HDL语言最新发展14
习题115
第2章 可编程逻辑器件设计方法16
2.1 可编程逻辑器件基础16
2.1.1 可编程逻辑器件概述16
2.1.2 可编程逻辑器件的发展历史17
2.2 PLD芯片制造工艺18
2.3 PLD芯片结构19
2.3.1 CPLD原理及结构19
2.3.2 FPGA原理及结构21
2.3.3 CPLD和FPGA比较25
2.3.4 PLD选择原则26
2.4 Xilinx公司芯片简介28
2.4.1 Xilinx CPLD芯片介绍28
2.4.2 Xilinx FPGA芯片介绍30
2.4.3 Xilinx PROM芯片介绍39
习题243
◆EDA原理及应用目 录第3章 VHDL语言基础44
3.1 VHDL程序结构44
3.1.1 VHDL程序结构概述44
3.1.2 VHDL程序实体44
3.1.3 VHDL结构体 47
3.2 VHDL语言描述风格49
3.2.1 结构体行为描述49
3.2.2 结构体数据流描述50
3.2.3 结构体结构化描述51
3.3 设计资源共享53
3.3.1 库53
3.3.2 包集合54
3.3.3 子程序和函数56
3.3.4 元件配置58
3.4 VHDL语言的文字规则59
3.4.1 数字型文字59
3.4.2 字符型文字60
3.4.3 标识符61
3.4.4 下标名及下标段名62
3.5 VHDL语言数据对象、类型和属性62
3.5.1 VHDL中的数据对象62
3.5.2 VHDL中的数据类型64
3.5.3 VHDL中的预定义属性71
3.6 VHDL语言的操作符74
3.7 VHDL的顺序描述语句76
3.7.1 对象赋值语句76
3.7.2 转向控制语句78
3.7.3 断言语句85
3.8 VHDL的并发描述语句86
3.8.1 进程描述语句 87
3.8.2 并行信号赋值语句88
3.8.3 条件信号赋值语句88
3.8.4 选择信号赋值语句89
3.8.5 并行过程调用语句90
3.8.6 块语句90
3.9 VHDL元件声明及例化语句92
3.9.1 层次化设计92
3.9.2 元件声明92
3.9.3 元件例化93
3.9.4 生成语句95
3.10 VHDL的文件操作96
习题398
第4章 数字逻辑单元设计100
4.1 组合逻辑电路设计100
4.1.1 基本逻辑门电路设计100
4.1.2 编码器和译码器设计101
4.1.3 数据选择器设计103
4.1.4 数字比较器设计105
4.1.5 数据运算单元设计105
4.1.6 总线缓冲器设计107
4.2 时序逻辑电路设计109
4.2.1 时钟和复位设计109
4.2.2 触发器设计111
4.2.3 锁存器设计114
4.2.4 计数器设计114
4.2.5 移位寄存器设计116
4.3 存储器设计119
4.3.1 ROM设计119
4.3.2 RAM设计120
4.3.3 FIFO设计121
4.4 有限自动状态机设计123
4.4.1 有限状态机原理123
4.4.2 有限状态机分类124
4.4.3 有限状态机设计127
习题4131
第5章 VHDL高级设计技术133
5.1 VHDL代码风格133
5.1.1 逻辑复制和复用技术134
5.1.2 并行和流水线技术135
5.1.3 同步和异步单元处理技术138
5.1.4 逻辑处理技术142
5.1.5 模块划分的设计原则146
5.2 IP核设计技术147
5.2.1 IP核分类147
5.2.2 IP核优化148
5.2.3 IP核生成149
5.2.4 IP核应用150
习题5155
第6章 基于HDL的设计输入157
6.1 软件环境157
6.2 综合工具介绍159
6.3 工程建立159
6.4 设计描述161
6.5 添加设计和检查162
6.6 创建基于HDL的模块163
6.7 IP核产生和例化165
6.7.1 IP核的生成165
6.7.2 IP核的例化167
习题6168
第7章 基于原理图的设计输入169
7.1 工程建立169
7.2 设计描述170
7.3 创建原理图模块171
7.3.1 原理图编辑器操作171
7.3.2 定义模块符号172
7.3.3 创建模块符号175
7.4 创建状态图模块175
7.4.1 添加状态175
7.4.2 添加迁移177
7.4.3 添加行为177
7.4.4 添加复位条件177
7.4.5 设计输出和添加178
7.5 设计完成178
习题7179
第8章 设计综合和行为仿真180
8.1 设计综合180
8.1.1 行为综合描述180
8.1.2 基于XST的综合概述181
8.1.3 约束及设计综合的实现181
8.1.4 RTL符号的查看182
8.2 行为仿真的实现183
8.2.1 生成测试向量183
8.2.2 基于ModelSim行为仿真实现185
8.2.3 基于ISE行为仿真实现190
习题8192
第9章 设计实现和时序仿真193
9.1 实现过程概述及约束193
9.1.1 实现过程概述193
9.1.2 建立约束文件193
9.2 设置实现属性参数194
9.3 创建分区195
9.4 创建时序约束196
9.5 设计翻译196
9.6 设计约束197
9.6.1 时序约束197
9.6.2 管脚和面积约束200
9.7 设计映射及时序分析201
9.7.1 设计映射201
9.7.2 使用时序分析评估块延迟202
9.8 布局布线验证204
9.8.1 用FPGA Editor验证布局布线205
9.8.2 评估布局后时序205
9.8.3 改变分区HDL206
9.9 时序仿真实现208
9.9.1 时序仿真概述208
9.9.2 使用ModelSim进行时序仿真208
9.9.3 使用ISE仿真器进行时序仿真213
习题9216
第10章 设计下载和调试217
10.1 PLD的配置217
10.1.1 配置单元217
10.1.2 配置端口218
10.1.3 配置电路218
10.2 创建配置数据221
10.2.1 配置属性221
10.2.2 创建PROM文件222
10.3 下载实现过程224
10.3.1 下载环境224
10.3.2 下载实现225
10.3.3 JTAG诊断231
10.3.4 建立SVF文件232
10.3.5 其他配置模式234
10.4 PLD调试234
10.4.1 多路复用技术的应用234
10.4.2 虚拟逻辑分析工具235
习题10235
第11章 数字时钟设计及实现237
11.1 数字时钟的功能要求和结构237
11.1.1 数字时钟的功能要求237
11.1.2 数字时钟的整体结构237
11.2 模块设计238
11.2.1 数字时钟控制信号238
11.2.2 控制模块结构238
11.3 设计实现240
11.3.1 设计输入240
11.3.2 设计约束246
习题11247
第12章 通用异步接收发送器设计及实现248
12.1 UART设计原理248
12.1.1 UART原理和设计描述248
12.1.2 接收模块设计249
12.1.3 发送模块设计251
12.1.4 UART的VHDL设计代码251
12.2 UART设计验证258
12.2.1 验证原理258
12.2.2 验证代码258
习题12261
第13章 数字电压表设计及实现262
13.1 数字电压表的功能要求和结构262
13.1.1 数字电压表的功能要求262
13.1.2 数字电压表的整体结构262
13.2 模块设计263
13.2.1 数字电压表控制信号263
13.2.2 ADC转换原理263
13.2.3 控制模块结构265
13.3 设计实现266
13.3.1 ADC控制模块原理及实现266
13.3.2 显示控制模块原理及实现268
13.3.3 程序包的设计270
13.3.4 顶层模块设计272
13.3.5 设计约束文件274
习题13275
参考文献276