>
首页 » 业界动态 » 基于DSP和FPGA的实时视频处理平台的设计与实现

基于DSP和FPGA的实时视频处理平台的设计与实现

作者:盛 磊,徐科军  时间:2006-10-20 01:36  来源:
摘要:基于高速数字信号处理器(DSP)和大规模现场可编程门阵列(FPGA),成功地研制了小型化、低功耗的实时视频采集、处理和显示平台。其中的DSP负责图像处理,其外围的全部数字逻辑功能都集成在一片FPGA内,包括高速视频流FIFO、同步时序产生与控制、接口逻辑转换和对视频编/解码器进行设置的I2C控制核等。通过增大FIFO位宽、提高传输带宽,降低了占用EMIF总线的时间;利用数字延迟锁相环逻辑,提高了显示接口时序控制精度。系统软件由驱动层、管理层和应用层组成,使得硬件管理与算法程序设计彼此分离,并能协同工作。系统中的图像缓冲区采用了三帧的配置方案,使得该平台最终具有对PAL/NTSC两种制式的全分辨率彩色复合视频信号进行实时采集、显示和处理的能力。

关键词:数字信号处理器;现场可编程门阵列;带宽;同步时序;I2C控制核;帧存储器;VHDL

引言

随着基于图像处理的视觉测量理论及应用技术的迅速发展,从图像中快速获取目标物体的三维尺寸、空间坐标信息的应用越来越多。视频信号处理平台大都基于PC机,存在体积大、便携性差、功耗大、成本高的缺点。研制小型便携、低功耗、低成本、可独立运行的视频信号处理平台,用于视觉测量领域,已经成为视觉测量的发展趋势。以AD公司的浮点DSP芯片ADSP-21020为核心构成一个视觉处理系统,运算性能是33.3MIPS(每秒百万条指令)和66MFLOPS(每秒百万条浮点指令),当处理8位灰度图像、分辨率为256px×200px时,可以实现30fpsNTSC制视频图像处理,但是,该系统运算速度和图像分辨率都较低。以C5xDSP为核心的图像处理平台的设计方案,一种是单DSP芯片系统,受C5x的性能影响只能处理静态图像;另一种是多DSP 芯片系统,运算能力增强,但系统构成复杂,并行算法不容易设计。使用单片高速DSPC6201、普通AD和DA、视频时序控制芯片组成系统,也只能处理8位灰度信息,且分辨率固定,系统功能的可编程程度不高。

我们以TI公司高端DSPC6x系列和嵌入大容量RAM模块的高密度可编程逻辑器件FPGA为核心构建了一个小型、低成本、低功耗、可独立运行的数字视频采集、显示和处理平台。该平台充分发挥DSP运算能力强大和FPGA逻辑控制能力强的特点,解决了现有系统的局限性,可用于空间机器人的手眼视觉处理系统,并提供操作场景的监控画面。此外还可用于数字图像叠加、数字视频合成等领域。本文着重介绍该平台的硬件、软件系统的设计,以及关键问题的解决方案,给出了该系统的实际测试结果,并与一些典型系统进行了性能比较。

图1 为系统框图。

系统设计

硬件设计方案
我们选择C6711 DSP作为主处理器,这是因为(Ⅰ)其主频为150~200MHz ,8条指令并行处理,运算速度为900~1200MFLOPS,利用C6711的二级(L1和L2)cache机制可以实现算法程序的高速运行;

(Ⅱ)C6711的外围扩展存储器接口(externalmemory interface ,EMIF)提供与高速存储器SDRAM的无缝接口,使用它可以方便地与133MHz的1M×32bit×4banks的SDRAM组成大容量高速图像帧存储器。

视频信号同步时序处理的好坏直接影响采集和显示数据正确性及系统的可靠性。另外,由于视频采集、显示和DSP单元三者之间的时钟频率各不相同,因此需要用FIFO做时钟域的隔离,协调数据传输速度。我们选择在FPGA中,用VHDL设计同步时序控制逻辑、接口逻辑、高速FIFO等全部数字逻辑功能。

