基于线性插值的任意重采样算法和数据采样系统的制作方法

文档序号:18099026发布日期:2019-07-06 11:14阅读:548来源:国知局
基于线性插值的任意重采样算法和数据采样系统的制作方法

本发明涉及信号采样领域,具体而言,涉及一种基于线性插值的任意重采样算法和数据采样系统。



背景技术:

数字接收机已在电子通信、电子对抗、雷达接收机等领域具有非常广泛的应用,具有体积小、稳定性好,设计灵活、灵敏度高等优点。在接收机中频信号a/d转换时,要满足nyquist定理,采样速率要大于基带速率,对于不同的通信系统,所需要的信号速率不同,这就需要不同的信号速率变换。

数字域上实现采样率的变换一般包括整数倍抽取、整数倍插值、有理因子速率变换等。其中整数倍插值和抽取实现简单,可以使用低通滤波器、cic抽取滤波和多相结构实现。有理因子速率变换i/d,其中i为插值倍数,d为抽取倍数。若i和d的值不是很大,可以采用i倍插值和d倍抽取级联实现。若i和d的值比较大,则很难使用级联的方法来实现,一般采用farrow滤波器来实现。

多相滤波器实现i/d倍有理倍速率转换,相当于先用i路分支的多相滤波因子实现插值,再进行d倍的抽取。若因子i很大,则需要很多路分支的滤波因子,增大了计算量,数据速率要求很高,在实际应用中很难实现。

实现i/d的有理因子的速率转换通常使用的是farrow滤波器结构。farrow滤波器采用多个滤波器分支加分数延迟实现,滤波器输出和分数延迟因子相乘就可以求出farrow滤波器的插值或抽取的输出值。滤波器的分支个数和滤波因子是固定不变的,只需要改变分数延迟因子就可以实现任意倍数的插值或抽取。但是farrow结构需要的乘法器较多,设计难度也必较大。farrow结构需要额外的i&d电路以及分数延迟控制电路,在fpga内实现比较困难。若将延迟因子存在fpga内的存储模块内,则需要很大的存储空间。另外,有时候分数延迟偏移太大,将导致比较大的误差。

传统上是使用dsp实现信号的插值和抽取处理,但是dsp是顺序执行的,数据的吞吐量比较小,处理速度比较慢,很难满足高处理速度的要求。而fpga是并行信号处理,数据吞吐量大,处理速度快,可以满足要求。



技术实现要素:

本发明旨在至少在一定程度上解决相关技术中的技术问题之一。为此,本发明的第一方面提出了一种处理速度快且占用资源少的任意重采样算法。

本发明的第二方面提出了一种数据采样系统。

本发明的第三方面提出了一种非临时性可读存储介质。

根据本发明第一方面所述的任意重采样算法,包括如下步骤:

写入和存储被插值的输入数据;

在所述输入数据写入和存储的同时读取所述输入数据;

根据所述输入数据进行小数倍数插值得出输出数据。

根据本发明第一方面所述的任意重采样算法,可以在写入输入数据的同时进行插值,无需先写入输入数据后进行插值,节约了插值时间,同时无需同时存储全部输入数据,占用资源少。

进一步地,根据所述输入数据进行小数倍数插值,包括:根据时间序列点进行小数倍数插值,以确定对应所述时间序列点位置的插值数据。

更进一步地,根据时间序列点进行小数倍数插值,包括:所述插值倍数小于或等于a时,根据所述时间序列点进行小数倍数插值;所述插值倍数大于a时,先对所述输入数据进行整数倍数插值,再根据所述时间序列点进行小数倍数插值。

进一步地,根据所述输入数据进行小数倍数插值,包括:存储的所述输入数据的未插值个数大于或等于2时,进入读数状态;存储的所述输入数据的未插值个数小于2时,进入等待状态。

更进一步地,设所述输入数据的帧长度为n,所述输出数据的长度为i,数据插值空隙个数mm满足mm=n-1,所述任意重采样算法包括如下步骤:

初始化为空闲状态;

