一种高速高精度NCO电路的制作方法

文档序号:23063014发布日期:2020-11-25 17:46阅读:215来源:国知局
本发明涉及大规模数字集成电路设计
技术领域
:,特别涉及一种高速高精度nco电路。
背景技术
::在信号的发送系统中,基带信号通常需要在duc(digitalupconverter,数字上变频器)模块上变频至中频段,duc模块包括插值、滤波和混频三个步骤。作为混频器的重要组件,nco(numericalcontrolledoscillator,数控振荡器)的性能对输出的信号质量有重要影响。通常nco的实现有两种方式:基于rom的查找表法和rom-less方法。基于rom的查找表法是先将相位/幅度的关系按照地址/数值的方式储存,将相位作为地址索引位来获取幅度值。rom-less方法则是相位直接通过算法计算出幅度值,rom-less方法通常采用cordic算法计算。cordic算法能够实现高度高精度的正余弦输出,由于需要多级流水迭代,所以需要消耗大量的寄存器资源,多应用在fpga或者dds中。在asic电路的duc模块中,nco只是其中一个组件,如果采用cordic算法实现,则单个nco模块的面积占比非常大。所以asic电路的duc模块多采用基于rom的查表法结合算法实现。技术实现要素:本发明的目的在于提供一种高速高精度nco电路,使高速duc模块实现高速高精度且面积相对较小的效果。为实现上述效果,本发明提供了一种高速高精度nco电路,包括:相位累加器,根据输入的频率配置字和相位配置字产生并行相位;若干个阵列的相位幅度转换单元,将相位累加器的输出相位转换成对应的幅度值,生成对应频率的正余弦波形。可选的,所述相位累加器包括相位字寄存器,频率字寄存器,累加器,累加器输出,相位计算模块;所述相位字寄存器和所述频率字寄存器由同一个相位更新信号更新,输出端均接至所述累加器,所述累加器通过所述累加器输出将数据送至所述相位计算模块。可选的,所述相位计算模块输出四个相位phase1,phase2,phase3和phase4,每个相位的计算规则如下:phase1=acc_out-2*ftw;phase2=acc_out-1*ftw;phase3=acc_out;phase14=acc_out+1*ftw;其中,acc_out为累加器输出,ftw为频率配置字。可选的,所述相位幅度转换单元的数量为4个,每个阵列相位幅度转换单元完全一致,输入数据分别为所述相位计算模块输出的四个相位,每个阵列相位幅度转换单元输出1组正余弦波形,共输出4组正弦4组余弦。可选的,所述相位幅度转换单元包括:相位转换模块,cos查表模块,sin查表模块,cos主体计算模块,sin主体计算模块,cos残差计算模块,sin残差计算模块,象限切换模块,延时线1和延时线2。可选的,所述相位转换模块将相位累加器计算出的相位乘以π转化为弧度值,输入数据为phase[a:0],输出数据为phase_pi[a:0],其中a表示数据位宽为a+1。可选的,所述cos查表模块中,弧度值的高位phase_pi[a-3:b]作为索引值进行查表,cos对应查找表储存[0,π/4]象限的数据,存储的数据分别2^(a-b-2)-1个;cos查表模块输出为cos(x),x表示phase_pi[a-3:b]对应的弧度值,a表示数据位宽为a+1,b表示弧度值phase_pi用来查表的最低比特位。可选的,所述sin查表模块中,弧度值的高位phase_pi[a-3:b]作为索引值进行查表,sin对应查找表储存[0,π/2]象限的数据,存储的数据分别2^(a-b-2)-1个;sin查表模块输出为sin(x),x表示phase_pi[a-3:b]对应的弧度值,a表示数据位宽为a+1,b表示弧度值phase_pi用来查表的最低比特位。可选的,所述cos主体计算模块包括:根据相位的中间位phase_pi[b-1:c]和查表输出的值对[0,π/4]象限的数据进行逐步修正,细化级数为b-c,最终输出为cos(x+y),y表示phase_pi[b-1:c]对应的弧度值,b表示弧度值phase_pi用来查表的最低比特位,c表示弧度值phase_pi用于逐步修正的最低比特位;cos(x+y)计算方法为:可选的,所述sin主体计算模块包括:根据相位的中间位phase_pi[b-1:c]和查表输出的值对[0,π/4]象限的数据进行逐步修正,细化级数为b-c,最终输出为sin(x+y),y表示phase_pi[b-1:c]对应的弧度值,b表示弧度值phase_pi用来查表的最低比特位,c表示弧度值phase_pi用于逐步修正的最低比特位;sin(x+y)计算方法为:可选的,所述cos残差计算模块根据相位剩余位phase_pi[c-1:0]和查表输出的值对[0,π/4]象限的数据进行最终一次修正,最终输出为cos(x+y+z),,c表示弧度值phase_pi用于逐步修正的最低比特位,z表示phase_pi[c-1:0]对应的弧度值,cos(x+y+z)计算方法如下:可选的,所述sin残差计算模块根据相位剩余位phase_pi[c-1:0]和查表输出的值对[0,π/4]象限的数据进行最终一次修正,最终输出为sin(x+y+z),,c表示弧度值phase_pi用于逐步修正的最低比特位,z表示phase_pi[c-1:0]对应的弧度值,sin(x+y+z)计算方法如下:可选的,所述象限切换模块根据phase_pi[a:a-2],选择cos残差计算模块和sin残差计算模块输出的finial_out_cos和finial_out_sin,具体计算逻辑如下,phase_pi[16:14]0123finial_out_coscos(x+y+z)sin(x+y+z)-sin(x+y+z)-cos(x+y+z)finial_out_sinsin(x+y+z)cos(x+y+z)cos(x+y+z)sin(x+y+z)phase_pi[16:14]4567finial_out_cos-cos(x+y+z)-sin(x+y+z)sin(x+y+z)cos(x+y+z)finial_out_sin-sin(x+y+z)-cos(x+y+z)-cos(x+y+z)-sin(x+y+z)按照对应象限进行取负的运算。可选的,所述延时线1对相位转换模块输出的弧度进行延时处理,保持相位值phase_pi[b-1:c]和cos主体计算模块cos_main_calculation和sin主体计算模块sin_main_calculation的时序一致。可选的,所述延时线2对相位转换模块输出的弧度进行延时处理,保持相位值phase_pi[c-1:0]和cos残差计算模块cos_residual_caculation和sin残差计算模块sin_residual_caculation的时序一致。在本发明提供的高速高精度nco电路中,包括相位累加器和若干个阵列的相位幅度转换单元。所述相位累加器根据输入的频率配置字和相位配置字产生并行相位;所述相位幅度转换单元为四个阵列,将相位累加器的输出相位转换成对应的幅度值,最终生成对应频率的正余弦波形。本发明提供一种适用于duc电路的高速高精度的nco设计,且占用硬件资源相对较小。附图说明图1是本发明提供的高速高精度nco电路的整体结构示意图;图2是相位累加器结构示意图;图3是相位幅度转换单元结构示意图;图4是相位累加器的输入输出示意图;图5是相位-幅度转换过程中各节点的波形图。具体实施方式以下结合附图和具体实施例对本发明提出的一种高速高精度nco电路作进一步详细说明。根据下面说明和权利要求书,本发明的优点和特征将更清楚。需说明的是,附图均采用非常简化的形式且均使用非精准的比例,仅用以方便、明晰地辅助说明本发明实施例的目的。实施例一本发明提供了一种高速高精度nco电路,其整体结构如图1所示,包括相位累加器(phass_acc)和若干个阵列的相位幅度转换单元(phase_to_amp)。所述相位累加器根据输入的频率配置字(ftw)和相位配置字(pow)产生并行相位;所述相位幅度转换单元(phase_to_amp)为四个阵列,将相位累加器的输出相位转换成对应的幅度值,最终生成对应频率的正余弦波形。如图2所示为将相位累加器的结构示意图,包括相位字寄存器(pow_reg),频率字寄存器(ftw_reg),累加器(acc),累加器输出(acc_out),相位计算模块(phase_calc);所述相位字寄存器和所述频率字寄存器由同一个相位更新信号(phase_update)更新,输出端均接至所述累加器,所述累加器通过所述累加器输出将数据送至所述相位计算模块。所述相位计算模块输出四个相位phase1,phase2,phase3和phase4,频率配置字ftw设计位宽为32比特即ftw[31:0],相位配置字pow为16比特即pow[15:0],每个相位的计算规则如下:phase1=acc_out-2*ftw;phase2=acc_out-1*ftw;phase3=acc_out;phase14=acc_out+1*ftw;其中,acc_out为累加器输出,ftw为频率配置字。所述相位幅度转换单元的数量为4个,每个阵列相位幅度转换单元完全一致,输入数据分别为所述相位计算模块输出的四个相位,每个阵列相位幅度转换单元输出1组正余弦波形,共输出4组正弦4组余弦。如图3所示为相位幅度转换单元的结构示意图,包括相位转换模块(phase_convert),cos查表模块(cos_look_up_table),sin查表模块(sin_look_up_table),cos主体计算模块(cos_main_calculation),sin主体计算模块(sin_main_calculation),cos残差计算模块(cos_residual_calculation),sin残差计算模块(sin_residual_calculation),象限切换模块(quadrant_switch),延时线1(delay_line_1),延时线2(delay_line_2)。其中,所述相位转换模块(phase_convert)将相位累加器计算出的相位乘以π转化为弧度值,输入相位截位处理保留16比特,即输入相位为phase[15:0],π定点数去201,相乘后截位输出16比特数据,即phase_pi[16:0],相位累加器的输入输出如图4所示。所述cos查表模块(cos_look_up_table)中,取弧度值的高位phase_pi[13:8]作为索引值进行查表,cos对应查找表储存[0,π/4]象限的数据,存储数据量2^(13-8+1)-1=63。cos查表模块输出为cos(x),x表示对应的幅度值。所述sin查表模块(sin_look_up_table)中,取弧度值的高位phase_pi[13:8]作为索引值进行查表,sin对应查找表储存[0,π/2]象限的数据,存储数据量2^(13-8+1)-1=63。sin查表模块输出为sin(x),x表示对应的幅度值。所述cos主体计算模块(cos_main_calculation)包括:根据相位的中间位phase_pi[7:6]和查表输出的值对[0,π/4]象限的数据进行逐步修正,细化级数为2,最终输出为cos(x+y)计算方法为:所述sin主体计算模块(sin_main_calculation)包括:根据相位的中间位phase_pi[7:6]和查表输出的值对[0,π/4]象限的数据进行逐步修正,细化级数为2,最终输出为sin(x+y),计算方法为:所述cos残差计算模块(cos_residual_calculation)根据相位剩余位phase_pi[5:0]和查表输出的值对[0,π/4]象限的数据进行最终一次修正,最终输出为cos(x+y+z),计算方法如下:所述sin残差计算模块(sin_residual_calculation)根据相位剩余位phase_pi[5:0]和查表输出的值对[0,π/4]象限的数据进行最终一次修正,最终输出为sin(x+y+z),计算方法如下:所述象限切换模块(quadrant_switch)根据phase_pi[16:14],选择cos残差计算模块和sin残差计算模块输出的finial_out_cos和finial_out_sin,并且按照对应象限的需求进行取负的运算,具体计算逻辑如下表所示:phase_pi[16:14]0123finial_out_coscos(x+y+z)sin(x+y+z)-sin(x+y+z)-cos(x+y+z)finial_out_sinsin(x+y+z)cos(x+y+z)cos(x+y+z)sin(x+y+z)phase_pi[16:14]4567finial_out_cos-cos(x+y+z)-sin(x+y+z)sin(x+y+z)cos(x+y+z)finial_out_sin-sin(x+y+z)-cos(x+y+z)-cos(x+y+z)-sin(x+y+z)相位-幅度的转换过程如图5所示。所述延时线1(delay_line_1)对相位转换模块输出的弧度进行延时处理,保持相位值phase_pi[13:8]和cos主体计算模块cos_main_calculation和sin主体计算模块sin_main_calculation的时序一致。所述延时线2(delay_line_2)对相位转换模块输出的弧度进行延时处理,保持相位值phase_pi[7:6]和cos残差计算模块cos_residual_caculation和sin残差计算模块sin_residual_caculation的时序一致。上述描述仅是对本发明较佳实施例的描述,并非对本发明范围的任何限定,本发明领域的普通技术人员根据上述揭示内容做的任何变更、修饰,均属于权利要求书的保护范围。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1