2) 输出控制:采用DSP 提供的实时操作系统
DSP/ BIOS 实现实时输出音频. 首先在DSP/ BIOS配置工具中建立TSK 对象,并与解码函数相对应,然后指定函数优先级,DSP/ BIOS 将自动进行任务调度和执行. 在配置工具中还需指定内存分配情况. DM642 中L2 cache 和片内存储器共用,可使用芯片支持库CSL 的API 函数分配cache 及片内存储器大小. 片内存储器的一部分作为子带滤波器申诸的动态空间.
www.55dianzi.com
调试时可以用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) 接收机信源解码.
本文关键字:电视 DSP/FPGA技术,单片机-工控设备 - DSP/FPGA技术