《一种基于CORDIC算法的数据加窗系统及方法.pdf》由会员分享,可在线阅读,更多相关《一种基于CORDIC算法的数据加窗系统及方法.pdf(8页完整版)》请在专利查询网上搜索。
1、(10)申请公布号 CN 102999474 A (43)申请公布日 2013.03.27 C N 1 0 2 9 9 9 4 7 4 A *CN102999474A* (21)申请号 201210443566.2 (22)申请日 2012.11.08 G06F 17/14(2006.01) (71)申请人武汉大学 地址 430072 湖北省武汉市武昌区珞珈山武 汉大学 (72)发明人文必洋 谭剑 王才军 田应伟 李柯 (74)专利代理机构武汉科皓知识产权代理事务 所(特殊普通合伙) 42222 代理人薛玲 (54) 发明名称 一种基于CORDIC算法的数据加窗系统及方 法 (57) 摘要 本。
2、发明提供一种基于CORDIC算法的数据加 窗系统及方法,包括相位计算模块、CORDIC模块、 系数补偿模块、延迟模块、相减模块,CORDIC模块 分别与相位计算模块、系数补偿模块相连,相减模 块分别与系数补偿模块、延迟模块相连;系数补 偿模块包括乘法器;相减模块包括减法器。其中 相位计算模块为每个采样点数据计算其对应的余 弦函数的相位,CORDIC模块用来计算采样点与余 弦函数的乘积,系数补偿模块用于补偿CORDIC算 法自身的补偿因子和窗函数的常数项。该方法具 有存储资源消耗小,结构清晰简单,可灵活配置的 优点,特别适用于采样点数多的情况。 (51)Int.Cl. 权利要求书1页 说明书4页。
3、 附图2页 (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书 1 页 说明书 4 页 附图 2 页 1/1页 2 1.一种基于CORDIC算法的数据加窗系统,其特征在于:包括相位计算模块、CORDIC模 块、系数补偿模块、延迟模块、相减模块,CORDIC模块分别与相位计算模块、系数补偿模块相 连,相减模块分别与系数补偿模块、延迟模块相连;系数补偿模块包括乘法器;相减模块包 括减法器。 2.一种利用权利要求1所述的系统对数据加窗的方法,其特征在于:包括以下步骤: 步骤1、相位计算模块为每个采样点数据计算其对应的余弦函数的相位 CORDIC模块根据相位计算模块得出的相位将(x。
4、(n),0)逆时针旋转的相位,得出 并将其发送给系数补偿模块,其中x(n)为第n采样点 数据,N为总采样点数,n0,1,2,N-1; 步骤2、针对不同的窗预先计算出并将其发送给系数补偿模块,系数补偿模块中 的乘法器计算的值并发送给相减模块,其中,k是CORDIC算法的幅度补偿因 子,A为窗函数中的常数项,B为窗函数中余弦系数,k、A、B的值由所采用的窗类型决定; 步骤3、延时模块将x(n)发送给相减模块,相减模块中的减法器将x(n)与 相减,完成加窗。 权 利 要 求 书CN 102999474 A 1/4页 3 一种基于 CORDIC 算法的数据加窗系统及方法 技术领域 0001 本发明属于。
5、时频变换前的加余弦窗技术,特别涉及一种基于CORDIC算法的数据 加窗系统及方法。 背景技术 0002 FFT变换是信号处理中最常用的时频转换方法,在实际应用中,由于FFT是有限长 的离散变换,其必然会产生频谱泄露,所以在FFT之前需要进行加窗,以此来压低旁瓣。常 用的加窗方法是将窗系数存储在RAM中,采样数据到来时取出相应地址上的系数与采样数 据相乘;该方法采用RAM和乘法相结合的方式完成加窗,操作简单;但是当采样点数较多 时,需要存储相应数量的窗系数,这对于硬件系统来说是相当大的负担。 0003 CORDIC计算的基本概念是将目标旋转角分解为一组预定基本角度的加权和, 用这组预定基本角度的。
6、线性组合逼近,即进行大小为基本角度集内对应角度值的旋转;这 种算法的巧妙之处在于基本角度的选取恰好使每次矢量以基本角度值旋转后,新矢量坐标 值的计算只需要简单的移位和加法操作就能完成;由于只使用移位和加法运算来计算像正 弦和余弦等超越函数,所以对于那些乘法和除法等计算量很大而内存有限的系统,CORDIC 算法是很有效的。 0004 CORDIC算法需要给定初始向量(x 0 ,y 0 )和旋转角度,得到向量(x n ,y n ),满足如 下关系: 0005 x n x 0 cos-y 0 sin; (1) y n y 0 cos+x 0 sin; 0006 为了计算式子(1)的角旋转,CORDI。
7、C算法将角分解为一系列易于实现和计算 的角的加权: 0007 0008 式中,d i 表示旋转方向, i tan -1 (2 -i )。将角分成n个角依次旋转得到的点 坐标为(x i ,y i ),i0,1,.n。 0009 x i+1 x i cos(d i i )-y i sin(d i i ) cos( i )(x i -d i tan( i )y i ) 0010 y i+1 x i sin(d i i )+y i cos(d i i ) (3) 0011 cos( i )(y i +d i tan( i )x i ) 0012 现把基本旋转角度 i 选为tan( i )2 -i ,则。
8、有 0013 x i+1 cos( i )(x i -d i 2 -i y i ) (4) y i+1 cos( i )(y i +d i 2 -i x i ) 0014 如果忽略cos( i )项,那么只需要移位器和加法器就能完成角度旋转。另外可以 根据旋转次数n,在最后的结果中对该项进行补偿。乘以一个补偿因子k就能得到相应的正 确值 说 明 书CN 102999474 A 2/4页 4 0015 发明内容 0016 针对上述背景技术存在的问题,本发明提供一种基于CORDIC算法的数据加窗系 统及方法,其从加余弦窗的角度出发,将求解窗系数分解为两步,即利用CORDIC算法计算 余弦函数的优势。
9、,实时计算采样点数据与余弦函数相乘,然后再用采样点数据与之相减。这 样在采样点数较多时,就不需要存储大量的窗系数。 0017 为解决上述技术问题,本发明采用如下技术方案: 0018 一种基于CORDIC算法的数据加窗系统,包括相位计算模块、CORDIC模块、系数补 偿模块、延迟模块、相减模块,CORDIC模块分别与相位计算模块、系数补偿模块相连,相减模 块分别与系数补偿模块、延迟模块相连;系数补偿模块包括乘法器;相减模块包括减法器。 0019 一种利用上述系统对数据加窗的方法,包括以下步骤: 0020 步骤1、相位计算模块为每个采样点数据计算其对应的余弦函数的相位 CORDIC模块根据相位计算。
10、模块得出的相位将(x(n),0)逆时针旋转的相位,得出 并将其发送给系数补偿模块,其中x(n)为第n采样点 数据,N为总采样点数,n0,1,2,N-1; 0021 步骤2、针对不同的窗预先计算出并将其发送给系数补偿模块,系数补偿模 块中的乘法器计算的值并发送给相减模块,其中,k是CORDIC算法的幅度补偿 因子,A为窗函数中的常数项,B为窗函数中余弦系数,k、B、A由所采用的窗类型决定; 0022 步骤3、延时模块将x(n)发送给相减模块,相减模块中的减法器将x(n)与 相减,完成加窗。 0023 对本发明中的方法进行分析如下: 0024 不失一般性,以窗系数为例,最后要实现计算 0025 0。
11、026 不同的窗系数对应着不同的A、B,考虑到实际情况,只需要保留采样点之间的相对 大小,即信号的信噪比不变,为了减少运算量,将等式(6)中x(n)系数转换为1,即: 0027 (7) 0028 0029 根据CORDIC算法的性质,有: 0030 因此在步骤3中得到 说 明 书CN 102999474 A 3/4页 5 即完成了加窗。 0031 与现有技术相比,本发明具有以下优点和有益效果:本发明采用的基于CORDIC算 法的数据加窗方法,其同时完成窗系数的产生和数据系数相乘的操作,不需要存储大量的 窗系数;因此该方法具有存储资源消耗小,结构清晰简单,可灵活配置的优点,特别适用于 采样点数较。
12、多的情况。 附图说明 0032 图1为本发明中系统的结构简图。 0033 图2为本发明中方法的流程图。 0034 图3为本发明系统中CORDIC模块的结构图。 0035 图4为本发明中方法的时序示意图。 具体实施方式 0036 下面结合附图并以加hanning窗为例对本发明作进一步说明。 0037 一种基于CORDIC算法的数据加窗系统,如图1所示,包括相位计算模块、CORDIC模 块、系数补偿模块、延迟模块、相减模块,CORDIC模块分别与相位计算模块、系数补偿模块相 连,相减模块分别与系数补偿模块、延迟模块相连;系数补偿模块包括乘法器;相减模块包 括减法器。 0038 一种利用上述系统对数。
13、据加窗的方法,如图2所示,包括以下步骤:步 骤1、相位计算模块为每个采样点数据计算其对应的余弦函数的相位CORDIC 模块根据相位计算模块得出的相位将(x(n),0)逆时针旋转的相位,得出 并将其发送给系数补偿模块,其中x(n)为第n采样点 数据,N为总采样点数,n0,1,2,N-1。CORDIC模块的输入相位采用Scaled radian 的格式,即对2归一化值,假设相位用m 1 位有符号二进制表示,若总采样点数也为2的整 数次方,那么CORDIC模块的输入相位phase_in表示为 0039 0040 因此,为保证加窗的精确性,采样点数必须为2的整数次方。相位能表示的最多位 数不小于采样点。
14、数,即m 1 m 2 。 0041 在此处只需要计算采样点与一个余弦信号相乘,故将CORDIC的x_in输入端连接 采样点,y_in输入端连接零,如图3所示。CORDIC模块编写时,数据位与相位位位数不相 等,这样可以在充分利用数据的前提下尽量减少旋转次数,降低资源消耗;CORDIC的输出 端x_out为有效数据,此外,需要说明的是,CORDIC算法本身存在一个系数补偿,在此处不 补偿,而是将补偿系数与窗函数的系数一起补偿,这样可以节省时钟周期,采样数据经过 CORDIC模块,实现了与余弦函数相乘。 0042 步骤2、针对不同的窗预先计算出并将其发送给系数补偿模块,系数补偿模 说 明 书CN 。
15、102999474 A 4/4页 6 块中的乘法器计算的值并发送给相减模块,其中,k是CORDIC算法的幅度补偿 因子,A为窗函数中的常数项,B为窗函数中余弦系数,本实施例中A=B=0.5,k=0.5173。 0043 CORDIC算法的补偿系数k满足式子(5),其中M为CORDIC算法的旋转次数,而旋 转次数由数据位的位数决定,这里数据位的位数为32位。 0044 乘法器有两个输入端,一端是常数B*k/A,一端是CORDIC模块的输出。此处作为常 数乘法,使用CSD量化编码实现,这样可以降低非零元素的数量,在乘法运算中能减少加法 器的数量,有利于提高运算速度和减少资源的占用,例如对补偿系数k。
16、进行CSD量化编码, 得到: 0045 k01001101101110102 -1 +2 -3 - (2 -6 +2-9)-(2 -13 +2 -14 ) 0046 步骤3、延时模块将x(n)发送给相减模块,相减模块中的减法器将 x(n)与相减,完成加窗。加窗最后需要一个减法器来实现,减数 由被减数x(n)计算而来,故需要用寄存器保存x(n), 当系数补偿完成后,进行相减操作;在时序上要求即 计算完成后,再取出寄存器中的x(n)进行相减,所以x(n)的寄存时间为 CORDIC计算周期和系数补偿周期之和。在流水线操作时,不能简单使用一个寄存器保存当 下的采样点,需要多级寄存器流水线保存采样点数据。假设需要延迟的时钟周期个数为M, 若数据采样率与时钟频率相等,则需要M个流水线寄存器。当数据经过系数补偿后,寄存器 中正好取出采样点,两者相减,至此完成加窗操作。 说 明 书CN 102999474 A 1/2页 7 图1 图2 说 明 书 附 图CN 102999474 A 2/2页 8 图3 图4 说 明 书 附 图CN 102999474 A 。