CN109905100B - 一种farrow类型滤波器的fpga实现方法及系统 - Google Patents
一种farrow类型滤波器的fpga实现方法及系统 Download PDFInfo
- Publication number
- CN109905100B CN109905100B CN201910124543.7A CN201910124543A CN109905100B CN 109905100 B CN109905100 B CN 109905100B CN 201910124543 A CN201910124543 A CN 201910124543A CN 109905100 B CN109905100 B CN 109905100B
- Authority
- CN
- China
- Prior art keywords
- filter
- error interval
- fpga
- type filter
- result
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02E—REDUCTION OF GREENHOUSE GAS [GHG] EMISSIONS, RELATED TO ENERGY GENERATION, TRANSMISSION OR DISTRIBUTION
- Y02E40/00—Technologies for an efficient electrical power generation, transmission or distribution
- Y02E40/40—Arrangements for reducing harmonics
Landscapes
- Complex Calculations (AREA)
- Image Processing (AREA)
Abstract
Description
技术领域
本发明涉及一种FPGA实现方法,尤其涉及一种FARROW类型滤波器的FPGA实现方法,并涉及采用了该FARROW类型滤波器的FPGA实现方法的FPGA实现系统。
背景技术
对于采样率的转换的做法,一般都会采用多相结构去实现,但是在某些应用场景当中,该方法会效率很低。例如需要做一个分数倍为1023/511的采样率转换,如果采用多相结构去实现,需要1023个子滤波器去实现。这样的滤波器阶数会非常大,导致的直接结果是需要一个大容量的Rom去存储滤波器的系数去做分数倍以及整数倍滤波器,同时消耗的逻辑资源也会很多。
目前的通用做法就是采用多项式插值滤波器去实现一些分数倍比较大的采样率转换。同时采用FARROW结构实现更简便,即采用FARROW类型滤波器来实现更为简便,FARROW类型滤波器也称抽取滤波器。
假设h(t)是特定的脉冲响应,这里的目的是计算t=KTi时刻y(kTi)的采样值,因此首先需要定义x(mTs)的采样基准时刻mkTs,这个时刻刚好在t=KTi时刻之前,因此其中int[z]表示不大于z的最大整数,mk为插值基点,决定输入序列中参与运算的采样点,由插值时刻t=KTi决定。因此插值时间t=KTi可表示为mkTs加上一个正小数部分的求和形式:/>
最终转换成FARROW类型滤波器实现方式:y(n)=((A1uk+A2)uk+A3)uk)+A4。其中A1、A2、A3、A4可以分别写成滤波器组的形式。滤波器系数coeff分别为{-1/6、1/2、-1/2、1/6},{1/2、-1、1/2、0},{-1/3、-1/2、1、-1/6},{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=floor(coeff·2k/Ts)将FARROW类型滤波器的滤波器系数coeff实现量化,得到量化后的滤波器系数coeffL,其中,floor()为向下取整函数,Ts为原始输入信号x(t)的采样周期;k为自然数,代表第k个采样数据。
本发明的进一步改进在于,所述步骤S2包括以下子步骤:
步骤S201,结合FPGA中的时序逻辑结构计算误差间隔uk;
步骤S202,根据步骤S201计算误差间隔uk时所得到的插值基点mk和步骤S1中量化后的滤波器系数coeffL做乘累加运算。
本发明的进一步改进在于,所述步骤S201包括以下子步骤:
步骤S2011,初始化误差间隔uk为0,插值基点mk为0,令k等于Ts-Ti,其中,Ts为原始输入信号x(t)的采样周期,Ti为输出信号y(t)的采样周期;
步骤S2012,在每个时钟沿来之后判断误差间隔uk是否大于k,如果误差间隔uk大于k则跳到步骤S2013,否则跳转到步骤S2014;
步骤S2013,将插值基点mk累加1,同时将误差间隔uk替换为误差间隔uk减去k的值,返回步骤S2012;
步骤S2014,将插值基点mk保持原来的值,同时将误差间隔uk替换为误差间隔uk累加Ti的值,返回步骤S2012。
本发明的进一步改进在于,所述步骤S2还包括子步骤S203,所述步骤S203中,将做乘累加运算后的结果Ai进行截位操作,将截位操作后的数据作为最终的做乘累加运算的结果。
本发明的进一步改进在于,通过公式A_cuti=round(Ai/2k)将做乘累加运算的结果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=floor(coeff·2k/Ts)将FARROW类型滤波器的滤波器系数coeff实现量化,得到量化后的滤波器系数coeffL,其中,floor()为向下取整函数,Ts为原始输入信号x(t)的采样周期;k为自然数,代表第k个采样数据;滤波器系数coeff是根据拉格朗日插值的点数以及系数下标得到的,具体的例子在A1A2A3A4的计算过程中有所体现,是已知的。
如图3所示,本例所述步骤S2包括以下子步骤:
步骤S201,结合FPGA中的时序逻辑结构计算误差间隔uk;
步骤S202,根据步骤S201计算误差间隔uk时所得到的插值基点mk和步骤S1中量化后的滤波器系数coeffL做乘累加运算。
本例所述步骤S201,相当于通过图3所示的流程实时生成误差间隔uk和插值基点mk。本例相当于在相同的量化位宽情况下,幅频响应误差要更优化。幅频响应误差公式如下所示:E(ejΩ)≤(N+1)2-(b+1),其中,N为滤波器系数的阶数,b为滤波器系数量化的位宽,E(ej Ω)为幅频响应误差,该幅频响应公式只是说明系数个数和系数量化位宽跟它的计算关系。只是作为一个参考,当系数个数过多的时候,量化位宽要注意考虑下,要不然平坦度偏差可能会有点大。
相当于uk的计算在原来的基础上乘以一个Ts就不会带来量化误差,可以很好的解决以前量化误差的问题,同时结合FPGA中的时序逻辑的结构,更为具体的,本例所述步骤S201包括以下子步骤:
步骤S2011,初始化误差间隔uk为0,插值基点mk为0,令k等于Ts-Ti,其中,Ts为原始输入信号x(t)的采样周期,Ti为输出信号y(t)的采样周期,i为自然数,Ti作为一个整体变量作为输出信号y(t)的采样周期,用于区分原始输入信号x(t)的采样周期,同样的,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,这里的输出信号y(t)的采样周期Ti和原始输入信号x(t)的采样周期Ts优选取Ti/Ts这一比值的最小公约数来进行减法运算,比如,输出信号y(t)的采样周期Ti为1000,原始输入信号x(t)的采样周期Ts为1024,则取Ti/Ts这一比值为1000/1024的最小公约数125/128,进而使得输出信号y(t)的采样周期Ti优选取值为125,原始输入信号x(t)的采样周期Ts优选取值为128,所述k等于Ts-Ti的值为128-125=3。这样设置的原因在于,能够尽量定义的数据位宽,降低逻辑资源。
对于在计算误差间隔uk的时候有Ts倍的增益,那么将这个Ts的增益直接在滤波器系数量化的时候扣除,相当于如下等式:coeffL=floor(coeff·2k/Ts)。
本例所述步骤S2还包括子步骤S203,所述步骤S203中,将做乘累加运算后的结果Ai进行截位操作,将截位操作后的数据作为最终的做乘累加运算的结果。更为具体的,可以优选通过公式A_cuti=round(Ai/2k)将做乘累加运算的结果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实现过程中的资源。
以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。
Claims (7)
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为原始输入信号x(t)的采样周期,Ti为输出信号y(t)的采样周期;
步骤S2012,在每个时钟沿来之后判断误差间隔uk是否大于k,如果误差间隔uk大于k则跳到步骤S2013,否则跳转到步骤S2014;
步骤S2013,将插值基点mk累加1,同时将误差间隔uk替换为误差间隔uk减去k的值,返回步骤S2012;
步骤S2014,将插值基点mk保持原来的值,同时将误差间隔uk替换为误差间隔uk累加Ti的值,返回步骤S2012。
2.根据权利要求1所述的FARROW类型滤波器的FPGA实现方法,其特征在于,所述步骤S1中,通过公式coeffL=floor(coeff·2k/Ts)将FARROW类型滤波器的滤波器系数coeff实现量化,得到量化后的滤波器系数coeffL,其中,floor()为向下取整函数,Ts为原始输入信号x(t)的采样周期;k为自然数,代表第k个采样数据。
4.根据权利要求3所述的FARROW类型滤波器的FPGA实现方法,其特征在于,所述步骤S2还包括子步骤S203,所述步骤S203中,将做乘累加运算后的结果Ai进行截位操作,将截位操作后的数据作为最终的做乘累加运算的结果。
5.根据权利要求4所述的FARROW类型滤波器的FPGA实现方法,其特征在于,通过公式A_cuti=round(Ai/2k)将做乘累加运算的结果Ai进行截位操作。
6.根据权利要求3所述的FARROW类型滤波器的FPGA实现方法,其特征在于,所述步骤S3中,通过公式cal_unit=Ai·uk+Ai+1对做乘累加运算后的结果Ai与计算的误差间隔uk做乘法运算和加法运算,进而输出FPGA计算的最小单元cal_unit,其中,Ai+1为第i+1组抽头跟系数的做乘累加运算结果。
7.一种FARROW类型滤波器的FPGA实现系统,其特征在于,采用了如权利要求1至6任意一项所述的FARROW类型滤波器的FPGA实现方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910124543.7A CN109905100B (zh) | 2019-02-19 | 2019-02-19 | 一种farrow类型滤波器的fpga实现方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910124543.7A CN109905100B (zh) | 2019-02-19 | 2019-02-19 | 一种farrow类型滤波器的fpga实现方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109905100A CN109905100A (zh) | 2019-06-18 |
CN109905100B true CN109905100B (zh) | 2023-06-20 |
Family
ID=66945109
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910124543.7A Active CN109905100B (zh) | 2019-02-19 | 2019-02-19 | 一种farrow类型滤波器的fpga实现方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109905100B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113708741B (zh) * | 2021-05-28 | 2023-12-01 | 翱捷科技股份有限公司 | 一种系数可配置数字滤波器的设计方法及装置 |
CN114063926B (zh) * | 2021-11-22 | 2024-03-15 | 上海创远仪器技术股份有限公司 | 基于fpga硬件实现数据间插值处理的方法、装置、处理器及其计算机可读存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102412806A (zh) * | 2011-10-24 | 2012-04-11 | 中兴通讯股份有限公司 | 基于逻辑电路的Farrow滤波器及其实现方法 |
CN105024696A (zh) * | 2015-07-02 | 2015-11-04 | 大唐微电子技术有限公司 | 多通道并行模数转换系统采样时间误差的校准装置及方法 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030063659A1 (en) * | 2001-10-03 | 2003-04-03 | Antti Kaltiainen | Method and apparatus for adjusting digital filters in a DSL modem |
CN101427930B (zh) * | 2007-11-09 | 2011-11-16 | 深圳迈瑞生物医疗电子股份有限公司 | 用于彩色超声系统的改善多普勒声音质量的方法 |
CN101458329B (zh) * | 2009-01-06 | 2011-11-09 | 清华大学 | 时域并行采样率变换方法 |
CN106134514B (zh) * | 2010-05-14 | 2013-10-23 | 航天恒星科技有限公司 | 基于Farrow结构滤波器的采样率转换方法及装置 |
US8812569B2 (en) * | 2011-05-02 | 2014-08-19 | Saankhya Labs Private Limited | Digital filter implementation for exploiting statistical properties of signal and coefficients |
US20160182015A1 (en) * | 2014-12-18 | 2016-06-23 | Vinay Gupta | Fractional and integer ratio polyphase interpolation filter |
US10038425B1 (en) * | 2015-12-28 | 2018-07-31 | Apple Inc. | Sum of differences filter |
CN106059530B (zh) * | 2016-05-25 | 2018-07-17 | 东南大学 | 一种频率响应与系数量化位数弱相关的半带滤波器 |
CN107704656A (zh) * | 2017-09-06 | 2018-02-16 | 南京理工大学 | 基于fpga的参数化成型滤波器的设计与实现方法 |
-
2019
- 2019-02-19 CN CN201910124543.7A patent/CN109905100B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102412806A (zh) * | 2011-10-24 | 2012-04-11 | 中兴通讯股份有限公司 | 基于逻辑电路的Farrow滤波器及其实现方法 |
CN105024696A (zh) * | 2015-07-02 | 2015-11-04 | 大唐微电子技术有限公司 | 多通道并行模数转换系统采样时间误差的校准装置及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN109905100A (zh) | 2019-06-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8731951B2 (en) | Variable order short-term predictor | |
CN101300623B (zh) | 用于抑制噪声的方法、设备和计算机程序 | |
CN109905100B (zh) | 一种farrow类型滤波器的fpga实现方法及系统 | |
JPS6360927B2 (zh) | ||
JP5065784B2 (ja) | 同相成分抽出方法及び装置 | |
CN114142830A (zh) | 全精度低通iir滤波器的fpga实现方法 | |
Parameswaran et al. | A 100 µW Decimator for a 16 bit 24 kHz bandwidth Audio ΔΣ Modulator | |
US7415493B2 (en) | Asynchronous sampling rate conversion | |
Abramovitch | The multinotch, part II: Extra precision via Δ coefficients | |
JP2000252795A (ja) | 移動平均フィルタ | |
US9337805B2 (en) | Efficient digital microphone decimation filter architecture | |
US4389726A (en) | Adaptive predicting circuit using a lattice filter and a corresponding differential PCM coding or decoding apparatus | |
EP0020710A1 (en) | DIGITAL FILTER WITH LIMITATION CYCLE CONTROL. | |
JPH0732349B2 (ja) | デコーダ装置 | |
CN114745021B (zh) | 一种深空应答机的非同源码率的跟踪方法 | |
JPH08102644A (ja) | 適応フィルタシステム | |
US7346639B2 (en) | Method and apparatus for suppressing limit cycles in noise shaping filters | |
US11769478B1 (en) | Digital signal processing system | |
KR950003358B1 (ko) | 디지탈 필터 | |
EP0604772A1 (en) | Method and device for discrete-time signal interpolation | |
JP2975764B2 (ja) | 信号の符号化復号化装置 | |
JPH084231B2 (ja) | オ−バサンプル符号化方法及び装置 | |
TWI505636B (zh) | 具有最佳多重取樣率之有限脈衝濾波器及其製造方法 | |
CN117526901A (zh) | 一种基于FPGA的Farrow结构滤波器实现方法及系统 | |
Hunter et al. | A novel Farrow structure with reduced complexity |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |