引言
以DSP为核心的处理器凭借自身硬件结构的优势和算法优化使得一般的嵌入式产品在视频应用领域得到了广泛的应用。随着高清视频应用的增多,传统单核DSP处理器已经不能很好地满足应用需求了。为此,TI公司推出了一款专门针对高清大数据量快速计算的专用多核DSP处理器DM8168。与传统单核DSP或ARM+DSP的异构多核结构相比,DM8168集成了4个不同类型的处理器,除了传统ARM+DSP结构外,DM8168还拥有两个专门针对高清视频的图像处理器。因此,研究如何基于这种复杂的多核DSP进行应用设计,是有一定实用价值的。
本文在一款基于多核DSP DM8168处理器的SEEDDVS8168平台上,研究了16通道 D1数据格式60 fps的大数据量高速视频采集及压缩的实现方法,并且对DM8168实现过程中4个核心处理器的负载进行了测试和分析。
1 硬件平台结构
TMS320DM816是TI公司推出的达芬奇(DaVinci)硬件平台。它在DM8168开发板上拓展了16路模拟输入口,集成了多种外设接口。DM8168硬件平台为TI的高性能异构多核SoC片上系统,该平台集成了一个主频为1.2 GHz的ARM CortexA8处理器,一个主频为1 GHz的C674x DSP以及3个主频为600 MHz高清视频图像协处理器(High Definition Video/Imaging Coprocessor,HDVICP),以及一个高清视频处理子系统(Hight Definition Video Processing Subsystem,HDVPSS)。多核DSP系统应用中,各处理器在硬件上相互独立、相互配合,极大地提升了整个系统的效率。本文针对DM8168集成的4片TVP8158对16路60 fps视频的采集压缩过程进行了研究,并对结果进行了分析。硬件平台结构如图1所示。
图1 DM8168硬件结构框图
1.1 ARM CortexA8处理器
ARM CortexA8是一款专门针对多任务应用的高性能哈佛结构处理器。本文中ARM CortexA8处理器主要用于控制管理各个从处理器,配置和调节各子系统的协同工作,管理外部设备及外部存储器。
1.2 高清视频处理子系统HDVPSS
HDVPSS集成了两个独立的视频捕捉输入端口VIN0、VIN1,每个VIN口又分为A、B两组,即VIN0A、VIN0B、VIN1A、VIN1B。每个TVP5158复合了4路视频送入VIN口,HDVPSS采集到数据之后利用内部硬件把视频抽离分解出来进行后期处理,捕捉时钟高达165 MHz。此外,HDVPSS每个视频输入端口支持缩放、像素格式转换、支持1路高达1080P60或8路复用的D1数据处理。功能上,HDVPSS集成了两个视频处理引擎,具有去隔行处理、降噪、格式转换、视频输入/输出等数据处理能力。
1.3 高清视频协处理器HDVICP
HDVICP是一个视频编解码硬件加速器,可以最大支持1080P60标准高清视频的编解码流。硬件加速可支持MPEG1/2/4 ASP/SP、H.264 BL/MP/HP、VC1 SP/MP/AP、RV9/10、AVS1.0等主流的编解标准。HDVICP集成了运动估计加速引擎、帧内预测估计引擎、熵编/解码器等硬件模块。HDVICP直接在硬件上提升了原本复杂的数字图像处理运算,从而增强了HDVICP的视频处理能力。HDVICP的内部结构如图2所示 。
图2 HDVICP内部结构
在外部,HDVICP与其他处理器之间通过邮箱中断以及硬件自旋锁来实现。邮箱中断通过写寄存器的方式向某个从处理器发送中断信号,自旋锁机制则为访问系统共享资源提供了完善的解决方案;内部,同步箱负责所有嵌入式模块的调度,同步各加速器之间的参数以及数据。
1.4 数字信号处理DSP
C674x DSP内核是TMS320C6000 DSP平台上的高性能浮点数字信号处理器,其除了具有传统DSP的硬件运算加速器单元外,还具有SPLOOP、压缩的指令集、增强的指令集、异常处理以及优先级管理,完备的硬件支持使得C674x DSP在应用中具有强大地数据信号处理能力。本系统研究中将传统的视频采集及压缩编码这类算法从DSP模块中分离出来,极大地减轻了DSP的负载,使多核DSP协同工作的环境、性能得到了极大的优化。
2 系统软件设计
DM8168的主处理器是ARM CortexA8,开始上电之后UBoot引导其从ROM中启动Linux,一旦启动成功,ARM CortexA8便引导从处理器C674x DSP和媒体控制器的电源管理、重启控制以及设置可执行文件的入口到相应寄存器中,完成这个软件运行环境的建立。
结合DM8168硬件平台的特点,软件系统整体划分为4个模块。其中ARM为主控模块,运行Linux系统,主要负责整个系统的控制以及外设管理;另外3个内核运行BIOS6系统,其中VPSS M3运行在HDVPSS上,主要管理视频的采集、存储以及输入/输出;Video M3运行在HDVICP上,主要负责视频的编解码;C674x DSP主要执行软件的显示策略以及用户算法。软件结构设计如图3所示。
图3 软件结构设计
多通道视频处理框架(Multichannel FrameWork,McFW)中对视频处理常用的捕获、压缩编码、解码、显示等处理过程进行了优化,该框架下的视频处理以Link为基本处理单位进行。视频传递采集、编码以及显示过程大致分为以下几个过程。
(1) 原始采集过程
系统获得采集任务之后,首先初始化采集参数,包括采集设备的检测、需采集的视频格式、输出格式等。稍后调用McFW框架下的System_linkCreate()创建Capture Link,调用System_linkStart()进行视频采集,模拟信号经过主板上集成的4片TV5158解码芯片之后转换为16Ch D1 YUV422i 60fps的数字信号传递给VPSS协处理器,等待下一步处理。
(2) 视频处理
VPSS协处理器检测到视频输入以后,对输入的视频进行降噪、去隔行处理等,然后将数据传递给HDVICP协处理器,DM8168内部集成的3个HDVICP协处理器的视频编解码硬件加速支持MPEG4 H.264等视频的编解码格式,运行在HDVICP上的视频编码子系统(Video Encode Subsystem,VENC)以及视频解码子系统(Video Decode Subsystem,VDEC)具体实现16 Ch D1 60 fps的H.264编码压缩/解码处理。
(3) 视频的存储、显示以及传输
HDVICP协处理器压缩产生的视频数据,放入内存共享区,供ARM处理器进行后期的网络传输或本地存储。同时,也将数据传递给HDVPSS协处理器实现16 Ch视频的显示输出。
(4) 视频采集的销毁
视频采集结束后,HDVPSS首先调用System_linkStop()停止视频采集,然后调用System_linkDelete()释放占用资源。视频采集编码过程如图4所示。
图4 视频采集编码过程
视频的采集、降噪、压缩编码/解码、显示都由Host A8进行控制,每个视频采集过程中的功能都在各自处理上进行了模块的划分,以独立的线程运行。各模块间通过消息中断、IPC等方式进行通信,通过共享内存实现数据共享。
3 结果测试与分析
本研究方法中,模拟视频信号经过主板上集成的4片TVP5158解码芯片转换为16Ch D1 YUV422i 60fps数字信号传递给HDVPSS协处理器进行降噪、隔行扫描处理,数据预处理之后HDVPSS将数据传送给HDVICP协处理器进行视频的H.264压缩存储,同时数据也由HDVPSS协处理器的HDMI数据输出接口输出到显示器。多核CPU负载情况统计如表1所列。
表1 多核CPU负载情况统计
实验结果中,Host A8作为主控处理器,负责多核DSP的任务调度和协调,HDVPSS以及HDVICP协处理器承担了16 D1视频的采集以及压缩编码工作,处理器负载较均衡。由于协处理器独立承担视频的处理任务,DSP在本设计中只负责SCD算法,负载较小。整体上来看,由于多核DSP DM8168的各个核心处理器之间相互协同工作,整个系统的负载较均衡,整个系统得到了有效的利用,且性能也比较突出。
结语
针对16通道 D1数据格式的大数据量视频数据的采集编码,在传统达芬奇DSP处理器上实现相对较为困难,而本文针对基于多核DSP DM8168将视频的采集、降噪、隔行扫描以及压缩编码等任务从传统的单核DSP处理器上独立出来,分别由从硬件加速的HDVPSS协处理器和HDVICP协处理器来完成,极大地提升了视频采集的效率,同时也减轻了单核DSP的任务负担,功能模块化设计大大提升了嵌入式设备的整体处理能力,效果较为明显。但从实际应用的角度来考虑,本设计可能考虑得不够全面,需在后期设计中不断地充实和完善。