分享

FPGA基础知识简介

 呵呵我的鸡 2022-12-11 发布于广西

近两年的芯片短缺的话题频频被提及,FPGA这个概念也越来越多的出现,比如我们树枝的比特币挖矿使用的矿机中就有它的身影,在安防,工业等领域也有着比较广泛的应用,那么FPGA是什么呢?一起来了解一下FPGA基础知识吧!

图 1 中给出了 FPGA 芯片的实物图:


图 1 FPGA芯片实物图

一、什么是 FPGA?

FPGA 的全称为 Field-Programmable Gate Array,即现场可编程门阵列。 于 1985 年由 Xilinx 创始人之一 Ross Freeman 发明,FPGA 是在 PAL、 GAL、 CPLD 等可编程器件的基础上进一步发展的产物, 是作为专用集成电路( ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。

国内目前常用的是国际大厂Xilinx和inter的,国内有国科微和复旦微的FPGA,不过都是用的Xilinx的内核,开发工具可以直接使用Vivado进行开发,但是工艺真不能恭维。

1、FPGA 发展历程

在 PLD 未发明之前,工程师使用包含若干个逻辑门的离散逻辑芯片进行电路系统的搭建,复杂的逻辑功能实现起来较为困难。

为了解决这一问题,20 世纪 70 年代,可编程逻辑阵列(Programmable Logic Array,PLA)问世,PLA 中包含了一些固定数量的与门、非门,分别组成了“与平面”和“或平面”,即“与连接矩阵”和“或连接矩阵”,以及仅可编程一次的连接矩阵(因为此处编程是基于熔丝工艺的),因此可以实现一些相对复杂的与、或多项表达式的逻辑功能,PLA 内部结构如图 2 所示:


图 2 PLA内部结构


与 PLA 同时问世的还有可编程只读存储器(Programmable Read-Only Memory,PROM),其内部结构如图 3 所示。与 PLA 相同,PROM 内部包含“与连接矩阵”和“或连接矩阵”,但是与门的连接矩阵是硬件固定的,只有或门的连接矩阵可编程。


图 3 PROM内部结构


若只有与门的连接矩阵可编程,而或门的连接矩阵是硬件固定的,那么这种芯片叫作可编程阵列逻辑器件(Programmable Array Logic,PAL),根据输出电路工作模式的不同,PAL 可分为三态输出、寄存器输出、互补输出,但 PAL 仍使用熔丝工艺,只可编程一次。PAL 的结构图如图 4 所示。


图 4 PAL结构图


在 PAL 的基础上,又发展出了通用阵列逻辑器件(Generic Array Logic,GAL),相比于 PAL,GAL 有两点改进:

  • 采用了电可擦除的 CMOS 工艺,可多次编译,增强了器件的可重配置性和灵活性;

  • 采用了可编程的输出逻辑宏单元(Output Logic Macro Cell,OLMC),通过编程 OLMC 可将 GAL 的输出设置成不同状态,仅用一个型号的GAL就可以实现所有PAL器件输出电路的工作模式,增强了器件的通用性。


GAL 的结构图如图 5 所示:


图 5 GAL结构图


早期的 PLD 主要由上述四种类型的芯片组成,即 PROM、PLA、PAL 和 GAL。它们的共同特点是可以实现速度特性较好的逻辑功能,但由于其结构过于简单,所以只能实现规模较小的数字电路。

随着科技的发展、社会的进步,人们对芯片的集成度要求越来越高。早期的 PLD 产品不能满足人们的需求,复杂可编程逻辑器件(Complex Programmable Logic Device,CPLD)诞生。可以把 CPLD 看作 PLA 器件结构的延续,一个 CPLD 器件也可以看作若干个 PLA 和一个可编程连接矩阵的集合。CPLD 的内部结构图如图 6 所示。

图 6 CPLD结构图

FPGA 比 CPLD 早几年问世,与 CPLD 并称为高密度可编程逻辑器件,但它们有着本质的区别。FPGA 芯片的内部架构并没有沿用类似 PLA 的结构,而是采用了逻辑单元阵列(Logic Cell Array,LCA)这样一个概念,改变了以往 PLD 器件大量使用与门、非门的思想,主要使用查找表和寄存器。


除此之外,FPGA 和 CPLD 在资源类型、速度等方面也存在差异,如下表所示。

表:FPGA与CPLD的性能比较
器件种类/特性FPGACPLD
内部结构查找表(Look Up Table)乘积项(Product Term)
程序存储内部为 SRAM 结构,外挂 EEPROM 或 Flash 存储程序内部为 EEPROM 或 Flash
资源类型触发器资源丰富组合逻辑资源丰富
集成度
使用场合完成比较复杂的算法完成控制逻辑
速度
其他资源RAM、PLL、DSP 等——
保密性一般不能保密(可以使用加密核)可加密


FPGA 的类型从内部实现机理来讲,可以分为基于 SRAM 技术、基于反熔丝技术、基于 EEPROM/Flash 技术。就电路结构来讲,FPGA 可编程是指三个方面的可编程:可编程逻辑块、可编程 I/O、可编程布线资源。可编程逻辑块是 FPGA 可编程的核心,我们上面提到的三种技术也是针对可编程逻辑块的技术。

FPGA 的结构图如图 8 所示。

图 8 FPGA结构图

2、FPGA的本质

 简而言之, FPGA 就是一个可以通过编程来改变内部结构的芯片。由大量的逻辑门阵列构成。最简单的逻辑门即:与、或、非。

FPGA与CPU的不同在于:对于CPU或者单片机的编程,往往是通过改变上面寄存器的配置来改变的,但是并不会改变这个芯片的逻辑功能。

而FPGA具有硬件可编程性,即:可以对逻辑门阵列进行重复编程,从而使得FPGA可以在逻辑层面上,任意改变自己实现的硬件结构,这就使得FPGA有很高的灵活性了。

FPGA还具有现场可编程性,即:FPGA可根据需求在使用现场完成编程,而不需要拆下来送回厂家再进行编程。

因此,FPGA也被称为是 “万能芯片”。


二、FPGA的优势

FPGA的三个阶段:发明阶段,扩张阶段,累计阶段。

从当初单纯的“可编程逻辑单元”发展到了

拥有成百上千个“可编程逻辑单元的大型阵列”,再发展到了

集成了各类硬件资源和IP核的片上系统。

可以说,FPGA已经变成了非常复杂的芯片,成为了延续摩尔定律的最主要的代表。

1、与CPU的优势

现如今通用处理器(CPU)的摩尔定律已入暮年,而机器学习和Web服务的规模却在指数级增长。人们使用定制硬件来加速常见的计算任务,然而日新月异的行业又要求这些定制的硬件可被重新编程来执行新类型的计算任务。

FPGA常年来被用作专用芯片(ASIC)的小批量替代品,然而近年来在微软、百度等公司的数据中心大规模部署,以同时提供强大的计算能力和足够的灵活性。

▲不同体系结构性能和灵活性的比较

那FPGA为何会如此之快?这得亏于同行的衬托。

CPU、GPU都属于冯诺依曼结构,指令译码执行、共享内存。而FPGA是无指令、无需共享内存的体系结构,这一结构使得FPGA芯片比CPU甚至GPU的能效高得多。

冯氏结构中,由于执行单元(如CPU核)可能执行任意指令,就需要有指令存储器、译码器、各种指令的运算器、分支跳转处理逻辑。由于指令流的控制逻辑复杂,不可能有太多条独立的指令流,因此GPU使用SIMD(单指令流多数据流)来让多个执行单元以同样的步调处理不同的数据,CPU也支持SIMD指令。

而FPGA每个逻辑单元的功能在重编程(烧写)时就已经确定,不需要指令。

如果使用GPU来加速,要想充分利用GPU的计算能力,batch size就不能太小,延迟将高达毫秒量级。而使用FPGA来加速的话,只需要微秒级的PCle延迟。

那FPGA为何比GPU的延迟低这么多?这本质上是体系结构的区别。

FPGA同时拥有流水线并行和数据并行,而GPU几乎只有数据并行(流水线深度受限)。

2、与ASIC的优势

而相对于出于专门目的而设计的集成电路(Application Specific Integrated Circuit,ASIC),FPGA 具有 3 点优势:

1) 灵活性

