掌桥专利:专业的专利平台
掌桥专利
首页

一种用于卫星信号捕获的FFT处理器

文献发布时间:2023-06-19 11:05:16


一种用于卫星信号捕获的FFT处理器

技术领域

本发明涉及数字信号处理技术领域,尤其涉及一种用于卫星信号捕获的FFT处理器。

背景技术

中国“北斗”、美国GPS、俄罗斯GLONASS和欧盟GALILEO等全球导航卫星系统(GNSS,Global Navigation Satellite System)的卫星中,为实现信号捕获,一般采用以下四种伪码捕获算法:滑动相关捕获算法、匹配滤波捕获算法、并行频率捕获算法和并行码相位捕获算法。其中滑动相关捕获算法捕获所需时间最长,在扩频码较长的情况下,难以实现伪码的快速捕获;匹配滤波算法虽然捕获时间短,但实现复杂,只适合较短伪码的捕获;并行频率捕获算法和并行码相位捕获算法均利用了快速傅里叶运算(FFT,Fast FourierTransformation),捕获时间较短,但是目前常用的FFT处理器存在以下问题:旋转因子产生复杂,实时运算性能较差;蝶形网络结构与地址转换控制复杂,模块可移植性差,硬件实现困难;蝶形单元级联个数多,乘法器与存储器较多,内存访问频繁,导致硬件资源消耗大。因此,有必要对FFT处理器进行改进。

发明内容

为解决以上背景技术中的至少一个问题,本申请实施例的目的在于提供一种用于卫星信号捕获的FFT处理器。

本申请实施例提供一种用于卫星信号捕获的FFT处理器,包括:

串并转换模块,用于把输入数据进行缓存,并把所述输入数据分组输出;

旋转因子产生模块,用于产生混合基FFT运算所需的旋转因子;

第一FFT模块,用于根据对应的旋转因子和所述串并转换模块输出的数据进行FFT运算,并输出计算结果;

第一复数乘法模块,用于用所述串并转换模块输出的数据与对应的旋转因子进行复数乘法运算,并输出计算结果;

第二FFT模块,用于根据所述对应的旋转因子和所述的第一复数乘法模块输出的计算结果进行FFT运算,并输出计算结果;

并串转换模块,用于把所述第一FFT模块和第二FFT模块输出的计算结果进行顺序转变,实现串行输出;

FFT控制模块,用于控制所述串并转换模块、旋转因子产生模块和并串转换模块运行。

所述的用于卫星信号捕获的FFT处理器中,所述输入数据为64点的输入数据,所述串并转换模块把所述输入数据分为8组数据;

所述旋转因子包括128点混合基FFT运算所需的第一旋转因子和第二旋转因子;

所述第一复数乘法模块,用于用所述串并转换模块输出的数据与所述第二旋转因子进行复数乘法运算;

所述第一FFT模块和第二FFT模块均为64点FFT模块,所述第一FFT模块用于根据所述第一旋转因子和所述串并转换模块输出的数据进行64点FFT运算,所述第二FFT模块用于根据所述第一旋转因子和所述的第一复数乘法模块输出的计算结果进行64点FFT运算。

所述的用于卫星信号捕获的FFT处理器中,所述第一FFT模块和第二FFT模块均包括:

蝶形运算模块,用于把64点基8FFT运算分解为两级基8蝶形运算,以实现64点基8FFT运算;

第二复数乘法模块,用于将第一级基8蝶形运算结果和第一旋转因子进行复数乘法运算;

存储转换模块,用于把第二复数乘法模块的运算结果进行缓存和地址转换后再分成8组数据输入所述蝶形运算模块进行第二级基8蝶形运算。

所述的用于卫星信号捕获的FFT处理器中,所述串并转换模块在把所述输入数据进行分组时,从所述输入数据中以8个数为间隔提取8个数组成一组数据。

所述的用于卫星信号捕获的FFT处理器中,所述旋转因子产生模块通过以下方式产生旋转因子:

根据旋转因子的相位映射系数在预设的查找表中查询得到所旋转因子的是实部的近似值所对应的余弦函数量化系数和虚部的近似值所对应的正弦函数量化系数。

所述的用于卫星信号捕获的FFT处理器中,所述蝶形运算模块采用三维基2FFT运算来实现基8蝶形运算。

所述的用于卫星信号捕获的FFT处理器中,所述第一复数乘法模块和第二复数乘法模块采用以下公式进行复数乘法运算:

(a+jb)(c+jb)=c(a+b)-b(c+d)+j[(a+b)c-a(c-d)]

其中,a、c分别是两个复数的实部,b、d分别是两个复数的虚部。

有益效果:

本申请实施例提供的一种用于卫星信号捕获的FFT处理器,与现有技术相比,具有以下优点:设计结构简易,节省基2运算模块从而降低了算法复杂度,节约硬件资源,提高了处理器运算速率,模块移植性佳。

附图说明

图1为本申请实施例提供的用于卫星信号捕获的FFT处理器的结构示意图。

图2为旋转因子三角函数对称关系示意图。

图3为基8蝶形运算单元的示意图。

图4为示例性的复数乘法器的结构图。

具体实施方式

下面将结合本申请实施例中附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本申请的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。

请参阅图1,本申请实施例提供一种用于卫星信号捕获的FFT处理器,包括:

串并转换模块1,用于把输入数据进行缓存,并把输入数据分组输出;

旋转因子产生模块2,用于产生混合基FFT运算所需的旋转因子;

第一FFT模块3,用于根据对应的旋转因子和串并转换模块1输出的数据进行FFT运算,并输出计算结果;

第一复数乘法模块4,用于用串并转换模块1输出的数据与对应的旋转因子进行复数乘法运算,并输出计算结果;

第二FFT模块5,用于根据对应的旋转因子和的第一复数乘法模块4输出的计算结果进行FFT运算,并输出计算结果;

并串转换模块6,用于把第一FFT模块3和第二FFT模块5输出的计算结果进行顺序转变,实现串行输出;

FFT控制模块7,用于控制串并转换模块1、旋转因子产生模块2和并串转换模块6运行。

对于N点离散傅里叶变换以及旋转因子表达式分别表示如下:

其中,x(n)为第n个输入数据,X(k)为转换后的第k个计算结果数据,

对于128点时域序列x(n)的离散傅里叶变换定义为:

传统的128点FFT运算方法中,会先对待运算的128点时域输入序列x(n)的序号n和频域输出序列X(k)的序号k进行8×8×2混合基数值表达分解:

从而(3)式可重写为:

进而可把(4)式简化为:

进而,在传统的128点FFT运算方法中,一般是先进行64点FFT运算,乘以旋转因子

而事实上,由于旋转因子具有周期性和可约性,利用旋转因子的周期性和可约性可把(1)式转换为:

其中,

当N=128时,(6)、(7)式可转换为:

从而,若利用(8)、(9)式进行128点FFT运算时,可取64点时域输入序列x(n)并在末尾补零64点x(n+64)组成128点进行FFT运算,可节约64次加减法运算,从而降低算法的复杂度。这种在时域输入序列x(n)并在末尾补零的方法会引起以下效果:第一,对于其他不规则的点数,可以对其补零可使数据点调整为2的整数次幂,以便于使用FFT;第二,对原数据起到了做插值的作用,克服“栅栏”效应,使谱的外观平滑。因此,补零不会对最终结果产生影响,而且基于优化后128点FFT处理器还可以节省硬件资源。本申请中,把这种利用(8)、(9)式进行128点FFT运算的方法称为混合基FFT运算方法。

以下,以128点FFT处理器为例进行进一步说明,该FFT处理器能够实现上述的128点混合基FFT运算功能。

在一些实施方式中,见图1,该用于卫星信号捕获的FFT处理器为128点FFT处理器;输入数据为64点的输入数据,串并转换模块1把输入数据分为8组数据;

旋转因子包括128点混合基FFT运算所需的第一旋转因子

第一复数乘法模块4,用于用串并转换模块1输出的数据与第二旋转因子

第一FFT模块3和第二FFT模块5均为64点FFT模块,第一FFT模块3用于根据第一旋转因子

在本实例中,第一FFT模块3和第二FFT模块5进行的64点FFT运算均为64点基8FFT运算。

具体的,第一FFT模块3和第二FFT模块5均包括:

蝶形运算模块9,用于把64点基8FFT运算分解为两级基8蝶形运算,以实现64点基8FFT运算;

第二复数乘法模块8,用于将第一级基8蝶形运算结果和第一旋转因子进行复数乘法运算;

存储转换模块10,用于把第二复数乘法模块的运算结果进行缓存和地址转换后再分成8组数据(得到8*8数组)输入蝶形运算模块进行第二级基8蝶形运算。

