EDA技术与应用
作者:韩鹏 主编
出版时间:2019年版
丛编项: 普通高等教育“十三五”电子信息类规划教材
内容简介
本书全面系统地介绍了电子设计自动化(EDA)的相关技术理论?HDL 语言及语法?开发环境操作流程?电子设计与优化方法等。全书共分10 章,内容包括:EDA 技术概述?可编程逻辑器件基础?Quartus Prime开发软件应用?Verilog HDL 的基本语法?Verilog HDL 设计的层次与常用模块设计?宏功能模块设计?可综合设计与优化?ModelSim 软件的使用?数字设计实例?C/C++语言开发可编程逻辑器件。本书基于*新的IntelFPGA 产品及开发环境,参考了官方提供的设计资料,提供了丰富的设计案例,理论与应用并重,将电子设计理论及方法贯穿在具体的设计实现过程中。 本书可作为普通高等院校电子信息专业?通信专业及计算机专业的学生的教材,也可作为工程技术人员的参考用书。 本书配有电子课件, 欢迎选用本书作教材的老师登录www.cmpedu.com 注册下载,或发邮件至jinacmp@163.com 索取。
目录
目 录
前言
第1 章 EDA 技术概述 1
1.1 EDA 技术简介 1
1.2 EDA 技术的发展和优势 2
1.2.1 EDA 技术的发展 2
1.2.2 EDA 技术的优势 3
1.3 硬件描述语言(HDL) 4
1.3.1 原理图设计方法 4
1.3.2 HDL 的设计方法 4
1.3.3 HDL 设计方法与传统原理图设计方法的比较 5
1.4 综合 6
1.5 基于HDL 的设计方法 7
1.6 EDA 工程的设计流程 8
1.7 EDA 集成开发工具简介 10
1.8 IP 核 12
1.9 小结 13
1.10 习题 13
第2 章 可编程逻辑器件基础 14
2.1 可编程逻辑器件概述 14
2.1.1 可编程逻辑器件的发展过程 14
2.1.2 可编程逻辑器件的分类 15
2.2 PROM?PLA?PAL 和GAL 的基本结构 16
2.2.1 逻辑电路符号的表示方法 16
2.2.2 PLD 器件的基本结构 17
2.2.3 PROM 的基本结构 17
2.2.4 PLA 的基本结构 18
2.2.5 PAL 和GAL 的基本结构 18
2.2.6 PROM?PLA?PAL 和GAL 电路的结构特点 21
2.3 CPLD 的基本结构和工作原理 21
2.3.1 CPLD 的基本结构 21
2.3.2 Intel 公司的CPLD 23
2.4 FPGA 的结构和工作原理 26
2.4.1 FPGA 的基本结构 27
2.4.2 Intel 公司的FPGA 30
2.5 CPLD/FPGA 的应用选型 33
2.6 Intel 器件的识读与选型指南 34 2.7 小结 37
2.8 习题 38
第3 章 Quartus Prime 开发软件应用 39
3.1 Quartus Prime 软件设计流程 39
3.2 Quartus Prime 软件安装 39
3.3 创建工程文件 45
3.3.1 建立工程 45
3.3.2 建立设计文件 50
3.3.3 原理图输入方法 52
3.3.4 文本输入设计方法 53
3.3.5 编译 55
3.4 约束输入 55
3.4.1 器件选择 55
3.4.2 引脚分配及验证 57
3.4.3 使用“Assignment Editor”和“Settings”对话框 58
3.5 综合和仿真 59
3.5.1 使用Quartus Prime 的集成综合 59
3.5.2 使用ModelSim 仿真器进行仿真设计 60
3.6 下载配置 63
3.6.1 JTAG 模式 63
3.6.2 AS 模式 63
3.7 实例:3 线-8 线译码器设计与仿真 64
3.7.1 实例简介 64
3.7.2 实例目的 64
3.7.3 实例内容 64
3.8 小结 68
3.9 习题 69
第4 章 Verilog HDL 的基本语法 70
4.1 Verilog HDL 简介 70
4.1.1 Verilog HDL 的发展过程 70
4.1.2 Verilog HDL 与C 语言的比较 71
4.2 Verilog HDL 设计举例 73
4.3 Verilog HDL 模块的结构 75
4.4 Verilog HDL 的要素与表达式 79
4.4.1 注释 80
4.4.2 常量 80
4.4.3 变量 81
4.4.4 操作符 83
4.4.5 字符串?关键字?标识符 90
4.5 赋值语句 90
4.5.1 连续赋值 91
4.5.2 过程赋值 92
4.5.3 连续赋值和过程赋值的不同 95
4.6 块语句 96
4.6.1 顺序语句块(begin-end) 96
4.6.2 并行语句块(fork-join) 97
4.6.3 起始时间和结束时间 98
4.7 条件语句 99
4.7.1 if-else 语句 99
4.7.2 case 语句 101
4.7.3 比较if-else 嵌套与case 语句 104
4.8 循环语句 104
4.8.1 for 语句 104
4.8.2 forever 语句 105
4.8.3 repeat 语句 105
4.8.4 while 语句 105
4.9 过程语句 106
4.9.1 initial 语句 106
4.9.2 always 语句 108
4.10 任务与函数 109
4.10.1 任务 110
4.10.2 函数 113
4.11 预编译指令 114
4.11.1 宏定义语句('define?'undef) 114
4.11.2 文件包含语句('include) 115
4.11.3 时间尺度('timescale) 117
4.11.4 条件编译指令('ifdef?'else?'endif) 117
4.12 小结 118
4.13 习题 118
第5 章 Verilog HDL 设计的层次与常用模块设计 120
5.1 Verilog HDL 设计的层次 120
5.2 行为描述 120
5.3 数据流描述 121
5.4 结构描述 121
5.4.1 Verilog HDL 内置门元件 121
5.4.2 门元件的调用 122
5.5 基本组合逻辑电路设计 123
5.5.1 与非门电路 124
5.5.2 或非门电路 125
5.5.3 异或门电路 126
5.5.4 三态门电路 127
5.5.5 编码器 127
5.5.6 译码器 129
5.5.7 BCD-七段显示译码器 130
5.5.8 2 选1 数据选择器 132
5.5.9 4 选1 数据选择器 133
5.5.10 数值比较器 134
5.5.11 总线缓冲器 135
5.6 基本时序电路设计 136
5.6.1 触发器 136
5.6.2 寄存器 137
5.6.3 计数器 138
5.6.4 串-并转换器 139
5.7 加法器设计 140
5.7.1 并行加法器 141
5.7.2 流水线加法器 141
5.8 乘法器设计 143
5.8.1 并行乘法器 143
5.8.2 查找表乘法器 144
5.9 乘累加器设计 145
5.10 小结 147
5.11 习题 147
第6 章 宏功能模块设计 148
6.1 算术运算模块库 148
6.1.1 算术运算模块库模块列表 148
6.1.2 乘法器模块设计举例 149
6.1.3 计数器模块设计举例 153
6.2 逻辑门库 156
6.2.1 逻辑门库宏模块列表 156
6.2.2 3 线-8 线译码器模块设计举例 156
6.3 I/O 模块库 158
6.4 存储器模块库 159
6.5 小结 160
6.6 习题 160
第7 章 可综合设计与优化 161
7.1 可综合设计 161
7.1.1 综合的概念及其过程 161
7.1.2 可综合模型的设计 162
7.1.3 综合结果的验证 163
7.2 Verilog HDL 设计优化 165
7.2.1 公因子和公因子表达式 165
7.2.2 算术表达式优化 165
7.2.3 运算符优化 166
7.2.4 循环语句的优化 166
7.3 面积与速度的折中 167
7.3.1 速度换面积 167
7.3.2 面积换速度 168
7.4 有限状态机设计 168
7.4.1 有限状态机的设计步骤 169
7.4.2 有限状态机编码方式 170
7.4.3 用Verilog HDL 设计可综合的状态机的指导原则 170
7.4.4 状态机的三种设计风格 170
7.5 小结 178
7.6 习题 178
第8 章 ModelSim 软件的使用 179
8.1 系统任务与函数 179
8.2 用户自定义原语 183
8.3 应用Testbench 仿真验证 184
8.3.1 基本结构 184
8.3.2 验证过程 185
8.3.3 验证的全面性与代码覆盖率分析 188
8.4 应用ModelSim 软件仿真 194
8.4.1 软件简介 194
8.4.2 使用ModelSim 进行设计仿真 194
8.4.3 在Quartus Prime 中直接调用ModelSim 198
8.5 实例:4 位全加器设计及ModelSim 仿真 200
8.5.1 实例简介 200
8.5.2 实例目的 201
8.5.3 实例内容 201
8.6 小结 207
8.7 习题 207
第9 章 数字设计实例 208
9.1 卷积编码Verilog HDL 设计 208
9.1.1 卷积码的编码工作原理 208
9.1.2 卷积码的Verilog HDL 实现 209
9.1.3 卷积码的ModelSim 仿真 210
9.2 通用异步收发器的Verilog HDL 设计与验证 211
9.2.1 通用异步收发器的规范 211
9.2.2 电路结构设计 212
9.2.3 UART 控制电路模块的代码设计与分析 214
9.2.4 发送电路的代码设计与仿真分析 218
9.2.5 接收电路的代码设计与仿真 222
9.2.6 UART 系统仿真 227
9.2.7 UART 自动测试Testbench 230
9.3 小结 233
9.4 习题 234
第10 章 C/C++语言开发可编程逻辑器件 235
10.1 基于C/C++的硬件设计方法 235
10.2 硬件设计的C++数据类型 235
10.2.1 ac_int 型 236
10.2.2 ac_fixed 型 236
10.3 C/C++ FIR 滤波器设计 237
10.3.1 直接型FIR 滤波器 237
10.3.2 奇对称FIR 滤波器 238
10.3.3 转置型FIR 滤波器 239
10.4 C++滤波器的可编程逻辑实现及验证 239
10.4.1 C++ FIR 滤波器的实现 239
10.4.2 FIR 滤波器的验证 247
10.5 小结 249
10.6 习题 250
附录 Quartus Ⅱ支持的Verilog 结构 251
参考文献 254