通过对 FPGA 编程,FPGA 可以执行 ASIC 能够执行的任何逻辑功能。FPGA 的独特优势在于其灵活性,即随时可以改变芯片功能,在技术还未成熟的阶段,这种特性能够降低产品的成本与风险,在 5G 技术普及初期,这种特性尤为重要。

2) 上市时间缩短

对 FPGA 编程后即可直接使用,FPGA 方案无须经历三个月至一年的芯片流片周期,为企业争取了产品上市时间。

3) 有一定成本优势

FPGA 与 ASIC 的主要区别在于 ASIC 方案有固定成本而 FPGA 方案几乎没有,在使用量小的时候,采用 FPGA 方案无须一次性支付几百万美元的流片成本,同时也不用承担流片失败的风险,此时 FPGA 方案的成本低于 ASIC 的,随着使用量增加,FPGA 方案在成本上的优势逐渐减少,超过某一使用量后,由于大量流片产生了规模经济,因此 ASIC 方案在成本上更有优势,如下图所示:

 FPGA方案和ASIC方案的成本比较


因此,FPGA 通常在数字信号处理、视频处理、图像处理、5G 通信领域、医疗领域、工业控制、云服务、加速计算、人工智能、数据中心、自动驾驶、芯片验证等领域发挥着不可替代的作用。只有掌握了通用的 FPGA 设计方法,才能在 FPGA 独领风骚的领域中大展宏图。

