一种FFT硬件实现模块的验证方法与流程

文档序号:20874853发布日期:2020-05-26 16:21阅读:399来源:国知局
一种FFT硬件实现模块的验证方法与流程

本发明涉及一种fft硬件实现模块的验证方法,属于信号处理技术领域。



背景技术:

快速傅里叶变换(fft)在频谱分析、数字语音编码、雷达信号处理、声纳信号分析、数字滤波、数字通信、图象处理、生物医学工程等有着极为广泛的应用,

目前大多数利用fft进行数字信号处理时,需进行大量的运算,且要求数据的实时性,所以多采用硬件描述语言进行fft的实现,但对其验证多采用dds(directdigitalsynthesizer)和rom存储芯片产生正弦波和余弦波作为输入,该方法需要大量的资源。



技术实现要素:

本发明解决的技术问题是:克服现有技术的不足,提出一种fft硬件实现模块的验证方法,利用较少的资源实现fft的功能验证。

本发明的技术解决方案是:一种fft硬件实现模块的验证方法,该方法包括如下步骤:

(1)、利用n点fft模块的时频变换特性,向n点fft模块中输入i次谐波频点测试信号,将n点fft模块切换成ifft模式,利用n点fft模块中的ifft模式,将变换为i次谐波频点信号变换为时域信号,并存储在n点ifft模块内部的sram中,i初始化为0,n大于0;

(2)、从n点fft模块内部的sarm中读出步骤(1)存储的时域信号,作为i次谐波时域测试信号输入至n点fft模块的信号输入端,将n点fft模块切换到n点fft变换模式,将i次谐波时域测试信号进行n点fft正变换,得到i次谐波时域测试信号对应的频域频点;

(3)、根据步骤(1)输入的i次谐波频点测试信号及其频点与步骤(3)得到的i次谐波时域测试信号及其对应的频域频点,判断n点fft模块i次谐波处理功能是否正确;

(4)、遍历0次至n-1次谐波的频点信号,重复步骤(1)~(3),当n点fft模块对0至n-1次谐波的频点信号都正确时,认为该n点fft模块功能正确,否则,认为该n点fft模块功能不正确。

所述fft模块的输入信号端包括工作时钟clk、复位信号resetn、开始fft变换的指示信号start、实部输入数据xn_re、虚部输入数据xn_im、输入频点索引index_xn、fft逆变换的使能端ifft;

输出信号端包括完成运算指示信号done、输出数据有效指示信号dv、虚部输出数据xk_im、实部输出数据xk_re、输出索引index_xk。

所述步骤(1)向n点fft模块中输入的i次谐波频点测试信号通过如下方式实现:

(1.1)、输入频点索引index_xn为一计数器,在每个时钟clk的上升沿到来时,index_xn加一,计数范围从0到n-1,index_xn用以标记输入频点的位置;

(1.2)、当输入频点索引index_xn=i时,向实部输入数据端输入xn_re=2m,向虚部输入数据端输入xn_im=0,当输入频点索引index_xn≠i时,xn_re=0且xn_im=0,所述m为实部输入数据xn_re、虚部输入数据xn_im的位宽。

所述步骤(3)判断n点fft模块i次谐波处理功能是否正确的具体方法为:

当fft正变换输出的index_xk=i时,xk_re大于第一阈值a,且xk_im小于第二阈值b,同时当fft正变换index_xk为其他值,xk_re和xk_im都小于第二阈值b,则说明fft的功能正确;若不同时满足,则说明fft的功能不正确。

所述第一阈值a,第一阈值a设置为i次谐波频点测试信号幅值的一半,且第一阈值a是第二阈值b的m整数倍,m大于等于

本发明与现有技术相比的有益效果是:

(1)本发明采用输入频点验证fft正确性,产生验证的输入激励简单,易实现;

(2)本发明采用动态阈值的方法,对fft输出值的正确性判断准确,适应不同点数和位宽的fft;

(3)本发明采用迭代的结构,简化了验证的结构,大大减少了验证模块的规模。

附图说明

图1是本发明实施例n点fft的输入输出信号;

图2是本发明实施例fft的验证结构图;

图3是本发明实施例以1次谐波的频点信号验证fft的信号时序图。

具体实施方式

下面结合实际一例子对本发明进行详细说明。

根据fft原理可知,fft可实现时域信号与频域信号的相互转换。利用fft的时频变换特性,首先将频域的频点信号经ifft变换为时域信号,然后用sram完成数据缓存,最后再利用ifft的时域信号作为fft的输入信号,经变换得到为相应的频点。通过比较ifft输入频点与fft输出频点的值就可以验证fft的正确性。

