首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

基于DSP的JPEG视频压缩系统的实现(2)

基于DSP的JPEG视频压缩系统的实现(2)

4 系统软件设计          该系统软件设计的主要功能是实时采样现场的视频信号,然后对网像数据编码压缩并通过USB总线或RS232串口将图像数据传送给主机。系统主程序流程如图5所示,该系统软件设计可分为系统初始化、图像采集、压缩编码和数据传输4个主要模块。

       

          系统上电后,DSP首先初始化,初始化主要包括:通过I2C总线初始化SAA7111,设置其工作模式;空间分配,EMIF的配置以保证外部存储器的正常访问;配置USB模块;设定DMA通道以及设定外部中断。然后DSP等待FPGA的中断。当DSP接收到FPGA的中断后,DSP设定标志寄存器,启动 DMA读取数据,并进行编码。当编码结束后,DSP把数据交付USB模块,通过USB总线传送至上位机,同时DSP向FPGA发送空闲信号,通知FPGA 继续发送下一帧。
          5 JPEG优化
          JPEG算法在DSP上实现需要解决编码速度问题。片上内存资源的有限性使得大部分的程序代码和数据不得不放在片外,大量的图像数据在慢速的SDRAM存储器中,对其访问和算术运算是影响系统性能的关键因素之一。因此,应从内存分配和代码优化两个方面来优化程序,提高编码效率。
          5.1 数据内存优化
          由于VC5509A的片上存储器包括32 Kx16位DARAM,96 Kx16位SARAM,共128 K位的存储空间。其中DARAM为双访问内存,即在一个周期内可完成两次数据访问,SARAM为单访问内存,即在一个周期内只能完成一次数据访问,片外内存为扩展的SDRAM,访问其需要额外的等待时间,执行效率比较低。因此在算法设计中应合理安排内存分配,尽量将访问频繁的程序代码和数据放在片内内存中,特别是DARAM中,可以提高编码效率。
          5.2 C代码优化
          在JPEG的编码中,根据VC5509A结构特点及结合图像数据量大的特点,提高编码效率,考虑程序编写和优化如下:
          (1)利用编译器优化,开启编译器的优化选项,包括基本优化、文件级优化和程序级优化。
          (2)使用本征(intrinsics)函数,C55x提供了一种特殊函数一本征函数,可迅速优化C代码。本征甬数前有个下划线“一”,调用方法和普通函数相同。
          (3)使用图像库,TI提供基于C55x的图像库IMGLIB,库中都是图像处理常用的函数,而且可以用C语言调用,汇编优化好,执行效率高,因此尽量用库函数。在JPEG编码中比较关键的是DCT变换可调用库函数中的IMG_sw_fdct_8x8(short*fdct_data,short, *inter_buffer),该函数完成一次DCT变换需用1 078个时钟周期。大大提高JPEG的编码效率。
          (4)高效使用MAC硬件,C55x有专门的硬件高效执行MAC运算。一个周期中可以执行一个单乘加或一个双乘加(dual-MAC)运算。
          (5)使用特殊数据类型(register类型、volatile类型、const类型),对于需要多次重复访问的变量,如for循环中的变量值,一般可设置为register型变量。声明变量为register型能提高效率,但必须小心使用。在某些编译器中,优化器会自动分配一些变量为register 型。
          (6)减少判断循环,在使用判断方式选取控制语句时应尽量减少判断转移。DSP多采用流水线结构。由于TMS320C55X采用7级流水线结构,频繁的转移指令使得流水线难以发挥作用。
          另外。DSP的大多数指令为单周期指令,但转移类指令却通常要耗费较多的机器周期。因此,应尽可能减少程序中的转移分支,以提高程序的效率。
          6 实验结果
          6.1 压缩效果实验结果
          通过改变量化因子Q,改变图像的压缩比。压缩比越大,压缩过程中的视觉损失越大,压缩后的图片越不清晰。图6为采用不同的量化因子Q的压缩前后效果比较图。其中,图6a为未压缩,大小57.4 KB的原始BMP图像,图6b为压缩后大小为5.18 KB的图像,图6c为压缩后大小5.18 KB的图像。由图知,压缩后的图像与原始图像在视觉效果上相差不大。当Q=50时,压缩后图像所需存储空间仅为原图像的1/14。

       

          6.2 压缩耗时实验结果
          对于一个8x8数据块,各步耗时如下:分块:1.335μs;DCT变换:5. 39μs;量化:1.355μs;哈夫曼编码:3.375μs。说明一个8x8数据块总耗时为11.455μs,一帧720x576灰度图像的压缩总耗时为90x72x11.455=74 228.4μs,再加上其他辅助操作,实际耗时约75 ms。根据上述结果,在1 s内向上位机发送13帧720x576的灰度图像,基本满足系统要求。
          7 结束语
          介绍基于TMS320VC5509A DSP的JPEG视频压缩系统的设计和实现方案,该系统硬件设计采用DSP+FPGA的方案,充分发挥了各自优势;而软件设计针对C55x的结构进行程序结构和算法优化,经过验证达到较好的实时效果。由于该系统体积小、功耗低,适用于一些野外图像采集、远程视频监控等需要连续传输图像的场合。
继承事业,薪火相传
返回列表