这么说吧,FPGA是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。

与ASIC芯片相比,FPGA的一项重要特点是其可编程特性,即用户可通过程序指定FPGA实现某一特定数字电路。再者就是FPGA芯片是小批量系统提高系统集成度、可靠性的最佳选择之一。

3、与单片机的优势

我们都知道,单片机功能强大,几乎无所不能,而 FPGA 与之相比只强不弱。因为只要单片机能实现的功能,FPGA 就一定能实现,当然这需要加一个大前提——在 FPGA 资源足够多的情况下。但是 FPGA 能实现的功能,单片机却不一定能够轻松实现,这是不争的事实,如果你不相信,那只能说明你还不了解 FPGA。

单片机大部分电子专业的人都有学习过,从单片机和FPGA的对比角度讲能够更加理解FPGA的不同。

单片机,全称为单片微型计算机(Single-Chip Microcomputer),又称微控制器(Microcontroller),是把中央处理器、存储器、定时/计数器(Timer/Counter)、各种输入输出接口等都集成在一块集成电路芯片上的微型计算机。


学习FPGA的人基本上都或多或少对单片机有所了解,在这里,我来说说FPGA和单片机的区别,相信大家可以更加理解FPGA。

1) 结构上的区别

单片机是一种微处理器,类似于电脑CPU的,它一般采用的是哈佛总线结构,或者冯诺依曼结构,对单片机的编程很大程度上要考虑到它的结构和各个寄存器的作用,单片机用途比较广,一般用在控制流水线上,还有日常你看得到的东西上!
  FPGA 是基于查找表结构。
  单片机是一个微控制器,通过加载模块软件来实现某种功能,单片机是成型的芯片;一块设计好的FPGA,它是专门执行特定操作的逻辑电路,FPGA的结构是固定的,我们是通过改变FPGA的内部连线,实现了特定电路才能实现的功能。
  FPGA是数据流结构的,它所有的内部模块是同时工作的,是并行执行的,我们将设计FPGA可以类比于设计一套房屋供水系统,而单片机是顺序执行软件程序的(在固定的硬件结构上)。

2) 速度上的区别

FPGA由于是硬件电路,运行速度直接取决于晶振速度,系统稳定,特别适合高速接口电路。并行执行的特点决定了FPGA在数字信号处理上得天独厚的优势。
  单片机由于是单线程,哪怕是常用的M3系列流水线也是单线程执行,程序语句需要等待单片机周期才能执行。

