【1】初识FPGA1_FPGA的由来与特点

简介

FPGA 作为一种可编程的芯片,其结构和开发方式都与传统的 MCU DSP 不同

MCU DSP的设计,是主要进行软件程序设计,用户主要使用 C 语言完成各种控制和算法的实现,各种功能是在 CPU 的控制下按照顺序依次实现的。

FPGA 设计,实质是电路设计,是在一个可以现场编程的通用逻辑器件中去搭建各种具有一定功能的逻辑电路,各个逻辑电路间是各自独立的,能够并行执行。同时,各个功能电路之间又通过一定的控制和握手信号相互协调

所 以,要想能够正确高效的开发和使用 FPGA,我们必须在此之前对其有一个充分细致的认识,包括对其硬件资源结构、硬件电路设计、开发环境等。这对于第一次接触 FPGA 的读者,能够起到指路的作用。

目标

了解FPGA的由来与特点。

阅读基础

熟悉计算机。

快速阅读

了解的部分跳过。

环境说明

  • windows10

参考资料

小梅哥教程

  • 02A【学习教材】FPGA系统设计与验证实战指南V3.0
  • 02B【学习教材】小梅哥FPGA逻辑设计进阶教程2020V1.0

正点原子开拓者教程

  • 开拓者FPGA 开发指南V1.5

野火征途教程

  • 征途ProFPGA Verilog开发实战指南——基于Altera EP4CE10》(上下

FPGA定义

FPGA(Field Programmable Gate Array,简称 FPGA),译文:现场可编程门阵列一种主要以数字电路为主的集成芯片

FPGA发展历程

FPGA于 1985 年由 Xilinx 创始人之一 Ross Freeman 发明,属于可编程逻辑器PLD(Programmable Logic Device)的一种。真正意义上的第一颗FPGA 芯片 XC2064 Xilinx 所发明,这个时间差不多比著名的摩尔定律晚 20 年左右,但 是 FPGA 一经发明,后续的发展速度之快,超出大多数人的想象。

在短短的三十多年时间里,FPGA 的角色已经由简单的逻辑粘合,发展到了现在的可编程片上系统FPGA 的容量翻了几千几万倍,架构复杂度也提升了好几个水平

数字集成电路发展

自20世纪60年代以来,数字集成电路经历了从SSI(Small Scale Integrated circuit,小规模集成电路),MSI(Medium Scale Integrated circuit,中规模集成电路),LSI(Large ScaleIntegrated circuit,大规模集成电路)到VLSI(Very Large Scale Integrated circuit,超大规模集成电路)的发展过程。

数字集成电路按照芯片设计方法的不同大致可以分为3类:

  1. 第一类是通用型中、小规模集成电路;
  2. 第二类是用软件组态的大规模、超大规模集成电路,如微处理器、单片机等;
  3. 第三类是专用集成电路ASIC(Application-Speciftic Integrated Circuit)。ASIC是一种专门为某一应用领域或用户需要而设计制造的LSI或VLSI电路,它可以将某些专用电路或电子系统设计在一个芯片上,构成单片集成系统。ASIC分为全定制和半定制。

ASIC全定制

全定制ASIC的硅片没有经过预加工,其各层掩模都是按特定电路功能专门制造的。

ASIC分为半定制

半定制ASIC是按一定规格预先加工好的半成品芯片,然后再按照具体要求进行加工和制造,它包括门阵列、标准单元和可编程逻辑器件三种。

  • 门阵列是一种预先制造好的硅阵列,内部包括基本逻辑门、触发器等,芯片中留有一定连线区,用户根据所需要的功能设计电路,确定连线方式,然后交给厂家进行最后的布线。
  • 标准单元是厂家将预先配置好、经过测试、具有一定功能的逻辑块作为标准单元存在数据库中,设计者根据需要在库中选择单元构成电路,并完成电路到版图的最终设计。这两种定制ASIC都要由用户向生产厂家定做,设计和制造周期较长,开发费用高,因此只适用于对研发周期要求不高、批量较大的产品。
  • 可编程逻辑器件是ASIC的一个重要分支,它是厂家作为一种通用型器件生产的半定制电路,用户可以利用软、硬件开发工具对器件进行设计和编程,使之实现所需要的逻辑功能。由于它是用户可配置的逻辑器件,使用灵活,设计周期短,费用低,而且可靠性高,承担风险小,因而很快得到普遍应用,发展非常迅速。

可编程逻辑器件PLD

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

可编程逻辑器件(PLD,Programmable Logic Device)能够完成各种数字逻辑功能。典型的PLD输入电路、与阵列、或阵列和输出电路组成,如图所示

BlogImage-20211116211630

任意一个组合逻辑都可以用“与-或“表达式来描述,所以,PLD能以乘积和的形式完成大量的组合逻辑功能。并且这些门电路的连接关系可以不断地用软件来修改。

可编程逻辑阵列 PLA

工程师们使用包含若干个逻辑门的离散逻辑芯片进行电路系统的搭建,复杂的逻辑功能实现起来较为困难。为了解决这一问题,20 世纪 70 年代,可编程逻辑阵列 PLA(Programmable Logic Array)问世。

PLA 中包含了一些固定数量的与门、非门,分别组成了“与平面”和“或平面”,即“与连接阵”和“或连接矩阵”,以及仅可编程一次的连接矩阵(因为编程基于的是熔丝工艺),因此可以实现一些相对复杂的与、或多项表达式的逻辑功能,PLA 内部结构如图下所示。

BlogImage-20211116212458

可编程只读存储器 PROM

PLA 同时问世的还有 可编程只读存储器PROM ( Programmable Read-Only Memory),PROM 内部结构如下图所示。

BlogImage-20211116212529

PLA 相同,PROM 内部包含“与连接矩阵”和“或连接矩阵”,但是与门的连接矩阵是硬件固定的,只有或门的连接矩阵可编程

可编程阵列逻辑器件 PAL

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

BlogImage-20211116212558

通用阵列逻辑器件 GAL

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

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

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

BlogImage-20211116212647

可编程逻辑器件 CPLD

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

CPLD是由GAL发展起来的,其主体结构仍是与或阵列,自20世纪90年代初Lattice公司开发出具有在系统可编程功能ISP)的CPLD以来,CPLD发展迅速。具有ISP功能的CPLD器件由于具有同FPGA器件相似的集成度和易用性,在速度上还有一定的优势,使其在可编程逻辑器件技术的竞争中与FPGA并驾齐驱,成为两支领导可编程器件技术发展的力量之一。

