1.1 PLD发展简史 1
第1章 PLD技术概述 1
1.2 PLD设计流程 2
1.2.1 设计准备 3
1.2.2 设计输入 3
1.2.3 设计处理 4
1.2.4 设计校验 5
1.2.5 器件编程 5
1.2.6 器件测试和设计验证 6
1.3 硬件描述语言 6
1.3.1 VHDL 6
1.3.2 Verilog HDL 7
1.4.2 仿真器 8
1.4 常用EDA工具 8
1.4.1 设计输入编辑器 8
1.4.3 HDL综合器 9
1.4.4 适配器(布局布线器) 9
1.4.5 下载器(编程器) 9
本章小结 10
思考题和习题 10
第2章 可编程逻辑器件 11
2.1 PLD的基本原理 11
2.1.1 PLD的分类 11
2.1.2 阵列型PLD 14
2.1.3 现场可编程门阵列FPGA 18
2.1.4 基于查找表(LUT)的结构 20
2.2 PLD的设计技术 23
2.2.1 PLD的设计方法 24
2.2.2 在系统可编程技术 24
2.2.3 边界扫描技术 27
2.3 PLD的编程与配置 28
2.3.1 CPLD的ISP方式编程 29
2.3.2 使用PC机的并口配置FPGA 30
本章小结 31
思考题和习题 32
第3章 QUARTUS Ⅱ软件操作基础 33
3.1 Quartus Ⅱ软件的安装 33
3.2 Quartus Ⅱ软件的主界面 37
3.3 Quartus Ⅱ的图形编辑输入法 38
3.3.1 编辑输入图形设计文件 39
3.3.2 编译设计文件 43
3.3.3 仿真设计文件 44
3.3.4 编程下载设计文件 48
3.4 MAX+PLUS Ⅱ设计项目的转换 54
3.5 Quartus Ⅱ宏功能模块的使用方法 54
3.5.1 设计原理 55
3.5.2 编辑输入顶层设计文件 55
3.5.3 仿真顶层设计文件 63
3.5.4 硬件验证与测试 63
3.5.5 图形文件的转换 65
3.6 嵌入式锁相环宏功能模块的使用方法 66
3.7.1 面积与速度的优化 71
3.7 设计优化 71
3.7.2 时序约束与选项设置 72
3.7.3 Fitter设置 73
3.8 Quartus Ⅱ的RTL阅读器 74
本章小结 75
思考题和习题 76
第4章 VHDL 77
4.1 VHDL设计实体的基本结构 77
4.1.1 库、程序包 78
4.1.2 实体 78
4.1.3 结构体 79
4.1.5 基本逻辑器件的VHDL描述 80
4.1.4 配置 80
4.2 VHDL语言要素 84
4.2.1 VHDL文字规则 84
4.2.2 VHDL数据对象 86
4.2.3 VHDL数据类型 88
4.2.4 VHDL的预定义数据类型 88
4.2.5 IEEE预定义的标准逻辑位和矢量 90
4.2.6 用户自定义数据类型方式 91
4.2.7 VHDL操作符 91
4.2.8 VHDL的属性 94
4.3 VHDL的顺序语句 96
4.3.1 赋值语句 96
4.3.2 流程控制语句 97
4.3.3 WAIT(等待)语句 104
4.3.5 NULL(空操作)语句 105
4.3.4 ASSERT(断言)语句 105
4.4 并行语句 106
4.4.1 PROCESS(进程)语句 107
4.4.2 块语句 108
4.4.3 并行信号赋值语句 109
4.4.4 子程序和并行过程调用语句 111
4.4.5 元件例化(COMPONENT)语句 114
4.4.6 生成语句 116
4.5 VHDL的库和程序包 119
4.5.1 VHDL库 119
4.5.2 VHDL程序包 119
4.6.1 编辑VHDL源程序 121
4.6 VHDL设计流程 121
4.6.2 设计8位计数显示译码电路顶层文件 124
4.6.3 编译顶层设计文件 125
4.6.4 仿真顶层设计文件 126
4.6.5 下载顶层设计文件 126
本章小结 126
思考题和习题 126
第5章 Verilog HDL 129
5.1 Verilog HDL设计模块的基本结构 129
5.1.1 模块端口定义 129
5.1.2 模块内容 130
5.2.1 空白符和注释 132
5.2 Verilog HDL的词法 132
5.2.3 字符串 133
5.2.4 标识符 133
5.2.2 常数 133
5.2.5 关键字 134
5.2.6 操作符 135
5.2.7 Verilog HDL数据对象 138
5.3 Verilog HDL的语句 140
5.3.1 赋值语句 140
5.3.2 条件语句 142
5.3.3 循环语句 145
5.3.4 结构声明语句 147
5.3.5 语句的顺序执行与并行执行 150
5.4.1 Verilog HDL门级描述 153
5.4 不同抽象级别的Verilog HDL模型 153
5.4.2 Verilog HDL的行为级描述 154
5.4.3 用结构描述实现电路系统设计 156
5.5 Verilog HDL设计流程 159
5.5.1 编辑Verilog HDL源程序 159
5.5.2 设计BCD数加法器电路顶层文件 161
5.5.3 编译顶层设计文件 162
5.5.4 仿真顶层设计文件 162
5.5.5 下载顶层设计文件 163
本章小结 163
思考题和习题 163
6.1.1 设计原理 166
第6章 基于PLD的DSP开发技术 166
6.1 基于Matlab/DSP Builder的DSP模块设计 166
6.1.2 建立MATLAB设计模型 167
6.1.3 Matlab模型仿真 173
6.1.4 SignalCompiler使用方法 175
6.1.5 使用ModelSim进行RTL级仿真 181
6.1.6 使用Quartus Ⅱ实现时序仿真 182
6.1.7 硬件实现与测试 183
6.2 DSP Builder的层次设计 185
6.3 DSP Builder设计实例 186
6.3.1 基于DSP Builder的16阶FIR滤波器设计 186
6.3.2 基于DSP Builder的数字调制系统设计 189
本章小结 194
思考题和习题 195
第7章 PLD的应用 196
7.1 PLD在组合逻辑电路设计中的应用 196
7.1.1 运算电路设计 196
7.1.2 编码器设计 197
7.1.3 译码器设计 200
7.1.4 数据选择器设计 202
7.1.5 数据比较器设计 204
7.1.6 ROM的设计 205
7.2 时序逻辑电路设计应用 208
7.2.1 触发器设计 208
7.2.2 锁存器设计 210
7.2.3 移位寄存器设计 212
7.2.4 计数器设计 214
7.3 PLD综合应用 216
7.3.1 8位十进制频率计设计 217
7.3.2 数字相关器的设计 223
7.3.3 HDB3码编码器与解码器的设计 225
7.3.4 同步FIFO的设计 232
7.3.5 线性分组码编译码器的设计 240
本章小结 243
思考题和习题 244
附录A ALTERA DE2开发板使用方法 246
A.1 ALTERA DE2开发板的结构 246
A.2 DE2开发板的实验模式与目标芯片的引脚连接 247
A.3 DE2开发板实验的操作 251
A.3.1 编辑 251
A.3.2 编译 254
A.3.3 仿真 254
A.3.4 引脚锁定 255
A.3.5 编程下载 256
A.3.6 硬件验证 256
A.4 DE2开发板的控制嵌板 257
A.4.1 打开控制嵌板 257
A.4.2 设备检测 257
附录B EDA6000实验开发系统 259
B.1 EDA6000实验开发系统的特点 259
B.2.1 EDA6000的硬件结构 260
B.2 EDA6000实验开发系统的使用方法 260
B.2.2 EDA6000软件平台的使用方法 263
B.3 基于EDA6000的PLD实验操作 273
B.3.1 新建抢答器设计项目 274
B.3.2 编辑抢答器文本文件 274
B.3.3 编译设计文件 278
B.3.4 仿真设计文件 278
B.3.5 编程下载设计文件 278
附录C GW48 EDA系统使用说明 281
C.1 GW48教学实验系统原理与使用介绍 281
C.1.1 GW48系统使用注意事项 281
C.1.2 GW48系统主板结构与使用方法 281
C.2.1 实验电路信号资源符号图说明 288
C.2 实验电路结构图 288
C.2.2 各实验电路结构图特点与适用范围 289
C.2.3 GW48 EDA系统结构图信号名与芯片引脚对照表 297
C.3 基于GW48 EDA系统的PLD实验操作 303
C.3.1 新建8位加法器设计项目 303
C.3.2 编辑8位加法器文本文件 303
C.3.3 仿真设计文件 304
C.3.4 引脚锁定 304
C.3.5 编程下载与硬件验证 305
附录D Quartus Ⅱ的宏函数和强函数 306
D.1 宏函数(Macrofunctions) 306
D.2 强函数(Megafunctions) 313
主要参考文献 315