3) 本质区别

FPGA和单片机的区别,本质上是软件和硬件的区别,FPGA更偏向于硬件电路,而单片机更偏于软件。
  单片机设计属软件范畴,它的硬件(单片机芯片)是固定的,通过软件编程语言描述软件指令在硬件芯片上的执行;
  FPGA设计属硬件范畴,它的硬件(FPGA)是可编程的,是一个通过硬件描述语言在FPGA芯片上自定义集成电路的过程;

说到这里,读者不禁要问,既然 FPGA 这么厉害,为什么单片机的使用范围更广?那是因为在商业中,价格往往是影响产品的重要因素之一。

单片机的价格要远远低于 FPGA,而且根据性能和资源的不同,FPGA 的价格也存在很大差异,单枚 FPGA 芯片的价格从几十元到几十万元不等。与之相比,单片机的价格要便宜很多,同样的功能我们如果可以用价格低廉的单片机实现,就不会选择相对昂贵的 FPGA 了,除非单片机满足不了功能需求。所以公司自己进行开发时,为了节约成本,可能会选择更加便宜的单片机,而不会选择相对昂贵的 FPGA,因为单片机、ARM 这种微处理器的需求量很大,所以价格上更有优势。

而且FPGA 的应用场景远没有单片机和 ARM 这么多,主要针对单片机和 ARM 无法解决的问题。比如要求灵活高效、高吞吐量、低批量延时、快速并行运算、可重构、可重复编程、可实现定制性能和定制功耗的情况,这些工作只能由FPGA承担。


三、FPGA结构

1.png

FPGA架构

目前主流的 FPGA 芯片是基于 SRAM 工艺的查找表结构,FPGA 的基本结构可分为6大部分,分别为:

I/O:可编程输入/输出单元(I/O单元)
内部布线:丰富的布线资源
逻辑单元:可配置逻辑块(CLB)
时钟网络:数字时钟管理模块(DCM)
JTAG边界扫描电路
块RAM・乘法器:嵌入式块RAM

在这里插入图片描述

需要通过编程即设计硬件描述语言,经过 EDA 工具编译、综合、布局布线成后转换为可烧录的文件,最终加载到 FPGA 器件中去,改变 FPGA 内部的连线,最终完成所实现的功能。FPGA架构特点如下:

1、无需指令

FPGA 每个逻辑单元的功能在重编程(烧写)时就已经确定,不需要指令。

2、无需仲裁与共享内存

对于保存状态的需求,FPGA 中的寄存器和片上内存(BRAM)是属于各自的控制逻辑的,无需不必要的仲裁和缓存。

对于通信的需求,FPGA 每个逻辑单元与周围逻辑单元的连接在重编程(烧写)时就已经确定,并不需要通过共享内存来通信。


四、FPGA应用场景

1、FPGA与通信

过去几年的时间里,FPGA在网络和电信系统开发中的角色得到了很大的扩展,不再是仅仅用于集成电路板上不同元器件之间的桥接逻辑。基于FPGA的解决方案既提供了专用芯片解决方案所具有的功能、性能和灵活性,同时又降低了开发成本。随着FPGA器件成本不断降低以及密度/性能的不断提高,今天的FPGA已经可以覆盖从最低端的DSLAM和以太网交换机直到最高端的核心路由器和WDM设备。

2、 FPGA与汽车电子

FPGA的出现给汽车产品和汽车电子技术带来了革命性的变化,世界汽车工业的FPGA用量激增,由从前单片FPGA处理器发展成多FPGA处理器,或FPGA阵列的高速处理器。基于FPGA的汽车电子产品能够满足未来的汽车发展的需要,并且,在多种车型并存的时代里,由以FPGA为核心所构建的通用硬件平台,可以通过不同的软件加载的方式来实现这种兼容。伴随着未来汽车电子技术的不断发展,FPGA的速度将会不断提高。

3、FPGA与消费电子

