在TMS320C6711 DSP上实现H.263视频编码器的EDMA数据存取策略
发布时间:2008/5/27 0:00:00 访问次数:563
摘要:提出了在tms320c6711 dsp平台上实现h.263视频编码器的过程中,如何使用edma优化数据存取的策略,从而减少了cpu花费在数据搬移上的开销。
关键词:h.263 dsp edma qdma 数据存取策略
目前,将h.263算法在dsp芯片上实现,已成为一种越来越广泛的应用趋势。采用dsp实现h.263算法,相对于以往的方案,具有更好的扩展性,可以很容易地将声音编解码和复用、通信协议添加进来,综合在一起dsp芯片中,具有很强的实用性。
本文采用ti公司的tms320c6711 dsp实现h.263的编码,提出一种在dsp平台上充分合理使用片上edma控制器,进行数据存取优化的策略。
1 tms320c6711的直接存储器访问控制器
直接存储器访问(dma)是c6000 dsp的一种重要的数据访问方式,它可以在没有cpu参与的情况下,由dma控制器完成dsp存储空间内的数据搬移,数据搬移的源/目的地址可以在片内存储器、片内外设和外设器件。
在tms320c6711中,edma控制器负责片内存储器l2和外设之间的数据传输,其增强之处在于:
·提供了16个通道
·通道间的优先级设置
·支持不同结构数据传输的链接(qdma除外)
edma控制器是基于ram结构的,edma的参数ram(param)存放着传输控制参数。图1给出了一个param的内部结构,总共6个字(32bit/word)。
选项参数内容如图2所示。
tms320c6711 dsp还提供一种快速dma(qdma)传输方式。qdma与edma相似,支持几乎所有的edma传输方式,但是提交传输申请的速度要快很多。在应用系统中,edma适合于固定周期的数据传输,但如果需要cpu干扰控制搬移数据,qdma则比较适合。
qdma的操作由两组寄存器进行控制。第一组的五个寄存器寄存了qdma传输所需的参数,与edma的param类似,只是没重加载/链接参数。第二组的五个寄存器是第一组寄存器的“伪映射”。
下面就h.263编码的某些环节说明如何采用edma技术对编码数据数据进行优化存取。
2 原始图像的获取
由于待处理的原始图像都很大,即使qcif格式的图像,也要占用38kb左右的存储空间,显然不能将待编码图像存放于片内ram(l2)中。通常的方法是在cpu干预下,采用“读入-写出”的方式,从视频设备读取数据,然后存入片外sdram中。使用c6000 dsp强大的edma,亦可以实现原始图像帧的后台传输,edma无需cpu的干预便可独自将视频设备的输出图像直接送往片外sdram。这样,cpu就可以将搬移数据的时间用于图像编码的工作。
在这里使用c6000 dsp的edma控制器的qdma功能。相对于edma的传输方式,qdma的传输方式有着更快的申请提交速度。
在片外sdram中开辟三块帧缓冲区framel(首地址0xa00000000)、frame2、frame3。初始化阶段,先提交三个qdma请求(此时也可使用通常的数据搬移手段),将视频序列的前三帧数据分别存入三块帧缓冲区内,填满帧缓冲区。接着开始对frame1内的图像数据进行编码,该帧编码结束后,对frame2内的图像数据进行编码,frame2成为当前帧,而frame1成为frame2的先前帧,一旦rrame2编码完毕,便对frame3内的图像数据进行编码,同时立即提交一个新的qdma请求,从视频外设读取一帧新的图像数据到frame1中(因为对frame3进行编码时,frame2作为先前帧,frame1已经不需要了)。待frame3编码完毕后,frame2又不需要了,此时再提交一个新的qdma请求,读取新一帧图像数据到frame2中。如此循环,每编码完毕一帧图像,就提交一个新的qdma请求,依次在对应的帧缓冲区内存放新的一帧图像数据。这样,依次在对应的帧缓冲区内存放新一帧图像数据。这样,从外设获取当前编码图像的下一帧与当前图像的编码工作同时进行,dsp每次都直接对图像进行编码,而不需要再花费开销从外设读取。
摘要:提出了在tms320c6711 dsp平台上实现h.263视频编码器的过程中,如何使用edma优化数据存取的策略,从而减少了cpu花费在数据搬移上的开销。
关键词:h.263 dsp edma qdma 数据存取策略
目前,将h.263算法在dsp芯片上实现,已成为一种越来越广泛的应用趋势。采用dsp实现h.263算法,相对于以往的方案,具有更好的扩展性,可以很容易地将声音编解码和复用、通信协议添加进来,综合在一起dsp芯片中,具有很强的实用性。
本文采用ti公司的tms320c6711 dsp实现h.263的编码,提出一种在dsp平台上充分合理使用片上edma控制器,进行数据存取优化的策略。
1 tms320c6711的直接存储器访问控制器
直接存储器访问(dma)是c6000 dsp的一种重要的数据访问方式,它可以在没有cpu参与的情况下,由dma控制器完成dsp存储空间内的数据搬移,数据搬移的源/目的地址可以在片内存储器、片内外设和外设器件。
在tms320c6711中,edma控制器负责片内存储器l2和外设之间的数据传输,其增强之处在于:
·提供了16个通道
·通道间的优先级设置
·支持不同结构数据传输的链接(qdma除外)
edma控制器是基于ram结构的,edma的参数ram(param)存放着传输控制参数。图1给出了一个param的内部结构,总共6个字(32bit/word)。
选项参数内容如图2所示。
tms320c6711 dsp还提供一种快速dma(qdma)传输方式。qdma与edma相似,支持几乎所有的edma传输方式,但是提交传输申请的速度要快很多。在应用系统中,edma适合于固定周期的数据传输,但如果需要cpu干扰控制搬移数据,qdma则比较适合。
qdma的操作由两组寄存器进行控制。第一组的五个寄存器寄存了qdma传输所需的参数,与edma的param类似,只是没重加载/链接参数。第二组的五个寄存器是第一组寄存器的“伪映射”。
下面就h.263编码的某些环节说明如何采用edma技术对编码数据数据进行优化存取。
2 原始图像的获取
由于待处理的原始图像都很大,即使qcif格式的图像,也要占用38kb左右的存储空间,显然不能将待编码图像存放于片内ram(l2)中。通常的方法是在cpu干预下,采用“读入-写出”的方式,从视频设备读取数据,然后存入片外sdram中。使用c6000 dsp强大的edma,亦可以实现原始图像帧的后台传输,edma无需cpu的干预便可独自将视频设备的输出图像直接送往片外sdram。这样,cpu就可以将搬移数据的时间用于图像编码的工作。
在这里使用c6000 dsp的edma控制器的qdma功能。相对于edma的传输方式,qdma的传输方式有着更快的申请提交速度。
在片外sdram中开辟三块帧缓冲区framel(首地址0xa00000000)、frame2、frame3。初始化阶段,先提交三个qdma请求(此时也可使用通常的数据搬移手段),将视频序列的前三帧数据分别存入三块帧缓冲区内,填满帧缓冲区。接着开始对frame1内的图像数据进行编码,该帧编码结束后,对frame2内的图像数据进行编码,frame2成为当前帧,而frame1成为frame2的先前帧,一旦rrame2编码完毕,便对frame3内的图像数据进行编码,同时立即提交一个新的qdma请求,从视频外设读取一帧新的图像数据到frame1中(因为对frame3进行编码时,frame2作为先前帧,frame1已经不需要了)。待frame3编码完毕后,frame2又不需要了,此时再提交一个新的qdma请求,读取新一帧图像数据到frame2中。如此循环,每编码完毕一帧图像,就提交一个新的qdma请求,依次在对应的帧缓冲区内存放新的一帧图像数据。这样,依次在对应的帧缓冲区内存放新一帧图像数据。这样,从外设获取当前编码图像的下一帧与当前图像的编码工作同时进行,dsp每次都直接对图像进行编码,而不需要再花费开销从外设读取。