基于上述原理,本发明提供了一种fft硬件实现模块的验证方法,所述fft模块的输入信号端包括工作时钟clk、复位信号resetn、开始fft变换的指示信号start、实部输入数据xn_re、虚部输入数据xn_im、输入频点索引index_xn、fft逆变换的使能端ifft;输出信号端包括完成运算指示信号done、输出数据有效指示信号dv、虚部输出数据xk_im、实部输出数据xk_re、输出索引index_xk,n大于0。

具体地,该方法包括如下步骤:

(1)、利用n点fft模块的时频变换特性,向n点fft模块中输入i次谐波频点测试信号,将n点fft模块切换成ifft模式,利用n点fft模块中的ifft模式,将变换为i次谐波频点信号变换为时域信号,并存储在n点ifft模块内部的sram中,i初始化为0;

向n点fft模块中输入的i次谐波频点测试信号通过如下方式实现:

(1.1)、输入频点索引index_xn为一计数器,在每个时钟clk的上升沿到来时,index_xn加一,计数范围从0到n-1,index_xn用以标记输入频点的位置;

(1.2)、当输入频点索引index_xn=i时,向实部输入数据端输入xn_re=2m,向虚部输入数据端输入xn_im=0,当输入频点索引index_xn≠i时,xn_re=0且xn_im=0,所述m为实部输入数据xn_re、虚部输入数据xn_im的位宽。

(2)、从n点fft模块内部的sarm中读出步骤(1)存储的时域信号,作为i次谐波时域测试信号输入至n点fft模块的信号输入端,将n点fft模块切换到n点fft变换模式,将i次谐波时域测试信号进行n点fft正变换,得到i次谐波时域测试信号对应的频域频点;

(3)、根据步骤(1)输入的i次谐波频点测试信号及其频点与步骤(3)得到的i次谐波时域测试信号及其对应的频域频点,判断n点fft模块i次谐波处理功能是否正确;

所述步骤(3)判断n点fft模块i次谐波处理功能是否正确的具体方法为:

当fft正变换输出的index_xk=i时,xk_re大于第一阈值a,且xk_im小于第二阈值b,同时当fft正变换index_xk为其他值,xk_re和xk_im都小于第二阈值b,则说明fft的功能正确;若不同时满足,则说明fft的功能不正确。

(4)、遍历0次至n-1次谐波的频点信号,重复步骤(1)~(3),当n点fft模块对0至n-1次谐波的频点信号都正确时,认为该n点fft模块功能正确,否则,认为该n点fft模块功能不正确。

所述第一阈值a,第一阈值a设置为i次谐波频点测试信号幅值的一半,且第一阈值a是第二阈值b的m整数倍,m大于等于实施例:

以一个1024点的fft的验证为例进行具体说明,分别用0次至1023次谐波的频点信号对fft模块的功能进行验证。

图1为n点fft的输入输出信号,n点fft的具体硬件实现不是本发明的重点,在此不做详细介绍,为了说明验证过程,只对fft的输入输出信号进行介绍,文中提到的信号只是n点fft的关键信号,不同的实现者可能命名和数量有所不同,但本验证方法适应于所有fft的验证。

图1中,clk为fft模块的工作时钟,输入信号;resetn为复位信号,输入信号,低有效;start为开始fft变换的指示信号,输入信号,高有效;xn_re为输入的实部数据,输入信号;xn_im为输入的虚部数据,输入信号;index_xn为输入频点索引,输入信号;ifft为fft逆变换的使能端,输入信号,当为低电平,则为fft变换,当为高电平时,则为fft逆变换(ifft);done为所有点做完fft的指示信号,输出信号,高有效;dv为输出数据有效指示信号,输出信号,高有效;xk_re为输出的实部数据,输出信号;xk_im为输出的虚部数据,输出信号;index_xk为输出索引,输出信号。

图2为fft的验证结构图。bist_boot模块为本发明的验证逻辑,其中由两部分组成,generate_signal模块和compare模块,generate_signal模块产生resetn、ifft、start和频点信号xn_re和xn_im,而compare模块接收fft输出xk_re和xk_im,与正确的值进行比对并经过一定的逻辑判断,即可验证fft逻辑是否正确。fft通常由蝶形运算部分和数据存储部分两部分组成,通过ifft信号控制其进行fft变换或fft逆变换(ifft),数据存储部分由sram实现。

对于n点fft模块功能的验证,分别用直流分量的频点信号、1次至n-1次谐波的频点信号对fft模块的功能正确性进行验证,直流分量的频点信号也可称为0次谐波的频点信号,所以,分别用0次至n-1次谐波的频点信号对fft模块的功能正确性进行验证。

现在以任意次谐波的频点信号为例对fft模块验证步骤进行说明,设任意次谐波为i次谐波,其中0≤i≤n-1,验证的具体步骤为:

