买专利,只认龙图腾
首页 专利交易 科技果 科技人才 科技服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

【发明授权】一种FARROW类型滤波器的FPGA实现方法及系统_深圳市极致汇仪科技有限公司_201910124543.7 

申请/专利权人:深圳市极致汇仪科技有限公司

申请日:2019-02-19

公开(公告)日:2023-06-20

公开(公告)号:CN109905100B

主分类号:H03H17/02

分类号:H03H17/02

优先权:

专利状态码:有效-授权

法律状态:2023.06.20#授权;2019.07.12#实质审查的生效;2019.06.18#公开

摘要:本发明提供一种FARROW类型滤波器的FPGA实现方法及系统,所述FARROW类型滤波器的FPGA实现方法包括以下步骤:步骤S1,将FARROW类型滤波器的滤波器系数按照量化;步骤S2,根据计算误差间隔时产生的插值基点和量化后的滤波器系数做乘累加运算;步骤S3,对做乘累加运算后的结果与计算的误差间隔做乘法运算和加法运算。本发明实时生成误差间隔和插值基点,减少了FARROW类型滤波器在FPGA实现过程中大量不必要使用的ROM资源;在此基础上,仅仅需要对滤波器系数的一次量化,相当于本发明能够在同样的量化位宽的情况下,幅频响应的误差更小,溢出的可能性也得以有效降低。

主权项:1.一种FARROW类型滤波器的FPGA实现方法,其特征在于,包括以下步骤:步骤S1,将FARROW类型滤波器的滤波器系数coeff按照2k量化;步骤S2,根据计算误差间隔uk时产生的插值基点mk和量化后的滤波器系数coeffL做乘累加运算;步骤S3,对做乘累加运算后的结果与计算的误差间隔uk做乘法运算和加法运算,所述步骤S2包括以下子步骤:步骤S201,结合FPGA中的时序逻辑结构计算误差间隔uk;步骤S202,根据步骤S201计算误差间隔uk时所得到的插值基点mk和步骤S1中量化后的滤波器系数coeffL做乘累加运算,所述步骤S201包括以下子步骤:步骤S2011,初始化误差间隔uk为0,插值基点mk为0,令k等于Ts-Ti,其中,Ts为原始输入信号xt的采样周期,Ti为输出信号yt的采样周期;步骤S2012,在每个时钟沿来之后判断误差间隔uk是否大于k,如果误差间隔uk大于k则跳到步骤S2013,否则跳转到步骤S2014;步骤S2013,将插值基点mk累加1,同时将误差间隔uk替换为误差间隔uk减去k的值,返回步骤S2012;步骤S2014,将插值基点mk保持原来的值,同时将误差间隔uk替换为误差间隔uk累加Ti的值,返回步骤S2012。

