前言
讲述FPGA前,我们先讲讲当年中兴被制裁的问题。
美国前总统特朗普曾经发布过一条禁令,由于中兴违反了美国的某个条例,禁止美国已经国外任何一家公司向中兴销售FPGA芯片。
这个时候,一定会有抬杠青年说,我见过国内生产的FPGA芯片,还用过呢。【通常遇到这一类质疑声,我一般都会说:你是对的!】
后来中兴没有办法,只能妥协了,美国派了人入驻中兴,还签了一些协议。最后才恢复到原来的买卖关系中。
要知道CPU、GPU、FPGA三者能力相加就是芯片的未来!
FPGA门槛之高在芯片行业里无出其右。
FPGA是一个本领群集型的行业,没有坚实的本领功底,很难造成有角逐力的产物。
什么是FPGA?
FPGA(Field-Programmable Gate Array),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。FPGA 是一种硬件可重构的体系结构。它的英文全称是Field Programmable Gate Array,中文名是现场可编程门阵列。
FPGA就是一个可以通过编程来改变内部结构的芯片,FPGA常年来被用作专用芯片(ASIC)的小批量替代品,
同时也在微软、百度等公司的数据中心大规模部署,以同时提供强大的计算能力和足够的灵活性。
在没有FPGA之前,要想实现一个新计算机体架构的设计想法,必须要开发一个ASIC作为原型,在面板上安装很多个体积庞大的IC。但是,与这些需要投入巨大成本和精力的方式不同,一旦用户创建了具有多个FPGA的原型板,就可以立即运行您设计的新架构。而且,修正和更改规格也变得轻松简单。要知道、流片的价格可不低!因此,许多新的架构应运而生因此,对可重构处理器的研究和对新FPGA架构的研究也开始蓬勃发展,在此之后,FPGA使用灵活,适用性强的特征在通信/图像处理领域也大获好评,并将其应用于路由器等通信网络的各种设备中。与ASIC的概念截然相反,FPGA的概念是在短时间能以低成本让用户得到想要的逻辑。
它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。
FPGA的诞生背景
Xilinx首创了FPGA这一创新性的技术,并于1985年首次推出商业化产品“XC2000”。
当时的半导体器件以CMOS LSI为主流,相继出现了大规模的逻辑系统。“门阵列”是当时将逻辑系统LSI化的最简单方法。门阵列是指由半导体厂商准备出已经在硅片上形成了被称为基本单元的逻辑门的母板,通过按照用户希望的电路进行布线,在母板上形成电路的半客户定制品芯片。虽然是ASIC(Application Specific Integrated Circuit)中设计和开发的成本和周期最短的,但仍需要几个星期的开发时间。
另一方面,从PROM(Programmable Read Only Memory)派生出来的现场可编程器件PLA(Programmable Logic Array)得到广泛应用。PLA为一个逻辑器件,用户进行现场(应用领域)编程。PLA是以集成结构为特征的逻辑LSI,它能够通过与PROM程序相同的设备,写入连接信息。然后,EPROM和EEPROM之类的新设备相继出现,因为实用且容易使用而广受欢迎。然而,还是难以自由实现任意的大规模逻辑,它们都只能起到辅助作用。
在这样的背景下出现的XC2000系列,是PLA领域第一款兼容现场可编程性和门阵列设计自由度的FPGA器件。通过将用户设计的逻辑信息和布线信息加载到内置SRAM型存储单元结构的存储中,使回路按照设计作动。
在FPGA诞生的初期,计算机研究员是最先感受到FPGA的巨大优势的。在此之前,要想实现一个新计算机体架构的设计想法,必须要开发一个ASIC作为原型,在面板上安装很多个体积庞大的IC。但是,与这些需要投入巨大成本和精力的方式不同,一旦用户创建了具有多个FPGA的原型板,就可以立即运行您设计的新架构。而且,修正和更改规格也变得轻松简单。因此,许多新的架构应运而生因此,对可重构处理器的研究和对新FPGA架构的研究也开始蓬勃发展,在此之后,FPGA使用灵活,适用性强的特征在通信/图像处理领域也大获好评,并将其应用于路由器等通信网络的各种设备中。
国外FPGA厂家
目前国外FPGA的两大主要厂商为xilinx和altera。
Xilinx:公司网址为:www.xilinx.com。FPGA市场的龙头老大,市场份额接近50%,其主要产品包括:Sparten系列、Virtex系列、Artix系列、Kintex系列、Virtex系列等
开发工具:其第六代及以前的产品的开发工具为ISE ,从第七代产品开始,已全部转移到vivado平台。
Altera:公司网址为:www.altera.com,FPGA市场的二当家,市场份额40%以上,2015年6月被Intel以167亿美元收购。主要产品包含:Max系列、Cyclone系列、Arria系列、Stratix系列等。主要开发工具:Quartus
此外,Lattice、Actel、Atmel等公司也有FPGA产品,由于市场份额小,市面上很少见到,此处不再介绍。
国产FPGA厂商
国内的FPGA厂商主要为安路和紫光同创。
上海安路信息科技股份有限公司(688107.SH),创立于2011年11月,是国内领先的集成电路设计企业。公司具备FPGA芯片硬件和FPGA编译软件的自主研发能力,专注于研发通用可编程逻辑芯片技术及系统解决方案。
于2021年在上交所科创板成功上市,成为A股首家专注于FPGA业务的上市公司。公司根植本土,面向世界,矢志改变行业格局,以成为全球可编程逻辑器件一流的供应商为愿景。
深圳市紫光同创电子有限公司,专业从事可编程系统平台芯片及其配套EDA开发工具的研发与销售,致力于为客户提供完善的、具有自主知识产权的可编程逻辑器件平台和系统解决方案。紫光同创注册资本5亿元,总投资超过40亿元,是国家高新技术企业,拥有高中低端全系列产品,产品覆盖通信、工业控制、图像视频、消费电子等应用领域。紫光同创立足中国大陆,总部设立在深圳,拥有北京、上海、成都等研发中心;员工总人数超过800人,其中80%为研发人员,团队规模大、技术实力雄厚;知识产权申请超过700项、核心知识产权申请占比近80%。
此外还有高云, 复旦微,智多晶,AGM,晶微齐力等,由于市场份额小,市面上很少见到,此处不再介绍。
FPGA的工作原理
那么,从现在开始我们来具体说明FPGA的工作原理。第一个话题是关于构成逻辑电路的基础—程序。FPGA的程序到底在哪儿呢?对于SRAM型,程序被记录在 FPGA 的闪存或 EEPROM 等外部储存器中。
当SRAM型FPGA上电时,程序文件从外部储存中载入。这里被加载的程序文件称为“Bit Stream Data(比特流数据)”。 这些信息被加载到配置存储器中,该存储器由FPGA中的SRAM型存储器单元组成。被加载的比特流数据的各个bit,成为了在FPGA上实现用户所需要的回路的信息源,它把FPGA设备上的资源进行客户化,从而实现要求的回路。这与PC等CPU的启动过程非常相似。它不依赖于硬件,而是通过连接在外部储存器内的配置数据实现,有很高的普遍性和灵活性。
第二个话题是关于FPGA内部结构的说明。FPGA可分为6大部分(如图3),分别为:
- I/O:可编程输入/输出单元(I/O单元)
- 内部布线:丰富的布线资源
- 逻辑单元:可配置逻辑块(CLB)
- 时钟网络:数字时钟管理模块(DCM)
- JTAG边界扫描电路
- 块RAM・乘法器:嵌入式块RAM
图3
首先,我们针对FPGA的特征“逻辑单元”进行说明(图4)。 FPGA逻辑单元通常由两个4或6输入的“表”(Look Up Table:LUT)和“触发器”(Flip Flop)组成。
图4
一旦SRAM的地址部分有信号输入,就会在LUT中查找对应地址的数据并输出。
图4展示了AND的使用场景。地址全为1的地方,对应写入high(1)的数据,否则全写入low(0)。因此,当输入全部是“1”时,输出始终是“1”。然后触发器再与系统时间同步,输出数据。逻辑单元分布在整个FPGA上,通过内部布线的连接,实现用户期望的功能。
“I/O”主要位于FPGA与外界电路接口的位置,与外部的信号进行信号交换。如今,有超过20种电压等级和规格的I/O可供开发者灵活使用,能自由地实现电路板上的布线。
“内部布线”是通过逻辑单元和I/O单元等的连接,来实现用户的功能。
时钟网络是用于配置FPGA内部时钟的资源。可提供整个FPGA上的全局时钟和本地使用的局部时钟,能在不同的位置实现最佳的电路动作。特别是对于同步电路的设计是必不可少的。
“JTAG边界扫描电路”是为了测试而提供的功能。
“块RAM・乘法器“是用于实现逻辑的资源。如图3所示,FPGA通过在电路内提供均分的块RAM,用户可以不受FPGA内电路的位置限制,进行运算处理和数据保持。
另外,逻辑单元内的查询表不仅可以用作逻辑的实现,还可以当做小型存储器使用(4输入的LUT是16位存储器)。因此,在块RAM之外,可以增加局部存储。在这种情况下,将LUT被称为“分布式存储”。
将以上6种资源组合在一个硅片上,几乎可以在FPGA内不受限制的实现用户所需要的大部分功能。
FPGA架构入门
FPGA产品种类多种多样,但原理都是相同的。我们只要理解了其基本结构,学习起来还是非常轻松的。
在介绍FPGA之前,先对数字电路中所学的知识做一个简单的回顾。
现如今的集成电路绝大部分采用CMOS工艺,CMOS电路是互补型金属氧化物半导体电路(Complementary Metal-Oxide-Semiconductor)的英文字头缩写,它由绝缘场效应晶体管组成,由于只有一种载流子,因而是一种单极型晶体管集成电路,其基本结构是一个N沟道MOS管和一个P沟道MOS管。NMOS和PMOS可以认为是两种开关电路,两种电路均包含G(栅极)、D(漏极)、S(源极)三个极:
对于NMOS,当G为高电平时,D、S导通,否则截止
对于PMOS,当G为低电平时,D、S导通,否则截止
一个NMOS和一个PMOS可构成一个CMOS反相器:
vi为高电平时,PMOS截止,NMOS导通,vo输出低电平
vi为低电平时,PMOS导通,NMOS截止,vo输出高电平
其逻辑表达式可写成 :
同理,可构成CMOS的与非门、或非门
通过非门、与非门、或非门可实现所有的组合逻辑电路,多个与非门可组成一个带有复位、置位功能的D触发器,而D触发器则是时序逻辑电路的最核心部件。
由此可知,通过非门、与非门、或非门的有序堆叠,可实现任意功能的数字电路,如果有一款电路,其基本单元可配置成各种基本门,则其就具备了硬件编程能力。FPGA就是这种芯片,它基于查找表(LUT:Look Up Table)技术的可编程逻辑器件,通过配置,LUT可实现与门、或门、与非门、或非门或者其他简单组合逻辑功能,其本质上就是1bit位宽的RAM
我们以一个2输入的查找表为例,来做讲解
以目前比较流行的Spartan6芯片为例,来说明
其最底层便是一个6输入查找表(可拆成两个5输入LUT使用)以及两个D触发器的结构
Slice是Xilinx FPGA的最基本单元,包含4个6输入LUT及8个D触发器
Xilinx的FPGA中包含三类Slice :SliceL、SliceM、SliceX,三类slice本质上是相同的,只不过在细节上有一些差别,此处不再详细展开。
CLB(Configurable Logic Blocks)是Sparten6 的主要资源,包含两个Slice,如下图所示:
多个CLB再加上丰富的互联开关,便构成了Xilinx公司FPGA的最核心框架。
下图是xilinx一款型号为XC6SLC45T的FPGA在planAhead中的视图
从图中可以看出,FPGA内部,除了大量的CLB资源,用于实现可编程逻辑外,还有一些其它的硬件资源,包括block ram、内存控制器、时钟管理(CMT)单元、数字信号处理(DSP)端口控制(IOB)单元等,大大提高了其可编程性,几乎可以实现所有的数字电路功能。
下面是在planahead中对xc6slx4-2tqg144芯片的截图,通过这些图片,可以对其结构有一个整体的了解。更多的细节性问题,需要大家在实际使用过程中逐步掌握。
输入输出块,包含了焊盘及其相关电路
ILOGIC、OLOGIC、IODELAY部分
Slice
Slice
block ram资源
时钟管理单元
时钟驱动电路
FPGA依靠其强大、全方面、多维度的可编程能力,在航空航天、电子通信、银行金融、医疗设备、信息存储、数据处理、ASIC原型验证等许多行业或领域发挥着极其重要的作用.
没有回复内容