一种基于单片机的获取分频频率控制字的方法

文档序号:9886774阅读:347来源:国知局
一种基于单片机的获取分频频率控制字的方法
【技术领域】
[0001]本发明属于频率合成器领域,尤其涉及一种基于单片机的获取分频频率控制字的方法。
【背景技术】
[0002]在20世纪50年代出现了锁相式频率合成器,也称为间接式合成器。它利用一个或者几个参考频率源,通过谐波发生器混频和分频等产生大量的谐波或组合频率,然后用锁相环(PLL),把压控振荡器(VCO)的频率锁定在某一谐波或组合频率上。由压控振荡器间接产生所需频率输出。这种方法优点是由于锁相环路相当于一个窄带跟踪滤波器,因此能很好地选择所需频率的信号,抑止杂散分量,避免了大量使用滤波器,有利于集成化和小型化。
[0003]当前,数字地面电视广播单频网系统大规模的组建,射频输出频率精度要求IHz步进。对频率合成器的射频频率计算精度的要求也提高了。由于单片机系统在中不支持浮点运算或定点计算精度字节数太短,往往达不到系统中频率计算精度的要求。因此有必要设计一种能在单片机系统上进行精确频率计算的算法。
[0004]频率合成器中锁相环(PLL)的分频频率控制字计算公式如下:
Num=Fout氺 Dvco/Fpd
其中,Num是锁相环输出频率的分频频率控制字,Fout是输出频率,单位赫兹,Dvco是压控振荡器VCO分频数,Fpd是鉴相频率,单位赫兹。
[0005]通过Num可以确定频率的大小,但由于计算得到的Num是一个较长的数,单片机无法得到精确的数值,只能得到近似值,不能满足当前的需求。因此需要一种能够精确获取分频频率控制字的方法。
[0006]

