第1章 EDA技术概述 1
1.1 EDA技术及发展 1
1.2 EDA设计流程 2
1.2.1 设计准备 2
1.2.2 设计输入 3
1.2.3 设计处理 3
1.2.4 设计校验 4
1.2.5 器件编程 4
1.2.6 器件测试和设计验证 5
1.3 硬件描述语言 5
1.3.1 VHDL 5
1.3.2 Verilog HDL 6
1.3.3 AHDL 6
1.4 可编程逻辑器件 6
1.5 常用EDA工具 7
1.5.1 设计输入编辑器 7
1.5.2 仿真器 8
1.5.3 HDL综合器 8
1.5.4 适配器(布局布线器) 8
1.5.5 下载器(编程器) 9
本章小结 9
思考题和习题 9
第2章 EDA工具软件的使用方法 10
2.1 Quartus II软件的主界面 10
2.2 Quartus II的图形编辑输入法 12
2.2.1 编辑输入图形设计文件 12
2.2.2 编译设计文件 16
2.2.3 仿真设计文件 18
2.2.4 编程下载设计文件 22
2.3 Quartus II宏功能模块的使用方法 28
2.3.1 设计原理 28
2.3.2 编辑输入顶层设计文件 28
2.3.3 仿真顶层设计文件 34
2.3.4 图形文件的转换 35
2.4 嵌入式逻辑分析仪的使用方法 37
2.4.1 打开SignalTap II编辑窗口 37
2.4.2 调入节点信号 38
2.4.3 参数设置 39
2.4.4 文件存盘 39
2.4.5 编译与下载 39
2.4.6 运行分析 39
2.5 嵌入式锁相环的设计方法 40
2.5.1 嵌入式锁相环的设计 40
2.5.2 嵌入式锁相环的仿真 43
2.5.3 使用嵌入式逻辑分析仪观察嵌入式锁相环的设计结果 43
2.6 设计优化 44
2.6.1 面积与速度的优化 44
2.6.2 时序约束与选项设置 45
2.6.3 Fitter设置 45
2.7 Quartus II的RTL阅读器 45
本章小结 46
思考题和习题 47
第3章 VHDL 48
3.1 VHDL设计实体的基本结构 48
3.1.1 库、程序包 49
3.1.2 实体 49
3.1.3 结构体 50
3.1.4 配置 50
3.1.5 基本逻辑器件的VHDL描述 51
3.2 VHDL语言要素 54
3.2.1 VHDL文字规则 54
3.2.2 VHDL数据对象 56
3.2.3 VHDL数据类型 57
3.2.4 VHDL的预定义数据类型 57
3.2.5 IEEE预定义的标准逻辑位和矢量 59
3.2.6 用户自定义数据类型方式 59
3.2.7 VHDL操作符 59
3.2.8 VHDL的属性 62
3.3 VHDL的顺序语句 63
3.3.1 赋值语句 64
3.3.2 流程控制语句 64
3.3.3 WAIT语句 70
3.3.4 ASSERT(断言)语句 71
3.3.5 NULL(空操作)语句 71
3.4 并行语句 71
3.4.1 PROCESS(进程)语句 72
3.4.2 块语句 73
3.4.3 并行信号赋值语句 74
3.4.4 子程序和并行过程调用语句 76
3.4.5 元件例化(COMPONENT)语句 78
3.4.6 生成语句 80
3.5 VHDL的库和程序包 82
3.5.1 VHDL库 82
3.5.2 VHDL程序包 83
3.6 VHDL设计流程 84
3.6.1 编辑VHDL源程序 84
3.6.2 设计8位计数显示译码电路顶层文件 86
3.6.3 编译顶层设计文件 87
3.6.4 仿真顶层设计文件 87
3.6.5 下载顶层设计文件 88
3.7 VHDL仿真 88
3.7.1 VHDL仿真支持语句 88
3.7.2 VHDL测试平台软件的设计 90
本章小结 94
思考题和习题 94
第4章 Verilog HDL 97
4.1 Verilog HDL设计模块的基本结构 97
4.1.1 模块端口定义 97
4.1.2 模块内容 98
4.2 Verilog HDL的词法 100
4.2.1 空白符和注释 100
4.2.2 常数 100
4.2.3 字符串 101
4.2.4 关键词 101
4.2.5 标识符 101
4.2.6 操作符 101
4.2.7 Verilog HDL数据对象 105
4.3 Verilog HDL的语句 107
4.3.1 赋值语句 107
4.3.2 条件语句 108
4.3.3 循环语句 111
4.3.4 结构声明语句 113
4.3.5 语句的顺序执行与并行执行 116
4.4 不同抽象级别的Verilog HDL模型 117
4.4.1 Verilog HDL的门级描述 118
4.4.2 Verilog HDL的行为级描述 118
4.4.3 用结构描述实现电路系统设计 120
4.5 Verilog HDL设计流程 122
4.5.1 编辑Verilog HDL源程序 122
4.5.2 设计BCD加法器电路顶层文件 124
4.5.3 编译顶层设计文件 125
4.5.4 仿真顶层设计文件 125
4.5.5 下载顶层设计文件 125
4.6 Verilog HDL仿真 125
4.6.1 Verilog HDL仿真支持语句 125
4.6.2 Verilog HDL测试平台软件的设计 128
本章小结 131
思考题和习题 132
第5章 常用EDA工具软件 134
5.1 ModelSim 134
5.1.1 ModelSim的图形用户交互方式 134
5.1.2 ModelSim的交互命令方式 138
5.1.3 ModelSim的批处理工作方式 140
5.1.4 ModelSim与Quartus II的接口 141
5.2 Quartus II 9.0软件的使用方法 142
5.2.1 Quartus II软件的安装 142
5.2.2 Quartus II软件的主界面 144
5.2.3 Quartus II的仿真方法 145
5.2.4 Quartus II宏功能模块的使用方法 149
5.2.5 在Quartus II 9.0中使用ModelSim仿真 151
5.3 基于Matlab/DSP Builder的DSP模块设计 156
5.3.1 设计原理 157
5.3.2 建立Matlab设计模型 157
5.3.3 Matlab模型仿真 162
5.3.4 Signal Compiler使用方法 164
5.3.5 使用ModelSim仿真 166
5.3.6 硬件实现与测试 167
5.3.7 DSP Builder的层次设计 169
5.4 Nios II嵌入式系统开发软件 169
5.4.1 Nios II的硬件开发 170
5.4.2 调整SDRAM地址 177
5.4.3 生成NiosⅡ硬件系统 177
5.4.4 Nios II系统的调试 193
5.4.5 Nios II的常用组件与编程 198
5.4.6 SOPC的应用 206
5.5 Qsys系统集成软件 216
5.5.1 Qsys的硬件开发 216
5.5.2 Qsys系统的编译与下载 220
5.5.3 Qsys系统的调试 222
本章小结 224
思考题和习题 225
第6章 可编程逻辑器件 226
6.1 PLD的基本原理 226
6.1.1 PLD的分类 226
6.1.2 阵列型PLD 229
6.1.3 现场可编程门阵列FPGA 232
6.1.4 基于查找表(LUT)的结构 234
6.2 PLD的设计技术 236
6.2.1 PLD的设计方法 236
6.2.2 在系统可编程技术 237
6.2.3 边界扫描技术 240
6.3 PLD的编程与配置 240
6.3.1 CPLD的ISP方式编程 241
6.3.2 使用PC的并口配置FPGA 241
6.4 Altera公司的PLD系列产品简介 243
6.4.1 Altera高端Stratix FPGA系列 243
6.4.2 Altera中端FPGA的Arria系列 244
6.4.3 Mtera低成本FPGA的Cyclone系列 245
6.4.4 Altera低成本CPLD的MAX系列 245
6.4.5 Altera硬件拷贝HardCopy ASIC系列 246
本章小结 246
思考题和习题 247
第7章 EDA技术的应用 248
7.1 组合逻辑电路设计应用 248
7.1.1 运算电路设计 248
7.1.2 编码器设计 249
7.1.3 译码器设计 251
7.1.4 数据选择器设计 253
7.1.5 数据比较器设计 254
7.1.6 ROM的设计 256
7.2 时序逻辑电路设计应用 258
7.2.1 触发器设计 258
7.2.2 锁存器设计 260
7.2.3 移位寄存器设计 261
7.2.4 计数器设计 263
7.2.5 随机读写存储器RAM的设计 265
7.3 基于EDA的数字系统设计 267
7.3.1 计时器的设计 267
7.3.2 万年历的设计 271
7.3.3 8位十进制频率计设计 275
本章小结 281
思考题和习题 282
附录A EDA6000实验开发系统 284
A.1 EDA6000的特点 284
A.2 EDA6000的使用方法 285
A.2.1 EDA6000的硬件结构 285
A.2.2 EDA6000软件平台的使用方法 288
附录B Altera DE2开发板使用方法 298
B.1 Altera DE2开发板的结构 298
B.2 DE2开发板的实验模式与目标芯片的引脚连接 298
B.3 DE2开发板实验的操作 303
B.3.1 编辑 303
B.3.2 编译 306
B.3.3 仿真 306
B.3.4 引脚锁定 306
B.3.5 编程下载 307
B.3.6 硬件验证 308
B.4 DE2开发板的控制嵌板 308
B.4.1 打开控制嵌板 308
B.4.2 设备检测 308
附录C Quartus II的宏函数和强函数 310
C.1 宏函数 310
C.2 强函数 316
参考文献 318