资源描述
中兴通讯研发过程成功案例 内部公开▲
用MATLAB语言实现的PLL参数仿真算法软件
移动事业部深圳设计部 时钟接口科 王涛
【摘要】
在公司现在采用的是软件锁相环算法,现在存在的问题是,参数设置是通过一些经验值或线性化算法来取得的,缺乏有效的手段对锁相环的参数进行改善,以使锁相环算法的性能得到最大的优化。在这个实践中,用MATLAB语言实现的PLL参数仿真算法软件,使研发人员能够用纯软件的方法来仿真某一特定锁相环的性能,包括锁相环的反映时间、是否稳定工作、相位残差、对特定噪声信号的滤除能力等,用图形化,或以时间矢量的形式显示出来,并能保存结果。此软件使用简单,计算速度快,能对大量的原始数据进行快速仿真,迅速得到图形化结果,为锁相环设计人员提供了一个有力的工具来对锁相环参数进行优化。
【关键词】
锁相环 VCO 鉴相器 压控精度
一、问题的提出
在公司现在采用的是软件锁相环算法,这个算法现在应用在NodeB基站的CCS板,CP板以及RISR板的10M锁相环和19M锁相环中。现在存在的问题是,参数设置是通过一些经验值或线性化算法来取得的,而参数设置的好坏只能通过修改8051单片机程序中的参数并进行长时间的数据采集来获得结果,既耗时又耗力。缺乏有效的手段对锁相环的参数进行修正和改善,以使锁相环算法的性能得到最大的优化。
二、解决思路
公司目前的软件锁相环是属于二阶环,其算法可以总结为以下公式:
其中Vctl是压控振荡器VCO控制电压,θe是以鉴相计数值为单位的经线性化处理后的相位差,Σθe是θe对时间的求和,a和Kd为算法的环路参数,不同的算法这两个参数是不同的。我们的目的是找到比较合适的这样两个参数。
考察算法运行的某一时刻,假设当前参考源的相位是θi(相对于绝对相位0,下同),锁相环输出的相位是θo,则鉴相出来的相位差为θe=θO-θi,根据上面的公式可以算出当前的控制电压,进而得出当前的本振频率fo;当程序运行到下一时刻,此时的参考源相位θi由输入文件给出,而锁相环输出相位则可以由前一相位和本振频率算出θo=θo’+fo×T,其中T是两次鉴相之间经过的时间,由此又可以算出当前的本振频率。如此循环下去,就能得到一系列的本振频率和相位,将其打印到屏幕上,就可以直观地看出锁相环的跟踪情况。以下公式是在每一个计算循环需要计算的三个量。
锁相环的初始时刻可以定为零状态,即相位和频率都是0。
由于实际中鉴相器输出的是一些离散的整数值,因此要将连续的相位误差量化为离散的鉴相值。对于Vctl也要转换为整数再进行运算,因为实际写入DAC的也是一个整数。
三、实践情况
锁相环仿真软件算法结构图
1、输入
输入有4种方式,分别代表常量、相位数据、频率数据以及DAT文件输入。目前只实现了相位数据DAT文件和常量的输入。
2、鉴相器
鉴相器的工作步长是T,即两次工作之间的时间间隔为T。假设当前参考源的相位是(相对于绝对相位0,下同),锁相环输出的相位是,则鉴相出来的相位差为。这里的相位差是以鉴相器计数值为单位。
3、 积分滤波环节
此环节会计算出VCO压控端电压值,其中还体现了滤波的功能,能够起到抑制鉴相值瞬间波动的作用。具体实现如下公式:
4、VCO环节
因为在实际的计算中,我们引用的频率并不是绝对频率,而是Δf/f,是一个无量纲的数,所以这里我们用增益代替实际的VCO环节。
5、晶振老化率及温度影响环节
我们把晶振老化引起的VCO中心频率的漂移和温度引起的变化放到一起考虑,是因为它们施加的影响都体现为VCO中心频率漂移的结果,且参考点相同。此环节的实现如下:
注:因为某些原因,此环节目前没有考虑实现。
6、 频相转换环节
VCO的输出是,而反馈回鉴相器的值是,一个相对频率,一个是相对相位,于是,我们还要根据计算出的值。此环节的实现如下:
四、效果评价
目前,时钟接口科在对CCS、CP、以及RISR的PLL的参数进行修正的时候,已经开始用此软件对修正的参数进行了仿真,从实测的结果与仿真的结果对比来看,仿真的结果是可信的,与实测结果基本一致。说明仿真软件基本复现了PLL锁相环算法的实际环节,能够很好地模拟真实PLL算法,为设计人员提供真实可信的仿真结果。
五、推广建议
此软件很小,方便实用,不用安装,且仿真效果好,能帮助设计人员迅速对PLL参数进行评估。欢迎大家进行试用。并且欢迎大家继续完善此软件。
—— 完 ——
3
本文中的所有信息均为中兴通讯股份有限公司内部信息,不得向外传播。
展开阅读全文