
本书根据EDA课程教学要求,以提高数字设计能力为目的,系统阐述FPGA数字系统开发的相关知识,主要内容包括EDA技术概述、FPGA/CPLD器件、VHDL硬件描述语言等。全书以Quartus Prime、ModelSim等软件为平台,以VHDL’87和VHDL’93语言标准为依据,基于DE2-115实验平台,以可综合的设计为重点,通过大量经过验证的数字设计实例,阐述数字系统设计的方法与技术,由浅入深地介绍VHDL工程开发的知识与技能。
第2版前言本书在第1版的基础上主要做了如下修订:(1)将设计工具从Quartus II 9.0升级为Quartus Prime 17.0。从Quartus II 10.0开始,Quartus II软件取消了自带的波形仿真工具,转而采用专业第三方仿真工具ModelSim进行仿真;自Quartus II 13.1之后,Quartus II只支持64位操作系统(Windows 7/8/10);从Quartus II 15.1开始,Quartus II开发工具改称Quartus Prime;2017年Intel(Altera已被Intel收购)发布了Quartus Prime 17.0版本。Quartus Prime 17.0支持的器件更新,自带的IP核更多,编译速度更快,支持VHDL—2008和System Verilog—2005,作为设计者应积极适应EDA设计工具的变化,并尽可能用新版本。(2)将实验板从DE2、DE2—70升级为DE2—115。从Quartus II 13.1版本开始,Quartus II软件已不再支持Cyclone I和Cyclone II器件(Cyclone I和Cyclone II已经停产),所以基于Cyclone II器件的DE2和DE2—70实验板,用Quartus II 13.1版本后的Quartus II已不能下载。DE2—115实验板基于Cyclone IV FPGA器件(EP4CE115F29),器件新,资源丰富,同时,在外设和使用习惯等方面与DE2—70基本保持一致,所以本书将针对的实验板改为DE2—115。(3)更新了有关ModelSim仿真的内容。本书介绍了两个版本的ModelSim的使用方法:一个是Intel(Altera)的OEM版本——ModelSim-ase;在第10章中详细介绍了ModelSim SE进行功能和时序仿真的过程,ModelSim SE的功能更强、更全面。(4)更新了部分有关FPGA器件结构的内容,使之尽量反映FPGA器件的最新发展。(5)更新和修正了设计案例,将设计案例基于DE2—115实验板重新做了修改和验证。由于FPGA芯片和EDA软件的不断更新换代,同时因编著者时间和精力所限,本书虽经改版和修正,仍不免有诸多疏漏和遗憾,一些案例也有继续发挥和改进的空间,同时一些新的例程限于篇幅未能在书中得到反映。基于本教材的慕课(MOOC)教学资源《数字系统设计》已在华信教育网推出,可配合学习。本书与编著者的另一拙作《数字系统设计与Verilog HDL》(第6版)互为补充,前者以VHDL语言开发为主,后者则以Verilog语言的设计为重点。感谢友晶科技的彭显恩经理和尹作娟女士,以及鑫合欣的王婷女士在本书写作过程中所给予的大力支持;感谢美国威斯康星大学麦迪逊分校的Yu Hen Hu教授在编著者访学期间在学术上和教学上给予编著者的无私帮助与支持;感谢本书责任编辑窦昊先生与编著者多年的鼎力合作。本书疏漏与错误之处,希望读者和同行给予批评指正。E-mail:wjm_ice@163.com 编著者 2017年10月 第1版前言本书的主要内容包括FPGA/CPLD器件、EDA设计工具(包括Quartus Ⅱ、Synplify Pro、DSP Builder、ModelSim等)、VHDL硬件描述语言,以及一些典型的数字设计实例。书中的实例多数在Altera的DE2-70实验平台上进行了实际验证,并尽量给出程序综合与仿真的结果,以便于对照。此外,对于EDA软件工具、实验平台、设计案例均做了精心选择,是编著者认为目前较有典型性和代表性的方案。本书的定位是作为EDA技术、FPGA开发或数字设计方面的教材。在编写的过程中,遵循的是重视基础、面向应用的原则,力图在有限的篇幅内,将EDA技术与FPGA设计相关的知识简明扼要、深入浅出地进行阐述,并融入编著者在教学、科研中的实践经验。撰写此书的另一个初衷是与拙作《数字系统设计与Verilog HDL》互为补充,前者以VHDL语言开发为主,后者则以Verilog语言的设计为重点。全书共12章。第1章对EDA技术进行综述;第2章介绍FPGA/CPLD器件的典型结构与配置;第3章介绍Quartus Ⅱ集成开发工具以及基于宏功能模块的设计;第4章对VHDL程序设计进行了初步介绍;在第5章至第7章中,系统介绍VHDL的程序结构、语法、基本语句、建模方式等内容;第8章是有关有限状态机的内容;第9章讨论设计优化和常用数字电路的设计实现方法;第10章是有关VHDL仿真的内容;第11章介绍DSP Builder的使用方法;第12章是VHDL数字通信和接口等较复杂的数字逻辑系统的设计举例。在附录中对Altera的DE2-70和DE2实验平台做了推广介绍。感谢Altera公司大学计划部Bob Xu先生和上海美连信息技术公司罗晶先生对本书的大力支持。在撰写的过程中力求准确、简约,避免烦琐,以期做到深入浅出。所有举例都经过综合工具或仿真工具的验证,同时也参考了众多国内外同行的书籍和资料,在此深表感谢。 EDA技术是一门实践性很强的课程,同时EDA技术的发展又非常迅速,要真正掌握数字设计技术,成为行家里手,需要设计者在实践中不断摸索与积累,逐步提高自己的实际能力与水平。本书虽经很大努力,但由于编著者水平所限,书中疏漏与错误之处在所难免,希望同行和广大读者给予批评指正。E-mail:wjm_ice@163.com 编著者 2010年1月
第1章 EDA技术概述 1 1.1 EDA技术及其发展 1 1.2 Top-down设计与IP核复用 4 1.2.1 Top-down设计 4 1.2.2 Bottom-up设计 5 1.2.3 IP复用技术与SoC 5 1.3 数字设计的流程 7 1.3.1 设计输入 8 1.3.2 综合 9 1.3.3 布局布线 9 1.3.4 仿真 10 1.3.5 编程配置 10 1.4 常用的EDA软件工具 10 1.5 EDA技术的发展趋势 14 习题1 15 第2章 FPGA/CPLD器件 16 2.1 PLD器件概述 16 2.1.1 PLD器件的发展历程 16 2.1.2 PLD器件的分类 17 2.2 PLD的基本原理与结构 19 2.2.1 PLD器件的基本结构 19 2.2.2 PLD电路的表示方法 20 2.3 低密度PLD的原理与结构 21 2.4 CPLD的原理与结构 25 2.4.1 宏单元结构 25 2.4.2 典型CPLD的结构 26 2.5 FPGA的原理与结构 29 2.5.1 查找表结构 29 2.5.2 典型FPGA的结构 32 2.5.3 Altera的Cyclone IV器件结构 35 2.6 FPGA/CPLD的编程元件 38 2.7 边界扫描测试技术 42 2.8 FPGA/CPLD的编程与配置 43 2.8.1 在系统可编程 43 2.8.2 FPGA器件的配置 45 2.8.3 Cyclone IV器件的编程 46 2.9 FPGA/CPLD器件概述 48 2.10 FPGA/CPLD的发展趋势 52 习题2 52 第3章 Quartus Prime使用指南 54 3.1 Quartus Prime原理图设计 55 3.1.1 半加器原理图设计输入 55 3.1.2 1位全加器设计输入 60 3.1.3 1位全加器的编译 61 3.1.4 1位全加器的仿真 63 3.1.5 1位全加器的下载 68 3.2 基于IP核的设计 71 3.2.1 用LPM_COUNTER设计模24方向可控计数器 72 3.2.2 用LPM_ROM模块实现4×4无符号数乘法器 79 3.3 SignalTap II的使用方法 86 3.4 Quartus Prime的优化设置与时序分析 91 习题3 95 实验与设计 97 3-1 8位带符号乘法器 97 3-2 用常量模块实现补码转换为幅度码的电路 101 第4章 VHDL设计初步 103 4.1 VHDL简介 103 4.2 VHDL组合电路设计 104 4.2.1 用VHDL设计基本组合电路 104 4.2.2 用VHDL设计加法器 106 4.3 VHDL时序电路设计 108 4.3.1 用VHDL设计D触发器 108 4.3.2 用VHDL设计计数器 111 习题4 114 实验与设计 115 4-1 Synplify Pro综合器的使用方法 115 第5章 VHDL结构与要素 120 5.1 实体 120 5.1.1 类属参数说明 120 5.1.2 端口说明 122 5.2 结构体 122 5.3 VHDL库和程序包 123 5.3.1 库 124 5.3.2 程序包 126 5.4 配置 128 5.5 子程序 131 5.5.1 过程 132 5.5.2 函数 134 5.6 VHDL文字规则 136 5.6.1 标识符 136 5.6.2 数字 137 5.6.3 字符串 137 5.7 数据对象 138 5.7.1 常量 138 5.7.2 变量 139 5.7.3 信号 139 5.7.4 文件 140 5.8 VHDL数据类型 141 5.8.1 预定义数据类型 142 5.8.2 用户自定义数据类型 145 5.8.3 数据类型的转换 148 5.9 VHDL运算符 150 5.9.1 逻辑运算符 150 5.9.2 关系运算符 151 5.9.3 算术运算符 152 5.9.4 并置运算符 153 5.9.5 运算符重载 153 习题5 154 实验与设计 155 5-1 用altpll锁相环IP核实现倍频和分频 155 第6章 VHDL基本语句 161 6.1 顺序语句 161 6.1.1 赋值语句 161 6.1.2 IF语句 161 6.1.3 CASE语句 167 6.1.4 LOOP语句 170 6.1.5 NEXT与EXIT语句 172 6.1.6 WAIT语句 173 6.1.7 子程序调用语句 175 6.1.8 断言语句 175 6.1.9 REPORT语句 176 6.1.10 NULL语句 177 6.2 并行语句 178 6.2.1 并行信号赋值语句 178 6.2.2 进程语句 183 6.2.3 块语句 186 6.2.4 元件例化语句 187 6.2.5 生成语句 189 6.2.6 并行过程调用语句 192 6.3 属性说明与定义语句 193 6.3.1 数据类型属性 193 6.3.2 数组属性 194 6.3.3 信号属性 195 习题6 196 实验与设计 196 6-1 4×4矩阵键盘检测电路 196 6-2 FIFO缓存器设计 199 第7章 VHDL设计进阶 204 7.1 行为描述 204 7.2 数据流描述 205 7.3 结构描述 206 7.3.1 用结构描述设计1位全加器 206 7.3.2 用结构描述设计4位加法器 208 7.3.3 用结构描述设计8位加法器 209 7.4 三态逻辑设计 211 7.5 分频器设计 213 7.5.1 占空比为50%的奇数分频 213 7.5.2 半整数分频 215 7.5.3 数控分频器 217 7.6 音乐演奏电路 218 7.6.1 音乐演奏实现的方法 218 7.6.2 实现与下载 220 习题7 223 实验与设计 224 7-1 数字表决器 224 7-2 数字跑表 227 第8章 VHDL有限状态机设计 233 8.1 有限状态机 233 8.1.1 有限状态机的描述 233 8.1.2 枚举数据类型 236 8.2 有限状态机的描述方式 237 8.2.1 三进程表述方式 238 8.2.2 双进程表述方式 239 8.2.3 单进程表述方式 241 8.3 状态编码 244 8.3.1 常用的编码方式 244 8.3.2 用ATTRIBUTE指定编码方式 245 8.3.3 用常量进行编码 247 8.4 有限状态机设计要点 249 8.4.1 起始状态的选择和复位 249 8.4.2 多余状态的处理 251 习题8 252 实验与设计 253 8-1 流水灯控制器 253 8-2 状态机A/D采样控制电路 255 第9章 VHDL数字设计与优化 258 9.1 流水线设计技术 258 9.2 资源共享 261 9.3 VGA图像的显示与控制 265 9.3.1 VGA图像显示原理与时序 265 9.3.2 VGA图像显示与控制的实现 269 9.4 数字过零检测和等精度频率测量 276 9.4.1 数字过零检测 276 9.4.2 等精度频率测量 278 9.4.3 数字测量系统 280 习题9 282 实验与设计 284 9-1 字符液晶显示控制器设计 284 第10章 VHDL的Test Bench仿真 291 10.1 VHDL仿真概述 291 10.2 VHDL测试平台 292 10.2.1 用VHDL描述仿真激励信号 292 10.2.2 用TEXTIO进行仿真 296 10.3 ModelSim SE仿真实例 299 10.3.1 图形界面仿真方式 302 10.3.2 命令行仿真方式 305 10.3.3 ModelSim SE时序仿真 307 习题10 309 实验与设计 309 10-1 用ModelSim SE仿真奇偶检测电路 309 第11章 VHDL设计实例 312 11.1 m序列产生器 312 11.1.1 m序列的原理与性质 312 11.1.2 用原理图设计产生m序列 314 11.1.3 用VHDL设计m序列 315 11.2 Gold码 317 11.2.1 Gold码的原理与性质 317 11.2.2 用原理图设计产生Gold码 318 11.2.3 用VHDL设计实现Gold码 319 11.3 卷积码 320 11.3.1 卷积码原理 320 11.3.2 卷积码实现 320 11.4 QPSK数字调制产生 323 11.4.1 调制原理 323 11.4.2 QPSK调制信号产生的设计实现 324 11.5 小型神经网络 333 11.6 数字AGC 337 11.6.1 数字AGC技术的原理和设计思想 337 11.6.2 数字AGC的VHDL实现 338 11.6.3 数字AGC的仿真 345 习题11 347 实验与设计 347 11-1 异步串行接口(UART) 347 附录A VHDL关键字 356 附录B DE2-115介绍 357
王金明,男,1972年5月出生,博士,现为解放军陆军工程大学副教授、硕士生导师。曾获军队科技进步一等奖1项,军队科技进步二等奖3项,军队科技进步三等奖5项,获军队级教学成果二等奖1项;获国家发明专利授权2项,获软件著作授权1项;发表论文80余篇,其中SCI、EI收录30余篇;主编教材多部,并入选"十一五”国家级规划教材和"十二五”国家级规划教材;2013年获军队院校育才奖银奖;2014年由国家留学基金委资助,在美国威斯康星大学麦迪逊分校访问研究1年;指导本科生参加全国大学生电子设计竞赛,共获得全国一等奖8项。
http://www.hxedu.com.cn/hxedu/fg/book/bookinfo.html?code=G0332500