使用专用视频解码器(decoder)、视频编码器(encoder)完成制式选择、数字化、彩色空间转换、同步信号模式选择等工作,不仅提高了系统的可靠性,增强了系统功能,还加快了设计进度,降低了成本。这些优越的性能是使用普通高速A/D和D/A所不具有的。但是有个新问题:专用视频处理芯片大都采用串行I2C总线协议设置内部的寄存器,而C6711没有I2C接口,如果用软件编程模拟低速(100 kHz)的I2C总线协议,势必影响EMIF的高速性能。因此,仍然选择在FPGA 中设计实现EMIF到I2C总线的接口转换逻辑。

基于上述分析,制定由“DSP+FPGA+专用视频解码器+ 专用视频编码器+帧存储器”构成视频采集、处理和显示系统的硬件设计方案。按功能由视频采集模块、视频显示模块、同步时序控制模块、接口逻辑控制模块及DSP模块组成。

数据处理流程:PAL或NTSC制模拟视频输入到decoder,由decoder将其转换为符合ITU-RBT601标准的16 bit数字视频流后,送入FPGA的采集接口的FIFO(CAP_FIFO)进行数据缓冲,并生成中断信号请求DSP取走数据,之后数据通过EMIF 接口写入到帧存储器(SDRAM)中,由DSP对其进行处理,处理完的数据仍放到SDRAM中。另一方面,由FPGA中显示时序产生逻辑生成行中断信号,DSP响应中断后,由EDMA控制器把数据以32bit的宽度写入显示行FIFO(DIS_FIFO),在显示同步时序的控制下,从DIS_FIFO中输出到显示接口,转换为符合ITU-RBT标准的8bit数字视频信号,最后送到encoder中,合成视频,并送显示。图1中标有总线宽度的粗线就是数字视频图像的数据流程。

软件设计方案
根据硬件方案,设计系统的软件框架及程序流程,程序用“C语言+ 线性汇编”在ccs2.2环境中编写。软件框架分为三个层次(如图2 所示):

(Ⅰ)顶层管理程序,利用C6000芯片支持库设置C6711内部寄存器,及用DSP/BIOS处理系统的实时多任务调度;

(Ⅱ)设备驱动程序,包括对decoder、encoder、FPGA的初始化;

(Ⅲ)算法应用程序。

程序流程图:系统上电复位,DSP和FPGA加载各自的程序,之后程序开始执行。对DSP内部控制寄存器和EMIF 接口上的外设进行初始化,确定DSP的工作状态;设置DSP的EDMA通道和中断事件;通过编程FPGA中I2C总线控制核,初始化decoder和encoder;使能FPGA内的数字逻辑功能、启动数据采集和显示;开中断;对采集到的数据进行处理。

图2  软件系统程序构架

采集和显示模块
采集模块的SAA7111A完成视频制式自动识别、A/D变换、同步时序信号分离、亮度色度调整、彩色空间变换等功能,将PAL/NTSC制信号转换成符合ITU-RBT601/656标准数字分量视频信号YCrCb/YUV。显示模块的数字视频编码器ADV7177则把符合ITU-RBT601/656标准的图像数据,以27MHz的速度,按MODE2方式合成模拟视频信号。在FPGA中设计两个嵌入式512×32bit缓冲器CAP_FIFO和DIS_FIFO ,充分利用EMIF的数据传输带宽,分别缓冲存储约1行半的采集和显示的图像数据流。由于从CAP_FIFO读取一行数据,并写入SDRAM的总时间(Tread+Twrite=7.2μs+3.6μs=10.8μs),与行扫描回程时间(Tback =(864-720)/13.5MHz=10.7μs)两者相当,因此,不会出现因FIFO溢出而丢失数据的问题。

图3  显示模块时序仿真图

在采集和显示两个模块中分别进行“16bit→32bit”数据组合和“32bit→8bit”数据拆分变换,节约了FPGA的I/O脚。其中,在显示模块中利用数字延迟锁相环(DLL)使数据延迟90°相位,加上FPGA内部布线时延,使得ADV7177能够可靠地用时钟上升沿取到数据。时序仿真结果如图3所示。图3(a)中写入FIFO的32bit数据是0x224578AB,0x3368BE12等,在图3(b)中pdout输出8bit数据依次为AB,78,45,22;12,BE,68,33。实现了32bit到8bit数字视频流的拆分变换。

