FPGA已经存在了十几年的时间,在传统概念中,FPGA价格昂贵,设计门槛较高,多用于通信和高端工业控制领域。最近几年,低成本FPGA不断推陈出新。半导体工艺的进步不仅带来FPGA成本的降低,还使其性能显著提升,同时不断集成一些新的硬件资源,比如内嵌DSP块、内嵌RAM块、锁相环(PLL)、高速外部存储器接口(DDR/DDR2)、高速LVDS接口等。在Altera公司90nm的Cyclone II FPGA内部,还可以集成一种软处理器Nios II及其外设,它是目前FPGA中应用最为广泛的软处理器系统。
作为一个平台,FPGA显然已经非常适合于高性能低成本的视频和图像应用。它可以帮助用户灵活定制系统,缩短产品研发和更新换代的周期,使用户紧跟技术和市场发展潮流。本文首先将回顾视频和图像处理的应用领域、视频处理流程、发展趋势,以及设计者必须应对的挑战。然后,对FPGA内部的资源和算法实现进行简单介绍。随后,本文将介绍Altera公司及其合作伙伴在视频图像应用领域提供给用户的解决方案。最后给出设计视频图像处理系统的工具和流程。
技术与挑战
视频和图像处理技术的应用非常广 泛,主要包括数字电视广播、消费类电子、汽车电子、视频监控、医学成像,以及文档影像处理等领域。一个典型的视频处理系统包括:视频采集、预处理、压缩、信号发送和接收、解压缩、后处理,最后到显示控制部分,驱动显示设备。在视频处理系统的所有组成模块中,都有FPGA成功应用的案例,如表1所示。
视频和图像处理技术可谓日新月异,研究人员对于视频图像和人眼感官的研究从来就没有停止过,新需求不断催生技术革新和新标准,主要体现在以下几个方面:从标清(SD)到高清(HD),分辨率越来越高,需要实时处理的数据量越来越大;视频和图像压缩技术日趋复杂,如MPEG-4第2部分,H.264 AVC,JPEG2000等;对视频系统智能的要求提高,如智能拍摄、运动检测、对象识别、多通道、画中画、透明叠加效果等;消费者欣赏能力的提高,希望图像更稳定、更清晰、色彩更艳丽、亮度更符合人眼的感官需求。
虽然技术难度不断增大,成本和上市时间依然是视频和图像应用系统设计中两个重点考虑因素。同时,产品差异化和自主知识产权也是一些有想法的中国公司追求的目标。
如果单纯使用现成的专用视频图像处理芯片(ASSP),根本无法设计出具有自主知识产权的产品,无法体现产品的差异化。而且,使用ASSP很难做到灵活、易升级、以及紧跟技术发展的潮流。厂商自己开发ASIC的周期又太长,前期投入太大,风险很高,无法保证投资回报,也无法保持技术领先。
目前,就算功能最为强大的单片DSP处理器也不能实时压缩(H.264)高清视频。而使用DSP阵列的成本让人难以接受,同时多片DSP处理器将带来系统分割和调试的困难,增加系统的不稳定性,增加PCB成本。如果使用单片FPGA,或采用FPGA加DSP处理器协同工作的方案,这些困难均可迎刃而解。
总之,使用FPGA技术可以帮助用户在保证合理成本的前提下,开发高性能的产品。利用FPGA的可灵活升级性,用户可以满足千变万化的市场需求,使自己的产品迅速推陈出新,紧跟业界发展趋势,做出有自己特色、自主知识产权的产品,始终保持产品的差异化和领先性。
图1 使用Altera VIP套件实现系统示意图
FPGA构架与算法实现
Cyclone II FPGA的构架非常适合于实时视频图像处理,其特点如下:
* 全并行逻辑构架:实现逻辑和算术功能;
* 丰富的硬件乘法器:实现高速实时计算;
* 丰富的内嵌RAM资源:用于存取部分(或几行)帧信号;
* 高速外部RAM接口:用于存取整帧信号;
* 高速收发通道,支持LVDS,Mini-LVDS,RSDS电平:实现高速视频传送;
* 内嵌锁相环:作灵活时钟管理,产生各种频率和相位的时钟信号;
此外,用逻辑单元或内嵌RAM块也可以灵活实现移位寄存器和乘法功能。
而且,在Cyclone II FPGA内部,可以实现一个或多个软处理器Nios II,用户可以根据自己的需求灵活定制Nios II及其外设。Nios II可以辅助高速视频通道作一些复杂的管理工作。这样,FPGA就兼有了硬件和软件(Nios II)的现场可编程能力。
前面已经提到过,在FPGA内部,同一种算法可以由不同的资源来实现。当然,不同的实现方法具有不同的性能,用户可以根据FPGA的实际资源和性能要求灵活选择。色彩空间转换是视频处理中的常用功能,这里将举例说明如何使用FPGA的内部资源来实现这一算法。如何使用FPGA的内部资源来实现这一算法。
TV解码芯片将模拟电视信号转换成数字的Y?CrCb信号,其中Y?表示亮度,Cr和Cb两个信号表示色彩。在计算机系统中,常用R?G?B?来表示视频,R?G?B?是经过Gamma校正的RGB信号,取值范围是0~255。Y?CrCb信号不能直接用在计算机系统中,因此,需要将视频信号由Y?CrCb空间转换到R?G?B?空间。
将ITU-R BT.601标准的Y?CrCb信号转换为R?G?B?信号的常用公式如下:
R?= 1.164(Y?-16) + 1.596(Cr -128)
G? = 1.164(Y?-16) -0.813(Cr -128)- 0.391(Cb -128)
B?= 1.164(Y? -16) + 2.018(Cb -128)
这里的R?G?B?和Y?CrCb都为8比特信号。
要实现上式中的乘法运算,有3种方法,如表2所示。由此可见,FPGA是一个资源平台,用户可以根据自己的性能需求、器件资源分布情况,灵活决定实现方法。
参考设计、IP核与解决方案
Altera在提供可编程 器件的同时,也为用户构建自己的系统提供了丰富的IP模块。这样,用户不用去再花时间从头开发那些成熟模块,而可以将主要精力放在有自己特色的技术创新上,以及保证整个系统可以正确的协同工作。
在视频和图像处理领域,Altera开发了一组IP核,称之为VIP (Video Image Proce ssing)套件。该IP套件包括常用的9个IP核,如表3所示。用户可以使用这些IP构建出类似如图1所示的系统。
Avalon控制接口是一种片内系统全交叉总线结构。Nios II处理器可以作为一个智能管理单元,对Gamma校正和画中画图像混合模块进行动态参数配置。图1中只表示了一路视频处理功能,用户也可以根据自己的需要放置多路,共享Nios II和外部存储器。
关于视频数据的传送,Altera为用户开发了ASI/SDI、IP承载视频的IP核与参考设计。在图像视频压缩与解压缩领域,Altera与多家方案提供商合作,推出了H.264、MPEG-4和JEPG2000的完整解决方案。另外,Cyclone II FPGA的高速LVDS接口,可以非常方便地应用于显示控制和驱动上,支持高速7:1的串/并变换功能。
图2 典型的视频处理系统
设计工具与设计流程
一个典型的包含视频处理模块的硬件系统框图如图2所示。在这个系统中,包括Nios II,一个硬件视频协处理器、片内RAM、DMA和其它外设。
与通信类应用不同的是,在设计视频图像处理功能模块时,用户将面临两大难题:第一是设计效率问题;第二是验证效率问题。
通常,首先需要进行算法验证,然后将算法尽快转换为HDL的RTL级描述,接着实现在FPGA硅片上,做原型验证。实际上,从算法到硅片实现有很大的鸿沟,如何提高系统开发效率,使产品尽快上市,是系统设计商所面临的一个巨大挑战。另外,视频图像处理的性能需要人眼去检查,传统的RTL级仿真可视性不强,很难去检查实现效果。
为了应对这些挑战,Altera公司与MathWorks联合推出了Matlab/SimuLink + DSP Builder的设计工具和流程。SimuLink是MathWorks公司开发的基于模块的设计仿真工具。DSP Builder是Altera公司开发的一个在SimuLink和Quartus II FPGA实现工具之间的桥梁,它可以通过SimuLink中验证过的设计产生出VHDL代码,从后台调用Quartus II工具完成FPGA的实现,同时集成了硬件在环(Hardware In Loop)和Signal Tap调试工具。DSP Builder是以SimuLink中的一组库的形式存在的。在视频图像设计中,基于SimuLink/DSP Builder的模块化设计环境,可以迅速构建系统,同时进行高效验证。
当算法在SimuLink中实现并验证完成以后,就可以把该设计模块集成到FPGA系统中去。这时,可以使用Altera公司的系统集成工具SOPC Builder。
在SOPC Builder中完成系统集成之后,就可以在Quartus II中按照传统的FPGA设计流程完成后续的综合、布局与布线等工作。与此同时,如果系统中有Nios II处理器,用户可以使用Altera的Nios II IDE(集成开发环境)来开发嵌入式软件。
最后,将Quartus II的实现结果(FPGA比特文件)与IDE中开发的软件可执行文件(*.elf)结合在一起进行系统原型验证。开发工具和流程如图3所示。
图3 视频图像
处理系统开发工具和流程以图2中的系统为例,其中的视频处理模块(协处理器)可以用SimuLink/DSP Builder来设计和验证,设计输入可以是IP核、HDL或C语言。然后可以使用SOPC Builder来集成系统中的所有硬件单元,包括Nios II处理器和SimuLink/DSP Builder中产生出来的视频处理模块。
结语
本文力图对低成本FPGA在视频图像处理领域的应用作一个全面、清晰的介绍。用户可以充分利用FPGA的构架优势、丰富的设计资源,以及先进的设计方法学,以最快的上市时间,设计出高性能、低成本的系统,同时保留系统的可升级性。