复杂可编程逻辑器件 CPLD(Complex Programmable Logic Device)可以看成是 PLA 器件结构的延续,一个 CPLD 器件也可以看作若干个 PLA 和一个可编程连接矩阵的集合。CPLD 内部结构图如图所示。

BlogImage-20211116212720

现场可编程门阵列FPGA

FPGA是一种高密度的可编程逻辑器件,自从Xilinx公司1985年推出第一片FPGA以来,FPGA
的集成密度和性能提高很快,其集成密度高达千万门/片以上。由于FPGA器件集成度高、方便
易用、开发和上市周期短,在数字设计和电子生产中得到迅速普及和应用,并一度在高密度的
可编程逻辑器件领域中独占鳌头。

FPGA CPLD 并称为高密度可编程逻辑器件,但它们有着本质的区别

  • FPGA 芯片的内部架构并没有沿用类似 PLA 的结构,而是采用了逻辑单元阵列LCA(Logic Cell Array)这样一个概念,改变以往 PLD 器件大量使用与门、非门的思想,大量使用查找表和寄存器
  • 除此之外,在资源类型、速度等方面 FPGA CPLD 也存在差异

FPGA 的类型从内部实现机理来讲,可以分为几类,分别是:基于 SRAM 技术基于反熔丝技术基于 EEPROM/FLASH 技术

电路结构来讲,FPGA 可编程是指三个方面的可编程:可编程逻辑块可编程 I/O可编程布线资源

可编程逻辑块是 FPGA 可编程的核心,我们上面提到的三种技术也是针对可编程逻辑块的技术。FPGA 结构图如图所示。

BlogImage-20211116212825

这样的CPLD/FPGA实际上就是一个子系统部件。这种芯片受到世界范围内电子工程设计人员的广泛关注和普遍欢迎。经过了十几年的发展,许多公司都开发出了多种可编程逻辑器件。比较典型的就是XilinxAltera公司的CPLD/FPGA系列器件,它们开发较早,占用了较大的PLD市场。

FPGA和CPLD的比较

CPLDFPGA对照情况如下。

BlogImage-20211116212752

结构

FPGA多为查找表加寄存器结构,大多数使用SRAM工艺,也包含FlashAnti-Fuse等工艺。

CPLD多为乘积项结构,使用FlashEEPROM工艺。

集成度

FPGA可以达到比CPLD更高的集成度,同时也具有更复杂的布线结构和逻辑实现

适合类型

CPLD组合逻辑的功能很强,一个宏单元就可以分解成十几个甚至30多个组合逻辑输入。

FPGA的一个查找表LUT只能处理4输入的组合逻辑。

因此,CPLD更适合完成各种算法和组合逻辑,而FPGA更适合于完成时序逻辑。换句话说,CPLD更适合于触发器有限而乘积项丰富的结构,而FPGA更适合于触发器丰富的结构。

功率消耗

一般情况下,CPLD功耗要比FPGA大,且集成度越高越明显

布线资源

FPGA具有丰富的分布式布线资源、布线灵活,但是时序难以预测,一般需要时序约束、时序仿真来验证时序性能。

CPLD由于逻辑块互连是集总式的,相对布线资源有限

编程方式

目前的CPLD主要是基于EEPROMFLASH存储器编程,编程次数达1万次

  • 其优点是在系统断电后,编程信息不丢失。
  • CPLD又可分为在编程器上编程和在系统编程ISP)两种。ISP器件的优点是不需要编程器,编程、调试和维护都很方便。

FPGA大部分是基于SRAM编程

  • 缺点是编程数据信息在系统断电时丢失,每次上电时,需从器件的外部存储器或计算机中将编程数据写人SRAM中。
  • 优点是可进行任意次数的编程,并可在工作中快速编程,实现板级和系统级的动态配置,因此可称为在线重配置(ICR:In CircuitReconfigurable)的PLD或可重配置硬件(RHP:Recontfigurable Hardware Product)。

FPGA和单片机的比较

  • 首先,它们在硬件架构上不同,单片机无论是MCU还是MPU都是基于控制器和算术逻辑单元进行工作的,而FPGA基于查找表的硬件电路进行工作的,这一点正同于单片机用的是软件设计语言而FPGA用的是硬件描述语言一样;
  • 其次,FPGA在芯片容量、组合逻辑、工作速度、设计灵活上远优于单片机
  • 最后,在代码的设计思想上也不一样,单片机使用的是串行的设计思想,而FPGA则使用的是并行的设计思想

总结

主要介绍了FPGA的发展历程。

其它

相关资源下载

FPGA开发学习参考教程.rar-嵌入式文档类资源-CSDN文库

常见问题

最近更新

查看本文最近更新请点击

小有收获

有收获记得三连哦::smile:

有收获记得三连哦

欢迎关注微信公众号

所有文章同步更新。

weixingognzhonghaoerweima