本书是一部系统论述基于FPGA的现代电子系统设计方法的立体化教程(含纸质图书、电子书、教学课件、源代码与视频教程)。全书共分为8章: 第1章EDA技术概述,介绍了基于FPGA设计的优势、FPGA技术应用领域、自顶向下设计方法论、FPGA设计层次、RTL层设计的流程; 第2章介绍CPLD/FPGA的结构原理及编程和配置相关知识; 第3、4、5、8章,从第3章的VHDL基本语法,到第4章的组合逻辑和时序逻辑基本模块,再到第5章的宏功能模块利用,最后是第8章以项目引导的典型电子系统设计案例,逐层递进,由浅入深地介绍基于VHDL的数字系统描述方法; 第6章介绍逻辑设计之后需要考虑的时序分析相关基础,包括时序约束、时序分析的若干基本概念和时钟管理; 第7章面向整体系统设计及优化问题,介绍了基本系统设计原则和VHDL优化原则。
为便于读者高效学习,快速掌握基于VHDL的编程与实践,本书作者精心制作了完整的教学课件(8章PPT)、完整的源代码与丰富的配套视频教程及在线答疑服务等。
本书可作为广大高校电子信息工程专业EDA课程的教材,也可作为计算机技术、自动化、电力系统及自动化、智能电网及信息工程、机械电子等工科专业学生的自学参考书。
2015年,德国率先提出工业4.0,拉开了第四次工业革命的序幕。以智能化、信息化为特点的第四次工业革命,广泛使用大数据、人工智能、物联网、5G通信、云边端计算等先进技术,在各个行业完成产业升级,从智慧小区、智慧工厂到智能城市,从智慧交通到智慧医疗,从智能电网到智慧能源,再到全球互联网,智慧化、智能化已经在逐步深入地影响和改变我们的生活。而实现智慧化、智能化的物理基础是智慧化器件,包括CPU、DSP、ARM等。FPGA作为智慧化器件的顶配产品,以其高速、稳定、可靠等特点,近年来得到了广泛的关注和应用。
智能化、信息化的进程中,必然需要大量的智能计算、智能决策,而且这些智能计算和决策必须具备快速、低功耗、小型化、灵活性等特点,FPGA技术充分满足了上述几点要求。尤其是近年来的片上系统(SoC)技术,既包括各种硬件IP核,还可以集成嵌入式操作系统和应用软件,软硬协同,将非常复杂的系统整合在芯片上,展示出强大的功能。单独使用沿用数十年的CPU架构产品已经不能满足市场需求,因而选择以软硬协同开发为特征的FPGA架构是必然趋势。可以预见,FPGA的应用将会呈现一个井喷式增长态势。目前FPGA已经成熟地应用到视频信号处理,比如电子眼、人脸识别等。在云计算、边缘计算及智能计算领域,FPGA正在作为加速器而被越来越广泛应用,它既能够提供几乎实时的处理速度,同时还可以降低功耗。在机器人、无人驾驶、无人机等领域,FPGA也越来越广泛地被使用。
世界上著名的FPGA厂商Altera公司被Intel公司收购,Xilinx公司继而被AMD公司收购,FPGA公司被芯片巨头整合,预示着FPGA将与传统CPU芯片进一步集成,发挥其可编程、快速、低功耗、灵活的优势,来赋能传统芯片。随着芯片巨头的入场,FPGA CPU将会真正成为解决数据中心存储和网络通信的主流解决方案,基于FPGA的AI加速单元和CPU紧密耦合提升AI计算的整体性能,也必将是FPGA赋能传统芯片的典型应用,从而带来前所未有的IT生态改变。
面对这样的需求和应用背景,应用工程师们迫切需要在较短的时间内能够尽可能全面地了解FPGA相关技术。本书是一本阐述FPGA技术全貌的图书,深入浅出地将理论与案例相结合。在介绍FPGA最新应用的基础上,以Intel公司的主要FPGA产品为主线,阐述其硬件结构原理。从VHDL基本语法出发,阐述了基于VHDL的组合/时序基本电路模块的实现方式,并系统介绍了典型IP核的应用,较为详细地阐述了FPGA设计中的时序分析问题,系统论述了设计过程中要遵循的基本原则和优化原则,并结合案例进行解释,最后列举了一些常见的工程应用。本书旨在向读者传递FPGA技术及应用的基本原理,作者以多年的FPGA专业教学经验,引领读者快速了解FPGA领域全貌,以期在FPGA应用中能够事半功倍。
本书的编写工作由下列人员承担: 李月乔负责第4章; 陈晓梅负责第1,2,3,5,6,7,8章。全书由陈晓梅审校定稿。此外研究生肖徐东、王行健负责本书第8章的部分调试,在此一并表示衷心的感谢。为了使书中内容与仿真软件中使用的逻辑符号一致,故本书中所有符号均采用美标,特此说明。
由于作者水平所限,错误和不足之处在所难免,恳请读者批评指正。
编者2023年10月
教学课件
程序代码
第1章FPGA相关EDA技术概述
1.1基于FPGA设计数字电子系统的优势
1.2FPGA技术应用领域
1.2.1FPGA应用于人工智能与大数据
1.2.2FPGA应用于高速、高带宽的网络通信
1.2.3FPGA应用于云计算
1.2.4FPGA应用于边缘计算
1.3FPGA 自顶向下的设计方法论
1.4FPGA的设计层次
1.5RTL层 FPGA设计流程
1.5.1设计输入
1.5.2综合
1.5.3适配
1.5.4时序仿真与功能仿真
1.5.5编程下载
1.5.6硬件测试
第2章FPGA和CPLD结构原理
2.1FPGA的编程技术
2.2Intel公司FPGA产品系列
2.2.1Agilex FPGA系列
2.2.2Stratix FPGA系列
2.2.3Arria系列
2.2.4Cyclone系列
2.2.5MAX系列
2.3传统CPLD结构原理
2.4FPGA结构原理
2.4.1查询表实现函数基本原理
2.4.2Cyclone Ⅲ系列器件的结构原理
2.5新型CPLD结构原理
2.5.1LAB
2.5.2多轨道互连
2.5.3可编程I/O块
2.6CPLD和FPGA的区别与趋同
2.7编程与配置
2.7.1配置方式
2.7.2主动串行配置方式
2.7.3被动串行配置方式
2.7.4快速被动并行配置方式
2.7.5被动并行异步配置方式
2.7.6JTAG配置方式
2.7.7USBBlaster Ⅱ下载电缆
2.7.8配置芯片
2.7.9配置文件
2.8基于FPGA的SoC设计方法
2.8.1系统功能集成是SoC的核心技术
2.8.2固件集成是SoC的基础设计思想
2.8.3嵌入式系统是SoC的基本结构
2.8.4IP是SoC的设计基础
第3章VHDL的基本语法规则
3.1VHDL基本术语
3.2VHDL的三种不同描述风格
3.2.1实体
3.2.2结构体
3.2.3配置
3.3数据对象
3.3.1常量
3.3.2变量
3.3.3信号
3.3.4别名
3.3.5常量、变量和信号的比较
3.4数据类型
3.4.1标量
3.4.2复合类型
3.4.3数据类型转换
3.4.4子类型
3.5行为描述
3.5.1信号赋值
3.5.2延时
3.5.3进程
3.5.4WAIT语句
3.5.5决断信号
3.6子程序
3.6.1过程
3.6.2函数
3.6.3函数/过程重载
3.7设计库和标准程序包
第4章基本电路模块设计
4.1组合逻辑典型电路设计
4.1.1编码器
4.1.2译码器
4.1.3三人表决器
4.1.4数据选择器
4.1.5数据分配器
4.1.6数值比较器
4.1.7加法器
4.2时序逻辑电路典型模块设计
4.2.1触发器设计
4.2.2计数器设计
4.2.3寄存器设计
4.2.4锁存器
4.2.5移位寄存器
4.2.6顺序脉冲发生器设计
4.2.7序列信号发生器设计
4.2.8分频器设计
4.2.9状态机设计
4.2.10三态总线设计
4.3简单的测试基准设计
4.3.1测试基准概述
4.3.2基本测试基准的搭建
第5章EDA宏功能资源利用
5.1参数化模块库(LPM)
5.1.1计数器
5.1.2基于ROM的正弦波发生器
5.2IP核的使用实例
5.2.1IP相关常识概述
5.2.28B/10B 核的使用
5.3原Altera公司特定功能IP核(ALT类)
5.3.1ALTMEMMULT IP核实现整数乘法
5.3.2锁相环ALTPLL的调用
第6章时序分析基础
6.1时序约束
6.2时序分析的基本概念
6.2.1时序网表和时序路径
6.2.2基本时序分析参数
6.2.3同步时序分析
6.2.4异步时序分析恢复和移除分析
6.2.5多周期路径分析
6.2.6亚稳性分析
6.2.7时序悲观分析
6.2.8时钟数据分析
6.2.9多角时序分析
6.3时钟管理
6.3.1时序问题
6.3.2锁相环应用
第7章系统设计及优化原则
7.1可编程逻辑基本设计原则
7.1.1面积和速度的平衡与互换原则
7.1.2系统原则
7.1.3同步设计原则
7.1.4数据接口同步原则
7.1.5结构层次化编码原则
7.2VHDL的优化设计
7.2.1面积优化设计
7.2.2速度优化设计
7.3其他设计技巧
7.3.1组合逻辑的注意事项
7.3.2时钟的设计技巧
第8章FPGA电子系统设计项目
8.1串并行乘法器设计
8.1.1串并乘法器原理
8.1.2系统设计
8.1.3仿真结果
8.2看门狗设计
8.2.1看门狗的工作原理
8.2.2系统设计及仿真结果
8.3PS/2键盘接口设计
8.4多位数码管的动态扫描显示
8.4.1多位数码管的显示原理
8.4.2系统设计及仿真结果
8.5FPGA控制数模转换器DAC0832实现锯齿波发生器
8.5.1DAC0832的工作原理
8.5.2FPGA控制的锯齿波发生器电路
8.6FPGA控制模数转换器ADC0809的应用
8.6.1ADC0809转换器及其模数转换电路
8.6.2FPGA控制的模数转换电路
8.6.3用数码管显示模数转换器的输入电压
8.6.4模拟输入有负电压时的转换电路
8.7数字频率计
8.7.1总体设计要求和设计实现思路
8.7.2各模块具体设计实现及仿真
8.8UART通用异步收发器
8.8.1UART协议基础
8.8.2UART模块程序设计
参考文献