王晓卫+樊海荣+李明哲
摘 要: 针对BF561视频处理系统中视频实时采集和显示这一基础问题,从软硬件两个方面对以ADSP?BF561为核心的视频处理系统中的采集和输出模块的设计和开发方法进行描述。该设计方案在分析系统硬件结构和所采集的视频信号格式的基础上,通过对视频输入/输出工作流程以及BF561片上外设资源的合理安排和配置,保证视频传输的连续性,实现了视频图像的实时采集和显示,为视频处理系统的工作奠定了基础。
关键词: BF561芯片; 视频采集; 视频显示; 并行通信接口; 直接存储器存取
中图分类号: TN919?34; TP391 文献标识码: A 文章编号: 1004?373X(2014)18?0015?04
Design and development of real?time video acquisition and display system
based on ADSP?BF561
WANG Xiao?wei1, FAN Hai?rong2, LI Ming?zhe1
(1. Department of Avionics and Arms Engineering, Army Aviation Institute, Beijing 101123, China;
2. Training Department, Army Aviation Institute, Beijing 101123, China)
Abstract: Tin order to realize the real?time video acquisition and display in the BF561video processing system, the design and developing method of the acquisition and output modules in the video processing system based on ADSP?BF561 are described in the aspects of hardware and software. According to the analysis of the system hardware architecture and video signal format, the design scheme ensured the continuity of video transmission, realized the real?time acquisition and display of video images, and laid out a foundation for the development of video processing system through the reasonable arrangement and configuration of video input/output working flow management and the peripheral resource on BF 561.
Keywords: ADSP?BF561; video acquisition; video display; parallel communication interface; direct memory access
0 引 言
ADSP?BF561处理器是美国模拟器件公司推出的针对多媒体和通信应用方面的一款高性能产品,拥有2个运算速度达600 MHz的DSP内核,具有丰富的外设接口,且内部集成有两个并行外部接口(Parallel Peripheral Interface,PPI),为同时进行图像采集、处理和显示提供了一个系统级片上解决方案[1?2]。
本文针对BF561视频处理系统中视频实时采集和显示这一基础问题,从软硬件两个方面提出了设计解决方案。该方案在充分利用ADSP?BF561片上丰富外设接口的基础上,通过对PPI和DMA控制器以及SDRAM的合理配置,有效解决了高速外设数据块的连续传输和处理问题,保证视频传输的连续性,实现了整个系统实时采集和显示。
1系统硬件设计方案
整个视频采集显示系统的核心是基于ADSP?BF561的嵌入式硬件平台,图1为整个硬件平台的系统框图。系统由Analog Device公司的ADSP?BF561、视频解码芯片ADV7181B、视频编码芯片ADV7171芯片、CCD摄像头以及显示器组成。CCD摄像头获取的是模拟视频信号,其必须通过电视解码和A/D变换后才能进入DSP处理系统。ADV7181B是一款综合视频解码器,它能够自动将一种兼容国际标准NTSC或PAL的模拟视频基带信号转换为另一种兼容16位/8位CCIR601/CCIR656的YCrCb型4∶2∶2或4∶1∶1数字视频信号[3?5]。其灵活的数字式输出接口能够在基于缓冲器结构和行锁时钟的系统中完成视频解码和转换功能。另一方面,ADSP?BF561提供了两个可直接与并行A/D和D/A转换器、符合ITU656标准的视频编码和解码器以及其他通用外设连接的多功能并行接口(PPI)。在ITU?656模式下,PPI提供8或10位视频数据的接收和解析。因本系统将ADSP?BF561提供的两个多功能并行接口PPI0和PPI1分别直接与视频编解码芯片相连,其中由视频输入设备CCD摄像头采集的图像经ADV7181B解码后和ADSP?BF5611的PPI0连接,PPI1通过ADV7171编码后由视频输出设备显示器显示。
图1 基于BF561的视频处理系统功能框图
2 系统软件设计方案
BF561拥有两个运算速度高达600 MHz的DSP内核,每个内核都各自拥有独立的乘法器和ALU,专门的视频处理硬件单元和视频处理指令。为了节约内核开销,方便后期在空闲的内核进行相关的视频处理工作,方案中将视频的采集和输出工作都集中由CoreB来实现,CoreA暂不处理具体工作。
嵌入式视频系统集成有视频采集、处理(根据系统的要求处理方法各异)及显示功能,而其中视频的采集及显示功能是保证系统正常工作的关键性基础性问题之一。本文将重点对这一问题的关键技术要点进行讨论,以期在保证所采集到的各帧视频数据完整、正确的前提下,实现显示画面的连续性,并尽量降低丢帧率以增强其后处理的精确度。
2.1 视频采集方案
基于BF561的视频系统采集过程如下:CCD摄像头每采集一帧模拟视频数据(PAL制)通过同轴电缆接入到视频解码器ADV7181B内部,经过A/D采样视频解码,输出ITU?656格式的视频信号,最后通过PPI0口,传给BF561,在该过程中所要解决的关键问题如下:
(1) 视频数据存储位置的设定。由于ITU?656格式PAL制式的图像大小为1 728×625 ≈1 080 000 B,约为1 055 KB,而BF561的片内存储空间最大为132 KB,因此BF561的片内存储器无法完整存放1帧数据。本方案中扩展了一个大小为64 MB外部存储器SDRAM。
(2) 视频数据传输方式的选择。PPI接口专为高速设备优化设计,其不支持直接读/写端口,因此方案中使用PPI端口所具有的DMA传输能力,将数据由并行串口PPI0通过DMA搬移传送至预先在片外SDRAM中开辟的一帧大的固定数据存储区中,最大限度地减少DSP内核开销完成数据的传输。
(3) 相关寄存器的配置。PPI0和DMA控制器的配合使用实现了视频数据的实时采集,为保证传输的正确性,必须合理设置相关寄存器。
对PPI编程需要设置的寄存器有PPI控制寄存器(PPIx_CONTROL)、PPI状态寄存器(PPIx_STATUS)、延时数量寄存器(PPIx_DELAY)、传输计数寄存器(PPIx_COUNT)和每帧线路寄存器(PPIx_FRAME)。其中延时数量寄存器和传输计数寄存器只在GP模式下有效[6?8],而本方案采用的是ITU?656格式的输入输出模式,因此只需对PPI控制寄存器和每帧线路寄存器进行配置即可。字母“x”表示所使用的PPI通道,其值可以为0或1,在视频采集时其值为0,输出时其值为1。
基于DMA的视频传输方式可以在CPU运行指令的同时从外部存储器或设备中存取数据,也可以在CPU不参与的情况下,由DMA控制器直接进行数据传输,有效降低传输对系统实时性的影响。Blackfin561处理器的DMA控制器同时支持1D和2DDMA传输,使用该方式时,主要设置的寄存器有DMA控制寄存器(DMAx_y_CONFIG),开始地址寄存器(DMAx_y_
START_ADDR),X数目寄存器(DMAx_y_X_COUNT)、Y数目寄存器(DMAx_y_Y _COUNT)、X增量寄存器(DMAx_y_X_MODIFY)、Y增量寄存器(DMAx_y_Y_
MODIFY)、中断状态寄存器(DMAx_y_IRQ_STATUS)、外设映射寄存器(DMAx_y_PERIPHERAL_MAP)、描述符寄存器(DMAx_y_ NEXT_DESC_PTR)。在DMAx_y中,字母“x”表示所使用的DMA控制器其值可以为1或2。DMA1或DMA2控制器都可以实施具体的独立于处理器活动的数据传输,每个控制器都有12个外设DMA通道和4个存储器DMA通道,但连接到DMA1控制器上的外设支持32?bit数据传输,而连接到控制器上的外设仅支持16?bit的数据传输。为提高数据传输速度,本方案使用DMA1控制器,即字母“x”的取值设为1。字母“y”表示一个特定的有DMA能力的外设,这些外设有PPI0,PPI1,SPORT0,SPORT1,UART等,本方案使用到的有PPI0和PPI1。视频数据采集时,由于使用的是通道PPI0,因此字母“y”的取值为0,而输出时,使用的是通道PPI1,因此字母“y”的取值为1。
ADSP?BF561 DMA控制器支持典型DMA操作包括:Stop Mode,单一的、传输完成时停止的线性缓冲区;Autobuffer Mode,自动刷新循环缓冲区,当全部或部分缓冲区满时中断;Descrptor Array Mode,一维或二维DMA,使用描述子数组;Descrptor List Mode,二维DMA,使用一个描述子阵列,仅指定公共页内的基DMA地址[4]。为保证连续采集不断帧,解决传统的采集一帧显示一帧的模式出现的闪屏情况,本设计中使用基于描述符的DMA传输方式,并将最后一个指向首块的头地址,即第第四种方式。基于描述符的DMA传输需要用存放在存储器内的一组参数来初始化一个DMA序列。这种传输允许多个DMA系列链接在一起。在基于描述符的DMA操作中,一个DMA通道可以通过编程自动建立起来,并可在当前序列完成后开始另一个DMA传输。鉴于对视频数据传输大小和方向的灵活性的要求,本方案使用基于descriptor DMA 模式进行传输。
本系统在采集显示时,一方面DMA会向SDRAM写入视频数据,另一方面,DMA又会不断的读取SDRAM中显示区域的内容,很明显在进行大量写操作的时候将会造成严重的SDRAM的读/写冲突,进而会影响DMA的传输,造成显示出错。为避免这种现象的出现,本方案在SDRAM的3个不同bank上开辟了3个存储空间,分别为sFrame0,sFrame1和 sFrame2。使用3个头尾相连的描述链表控制PPI_DMA依次传输数据到3个缓冲区中,然后利用系统提供的中断机制,由DMA状态为触发中断,使得DMA每读完或传送完一帧数据后便可以产生一个相应的中断,并在中断服务程序内将采集的帧数加1。这种3级缓冲操作的最大特点是通过对当前输入视频SDRM和输出视频SDRAM的相互配合,将采集到的视频流没有停顿的送到了显示的PPI_DMA 端,满足了对视频流进行流水线式处理的需要。系统运行的时序如图2所示。
图2 系统处理的时序图
PPI0每采集1帧数据中断1次,在中断服务程序中对当前采集的视频图像存放位置进行标记,以便对CoreA对其进行实时处理。
2.2 视频输出设计方案
为保证视频输出时所采集到的视频数据的完整性,输出DMA拟采用stop模式。但考虑在stop模式下,需要重新进行DMA、PPI的初始化等工作,而系统对实时性的要求又比较高,因此输出时同样采用描述子方式,与输入描述子长度为4相比,输出描述子的长度变为9。输出描述子的9个变量定义如下:从低到高分别表示为下一个描述符指针寄存器地址的高16位(NDPL),下一个描述符指针寄存器地址的高16位(NDPH),输出地址的低16位(SAL),输出地址的高16位(SAH),配置寄存器(DMACFG)、X_COUNT寄存器的数值(XCNT)、Y _COUNT寄存器的数值(YCNT)、Y_MODIFY寄存器的数值(YMOD)[9?10]。本方案中取值分别为0,0,0,0,0x7915,864,2,625,2。每采集完一帧图像后即视频采集的中断后,手动改变输出视频的地址,即通过改变输出描述子的第2,3位的标志量SAL, SAH即可。
2.3 视频输入/输出整体设计方案
视频输入/输出整体设计方案见图3。
图3 coreB的工作流程图
本方案可以分为以下4个步骤:
(1) 视频输入/输出参数初始化及启动。首先对视频编解码芯片ADV7171,ADV7181B进行初始化,以及视频采集、输出相关参数进行设定,然后启动ADV7181B,ADV7171进行视频的输入和输出。
(2) 视频采集。视频存储区域为在SDRAM中开辟的3个缓冲区域,当采集完1帧图像后,根据帧序列号,自动存入将其存入相应的存储区域。
(3) 视频输出。采集并存入1帧图像在相应SDRAM区后,改变ADV7171的图像输出地址,显示采集的图像。
(4) 退出视频输入/输出模块。程序接收到“停止”指令,退出。
3 实验结果与分析
图像采集/显示模块部分主要用于实时采集CCD捕获的视频,将之放置在相应的SDRAM区域中,最后再将其显示出来。该模块是视频处理模块的基础,其测试可以分为图像采集和图像显示两个部分来做测试。
3.1 图像采集功能的测试
主要用来验证系统采集图像通路的正确性,所开发的嵌入式视频系统将采集的图像分别放置在sFrame0, sFrame1和 sFrame2所命名的SDRAM区域中。对实验室中的场景进行采集测试,各存储区域的存储图像如图4 (a)~(c)所示。从图中可以看出系统能很好的实现图像的采集功能,并按照ITU?656的PAL制式,分为上下两场存储在相应的存储区域中。三个首尾相连的环形存储图像方式有效防止了后续视频处理模块在进行视频处理时漏帧情况的发生。
3.2 图像显示功能的测试
为实时的查看跟踪效果,图像必须能够实时地输出出来,对输出通路进行测试,结果如图4(d)所示。从图中看出所开发的嵌入式视频系统能够将实时采集到图像在监视器中显示出来。
4 结 论
本文设计了基于ADSP?BF561的嵌入式视频处理系统的视频采集和显示方案,该方案以ADSP?BF561为核心,在充分使用BF561片上丰富外设接口的同时,通过对视频输入/输出DMA工作方式的合理配置,实现了视频图像的实时采集和显示,为视频处理系统的工作奠定了基础。
图4 采集和显示的实验结果
参考文献
[1] 张彬,胡栋.基于ADSP?BF561的实时视频采集方案的实现[J].电视技术,2009,33(12):28?31.
[2] 刘峰.视频图像编码技术及国际标准[M].北京:北京邮电大学出版社,2005.
[3] 陈峰.Blackfin 系列DSP 原理与系统设计[M].北京:电子工业出版社,2004.
[4] 王晓卫,孙军涛.基于ADSP?BF561的英文字符库设计[J].单片机与嵌入式系统应用,2011(7):16?19.
[5] 王晓卫,吴晓中,王宏宇.基于ADSP?BF561的图像平移算法的设计[J].现代电子技术,2011,34(10):59?61.
[6] Analog Devices Inc. ADSP?BF561 Blackfin processor hardware reference, rev 3.0 [EB/OL]. [2012?12?20]. http://www.bdtic.com/DownLoad.
[7] Analog Devices Inc. Video framework consideration for image processing on Blackfin processors (EE?276) [EB/OL]. [ 2010?10?22]. http://www.wenku.baidu.com/link.
[8] Analog Devices Inc. Visual Dsp++5.0 device drivers and system services manual for Blackfin processors, revision 3.0 [EB/OL]. [2011?08?30]. http: www.txt.wenku.baidu.com.
[9] 吴敏渊.ADSP系列数字信号处理器原理[M].北京:电子工业出版社,2002.
[10] 曹小秋.ADI Blackfin系列DSP处理器实验指导书[M].北京:电子工业出版社,2008.
图2 系统处理的时序图
PPI0每采集1帧数据中断1次,在中断服务程序中对当前采集的视频图像存放位置进行标记,以便对CoreA对其进行实时处理。
2.2 视频输出设计方案
为保证视频输出时所采集到的视频数据的完整性,输出DMA拟采用stop模式。但考虑在stop模式下,需要重新进行DMA、PPI的初始化等工作,而系统对实时性的要求又比较高,因此输出时同样采用描述子方式,与输入描述子长度为4相比,输出描述子的长度变为9。输出描述子的9个变量定义如下:从低到高分别表示为下一个描述符指针寄存器地址的高16位(NDPL),下一个描述符指针寄存器地址的高16位(NDPH),输出地址的低16位(SAL),输出地址的高16位(SAH),配置寄存器(DMACFG)、X_COUNT寄存器的数值(XCNT)、Y _COUNT寄存器的数值(YCNT)、Y_MODIFY寄存器的数值(YMOD)[9?10]。本方案中取值分别为0,0,0,0,0x7915,864,2,625,2。每采集完一帧图像后即视频采集的中断后,手动改变输出视频的地址,即通过改变输出描述子的第2,3位的标志量SAL, SAH即可。
2.3 视频输入/输出整体设计方案
视频输入/输出整体设计方案见图3。
图3 coreB的工作流程图
本方案可以分为以下4个步骤:
(1) 视频输入/输出参数初始化及启动。首先对视频编解码芯片ADV7171,ADV7181B进行初始化,以及视频采集、输出相关参数进行设定,然后启动ADV7181B,ADV7171进行视频的输入和输出。
(2) 视频采集。视频存储区域为在SDRAM中开辟的3个缓冲区域,当采集完1帧图像后,根据帧序列号,自动存入将其存入相应的存储区域。
(3) 视频输出。采集并存入1帧图像在相应SDRAM区后,改变ADV7171的图像输出地址,显示采集的图像。
(4) 退出视频输入/输出模块。程序接收到“停止”指令,退出。
3 实验结果与分析
图像采集/显示模块部分主要用于实时采集CCD捕获的视频,将之放置在相应的SDRAM区域中,最后再将其显示出来。该模块是视频处理模块的基础,其测试可以分为图像采集和图像显示两个部分来做测试。
3.1 图像采集功能的测试
主要用来验证系统采集图像通路的正确性,所开发的嵌入式视频系统将采集的图像分别放置在sFrame0, sFrame1和 sFrame2所命名的SDRAM区域中。对实验室中的场景进行采集测试,各存储区域的存储图像如图4 (a)~(c)所示。从图中可以看出系统能很好的实现图像的采集功能,并按照ITU?656的PAL制式,分为上下两场存储在相应的存储区域中。三个首尾相连的环形存储图像方式有效防止了后续视频处理模块在进行视频处理时漏帧情况的发生。
3.2 图像显示功能的测试
为实时的查看跟踪效果,图像必须能够实时地输出出来,对输出通路进行测试,结果如图4(d)所示。从图中看出所开发的嵌入式视频系统能够将实时采集到图像在监视器中显示出来。
4 结 论
本文设计了基于ADSP?BF561的嵌入式视频处理系统的视频采集和显示方案,该方案以ADSP?BF561为核心,在充分使用BF561片上丰富外设接口的同时,通过对视频输入/输出DMA工作方式的合理配置,实现了视频图像的实时采集和显示,为视频处理系统的工作奠定了基础。
图4 采集和显示的实验结果
参考文献
[1] 张彬,胡栋.基于ADSP?BF561的实时视频采集方案的实现[J].电视技术,2009,33(12):28?31.
[2] 刘峰.视频图像编码技术及国际标准[M].北京:北京邮电大学出版社,2005.
[3] 陈峰.Blackfin 系列DSP 原理与系统设计[M].北京:电子工业出版社,2004.
[4] 王晓卫,孙军涛.基于ADSP?BF561的英文字符库设计[J].单片机与嵌入式系统应用,2011(7):16?19.
[5] 王晓卫,吴晓中,王宏宇.基于ADSP?BF561的图像平移算法的设计[J].现代电子技术,2011,34(10):59?61.
[6] Analog Devices Inc. ADSP?BF561 Blackfin processor hardware reference, rev 3.0 [EB/OL]. [2012?12?20]. http://www.bdtic.com/DownLoad.
[7] Analog Devices Inc. Video framework consideration for image processing on Blackfin processors (EE?276) [EB/OL]. [ 2010?10?22]. http://www.wenku.baidu.com/link.
[8] Analog Devices Inc. Visual Dsp++5.0 device drivers and system services manual for Blackfin processors, revision 3.0 [EB/OL]. [2011?08?30]. http: www.txt.wenku.baidu.com.
[9] 吴敏渊.ADSP系列数字信号处理器原理[M].北京:电子工业出版社,2002.
[10] 曹小秋.ADI Blackfin系列DSP处理器实验指导书[M].北京:电子工业出版社,2008.
图2 系统处理的时序图
PPI0每采集1帧数据中断1次,在中断服务程序中对当前采集的视频图像存放位置进行标记,以便对CoreA对其进行实时处理。
2.2 视频输出设计方案
为保证视频输出时所采集到的视频数据的完整性,输出DMA拟采用stop模式。但考虑在stop模式下,需要重新进行DMA、PPI的初始化等工作,而系统对实时性的要求又比较高,因此输出时同样采用描述子方式,与输入描述子长度为4相比,输出描述子的长度变为9。输出描述子的9个变量定义如下:从低到高分别表示为下一个描述符指针寄存器地址的高16位(NDPL),下一个描述符指针寄存器地址的高16位(NDPH),输出地址的低16位(SAL),输出地址的高16位(SAH),配置寄存器(DMACFG)、X_COUNT寄存器的数值(XCNT)、Y _COUNT寄存器的数值(YCNT)、Y_MODIFY寄存器的数值(YMOD)[9?10]。本方案中取值分别为0,0,0,0,0x7915,864,2,625,2。每采集完一帧图像后即视频采集的中断后,手动改变输出视频的地址,即通过改变输出描述子的第2,3位的标志量SAL, SAH即可。
2.3 视频输入/输出整体设计方案
视频输入/输出整体设计方案见图3。
图3 coreB的工作流程图
本方案可以分为以下4个步骤:
(1) 视频输入/输出参数初始化及启动。首先对视频编解码芯片ADV7171,ADV7181B进行初始化,以及视频采集、输出相关参数进行设定,然后启动ADV7181B,ADV7171进行视频的输入和输出。
(2) 视频采集。视频存储区域为在SDRAM中开辟的3个缓冲区域,当采集完1帧图像后,根据帧序列号,自动存入将其存入相应的存储区域。
(3) 视频输出。采集并存入1帧图像在相应SDRAM区后,改变ADV7171的图像输出地址,显示采集的图像。
(4) 退出视频输入/输出模块。程序接收到“停止”指令,退出。
3 实验结果与分析
图像采集/显示模块部分主要用于实时采集CCD捕获的视频,将之放置在相应的SDRAM区域中,最后再将其显示出来。该模块是视频处理模块的基础,其测试可以分为图像采集和图像显示两个部分来做测试。
3.1 图像采集功能的测试
主要用来验证系统采集图像通路的正确性,所开发的嵌入式视频系统将采集的图像分别放置在sFrame0, sFrame1和 sFrame2所命名的SDRAM区域中。对实验室中的场景进行采集测试,各存储区域的存储图像如图4 (a)~(c)所示。从图中可以看出系统能很好的实现图像的采集功能,并按照ITU?656的PAL制式,分为上下两场存储在相应的存储区域中。三个首尾相连的环形存储图像方式有效防止了后续视频处理模块在进行视频处理时漏帧情况的发生。
3.2 图像显示功能的测试
为实时的查看跟踪效果,图像必须能够实时地输出出来,对输出通路进行测试,结果如图4(d)所示。从图中看出所开发的嵌入式视频系统能够将实时采集到图像在监视器中显示出来。
4 结 论
本文设计了基于ADSP?BF561的嵌入式视频处理系统的视频采集和显示方案,该方案以ADSP?BF561为核心,在充分使用BF561片上丰富外设接口的同时,通过对视频输入/输出DMA工作方式的合理配置,实现了视频图像的实时采集和显示,为视频处理系统的工作奠定了基础。
图4 采集和显示的实验结果
参考文献
[1] 张彬,胡栋.基于ADSP?BF561的实时视频采集方案的实现[J].电视技术,2009,33(12):28?31.
[2] 刘峰.视频图像编码技术及国际标准[M].北京:北京邮电大学出版社,2005.
[3] 陈峰.Blackfin 系列DSP 原理与系统设计[M].北京:电子工业出版社,2004.
[4] 王晓卫,孙军涛.基于ADSP?BF561的英文字符库设计[J].单片机与嵌入式系统应用,2011(7):16?19.
[5] 王晓卫,吴晓中,王宏宇.基于ADSP?BF561的图像平移算法的设计[J].现代电子技术,2011,34(10):59?61.
[6] Analog Devices Inc. ADSP?BF561 Blackfin processor hardware reference, rev 3.0 [EB/OL]. [2012?12?20]. http://www.bdtic.com/DownLoad.
[7] Analog Devices Inc. Video framework consideration for image processing on Blackfin processors (EE?276) [EB/OL]. [ 2010?10?22]. http://www.wenku.baidu.com/link.
[8] Analog Devices Inc. Visual Dsp++5.0 device drivers and system services manual for Blackfin processors, revision 3.0 [EB/OL]. [2011?08?30]. http: www.txt.wenku.baidu.com.
[9] 吴敏渊.ADSP系列数字信号处理器原理[M].北京:电子工业出版社,2002.
[10] 曹小秋.ADI Blackfin系列DSP处理器实验指导书[M].北京:电子工业出版社,2008.