从而,第一FFT模块3实际上是完成了式(8)的运算工作,第二FFT模块5是完成式(9)的运算工作。

其中,串并转换模块1在把输入数据进行分组时(分成8组),从输入数据中以8个数为间隔提取8个数组成一组数据。具体的,提取输入的64个数据中的第1、9、17、25、33、41、49、57号数据组成第一组数据,提取输入的64个数据中的第2、10、18、26、34、42、50、58号数据组成第二组数据,提取输入的64个数据中的第3、11、19、27、35、43、51、59号数据组成第三组数据,依次类推,直到得到8组数据。以便进入64点 FFT模块并行处理,以提高处理速度。

在一些优选的实施方式中,旋转因子产生模块2通过以下方式产生旋转因子:

根据旋转因子的相位映射系数在预设的查找表中查询得到所旋转因子的是实部的近似值所对应的余弦函数量化系数和虚部的近似值所对应的正弦函数量化系数。

按照三角函数对称性,可预先形成旋转因子的查找表,将实际需要计算的旋转因子减少到可复用的16组,在FFT蝶形运算中通过地址控制器对旋转因子进行读取,从而节约了旋转因子计算与存储空间。

如图2中,可看出旋转因子三角函数的对称关系,将三角函数的一个周期均匀分割为32个区间,各区间的三角函数值具有对称性和相关性,一区间的数值可以表示为区间数值的函数。在算法固定的FFT运算中,旋转因子是固定的己知常数,且一般使用移位加算法操作代替乘法器完成旋转因子相乘,以达到减小功耗的目的。根据移位加算法,任意小数可以用2的负次幂叠加逼近。

在本实例中,将图2中三角函数的半个周期[0:π]等分为16个区间,按区间设置相位映射系数,从而预设的查找表包括以下的正余弦函数量化系数查找表,表中包括16个相位映射系数(0-15),以及对应的正弦函数量化系数(sin_tmp)和余弦函数量化系数(cos_tmp);

预设的查找表对应以下近似值映射表,表中包括各种余弦函数量化系数和正弦函数量化系数组合下的实部近似值(即cos(2nkπ/64)的近似值)和虚部近似值(即sin(2nkπ/64)的近似值),其中,余弦函数量化系数为实部近似值的8倍,正弦函数量化系数是虚部近似值的8倍;

旋转因子产生模块2在产生旋转因子时,先计算相位映射系数,然后根据旋转因子的相位映射系数在正余弦函数量化系数查找表中查询得到对应的正弦函数量化系数(sin_tmp)和余弦函数量化系数(cos_tmp)。再把该正弦函数量化系数(sin_tmp)和余弦函数量化系数(cos_tmp)输入给复数乘法模块,来实现对近似值映射表中对应的实部近似值和虚部近似值的乘法,即正余弦函数量化系数是对应实虚部近似值放大8倍。

具体过程如下:

其中,第一旋转因子

当2nkπ/64∈[0:π]时:

0~π分成16等份即π/16,对应的相位映射系数即为(2nkπ/64)÷(π/16)=nk/2,四舍五入取整后得到最终的相位映射系数nk/2∈[1:16];

根据计算得到的最终的相位映射系数在正余弦函数量化系数查找表中查询得到对应的正弦函数量化系数(sin_tmp)和余弦函数量化系数(cos_tmp)。然后把该正弦函数量化系数(sin_tmp)和余弦函数量化系数(cos_tmp)输入给复数乘法模块,来实现对近似值映射表中对应的实部近似值和虚部近似值的乘法。

当2nkπ/64∈[π:2π]时,根据对称性正余弦函数符号取反:

0~π分成16等份即π/16,对应的相位映射系数即为(2nkπ/64)÷(π/16)=nk/2,四舍五入取整后得到的相位映射系数nk/2∈[16:32],然后减去16得到最终的相位映射系数nk/2-16∈[1:16];

根据计算得到的最终的相位映射系数在正余弦函数量化系数查找表中查询得到对应的正弦函数量化系数(sin_tmp)和余弦函数量化系数(cos_tmp),并对正余弦函数量化系数符号取反,然后把该正弦函数量化系数(sin_tmp)和余弦函数量化系数(cos_tmp)输入给复数乘法模块,来实现对近似值映射表中对应的实部近似值和虚部近似值的复数乘法。

同理第二旋转因子

当2nπ/128∈[0:π]时:

0~π分成16等份即π/16,对应的相位映射系数即为(2nπ/128)÷(π/16)=n/4,四舍五入取整后得到最终的相位映射系数n/4∈[1:16];

