本书根据电子信息类课程教学和实验要求,以提高学生的实践动手能力和工程设计能力为目的,对EDA技术和VHDL设计的相关知识进行系统和完整的介绍。全书共10章,主要内容包括:EDA技术概述、可编程逻辑器件基础、典型FPGA/CPLD的结构与配置、原理图与宏功能模块设计、VHDL设计输入方式、VHDL结构与要素、VHDL基本语句与基本设计、VHDL设计进阶、数字接口实例及分析、通信算法实例及分析等。本书内容新颖,技术先进,由浅入深,既有关于EDA技术、大规模可编程逻辑器件和VHDL硬件描述语言的系统介绍,又有丰富的设计应用实例。本书提供配套电子课件、程序代码和习题参考答案。
前 言
EDA(Electronic Design Automation,电子设计自动化)技术是20世纪90年代以来迅速发展起来的电子设计新技术,它以可编程逻辑器件为载体,以计算机为工作平台,以EDA软件工具为开发环境,以硬件描述语言(HDL)为电子系统的功能描述方式,以电子系统设计为目标,在教学、科研,以及大学生电子设计竞赛等应用场合中起着越来越重要的作用。
EDA技术目前成为电子类本科生必须掌握的专业基础知识与基本技能,国内许多高校的相关学科已将EDA技术作为一门重要的专业基础课程。随着教学改革的深入,对EDA课程教学的要求也在不断提高,为与EDA技术的发展相适应,必须对教学内容进行更新和优化。
我们认为在EDA教学中应注意如下几点。
首先,要明确最基本的教学内容,并突出重点。EDA技术教学的目的是使学生掌握一种通过软件的方法来高效地完成硬件设计的设计技术,应以培养学生的创新思维和设计思想为主,同时使学生掌握基本的设计工具和设计方法。
其次,要改进教学方法。EDA教学应主要以引导性教学为主,合理安排理论教学和实验教学的学时比例,使学生能够理论联系实际,提高实践动手能力和工程设计能力。 前 言
EDA(Electronic Design Automation,电子设计自动化)技术是20世纪90年代以来迅速发展起来的电子设计新技术,它以可编程逻辑器件为载体,以计算机为工作平台,以EDA软件工具为开发环境,以硬件描述语言(HDL)为电子系统的功能描述方式,以电子系统设计为目标,在教学、科研,以及大学生电子设计竞赛等应用场合中起着越来越重要的作用。
EDA技术目前成为电子类本科生必须掌握的专业基础知识与基本技能,国内许多高校的相关学科已将EDA技术作为一门重要的专业基础课程。随着教学改革的深入,对EDA课程教学的要求也在不断提高,为与EDA技术的发展相适应,必须对教学内容进行更新和优化。
我们认为在EDA教学中应注意如下几点。
首先,要明确最基本的教学内容,并突出重点。EDA技术教学的目的是使学生掌握一种通过软件的方法来高效地完成硬件设计的设计技术,应以培养学生的创新思维和设计思想为主,同时使学生掌握基本的设计工具和设计方法。
其次,要改进教学方法。EDA教学应主要以引导性教学为主,合理安排理论教学和实验教学的学时比例,使学生能够理论联系实际,提高实践动手能力和工程设计能力。
再次,要注重教学实效。EDA课程具有很强的实践性,针对性强的实验应该是教学的重要环节,应格外重视EDA实验的质量。
基于以上的认识,我们安排了本书的章节,本书是以可编程逻辑器件、EDA设计工具、VHDL硬件描述语言三方面内容为主线展开的,贯穿其中的则是现代数字设计的新思想、新方法。
本书是在普通高等教育“十一五”国家级规划教材《EDA技术与VHDL设计》基础上编写的,全书共10章,主要内容涵盖了EDA技术的硬件资源、软件操作和设计应用。
第1章对EDA技术做了综述,介绍了EDA技术的发展、EDA设计流程及EDA技术涉及的领域。第2章介绍可编程逻辑器件的基本概念、结构组成和工作原理,可编程逻辑器件的编程工艺及测试技术等。第3章具体介绍Altera公司典型的FPGA/CPLD器件的结构与配置。第4章介绍使用集成工具Quartus II软件进行设计开发的过程,并介绍宏功能模块的设计与应用。第5章介绍基于VHDL的设计过程及VHDL综合工具的使用方法。第6章介绍VHDL的语法、结构与要素。第7章介绍VHDL的语句及常用组合电路、时序电路的VHDL设计。第8章结合具体实例介绍用VHDL进行设计的方法。第9章是用VHDL进行数字接口开发的实例。第10章是数字通信常用算法与模块的设计实例。
为了方便使读者能够较系统、完整地学习EDA技术,掌握EDA设计基本技能,本书从教学的角度出发,尽量将有关EDA技术的内容编入书中,并力求内容精炼,语言通俗易懂。读者也可以根据实际需要,节选学习书中的部分内容,然后再通过相关EDA技术书籍的学习,达到掌握EDA技术的目的。
本书的教学可安排32~40学时,其中第1章占2学时,第2章占4学时,第3章占4学时,第4章占4学时,第5章占4学时,第6章占4学时,第7章占4~6学时,第8章占2~4学时,第9章占2~4学时,第10章占2~4学时。建议安排8~16学时的实验,第一个实验可安排EDA工具软件的使用方法。此外,各学校也可根据自己的教学计划适当调整学时安排。本书提供配套电子课件、程序代码和习题参考答案等教学资源,请登录华信教育资源网注册下载。
本书由徐志军教授主编,并编写第1、2章,第3、4、5章由王金明编写,第6、7章由尹廷辉编写,徐光辉编写了第8章,苏勇编写了第9、10章,全书由徐志军统稿。南京航空航天大学的王成华教授审阅了全书,并提出了修改意见和建议,杭州电子科技大学的潘松老师也给予了支持和帮助,我们在此表示衷心的感谢!
本书是几位老师在多年EDA教学经验的基础上精心编写而成的,虽经很大努力,但由于作者水平所限,加之时间仓促,书中错误与疏漏之处在所难免,真诚地希望同行和广大读者批评指正。
作 者
2015年2月
徐志军,教授,解放军理工大学通信工程学院。中国高等教育学会仪器科学及测控技术专业委员会副主任委员、华东地区高校电子线路教学研究会理事、中国电子学会高级会员。
第1章 EDA技术概述1
1.1 EDA技术及其发展历程1
1.2 EDA技术的特征和优势3
1.2.1 EDA技术的基本特征4
1.2.2 EDA技术的优势6
1.3 EDA设计的目标和流程7
1.3.1 EDA技术的实现目标8
1.3.2 EDA设计流程8
1.3.3 数字集成电路的设计9
1.3.4 模拟集成电路的设计10
1.4 EDA技术与ASIC设计11
1.4.1 ASIC的特点与分类11
1.4.2 ASIC的设计方法12
1.4.3 SoC设计15
1.5 硬件描述语言18 第1章 EDA技术概述1
1.1 EDA技术及其发展历程1
1.2 EDA技术的特征和优势3
1.2.1 EDA技术的基本特征4
1.2.2 EDA技术的优势6
1.3 EDA设计的目标和流程7
1.3.1 EDA技术的实现目标8
1.3.2 EDA设计流程8
1.3.3 数字集成电路的设计9
1.3.4 模拟集成电路的设计10
1.4 EDA技术与ASIC设计11
1.4.1 ASIC的特点与分类11
1.4.2 ASIC的设计方法12
1.4.3 SoC设计15
1.5 硬件描述语言18
1.5.1 VHDL18
1.5.2 Verilog HDL19
1.5.3 AHDL19
1.5.4 Verilog HDL和VHDL的比较20
1.6 EDA设计工具20
1.6.1 EDA设计工具分类21
1.6.2 EDA公司与工具介绍22
习题125
第2章 可编程逻辑器件基础26
2.1 概述26
2.1.1 可编程逻辑器件发展历程26
2.1.2 可编程逻辑器件分类27
2.1.3 可编程逻辑器件的优势30
2.1.4 可编程逻辑器件的发展趋势30
2.2 PLD器件的基本结构32
2.2.1 基本结构32
2.2.2 电路符号33
2.2.3 PROM34
2.2.4 PLA35
2.2.5 PAL36
2.2.6 GAL37
2.3 CPLD/FPGA的结构特点39
2.3.1 Lattice公司的CPLD/FPGA39
2.3.2 Xilinx公司的CPLD/FPGA41
2.3.3 Altera和Actel公司的CPLD/FPGA44
2.3.4 CPLD和FPGA的异同45
2.4 可编程逻辑器件的基本资源45
2.4.1 功能单元46
2.4.2 输入-输出焊盘46
2.4.3 布线资源47
2.4.4 片内RAM49
2.5 可编程逻辑器件的编程工艺50
2.5.1 熔丝型开关50
2.5.2 反熔丝型开关51
2.5.3 浮栅编程器件51
2.5.4 基于SRAM的编程器件54
2.6 可编程逻辑器件的设计与开发54
2.6.1 CPLD/FPGA设计流程54
2.6.2 CPLD/FPGA开发工具57
2.6.3 CPLD/FPGA的应用选择59
2.7 可编程逻辑器件的测试技术61
2.7.1 边界扫描测试原理62
2.7.2 IEEE 1149.1标准62
2.7.3 边界扫描策略及相关工具66
习题266
第3章 典型FPGA/CPLD的结构与配置68
3.1 Stratix高端FPGA系列68
3.1.1 Stratix器件68
3.1.2 Stratix II器件71
3.2 Cyclone低成本FPGA系列74
3.2.1 Cyclone器件74
3.2.2 Cyclone II器件78
3.3 典型CPLD器件84
3.3.1 MAX II器件84
3.3.2 MAX 7000器件85
3.4 FPGA/CPLD的配置87
3.4.1 CPLD器件的配置88
3.4.2 FPGA器件的配置89
习题393
第4章 原理图与宏功能模块设计94
4.1 Quartus II原理图设计94
4.1.1 半加器原理图输入94
4.1.2 半加器编译97
4.1.3 半加器仿真99
4.1.4 全加器设计与仿真101
4.2 Quartus II的优化设置102
4.2.1 Settings设置102
4.2.2 分析与综合设置104
4.2.3 优化布局布线104
4.2.4 使用设计助手检查设计可靠性110
4.3 Quartus II的时序分析112
4.3.1 时序设置与分析112
4.3.2 时序逼近115
4.4 宏功能模块设计117
4.4.1 Megafunctions库117
4.4.2 Maxplus2库126
4.4.3 Primitives库127
习题4129
第5章 VHDL设计输入方式132
5.1 Quartus II的VHDL输入设计132
5.1.1 创建工程文件133
5.1.2 编译134
5.1.3 仿真136
5.2 Synplify Pro的VHDL输入设计137
5.2.1 用Synplify Pro综合的过程139
5.2.2 Synplify Pro与Quartus II的接口142
5.3 Synplify的VHDL输入设计143
习题5146
第6章 VHDL结构与要素147
6.1 实体147
6.1.1 类属参数说明148
6.1.2 端口说明149
6.1.3 实体描述举例150
6.2 结构体151
6.2.1 结构体的命名151
6.2.2 结构体信号定义语句152
6.2.3 结构体功能描述语句152
6.2.4 结构体描述方法152
6.3 VHDL库154
6.3.1 库的种类154
6.3.2 库的用法155
6.4 VHDL程序包157
6.4.1 程序包组成和格式157
6.4.2 VHDL标准程序包158
6.5 配置159
6.5.1 默认配置159
6.5.2 结构体的配置161
6.6 VHDL文字规则163
6.6.1 标志符163
6.6.2 数字164
6.6.3 字符串164
6.7 VHDL数据类型165
6.7.1 预定义数据类型165
6.7.2 自定义数据类型167
6.7.3 用户自定义的子类型169
6.7.4 数据类型的转换169
6.8 VHDL操作符171
6.8.1 逻辑操作符171
6.8.2 关系操作符171
6.8.3 算术操作符172
6.8.4 并置操作符173
6.8.5 操作符重载173
6.9 数据对象174
6.9.1 常量174
6.9.2 变量175
6.9.3 信号176
6.9.4 文件176
习题6177
第7章 VHDL基本语句与基本设计178
7.1 顺序语句178
7.1.1 赋值语句178
7.1.2 IF语句178
7.1.3 CASE语句181
7.1.4 LOOP语句182
7.1.5 NEXT语句184
7.1.6 EXIT语句184
7.1.7 WAIT语句185
7.1.8 子程序调用语句186
7.2 并行语句188
7.2.1 并行信号赋值语句188
7.2.2 进程语句191
7.2.3 并行过程调用语句192
7.2.4 元器件例化语句193
7.2.5 生成语句195
7.3 VHDL组合逻辑电路设计198
7.4 VHDL时序逻辑电路设计204
7.4.1 触发器204
7.4.2 寄存器206
7.4.3 计数器207
7.4.4 分频器208
习题7211
第8章 VHDL设计进阶212
8.1 VHDL行为描述方式212
8.2 VHDL结构化描述方式214
8.3 VHDL RTL描述方式217
8.4 有限状态机(FSM)设计218
8.4.1 Moore和Mealy状态机的选择218
8.4.2 有限状态机的描述方式220
8.4.3 有限状态机的同步和复位228
8.4.4 改进的Moore型有限状态机234
8.4.5 小结239
习题8240
第9章 数字接口实例及分析242
9.1 ST-BUS总线接口设计242
9.1.1 ST-BUS总线时序关系242
9.1.2 ST-BUS总线接口实例244
9.2 数字复接分接接口技术及设计248
9.2.1 数字复接分接接口技术原理249
9.2.2 同步数字复接分接接口设计实例250
9.3 I2C接口设计256
9.3.1 I2C总线工作原理257
9.3.2 I2C总线接口设计实例259
9.4 GMSK基带调制接口设计265
9.4.1 GMSK调制基本原理265
9.4.2 GMSK调制实现的基本方法267
9.4.3 GMSK基带调制接口的实现代码268
习题9286
第10章 通信算法实例及分析287
10.1 伪随机序列的产生、检测设计287
10.1.1 m序列的产生287
10.1.2 m序列的性质288
10.1.3 m序列发生器的VHDL设计288
10.1.4 m序列检测电路的VHDL设计290
10.2 比特同步设计294
10.2.1 锁相功能的自同步法原理294
10.2.2 锁相比特同步的EDA实现方法296
10.3 基带差分编码设计305
10.3.1 PSK调制和差分编码原理305
10.3.2 PSK差分编码设计308
10.4 FIR滤波器设计314
10.4.1 FIR滤波器简介314
10.4.2 使用MATLAB设计FIR滤波器316
10.4.3 FIR滤波器的FPGA普通设计317
10.4.4 FIR滤波器的并行FPGA优化设计319
习题10326
参考文献327