电子文章 | 电子资料下载 | 家电维修 | 维修资料下载 | 加入收藏 | 全站地图
您现在所在位置:电子爱好者维修技术维修教程知识电子制作高清电视音频解码的定点DSP实现

高清电视音频解码的定点DSP实现

09-08 12:10:50 | http://www.5idzw.com | 电子制作 | 人气:102
标签:电子小制作,http://www.5idzw.com 高清电视音频解码的定点DSP实现,http://www.5idzw.com

Y32 = X132 X232 = X1low16 ?X2low16 + ( X1high16 ?X2low16 + X1low16 X2high16 ) n<<16 (9)

经过测试,该式计算对性能没有影响.

1) 输入控制

DSP 解码时,将待解压缩的mp3文件转化成dat 格式的文件,DSP 可直接将dat 格式的数据加载到片外存储器中. 具体方法为,先在程序中定义一个与mp3 文件相同大小的数组,然后将dat 文件放到数组首地址所指向的区域并指定数据长度. 由于mp3 文件大小为几兆,所以定义的数组长度超过bss 段最大偏移,需定义成far 型;也可以不用far 声明数组,而将编译方式改成大模式.大模式下bss 段的大小无任何限制,但编译器对变量使用寄存器间接寻址方式,这样需要3 条指令才能加载一个变量,故对变量存取速度很慢.

2) 输出控制:采用DSP 提供的实时操作系统

DSP/ BIOS 实现实时输出音频. 首先在DSP/ BIOS配置工具中建立TSK 对象,并与解码函数相对应,然后指定函数优先级,DSP/ BIOS 将自动进行任务调度和执行. 在配置工具中还需指定内存分配情况. DM642 中L2 cache 和片内存储器共用,可使用芯片支持库CSL 的API 函数分配cache 及片内存储器大小. 片内存储器的一部分作为子带滤波器申诸的动态空间.

调试时可以用LOG 对象显示解码进度, 以LOG_ printf 代替C 语言调试中的printf , 因为printf 不是DSP 中的指令,将占用大量的时钟周期,在对实时性要求很高的应用中根本无法满足要求. LOG_printf 语句可以满足实时要求. 先在DSP/BIOS 配置工具里建立一个LO G 对象,在Message窗口可实时观测程序进度,几乎不影响程序性能.DSP/ BIOS 提供两种数据传输模型,管道模型(pipe) 用于PIP 和HST 模块;流模型( st ream) 用于SIO 和DEV 模块. 管道支持底层的通信,而流支持高级的与设备无关的I/ O. 音频口输出时采用流模型,流和I/ O 设备交互的数据流向如图3 所示. 流模块(SIO) 使用驱动程序(由DEV 模块管理) 与这些设备交互. 控制输出前先进行初始化,即在DSP/BIOS 配置工具里定义一个User-Defined Devices对象, 再使用音频口初始化函数_EVMDM642 _EDMA_AIC23_init 对此对象进行初始化. 上层的API 函数即可对这个设备进行操作,通过结构体SIO_At t r s 设置设备特征.

图3 流和设备间的交互

解码输出过程为:首先使用SIO_create 产生一个指向设备的流. 流以异步方式进行I/ O 操作,定义两个指向输出流的缓冲区用以数据交换,数据输入和输出同时进行. 当应用程序正在处理当前缓冲区时,当前缓冲区被填满,前一个缓冲区的数据则输出. 在调用SIO_reclaim 时,交替使用这两个缓冲区进行数据交换, 每次返回其中一个缓冲区的地址. 将解码产生的音频数据送到此地址, 最后调用SIO_issue 将这个填满的缓冲区地址回送给流. 输出数据流向如图4 所示. 程序中流使用指针而不以数据拷贝,减小了应用程序的开销,使应用程序更容易满足实时性要求. 通过定义合适的缓冲区大小,D/ A 输出采样,音频数据即可实现实时输出.

图4 输出数据流向

5  结 语

DM642 作为Ti 推出的新一代媒体处理器,具有强大的信号处理能力,可以完成实时高清信源解码. 音频解码器经过算法优化和DSP 移植优化,算法的运行速度和存储量均有明显改善. 5. 1 声道音频实时解码需要50MIPS 的运算量,给高清电视信源解码中解复用和视频解码留下足够的资源. 本系统的实现对于设计高清电视信源解码芯片具有指导意义,DSP/ BIOS 的使用为进一步在DSP 上实现MPEG-4 视频和音频算法提供了有效的设计方法.该解码器也可以应用于数字音频广播(DAB) 接收机信源解码.

上一页  [1] [2] 

,高清电视音频解码的定点DSP实现
关于《高清电视音频解码的定点DSP实现》的更多文章