《FPGA全程进阶---实战演练》第一章之FPGA介绍

时间:2023-04-11 11:33:14

1 什么是FPGA

FPGA也即是Field Programmable Gate Array的缩写,翻译成中文就是现场可编程门阵列。FPGA是在PAL、GAL、CPLD等可编程器件的基础上发展起来的新型高性能产物,是作为专用集成电路(ASIC)领域中的一种半定制电路出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。图1.1是Altera Cyclone V芯片。

《FPGA全程进阶---实战演练》第一章之FPGA介绍

图1.1 Altera Cyclone芯片

说到这里,不得不提ASIC,即专用集成电路(Application specific integrated circuit),ASIC无处不在,实际上比FPGA普及的多。但ASIC作为专用集成电路,功能相对来说较固定,不能让它进行任何功能和性能的改善,而这时FPGA的优势就体现出来,作为可操纵的“白纸”,我们可以灵活的在FPGA上面实现可编程,实现功能定制与修改,降低产品的失败风险和维护成本。目前FPGA也正在向高集成、高性能、低功耗、高灵活性的方向发展,已在数据传输,视频图像处理等领域得到了广泛的应用。

2 FPGA与CPLD

作为“老大哥”的CPLD,它没有FPGA性能的惊艳,但也常用到一些场合,FPGA与CPLD的区别表1.1所示。

表1.1 FPGA与CPLD比较

《FPGA全程进阶---实战演练》第一章之FPGA介绍《FPGA全程进阶---实战演练》第一章之FPGA介绍

由上面可以看出,CPLD大多都是基于PROM或Flash来实现可编程特性,对它们进行编程时就已经配置好数据流固化好了,重新上电还能够运行固有的配置数据。FPGA大多是基于SRAM来实现可编程,通过JTAG实现在线可编程,当断电时SRAM数据丢失,不能恢复,因此FPGA通常需要外挂一个用于保存当前配置数据流的PROM或Flash芯片,通常称为“配置芯片”,CPLD则不需要。

3 FPGA 、DSP、 ARM群芳争艳

话说这三者要是放在一块,可谓是三足鼎立。各自的特点在各自的领域大有身手。ARM有丰富的外设接口,精于控制,且基于ARM架构开发的芯片具有较低的功耗,使得续航时间大大延长(移动端);DSP有优化的超强运算能力,专于运算处理;而FPGA则极其灵活,加之具备硬件独有的并行结构,使其在图像处理,接口协议等方面应用广泛。

第一,在编程语言方面,FPGA利用VHDL或Verilog语言进行编程,相比C/C++语言编程来说,在代码灵活度和开发效率上还有欠缺。

第二,从资源配置来看,ARM、DSP等处理器集成了运算单元、存储单元及大量的总线接口,只需正确配置各个寄存器参数后即可使总线接口工作在相应的模式下。而FPGA内部有大量的逻辑资源,总线接口需要自拟,会占用大量的开发时间。

第三,从工作频率来看,ARM、DSP等处理器采用的是成熟的内核结构,具有较好的时序特性,其最高频率通常为600MHz ~1.25GHz。TI等芯片厂商采用多核的设计方式,设计了具有8核DSP、8核ARM的处理器,每个核心的最大工作频率可达到1.25GHz。FPGA中不同设计系统工作频率不一样,良好的时序约束可以提高设计的最高设计频率。

第四,从算法设计来看,ARM、DSP等处理器集成了加法器、乘法器等运算单元,尤其是在DSP中,可以在一个周期内进行8x8甚至16x16的乘法运算,同时支持浮点数运算。而FPGA不擅长浮点数运算,一些简单的加法可能也会对时序产生一定的影响,进而影响最高频率。

针对上述情况,拿Altera公司来说,针对第一点,推出了Qsys等片上软核,使工程师在FPGA中可以进行更为灵活的C语言编程。Qsys中集成了常用的IP,可以方便的定制,缓解开发周期;针对第二点,Altera提供了各行各业的IP,其中部分免费,部分需要购买。针对第三点,在高速数据处理过程中,FPGA以其独有的并行结构,相比于ARM、DSP串行结构,其优势更加明显。针对第四点,Altera FPGA中内嵌了多个DSP模块,每个DSP模块中包含加法器和乘法器结构,根据系列的不同,具有不用的位宽,结合流水线的形式完成运算操作。Altera又推出了嵌入了双核28nm的ARM Cortex-A9的FPGA,同时拥有足够的DSP块和足够的乘法器资源,实现FPGA+DSP+ARM架构。以此架构来实现高速运算,并集成在单片SoC FPGA中,这必定是一种趋势。图1.2展示了Cyclone V代集成ARM的SoC芯片。

《FPGA全程进阶---实战演练》第一章之FPGA介绍

图1.2 Altera SoC

4 FPGA 厂商之争

关于FPGA最近有一个比较轰动的新闻,Intel收购Altera。其实早在2013年,Intel和Altera就已经开展合作,Altera FPGA采用Intel 14nm技术,帮助客户设计业界最先进、性能最好的FPGA。Intel收购Altera之举,算是在移动互联网(长期ARM架构占据主导地位)以及云计算物联网方面占据了一片天地,最起码和对手站在了同一起跑线上。目前Intel在未来会在FPGA+x86异构设计芯片上持续投入,将FPGA和Xeon系列处理器整合在同一硅胶模块中,这无疑会大大提升处理器速度,但能不能被市场所接受就不得而知了。