存储的所述输入数据的未插值个数大于或等于2时,进入读数状态,根据所述输入数据所在的位置n,产生读地址和读使能,并读取所述输入数据;

进入插值状态,对所述输入数据进行小数倍数插值以得出输出数据;

当输出数据所在的位置m满足m+mm<i+1时,保持所述插值状态,输出所述输出数据;

当输出数据所在的位置m满足m+mm≥i+1时,回到所述读数状态。

可选地,所述任意重采样算法基于fpga可编程逻辑芯片实现。

根据本发明第二方面所述的数据采样系统,包括ram存储模块、控制模块和插值模块,所述控制模块分别与所述ram存储模块以及所述插值模块通信,所述ram存储模块与所述插值模块通信,所述ram存储模块用于写入和存储被插值的输入数据,所述控制模块用于在所述输入数据写入和存储至所述ram存储模块的同时控制所述插值模块读取所述ram存储模块存储的所述输入数据,并对所述输入数据进行小数倍数插值得出输出数据后,将所述输出数据输出。

根据本发明第二方面所述的数据采样系统,可以在写入输入数据的同时进行插值,无需先写入输入数据后进行插值,节约了插值时间,同时ram存储模块无需同时存储全部输入数据,占用资源少。

进一步地,所述插值模块包括状态机,所述控制模块通过状态机控制所述插值模块对所述数据进行小数倍数插值。

进一步地,所述控制模块判断所述ram存储模块存储的所述输入数据的未插值个数大于或等于2时,所述控制器对所述状态机发送所述读数信号=1,所述状态机进入读数状态;

所述控制模块判断所述ram存储模块存储的所述输入数据的未插值个数小于2时,所述控制器对所述状态机发送所述读数信号=0,所述状态机进入等待状态。

根据本发明第三方面的非临时性可读存储介质,其上存储有程序,所述程序被处理器执行时实现根据本发明第一方面所述的基于线性插值的任意重采样算法。

根据本发明第三方面的非临时性可读存储介质,可以在写入输入数据的同时进行插值,无需先写入输入数据后进行插值,节约了插值时间,无需同时存储全部输入数据,占用资源少。

本发明的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。

附图说明

本发明的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:

图1是本发明实施例的基于线性插值的任意重采样算法的结构原理图;

图2是本发明实施例的基于线性插值的任意重采样算法的流程图。

附图标记:

数据采样系统100,ram存储模块1,控制模块2,插值模块3,读地址addra,读使能ren,写地址addrb,写使能wen,帧长度n,输入数据x(n),输出数据y(m),写时钟clka,读时钟clkb,读数信号data_en。

具体实施方式

下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。

此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。

在本发明中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”、“固定”等术语应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或成一体;可以是机械连接,也可以是电连接或可以互相通讯;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通或两个元件的相互作用关系。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。

下面结合附图并参考具体实施例描述本发明。

首先结合图1和图2描述本发明实施例的任意重采样算法。

如图1所示,本发明实施例的任意重采样算法可以包括被插值的输入数据x(n)写入至ram存储模块1并进行存储,同时控制模块2控制插值模块3读取ram存储模块1存储的输入数据x(n),并控制插值模块3对输入数据x(n)进行小数倍数插值。

换言之,当进行数据插值时,先将待被插值的输入数据x(n)写入ram存储模块1,在被插值的输入数据x(n)写入ram存储模块1的过程中,即被插值的输入数据x(n)的部分写入ram存储模块1时,控制模块2控制插值模块3读取已经写入存储在ram存储模块1存储的部分输入数据x(n),并控制插值模块3对该部分输入数据x(n)进行小数倍数插值。

由此,相对于现有技术中先将全部输入数据x(n)写入到存储模块后再进行插值的算法,本实施例中的任意重采样算法可以在写入输入数据x(n)的同时进行插值,无需先写入输入数据x(n)后进行插值,节约了插值时间,同时ram存储模块1无需同时存储全部输入数据x(n),占用资源少。

