接口/总线/驱动
引 言
红外视频处理系统是典型的实时信号处理系统,具有数据吞吐量大和运算密集度高的特点,一般由通用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)设置同步时钟极性和设置数据时钟极性:FS1&FS2polarity,DatAclk polarity 选择同步时钟和数据时钟上升沿或是下降沿有效。
2)设置数据宽度:DatAbuswidth 设置数据总线宽度,最小8 位,最大16 位。
3)设置数据打包/解包模式:Packing modeenable设置是否使能数据打包/解包模式,若使能,当PPI接口处于8 位输入模式,则将输入的两个8 位数据打包为1 个16 位数据存储;当PPI接口处于8 位输出模式,则将1 个16 位数据按低位在前高位在后的顺序解包输出;当PPI接口为8 位数据宽度,数据打包/解包模式能够降低1 倍数据存储空间和降低1倍数据输入带宽。
4)设置同步时钟工作模式:Portconfiguration选择输入或输出模式下同步时钟工作模式,与高速AD接口输入原始视频数据需要两个同步时钟,与模拟视频编码器接口输出ITU-R656格式数字视频,不需要同步时钟。
5)设置输入或输出子模式:Transfer type与高速AD接口输入原始视频数据时,使用通用输入工作模式;与视频输出单元接口输出视频数据,使用不带同步时钟的输出工作模式。
6)选择输入或输出方向:Port direction与高速AD接口输入原始视频数据时,选择输入模式;与视频输出单元接口输出视频数据,选择输出模式。
7)启动PPI接口:EnablePPI启动PPI接口后,在输入模式时,当PPI接口接收到正确的同步时钟信号才开始输入数据;在输出模式时,当相应的同步时钟开始工作后才开始输出数据。
PPI接口延迟寄存器:PPI_DELAY
在行同步时钟有效后,延迟PPI_DELAY 个数据时钟,PPI接口开始输入或输出行像素。
PPI接口计数寄存器:PPI_COUNT
在行同步时钟有效期内,PPI接口输入或输出PPI_COUNT 个行像素。
PPI接口DMA设置
DMA流量控制
DSP内核设置PPI接口DMA的初始工作参数后,由DMA控制器独立完成PPI接口读取和写入SDRAM的操作。SDRAM数据总线带宽为133 MHz×16 位,但只有一条数据总线,并且红外视频处理过程中数据写入、数据读出和中间的视频处理三者需要同时进行,至少包含两次数据读和两次数据写。如果按时间进程单任务线性安排PPI接口DMA读写SDRAM的操作,不能充分利用SDRAM的带宽,无法完成并发读写SDRAM 的要求。为了充分利用SDRAM 的带宽,必须使用BlackfinDSP特有的DMA流量控制。
采用DMA流量控制时,DMA控制器首先分析所有使能的DMA通道,提高与正在运行的DMA的读写方向一致的DMA通道的优先级,例如当前DMA正在读SDRAM,那么所有读SDRAM 的DMA均比写SDRAM 的DMA的优先级高,所有读SDRAM 的DMA按固有优先级排列次序。以预置的流量时隙为周期(例如10 字节),按133 MHz的最大速度,每次发读10 字节数据到当前DMA通道的FIFO 内,轮换到下一个DMA通道。当所有读SDRAM 的DMA执行完一遍后,轮换到写SDRAM 的DMA,执行相同过程。这样,降低了改变SDRAM 读写方向耗费的时间,同时每个使能的DMA通道在设定的周期内都以最大速度轮换执行了一遍,保证了一定时间内对SDRAM 的并发读写操作,充分利用了SDRAM 接口的最大带宽。
乒乓操作
由于红外视频处理过程中数据写入、数据读出和中间的视频处理三者同时进行,所以当前DMA读取或写入的数据,就是DSP内核或其他DMA已经写入或将要读取的数据,这是一个级联的因果系统。如果当前DMA正在读写的数据在时间或因果关系上与DSP内核或其他DMA发生冲突,就会导致数据等待或数据错误。
为降低数据等待时间并避免因果错误,对每个DMA操作,在目标存储区内都开辟两个缓冲区,设为BufferA和BufferB。当前DMA正在操作的设为BufferA,这是独占性操作,不允许其他DMA或DSP内核访问。当前DMA已经操作完毕的设为BufferB,开放给其他DMA或DSP内核访问。当前DMA操作在BufferA和BufferB之间切换,通过信号量标志独占区和开放区,于是在任一时间,当前DMA都有一个可供其他DMA或DSP内核访问的区域,这样就降低了数据等待时间,并避免了因果错误。
结 论
本文在介绍了PPI接口性能特点的基础上,提出了一种红外视频处理通用模块的构架,省略了数据缓冲环节,使数据吞吐过程独立于DSP内核,提高了DSP的运算效率。
全部0条评论
快来发表一下你的评论吧 !