同步时序控制模块
对于包含采集和显示两项功能的系统,两通道之间的同步策略影响到能否连续地采集和显示。由于SAA7111A和ADV7177的时钟源分别为24.576MHz和27MHz,不可能同相。因此,采集通道同步显示,或是显示通道同步采集的方法不能解决问题。系统中采用如下方法:采集和显示两通道之间没有时钟上的直接同步,在各自的时钟频率下独立工作;系统中配置三个帧存储区,使采集模块、图像处理应用程序、显示模块分别对其中一块进行操作,并由帧中断控制轮换读写存储区,实现连续地采集、处理和显示。当采集行计数器(LinePat)计数到第1行,即LinePat=1、VREF=0时复位CAP_FIFO,最后一行已经被DSP取走,从而不会丢失最后一行数据;利用VREF作为帧中断信号,HREF作为行中断,帧中断后的第一个行中断确定为第一次传输,保证“整帧、整行”采集。

驱动程序设计
DSP通过编程FPGA中I2C控制核,对视频设备SAA7111A和ADV7177进行初始化的程序。I2C控制核采用中断方式与DSP通讯,包括控制寄存器、命令寄存器、状态寄存器、发送寄存器、接收寄存器、时钟尺度寄存器。首先需要对设备寻址,再对设备内寄存器的子地址寻址。采用I2C总线的“连续地址操作模式”加速设备初始化过程。当初始化完成后,关闭I2C控制核的中断申请,使I2C控制核处于无效状态,结束I2C总线操作时序,退出驱动程序。

显示中断事件与数据传输
在整个系统中,共包含五个中断事件:采集行、场中断,显示行、场中断,I2C控制核中断,而EMIF接口只有4个外部中断,硬件中断资源不够用,因此利用定时器Timer1对外部输入引脚(TINP1)计数产生定时器中断事件,作为行中断触发数据传输。在顶层管理程序中,设置Timer1事件与EDMA2通道相关联。如图4 所示,当BLANK=1时,产生360个脉冲。在FPGA中利用Line节拍和Pixel节拍产生一个虚拟的脉冲串,产生第一个Timer1中断事件,触发EDMA传输第一行数据到DIS_FIFO中,并使DIS_FIFO总能提前于显示设备先得到要显示的下一行数据。最后一行无效数据将因DIS_FIFO被VSYNC的低电平复位而丢弃,从而不会影响到下一场的第一行有效数据的传输。每次Timer1中断事件后,一行数据的传输时间为读SDRAM的3.6μs+写DIS_FIFO的7.2μs=10.8μs,而BLAN K两个有效脉冲之间的低电平为10.7μs,这就是说明在下一行有效期到来之后,数据已经大都放入DIS_FIFO,从而保证ADV7177可靠地得到显示数据。

图4  显示中断事件与EDMA 传输关系图

帧存调度和EDMA 事件链接
在SDRAM中设置了三个帧存储区,保证了图像连续采集和连续显示,同时还提供一帧用于计算。图5为帧存调度与EDMA事件链接传输机制原理。利用EDMA4通道执行源地址固定,目标地址索引加1的二维EDMA传输,等到存满一帧数据以后,利用EDMA通道的事件链接机制,使EDMA4通道重新加载事件N的链接参数寄存器的参数,开始接收新一帧来自CAP_FIFO的数据流,并且将数据存入SDRAM的Buffer2中;等到存满后,重新加载事件O的链接参数,接收第三帧图像到Buffer3中,然后再次加载事件P的链接参数,如此循环,实现连续数据的采集,保证PAL制视频图像能以25fps速率连续采集。同样在显示端,则利用EDMA2通道执行源地址索引加1 ,目标地址固定的二维EDMA传输,从SDRAM 的Buffer1,Buffer2和Buffer3中Timer1中断事件的触发下每次读取一行数据,写入FPGA中的显示DIS_FIFO中。利用EDMA的事件链接机制,在一帧传输完成后,EDMA2的参数寄存器自动加载事件Q、事件R、事件S中的链接参数。实现显示数据的连接搬移,保证图像以25fps的速度连续显示。

图5  EDMA传输机制与帧存的调度

测试与性能比较

对采用上述方案设计出的实时视频处理硬件系统进行了实验。输入视频信号取自PAL制CCD摄像头,并输出视频到监视器,用逻辑分析仪(惠普HP1630D)观察C6711EMIF总线接口,测试系统性能及总线上数据传输的实际速率。图6是从逻辑分析仪上拍摄的两张反映系统性能的重要时序图。图6(a)是用“glitch”方式,实时监测C6711EMIF 接口上的三个外部中断和TINP1信号在图像帧与帧之间的时序关系。EINT7和EINT5分别为采集和显示通道的帧中断(0 表示奇场,1表示偶场),可以看出奇、偶场的总周期为40ms,说明系统能够同时以25fps采集和显示全分辨率、彩色PAL信号。

在采集与显示两个方向同时进行EDMA数据传输时,EMIF 的数据总线复用及带宽占用状况如图6(b)所示。Eint4的脉冲间隔为64μs,即PAL制的行频15.6 kHz。Eint4和Tinp1分别是用于触发采集和显示通道的行中断信号。可以看到,在Eint4的上升沿和Tinp1脉冲串的下降沿分别触发了数据总线Edata1上一行数据的传输(数据区1和数据区2),没有出现总线共享的冲突,而且其中的Tinp1与数据区2之间的真实时序关系与图4 所示设计原理是“一致”的。

通过测试,本系统的性能特点:

(Ⅰ)将所有数字逻辑功能都集中到一片FPGA中,减小了系统体积,提高了系统的集成度;

(Ⅱ)图像输入缓冲仅用一个CAP_FIFO,实现了连续、实时采集,扩充SDRAM 作为采集帧存的方案,降低了成本;

(Ⅲ)系统中同时包括采集、显示和处理全分辨率(720px×525px,720px×480px)彩色PAL和NTSC制信号的能力;

(Ⅳ)由于使用“三帧”轮换的方法,使得采集与显示两方不需要严格地时序同步,就能保证图像整帧采集和稳定连续地显示,优于两帧“乒乓”交换存储的方法。

图6  HP1630D实测EMIF接口信号时序关系图

结论

我们以DSP和FPGA为核心设计一种实时视频采集、显示和处理平台,当不需要实时监视操作场景的画面时,还可以把显示带宽(615 MHz×32bit)节省出来,满足更复杂算法的需要。由于运用EDA(电子设计自动化)设计手段,对数字逻辑时序关系进行了全面的逻辑综合与时序仿真验证,为系统的一次制板成功提供了重要保证。该实时视频处理平台的成功研制,一方面表现出本文所述设计方法的实用性,另一方面,由于该平台所具有的实时处理能力,以及小型化、低成本、低功耗、可独立运行的特点,使得其可以被应用于机器人手眼视觉的实时处理系统中。

该系统的DSP编程需要考虑系统软、硬件资源,应具有实时操作系统的部分功能,而且C6x指令在8条高度并行执行时,才能充分发挥其运算能力,因此算法编程要有技巧。随着集成电路技术的飞速发展,C6x内核CPU时钟频率最高已达1GHz,但其内核与指令集基本相同,外扩展存储器都采集EMIF接口。考虑这种继承性,为了进一步提升平台的实时处理能力,在下一步的研究工作中拟将把本系统中软硬件设计方案能够移植到C6x其他型号,特别是与C6711有相同的二级cache结构和EDMA控制器的C64x。由于C64x具有两套EMIF接口,可以同时实现双路视频信号的采集,可以满足双目视觉处理的应用要求,但是平台硬件系统的复杂性随之大大增加,对系统设计提出了更高的要求,因此还要进行深入分析。

相关推荐

千兆家庭将在2013年成为现实

领特  带宽  2012-03-12

单片机多机冗余设计及控制模块的VHDL语言描述

单片机  VHDL  2011-05-19

嵌入式单总线控制器设计

DS1820  VHDL  总线控制器  2011-01-11

SDH中E1接口数字分接复用器VHDL设计及FPGA实现

SDH  E1  VHDL  FPGA  2010-09-01

一种用VHDL语言实现的帧同步算法

帧同步  搜索态  VHDL  2010-08-16

怎样提高数字定位器的带宽

在线研讨会
焦点