课程资源
视频:https://www.bilibili.com/video/BV14K4y1u7kH/
资料:https://www.aliyundrive.com/s/E9H7Mc5hqhu
第1章 FPGA简介
第1节 什么是FPGA
FPGA是什么东西?
-
FPGA全称Field-Programmable Gate Array,即现场可编程门阵列
-
简而言之FPGA是一个可以通过编程来改变内部结构的芯片。
-
如果要实现相应的功能,需要通过编程即使用硬件描述语言进行程序设计,经过EDA工具编译、综合、布局布线成后转换为可烧录的文件,最终加载到FPGA器件中去,改变FPGA内部的连线,最终完成所实现的功能。
FPGA可以做什么?
- FPGA一般应用于通信接口设计、数字信号处理等比较高端的场合。
- ASIC(application specific integrated circuit,专用集成电路)的原型验证。
- FPGA还用于一些非标(没有定义标准的)场合,FPGA在军工领域应用很广泛。
- FPGA也是比较适用于新科技新领域。
FPGA相较于其他集成电路的优势和劣势
- FPGA的优势是:
- 相较于ASIC,FPGA的开发难度,大大缩减了开发周期
- FPGA是可重复编程的,其研发成本与风险也要比ASIC小许多
- FPGA比单片机、CPU等集成电路芯片拥有更高的效率,更低的功耗
- FPGA也有劣势。
- FPGA开发难度比单片机、CPU难
- FPGA相较于ASIC成本较高、性能较差,资源利用率低的问题
单片机、ASIC和FPGA的开发难度和性能排序
- 开发难度:单片机<FPGA<ASIC
- 性能:单片机<FPGA<ASIC
第2节 FPGA的基本结构
FPGA只能采用一种可以重复配置的结构来实现,查找表(LUT)可以很好满足这一要求,目前主流的FPGA芯片是基于SRAM工艺的查找表。
查找表(LUT,Look-Up-Table),本质上是一个RAM。
以实现数字逻辑 Y = A & B & C Y=A\& B\& C Y=A&B&C的功能为例,对比ASIC和FPGA的实现结构
-
ASIC为了实现该逻辑,逻辑门都已经事先确定好,Y的输出值为两个逻辑与运算后的结果,其基本实现结构如下图所示:

-
FPGA如果要实现同样的逻辑功能,用户首先在 EDA工具中用硬件描述语言写出" Y = A & B & C Y=A\& B\& C Y=A&B&C"逻辑代码;EDA工具分析这一行代码,得出该逻辑代码的真值表;然后软件工具将真值表写到查找表上,从而实现该代码的功能。

