基于定点DSP的软件锁相环的设计和实现
[日期:2008-9-11] | [字体:大 中 小] |
1 软件锁相环
1.1 软件锁相环的结构
图1表示软件数字接收机中的解调器。它包括一个由改进的costas环路[1]构成的载波跟踪环路。
1.2 软件锁相环的设计
由图2可见,SPLL的计算由计算相位误差和更新环路中间变量、输出控制信 两部分组成。算法描述可用伪码表示:
A是基带信 幅度,θe是相位误差。第二步计算硬判决的同相数据乘以相位误差。
即把同相数据硬判决后结果乘以正交项数据后再乘以归一化因子K_norm。K_norm初始值由I_baseband和Q_baseband的初始值决定,
f0是固定的NCO中心频率。至此,一次完整的SPLL计算完成。
在第三步和第四步计算中,环路滤波器系数C1,C2可以通过环路采样时间间隔T(或者环路更新时间间隔)、环路自由频率ωn及环路阻尼系数ζ确定,如下两式[2]:
2 48位定点扩展精度算法
图3描述的算法在TMS320VC5510上用C语言直接利用浮点运算实现时,只能通过C编译器产生模拟浮点运算的定点指令。这种方法效率很低,每次环路计算需耗费875个指令周期。在调制数据速率为76.8kbps的数字接收机中,需要67.2MIPS的运算量。为了降低环路计算的运算量,同时保持浮点运算具有动态范围大、精度高的优点,笔者提出了一种48位定点扩展精度计算的方法。参加运算的每个操作数由三个16位定点数W2、W1、W0级联表示,其中高16位为二进制补码的整数部分,低32位为二进制补码的小数部分,符 位在最高位,也可称为Q15.32格式,如图3所示。
除了以上加、减、乘三种基本运算外,48位定点扩展精度算法还包括取负(NEG_48)、数据拷贝(MOVE_48)两种操作。取负操作即将X1X0取负,结果保存到W1W0,产生借位位BORROW,再用0减去X2和借位位BORROW,结果保存到W2;数据拷贝,即把X1X0拷贝到W1W0,X2拷贝到W2。
在TMS320VC5510可编程DSP的基础上,利用48位定点扩展精度算法实现SPLL。在实现过程中,采取了模块化的思路。首先,把SPLL整个环路计算封装成一个可调用的C语言函数。函数参数包括C1、C2、K_norm、基带信 的I及Q分量、环路中间变量、调整频率。DSP的中断例程(ISR)可以直接调用环路计算函数,而且通过输入不同的C1、C2,适用于不同的载波恢复环路中。另外,在函数内部用汇编语言进行编程,以充分利用DSP的计算能力,把48位定点扩展精度算法的五个基本操作封装成用汇编指令写的宏(macro),对照计算流程,调用这些宏,完成SPLL的核心计算部分。经统计,每次环路计算需132个指令周期,总的运算量10.1MIPS,是浮点算法运算量(67.2MIPS)的14%。
文章知识点与官方知识档案匹配,可进一步学习相关知识算法技能树首页概览34297 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!