本书与“十二五”普通高等教育本科*规划教材、普通高等教育“十一五”*规划教材《EDA技术与VHDL设计(第2版)》(25178)为姊妹篇。本书根据教学和实验基本要求,以提高动手实践能力和工程设计能力为目的,对EDA技术和FPGA设计的相关知识进行系统、完整的介绍。全书共10章,主要内容包括:EDA技术概述,FPGA/CPLD器件概述,Quartus Prime集成开发工具,Verilog语法与要素,Verilog语句语法,Verilog设计进阶,Verilog常用外设驱动,有限状态机设计,Verilog Test Bench仿真,Verilog设计与应用等。本书提供配套电子课件、实验与设计和部分程序代码。 本书可作为高等学校电子、通信、雷达、计算机应用、工业自动化、仪器仪表、信号与信息处理等学科本科生、研究生的EDA技术或数字系统设计课程的教材和实验指导书,也可作为相关行业领域工程开发者的重要参考资料。
王金明,男,1972年5月出生,博士,现为解放军陆军工程大学副教授、硕士生导师。曾获军队科技进步一等奖1项(排名第3),军队科技进步二等奖3项,军队科技进步三等奖5项,获军队级教学成果二等奖1项;获国家发明专利授权3项,获软件著作授权1项;发表论文80余篇,其中SCI、EI收录30余篇;主编教材多部,并入选“十一五”国家级规划教材和“十二五”国家级规划教材;2013年获军队院校育才奖银奖;2014年由国家留学基金委资助,在美国威斯康星大学麦迪逊分校访问研究1年;指导本科生参加全国大学生电子设计竞赛,获全国一等奖、二等奖多项。
目 录
第1章 EDA技术概述1
1.1 EDA技术及其发展1
1.2 Top-down设计与IP核复用3
1.2.1 Top-down设计4
1.2.2 Bottom-up设计5
1.2.3 IP复用技术与SoC5
1.3 EDA设计的流程6
1.3.1 设计输入7
1.3.2 综合8
1.3.3 布局布线8
1.3.4 仿真9
1.3.5 编程配置9
1.4 常用的EDA工具软件9
1.5 EDA技术的发展趋势13
习题114
第2章 FPGA/CPLD器件概述15
2.1 PLD器件15
2.1.1 PLD器件的发展历程15
2.1.2 PLD器件的分类15
2.2 PLD的基本原理与结构18
2.2.1 PLD器件的基本结构18
2.2.2 PLD电路的表示方法18
2.3 低密度PLD的原理与结构20
2.4 CPLD的原理与结构24
2.4.1 宏单元结构24
2.4.2 典型CPLD的结构25
2.5 FPGA的原理与结构28
2.5.1 查找表结构28
2.5.2 典型FPGA的结构30
2.5.3 Altera的Cyclone IV器件结构33
2.6 FPGA/CPLD的编程元件36
2.7 边界扫描测试技术40
2.8 FPGA/CPLD的编程与配置41
2.8.1 在系统可编程41
2.8.2 FPGA器件的配置43
2.8.3 Cyclone IV器件的编程43
2.9 FPGA/CPLD器件概述46
2.10 FPGA/CPLD的发展趋势49
习题250
第3章 Quartus Prime集成开发工具51
3.1 Quartus Prime原理图设计52
3.1.1 半加器原理图设计输入52
3.1.2 1位全加器设计输入57
3.1.3 1位全加器的编译58
3.1.4 1位全加器的仿真60
3.1.5 1位全加器的下载64
3.2 基于IP核的设计67
3.3 SignalTap II的使用方法74
3.4 Quartus Prime的优化设置与时序
分析78
习题382
实验与设计84
第4章 Verilog语法与要素92
4.1 Verilog的历史92
4.2 Verilog模块的结构93
4.3 Verilog语言要素96
4.4 常量98
4.4.1 整数98
4.4.2 实数99
4.4.3 字符串100
4.5 数据类型101
4.5.1 net型102
4.5.2 variable型103
4.6 参数104
4.6.1 参数parameter104
4.6.2 Verilog—2001中的参数声明105
4.6.3 参数的传递106
4.6.4 localparam106
4.7 向量107
4.8 运算符109
习题4114
实验与设计114
第5章 Verilog语句语法118
5.1 过程语句118
5.1.1 always过程语句119
5.1.2 initial过程语句122
5.2 块语句123
5.2.1 串行块begin-end123
5.2.2 并行块fork-join124
5.3 赋值语句125
5.3.1 持续赋值与过程赋值125
5.3.2 阻塞赋值与非阻塞赋值126
5.4 条件语句128
5.4.1 if-else语句128
5.4.2 case语句129
5.5 循环语句134
5.5.1 for语句134
5.5.2 repeat、while、forever语句135
5.6 编译指示语句137
5.7 任务与函数139
5.7.1 任务(task)139
5.7.2 函数(function)141
5.8 顺序执行与并发执行144
5.9 Verilog—2001语言标准145
习题5154
实验与设计155
第6章 Verilog设计进阶161
6.1 Verilog设计的层次161
6.2 门级结构描述161
6.2.1 Verilog门元件162
6.2.2 门级结构描述165
6.3 行为描述165
6.4 数据流描述166
6.5 不同描述风格的设计168
6.5.1 半加器设计168
6.5.2 1位全加器设计169
6.5.3 加法器的级连170
6.6 多层次结构电路的设计171
6.6.1 模块例化172
6.6.2 用parameter进行参数传递174
6.6.3 用defparam进行参数重载176
6.7 常用组合逻辑电路设计176
6.7.1 门电路176
6.7.2 编译码器177
6.8 常用时序逻辑电路设计179
6.8.1 触发器179
6.8.2 锁存器与寄存器180
6.8.3 计数器与串并转换器182
6.8.4 简易微处理器182
6.9 三态逻辑设计184
习题6186
实验与设计186
第7章 Verilog常用外设驱动190
7.1 4×4矩阵键盘190
7.2 标准PS/2键盘192
7.3 字符液晶198
7.4 汉字图形点阵液晶204
7.5 VGA显示器209
7.5.1 VGA显示原理与时序209
7.5.2 VGA彩条信号发生器213
7.5.3 VGA图像显示与控制215
7.6 乐曲演奏电路221
习题7226
实验与设计227
第8章 有限状态机设计236
8.1 有限状态机236
8.2 有限状态机的Verilog描述238
8.2.1 用三个过程描述239
8.2.2 用两个过程描述240
8.2.3 单过程描述241
8.3 状态编码242
8.3.1 常用的编码方式242
8.3.2 状态编码的定义244
8.3.3 用属性指定状态编码方式248
8.4 有限状态机设计要点248
8.4.1 复位和起始状态的选择249
8.4.2 多余状态的处理249
习题8250
实验与设计251
第9章 Verilog Test Bench仿真254
9.1 系统任务与系统函数254
9.2 用户自定义元件258
9.2.1 组合电路UDP元件259
9.2.2 时序逻辑UDP元件260
9.3 延时模型的表示262
9.3.1 时间标尺定义`timescale262
9.3.2 延时的表示与延时说明块263
9.4 Test Bench测试平台264
9.5 组合电路和时序电路的仿真267
9.5.1 组合电路的仿真267
9.5.2 时序电路的仿真269
习题9270
实验与设计270
第10章 Verilog设计与应用280
10.1 数字频率测量280
10.1.1 数字过零检测280
10.1.2 等精度频率测量282
10.1.3 数字频率测量系统顶层设计283
10.1.4 仿真验证285
10.2 可重构IIR滤波器287
10.2.1 FPGA的动态重构287
10.2.2 IIR滤波器的原理288
10.2.3 可重构IIR滤波器的设计289
10.2.4 顶层设计源代码298
10.2.5 可重构IIR滤波器仿真298
10.3 QPSK调制器的FPGA实现301
10.3.1 QPSK调制原理301
10.3.2 QPSK调制器的设计实现302
10.3.3 QPSK调制器的仿真311
10.4 卷积码产生器312
10.4.1 卷积码原理312
10.4.2 卷积码编码器实现313
10.4.3 卷积码编码器仿真验证315
10.5 小型神经网络316
10.5.1 基本原理316
10.5.2 设计实现317
10.5.3 仿真验证319
10.6 数字AGC320
10.6.1 数字AGC技术的原理和设计
思想320
10.6.2 数字AGC的实现321
10.7 信号音发生器328
10.7.1 线性码、A律码转换原理328
10.7.2 信号音发生器的Verilog
实现331
习题11334
实验与设计335
附录 DE2-115介绍339
参考文献341