FPGA简介
FPGA(Field Programmable Gate Array)于1985年由xilinx创始人之一Ross Freeman发明,虽然有其他公司宣称自己最先发明可编程逻辑器件PLD,但是真正意义上的第一颗FPGA芯片XC2064为xilinx所发明,这个时间差不多比摩尔老先生提出著名的摩尔定律晚20年左右,但是FPGA一经发明,后续的发展速度之快,超出大多数人的想象,近些年的FPGA,始终引领先进的工艺。
FPGA的基本特点
相较于传统的集成芯片,FPGA具有如下特点:
1)重构性:
- 采用FPGA设计ASIC电路,用户不需要投片生产,就能得到合用的芯片。
2)高集成性:
- FPGA内部有丰富的触发器和I/O引脚。
3)高兼容性:
- FPGA采用高速CHMOS工艺,功耗低,可以与CMOS、TTL电平兼容。
FPGA的优势
FPGA目前在各领域的优势主要体现在其运算方面:
1)高速信号处理:
- 一般如果AD采样率高,数据速率高,这时就需要FPGA对数据进行处理,比如对数据进行抽取滤波,降低数据速率,使信号容易处理,传输,存储。
2)实时信号处理:
- FPGA用面积换速度,带有FPGA的异构计算,运算速度远超GPU或者ASIC。例如实时图像处理,雷达信号处理,医学信号处理等。
3)高并行度:
- 通过并发和流水两种技术实现。并发是指重复分配计算资源,流水是指没有数据依赖的多个模块可以以较短时延同步运行,使得多个模块之间可以同时独立进行计算。
FPGA应用的三个主要方向
第一个方向,也是传统方向,主要用于通信设备的高速接口电路设计,这一方向主要是用FPGA处理高速接口的协议,并完成高速的数据收发和交换。这类应用通常要求采用具备高速收发接口的FPGA,同时要求设计者懂得高速接口电路设计和高速数字电路板级设计,具备EMC/EMI设计知识,以及较好的模拟电路基础,需要解决在高速收发过程中产生的信号完整性问题。FPGA最初以及到目前最广的应用就是在通信领域,一方面通信领域需要高速的通信协议处理方式,另一方面通信协议随时在修改,非常不适合做成专门的芯片。因此能够灵活改变功能的FPGA就成为首选。到目前为止FPGA的一半以上的应用也是在通信行业。
第二个方向,可以称为数字信号处理方向或者数学计算方向,因为很大程度上这一方向已经大大超出了信号处理的范畴。例如将FPGA用于金融数据分析,亦或用于医学数据分析。在这一方向要求FPGA设计者有一定的数学功底,能够理解并改进较为复杂的数学算法,并利用FPGA内部的各种资源使之能够变为实际的运算电路。目前真正投入实用的还是在通信领域的无线信号处理、信道编解码以及图像信号处理等领域,其它领域的研究正在开展中。
第三个方向就是所谓的SOPC(可编程片上系统)方向,其实严格意义上来说这个已经不在FPGA设计的范畴之内,只不过是利用FPGA这个平台搭建的一个嵌入式系统的底层硬件环境,然后设计者主要是在上面进行嵌入式软件开发而已。设计对于FPGA本身的设计是相当少的。但如果涉及到需要在FPGA做专门的算法加速,实际上需要用到第二个方向的知识,而如果需要设计专用的接口电路则需要用到第一个方向的知识。
就目前SOPC方向发展其实远不如第一和第二个方向,其主要原因是因为SOPC以FPGA为主,或者是在FPGA内部的资源实现一个“软”的处理器,或者是在FPGA内部嵌入一个处理器核。但大多数的嵌入式设计却是以软件为核心,以现有的硬件发展情况来看,多数情况下的接口都已经标准化,并不需要那么大的FPGA逻辑资源去设计太过复杂的接口。而且就目前看来SOPC相关的开发工具还非常的不完善,以ARM为代表的各类嵌入式处理器开发工具却早已深入人心,大多数以ARM为核心的SOC芯片提供了大多数标准的接口,大量成系列的单片机/嵌入式处理器提供了相关行业所需要的硬件加速电路,需要专门定制硬件场合确实很少。通常是在一些特种行业才会在这方面有非常迫切的需求。目前Xilinx已经将ARMcortex- A9的硬核嵌入到FPGA里面,未来会对嵌入式的发展有很大推动。
FPGA的应用领域
一、数据采集和接口逻辑领域
1、FPGA在数据采集领域的应用
由于自然界的信号大部分是模拟信号,因此一般的信号处理系统中都要包括数据的采集功能。通常的实现方法是利用A/D转换器将模拟信号转换为数字信号后,送给处理器,比如利用单片机(MCU)或者数字信号处理器(DSP)进行运算和处理。
对于低速的A/D和D/A转换器,可以采用标准的SPI接口来与MCU或者DSP通信。但是,高速的A/D和D/A转换芯片,比如视频Decoder或者Encoder,不能与通用的MCU或者DSP直接接口。在这种场合下,FPGA可以完成数据采集的粘合逻辑功能。
2、FPGA在逻辑接口领域的应用
在实际的产品设计中,很多情况下需要与PC机进行数据通信。比如,将采集到的数据送给PC机处理,或者将处理后的结果传给PC机进行显示等。PC机与外部系统通信的接口比较丰富,如ISA、PCI、PCI Express、PS/2、USB等。
传统的设计中往往需要专用的接口芯片,比如PCI接口芯片。如果需要的接口比较多,就需要较多的外围芯片,体积、功耗都比较大。采用FPGA的方案后,接口逻辑都可以在FPGA内部来实现了,大大简化了外围电路的设计。
在现代电子产品设计中,存储器得到了广泛的应用,例如SDRAM、SRAM、Flash等。这些存储器都有各自的特点和用途,合理地选择储存器类型可以实现产品的最佳性价比。由于FPGA的功能可以完全自己设计,因此可以实现各种存储接口的控制器。
3、FPGA在电平接口领域的应用
除了TTL、COMS接口电平之外,LVDS、HSTL、GTL/GTL+、SSTL等新的电平标准逐渐被很多电子产品采用。比如,液晶屏驱动接口一般都是LVDS接口,数字I/O一般是LVTTL电平,DDR SDRAM电平一般是HSTL的。
在这样的混合电平环境里面,如果用传统的电平转换器件实现接口会导致电路复杂性提高。利用FPGA支持多电平共存的特性,可以大大简化设计方案,降低设计风险。
二、高性能数字信号处理领域
无线通信、软件无线电、高清影像编辑和处理等领域,对信号处理所需要的计算量提出了极高的要求。传统的解决方案一般是采用多片DSP并联构成多处理器系统来满足需求。
但是多处理器系统带来的主要问题是设计复杂度和系统功耗都大幅度提升,系统稳定性受到影响。FPGA支持并行计算,而且密度和性能都在不断提高,已经可以在很多领域替代传统的多DSP解决方案。
例如,实现高清视频编码算法H.264。采用TI公司1GHz主频的DTISP芯片需要4颗芯片,而采用Altera的StraTIxII EPT2S130芯片只需要一颗就可以完成相同的任务。FPGA的实现流程和ASIC芯片的前端设计相似,有利于导入芯片的后端设计。
三、其他应用领域
除了上面一些应用领域外,FPGA在其他领域同样具有广泛的应用。
(1)汽车电子领域,如网关控制器/车用PC机、远程信息处理系统。
(2)军事领域,如安全通信、雷达和声纳、电子战。
(3)测试和测量领域,如通信测试和监测、半导体自动测试设备、通用仪表。
(4)医疗领域,如医用电子仪器。