FPGA 简介
通过前面的介绍,我们知道
ZYNQ
中集成了
ARM
处理器与
FPGA
。
ZYNQ
作为一款全可编程
SoC
,其 FPGA
的硬件可编程性功不可没。那么
FPGA
是什么呢,它的灵活性又从何而来呢?
1
) 数字集成电路的发展
在数字集成电路中,门电路是最基本的逻辑单元,用以实现最基本的逻辑运算(
与
、
或
、
非
)和复合 逻辑运算(与非
、
异或
等)。与上述逻辑运算相对应,常用的门电路有
与
门、
或
门、
非
门、
与非
门、
异或 门等,其电路符号如下图所示:
基本的门电路符号
在最初的数字逻辑电路中,每个门电路都是用若干个分立的半导体器件和电阻、电容连接而成的。不难想象,用这种单元电路组成大规模的数字电路是非常困难的,这就严重制约了数字电路的普遍应用。1961年,美国德州仪器公司(TI
)率先将数字电路的元器件制作在同一片硅片上,制成了集成电路(Intergrated Circuits,
IC
),并迅速取代了分立器件电路。
早期的数字逻辑设计需要设计师在一块电路板上或者如下图所示的面包板上用导线将多个芯片连接在 一起。每个芯片包含一个或多个逻辑门,或者一些简单的逻辑结构(比如触发器或多路复用器等)。如下 图中所示的芯片是在 1960
和
1970
年代,很多设计中都会使用的德州仪器
7400
系列的器件。
使用 74 系列器件搭建的电路
自
20
世纪
60
年代以来,随着集成电路工艺水平的不断进步,集成电路的集成度也不断提高。数字集 成电路经历了从小规模集成电路(Small Scale Integrated circuit
,
SSI
),到中规模集成电路(
Medium Scale ntegrated circuit,
MSI
),再到大规模集成电路(
Large Scale Integrated circuit
,
LSI
),然后是超大规模集 成电路(Very Large Scale Integrated circuit
,
VLSI
),以及甚大规模集成电路(
Ultra Large Scale Integrated circuit
,
ULSI
)的发展过程。今天我们已经可以把十分复杂的数字系统制作在一个很小的硅片上,构成“片上系统”。
2) FPGA 的由来
我们从逻辑功能的特点上将数字集成电路分类,可以分为通用型和专用型两类。前面介绍到的中、小
规模集成电路(如
74
系列)都属于通用型数字集成电路。它们的逻辑功能都比较简单,而且是固定不变的。
由于它们的这些功能在组成复杂数字系统时经常要用到,所以这些器件具有很强的通用性。
从理论上来讲,用这些通用型的中、小规模集成电路可以组成任何复杂的数字系统。随着集成电路的
集成度越来越高,如果能把所设计的数字系统做成一片大规模集成电路,则不仅能减小电路的体积、重量
和功耗,而且可以使电路的可靠性大为提高。像这种为某种专门用途而设计的集成电路称为专用集成电路,
即所谓的
ASIC
(
Application Specific Integrated Circuit
)。
ASIC
的使用在生产、生活中非常普遍,比如手机、平板电脑中的主控芯片都属于专用集成电路。
虽然
ASIC
有诸多优势,但是在用量不大的情况下,设计和制造这样的专用集成电路不仅成本很高,而
且设计制造的周期也很长。可编程逻辑器件(
Programmable Logic Device
,
PLD
)的出现成功解决了这个矛 盾
可编程逻辑器件
PLD
是作为一种通用器件生产,但它的逻辑功能是由用户通过对器件进行编程来设定 的。而且有些 PLD
的集成度很高,足以满足设计一般数字系统的需要。这样就可以由设计人员自行编程从 而将一个数字系统“集成”在一片 PLD
上,做成“片上系统”(System on Chip,
SoC
),而不必去请芯片 制造厂商设计和制作专用集成电路芯片了。 最后,我们再来总结一下这三种数字集成电路之间的差异。通用型数字集成电路和专用集成电路内部
的电路连接都是固定的,所以它们的逻辑功能也是固定不变的。而可编程逻辑器件则不同,它们内部单元 之间的连接是通过“写入”编程数据来确定的,写入不同的编程数据就可以得到不同的逻辑功能。
自
20
世纪
70
年代以来,PLD 的研制和应用得到了迅速的发展,相继开发出了多种类型和型号的产品。 PLD 的发展历程如下图所示:
目前常见的
PLD
大体上可以分为
SPLD
(
simple PLD
,简单
PLD
)、
CPLD
(
complex PLD
,复杂
PLD
) 和 FPGA
(
field-programmable gate array
,现场可编程门阵列)。
SPLD
中又可分为
PLA
、
PAL
和
GAL
几种
类型。
FPGA
也是一种可编程逻辑器件,但由于在电路结构上与早期已经广为应用的
PLD
不同,所以采用 FPGA 这个名称,以示区别。
通过对数字电路的学习我们知道,任何一个逻辑函数式都可以变换成
与
-
或
表达式,因而任何一个逻辑 函数都能用一级与
逻辑电路和一级
或
逻辑电路来实现。
PLD
最初的研制思想就来源于此。