打印

基于定点DSP的软件锁相环的设计和实现

[复制链接]
744|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
fhgc567lm|  楼主 | 2016-12-25 22:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
       低轨小卫星通信是近年来卫星通信应用中一个方兴未艾的重要领域,“创新一号”小卫星是我国研制的具有完全自主知识产权的存储与转发通信小卫星,cascom手持终端是专门为这颗小卫星研制的低功耗地面手持通信终端,支持调制数据速率达76.8kbps的BPSK窄带信道。基于TI公司的低功耗16位定点数字信号处理器TMS320VC5510(最高运算能力为200MIPS),完全用软件实现低中频数字接收机,其中包括执行载波恢复功能的软件锁相环SPLL(Software Phase-Locked Loops)。在用浮点算法实现软件锁相环时,由于TMS320VC5510是一个定点DSP处理器,没有浮点处理单元,只能用编译器产生模拟浮点运算的指令,运算量需要67.2MIPS,效率很低,因此需要一种能在TMS320VC5510上执行的定点算法,有效地降低运算量。本文提出了一种48位定点扩展精度算法实现SPLL,提高了效率,减少了运算量,同时保证了环路计算的精度和动态范围。
1 软件锁相环
1.1 软件锁相环的结构
       采样后的中频信号经过数字混频,滤掉高频分量,通过改进的costas环路产生控制信号,控制数控振荡器(NCO)得到新的本振参考信号。
1.2 软件锁相环的设计
       SPLL的计算由计算相位误差和更新环路中间变量、输出控制信号两部分组成。算法描述中的中断周期就是环路采样时间间隔。 中断发生后,第一步读取基带同相项数据和正交项数据,A是基带信号幅度,θe是相位误差。第二步计算硬判决的同相数据乘以相位误差。第三步更新环路中间变量s_pll(n)。
2 48位定点扩展精度算法
       在TMS320VC5510上用C语言直接利用浮点运算实现时,只能通过C编译器产生模拟浮点运算的定点指令。这种方法效率很低,每次环路计算需耗费875个指令周期。在调制数据速率为76.8kbps的数字接收机中,需要67.2MIPS的运算量。为了降低环路计算的运算量,同时保持浮点运算具有动态范围大、精度高的优点,笔者提出了一种48位定点扩展精度计算的方法。参加运算的每个操作数由三个16位定点数W2、W1、W0级联表示,其中高16位为二进制补码的整数部分,低32位为二进制补码的小数部分,符号位在最高位,也可称为Q15.32格式。
       除了以上加、减、乘三种基本运算外,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%。
       用48位扩展精度算法实现软件接收机中的SPLL,解决了浮点算法运算量大的问题,同时还具备浮点算法动态范围大、精度高的优点,已经成功应用于“创新一号”小卫星地面手持低功耗通信终端中。另外,本文提出的SPLL实现算法,通过修改环路滤波器系数,也可以应用在其他软件接收机中,具有很好的扩展性。

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

16

主题

18

帖子

0

粉丝