本书根据以提高工程设计能力为目的,深入浅出的对EDA技术、VHDL硬件描述语言、FPGA开发应用及相关知识做了系统和完整的介绍,使读者通过本书的学习与实验,能初步了解和掌握EDA的基本内容及实用技术。本书包括EDA的基本知识、常用EDA工具的使用方法和目标器件的结构原理、以向导形式和实例为主的方法介绍多种不同的设计方法、对VHDL的设计优化以及基于EDA技术的典型设计项目。各章都安排了习题和针对性较强的实验与设计。书中例举的大部分VHDL设计实例和试验实现EDA工具平台是Vivado集成开发环境,硬件平台是Basys3Artix—7FPGA开发平台。并在EDA实验系统上通过硬件测试。本书可作为高等院校电子工程、通信、工业自动化、计算机应用技术、仪器仪表、数字信号或图像处理等学科的本科生或研究生的电子设计、EDA技术课程和VHDL硬件描述语言的教材及实验指导书,同时也可以作为相关专业人员的自学参考书。
随着半导体产业进入深纳米的时代. 可编程逻辑器件向高密度、高速度、低价格方向迅速发展. EDA 技术在电子信息、通信、自动控制及计算机应用等领域的重要性日益突出.目前EDA 技术已经成为电子信息类专业一门重要的专业基础课程. 是电子信息类专业学生必须掌握的专业基础知识和基本技能. 为了使学生掌握EDA 基本设计工具和设计方法. 在EDA 开发软件上本书使用在FPGA 市场占有率第一的Xilinx 公司推出和发布的Vivado 设计套件. 该套件是一款基于业界标准的开放式开发环境. 可以利用Xilinx 公司推出的领先一代的硬件、软件和I/ O 全面可编程的SoC - Zynq7000 系列实现数字系统、DSP 系统和嵌入式系统的设计. 作者力图将EDA 技术最新发展成果、现代电子设计最前沿理论和技术、国际上业界普遍接受和认可的EDA 软硬件开发平台的使用方法奉献给广大读者.本书力求全面、实用. 对例题做到详细分析和解释. 既可以帮助读者学习理解知识和概念. 降低学习难度. 又具有启发性. 帮助读者更加轻松、迅速地理解和掌握本书内容.本书在内容的组织上共分14 章. 各章的具体内容如下:第1 章为绪论. 主要概述了EDA 技术及其重要性. EDA 包含的知识体系结构. 如HDL、EDA 的工作软件等. 比较了传统电子设计方法与EDA 技术各自的特点. 同时对EDA技术的发展历程、特点和优势. 以及利用EDA 进行工程设计的流程进行了简要介绍.第2 章主要介绍了可编程逻辑器件的基本结构和工作原理. 以及相关的编程、测试和配置方法. 首先对可编程逻辑器件进行了概述. 主要介绍了可编程逻辑器件的发展历史. 并对可编程逻辑器件通过不同的划分方式进行了分类. 接着重点介绍了高密度可编程逻辑器件CPLD 和FPGA 的结构原理和工作特点. 然后详细地阐述了JTAG 边界扫描技术的硬件测试原理. 并对CPLD 的编程方法和配置方式进行了介绍. 最后介绍了本书使用的Basys3 开发板.第3 章主要讲述了VHDL 语言的基本语法知识. 是使用VHDL 进行EDA 设计的基础.首先介绍了VHDL 程序的基本结构. 一个完整的VHDL 设计由库、程序包、实体、结构体和配置组成. 其中实体和结构体是基本组成部分. 然后介绍了VHDL 语言中的文字规则、数据对象、数据类型和操作符等内容. 最后介绍了VHDL 中预定义的属性.第4 章主要讲述了VHDL 语句的基本内容. VHDL 中的语句可以分为两大类: 顺序语句和并行语句. 在此基础上介绍了各种语句的语法以及使用方法、程序包的构成和配置、子程序的概念及其使用方法. 并给出常用设计举例.第5 章主要讲述了有限状态机的基本概念、特点和基本结构等基础内容. 在此基础上.对Moore 型状态机和Mealy 型状态机的结构、特性和设计方法进行了详细的举例说明. 然后介绍了状态位置直接输出型编码、顺序编码、枚举类型编码及一位热码编码四种不同的状态编码方式. 以及程序直接导引法及状态编码检测法两种安全状态机的设计方法. 最后比较全面地对有限状态机进行了介绍.第6 章介绍了EDA 的硬件系统设计中VHDL 的优化设计. 首先介绍了FPGA/ CPLD 的Ⅳ资源利用优化. 资源优化主要包括资源共享、逻辑优化和串行化. 由于对于大多数的设计来说. 速度优化比资源优化更重要. 所以介绍了速度优化. 并依次阐述了流水线设计、寄存器配平、关键路径法、乒乓操作法和加法树法. 最后详细介绍了如何排除和避免毛刺或随机干扰信号. 主要包括延时方式去毛刺、逻辑方式去毛刺和定时方式去毛刺.第7 章介绍了Vivado 设计套件的基本知识以及Vivado 设计套件的界面信息. 首先. 简单介绍了Vivado 设计套件的特性. 其次介绍了使用Vivado 设计套件的系统级设计流程. 然后介绍了Vivado 设计套件的安装过程. 之后介绍了各个工程文件夹存放的文件类型以及网表文件的相关知识. 最后介绍了Vivado 设计套件的基本界面信息.第8 章介绍了在Vivado 集成开发环境的工程模式下设计工程的基本设计实现流程. 工程模式下的基本设计实现主要步骤包括: 创建一个新的设计工程、创建并添加新的设计文件、RTL 详细描述和分析、设计综合、行为级仿真、建立约束、设计实现和分析、静态时序分析、设计时序仿真以及生成编程文件并下载到目标芯片.第9 章介绍了Vivado 集成设计环境下创建和封装用户IP 的基本流程. 创建和封装用户IP的主要步骤包括: 创建一个用于定制用户IP 的工程、设置定制IP 的库名和目录以及封装IP.第10 章介绍了在Vivado 集成开发环境下基于IP 的简单系统的设计实现流程. 基于IP的系统设计实现主要步骤包括: 创建一个新的设计工程、创建基于IP 的系统、行为级仿真、设计综合、建立约束、设计实现和分析、静态时序分析、设计时序仿真以及生成编程文件并下载到目标芯片.第11 章介绍了如何使用Vivado 集成开发环境和Basys3 开发板设计实现键控流水灯实验的设计. 首先介绍了键控流水灯的设计要求和功能描述. 其次介绍了键控流水灯的层次化设计方案. 主要包括三部分内容. 分别是分频模块. 流水灯显示模块和按键控制模块. 最后对键控流水灯设计进行了硬件测试.第12 章介绍了抢答器实验设计. 首先介绍了抢答器的设计要求和功能描述. 其次制订了三人抢答器的层次化设计方案. 主要包括三部分内容. 分别是分频器模块、抢答鉴别器模块和数码管显示模块. 然后对抢答器进行了顶层设计和仿真. 最后对抢答器的设计进行了硬件测试.第13 章主要介绍了一个简单的数字钟实验设计. 首先介绍了数字钟的设计要求和功能描述. 然后介绍了数字钟的层次化设计方案. 主要包括三部分内容. 分别是分频器模块、计数模块和数码管显示模块. 之后对数字钟进行了顶层设计和仿真. 最后对本次设计进行了硬件测试.第14 章介绍了如何使用Vivado 集成开发环境和Basys3 开发板进行简单的UART 实验设计. 实验分为两部分. 一部分是接收器的设计实现. 另一部分是发送器的设计实现. 在两部分中分别介绍了接收器和发送器的层次化设计方案. 并对其进行了硬件测试.本书内容充实. 系统全面. 重点突出. 阐述循序渐进. 由浅入深. 书中所有例题均在Vivado 环境下运行通过. 本书配有免费的电子课件. 欢迎选用本书作为教材的教师登录www.. cmpedu.. com 下载或发邮件到wangkang ̄maizi9@126.. com 索取.参加本书编写、校对及程序测试工作的还有吴金辉、王辉等. 在此表示感谢.由于作者水平有限. 书中难免有错误和不足之处. 恳请各位专家和读者批评指正.
编 者
前 言
第1 章 绪论 1
1. 1 EDA 技术概要 1
1. 1. 1 EDA 技术的含义 1
1. 1. 2 EDA 技术的发展历程 1
1. 1. 3 EDA 的基本特征 3
1. 1. 4 EDA 技术的优势 5
1. 2 EDA 技术的实现目标 7
1. 3 硬件描述语言 8
1. 3. 1 VHDL 8
1. 3. 2 Verilog HDL 9
1. 3. 3 VHDL 和Verilog HDL 的比较 9
1. 4 常用的EDA 工具 10
1. 4. 1 设计输入编辑器 11
1. 4. 2 综合器 11
1. 4. 3 仿真器 13
1. 4. 4 适配器 13
1. 4. 5 编程下载 14
1. 5 EDA 的工程设计流程 14
1. 6 Vivado 概述 17
1. 7 EDA 技术的发展趋势 17
本章小结 19
习题 19
第2 章 CPLD 与FPGA 的结构原理 20
2. 1 PLD 概述 20
2. 1. 1 PLD 入门 20
2. 1. 2 常见的PLD 21
2. 1. 3 PLD 的优点 22
2. 1. 4 PLD 的发展趋势 23
2. 2 简单PLD 的结构原理 24
2. 2. 1 逻辑符号表示方法 25
2. 2. 2 PROM 的结构原理 25
2. 2. 3 PLA 的结构原理 26
2. 2. 4 PAL 的结构原理 26
2. 2. 5 GAL 的结构原理 31
2. 3 CPLD 的结构原理 35
2. 3. 1 CPLD 的基本结构 35
2. 3. 2 基于乘积项的可编程逻辑器件 36
2. 4 FPGA 的结构原理 39
2. 4. 1 查找表型FPGA 的逻辑结构 41
2. 4. 2 Xilinx 公司7 系列FPGA 简介 43
2. 4. 3 FPGA 与CPLD 的区别 47
2. 5 硬件测试 48
2. 6 CPLD/ FPGA 的编程与配置 49
2. 7 Basys3 开发板介绍 50
2. 7. 1 电源电路 51
2. 7. 2 LED 灯电路和数码管电路 51
2. 7. 3 按键电路和拨码开关电路 52
2. 7. 4 VGA 显示电路和I/ O 扩展电路 53
本章小结 53
习题 54
第3 章 VHDL 入门基础 55
3. 1 VHDL 的基本结构 55
3. 1. 1 实体 56
3. 1. 2 结构体 57
3. 1. 3 库、程序包和配置 57
3. 2 VHDL 的文字规则 59
3. 2. 1 数字型文字 60
3. 2. 2 字符串型文字 60
3. 2. 3 标识符 60
3. 2. 4 下标 61
3. 3 VHDL 的数据对象 62
3. 3. 1 常数 62
3. 3. 2 变量 62
3. 3. 3 信号 62
3. 3. 4 文件 63
3. 4 VHDL 的数据类型 63
3. 4. 1 VHDL 预定义数据类型 64
3. 4. 2 用户自定义数据类型 67
3. 4. 3 数据类型间的转换 68
Ⅵ
3. 5 VHDL 的操作符 69
3. 6 VHDL 预定义属性 73
本章小结 75
习题 76
第4 章 VHDL 硬件描述语言 77
4. 1 进程语句 77
4. 2 赋值语句 78
4. 3 顺序描述语句 80
4. 3. 1 IF 语句 80
4. 3. 2 CASE 语句 82
4. 3. 3 LOOP 语句 83
4. 3. 4 NEXT 语句和EXIT 语句 84
4. 3. 5 WAIT 语句 85
4. 3. 6 RETURN 语句 86
4. 3. 7 NULL 语句 87
4. 4 元件例化语句 87
4. 5 生成语句 90
4. 6 块语句 91
4. 7 程序包和配置 93
4. 7. 1 程序包 93
4. 7. 2 配置 94
4. 8 子程序 95
4. 8. 1 过程 96
4. 8. 2 函数 97
4. 9 其他语句 99
4. 10 常用设计举例 100
4. 10. 1 结构体的三种描述方式 100
4. 10. 2 组合逻辑电路设计 102
4. 10. 3 时序逻辑电路设计 107
本章小结 113
习题 113
第5 章 有限状态机设计 114
5. 1 概述 114
5. 1. 1 状态机的特点 114
5. 1. 2 状态机的分类 115
5. 2 VHDL 状态机的一般形式 116
5. 2. 1 一般状态机的结构 116
5. 2. 2 状态机的设计流程 118
5. 2. 3 状态机的状态转移图描述 118
5. 2. 4 状态机的状态说明部分 119
5. 3 Moore 型状态机的设计 120
5. 3. 1 单进程Moore 型状态机 120
5. 3. 2 多进程Moore 型状态机 122
5. 4 Mealy 型状态机的设计 125
5. 5 状态编码 127
5. 5. 1 顺序编码 127
5. 5. 2 枚举类型编码 128
5. 5. 3 状态位直接输出型编码 128
5. 5. 4 一位热码编码 129
5. 6 安全状态机设计 129
5. 6. 1 程序直接导引法 129
5. 6. 2 状态编码检测法 130
本章小结 130
习题 130
第6 章 VHDL 优化设计 132
6. 1 资源优化 132
6. 1. 1