
目录
1 简介
FPGA 作为一种可编程的芯片,其结构和开发方式都与传统的 MCU 或 DSP 不同。
MCU 或 DSP 的设计,是主要进行软件程序设计,用户主要使用 C 语言完成各种控制和算法的实现,各种功能是在 CPU 的控制下按照顺序依次实现的。
FPGA 设计,实质是电路设计,是在一个可以现场编程的通用逻辑器件中去搭建各种具有一定功能的逻辑电路,各个逻辑电路间是各自独立的,能够并行执行。同时,各个功能电路之间又通过一定的控制和握手信号相互协调。
所 以,要想能够正确高效的开发和使用 FPGA,我们必须在此之前对其有一个充分细致的认识,包括对其硬件资源结构、硬件电路设计、开发环境等。这对于第一次接触 FPGA 的读者,能够起到指路的作用。
1.1 目标
了解 FPGA 的由来与特点。
1.2 阅读基础
熟悉计算机。
1.3 快速阅读
了解的部分跳过。
1.4 环境说明
windows10
1.5 参考资料
- 小梅哥教程:
02A_【学习教材】FPGA系统设计与验证实战指南_V3.002B_【学习教材】小梅哥FPGA逻辑设计进阶教程2020版V1.0
- 正点原子开拓者教程:
开拓者FPGA开发指南V1.5
- 野火征途教程:
征途Pro《FPGA Verilog开发实战指南——基于Altera EP4CE10》(上下)
2 FPGA 定义
FPGA(Field Programmable Gate Array,简称 FPGA),译文:现场可编程门阵列,一种主要以数字电路为主的集成芯片。
3 FPGA 发展历程
FPGA 于 1985 年由 Xilinx 创始人之一 Ross Freeman 发明,属于可编程逻辑器 PLD(Programmable Logic Device)的一种。真正意义上的第一颗 FPGA 芯片 XC2064 为 Xilinx 所发明,这个时间差不多比著名的摩尔定律晚 20 年左右,但 是 FPGA 一经发明,后续的发展速度之快,超出大多数人的想象。
在短短的三十多年时间里,FPGA 的角色已经由简单的逻辑粘合,发展到了现在的可编程片上系统。FPGA 的容量翻了几千几万倍,架构复杂度也提升了好几个水平。
3.1 数字集成电路发展
自 20 世纪 60 年代以来,数字集成电路经历了从 SSI(Small Scale Integrated circuit,小规模集成电路),MSI(Medium Scale Integrated circuit,中规模集成电路),LSI(Large ScaleIntegrated circuit,大规模集成电路) 到 VLSI(Very Large Scale Integrated circuit,超大规模集成电路) 的发展过程。
数字集成电路按照芯片设计方法的不同大致可以分为 3 类:
- 第一类是通用型中、小规模集成电路;
- 第二类是用软件组态的大规模、超大规模集成电路,如微处理器、单片机等;
- 第三类是专用集成电路
ASIC(Application-Speciftic Integrated Circuit)。ASIC是一种专门为某一应用领域或用户需要而设计制造的LSI或VLSI电路,它可以将某些专用电路或电子系统设计在一个芯片上,构成单片集成系统。ASIC分为全定制和半定制。
3.1.1 ASIC 全定制
全定制 ASIC 的硅片没有经过预加工,其各层掩模都是按特定电路功能专门制造的。
3.1.2 ASIC 分为半定制
半定制 ASIC 是按一定规格预先加工好的半成品芯片,然后再按照具体要求进行加工和制造,它包括门阵列、标准单元和可编程逻辑器件三种。
- 门阵列是一种预先制造好的硅阵列,内部包括基本逻辑门、触发器等,芯片中留有一定连线区,用户根据所需要的功能设计电路,确定连线方式,然后交给厂家进行最后的布线。
- 标准单元是厂家将预先配置好、经过测试、具有一定功能的逻辑块作为标准单元存在数据库中,设计者根据需要在库中选择单元构成电路,并完成电路到版图的最终设计。这两种定制
ASIC都要由用户向生产厂家定做,设计和制造周期较长,开发费用高,因此只适用于对研发周期要求不高、批量较大的产品。 - 可编程逻辑器件是
ASIC的一个重要分支,它是厂家作为一种通用型器件生产的半定制电路,用户可以利用软、硬件开发工具对器件进行设计和编程,使之实现所需要的逻辑功能。由于它是用户可配置的逻辑器件,使用灵活,设计周期短,费用低,而且可靠性高,承担风险小,因而很快得到普遍应用,发展非常迅速。
3.2 可编程逻辑器件 PLD
在可编程逻辑器件 PLD 未发明之前,工程师们使用包含若干个逻辑门的离散逻辑芯片进行电路系统的搭建,复杂的逻辑功能实现起来较为困难。
可编程逻辑器件(PLD,Programmable Logic Device)能够完成各种数字逻辑功能。典型的 PLD 由输入电路、与阵列、或阵列和输出电路组成,如图所示

而任意一个组合逻辑都可以用 ” 与 – 或 ” 表达式来描述,所以,PLD 能以乘积和的形式完成大量的组合逻辑功能。并且这些门电路的连接关系可以不断地用软件来修改。
3.3 可编程逻辑阵列 PLA
工程师们使用包含若干个逻辑门的离散逻辑芯片进行电路系统的搭建,复杂的逻辑功能实现起来较为困难。为了解决这一问题,20 世纪 70 年代,可编程逻辑阵列 PLA(Programmable Logic Array)问世。
PLA 中包含了一些固定数量的与门、非门,分别组成了 ” 与平面 ” 和 ” 或平面 “,即 ” 与连接阵 ” 和 ” 或连接矩阵 “,以及仅可编程一次的连接矩阵 (因为编程基于的是熔丝工艺),因此可以实现一些相对复杂的与、或多项表达式的逻辑功能,PLA 内部结构如图下所示。

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

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

