本发明涉及频率合成方法及装置,具体涉及一种基于复合频率控制字的直接数字频率合成方法及装置。
背景技术:
::频率合成是指由单个或若干个具有较高稳定度和精确度的参考频率信号源通过频率域的线性运算,从而生成具有大致相同稳定度和精确度的其他离散频率的过程。频率合成器的实现方法大致有三类:直接模拟频率合成方法、锁相频率合成方法和直接数字频率合成方法。直接数字频率合成(dds)方法从相位的概念出发进行频率合成,采用了数字采样存储技术。由于dds是一个开环系统,无任何反馈环节,因而频率转换时间极短。此外该方法可全数字化实现、便于集成、体积小、重量轻。频率合成器设计中采用dds方法在当前的电子测量测试领域已经逐渐成为一种主流的做法。现有技术中的dds信号产生方法以at89c51单片机作为微处理器,通过串行端口向dds数字芯片ad9910发送配置参数。ad9910根据配置参数给定的工作模式和数据,由内部电路计算出其内核工作参数并进行频率合成,然后输出数字dds信号至其内部集成的14位dac进行模数转换,最后输出模拟dds信号。采用专用dds数字芯片实现频率合成器时,由于专用dds数字芯片的技术局限性,致使该类频率合成器存在不可避免的性能缺陷:专用dds数字芯片的相位累加器位数固定,缺乏灵活性;相位累加器位数较小并且合成频率分辨率较低、频点较少,不能保证频率合成器输出的准确度。现有技术中采用fpga实现dds信号发生器主要由fpga数字电路构造的相位累加器、波形存储器和数字乘法器构成。相位累加器以频率控制字循环累加得到相码,频率控制字由主控单元配置,频率控制字的大小决定输出频率值。波形存储器存储一个周期输出波形的样点。相位累加器的相码作为波形存储器的读地址,从中取出波形样点构成数字波形。波形存储器由fpga内部的rom实现。然后经由一个数字乘法器对波形样点乘上一个幅度补偿系数,最后送dac模块将数字波形转化为模拟波形输出。该方法可以通过主控单元配置浮动补偿系数以及dac的参考电压值实现幅度灵活精确可控,但其dds本质与ad9910专用dds芯片一致,都是采用相位累加器以时钟速率递归求和频率控制字,借助查找表的方式合成频率,使得合成频率分辨率较低、频点较少,不能保证频率合成器输出的准确度。传统dds方法的原理如图1所示,相位累加器(位宽为c)输出地址值,该值会线性增大,直到累加器的最大值2c并翻转。具体电路实施时为了节省资源,通常会舍去一定位数,保留到p位(仅使用msb),以便减小角度振幅转换模块的复杂程度。累加器的输出序列范围0到2p-1映射到单位圆的一圈上,即将0到2p-1范围的二进制值映射到0到2c范围内的弧度角,完成角度至幅度的转换。由转换器输出的y位数字幅度数字信号再经过一个y位的dac芯片转换为模拟信号,最后经过低通滤波器得到所需要的正弦信号。现有技术中的直接数字频率合成方法,其输出频率公式:其中,fout为目标合成频率,fsysclk为原始频率,一般地,原始频率为时钟模块的采样频率。2c为相位累加器的模数。ftw'为频率控制字,其值为正整数,通常情况下ftw'<2c-1,否则会合成一个奈奎斯特镜像频率。输出频率因此限制在一定的范围之内:由式ii可知,dds相位累加器模数2c决定dds的频率分辨率,同时也决定了可能的输出频率个数,即2c-1个。由于相位累加器位宽c为固定整数值,频率控制字又不能为小数,所以输出频率不能是任意值。由式i可见,输出频率和系统时钟必须满足下列关系:针对等于采样速率某一整数约数的输出频率fout=fsysclk/q,q为整数,代入式iii可得到频率控制字ftw':因为ftw'和q必须均为整数,所以唯一满足式iv的q值可以表示为2k,在实际应用中频率控制字可以表示为:其中c、k皆为整数。那么,在具体的dds实现时,存在两种情况:1、当频率控制字ftw'满足式v时,即ftw'为一个整数,dds可以输出精确频率。例如,fsysclk=100mhz,c为32,期望获得fout=6.25mhz,那么q=24,由式v计算可得的频率控制字是整数,即ftw'=268435456,此时的相位累加器在累加完成一个循环后地址涵盖了0到2c范围,下一次循环回到初始值,可以输出精确频率值。2、当频率控制字ftw'不满足式v时,即ftw'为一个非整数,实际累加时又只能取整数,一个周期以后不能回到初始点,所以在一定的范围内每个周期的采样点不同,致使波形幅值不同,波形不稳定。同时,累加一个周期后有相位损失,周期增大,频率减小,出现误差。例如fsysclk=100mhz,c为32,期望获得fout=10mhz,那么q=10,由式v求得ftw'=429496729.6,即表示这种情况下传统dds方法不能产生准确的10mhz。实际应用中一般将频率控制字四舍五入取整,即ftw'=429496730,此时合成的实际频率为10.00000000931322574615478515625mhz,比期望值大了约9.31mhz。在某些高精度的测试测量领域,如果频率合成器作为标准频率源来使用,这种mhz级别的误差是无法忍受的。技术实现要素:本发明的目的在于提供一种基于复合频率控制字的直接数字频率合成方法及装置,用以解决现有技术中直接数字频率合成方法合成频率分辨率较低、频点较少,准确度不高等问题。为了实现上述任务,本发明采用以下技术方案:一种基于复合频率控制字的直接数字频率合成方法,用于根据原始频率fsysclk获得目标合成频率fout的模拟信号,原始频率fsysclk的单位为mhz,目标合成频率fout的单位为mhz,所述的方法包括:步骤1:获得一组复合频率控制字ftw={x,a,b},其中数值x、数值a、数值b均为整数,且x>0,a≥0,b>0;其中,且m与n为互质数,c为正整数;y=m2c-xn;当a>0时,a与b为互质数;当a=0时,b为任意正整数;步骤2:以原始频率fsysclk循环执行n'次步骤2.1-2.5,获得一个周期的目标合成频率fout的模拟信号,n'为将约至m=1时n的值,且n'为正整数,对于第n次执行步骤2.1-2.5,n={1,2,…,n'};所述的步骤2.1-2.5按照以下步骤进行:步骤2.1:将初始数值与数值x相加,获得求和中间值,其中当n=1时,初始数值为0;步骤2.2:判断是否为整数,若为整数,则将求和中间值与数值a相加,获得最终求和值,否则直接将求和中间值作为最终求和值;将所述的最终求和值作为初始相位地址值,再对所述的初始相位地址值进行截取,获得最终相位地址值;步骤2.3:将所述的最终相位地址值进行相幅转换,获得幅值数字信号;步骤2.4:将所述的幅值数字信号转换为模拟信号,对所述的模拟信号进行滤波后再放大,输出个周期的目标合成频率fout的模拟信号;步骤2.5:若n≤n',则将本次循环时由步骤2.2获得的最终求和值作为初始数值,令n=n+1,执行步骤2.1;否则停止。本发明具有如下技术特征:进一步地,在所述的步骤2.2中,对初始相位地址值进行截取时,将初始相位地址值的低k位进行删除,获得最终相位地址值,k为正整数。进一步地,所述的步骤2.4中,对所述的模拟信号进行滤波时,采用七阶椭圆低通滤波的方法。本发明还保护一种基于复合频率控制字的直接数字频率合成装置,用于实现以上所述的基于复合频率控制字的直接数字频率合成方法,所述的装置包括控制字获得模块和模拟信号获得模块;所述的控制字获得模块与模拟信号获得模块连接,用于获得一组复合频率控制字ftw={x,a,b},其中数值x、数值a、数值b均为整数,且x>0,a≥0,b>0;其中,且m与n为互质数,c为正整数;y=m2c-xn;当a>0时,a与b为互质数;当a=0时,b为任意正整数;所述的模拟信号获得模块,用于以原始频率fsysclk循环执行n'次步骤2.1-2.5,获得一个周期的目标合成频率fout的模拟信号,n'为将约至m=1时n的值,且n'为正整数,所述的模拟信号获得模块包括相位累加器模块、地址生成器模块,相幅转换器模块以及数模转换、滤波及放大模块;所述的相位累加器模块与所述的地址生成器模块连接,用于将初始数值与数值x相加,获得求和中间值,其中当n=1时,初始数值为0,所述相位累加器模块的位宽为c;所述的地址生成器模块与所述的相幅转换器模块连接,用于判断是否为整数,若为整数,则将求和中间值与数值a相加,获得最终求和值,否则将求和中间值作为最终求和值;将所述的最终求和值作为初始相位地址值,再对所述的初始相位地址值进行截取,获得最终相位地址值;所述的相幅转换器模块与所述的数模转换、滤波及放大模块连接,用于对所述的最终相位地址值进行相幅转换,获得幅值数字信号;所述的数模转换、滤波及放大模块用于将所述的幅值数字信号转换为模拟信号,对所述的模拟信号进行滤波后再放大,输出个周期的目标合成频率fout的模拟信号。进一步地,所述的装置还包括参考时钟模块和辅助累加器模块;所述的参考时钟模块与所述的相位累加器模块连接,用于提供原始频率fsysclk;所述的辅助累加器模块与所述的地址生成器模块连接,用于存储复合频率控制字中的数值a与数值b。进一步地,所述的数模转换、滤波及放大模块包括数模转换模块,滤波器模块以及放大驱动模块;所述的数模转换模块与所述的滤波器模块连接,用于将所述的幅值数字信号转换为模拟信号;所述的滤波器模块与所述的放大驱动模块连接,用于滤除数模转换模块输出的模拟信号中的杂波和其他干扰信号;所述的放大驱动模块用于放大滤波之后的模拟信号,输出个周期的目标合成频率fout的模拟信号。进一步地,所述的模拟信号获得模块由fpga模块以及数模转换、滤波及放大模块组成。本发明与现有技术相比具有以下技术特点:1、本发明提出的基于复合频率控制字的直接数字频率合成方法中复合频率控制字灵活多变,克服了传统dds的相位累加器模数为固定值,频率控制字也必须为正整数,只能合成有限个精确频率信号的缺陷,在任意频点获得了更高的输出准确度;2、本发明提出的基于复合频率控制字的直接数字频率合成装置,充分利用了fpga在数字电路设计中灵活性以及在并行运算处理体系结构设计中的优势,采用fpga实现采用复合频率控制字的dds方法,使系统装置具备更灵活的体系结构和更快的处理速度。附图说明图1为传统dds方法的硬件实现原理示意图;图2为本发明提供的dds方法的流程图;图3为本发明的一个实施例中提供的用于实现本发明提供的dds方法的硬件原理示意图;图4为本发明提供的测试平台结构示意图;图5为本发明提供的dds方法与传统dds方法在输出1.024mhz的模拟信号时的相对频率差示意图;图6为本发明提供的dds方法与传统dds方法在输出2.048mhz的模拟信号时的相对频率差示意图;图7为本发明提供的dds方法与传统dds方法在输出5mhz的模拟信号时的相对频率差示意图;图8为本发明提供的dds方法与传统dds方法在输出10mhz的模拟信号时的相对频率差示意图。具体实施方式以下是发明人提供的具体实施例,以对本发明的技术方案作进一步解释说明。实施例一:由于传统dds的相位累加器模数为固定值,频率控制字也必须为正整数,导致传统dds方法只能合成有限个数的精确频率信号,因此本实施例给出一种基于复合频率控制字的直接数字频率合成方法,根据原始频率fsysclk合成输出目标合成频率fout的模拟信号。一般来说,原始频率fsysclk也就是参考时钟频率,由高稳晶振或原子钟输出的低频标准频率信号倍频获得,用于方法实现时控制处理步骤和节奏,也称为采样频率。如图2所示,所述的方法包括:步骤1:获得复合频率控制字ftw={x,a,b},其中数值x、数值a、数值b均为整数,且x>0,a≥0,b>0;其中,且m与n为互质数,c为正整数;y=m2c-xn;当a>0时,a与b为互质数;当a=0时,b为任意正整数;其中,c为相位累加器位宽参数,其取值可以是16、32等。在本步骤中,采用复合频率控制字的dds方法输出频率计算公式:目标合成频率fout和原始频率fsysclk确定了m和n的关系,即等于约至最小项的分数原始频率fsysclk为了符合奈奎斯特采样要求,与传统的dds方法相比较,n不要求是2的幂的形式,它可以是任意正整数。式vi可进一步描述为:其中,m、n和相位累加器的模数(2c)通过长除法确定了与x、y的关系。x通过取整运算获取,y为余数,即:进一步将y/n化简得到:式ix中,a和b为整数且互为质数。采用复合频率控制字的dds方法中,a和b送辅助累加器进行运算处理。将约至m=1时,得到相应的n,即n'是地址溢出一次经过的实际采样次数或者实际采样次数的附近值。假设n′为一个地址溢出一次实际采样次数,则n′等于n或者n的附近值,即一个周期中n′次采样完成一次从0到地址最大值的累加,当n′次采样后溢出进行下一次循环,如果每个周期的所有的采样点都是重合的点,则a为0,b可以为任意正整数,得到ftw={x,0,b},采用复合频率控制字的精确dds可以精确输出频率。如果每个周期的采样点不能重合,即a≠0时,则不能精确输出期望的频率,此时:如果化简式ix可得到b<n′,且b值是一个小于10的数字,那么复合频率控制字为ftw={x,a,b},一个周期采样后的余数分成均匀的b个等份,均匀的插入到整个采样过程当中,每次插入a值,使一个周期内的采样覆盖0到2c范围,下一次循环的所有采样点与第一次采样点重合,保证每一个周期的采样点都完全相同,dds可输出准确的频率。如果化简式ix不满足b<n′,即y/n除不尽的情况下,那么将式ix近似化简到b为小于10的一个整数,同时得到一个a值,此时复合频率控制字为ftw′={x,a,b},可保证dds合成频率更加接近期望值。例如,则则在本实施例中,原始频率fsysclk=100mhz,c=32,采用复合频率控制字的dds方法合成频率为1.024mhz的信号,复合频率控制字各分量的详细计算过程如下:可得到m=32,n=3125;y=m2c-xn=32×232-43980465×3125=347;得到即a=1,b=9;可得到复合频率控制字:ftw={43980465,1,9}。在本实施例中,原始频率fsysclk=100mhz,c=32,利用本发明的方法合成频率2.048mhz的复合频率控制字为:ftw={87960930,2,9},即x=87960930,a=2,b=9。在本实施例中,原始频率fsysclk=100mhz,c=32,利用本发明的方法合成频率5mhz的复合频率控制字为ftw={214748364,4,5},即x=214748364,a=4,b=5。在本实施例中,原始频率fsysclk=100mhz,c=32,利用本发明的方法合成频率10mhz的复合频率控制字为:ftw′={429496729,3,5},即x=429496729,a=3,b=5。步骤2:以原始频率fsysclk循环执行n'次步骤2.1-2.5,获得一个周期的目标合成频率fout的模拟信号,n'为将约至m=1时n的值,且n'为正整数。在本步骤中,在原始频率fsysclk下循环执行n'次步骤2.1-2.5,也就是说,在原始频率的作用下每来一个脉冲就执行一次步骤2.1-2.5,下一次脉冲来时,以上次获得的结果作为初始值再循环进行,脉冲是由原始频率进行控制的,当原始频率为1hz,就是指每秒都会有一个脉冲信号,当有这个脉冲信号的时候,执行一次步骤2.1-2.5。因此在本发明中原始频率fsysclk的作用包括:计算数值x、保持整个方法中所有步骤的统一,利用原始频率作为时钟频率,控制循环的间隔时间,同步电路中时钟的基础频率,控制所有步骤的统一性。在本步骤中,每执行1次步骤2.1-2.5会输出一段模拟信号,由于模拟信号周期性的正弦波的形式,因此每执行1次步骤2.1-2.5输出的是段正弦波的模拟信号,当原始频率为100mhz时,每获得一个周期的10mhz模拟信号,需要循环执行10次步骤2.1-2.5;每获得一个周期的20mhz模拟信号,需要循环执行5次步骤2.1-2.5;每获得一个周期的5mhz模拟信号,需要循环执行20次步骤2.1-2.5。所述的步骤2.1-2.5按照以下步骤进行:步骤2.1:将初始数值与数值x相加,获得求和中间值,其中当n=1时,初始数值为0;在本实施例中,目标合成频率fout=10mhz,当n=1时,x=429496729,求和中间值为429496729;n=2时,求和中间值为2*x=858993458。步骤2.2:判断是否为整数,若为整数,则将求和中间值与数值a相加,获得最终求和值,否则将求和中间值作为最终求和值;将所述的最终求和值作为初始相位地址值,再对所述的初始相位地址值进行截取,获得最终相位地址值;在本实施例中,目标合成频率fout=10mhz,a=3,b=5,当n=5时,求和中间值为5*x=2147483645,且则将求和中间值与数值a相加,获得最终求和值为2147483648;在本步骤中,当初始相位地址值的位数超过地址生成器的最大位宽时,地址生成器会自动溢出清零,即将初始相位地址值清0,也就是说,将最终求和值清0作为初始数值进入下一次循环中。可选地,在所述的步骤2.2中,对初始相位地址值进行截取时,将初始相位地址值的低k位进行删除,获得最终相位地址值,k为正整数。在本实施例中,目标合成频率fout=10mhz,n=2时,初始相位地址值为858993458;n=3时,初始相位地址值为1288490187。n=2和n=3时的初始相位地址进行相同低四位的截断,即k=4,则n=2时,最终相位地址值为85899;n=3时,最终相位地址值为128849。若初始相位地址值的位数小于k,则将初始相位地址值补0。步骤2.3:将所述的最终相位地址值进行相幅转换,获得幅值数字信号;步骤2.4:将所述的幅值数字信号转换为模拟信号,对所述的模拟信号进行滤波后再放大,输出个周期的目标合成频率fout的模拟信号;可选地,所述的步骤2.4中,对所述的模拟信号进行滤波时,采用七阶椭圆低通滤波的方法。步骤2.5:若n≤n',则将本次循环时由步骤2.2获得的最终求和值作为初始数值,令n=n+1,执行步骤2.1,否则停止。经过n'次循环执行步骤2.1-2.5后,获得了一个周期的目标合成频率fout的模拟信号,循环的次数根据目标合成频率的模拟信号的长度确定,若需要的模拟信号长度包括多个周期,那么就可以循环多个n'次的步骤2.1-2.5,获得符合长度要求的目标合成频率的模拟信号。实施例二:本实施例给出一种基于复合频率控制字的直接数字频率合成装置,用于实现实施例一中所述的基于复合频率控制字的直接数字频率合成方法,如图3所示,所述的装置包括控制字获得模块和模拟信号获得模块。所述的控制字获得模块与相位累加器模块连接,用于获得一组复合频率控制字ftw={x,a,b},其中数值x、数值a、数值b均为整数,且x>0,a≥0,b>0;其中,且m与n为互质数,c为正整数;y=m2c-xn;当a>0时,a与b为互质数;当a=0时,b为任意正整数。所述的模拟信号获得模块,用于以原始频率fsysclk循环执行n'次步骤2.1-2.5,获得一个周期的目标合成频率fout的模拟信号,n'为将约至m=1时n的值,且n'为正整数,所述的模拟信号获得模块包括相位累加器模块、地址生成器模块,相幅转换器模块以及数模转换、滤波及放大模块;所述的相位累加器模块与所述的地址生成器模块连接,用于将初始数值与数值x相加,获得求和中间值,其中当n=1时,初始数值为0,所述相位累加器模块的位宽为c;所述的地址生成器模块与所述的相幅转换器模块连接,用于判断是否为整数,若为整数,则将求和中间值与数值a相加,获得最终求和值,否则将求和中间值作为最终求和值;将所述的最终求和值作为初始相位地址值,再对所述的初始相位地址值进行截取,获得最终相位地址值;所述的相幅转换器模块与所述的数模转换、滤波及放大模块连接,用于对所述的最终相位地址值进行相幅转换,获得幅值数字信号;所述的数模转换、滤波及放大模块用于将所述的幅值数字信号转换为模拟信号,对所述的模拟信号进行滤波后再放大,输出个周期的目标合成频率fout的模拟信号。可选地,所述的装置还包括参考时钟模块,辅助累加器模块;所述的参考时钟模块与所述的相位累加器模块连接,用于提供原始频率fsysclk;在本实施例中,参考时钟模块采用srs公司的铷原子钟prs10。铷原子钟prs10的输出频率为10mhz正弦信号(vpp=1.41v),经过倍频到100mhz作为原始频率。所述的辅助累加器模块与所述的地址生成器模块连接,用于存储复合频率控制字中的数值a与数值b;可选地,所述的数模转换、滤波及放大模块包括数模转换模块,滤波器模块以及放大驱动模块;所述的数模转换模块与所述的滤波器模块连接,用于将所述的幅值数据转换为模拟信号;在本实施例中,数模转换模块maxim公司的16位并行输入dac芯片max5885,将ep1c12q240i7输出的数字波形转化为模拟波形输出。所述的滤波器模块与所述的放大驱动模块连接,用于滤除数模转换模块输出的模拟信号中的杂波和其他干扰信号;在本实施例中,如图3所示,lpf为低通滤波器,为了滤除掉dac模块输出波形中的杂波和其他干扰信号,采用了七阶椭圆滤波器滤波,提高合成波形的质量。所述的放大驱动模块用于提高直接数字频率合成装置的驱动能力。在本实施例中,采用ti公司的超低噪声集成运放芯片opa847设计实现,使本发明装置具备较大的驱动能力,50ω负载条件下,输出合成频率信号的幅度不小于3vpp。作为一种优选的实施方式,所述的模拟信号获得模块由fpga模块以及数模转换、滤波及放大模块组成。在本实施例中,模拟信号获得模块由fpga模块加上数模转换、滤波及放大模块组成,fpga模块选用altera公司的飓风系列的ep1c12q240i7,在ep1c12q240i7中设计实现了相位累加器、辅助累加器、地址生成器、相幅转换器等数字逻辑电路,在100mhz原始频率的驱动下并行实现采用复合频率控制字的dds方法;并且,控制字获得模块的功能也可以由fpga模块进行实现。实施例三在本实施例中,对本发明提供的一种基于复合频率控制字的直接数字频率合成方法及装置的合成准确度进行测试,通过对比本发明的方法和装置与传统dds方法和装置合成频率的准确度,测试平台如图4所示,图4中标准频率源用于提供原始频率即采样频率,分配放大器将原始频率分别送至dds的fpga平台以及通用频率计数器,dds的pfga实现平台可以是本发明提供的用于实现本发明提供的dds方法的pfga平台,也可以是传统的dds方法的fpga实现平台,通用频率计数器的作用是获得相对频率差,timelab软件和stable32软件用于绘制测量结果图,测量结果如图5-8所示,图5-8中横坐标表示测量的平均时间,纵坐标表示相对频率差,在同样采用srs公司的铷原子钟prs10作为时钟参考的前提下,本发明合成频率相对频率偏差约为2.00e-12相对于传统dds方法(相对频率偏差约为2.00e-9)降低了大约3个数量级,可证明本发明具备更高的频率输出准确度。当前第1页12当前第1页12