基于改进cordic算法的直接数字频率合成器的制造方法

文档序号:10660401阅读:254来源:国知局
基于改进cordic算法的直接数字频率合成器的制造方法
【专利摘要】本发明公开了一种基于改进CORDIC算法的直接数字频率合成器,包括:相位累加器和相位幅度转换器,其中,相位累加器位宽是32位,输出截断之后是19位;相位幅度转换器由查找表ROM、乘法器、超四旋转模块和区块选择模块组成,查找表ROM利用相位字第15?9位寻址对查找表ROM查表得到旋转的粗值,粗值经过乘法器运算后输入到超四旋转模块中,同时输入到超四旋转模块的还有9位的相位字,超四旋转模块采用超四CORDIC算法对粗值进行旋转计算,最后区块选择模块根据第18?16位对超四旋转模块输出的数据进行相应的镜像操作或者是翻转操作,从而得到最后的输出结果。本发明的有益之处在于:噪声小、转换时间短、SFDR高、硬件电路的资源消耗少。
【专利说明】
基于改进CORD IC算法的直接数字频率合成器
技术领域
[0001 ]本发明涉及一种直接数字频率合成器,具体涉及一种基于改进C0RDIC算法的直接 数字频率合成器。
【背景技术】
[0002] 直接数字频率合成器简称为DDS,这是一种最近一些年才发展起来的新型的频率 合成设备。这种设备依托于快速发展的集成电路技术,现代集成电路技术根据摩尔定律的 预测在不断的进步,直接数字频率合成器在这个环境之下也受到越来越多的重视。这种频 率合成比设备以前的传统频率合成设备分辨率更高,转换时间更快,噪声更低,所以在许多 的电子系统当中被广泛的应用。
[0003] 相位累加器和相位幅度转换器两部分组成了直接数字频率合成器的数字电路部 分。
[0004] 在相位幅度转换器中,参照图1,传统的C0RDIC计算单元计算结果输出会进行一些 运算处理,之后再反馈到输入信号端,让该信号循环迭代计算处理以实现正余弦信号的计 算。通过这种结构实现目的的话,电路工作的速度会很慢,一般几个时钟周期的时间才能够 计算输出一个信号数据,一般来说,假如输出数据是Μ位,就需要Μ个时钟周期的时间。
[0005] 为了避开上述问题,常规的办法是使用流水线的结构来设计实现正余弦信号的计 算,也就是使用多个算法核,在同一个周期内进行迭代计算处理,如此一来在每个周期都能 够计算输出完整的数据。如果使用常规的C0RDIC算法核,其输入若为Ν位,则需要Ν-2次级流 水线进行迭代,高两位作为象限选择位。
[0006] 然而,使用上述常规的C0RDIC算法核来实现正余弦信号的计算时,仍然存在以下 一些问题,例如:
[0007] (一)、输出延时较长;
[0008] (二)、需要经过多次旋转计算;
[0009] (三)、消耗的硬件资源较多。

【发明内容】

