基于ADSP—BF561的图像平移系统的设计与实现
扫描二维码
随时随地手机看文章
摘要:基于ADSP-BF561的结构特点,提出了图像平移系统的设计与实现方案。该设计分为硬件和软件两部分。硬件设计上,以ADSP—BF561为核心,控制视频信号的采集、预处理和平移。其中,视频鳊解码分别采用ADV7171,ADV7181B芯片实现。软件设计上,分别使用基于描述子的数据传输方式、DMA和MDMA数据搬移方式,着重解决了图像平移时的实时性问题。试验结果证明了该设计的有效性。
关键词:ADSP-BF561;图像平移;视频编码;视频解码;电子稳像
该设计以ADI公司的Blackfin系列中的BF561作为处理器,分别采用ADV7181B和ADV7171作为视频编解码芯片,设计了图像平移系统。通过采用基于描述子的DMA及MDMA图像传输方式等方法,解决了图像平移时的实时性难题。该图像平移系统设计结构紧凑,成本低廉,可靠性高,可以广泛应用于电子稳像技术中。
1 系统设计
ADSP—BF561处理器是ADI公司推出的Blaekfin系列中的高性能产品,它采用独立的双核结构,主频600 MHz,具有2套乘法器和算术逻辑单元,丰富的DMA通道,内嵌328 KB超高速L1 SRAM和高速的L2 SRAM。同时,ADSP-BF561具有2个PPI接口,可以方便地与视频解码器和视频编码其相连,无需外围逻辑支持。ADSP-BF561把存储器视为一个统一的4 GB的地址空间,使用32位地址。所有资源,包括内部存储器、外部存储器和I/O控制寄存器,都占用公共地址空间的相应部分,并且各自对立。该地址空间的各部分存储器按分级结构排列,提供高性价比。其中极快速、低延迟的存储器接近处理器放置、而更大的、低成本、低性能的存储器则原理处理器放置。片外存储系统通过外部总线接口单元EBIU(External Bus Interface Unit)进行访问。存储器的DMA控制器提供高带宽的数据传输能力,能在内部L1/L2存储器和外部存储器空间之间传输代码和数据块。该设计以ADI公司的ADSP—BF561为核心,Visual DSP++5.0为软件开发环境,对图像平移系统进行开发。
2 硬件设计方案及实现
2.1 硬件设计方案
图像平移就是将图像中的所有像素点都按照指定的平移量沿水平或者垂直方向移动。假设图像f(x,y)以平移量(α,β)分别在x轴方向和y轴方向上进行平移,则平移之后的图像就变成了f(x-α,y-β)。平移算法是几何变换中最简单的变换之一,但是这种简单的变换却在电子稳像中发挥着很大的作用。
平移算法的难点主要体现在算法的实时性上。假设一个视频采集系统图像的采集速率为25帧/s,要想实时地看到平移后的图像,那么平移算法必须要在40 ms内完成,而对于大小为720×576×2 B=829.4 KB的图像要完成数据的搬移工作,如果设计不好,很可能会产生迟滞现象。为此本文将平移算法的平台设计在ADI公司的高性能芯片BF561上,并使用DMA及MDMA等方式实现算法的平移,该系统框图如图1所示。
该系统设计方案中主要包含以下主要硬件:
(1)CPU:600 MHz的Blaekfin 561双核处理器。
(2)FLASH:1片SAMSUNG K4S5616320 8 MB。
(3)视频接口:BF561.提供了2个16位的ParallelPeripheral Interface(PPI0和PPI1),它们可分别与视频解码芯片ADV7181B、视频编码芯片ADV7171连接。
(4)外部总线接口(EBIU):为ADSP—BF561与外部存储器和通过总线寻址的外部设备提供了连接通道。通过EBIU连接2片SDRAM。
(5)SDRAM:2片SAMSIING K4S561632064 MB;该系统对PAL制式的视频数据进行采集,经ADV718lB解码后转换为ITU-656格式的视频信号YCrCb采用4:2:2的输入格式,视频数据所需的存储空间较大,故需要扩展外部存储器SDRAM。
(6)JTAG调试接口,通过仿真器与PC机相连,实现JTAG硬件调试功能。
CCD摄像头每40 ms采集一帧模拟视频信号,ADV7181B解码后转换为ITU-656格式的视频信号,通过PPI0利用DMA方式自动将其放入外部SD-RAM中。为在电视上实时看到平移后的图像,DSP内核必须要在40 ms内读取SDRAM中的视频数据,按照平移算法的要求实现对图像的上、下、左、右平移后,写回SDRAM,并由DSP内核读取该SDRAM中的数据,启动PPI1通过DMA送给ADV7171编码成模拟的PAL制(图像的输出格式为ITU-656格式),最后由电视屏幕显示输出。[!--empirenews.page--]
2.2 关键技术问题的解决途径
在平移算法中由于每40 ms采集1帧数据,为了保证能够使人眼实时的看到平移后的视频流,必须要保证能够实时的完成数据搬移工作。为此本设计中采用如下关键技术来解决。
(1)由于图像输入后,要经过平移算法对图像进行上、下、左、右平移后,图像才能输出到电视上。因此该系统将图像的输入存储区域和图像的输出存储区域分别设为2块独立的区域,使得在数据输入的同时还可进行数据的搬移及输出显示工作。每个输入/输出区域又可以分为4个区域,用来存储顺次进入的输入/输出图像。其中sFrame0~sFrame3用来存储输入的视频图像,sFrame4~sFrame7用来存储搬移后的视频图像。当启动ADV7181B采集完1帧图像存入后sFrame0,BF561启动数据搬移工作,将视频图像搬移到sFrame4中,并通过PPI1送给视频编码器ADV7171,最后由电视屏幕显示输出,同时PPI0将数据继续采集到sFramel。图像存储在SDRAM中,sFrame0~sFrame7各存储区域的首地址分别为0x0000C400,0x1000000,0x1500000,0x01A00000,0x01F00000,0x02400000,0x02900000,0x03000000。
(2)为了提高系统的实时处理能力,将数据在不同存储空间的转移任务交给DMA来完成,从而使CPU只专注于数据的计算。为保证连续采集不断帧,DMA采用描述子方式,并将最后一个描述子指向首块的头地址。CCD采集到的视频图像首先送到PPI0,经过2维DMA方式依次送到由描述子描述的图像输入存储区域。
(3)由于图像的平移,输出后的图像会有一些边框,为提高系统的实时性,将边框数据预先存放在SDRAM中,然后再采用MDMA方式将边框数据传送到相应的视频输出区域中。存放边框数据的SDRAM定义为sFrame8,其首地址为0x03600000。其中sFrame8的大小为1440*288,即为ITU-656格式中一场数据的大小。本算法中上、下、左、右平移后的边界填充为黑色,按UYVY格式即应该填充为0x80,0x10,0x80,0x10。边框数据的MDMA方式传输在有效数据传输之前进行,每次MDMA传输也是只传递1场数据,1帧数据同样需要2次MDMA传输完成。边框数据的填充见图2。图2(b)为图像右移后左边填充为黑色边框数据的示意图。
(4)从输入区域到输出区域只搬移有效的数据(Active Field),ITU-656格式的文件头在输出区域初始化时已设置完成。且有效的数据传输方式采用MDMA方式,每次传输1帧图像数据中的1场图像,搬完奇场数据后再搬偶场数据。
(5)平移后的图像存储在图像输出存储区域(sFrame4~sFrame7)中,平移后的图像由PPI1通过按描述子的指示输出到电视上显示出来。整个系统的工作框图如图3所示。
[!--empirenews.page--]
软件设计流程图如图4所示。
3 平移方案的实现
该系统通过JIAG仿真,使用Visual DSP++5.0作为开发环境,进行了图像平移实验及性能分析。使用该算法后平移的效果如图5所示。
在该算法中,完成1场数据的MDMA数据大约需要4 ms,而完成整个1帧图像的传输平均需要21 ms,因此在40 ms的周期内可以实对图像的实时平移。
4 结语
在结合图像平移算法以及BF561结构和特点的基础上,作者创新性的实现了一种基于ADSP—BF561双核处理器的图像平移系统的设计。由于充分利用了BF561的描述子存储方式,以及其DMA和MDMA数据传输方式,结构设计简单,实时性好。仿真结果证明了算法的有效性。