步骤1,先进行i次谐波的频点信号的fft逆变换(ifft)。bist_boot模块generate_signal部分的产生clk、resetn、ifft、start和频点信号xn_re和xn_im。bist_boot模块和fft模块共用一个时钟clk,clk信号一般外接系统时钟,在generate_signal模块中定义一个计数器count1,count1在时钟clk下,每个时钟上升沿到来,count1加1,当计数器count1加到某值x时(x的值大小由设计人员自行定义,不要过大),复位信号resetn由低变为高电平,复位结束。复位结束后,马上ifft置为高,fft被配置为ifft,同时start高一个时钟周期,启动ifft的运算,同时启动计数器index_xn,当index_xn=i时,发出i次谐波的频点信号的值xn_re和xn_im,若xn_re位宽为m时,取xn_re=2m,xn_im=0,计数器index_xn用以标记频点的位置,i次谐波的频点位置对应的计数器index_xn的值为i,当index_xn≠i时,对应的频点值xn_re和xn_im都为0。当n点的输入数据都完成ifft变换,置高done信号一个时钟周期,然后输出变换后n点的时域信号,将数据存入sram中。各个信号的时序图可参考图3,图3为用1次谐波的频点信号来验证fft的信号时序图。

步骤2,将i次谐波的时域信号进行fft正变换恢复到频域的频点。当将n点的时域信号都存入sram中后,bist_boot模块将ifft信号变为0,使fft模块进行fft正变换,同时读出ifft模块sram中的值,从ifft的输出端xk_re和xk_im输出,输入到fft模块的xn_re和xn_im端,当n点的输入数据都完成fft变换,置高done信号一个时钟周期,然后输出变换后的频域信号,同时启动index_xk计数器,标记输出的频点信号的位置,同时将变换后的频域信号存入sram中。

步骤3,判断fft功能正确性。该步骤在compare模块内部完成,该模块对fft输出的xk_re和xk_im两个值进行处理。首先设置两个阈值,一个高阈值a,一个低阈值b,高阈值a等于输入的频点值xn_re的幅度的一半,低阈值b在0点附近,且a是b的m整数倍,m大于等于当fft正变换index_xk=n时,xk_re大于a,且xk_im小于b,同时当fft正变换index_xk为其他值,xk_re和xk_im都小于b,则说明fft的功能正确;若不同时满足,则说明fft的功能不正确。

具体的1次谐波的频点信号对fft模块验证的步骤如下:

步骤1,先进行1次谐波的频点信号的fft逆变换(ifft)。bist_boot模块内的generate_signal模块产生resetn、ifft、start和频点信号xn_re和xn_im。各个信号的时序图见图3。bist_boot模块和fft模块共用一个时钟clk,clk信号一般外接系统时钟,在generate_signal模块中定义一个计数器count1,count1在时钟clk的节拍下,每个时钟到来,count1加1,当计数器count1加到5时,复位信号resetn由低变为高电平,复位结束。当resetn复位结束后,ifft置为高,fft被配置为ifft,同时start高一个时钟周期,启动ifft的运算,同时启动计数器index_xn,当index_xn=i时,发出i次谐波的频点信号的值xn_re和xn_im,若xn_re位宽为16时,设xn_re=216,xn_im=0,计数器index_xn用作标记频点的位置,1次谐波的频点位置对应的计数器index_xn的值为1,当index_xn≠1时,频点xn_re和xn_im都为0。当1024点的输入数据都完成ifft变换,置高done信号一个时钟周期,然后输出变换后1024点的时域信号,将数据存入sram中。

步骤2,将1次谐波的时域信号进行fft正变换恢复到频域的频点。当将1024点的时域信号都存入sram中后,bist_boot模块将ifft信号变为0,使fft模块进行fft正变换,同时按顺序读出ifft的sram中的值,从ifft的输出端xk_re和xk_im输出,输入到fft的xn_re和xn_im端,当n点的输入数据都完成fft变换,置高done信号一个时钟周期,然后输出变换后的频域信号,同时启动index_xk计数器,标记输出的频点信号的位置,同时将变换后的频域信号存入sram中。

步骤3,判断fft功能正确性。该步骤在compare模块内部完成,该模块对fft输出的xk_re和xk_im两个值进行处理。首先设置两个阈值,一个高阈值a,一个低阈值b,高阈值a等于输入的频点值xn_re的幅度的一半,所以高阈值a=xn_re/2=215=32768,且a是b的m整数倍,m大于等于m=216/2=256,低阈值b=a/256=128,当fft正变换index_xk=1时,xk_re大于32768,且xk_im小于128,同时当fft正变换index_xn≠1时,xk_re和xk_im都小于128,则说明fft的功能正确;若不同时满足,则说明fft的功能不正确。

以上所述,仅为本发明一种例子具体实施方式,但本发明的保护范围并不局限于此。

本发明虽然已以较佳实施例公开如上,但其并不是用来限定本发明,任何本领域技术人员在不脱离本发明的精神和范围内,都可以利用上述揭示的方法和技术内容对本发明技术方案做出可能的变动和修改,因此,凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化及修饰,均属于本发明技术方案的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1