消费电子在FPGA产品的各种应用中销售额的增长率是非常可观的,成本、功耗和体积的优化进一步促进了FPGA技术在消费电子领域的发展,其中平板电视、汽车电子和各类便携式产品尤为引人注目。 针对数字显示、机顶盒以及无线路由器等应用而优化的这些小封装器件满足了业界对更小器件封装尺寸的需求,为对成本极为敏感的消费电子设计提供了更好的支持。

4、FPGA与工业控制

工业市场对于半导体行业来说,一直是个略显平淡但却稳定增长的市场。与消费类产品带给人们的惊险刺激相比,工业市场显得更加可靠,尤其是在当前这样严峻的市场环境下,它让半导体业的人们感到些许温暖。对于FPGA这类特殊的强大的器件来说,工业市场的稳定发展也给它带来了巨大发展契机。

以上就是FPGA是什么的详细介绍,伴随5G网络的建设,更多的领域中也会应用到它,希望能帮助大家更好的理解FPGA这个概念。

 五、学习FPGA之前的知识储备

1、数电

FPGA是可编程逻辑门电路,我们在进行FPGA设计的时候当然需要对数电有一定的理解。

学习资料推荐:数电在电子信息专业开设的课程中算十分容易的一门学科,本人直接自学学校发放的教材。

2、Verilog HDL语言

设计FPGA我们常用的是两种语言,Verilog HDL and VHDL,Verilog和VHDL各有优势
Verilog语法简单,编 写更加灵活,更接近C语言,对学习过C语言的同学十分友好,最最重要的是,网上参考资源多。
VHDL语法严格,适合大型系统级的设计。虽然现在高校本科阶段的教学常采用VHDL,研究生阶段才开设Verilog,但是本人认为作为本科生学习Verilog是完全没问题的,反倒有优势。

本人先自学了Verilog,然后学校开设了VHDL,对于同时接触过两种语言的的我来说,Verilog是真的好用。如果大家想详细了解Verilog和VHDL的异同和优势,我推荐大家看下这篇博客VHDL和Verilog的区别

学习资料推荐:<Verilog数字系统设计教程(第2版) 夏宇间 北京航空航天大学出版社 (2008-06出版)>

3、信号处理相关知识

学习FPGA的人有两种人,一种是项目需要使用到FPGA,那么这种人已经有了信号处理相关的知识储备,第二种人就是像我这样的小白,先知道FPGA好,然后就一股脑的要学习FPGA,对于这种人其实是难度比较大的。但是既然决定要学习FPGA,那你就得学习《信号与系统》《数字信号处理》这两门课程。

学校开设了信号与系统的课程,加上老师功力了得,我就没有自学别的书籍了。对于需要自学的同学,根据网上的资料我推荐《信号与系统(第二版)奥本海姆》下载链接

数字信号处理这么课学校开设得比较晚,我稍微自学了一下项目需要使用到的部分,我使用的书籍是《数字信号处理/.(美) Richard G. Lyons著/.张建华, 许晓东, 孙松林等译》

对于才进入大学的小白,信号处理相关的书籍可以选择先学习数电和verilog。


六、 学习资料

相对于STM32和其他语言的学习,FPGA是比较少的,但是近年来网上的学习资料还是多了起来。

1、非官方平台

CSDN博客,博客园平台,电子发烧友
电子专业的学习当然离不开博客和社区。网上有很多大佬分享自己的学习心得,很多人甚至分享了自己工程的完整代码。

推荐一个大佬的csdn博客,点进去看看,你会被惊艳到的。FPGADesigner博客

2、官方社区

FPGA芯片的生产商目前最大的是Xilinx和Altera,每个公司都有自己开发平台,开发平台使用的时候可能会遇到各种各样的error,遇到一些非官方平台博客没有解答的问题可以去浏览Xilinx和Altera的官方论坛。
赛灵思中文社区
Altera中文社区

3、大学生MOOC和B站

里面有很多视频课程。

4、知网

在完成一些很专业的项目的时候,我们可以站在前人的肩膀上。

5、老师学长学姐

身边有学习过的学长学姐和老师还是最好的,有些问题在你看来很难,但是学长学姐碰到过,可以直接问他们。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    该文章已关闭评论功能
    类似文章 更多