3.6 通用阵列逻辑器件 GAL
在 PAL 的基础上,又发展出了通用阵列逻辑器件 GAL(Generic Array Logic),相比于 PAL 有两点改进:
一是采用了电可擦除的 CMOS 工艺,可多次编译,增强了器件的可重配置性和灵活性;
二是采用了可编程的输出逻辑宏单元 OLMC(Output Logic Macro Cell),通过编程 OLMC 可将 GAL 的输出设置成为不同状态,仅用一个型号的 GAL 就可以实现所有 PAL 器件输出电路的工作模式,增强了器件的通用性。GAL 结构图如图所示。

3.7 可编程逻辑器件 CPLD
早期的可编程逻辑器件主要由上述四种类型的芯片组成,即 PROM、PLA、PAL 和 GAL。它们的共同特点是可以实现速度特性较好的逻辑功能,但由于其结构过于简单所以只能实现规模较小的数字电路。
CPLD 是由 GAL 发展起来的,其主体结构仍是与或阵列,自 20 世纪 90 年代初 Lattice 公司开发出具有在系统可编程功能(ISP)的 CPLD 以来,CPLD 发展迅速。具有 ISP 功能的 CPLD 器件由于具有同 FPGA 器件相似的集成度和易用性,在速度上还有一定的优势,使其在可编程逻辑器件技术的竞争中与 FPGA 并驾齐驱,成为两支领导可编程器件技术发展的力量之一。
复杂可编程逻辑器件 CPLD(Complex Programmable Logic Device)可以看成是 PLA 器件结构的延续,一个 CPLD 器件也可以看作若干个 PLA 和一个可编程连接矩阵的集合。CPLD 内部结构图如图所示。

3.8 现场可编程门阵列 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 结构图如图所示。

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

3.9.1 结构
FPGA 多为查找表加寄存器结构,大多数使用 SRAM 工艺,也包含 Flash、Anti-Fuse 等工艺。
CPLD 多为乘积项结构,使用 Flash、EEPROM 工艺。
3.9.2 集成度
FPGA 可以达到比 CPLD 更高的集成度,同时也具有更复杂的布线结构和逻辑实现。
3.9.3 适合类型
CPLD 组合逻辑的功能很强,一个宏单元就可以分解成十几个甚至 30 多个组合逻辑输入。
FPGA 的一个查找表 LUT 只能处理 4 输入的组合逻辑。
因此,CPLD 更适合完成各种算法和组合逻辑,而 FPGA 更适合于完成时序逻辑。换句话说,CPLD 更适合于触发器有限而乘积项丰富的结构,而 FPGA 更适合于触发器丰富的结构。
3.9.4 功率消耗
一般情况下,CPLD 功耗要比 FPGA 大,且集成度越高越明显。
3.9.5 布线资源
FPGA具有丰富的分布式布线资源、布线灵活,但是时序难以预测,一般需要时序约束、时序仿真来验证时序性能。
CPLD 由于逻辑块互连是集总式的,相对布线资源有限。
3.9.6 编程方式
目前的 CPLD主要是基于 EEPROM 或 FLASH 存储器编程,编程次数达 1 万次。
- 其优点是在系统断电后,编程信息不丢失。
CPLD又可分为在编程器上编程和在系统编程(ISP)两种。ISP器件的优点是不需要编程器,编程、调试和维护都很方便。
FPGA大部分是基于 SRAM 编程,
- 缺点是编程数据信息在系统断电时丢失,每次上电时,需从器件的外部存储器或计算机中将编程数据写人
SRAM中。 - 优点是可进行任意次数的编程,并可在工作中快速编程,实现板级和系统级的动态配置,因此可称为在线重配置 (
ICR:In CircuitReconfigurable) 的PLD或可重配置硬件 (RHP:Recontfigurable Hardware Product)。
3.10 FPGA 和单片机的比较
- 首先,它们在硬件架构上不同,单片机无论是
MCU还是MPU都是基于控制器和算术逻辑单元进行工作的,而FPGA是基于查找表的硬件电路进行工作的,这一点正同于单片机用的是软件设计语言而FPGA用的是硬件描述语言一样; - 其次,
FPGA在芯片容量、组合逻辑、工作速度、设计灵活上远优于单片机; - 最后,在代码的设计思想上也不一样,单片机使用的是串行的设计思想,而
FPGA则使用的是并行的设计思想。
4 总结
主要介绍了 FPGA 的发展历程。
5 其它
5.2 小有收获
点赞 收藏 关注
本文作者原创,如若转载,请注明出处:
网站标题:心云之旅
网站地址:https://xysyf.cn
文章标题:【1】初识FPGA1_FPGA的由来与特点
文章链接:https://xysyf.cn/2024/12/25/%e3%80%901%e3%80%91%e5%88%9d%e8%af%86fpga1_fpga%e7%9a%84%e7%94%b1%e6%9d%a5%e4%b8%8e%e7%89%b9%e7%82%b9/
作者昵称:xysyf
作者链接:https://xysyf.cn/user/xysyf_cn
微信扫一扫
支付宝扫一扫