第1章 概述 1
1.1 电子设计自动化技术及其发展 1
1.2 电子设计自动化应用对象 2
1.3 VHDL 4
1.4 EDA的优势 5
1.5 面向FPGA的开发流程 6
1.5.1 设计输入 6
1.5.2 综合 7
1.5.3 布线布局(适配) 8
1.5.4 仿真 8
1.5.5 下载和硬件测试 8
1.6 Quartus Ⅱ概述 9
1.7 IP核 10
1.8 EDA技术的发展趋势 12
第2章 PLD硬件特性与编程技术 14
2.1 PLD概述 14
2.1.1 PLD的发展历程 14
2.1.2 PLD的分类 15
2.2 低密度PLD可编程原理 16
2.2.1 电路符号表示 17
2.2.2 PROM 18
2.2.3 PLA 19
2.2.4 PAL 20
2.2.5 GAL 21
2.3 CPLD的结构与可编程原理 22
2.4 FPGA的结构与工作原理 25
2.4.1 查找表逻辑结构 25
2.4.2 Cyclone系列器件的结构与原理 26
2.5 硬件测试技术 31
2.5.1 内部逻辑测试 31
2.5.2 JTAG边界扫描测试 32
2.6 FPGA/CPLD产品概述 33
2.6.1 Lattice公司CPLD器件系列 33
2.6.2 Xilinx公司的FPGA和CPLD器件系列 33
2.6.3 Altera公司的FPGA和CPLD器件系列 34
2.6.4 Actel公司的FPGA器件 37
2.6.5 Altera公司的FPGA配置方式与配置器件 37
2.7 编程与配置 37
2.7.1 JTAG方式的在系统编程 38
2.7.2 使用PC并行口配置FPGA 39
2.7.3 FPGA配置器件 40
第3章 VHDL基础 42
3.1 VHDL基本语法 42
3.1.1 组合电路描述 42
3.1.2 VHDL结构 44
3.2 时序电路描述 48
3.2.1 D触发器 48
3.2.2 时序描述VHDL规则 49
3.2.3 时序电路的不同表述方法 53
3.3 全加器的VHDL描述 55
3.3.1 半加器描述 55
3.3.2 CASE语句 57
3.3.3 例化语句 59
3.4 计数器设计 60
3.5 一般计数器的VHDL设计方法 63
3.5.1 相关语法 64
3.5.2 程序功能分析 64
3.5.3 移位寄存器设计 66
3.6 数据对象 67
3.6.1 常数 67
3.6.2 变量 68
3.6.3 信号 68
3.6.4 进程中的信号赋值与变量赋值 70
3.7 IF语句概述 77
3.8 进程语句归纳 79
3.8.1 进程语句格式 80
3.8.2 进程结构组成 80
3.8.3 进程要点 81
3.9 并行赋值语句概述 83
3.10 双向和三态电路信号赋值 84
3.10.1 三态门设计 84
3.10.2 双向端口设计 85
3.10.3 三态总线电路设计 87
3.11 仿真延时 89
3.11.1 固有延时 89
3.11.2 传输延时 90
3.11.3 仿真δ 91
习题 91
第4章 Quartus Ⅱ使用方法 94
4.1 Quartus Ⅱ设计流程 94
4.2 嵌入式逻辑分析仪应用 107
4.3 编辑SignalTap Ⅱ的触发信号 111
4.4 LPM ROM宏模块应用 113
4.4.1 工作原理 113
4.4.2 定制初始化数据文件 113
4.4.3 定制LPM ROM元件 115
4.4.4 完成顶层设计 118
4.5 In-System Memory Content Editor应用 120
4.6 LPM RAM/FIFO的定制与应用 122
4.6.1 LPM RAM定制 122
4.6.2 FIFO定制 123
4.7 IP核的使用方法 124
4.8 原理图电路设计方法 127
4.8.1 1位全加器设计 127
4.8.2 基于原理图的正弦信号发生器设计 129
4.9 LPM嵌入式锁相环调用 130
4.9.1 建立嵌入式锁相环元件 131
4.9.2 调入顶层设计 132
4.9.3 测试锁相环 133
4.10 流水线乘法器的混合输入设计 134
习题 137
实验与设计 138
实验4-1 组合电路的设计 138
实验4-2 时序电路的设计 139
实验4-3 含异步清0和同步时钟使能的加法计数器的设计 139
实验4-4 用原理图输入法设计8位全加器 139
实验4-5 正弦信号发生器设计 140
实验4-6 七段数码显示译码器设计 140
实验4-7 数控分频器的设计 142
实验4-8 8位十六进制频率计设计 143
实验4-9 查表式硬件运算器设计 146
第5章 VHDL状态机 149
5.1 状态机设计相关语句 149
5.1.1 类型定义语句 149
5.1.2 状态机的优势 151
5.1.3 状态机结构 152
5.2 Moore状态机 155
5.2.1 多进程状态机 155
5.2.2 单进程Moore状态机 159
5.3 Mealy状态机 161
5.4 状态编码 164
5.4.1 直接输出型编码 164
5.4.2 顺序编码 167
5.4.3 一位热码编码 169
5.5 非法状态处理 169
5.6 数字方式排除毛刺信号 171
5.6.1 延时电路 171
5.6.2 去抖动电路 173
习题 174
实验与设计 176
实验5-1 序列检测器设计 176
实验5-2 并行ADC采样控制电路实现 177
实验5-3 数据采集电路和简易存储示波器设计 178
实验5-4 比较器和D/A器件实现A/D转换功能的电路设计 180
实验5-5 用状态机设计多功能逻辑笔 181
实验5-6 串行ADC采样控制电路设计 181
实验5-7 数字温度器件控制电路设计 181
第6章 16位CPU设计 182
6.1 顶层系统设计 182
6.1.1 16位CPU的组成结构 182
6.1.2 指令系统设计 183
6.1.3 顶层结构的VHDL设计 186
6.1.4 软件设计实例 189
6.2 CPU基本部件设计 191
6.2.1 运算器ALU 191
6.2.2 比较器COMP 193
6.2.3 控制器CONTROL 194
6.2.4 寄存器与寄存器阵列 198
6.2.5 移位寄存器SHIFT 200
6.2.6 三态寄存器TRIREG 202
6.3 CPU的时序仿真与实现 202
6.3.1 编辑仿真波形文件 203
6.3.2 16位CPU的调试运行 206
6.3.3 应用嵌入式逻辑分析仪调试CPU 206
6.3.4 对配置器件编程 208
6.4 应用程序设计实例 208
6.4.1 乘法算法及其实现 208
6.4.2 除法算法及其实现 209
习题 210
实验与设计 210
实验6-1 16位计算机基本部件实验 210
实验6-2 16位CPU设计综合实验 211
第7章 VHDL语句 217
7.1 顺序语句 217
7.1.1 赋值语句 217
7.1.2 IF语句 217
7.1.3 CASE语句 218
7.1.4 LOOP语句 220
7.1.5 NEXT语句 221
7.1.6 EXIT语句 222
7.1.7 WAIT语句 223
7.1.8 RETURN语句 226
7.1.9 空操作语句 227
7.2 并行语句 227
7.2.1 并行信号赋值语句 228
7.2.2 实体说明语句 231
7.2.3 参数传递说明语句 231
7.2.4 参数传递映射语句 232
7.2.5 端口说明语句 234
7.2.6 块语句结构 234
7.2.7 元件例化语句 237
7.2.8 生成语句 238
7.2.9 REPORT语句 242
7.2.10 断言语句 243
7.3 属性描述与定义语句 245
习题 248
实验与设计 250
实验7-1 循环冗余校验模块设计 250
实验7-2 直流电机驱动电路设计 252
实验7-3 步进电机驱动电路设计 254
第8章 VHDL结构 255
8.1 VHDL实体 255
8.2 VHDL结构体 255
8.3 VHDL子程序 256
8.3.1 VHDL函数 256
8.3.2 VHDL重载函数 259
8.3.3 VHDL转换函数 261
8.3.4 VHDL决断函数 263
8.3.5 VHDL过程 264
8.3.6 VHDL重载过程 266
8.3.7 子程序调用语句 266
8.3.8 并行过程调用语句 269
8.4 VHDL库 270
8.4.1 库的种类 271
8.4.2 库的用法 272
8.5 VHDL程序包 273
8.6 VHDL配置 276
8.7 VHDL文字规则 276
8.7.1 数字 276
8.7.2 字符串 277
8.7.3 标识符 278
8.7.4 下标名 278
8.8 VHDL数据类型 279
8.8.1 预定义数据类型 279
8.8.2 IEEE预定义标准逻辑位与矢量 282
8.8.3 其他预定义标准数据类型 282
8.8.4 VHDL数组类型 283
8.9 VHDL操作符 286
8.9.1 逻辑操作符 286
8.9.2 关系操作符 288
8.9.3 算术操作符 289
习题 292
实验与设计 293
实验8-1 直接数字式频率合成器设计 293
实验8-2 基于DDS的数字移相信号发生器设计 298
实验8-3 VGA彩条信号显示控制器设计 300
实验8-4 VGA图像显示控制器设计 304
第9章 DSP Builder设计初步 307
9.1 MATLAB/DSP Builder及其设计流程 307
9.2 正弦信号发生器设计 310
9.2.1 建立设计模型 310
9.2.2 Simulink模型仿真 317
9.2.3 SignalCompiler使用方法 322
9.2.4 使用ModelSim进行RTL级仿真 324
9.2.5 使用Quartus Ⅱ实现时序仿真 325
9.2.6 硬件测试与硬件实现 327
9.3 DSP Builder层次化设计 328
9.4 基于DSP Builder的DDS设计 331
9.4.1 DDS模块设计 331
9.4.2 FSK调制器设计 334
9.4.3 正交信号发生器设计 335
9.4.4 数控移相信号发生器设计 336
9.4.5 幅度调制信号发生器设计 337
9.5 数字编码与译码器设计 338
9.5.1 伪随机序列 338
9.5.2 帧同步检出 340
9.6 硬件环HIL仿真设计 342
9.6.1 HIL仿真流程 342
9.6.2 FSK的HIL仿真 347
9.7 DSP Builder的状态机设计 348
9.7.1 FIFO控制状态机设计示例 348
9.7.2 状态机设计流程 350
习题 354
实验与设计 355
实验9-1 利用MATLAB/DSP Builder设计基本电路模块实验 355
实验9-2 基于DSP Builder的DDS应用模型设计 356
实验9-3 编译码器设计实验 358
实验9-4 HIL硬件环仿真实验 358
第10章 DSP Builder设计深入 359
10.1 FIR数字滤波器设计 359
10.1.1 FIR滤波器原理 359
10.1.2 使用DSP Builder设计FIR滤波器 360
10.1.3 使用MATLAB的滤波器设计工具 365
10.1.4 使用FIR IP Core设计FIR滤波器 371
10.2 VHDL模块插入仿真与设计 375
10.3 正交幅度调制与解调模型设计 378
10.4 NCO IP核应用 380
10.5 基于IP的数字编译码器设计 381
10.5.1 RS码 381
10.5.2 Viterbi译码 382
习题 383
实验与设计 384
实验10-1 FIR数字滤波器设计实验 384
实验10-2 编译码器与调制解调模块设计实验 385
实验10-3 HDL Import模块应用实验 385
附录A EDA实验系统简介 386
参考文献 392