[0010] 为解决现有技术的不足,本发明的目的在于提供一种基于改进C0RDIC算法的直接 数字频率合成器,其能够避免较长的输出延时和较大的硬件资源消耗。
[0011] 为了实现上述目标,本发明采用如下的技术方案:
[0012] -种基于改进⑶RDIC算法的直接数字频率合成器,包括:相位累加器和相位幅度 转换器,其特征在于,
[0013] 前述相位累加器由加法器和相位寄存器组成,其位宽是32位,输出截断之后是19 位,高3位用来进行区块选择,接下来的7位用来进行查找表ROM寻址,低9位用于C0RDIC算法 的旋转计算;
[0014] 前述相位幅度转换器由查找表R0M、乘法器、超四旋转模块和区块选择模块组成:
[0015] 查找表ROM中存储了相位字高7位相应的正余弦值,利用相位字第15-9位寻址对查 找表ROM查表得到旋转的粗值(X,Y ),利用相位字第16位对经过查找表ROM寻址得到的值进 行处理,如果第16位为0则查表得到的值直接用于下一步的运算,如果第16位为1则将查表 所得(Χ,γ)值调换,这一步得到的值经过乘法器进行乘法运算,乘法的系数是了和I,经过 4 4 乘法运算之后的数据输入到超四旋转模块中,同时输入到该超四旋转模块的还有9位的相 位字,超四旋转模块采用超四CORDIC算法对经过查找表ROM粗值旋转之后剩余的9位相位字 进行旋转计算,并利用第16位相位字对不同区块C0RDIC运算时的旋转方向进行处理,如果 第16位为0则对0到3区块进行顺时针旋转,5到7区块进行逆时针旋转,第4区块不进行旋转, 如果第16位为1则对0到3区块进行逆时针旋转,对5到7区块进行顺时针旋转,第4区块不进 行旋转,经过旋转计算之后,超四旋转模块输出[0, f ]区域的正余弦数据,区块选择模块 根据第18-16位对超四旋转模块输出的[0, 区域的正余弦数据进行相应的镜像操作或 者是翻转操作,从而得到最后的输出结果。
[0016] 前述的基于改进C0RDIC算法的直接数字频率合成器,其特征在于,前述超四旋转 模块由三个超四单元组成,
[0017] 相位字的二进制序列码按从高到低位分组,三位为一组,每组对应一个超四单元, 每次进行旋转操作时,以一组为旋转对象,超四单元在每一组上加上一定的补偿角度值 "100",并利用第16位相位字对不同区块C0RDIC运算时的旋转方向进行处理,如果第16位为 0则对0到3区块进行顺时针旋转,5到7区块进行逆时针旋转,第4区块不进行旋转,如果第16 位为1则对0到3区块进行逆时针旋转,对5到7区块进行顺时针旋转,第4区块不进行旋转。
[0018] 前述的基于改进⑶RDIC算法的直接数字频率合成器,其特征在于,前述直接数字 频率合成器的相位幅度转换器采用的是16路内插的方式。
[0019] 本发明的有益之处在于:
[0020] (一)、本发明的直接数字频率合成器,因对传统⑶RDIC算法改进后的超四⑶RDIC 算法与查找表ROM相结合的方式来实现相位幅度转换,减少了计算迭代次数,并且超四 C0RDIC算法在进行精细旋转的同时会进行一定的相位补偿,直接数字频率合成器的相位幅 度转换器采用的是16路内插的方式,所以其噪声更小、转换时间更短、SFDR更高;
[0021] (二)、改进后的⑶RDIC算法,因为使用查找表得出粗值再经过超四⑶RD IC算法三 次精细旋转得到8分圆相位的正余弦函数值,再利用正余弦波形的对称性,得到整个相位的 正余弦函数值,而传统C0RDIC算法相位累加器N位输出需进行N-2次循环迭代,高两位作为 象限选择位,所以改进后计算迭代的次数减少,从而减少了硬件电路的资源消耗。
【附图说明】
[0022]图1是传统的C0RDIC算法的结构示意图;
[0023] 图2是本发明的直接数字频率合成器的结构示意图。
【具体实施方式】
[0024] 以下结合附图和具体实施例对本发明作具体的介绍。
[0025]参照图2,相位累加器和相位幅度转换器两部分组成了本发明的直接数字频率合 成器的数字电路部分。
[0026] -、相位累加器
[0027]相位累加器由加法器和相位寄存器组成,其中,加法器用来对相位进行累加,相位 寄存器用来寄存相位,以进行下一次累加,在系统时钟fs的控制下,频率控制字FCW从其寄 存器输出进入加法器,其输出结果返回进入加法器,如此不断进行往复,形成累加过程。 [0028]相位字的安排:相位累加器的位宽是32位,由于最后输出的正余弦值为16位,因此 相位字的长度为16位加高3位的区块划分,即输出截取为19位,其余的低位则被截断了。 [0029] 1、高3位用来进行区块选择
[0030]由于正弦波的对称性和C0RDIC算法能够同时计算正弦函数值和余弦函数值,所以 正弦波形可以被分块位8份,相位字的高3位是用于选择这8个区块,2的三次方等于8,因此 使用高3位来进行区块选择。
[0031] 2、中间7位用来进行查找表ROM寻址
[0032]最后的正余弦值是16位二进制数,本文所采用的C0RDIC算法在单次旋转中旋转的 角度分别是〇、1 α、2α、3α、4α,α为此次旋转的基础角度,因为4倍角度(即4α)时导致的误差是 最大的,所以只需要此时的误差小于最小精度即可。那么基础角度α满足的条件为:
[0034] 那么可以知道α需要满足的要求是:α〈2#。
[0035] 由于本文采用的C0RDIC算法是一次旋转3位(下一节将会具体阐述本文所采用的 详细的C0RDIC算法),旋转的3位中的最低位就是此次旋转的基础角度,故需要采用7位相位 字作为查找表ROM的寻址地址。又由于相位字的前3位是用来划分区块,因此正式的计数是 从第4位开始的,也就是第4位到第10位这7位作为查找表ROM的寻址地址。
[0036] 3、低9位用于C0RDIC算法的旋转计算
[0037]本文中的C0RDIC算法采用的是超四⑶RDIC算法,即一次旋转3位,剩余9位需要旋 转三次。
[0038]二、相位幅度转换器
[0039] 相位幅度转换器由查找表R0M、乘法器、超四旋转模块和区块选择模块组成。
[0040] 1、查找表 ROM
[0041 ]查找表ROM用来对相位累加器输出的相位字进行粗值旋转。
[0042]查找表ROM中存储了相位字高7位相应的正余弦值,利用相位字第15-9位寻址对查 找表ROM查表得到旋转的粗值(X,Y ),利用相位字第16位(第16位为区块选择符,此处只需要 一位区块选择字)对经过查找表ROM寻址得到的值进行处理,如果第16位为0则查表得到的 值直接用于下一步的运算,如果第16位为1则将查表所得(X,Y)值调换,这是根据正弦波形
[0,·|)区域与(營,.]区域内的正弦与余弦值镜像对称的原理。
[0043]如果需要将一个向量(x,y)旋转某个角度α,如果暂时不考虑幅度缩放的话,那么 可以用式(1)的矩阵乘法来表示这个运算:
[0045] 假如角度α的大小足够小,那么就能够使用这几个近似:sina^a,cosa^i 1,tana^i 1〇[0046] 那么式(1)中的矩阵就能够简化成式(2)的形式:
[0048] 该矩阵能够用来替代式(1)中的原始矩阵,在实际的旋转计算中也能够使用式(2) 这个矩阵。
[0049] 如果把原始矩阵提取出一个公因式cosa,那么得到的形式与式(2)的形式就会非 常相似,提取公因式后的矩阵如下:
[0051]如果更加精确的描述这几个矩阵的话,式(2)中的简化矩阵实际旋转的角度并不 是a,而是i3 = arCtana。也就是说,如果使用简化的矩阵来进行计算的话,由于实际旋转角度 与计划旋转角度并不相等,会引进一个误差,实际旋转角度和计划旋转角度之间有着式(4) 的关系:
[0053]很明显从式(4)能够看出来,近似的旋转操作会导致误差的产生,同时近似操作还 会导致幅度缩放误差的存在,幅度缩放因子可以表示成如下形式:
[0055] 在用近似的角度进行旋转时,导致的误差大小为μ,μ与角度的关系为:
[0056] μ^-α2 式(6)
[0057]使用近似计算时,若需要误差对最后计算出来的正余弦结果不产生影响,那么误 差μ必须小于计算结果的最小精度。
[0058]最后的正余弦值是16位二进制数,本文所采用的C0RDIC算法在单次旋转中旋转的 角度分别是〇、1 α、2α、3α、4α,α为此次旋转的基础角度,因为4倍角度(即4α)时导致的误差是 最大的,所以只需要此时的误差小于最小精度即可。那么基础角度α满足的条件为:
[0060] 那么可以知道α需要满足的要求是:α〈2#。
[0061] 由于本文采用的C0RDIC算法是一次旋转3位,旋转的3位中的最低位就是此次旋转 的基础角度,故需要采用7位相位字作为查找表ROM的寻址地址。又由于相位字的前3位是用 来划分区块,因此正式的计数是从第4位开始的,也就是第4位到第10位这7位作为查找表 ROM的寻址地址。
[0062] 2、乘法器
[0063] 乘法器用来对查找表ROM得到的正余弦粗值与^和^进行乘法运算。 4 4
[0064] 经查找表ROM寻址得到的值经过该乘法器进行乘法运算,乘法的系数是^和^。 4 4
[0065]在此做乘法运算是为了把后级的超四C0RDIC算法所需要的值提前计算出来,以便 于后级超四C0RDIC算法实现旋转时只需要进行移位和加减法操作即可。
[0066]乘法的系数之所以选定|和¥,是因为使用超四⑶RDIC算法时精细旋转所对应 4 4 的角度非常小,此时可以用角度来代替正切值,算法中直接使用相位字所代表的权重τ1来 代表角度值,而该权重表示的是f的权重,才表示实际的角度,所以将f作为公因式 提取出来在乘法器这一级提前计算,而使用¥作为乘法系数是因为算法中需要三倍的数 4 据作为输入。
[0067] 3、超四旋转模块
[0068] 超四旋转模块用来对经过查找表ROM粗值旋转之后剩余的9位相位字进行旋转计 算,其采用的是改进后的CORD IC算法,即超四CORD IC算法。
[0069] 经过乘法运算之后的数据输入到超四旋转模块中,同时输入到该超四旋转模块的 还有9位的相位字,超四旋转模块采用超四C0RDIC算法对这9位相位字进行旋转计算,并利 用第16位相位字对不同区块C0RDIC运算时的旋转方向进行处理,如果第16位为0则对0到3 区块进行顺时针旋转,5到7区块进行逆时针旋转,第4区块不进行旋转,如果第16位为1则对 0到3区块进行逆时针旋转,对5到7区块进行顺时针旋转,第4区块不进行旋转。
[0070] 超四旋转模块采用超四⑶RDIC算法对经过查找表ROM粗值旋转之后剩余的9位相 位字进行旋转计算的具体过程如下:
[0071] 相位字的二进制序列码按从高到低位分组,三位为一组,这三位字节决定了旋转 的角度,每组对应一个超四单元,每次进行旋转操作时,以一组为旋转对象,超四单元在每 一组上加上一定的补偿角度值"100",并利用第16位相位字对同区块C0RDIC运算时的旋转 方向进行处理,如果第16位为0则对0到3区块进行顺时针旋转,5到7区块进行逆时针旋转, 第4区块不进行旋转,如果第16位为1则对0到3区块进行逆时针旋转,对5到7区块进行顺时 针旋转,第4区块不进行旋转,整体加上的相位字则是"100100100"。
[0072]如此一来,在进行旋转计算时就可以少旋转4个单位的角度,旋转的次数减少,这 样可以简化计算。
[0073]在本发明的相位幅度转换器中,我们将查找表ROM与超四C0RDIC算法相结合,先使 用查找表ROM进行粗值旋转,得出粗值,再经过超四CORD IC算法计算得出精确值,从而获得 的效果是:相位幅度转换器噪声更小、转换时间更短、SFDR更高,硬件资源消耗更少。
[0074] 4、区块选择模块
[0075]区块选择器用来对超四旋转模块输出的[0, I]区域的正余弦值进行相应镜像操 作或者翻转操作。
[0076] 经过旋转计算之后超四旋转模块输出[0, f]区域的正余弦数据,区块选择模块 根据第18-16位对超四旋转模块输出的区域的正余弦数据进行相应的镜像操作或 者是翻转操作,从而得到最后的输出结果,该结果就是使用本相幅转换器计算所得的正余 弦值。
[0077] 本发明的直接数字频率合成器,其相位幅度转换器采用的是16路内插的方式,该 方式可提高带宽。
[0078] 参照图2,本发明的直接数字频率合成器的工作过程如下:
[0079] 相位累加器输出19位相位字,高3位用来进行区块选择,接下来的7位用来进行查 找表ROM寻址,低9位用于C0RDIC算法的旋转计算,相位幅度转换器中的查找表ROM利用相位 字第15-9位寻址对查找表ROM查表得到旋转的粗值(X,Y ),利用相位字第16位对经过查找表 ROM寻址得到的值进行处理,如果第16位为0则查表得到的值直接用于下一步的运算,如果 第16位为1则将查表所得(X,Y)值调换,这一步得到的值经过乘法器进行乘法运算,乘法的 系数是f和#,经过乘法运算之后的数据输入到超四旋转模块中,同时输入到该超四旋转 4 4 模块的还有9位的相位字,超四旋转模块采用超四C0RDIC算法对经过查找表ROM粗值旋转之 后剩余的9位相位字进行旋转计算,并利用第16位相位字对不同区块C0RDIC运算时的旋转 方向进行处理,如果第16位为0则对0到3区块进行顺时针旋转,5到7区块进行逆时针旋转, 第4区块不进行旋转,如果第16位为1则对0到3区块进行逆时针旋转,对5到7区块进行顺时 针旋转,第4区块不进行旋转,经过旋转计算之后超四旋转模块输出[0, I]区域的正余弦 4 数据,区块选择模块根据第18-16位对超四旋转模块输出的[0, f]区域的正余弦数据进行 相应的镜像操作或者是翻转操作,从而得到最后的输出结果。
[0080] 本发明的直接数字频率合成器,因为对传统C0RDIC算法改进后的超四C0RDIC算法 与查找表ROM相结合的方式来实现相位幅度转换,减少了计算迭代次数,并且超四C0RDIC算 法在进行精细旋转的同时会进行一定的相位补偿,直接数字频率合成器的相位幅度转换器 采用的是16路内插的方式,所以其噪声更小、转换时间更短、SFDR更高。
[0081] 此外,本发明的直接数字频率合成器,因为其采用了改进的C0RDIC算法(即超四 CORD IC算法),因为该改进的⑶RDIC算法使用查找表得出粗值再经过超四CORD IC算法三次 精细旋转得到8分圆相位的正余弦函数值,再利用正余弦波形的对称性,得到整个相位的正 余弦函数值,而传统C0RDIC算法相位累加器N位输出需进行N-2次循环迭代,高两位作为象 限选择位,所以改进后计算迭代的次数减少,从而减少了硬件电路的资源消耗。
[0082] 需要说明的是,上述实施例不以任何形式限制本发明,凡采用等同替换或等效变 换的方式所获得的技术方案,均落在本发明的保护范围内。
【主权项】
1. 一种基于改进CORDIC算法的直接数字频率合成器,包括:相位累加器和相位幅度转 换器,其特征在于, 所述相位累加器由加法器和相位寄存器组成,其位宽是32位,输出截断之后是19位,高 3位用来进行区块选择,接下来的7位用来进行查找表ROM寻址,低9位用于⑶RDIC算法的旋 转计算; 所述相位幅度转换器由查找表R0M、乘法器、超四旋转模块和区块选择模块组成: 查找表ROM中存储了相位字高7位相应的正余弦值,利用相位字第15-9位寻址对查找表 ROM查表得到旋转的粗值(X,Y ),利用相位字第16位对经过查找表ROM寻址得到的值进行处 理,如果第16位为0则查表得到的值直接用于下一步的运算,如果第16位为1则将查表所得 (Χ,γ)值调换,这一步得到的值经过乘法器进行乘法运算,乘法的系数是J和经过乘法 运算之后的数据输入到超四旋转模块中,同时输入到该超四旋转模块的还有9位的相位字, 超四旋转模块采用超四CORDIC算法对经过查找表ROM粗值旋转之后剩余的9位相位字进行 旋转计算,并利用第16位相位字对不同区块CORDIC运算时的旋转方向进行处理,如果第16 位为0则对0到3区块进行顺时针旋转,5到7区块进行逆时针旋转,第4区块不进行旋转,如果 第16位为1则对0到3区块进行逆时针旋转,对5到7区块进行顺时针旋转,第4区块不进行旋 转,经过旋转计算之后,超四旋转模块输出[〇,f ]区域的正余弦数据,区块选择模块根据 第18-16位对超四旋转模块输出的f]区域的正余弦数据进行相应的镜像操作或者是 翻转操作,从而得到最后的输出结果。2. 根据权利要求1所述的基于改进CORDIC算法的直接数字频率合成器,其特征在于,所 述超四旋转模块由三个超四单元组成, 相位字的二进制序列码按从高到低位分组,三位为一组,每组对应一个超四单元,每次 进行旋转操作时,以一组为旋转对象,超四单元在每一组上加上一定的补偿角度值"100", 并利用第16位相位字对不同区块CORDIC运算时的旋转方向进行处理,如果第16位为0则对0 到3区块进行顺时针旋转,5到7区块进行逆时针旋转,第4区块不进行旋转,如果第16位为1 则对0到3区块进行逆时针旋转,对5到7区块进行顺时针旋转,第4区块不进行旋转。3. 根据权利要求1或2所述的基于改进CORDIC算法的直接数字频率合成器,其特征在 于,所述直接数字频率合成器的相位幅度转换器采用的是16路内插的方式。
【文档编号】H03L7/24GK106027045SQ201610347394
【公开日】2016年10月12日
【申请日】2016年5月23日
【发明人】丁瑞雪, 徐洋, 刘马良
【申请人】西安电子科技大学昆山创新研究院, 西安电子科技大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1