并行外围接口在红外视频处理通用模块中的应用研究
红外视频处理系统是典型的实时信号处理系统,具有数据吞吐量大和运算密集度高的特点,一般由通用DSP实现复杂的视频处理算法。目前高端通用DSP的主频已达到600 MHz以上,内部集成多个运算单元,运算能力可以满足大多视频处理算法的要求。但是一般的通用DSP只有一条数据总线,数据吞吐能力低,必须在DSP外部进行数据输入缓冲和输出缓冲,需要DSP内核参与整个数据吞吐过程,这就大大削弱了DSP的运算能力,同时增加了系统构架的复杂度,因此,数据吞吐成为基于通用DSP的红外视频处理系统的最大瓶颈。
Blackfin系列DSP专门针对高速数据吞吐集成了并行外围接口(PPI),在传统的数据总线的基础上增加了一条数据吞吐通道。PPI接口:1)能以最高66 MHz 的频率接收数据,以最高60 MHz 的频率输出数据;2)不再需要额外的数据输入/输出缓冲,直接连接高速AD/DA输入输出数据;3)能够输入或输出ITU-R601/656 格式和带行场同步时钟的RGB格式的数字视频。使用PPI接口输入输出数据,辅以强大的DMA流量控制和高速SDRAM,使BlackfinDSP的内核独立于数据吞吐过程,充分发挥其密集运算能力,并简化了系统构架,在红外视频处理通用模块中取得了良好的应用。
红外视频处理通用模块数据吞吐分析
一个通用的红外视频处理流程如图1所示,利用高速AD采集探测器输出的模拟信号,形成原始视频数据流,再经过视频处理单元的实时视频处理,以特定的视频格式高速输出。
红外视频处理过程是一个高速数据吞吐和密集运算的并发过程。当视频处理算法复杂时,视频处理单元多由高性能通用DSP构成。DSP接收AD输出的原始视频数据是数据写入的过程,DSP输出处理后视频是数据读出的过程,DSP进行视频处理运算至少需要一次数据读出和一次数据写入,因此数据写入、数据读出和中间的视频处理三者同时进行,至少包含两次数据读和两次数据写。一般的通用DSP只有一条数据总线,无法并行进行数据吞吐和视频处理运算,所以通常在高速AD和DSP之间、在DSP和视频输出单元之间,增加FIFO、双口RAM或双片SRAM 轮换,构成数据缓冲环节,由DSP内核控制数据缓冲过程。这使得系统构架变得非常复杂,而且数据缓冲过程占用了DSP内核进行数据运算的时间,大大降低了DSP的效率。
本文基于Analog Device公司Blackfin系列BF561型通用DSP,利用其特有的PPI接口,提出一种红外视频处理通用模块的构架,省略了数据缓冲环节,使数据吞吐过程独立于DSP内核,基本不占用DSP进行数据运算的时间,充分发挥了DSP密集运算的优势。系统构架如图2所示。
BF561 内部集成了两个完全相同的BlackfinDSP内核,共有两个PPI接口,分别与高速AD和视频输出单元直接接口。原始视频数据、最终输出的视频数据和视频处理的中间数据,全部存储在高速SDRAM中。通过4 条独立的DMA通道和BlackfinDSP特有的DMA流量控制,共享SDRAM高达133MHz×16位的带宽。DSP内核只需要初始化DMA的工作参数,具体的数据吞吐由DMA控制器独立完成,不再需要DSP内核干预。为进一步缩短数据等待时间,提高DSP的运算效率,所有的数据读写都设置为带流量控制的乒乓操作,实现了在DMA吞吐数据的同时进行视频处理运算,最大程度上发挥了DSP的密集运算能力。
PPI接口配置
PPI接口是一种可以配置成8~16 位数据宽度的多功能并行同步准双向接口,包括三条同步信号线和一个连接到外部时钟的时钟线,通过修改相应的寄存器设置PPI接口各种工作模式。
PPI与高速AD硬件接口
如图3 所示,以CPLD或FPGA实现控制时序,为高速AD和PPI_1 提供数据时钟,根据探测器输出的行同步时钟和场同步时钟,经过一定变换,提供给PPI接口,通过DMA,PPI接口根据三个时钟信号将AD输出的8~16位数据写入SDRAM。本接口支持8~16 位并行输出的高速AD(例如AD9240),数据时钟最高66 MHz。
PPI与视频输出单元硬件接口
如图4 所示,通过DMA,PPI_2 读取SDRAM内的视频数据,根据数据时钟,以ITU-R656 格式,输出到模拟视频编码器(例如ADV7171),以PAL或NTSC 制式输出到监视器。
PPI接口寄存器设置
PPI接口可以设置为ITU-R656 输入模式,ITU-R656 输出模式,通用输入模式和通用输出模式。每种工作模式中又可以设置数据宽度,同步时钟工作方式和数据打包/解包等多种工作条件。通过写PPI_CONTROL、PPI_DELAY 和PPI_COUNT 三个寄存器设置PPI接口的工作模式。
PPI接口控制寄存器:PPI_CONTROL
PPI接口控制寄存器各位功能定义如图5 所示,与高速AD输入和视频输出相关的设置如下,
1)设置同步时钟极性和设置数据
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)