【发明内容】
:
本发明提供了一种基于单片机的获取分频频率控制字的方法,通过分别计算分频频率控制字高位小数和低位小数的方法,解决了单片机计算分频频率控制字精度不足的的问题。
[0007]本发明采用以下技术方案:
一种基于单片机的获取分频频率控制字的方法,包括以下步骤:
步骤一,获取整数部分:计算分频频率控制字的浮点数Nf rac,计算公式如下:
Nfrac = Frequency 氺Dvco / Fpd
其中,Frequency为输出频率,Fpd为鉴相频率,Dvco是压控振荡器VCO分频数;
计算得到的Nfrac是一个不精确的近似值,但已足够用来计算N分频控制字的整数部分和N分频频率控制字的小数部分的高位部分了,对Nfrac取整,得到分频频率控制字的整数部分 Ninteger;
步骤二,获取高位小数部分:用分频频率控制字的浮点数Nfrac减去分频频率控制字的整数部分Ninteger,得到分频频率控制字的小数部分的近似数Ndelta,为了提高数据精度,用Nde I ta乘以系统的二进制位宽数Nb i t得到一个较大的数Nr eg INregl =Ndelta * Nbit
为方便取值,Nregl以十六进制的形式表示,设需要获取的高位小数部分的位数为X,则取Nregl的高X位,作为分频频率控制字小数部分的高X位;
步骤三,获取低位小数部分:系统的位宽为S,则要获取的小数的低位部分的位数为Y Y=S - X
计算VCO输出频率的小数部分Fdeltal:
Fdeltal = Frequency * Dvco - Ninteger * Fpd
此式中由于涉及的数据长度都很短,因此Fdeltal是一个很精确的数值。用Fdeltal减去分频频率控制字的小数的高X位所对应的频率,得到分频频率控制字的小数的低Y位所对应的频率Fde I ta2;为保证精度,用Fde I ta2除以鉴相频率再乘以系统的二进制位宽数Nb i t得到较大的数Nr eg2
Nreg2 = Fdelta2 /fpd * Nbit
为方便取值,Nreg2以十六进制的形式表示,取Nreg2的低Y位,作为分频频率控制字小数部分的低Y位。
[0008]步骤四,获取小数部分:将Nregl的高X位和Nreg2的低Y位相加,得到分频频率控制字的小数部分,值得注意的是,小数部分最后是以十六进制的形式储存的,而且小数部分的控制字在计算过程中,比整数部分多乘了一个大数值Nbit。因此,分频频率控制字的整数部分和小数部分实际上是两个独立的数据,两者共同确定最后的频率,而不应将两者理解为小数点前后的数值。
[0009]进一步的改进,所述系统的位宽S=25,高位小数部分的位数X=9,低位小数部分的位数Y=I 6。
[0010]进一步的改进,所述输出频率的范围为470000000Hz?860000000Hz。
[0011 ]相比于现有技术本发明的优点为:
采用本发明的方法,可以用低精度的单片机计算获得高精度的结果。特别是对只能进行双字节除法运算的片机或无专用的除法器的芯片;降低了对硬件处理器的要求。能够满足当前对于高精度运算的需求。
【具体实施方式】
[0012]为了使本技术领域人员更好地理解本发明的技术方案,并使本发明的上述特征、目的及优点更加清晰易懂,现结合实施例对本发明做进一步解释说明,应当指出的是,在此列出的所有实施例仅仅是说明性的,并不意味着对本发明范围进行限定。
[0013]实施例1
在本实施例中针对模拟器件公司锁相环芯片ADRF6755,Fpd鉴相频率为20MHz,系统的二进制位宽为25;输出频率为470000000Hz~860000000Hz之任一频率;
本方法通过C语言实现,其程序如下:
1.定义数据变量和结构:
Sdefine Nbit 33554432 //2'25 Sdefine Fpd 20000000//鉴相频率
Sdefine Dvco 2//VCO二分频
Unsigned long Frequency; //输出频率
Unsigned long Fdeltal; //VCO输出频率的小数部分精确结果。
[OOM] Float Nfrac;//分频频率控制字近似的浮点数计算结果
Float Ndelta;// Nfrac的小数部分
Unsigned short Ninteger; // Nfrac的整数部分
Unsigned long Nregl ;// Nfrac的小数部分所对应的十六进制大数。
[0015]Unsigned long Fdelta2 ; //低16位小数所对应的频率数。
[0016]Unsigned long Nreg2; //低16位小数所对应的十六进制大数。
[0017]2.数据计算部分:
Nfrac = (float)Frequency *Dvco / Fpd; //计算NfracNinteger = (unsinged short) Nfrac; //计算整数部分Ndelta = Nfrac - Ninteger;//计算小数部分近似数
Nregl =(unsigned long) Ndelta * Nbit;
取Nregl高两字节作为分频频率控制字小数部分的高9位。
[0018]Fdeltal = Frequency *Dvco - Ninteger* Fpd; //精确计算FdeltalFdelta2 = Fdeltal - (float)(Nregl >>16)/2'9 * Fpd;
Nreg2 = Fdelta2 / Fpd * Nbit;
取Nreg2低两字节作为分频频率控制字小数部分的低16位。
[0019]
为了更加清楚地进行说明,以锁相环输出频率666600002Hz为例:
Dvco = 2; Fpd = 20000000 //鉴相频率 Nfrac = 66.6660003662109375;
Ninteger = 66;
Ndeltal=0.660003662109375;
Nregl= 0x0151EC00;
Fdeltal = 13200004;
取Nreg.ucData的高16位数,则分频小数控制字高九位为0x0151。
[0020]Fdelta2 = 35941.5;
Nreg2 = 0x0000EB8B;
取Nreg2的低16位数,则分频控制字低16位为0xEB8B;
小数部分的最后结果为0x0151EB8B,转为十进制等于22145931。
[0021]根据计算得到的分频频率控制字:整数部分是66;小数部分是22145931;该频率控制字所对应的锁相环输出频率为:666600001.75Hz,满足精度计算要求。
【主权项】
1.一种基于单片机的获取分频频率控制字的方法,其特征在于,包括以下步骤: 步骤一,获取整数部分:计算分频频率控制字的浮点数Nf rac,计算公式如下: Nfrac = Frequency 氺Dvco / Fpd 其中,Frequency为输出频率,Fpd为鉴相频率,Dvco是压控振荡器VCO分频数; 对Nf rac取整,得到分频频率控制字的整数部分Ninteger ; 步骤二,获取高位小数部分:用分频频率控制字的浮点数Nfrac减去分频频率控制字的整数部分Ninteger,得到分频频率控制字的小数部分Ndel ta,再用Ndelta乘以系统的二进制位宽数Nbit得到NreglNregl =Ndelta * Nbit 设需要获取的高位小数部分的位数为X,则取Nregl的高X位,作为分频频率控制字小数部分的高X位; 步骤三,获取低位小数部分:系统的位宽为S,则要获取的小数的低位部分的位数为Y Y=S - X 计算VCO输出频率的小数部分Fdeltal: Fdeltal = Frequency * Dvco - Ninteger * Fpd 用Fdeltal减去分频频率控制字的小数的高X位所对应的频率,得到分频频率控制字的小数的低Y位所对应的频率FdeIta2;用FdeI ta2除以鉴相频率再乘以系统的二进制位宽数他;[1:得到他6区2 Nreg2 = Fdelta2 * Nbit/fpd 取Nreg2的低Y位,作为分频频率控制字小数部分的低Y位; 步骤四,获取小数部分:将NregI的高X位和Nreg2的低Y位相加,得到分频频率控制字的小数部分。2.如权利要求1所述的基于单片机的获取分频频率控制字的方法,其特征在于,所述系统的位宽S为25,高位小数部分的位数X为9,低位小数部分的位数为16。3.如权利要求1所述的基于单片机的获取分频频率控制字的方法,其特征在于,所述输出频率的范围为470000000Hz?860000000Hz。
【专利摘要】本发明公布了一种基于单片机的获取分频频率控制字的方法,包括以下步骤:先获取分频频率控制字的整数部分,再分别计算分频频率控制字高位小数部分和低位小数部分的方法,高位小数和低位小数部分组成分频频率控制字的小数部分。通过分频频率控制字的整数部分和小数部分即可确定最后的频率。采用本发明的方法,可以用低精度的单片机计算获得高精度的结果。特别是对只能进行双字节除法运算的片机或无专用的除法器的芯片;降低了对硬件处理器的要求。能够满足当前对于高精度运算的需求。
【IPC分类】G05B13/04
【公开号】CN105652660
【申请号】
【发明人】梁富林, 龙平, 殷英, 张百川
【申请人】北京北广科技股份有限公司
【公开日】2016年6月8日
【申请日】2016年1月7日
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1