FPGA芯片最重要的参考指标
- 可编程逻辑模块的数量
- 固定功能逻辑模块的数目,如乘法器的数目
- 存储器资源的大小,如嵌入式RAM的大小
在最底层的可编程逻辑模块上,存在着基本的两种部件:触发器和查找表。触发器和查找表的组合方式不同,是各个FPGA家族之间区别的重要依据,并且查找表本身的结构也可能各不相同(有4输入或6输入或其他)
第3节 更为复杂的FPGA架构
1985年Xilinx公司推出了第一块FPGA芯片-XC2064,最初的FPGA包含8×8=64的逻辑块阵列和85000个晶体管,其门电路不超过1000个,且每个逻辑块由一个4输入的查找表和其他简单功能模块构成。
22年后,FPGA行业两大巨头Xilinx和Altera公司纷纷推出了采用最近65nm工艺的FPGA产品,其门数量已经达到千万级,晶体管个数更是超过10亿个。
在这22年间,FPGA在紧跟半导体工艺进步的同时也推动了半导体的发展进程——2001年采用150nm工艺、2002年采用130nm工艺,2003年采用90nm工艺,2006年采用65nm工艺。随着技术的发展和工艺节点的进步,FPGA的容量和性能在不断提高的同时,其功耗却不断的优化减少。
在FPGA内部,有“软内核”和“硬内核”之分。
-
比如,如果要利用FPGA的可编程性在芯片内部构造实现一个计数器逻辑,那么在构造计数器逻辑过程中使用到的功能便可以称为“软功能”,又称为软内核。
-
而如果某个功能是直接利用芯片实现的,则利用了芯片内部的“硬功能”,又叫硬内核。比如时间单元等。可以理解为:硬内核是实现固定功能的芯片。
第4节 带嵌入式处理器的FPGA
利用FPGA的可编程构造实现的事情之一即为使用其中的一部分数字逻辑资源制作一个或多个软处理器内核。如果FPGA供应商希望提供一个占用较少硅片面积、消耗较低功率但性能更高的处理器,解决方案是将其实现为硬内核。如果需要高速、高性能的处理器,并且需要实现逻辑编程时,传统的方法是在电路板上放置处理器**(如ARM、DSP等)和FPGA**。
在2010年4月硅谷举行的嵌入式系统大会上,赛灵思发布了可扩展处理平台的架构详情,这款基于ARM处理器的SoC可满足复杂嵌入式系统的高性能、低功耗和多核处理能力要求。该处理器将通用基础双ARM Cortex-A9 MP Core处理器系统作为“主系统”,结合低功耗28nm工艺技术,以实现高度的灵活性、强大的配置功能和高性能。
带有嵌入式处理器的FPGA意味着ARM+FPGA;进一步意味着这种芯片既需要软件工程师编写软件,也需要FPGA工程师搭建周边电路(如ARM的接口、时钟配置和可编程逻辑部分的开发)。
第5节 数据存储以及配置方式
FPGA实现一个逻辑表达式时,会把逻辑表达式的真值表写到LUT上去,断电之后LUT中的内容就清除了。即FPGA中的程序的特点是:断电之后程序就清除了,如果需要运行程序,需要上电之后,重新加载。
通过不同的配置模式,FPGA便会有不同的编程方式。以下为常用的几种配置模式:
- 并行模式:通过并行PROM、Flash配置FPGA;
- 主从模式:使用一片PROM配置多片FPGA;
- 串行模式:串行PROM配置FPGA;
- 外设模式:将FPGA作为微处理器的外设,由微处理器对其编程。
目前,主流的FPGA都是基于SRAM工艺的,在大部分的FPGA开发板上,使用的都是串行配置模式。由于SRAM掉电就会丢失内部数据,因此往往都会外接一个能够掉电保存数据的片外存储器以保存程序。上电时FPGA便将外部存储器(PROM)中的数据读入片内RAM以完成配置,对FPGA编程完成后便进入工作状态;掉电后FPGA内部SRAM中存储的数据丢失,逻辑清零。这种方式配置FPGA不仅能反复使用,还无需重复的手动配置。完成一次主动配置之后每次上电便会自动的实现FPGA的内部编程。
第2章 FPGA开发流程
FPGA的设计流程就是利用EDA开发软件和编程工具对FPGA芯片进行开发的过程。
原理图和HDL(Hardware description language,硬件描述语言)是两种最常用的数字硬件电路描述方法。其中运用HDL设计方法具有更好的移植性、通用性以及利于模块划分的特点。
典型的FPGA的开发流程有9步,如下图所示
- 功能定义/器件选型
- 设计输入
- 功能仿真
- 综合优化
- 综合后仿真
- 时序仿真
- 布线后仿真
- 板级仿真与验证
- 芯片烧录与调试

FPGA需要做的工作是:功能定义/器件选型、设计输入、功能仿真、芯片烧制与调试、静态时序分析(选择做)。总结而言,主要工作就是:需求分析、写代码和调试代码。其他非工作都由工具辅助完成。功能仿真、调试是工作中最花时间的部分
第1节 功能定义/器件选型
FPGA设计项目开始之前,需要进行方案论证、系统设计和FPGA芯片的选型等准备性工作。
在确定并评估好方案后,需要进行系统功能的定义和模块的划分。
FPGA器件选型
- 根据方案中任务要求,如方案中所确定的系统功能以及复杂度,对硬件的工作速度和器件自身的资源、成本以及性能指标等各方面进行综合考虑,选择合适的器件类型。
第2节 设计输入
FPGA系统设计方法
-
设计方法一般采用自顶向下的设计方法。
-
首先将整个系统划分成若干基本模块;然后在将每个基本模块划分成下一层次

本文详细介绍了FPGA的基础知识,包括FPGA的结构、开发流程、Verilog语言的使用,以及如何进行功能定义、器件选型、设计输入、功能仿真、综合优化、布局布线、时序仿真和芯片烧录。特别强调了Verilog中的模块结构、信号类型、功能描述,以及时序逻辑的实现。文章还涵盖了开发环境的设置和第一个上板例程的步骤,指导读者逐步掌握FPGA开发的关键环节。
最低0.47元/天 解锁文章
709

被折叠的 条评论
为什么被折叠?



