基于DM642的MPEG-2视频压缩编码之硬件设计和CCS开发环境的介绍


这是DM642视频采集卡的框图。下面结合程序来说明一下。

首先采用PAL制式的摄像头,大小为720*576个像素点,设置为4:2:2模式采集,通过TVP5150或者SAA7113解码输出后,要进行4:2:2->4:2:0模式的转换,因为人眼对亮度信息敏感,对色度信息不敏感,所以减少色度值进而减少数据压缩量。经过芯片解码后,由EDMA通过视频接口搬运至SDRAM中,进而进行运动估计,运动补偿,DCT,量化和编码,将经过MPEG-2压缩编码后的码流经PC104输出,完成整个视频采集卡的功能。

电源模块:

DSP所需的工作电压分别为1.4V 、 3.3V  。

SDRAM工作电压为3.3v,

TVP5150工作电压为1.8v,由电源芯片LM1117所提供,

SAF7113工作电压为3.3v,

CPLD工作电压为3.3v,

FLASH工作电压为3.3v,

PCI工作电压为5v,

时钟电路:

DM642输入时钟CLKIN为50MHz,片内PLL设置为x12,cpu内核频率为600MHz;

EMIF时钟采用外部时钟为133MHz,,即SDRAM和FLASH的工作频率为133MHz;

片上外设总线、EDMA传输和L2存储器的工作频率为CPU内核频率的1/2,即300MHz;

片上定时器的工作频率为CPU内核时钟频率的1/8,即75MHz;

SDRAM的时钟频率为133MHz;

TVP5150的时钟由晶振提供,时钟频率为14.31818MHz;

SAF7113的时钟由晶振提供,时钟频率为24.576MHz;

PCI 的时钟频率为33.33MHz;

CPLD:

CPLD主要是控制时序电路EMIF的读写、外部存储地址的选择、EMIF读写信号,以及FLASH的高四位地址的选择。

SDRAM:

采用两片SDRAM芯片,大小为4M*32B,DM642可扩展的最大为4M*64,所以这里采用两片SDRAM并联的方式,共用地址总线,数据总线分别为前32位和后32位,SDRAM的控制信号均由DM642给出。SDRAM的首地址为   0x8000 0000。SDRAM主要用于视频采集、处理和传输时的存储。

FLASH:

大小为4M,也是可扩展的最大容量。控制信号由CPLD给出。


下面写一下程序设计中需要注意的问题吧:

首先是BIOS的使用,我们可以利用BIOS做很多事情,比如分配内存空间,设置软件中断,还可以利用BIOS观察程序运行情况,如观察线程之间的切换和CPU的利用率等。在利用BIOS进行内存空间的分配的时候需注意,我们在程序中将L2缓冲区设置为了128KB的Cache和128KB的SRAM,所以我们配置时看到的ISRAM空间就是我们配置L2成SRAM的大小。而且我们可以在BIOS分配其他的段,如代码段,数据段等等的位置。这里还需要注意的地方,heap需要设置的大小,因为在程序中我们分配了很多数据空间,720*576大小的,所以在分配内存空间时就需要足够大的heap来支持,这里我们将heap的大小设置为0x1000000。同时我们可以通过view->memory来查看内存中的内容,例如:


其次说明一下,利用CCS编译环境实现优化,

1、产生调试信息选项(Generate Debug Info):
(1)Full Symbol Debug(-g):全字符调试。编译出的程序支持指定语句调试,程序不做任何级别的优化。这种选项一般在最初编写程序时使用,程序首先保证结果的正确性。
(2)No Debug无调试信息编译选项。编译出的代码不支持任何调试。如果在某行设置断点时,CCS会提示断点无效。因为该选项在编译时,编译器做了部分语句调整和无用语句的删减。在最终发布程序时,需要设置该选项。
2、速度和大小优化(Opt Speed vs Size)
Speed Most Critical(no -ms):代码执行速度最重要,此情形代码尺寸往往最大。
Speed More Critical(-ms0):代码执行速度比较重要。
Speed Critical(-ms1):代码执行速度重要。
Size Critical (-ms2):代码尺寸重要。
Size Most Critical(-ms3):代码尺寸最重要。
3、优化等级选项(Opt Level (-ox))
None:不使用该编译选项。
Register(-o0):启动寄存器级优化。
Local(-o1):启动本地优化。
Function(-o2):启动函数级优化。
File(-o3):启动文件级优化。
4、程序级优化(Program Level Opt(-pm x))
(1)-op3:无外部变量参考:当前模块没有使用在其他模块定义的变量。
(2)-op2:无外部变量或函数参考:当前模块没有使用其他模块定义的变量或函数。
(3)-op1:无外部函数参考:当前模块没有使用其他模块定义的函数。
(4)-op0:有外部变量或函数:当前模块有使用其他模块定义的边路昂或函数。

以上是使用CCS的编译工具对程序进行性能优化和代码尺寸优化。但是最根本的方法还是软件编程实现算法程序的彻底优化,编译器优化只是辅助手段。





  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值