占据前三的FPGA厂商,Altera,Xilinx以及lattice,当然还有一些厂商的加入,但这都不是主业务,Atmel、Cypress公司等,其中Altera和Xilinx所占的份额最多,两厂商Xilinx和Altera纷纷推出了嵌入双核28nm Cortex-A9的SoC FPGA。Xilinx的芯片的架构是先组合,后时序,而且基于细颗粒查找表结构、丰富的寄存器资源,以及分段式路由布线结构、电路上电加载。这种架构优点在于:(1)电路的规模得到空前提高;(2)适合做加减法运算;(3)无限制更新电路。而Altera芯片中拥有高速嵌入式RAM及嵌入式PLL,其架构在于:(1)采用多选一或一对多的MUX结构,实现三态门功能;(2)ESB的Memory结构,可以构成FIFO、DPRAM、大型查找表;(3)布线资源以长线资源为主,编译速度快。Altera还有一个重要合作商就是友晶科技有限公司,在其推动下,Altera大学计划做的有声有色,其基于Altera FPGA开发的开发板DE系列也是大家最常用的开发板。图1.3是友晶公司开发的一款DE1-SOC开发板。

《FPGA全程进阶---实战演练》第一章之FPGA介绍

图1.3 DE1-SOC开发板

国内的FPGA厂商—京微雅格科技有限公司,是中国唯一一家FPGA厂商。其以FPGA+8051架构的集成,是可配置应用技术的首创者和领导者。通过可配置IP的定制,协同8051内核开发,以硬件并行操作与软件线程处理的架构,是另一种SoC FPGA。图1.4是京微雅格开发板。

《FPGA全程进阶---实战演练》第一章之FPGA介绍

图1.4 京微雅格开发板

正是上述厂商的不同特点,不断地创新技术,不断地推动社会快速发展。

5 FPGA应用场合

FPGA因其固有的灵活性和并行性,应用领域也是越来越广泛。FPGA是万能,但要其为所欲为却是万万不能的。FPGA具体应用场合如下:

(1) 实时控制,高速扫描:大型LED屏幕和超高清、高清分辨率的LCD的场合,在电机设备的驱动方面也会涉及;

(2) 高速信号的采集与预处理:高速A/D前端采集或图像的预处理,利用FPGA并行特性,在视频领域也是具有独到的优势。

(3) 高速并行数据传输:FPGA可以轻松实现以太网协议,PCI-e接口和LVDS接口等信号传输;

(4) 不同电平之间的转接板:由于不同处理芯片的内核电压和存储器的工作电压越来越低,且不同,这会涉及较多的电平匹配和转换问题,可以利用FPGA作为上述电平的转换,节省电平转换芯片的成本。

(5) 片上系统:在复杂系统中,可以利用FPGA实现NIOS软核,协同硬件完成系统处理,大大减轻单板的布线压力。

对于上述讲到的高速接口协议部分,要求设计者懂得高速接口电路设计和高速数字电路板级设计,具备EMC/EMI设计知识,以及较好的模拟电路基础,需要解决在高速收发过程中产生的信号完整性问题。FPGA最初以及到目前最广的应用就是在通信领域,一方面通信领域需要高速的通信协议处理方式,另一方面通信协议随时在修改,非常不适合做成专门的芯片。因此能够灵活改变功能的FPGA就成为首选。到目前为止FPGA的一半以上的应用也是在通信行业。

对于片上系统部分,就是所谓的SOPC方向,其实严格意义上来说这个已经在FPGA设计的范畴之内,只不过是利用FPGA这个平台搭建的一个嵌入式系统的底层硬件环境,然后设计者主要是在上面进行嵌入式软件开发而已。设计对于FPGA本身的设计时相当少的。但如果涉及到需要在FPGA做专门的算法加速,实际上需要用到数字信号处理方面的知识,而如果需要设计专用的接口电路则需要用到高速接口协议的知识。

就目前SOPC方向发展其实远不如其他应用的几个领域,其主要原因是因为SOPC以FPGA为主,或者是在FPGA内部的资源实现一个“软”的处理器,或者是在FPGA内部嵌入一个处理器核。但大多数的嵌入式设计却是以软件为核心,以现有的硬件发展情况来看,多数情况下的接口都已经标准化,并不需要那么大的FPGA逻辑资源去设计太过复杂的接口。而且就目前看来SOPC相关的开发工具还非常的不完善,以ARM为代表的各类嵌入式处理器开发工具却早已深入人心,大多数以ARM为核心的SOC芯片提供了大多数标准的接口,大量成系列的单片机/嵌入式处理器提供了相关行业所需要的硬件加速电路,需要专门定制硬件场合确实很少。

常是在一些特种行业才会在这方面有非常迫切的需求。即使目前Xilinx将ARM的硬核加入到FPGA里面,相信目前的情况不会有太大改观,不要忘了很多老掉牙的8位单片机还在嵌入式领域混呢,嵌入式主要不是靠硬件的差异而更多的是靠软件的差异来体现价值的。Cypress公司的Psoc这一想法和SOPC系列不同,Psoc的思想史载SOC芯片里面去嵌入那么一小块FPGA,那这样其实可以满足嵌入式的那些微小的硬件接口差异,比如某个运用需要4个USB,而通常的处理器不会提供那么多,就可以用这么一块FPGA来提供多的USB接口。而另一种运用需要6个UART,也可以用同样的方法完成。