1.3 FPGA的应用方向
学习一项技术,最开始就会有许多问题:这项技术可以用来做什么,能够发挥多大的作用,我们为什么要学,等等。在正式开始学习FPGA之前,读者可以通过本节内容了解FPGA的应用方向(见图1-10)。
FPGA介于软件和硬件之间,用它做接口、做通信,它就偏向硬件;用它做算法、做控制,它就偏向软件。随着人工智能、机器视觉的崛起,FPGA更加偏向软件算法的异构,有和GPU一争高下的潜力。FPGA与GPU性能对比图如图1-11所示。
图1-11 FPGA与GPU的性能对比图
▪ FPGA软件方向:以软件开发为主,开发FPGA在数据分析、人工智能、机器视觉等领域的加速应用能力,主要采用OpenCL和HLS技术实现软硬件协同开发。
▪ FPGA硬件方向:以逻辑设计为主,针对FPGA特定领域的应用设计、集成电路设计以及芯片验证能力。
FPGA最初的应用领域是通信领域,但是随着信息产业和微电子技术的发展,FPGA技术已经成为信息产业最热门的技术之一,应用范围扩大,遍及航空航天、汽车、医疗、广播、测试测量、消费电子、工业控制等热门领域,而且随着工艺的发展和技术的进步,从各个角度开始渗透到生活当中。下面我们简单列举目前FPGA应用得比较广泛的几个领域,只有清楚了这些应用领域,才能谋求更大的发展空间。
▪ 通信方向:通信领域是FPGA应用的传统领域,发展至今依然是FPGA的应用和研究热点。这里我们将通信领域分成有线通信领域和无线通信领域。FPGA和其他ASIC芯片最大的不同在于它的可编程特性。FPGA在通信领域几乎是万能的,FPGA能做什么,很大程度上取决于用户的设计能力。
·有线通信领域:从广域网、城域网到移动回程接入网和基于xPON的接入网,FPGA都可提供全套的解决方案来进行产品的快速开发。如目前的MSTP产品,从PDH到SDH,从EoP到EoS,所有的功能都可用FPGA实现;如PTN产品的OAM、QoS、PTP、以太网协议转换等;如OTN产品,从ODU到OTU,以及SAR、Interlaken、Fabric等;再如目前接入的主流技术XPON产品,都可以用FPGA实现功能。
·无线通信领域:由于FPGA自身嵌入了处理器(SOPC),这使FPGA的应用更加广泛,具体应用领域如实现语音合成、纠错编码、基带调制解调,以及系统控制等功能;实现定时恢复、自动增益和频率控制、符号检测、脉冲整形以及匹配滤波器等。但由于无线领域需要进行大量的复杂数学运算,因此对FPGA的要求非常高。FPGA在无线领域的应用示例如图1-12所示。
图1-12 FPGA在无线领域的应用示例
▪ 视频图像处理方向:视频图像处理自始至终都是多媒体领域的热门技术,特别是在人们不断追逐更高清、更真实的图像时,视频图像的处理数据量越来越大。用FPGA做图像处理最关键的一点优势就是:FPGA能进行实时流水线运算,能达到最高的实时性。因此在一些对实时性要求非常高的应用领域,做图像处理基本只能用FPGA。例如在一些分选设备中,图像处理基本上用的都是FPGA,因为在其中,相机从看到物料图像到给出执行指令之间的延时大概只有几毫秒,这就要求图像处理速度极快且延时固定,只有FPGA的实时流水线运算才能满足这一要求。如今嵌入式视觉的概念很宽,包括图像处理(ISP)、视频处理、视频分析等,这些功能都能在FPGA上实现。具体来说,在ISP方面,包括降噪、宽动态、去雾、3A等;在视频处理方面,包括缩放、去隔行、全景拼接、鱼眼矫正等;在视频分析方面,包括边缘、形状、纹理提取、物体检测、分类、背景建模等。产品示例包括全景相机、4K智能相机、高清微投、大屏显示等。FPGA在视频图像处理方向的应用示例如图1-13所示。
图1-13 FPGA在视频图像处理方向的应用
▪ 数字信号处理方向:无线通信、软件无线电、高清影像编辑和处理等领域,对信号处理所需要的计算量提出了极高的要求。传统的解决方案一般是采用多片DSP并联构成多处理器系统来满足需求,但是多处理器系统带来的主要问题是设计复杂度和系统功耗都大幅度提升,系统稳定性受到影响。FPGA支持并行计算,而且密度和性能都在不断提高,已经可以在很多领域替代传统的多DSP解决方案。例如,实现高清视频编码算法H.264。采用TI公司1GHz主频的DSP芯片需要4颗芯片,而采用Altera的StrtixII EP2S130芯片,只需要一颗芯片就可以完成相同的任务。FPGA的实现流程和ASIC芯片的前端设计相似,有利于导入芯片的后端设计。FPGA在数字信号处理方向的应用如图1-14所示。
图1-14 FPGA在数字信号处理方向的应用
▪ 高速接口方向:FPGA可以处理高速信号,如果AD采样率高,数据速率高,就需要使用FPGA对数据进行处理,比如对数据进行抽取滤波,降低数据速率,使信号容易处理、传输、存储。在实际的产品设计中,很多情况下需要与PC进行数据通信,比如,将采集到的数据送给PC处理,或者将处理后的结果传给PC进行显示等。PC与外部系统通信的接口比较丰富,如ISA、PCI、PCI Express、PS/2、USB等。传统的设计中往往需要专用的接口芯片,比如PCI接口芯片。如果需要的接口比较多,就需要较多的外围芯片,这些芯片的体积和功耗都比较大。采用FPGA的方案后,接口逻辑都可以在FPGA内部实现,大大简化了外围电路的设计。在现代电子产品设计中,存储器得到了广泛的应用,例如SDRAM、SRAM、Flash等。这些存储器都有各自的特点和用途,合理地选择存储器类型可以实现产品的最佳性价比。由于可以自主设计FPGA的功能,因此可以实现各种存储接口的控制器。FPGA在高速接口方向的应用如图1-15所示。
图1-15 FPGA在高速接口方向的应用
▪ 人工智能领域机器学习方向:近年来,FPGA在人工智能机器学习中的应用越来越广泛,主要集中在前端和边缘侧。具体来讲,在ADAS/自动驾驶上可以实现车辆、行人、车道、交通标志以及可行驶区域检测,可以做传感器融合;在智能安防上,可以实现车辆、车型、车牌、交通违规、车流量、人流量、人脸等检测;在无人机上,可以实现自动避障、自动跟随等功能;在医疗影像设备上,可以进行医疗图像的分析,帮助医生诊断病人;在机器人上,可以实现增强学习,让机器人学习新的技能。FPGA在机器学习方向的应用如图1-16所示。
图1-16 FPGA在机器学习方向的应用
▪ IC原型验证:FPGA在数字IC领域中是必不可少的,已经被用于验证相对成熟的RTL,因为相比用仿真器或者加速器等来进行仿真,FPGA的运行速度更接近真实芯片,可以配合软件开发者进行底层软件的开发。在纯硬件方面,由于FPGA供应商会尽快转向最先进的制造工艺节点,因此FPGA原型设计变得更加简单和强大。
FPGA验证在代码设计、功能验证完成以后进行,目的是保证设计的功能可以在FPGA上实现,也就是做硬件仿真。这样能进一步保证在FPGA上验证的结果和流片的结果相同,当然最后还涉及后端设计和工艺。如果IC比较大,就需要裁减原来IC的功能再进行FPGA验证。我们的最终目的是保证芯片设计符合要求,顺利流片。可以看到在芯片制造出来之前,很多精力会花费在RTL代码验证工作上,另外,软件的相关开发工作也会在得到芯片前开始,这两方面都需要借助FPGA原型来模拟芯片的行为,帮助硬件和软件开发者共同提升工作效率。FPGA在IC设计与验证方向的应用如图1-17所示。
图1-17 FPGA在IC芯片设计与验证方向的应用
总之,还有很多FPGA可以大显身手的领域,这里不再列举,随着学习的深入,你会越来越了解FPGA的用处。本书主要以学习FPGA工具通用的设计方法为主,其内容可能会涉及上面提到的一些大方向中的基础内容,但是不会针对某一个具体的方向或应用领域深入展开,而是可以作为一块敲门砖,学好本书的内容,会让你掌握正确、高效的FPGA开发方法,只有掌握了真正的学习方法,才能在开发具体应用时独立深入下去。