关键词:EDMA,DSP,中断服务程序
1 引 言
现有的电视技术中多采用隔行扫描技术,因此,对全电视信号直接采样所得到的数字视频信号,其图像信息是不连续的。而在现代图像处理技术中,常常是利用图像中位置相邻的像素之间的灰度关系进行各种运算,因此,必须将经过A/D变换之后的视频信号进行排序处理,在存储器中形成一幅完整的图像。EDMA(Enhanced Direct Memory Access)是指在TMS320C6x11/C64xDSP中,没有CPU参与的情况下,实现数据在DSP的各个存储器之间的转移。我们在系统中先用一片FPGA滤去数字视频信号中的非图像信息,然后,利用EDMA将处理过的数字信号从较小的缓冲区(如双口RAM)转移到较大的存储器,组成一幅完整的图像供DSP处理。
2 设置EDMA可选参数寄存器
2.1 EDMA传输参数组概述
EDMA传输参数组由6个32位的字构成,用来定义EDMA传输过程,包括可选参数、源地址、目标地址、数据计数、地址修改索引、链接地址等各种寄存器。可选参数寄存器决定了EDMA的传输方式,共有10种控制位,下面主要阐述如何设置可选参数寄存器。
2.2 设置传输数据单元
EDMA支持对8位、16位、32位的数据的存储,本系统中对图像灰度信号采用8位的量化,DSP的外部数据线为32位的,于是,可以把4个像素的灰度值合并成一个数据单元(element),共计32位,因此,寄存器中的ESIZE位设置为00b。
2.3 设置传输维数及地址更新方式
数字化后的视频信号在缓冲区(源数据区)中是连续地存储的,地址是增长的(SUM=01b),可以视为一维的(2DS=0b)。在目标存储区,图像数据是按行存放的,而且每一行的列数和视频信号的每一行的点数相同,这样,目标数据区的存储变为一个二维的结构(2DD=1b)。地址也是增长的(DUM=01b),行与行间隔为存放一行电视信号所需的字节数,可以通过设置FRMIDX寄存器来实现。这样,只要设置存放奇数场和偶数场信号的起始地址相差一行,就能在目标存储区得到一幅完整的图像。图1为传输示意图。
2.4 设置传输结束后EDMA产生中断
在视频信号填满缓冲区的一半时,由FPGA给DSP一个外部中断,可以是INT4~INT7之中的任意一个,对应启动EDMA的4号传输通道至7号传输通道之一。触发信号到来时,EDMA取走整块数据(FS=1),同时,视频信号不断被写到缓冲区的另一半。把缓冲区分成两半,读数据和写数据不在同一个半区,保证了数据的完整性。
在一次传输结束后,传输参数组中源地址和目标地址都需发生改变,本系统中,源地址和目标地址有很多种不同的情况,不能用链接方式来改变传输参数组(LINK=0b),而改用中断的方式,将传输结束中断位TCINT设置为1,我们在系统中采用的是INT7事件作为EDMA的触发事件,相应地传输结束代码位TCC设为0111b。这样,当对应的通道7的传输结束后,EDMA控制器将向CPU发出一个名为EDMA INT的中断信号。