ram存储模块1存储被插值的输入数据x(n),在实现小数插值时,插值前的输入数据x(n)和插值后的输出数据y(m)并不是整数倍关系,此时用输入数据x(n)匹配的写时钟clka和输出数据y(m)匹配的读时钟clkb进行插值,若存储模块取出的数据与时钟不对齐,会出现冒险冲击,导致数据错误,而使用ram存储模块1能实现数据的缓冲,将不存在这种问题。

此外,本发明实施例的任意重采样算法,一次输出数据y(m)的插值输出只使用一个加法器和两个乘法器,使用的硬件资源少。该算法具有实现简单、失真度小、使用的硬件资源少、可以实现任意小数的重采样等优点。

具体地,任意重采样算法还包括:插值模块3根据时间序列点进行小数倍数插值,以确定对应时间序列点位置的插值数据。插值模块3在实现小数倍数的重采样算法时,需要根据时间序列,来确定需重采样构造的插值点相对于原有样点的位置。由于重构的插值数据,在原有时间序列点上不是总存在,所以需要根据原有时间序列点的输入数据x(n)值来构造这些所需要的与时间序列点对应的输出数据y(m)值。

由于任意重采样算法采用线性插值进行信号重构,插值倍数较大时,会使信号失真。具体地,插值倍数小于或等于a时,此时插值倍数较小,插值模块3根据时间序列点进行小数倍数插值。插值倍数大于a时,此时插值倍数较大,滤波器先对输入数据x(n)进行整数倍插值后传递至插值模块3,插值模块3根据时间序列点进行小数倍数插值,即此时可以采用滤波器插值和此小数插值相级联的办法实现。由此可以保证小数倍数插值计算的准确性。具体地,a=4。

由于插值算法需要两个样本数据才可以进行插值,具体地,任意重采样算法包括:控制模块2判断ram存储模块1存储的尚未进行插值计算的输入数据x(n)个数大于或等于2时,才进入读数状态,进一步进入插值状态,以使控制模块2控制插值模块3对输入数据x(n)进行小数倍数插值。控制模块2判断ram存储模块1存储的尚未进行插值计算的输入数据x(n)个数小于2(即为0或1)时,控制模块2令插值模块3处于等待状态,以暂时等待新的输入数据x(n)输入ram存储模块1后,使尚未进行插值计算的输入数据x(n)的个数满足插值条件后(即大于等于2),再进行插值。控制模块2根据ram存储模块1中存储的数据个数,给插值模块3提供使能信号,以改变插值模块3的工作状态。由此,采用这种处理方法,数据存储和数据插值可以同时进行,提高处理速度。

对于帧数据进行插值时,设输入数据x(n)的帧长度为n,输出数据y(m)的长度为i,则实现的插值倍数为i/n。相当于数据先进行i倍的插值,再进行n倍的数据抽取。

在两个样本数据之间插入i-1个数,相当于是变成了原来数据的i倍,进行了i倍数据的插值。插值前输入数据x(n)的长度等于数据帧长度n,在每两个数之间进行插值,相当于数据插值空隙个数为mm=n-1个。则假定的数据重构的数据长度为l:

l=(n-1)(i-1)+n

l=(n-1)i+1

对重构的数据进行n-1倍的数据抽取

相当于进行了i倍的插值,对重构的数据进行n-1位置间隔的取数mm。

mm=n-1

插值输出y(m)的值在x(n)上不总存在,根据原先各位置的样值x(n)来构造这些需要的位置点。我们仅需要y(m)在x(t)时刻的数据,其他的数据并不关心。因此只需要恢复此时刻的数据即可。因此,主要就是确定数据的位置m,以及构造出m位置对应的输出数据y(m)值,m以mm递增。

m=m+mm

当m+mm>=i+1时,需读入下个输入数据x(n)进行插值,则m相对于新的两个输入数据x(n)的位置为m=m-i+mm

输出值相当于取两个插值点之间插入i-1点后的m位置的取值,线性插值数据的计算公式

图2是插值模块3实现的流程图。初始化m=1,输入两个数据,计算根据公式计算输出值。判断下次插值m的位置,m+mm>=i+1时,插值数据位置处于x(n+1)和x(n+2)之间,需进行数据输入,输入一个数据完成后再次进行插值。m+mm<i+1时,插值输出数据y(m)位置的位置仍处于x(n)和x(n+1)之间,可以直接计算数据输出值。

具体地,插值模块3包括状态机,控制模块2通过状态机控制插值模块3对数据进行插值。由此可以实现在写入输入数据x(n)的同时进行插值。

更加具体地,如图2所示,任意重采样算法包括:

状态机处于空闲状态;

存储的输入数据x(n)的未插值个数大于或等于2时,状态机进入读数状态,状态机根据输入数据x(n)所在的位置n,产生读地址addra和读使能ren,并从ram存储模块1中读取输入数据x(n);

状态机进入插值状态,对输入数据x(n)进行小数倍数插值以得出输出数据y(m);

状态机判断输出数据y(m)所在的位置m满足m+mm<i+1时,状态机保持插值状态,输出输出数据y(m);

状态机判断输出数据y(m)所在的位置m满足m+mm≥i+1时,状态机回到读数状态,以进行下一组的插值;

存储的输入数据x(n)的未插值个数小于2时,状态机进入等待状态;

插值全部结束时,状态机恢复至空闲状态。

由此,可以实现任意重采样算法的插值过程,且可以实现在写入输入数据x(n)的同时进行插值。

更进一步地,控制模块2判断ram存储模块1存储的输入数据x(n)的未插值个数大于或等于2时,控制器对状态机发送读数信号data_en=1,状态机进入读数状态;控制模块2判断ram存储模块1存储的输入数据x(n)的未插值个数小于2时,控制器对状态机发送读数信号data_en=0,状态机进入等待状态。由此,采用这种处理方法,数据存储和数据插值可以同时进行,提高处理速度。

可选地,本发明任一项实施例的任意重采样算法可基于fpga可编程逻辑芯片实现,由此可以保证任意重采样算法使用的硬件资源少。数据存储模块由fpga可编程逻辑芯片的ram存储模块1构成,存储模块实现数据的缓存。

根据ram存储模块1数据的写时钟clka和读时钟clkb,数据读写可以改变速率,以匹配异步读写时钟clka,避免数据对不齐产生毛刺。根据输入数据x(n)的使能(如写使能wen、读使能ren)和时钟将数据存入ram中,存入的数据个数达到帧长度值n,写地址addrb变为0,接收到清空命令,写地址addrb变为0。数据读地址addra根据插值算法需要的数据位置计算,当状态机处于空闲状态或者接收到清空命令时,读地址addra初始化为0。

需要说明的是,本发明实施例的基于线性插值的任意重采样算法具有很多应用领域,例如可以应用于如接收机和频谱仪的速率转换和显示数据插值,也可以应用于如音频数据速率转换。

下面描述本发明实施例的数据采样系统100。

本发明实施例的数据采样系统100包括ram存储模块1、控制模块2和插值模块3,控制模块2分别与ram存储模块1以及插值模块3通信,ram存储模块1与插值模块3通信,ram存储模块1用于写入和存储被插值的输入数据x(n),控制模块2用于在输入数据x(n)写入和存储至ram存储模块1的同时控制插值模块3读取ram存储模块1存储的输入数据x(n),并对输入数据x(n)插值得出输出数据y(m)后,将输出数据y(m)输出。

根据本发明实施例的数据采样系统100,通过设置任意重采样算法,可以在写入输入数据x(n)的同时进行插值,无需先写入输入数据x(n)后进行插值,节约了插值时间,同时ram存储模块1无需同时存储全部输入数据x(n),占用资源少。

下面描述本发明实施例的非临时性可读存储介质。

根据本发明的非临时性可读存储介质,非临时性可读存储介质上存储有程序,程序被处理器执行时实现根据本发明任一项实施例中的基于线性插值的任意重采样算法。

根据本发明实施例的非临时性可读存储介质,可以在写入输入数据x(n)的同时进行插值,无需先写入输入数据x(n)后进行插值,节约了插值时间,同时占用资源少。

在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。此外,本领域的技术人员可以将本说明书中描述的不同实施例或示例进行接合和组合。

尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。

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