基于网络的嵌入式IP可视电话设计方案
处理对象。待处理的数据要从外部存储器搬到L2 中连续的存储空间,可利用EDMA 与CPU 并行工作的特点,采取Ping??Pong 技术,使CPU 在处理Ping空间数据的同时,由EDMA 将下次要处理的数据搬到Pong 空间中; 当CPU 处理Pong 空间数据时,再由EDMA将Ping 空间已处理好的数据搬回外部存储器,并将下次要处理的数据搬到Ping 空间,这样就可达到CPU 的最大计算能力。Ping、Pong 空间各占用的大小为20 KB, 两个总共约40 KB.L2 中的剩余空间分出64 KB 留给数据空间,用于解码中常用的解码表、量化步长、输入压缩码流缓冲区和输出码流缓冲区等。64 KB 的程序空间用于存储H. 264 算法中的运动预测、运动补偿和中断服务程序等关键代码。L2 其余部分配置为Cache, 操作与L1D 类似。
2. 2 编写线性汇编代码
为了提高代码性能,对影响处理速度的关键C 代码段可以用线性汇编重新编写。线性汇编代码类似于汇编代码,不同的是线性汇编代码中不需要给出汇编代码必须指出的所有信息(如所使用的寄存器、指令的并行与否、指令的延迟周期和指令使用的功能单元等),汇编优化器会根据代码的情况确定这些信息。当然,如果能够事先确定一些信息(如循环的执行次数、存储区的地址等),则编写的线性汇编代码的效率更高。具体的优化措施如下:
①使用伪指令向汇编优化器提供较为详细的信息。
②画出指令的相关图,根据相关图合理分配逻辑单元,最大限度地保证指令的并行执行。
③充分使用C64x DSP 提供的强大包处理指令处理数据(包处理指令可同时处理2 个l6 位数据和4 个8 位数据)。本系统中使用了AVGU4、MIN2、M AX2、SPACKU4、PACK2、D0T P2、D0T PN2 和UNPKLU4 等指令。C64x DSP 还提供了STDW(STNDW)、LDDW(LDNDW)指令,可一次存取连续的64 位数据。可利用LDDW 指令,将作1 次行变换所需数据1 次取来,并将处理后的结果利用STDW 指令一次存好。这样大大缩短了代码长度,提高了代码效率。
④利用Schedule Table 确定循环的重复间隔,合理安排功能单元,进行软件的流水。
⑤对于两重循环嵌套,可将内层循环展开为外层循环内部的条件指令。这样可减小由内层循环所带来的循环前后的prolog 和epilog 的开销。
3 性能分析
设计、调试好硬件系统,并在DM643 上对整个系统软件进行设计和优化后,视/ 音频编/ 解码的处理速度及系统功能得到了很大提高。IP 可视电话基本做到话音清晰并实时传输,在网络速度为30 kbps 以上时能实现CIF 图像25~ 30 帧/ s, 并可以音唇同步。
结语
该系统能在一颗DM643 芯片上实现网络可视电话的几乎全部功能,能对音/ 视频进行实时的编解码和网络传输,图像质量高且易于升级,是一种比较理想的网络可视电话解决方案。下一步的工作是把短信、电子邮件等其他功能整合进来。这样,网络IP 可视电话必将成为家庭或办公室的真正桌面通信中心。
- 蓝牙无线电调制解调器Siw1701原理与应用(02-19)
- 嵌入式移动数据库的关键技术(03-20)
- 在嵌入式SQL中怎样使用游标(08-12)
- 嵌入式Linux系统软件开发学习思路详细介绍 (08-20)
- 基于AVR单片机的嵌入式“瘦服务器”系统设计思想(03-11)
- 嵌入式系统设计中的存储碎片收集策略(05-04)