全文数据:一种FARROW类型滤波器的FPGA实现方法及系统技术领域本发明涉及一种FPGA实现方法,尤其涉及一种FARROW类型滤波器的FPGA实现方法,并涉及采用了该FARROW类型滤波器的FPGA实现方法的FPGA实现系统。背景技术对于采样率的转换的做法,一般都会采用多相结构去实现,但是在某些应用场景当中,该方法会效率很低。例如需要做一个分数倍为1023511的采样率转换,如果采用多相结构去实现,需要1023个子滤波器去实现。这样的滤波器阶数会非常大,导致的直接结果是需要一个大容量的Rom去存储滤波器的系数去做分数倍以及整数倍滤波器,同时消耗的逻辑资源也会很多。目前的通用做法就是采用多项式插值滤波器去实现一些分数倍比较大的采样率转换。同时采用FARROW结构实现更简便,即采用FARROW类型滤波器来实现更为简便,FARROW类型滤波器也称抽取滤波器。一般的数学模型为重采样模型为,采样信号xmTs经过内插器ht,输出信号:在时刻t=KTi对信号进行重采样,输出信号:假设ht是特定的脉冲响应,这里的目的是计算t=KTi时刻ykTi的采样值,因此首先需要定义xmTs的采样基准时刻mkTs,这个时刻刚好在t=KTi时刻之前,因此其中int[z]表示不大于z的最大整数,mk为插值基点,决定输入序列中参与运算的采样点,由插值时刻t=KTi决定。因此插值时间t=KTi可表示为mkTs加上一个正小数部分的求和形式:代入得到最后的结果:其中参数uk为误差间隔,决定内插滤波器冲击响应系数,其范围为uk∈[0,1。插值基点mk和误差间隔uk表示了Ts和T之间的关系,如图2所示。而对于多项式插值滤波器来讲,得到通用的插值公式如下:其中lkuk的如果采用4阶拉格朗日插值得到的结果为:和得到转化后的结果:式中的A1、A2、A3、A4分别为:和A4=xmk+1。最终转换成FARROW类型滤波器实现方式:yn=A1uk+A2uk+A3uk+A4。其中A1、A2、A3、A4可以分别写成滤波器组的形式。滤波器系数coeff分别为{-16、12、-12、16},{12、-1、12、0},{-13、-12、1、-16},{0、1、0、0}。其中插值基点mk和误差间隔uk的计算过程在前面已经有描述过。而在FPGA实现的过程当中主要以定点类型的数据进行运算,需要将正常的浮点型数据量化成整形数据。在上述公式中,需要量化的系数主要是滤波器系数coeff和误差间隔uk。对于FARROW类型滤波器来说,需要选择合适的量化位宽,保证对于频谱的幅频响应满足,同时也要防止滤波器不要溢出。但是对于FARROW类型滤波器的实现过程中,计算误差间隔uk需要提前算好,然后量化之后存放在ROM中。如果对于一个分子和分母都比较大的滤波器来讲,这种方式消耗的FPGA中的ROM资源比价多。而且整个量化的位宽比价大,中间累积计算的溢出需要特别考虑。发明内容本发明所要解决的技术问题是需要提供一种在不损失精度的前提下,能够实时的产生误差间隔uk,进而节省了ROM资源,同时能够将误差间隔uk的量化部分直接省略,只需要量化滤波器系数coeff即可,进而实现FARROW类型滤波器的FPGA实现方法,并进一步提供采用了该FARROW类型滤波器的FPGA实现方法的FPGA实现系统。对此,本发明提供一种FARROW类型滤波器的FPGA实现方法,包括以下步骤:步骤S1,将FARROW类型滤波器的滤波器系数coeff按照2k量化;步骤S2,根据计算误差间隔uk时产生的插值基点mk和量化后的滤波器系数coeffL做乘累加运算;步骤S3,对做乘累加运算后的结果与计算的误差间隔uk做乘法运算和加法运算。本发明的进一步改进在于,所述步骤S1中,通过公式coeffL=floorcoeff·2kTs将FARROW类型滤波器的滤波器系数coeff实现量化,得到量化后的滤波器系数coeffL,其中,floor为向下取整函数,Ts为原始输入信号xt的采样周期;k为自然数,代表第k个采样数据。本发明的进一步改进在于,所述步骤S2包括以下子步骤:步骤S201,结合FPGA中的时序逻辑结构计算误差间隔uk;步骤S202,根据步骤S201计算误差间隔uk时所得到的插值基点mk和步骤S1中量化后的滤波器系数coeffL做乘累加运算。本发明的进一步改进在于,所述步骤S201包括以下子步骤:步骤S2011,初始化误差间隔uk为0,插值基点mk为0,令k等于Ts-Ti,其中,Ts为原始输入信号xt的采样周期,Ti为输出信号yt的采样周期;步骤S2012,在每个时钟沿来之后判断误差间隔uk是否大于k,如果误差间隔uk大于k则跳到步骤S2013,否则跳转到步骤S2014;步骤S2013,将插值基点mk累加1,同时将误差间隔uk替换为误差间隔uk减去k的值,返回步骤S2012;步骤S2014,将插值基点mk保持原来的值,同时将误差间隔uk替换为误差间隔uk累加Ti的值,返回步骤S2012。本发明的进一步改进在于,所述步骤S202中,通过公式计算做乘累加运算后的结果Ai,其中,为第mk个输入信号。本发明的进一步改进在于,所述步骤S2还包括子步骤S203,所述步骤S203中,将做乘累加运算后的结果Ai进行截位操作,将截位操作后的数据作为最终的做乘累加运算的结果。本发明的进一步改进在于,通过公式A_cuti=roundAi2k将做乘累加运算的结果Ai进行截位操作。本发明的进一步改进在于,所述步骤S3中,通过公式cal_unit=Ai·uk+Ai+1对做乘累加运算后的结果Ai与计算的误差间隔uk做乘法运算和加法运算,进而输出FPGA计算的最小单元cal_unit,其中,Ai+1为第i+1组抽头跟系数的做乘累加运算结果。本发明还提供一种FARROW类型滤波器的FPGA实现系统,采用了如上所述的FARROW类型滤波器的FPGA实现方法。与现有技术相比,本发明的有益效果在于:实时生成想要的误差间隔uk和插值基点mk,减少了FARROW类型滤波器在FPGA实现过程中大量不必要使用的ROM资源;在此基础上,从现有技术的需要对滤波器系数coeff和误差间隔uk进行两次量化,换成本发明仅仅只需要对滤波器系数coeff进行一次量化,即能够将误差间隔uk的量化部分直接省略,相当于本发明能够在同样的量化位宽的情况下,做到幅频响应的误差更小,同时使得在计算过程中溢出的可能性得以有效降低,有效节省了FPGA实现过程中的资源。附图说明图1是本发明一种实施例的工作流程示意图;图2是FARROW类型滤波器的抽取和插值工作原理示意图;图3是本发明一种实施例的实时生成误差间隔uk和插值基点mk的工作流程示意图。具体实施方式下面结合附图,对本发明的较优的实施例作进一步的详细说明。如图1所示,本例提供一种FARROW类型滤波器的FPGA实现方法,包括以下步骤:步骤S1,将FARROW类型滤波器的滤波器系数coeff按照2k量化;步骤S2,根据计算误差间隔uk时产生的插值基点mk和量化后的滤波器系数coeffL做乘累加运算;步骤S3,对做乘累加运算后的结果与计算的误差间隔uk做乘法运算和加法运算。本例所述步骤S1中,通过公式coeffL=floorcoeff·2kTs将FARROW类型滤波器的滤波器系数coeff实现量化,得到量化后的滤波器系数coeffL,其中,floor为向下取整函数,Ts为原始输入信号xt的采样周期;k为自然数,代表第k个采样数据;滤波器系数coeff是根据拉格朗日插值的点数以及系数下标得到的,具体的例子在A1A2A3A4的计算过程中有所体现,是已知的。如图3所示,本例所述步骤S2包括以下子步骤:步骤S201,结合FPGA中的时序逻辑结构计算误差间隔uk;步骤S202,根据步骤S201计算误差间隔uk时所得到的插值基点mk和步骤S1中量化后的滤波器系数coeffL做乘累加运算。本例所述步骤S201,相当于通过图3所示的流程实时生成误差间隔uk和插值基点mk。本例相当于在相同的量化位宽情况下,幅频响应误差要更优化。幅频响应误差公式如下所示:EejΩ≤N+12-b+1,其中,N为滤波器系数的阶数,b为滤波器系数量化的位宽,EejΩ为幅频响应误差,该幅频响应公式只是说明系数个数和系数量化位宽跟它的计算关系。只是作为一个参考,当系数个数过多的时候,量化位宽要注意考虑下,要不然平坦度偏差可能会有点大。对于计算误差间隔uk的公式可以采用另外一种方式能避免量化等式两边都乘以一个Ts,转化成成等式:Tsuk=kTi-mkTi;再结合插值基点mk的公式,转换成Tsuk=kTi-Ts。相当于uk的计算在原来的基础上乘以一个Ts就不会带来量化误差,可以很好的解决以前量化误差的问题,同时结合FPGA中的时序逻辑的结构,更为具体的,本例所述步骤S201包括以下子步骤:步骤S2011,初始化误差间隔uk为0,插值基点mk为0,令k等于Ts-Ti,其中,Ts为原始输入信号xt的采样周期,Ti为输出信号yt的采样周期,i为自然数,Ti作为一个整体变量作为输出信号yt的采样周期,用于区分原始输入信号xt的采样周期,同样的,Ts也是一个整体变量;步骤S2012,在每个时钟沿来之后判断误差间隔uk是否大于k,如果误差间隔uk大于k则跳到步骤S2013,否则跳转到步骤S2014;步骤S2013,将插值基点mk累加1,即mk=mk+1;同时将误差间隔uk替换为误差间隔uk减去k的值,即uk=uk-k;返回步骤S2012;步骤S2014,将插值基点mk保持原来的值,即mk=mk;同时将误差间隔uk替换为误差间隔uk累加Ti的值,即uk=uk+Ti;返回步骤S2012。值得一提的是,在所述步骤S2011中令k等于Ts-Ti,这里的输出信号yt的采样周期Ti和原始输入信号xt的采样周期Ts优选取TiTs这一比值的最小公约数来进行减法运算,比如,输出信号yt的采样周期Ti为1000,原始输入信号xt的采样周期Ts为1024,则取TiTs这一比值为10001024的最小公约数125128,进而使得输出信号yt的采样周期Ti优选取值为125,原始输入信号xt的采样周期Ts优选取值为128,所述k等于Ts-Ti的值为128-125=3。这样设置的原因在于,能够尽量定义的数据位宽,降低逻辑资源。对于在计算误差间隔uk的时候有Ts倍的增益,那么将这个Ts的增益直接在滤波器系数量化的时候扣除,相当于如下等式:coeffL=floorcoeff·2kTs。本例所述步骤S202中,通过公式计算做乘累加运算后的结果Ai,其中,为第mk个输入信号。本例所述步骤S2还包括子步骤S203,所述步骤S203中,将做乘累加运算后的结果Ai进行截位操作,将截位操作后的数据作为最终的做乘累加运算的结果。更为具体的,可以优选通过公式A_cuti=roundAi2k将做乘累加运算的结果Ai进行截位操作,也就是说,优选通过量化数量级2k对做乘累加运算后的结果Ai进行截位操作,得到截位操作后的结果A_cuti来替代做乘累加运算后的结果Ai,进而降低数量运算的数量级。本例所述步骤S3中,通过公式cal_unit=Ai·uk+Ai+1对做乘累加运算后的结果Ai与计算的误差间隔uk做乘法运算和加法运算,进而输出FPGA计算的最小单元cal_unit,其中,Ai+1为第i+1组抽头跟系数的做乘累加运算结果,进而实现了基于FARROW类型滤波器的FPGA。本例还提供一种FARROW类型滤波器的FPGA实现系统,采用了如上所述的FARROW类型滤波器的FPGA实现方法。综上所述,本例实时生成想要的误差间隔uk和插值基点mk,减少了FARROW类型滤波器在FPGA实现过程中大量不必要使用的ROM资源;在此基础上,从现有技术的需要对滤波器系数coeff和误差间隔uk进行两次量化,换成本发明仅仅只需要对滤波器系数coeff进行一次量化,即能够将误差间隔uk的量化部分直接省略,相当于本发明能够在同样的量化位宽的情况下,做到幅频响应的误差更小,同时使得在计算过程中溢出的可能性得以有效降低,有效节省了FPGA实现过程中的资源。以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。

权利要求:1.一种FARROW类型滤波器的FPGA实现方法,其特征在于,包括以下步骤:步骤S1,将FARROW类型滤波器的滤波器系数coeff按照2k量化;步骤S2,根据计算误差间隔uk时产生的插值基点mk和量化后的滤波器系数coeffL做乘累加运算;步骤S3,对做乘累加运算后的结果与计算的误差间隔uk做乘法运算和加法运算。2.根据权利要求1所述的FARROW类型滤波器的FPGA实现方法,其特征在于,所述步骤S1中,通过公式coeffL=floorcoeff·2kTs将FARROW类型滤波器的滤波器系数coeff实现量化,得到量化后的滤波器系数coeffL,其中,floor为向下取整函数,Ts为原始输入信号xt的采样周期;k为自然数,代表第k个采样数据。3.根据权利要求1或2所述的FARROW类型滤波器的FPGA实现方法,其特征在于,所述步骤S2包括以下子步骤:步骤S201,结合FPGA中的时序逻辑结构计算误差间隔uk;步骤S202,根据步骤S201计算误差间隔uk时所得到的插值基点mk和步骤S1中量化后的滤波器系数coeffL做乘累加运算。4.根据权利要求3所述的FARROW类型滤波器的FPGA实现方法,其特征在于,所述步骤S201包括以下子步骤:步骤S2011,初始化误差间隔uk为0,插值基点mk为0,令k等于Ts-Ti,其中,Ts为原始输入信号xt的采样周期,Ti为输出信号yt的采样周期;步骤S2012,在每个时钟沿来之后判断误差间隔uk是否大于k,如果误差间隔uk大于k则跳到步骤S2013,否则跳转到步骤S2014;步骤S2013,将插值基点mk累加1,同时将误差间隔uk替换为误差间隔uk减去k的值,返回步骤S2012;步骤S2014,将插值基点mk保持原来的值,同时将误差间隔uk替换为误差间隔uk累加Ti的值,返回步骤S2012。5.根据权利要求3所述的FARROW类型滤波器的FPGA实现方法,其特征在于,所述步骤S202中,通过公式计算做乘累加运算后的结果Ai,其中,为第mk个输入信号。6.根据权利要求5所述的FARROW类型滤波器的FPGA实现方法,其特征在于,所述步骤S2还包括子步骤S203,所述步骤S203中,将做乘累加运算后的结果Ai进行截位操作,将截位操作后的数据作为最终的做乘累加运算的结果。7.根据权利要求6所述的FARROW类型滤波器的FPGA实现方法,其特征在于,通过公式A_cuti=roundAi2k将做乘累加运算的结果Ai进行截位操作。8.根据权利要求5所述的FARROW类型滤波器的FPGA实现方法,其特征在于,所述步骤S3中,通过公式cal_unit=Ai·uk+Ai+1对做乘累加运算后的结果Ai与计算的误差间隔uk做乘法运算和加法运算,进而输出FPGA计算的最小单元cal_unit,其中,Ai+1为第i+1组抽头跟系数的做乘累加运算结果。9.一种FARROW类型滤波器的FPGA实现系统,其特征在于,采用了如权利要求1至8任意一项所述的FARROW类型滤波器的FPGA实现方法。

百度查询: 深圳市极致汇仪科技有限公司 一种FARROW类型滤波器的FPGA实现方法及系统

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。