根据计算得到的最终的相位映射系数在正余弦函数量化系数查找表中查询得到对应的正弦函数量化系数(sin_tmp)和余弦函数量化系数(cos_tmp),然后把该正弦函数量化系数(sin_tmp)和余弦函数量化系数(cos_tmp)输入给复数乘法模块,来实现对近似值映射表中对应的实部近似值和虚部近似值的复数乘法。

当2nπ/128∈[π:2π]时,根据对称性正余弦函数符号取反:

0~π分成16等份即π/16,对应的相位映射系数即为(2nπ/128)÷(π/16)=n/4,四舍五入取整后得到的相位映射系数n/4∈[16:32],然后减去16得到最终的相位映射系数n/4-16∈[1:16];

根据计算得到的最终的相位映射系数在正余弦函数量化系数查找表中查询得到对应的正弦函数量化系数(sin_tmp)和余弦函数量化系数(cos_tmp),并对正余弦函数量化系数符号取反,然后把该正弦函数量化系数(sin_tmp)和余弦函数量化系数(cos_tmp)输入给复数乘法模块,来实现对近似值映射表中对应的实部近似值和虚部近似值的复数乘法。

例如,第一旋转因子

其中第8组数对应的第一旋转因子的实部近似值和虚部近似值的取值如下表所示,至于第8组数中0、7、14、21、28、35、42、49对应的第一旋转因子的产生顺序是0、28、14、42、7、35、21、49是为了方便图3所示第一级蝶形运算单元倒叙输出顺序A、E、C、G、B、F、D、H的结果在第二复数乘法模块中直接进行复数乘运算。

例如49÷2≈25,25-16=9,查询得到9对应的Cos_temp=-2与Sin_temp=8,再对正余弦函数量化系数符号取反得Cos_temp=2与Sin_temp=-8,最终输入给复数乘法模块来实现对实部近似值为0.25、虚部近似值为-1的复数乘法,如上表中所示。

其中第2组数对应的第一旋转因子的实部近似值和虚部近似值的取值如下表所示,至于第2组数中0、1、2、3、4、5、6、7的产生顺序是0、4、2、6、1、5、3、7是为了方便图3所示第一级基8蝶形运算单元倒叙输出顺序A、E、C、G、B、F、D、H的结果第二复数乘法模块中直接进行复数乘运算。

其中以cos_temp=+7时的

在一些优选实施方式中,蝶形运算模块9采用三维基2FFT运算来实现基8蝶形运算。

对于64点FFT的逻辑实现,具体如下:

分别用8进制来表示输入时间变量n和输出频率变量k可得:

将式(11)分解为两级基8蝶形运算,即

其中,

具体的,可利用图3所示的基8蝶形运算单元来实现三维基2FFT运算。当

在一些实施方式中,第一复数乘法模块4和第二复数乘法模块8均采用以下公式进行复数乘法运算:

(a+jb)(c+jb)=c(a+b)-b(c+d)+j[(a+b)c-a(c-d)]

其中,a、c分别是两个复数的实部,b、d分别是两个复数的虚部。

对于普通的旋转因子乘法,有公式:

综上,该用于卫星信号捕获的FFT处理器与现有技术相比,具有以下优点:

1.实现了优化128点混合基算法,节省了基2运算模块从而降低了算法复杂度;

2. 利用三角函数对称性灵活复用近似计算的任意旋转因子,提高了旋转因子产生效率,同时通过优化移位加算法操作实现免乘运算,减少了复数运算单元,在保证精度下达到减小处理器功耗的目的,64点FFT模块中第二级基8FFT复用了蝶形运算模块,节约了硬件资源,提高了处理器运算速率;

3. 针对传统的移位加乘实现方式,进行了近似取值,大大减少了复数加减运算次数,提高了处理器运算速率;

4. 通过补零和两个并行64点基8蝶形运算模块实现快速傅里叶变换硬件实现,具有设计结构简易、运算水平高且模块移植性佳等特点。

综上所述,虽然本发明已以优选实施例揭露如上,但上述优选实施例并非用以限制本发明,本领域的普通技术人员,在不脱离本发明的精神和范围内,均可作各种更动与润饰,其方案与本发明实质上相同。

相关技术
  • 一种用于卫星信号捕获的FFT处理器
  • 一种加窗FFT的卫星信号捕获方法
技术分类

06120112793910