CN104348446A - 一种实现fir滤波的方法和滤波装置 - Google Patents
一种实现fir滤波的方法和滤波装置 Download PDFInfo
- Publication number
- CN104348446A CN104348446A CN201310320501.3A CN201310320501A CN104348446A CN 104348446 A CN104348446 A CN 104348446A CN 201310320501 A CN201310320501 A CN 201310320501A CN 104348446 A CN104348446 A CN 104348446A
- Authority
- CN
- China
- Prior art keywords
- ram
- fir filter
- cycle
- delayed data
- multiplexing
- 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.)
- Granted
Links
Landscapes
- Filters That Use Time-Delay Elements (AREA)
Abstract
本发明实施例提供一种实现FIR滤波的方法和滤波装置,将FPGA的α个RAM进行级联,将各个RAM与FIR滤波器连接;设置一个复用周期包括多个时钟周期,每一个RAM在该复用周期的不同时钟周期内均输出一个延迟数据,延迟数据在FIR滤波器中参与滤波运算,前(α-1)个RAM输出的延迟数据允许分别输入到级联的下一个RAM中;在滤波运算中,当至少两个延迟数据的FIR滤波器系数相同时,将至少两个延迟数据相加得到延迟和值,将延迟和值与FIR滤波器系数相乘得到乘积,将所有的乘积求和得到当前的复用周期的滤波结果。滤波运算是将至少两个延迟数据相加后再进行乘法运算得到乘积,因此减少了执行乘法运算的乘法器单元的数量。
Description
技术领域
本发明涉及FIR滤波技术,特别是指一种实现FIR滤波的方法和滤波装置。
背景技术
数字中频处理技术中,FIR滤波器是不可缺少的重要组成部分,大量的FIR滤波器用FPGA等器件实现,FIR滤波器的数学方程是实现过程中,需要对输入数据进行延迟,得到滤波器阶数N个延迟数据来进行运算,多是采用IP CORE生成工具生成移位寄存器来实现延迟。
开发工具生成的移位寄存器是通用器件,没有根据FIR滤波器的运算方法和结构特点进行优化,适用于在滤波器阶数较低的情况下使用。
现有技术存在如下问题:当滤波器阶数较高时,根据所选用的资源类型不同,利用开发工具生成的移位寄存器会消耗FPGA内部大量的存储器资源或寄存器资源,容易造成设计资源和时序紧张。FIR滤波器的工作频率始终远高于FIR滤波器的数据输入速率,在这种情况下采用IP CORE生成工具生成的移位寄存器对资源产生了很大的浪费。
发明内容
本发明要解决的技术问题是提供一种实现FIR滤波的方法和滤波装置,解决现有技术中,FIR滤波器的工作频率始终远高于FIR滤波器的数据输入速率,采用IP CORE生成的移位寄存器对FPGA资源产生很大的浪费的缺陷。
为解决上述技术问题,本发明的实施例提供一种实现FIR滤波的方法,应用于FPGA,方法包括:将FPGA上的α个RAM进行级联,将各个RAM与FIR滤波器连接;设置一个复用周期包括多个时钟周期,每一个RAM在该复用周期的不同时钟周期内均输出一个延迟数据,延迟数据在FIR滤波器中参与滤波运算,并且前(α-1)个RAM输出的延迟数据允许分别输入到级联的下一个RAM中;在滤波运算中,当至少两个延迟数据的FIR滤波器系数相同时,将至少两个延迟数据相加得到延迟和值,将所述延迟和值与所述FIR滤波器系数相乘得到乘积,将所有的乘积求和得到当前的复用周期的滤波结果。
所述的方法中,FIR滤波器的时钟频率fc,输入数据速率fd,所述设置一个复用周期包括多个时钟周期具体包括:复用周期倍数k=fc/fd,一个复用周期内包括复用周期倍数个时钟周期。
所述的方法中,每一个RAM在该复用周期的不同时钟周期内均输出一个延迟数据,具体包括:在每一个复用周期开始时更新各RAM的读地址,各RAM的读地址在该复用周期内是递增或递减的;第一部分的β个RAM按照递增顺序输出延迟数据,则第二部分的γ个RAM按照递减顺序输出延迟数据,当α是偶数时,β=γ=(1/2)*α;当α是奇数时,α=2*β-1=2*γ+1。
所述的方法中,还包括:在一个时钟周期内,与各个延迟数据匹配的各个FIR滤波器系数具有中心对称性,当α是偶数时,FIR滤波器系数中,前α/2个FIR滤波器系数与后α/2个FIR滤波器系数呈中心对称,当α是奇数时,FIR滤波器系数中,前(α-1)/2个FIR滤波器系数与后(α-1)/2个FIR滤波器系数呈中心对称。
所述的方法中,将至少两个延迟数据相加得到延迟和值,具体包括:当α是偶数时,β=γ,在一个时钟周期内,第一部分的β个RAM输出的延迟数据分别顺序地与第二部分的γ个RAM输出的延迟数据逆序地相加得到所述延迟和值,当α是奇数时,β=γ+1,在一个时钟周期内,第一部分的前γ个RAM输出的延迟数据分别顺序地与第二部分的γ个RAM输出的延迟数据逆序地相加得到所述延迟和值。
所述的方法中,前(α-1)个RAM输出的延迟数据允许分别输入到级联的下一个RAM中具体包括:设置前一个RAM输出的每个延迟数据在该前一个RAM的倒数第二个时钟周期写入后一个RAM。
所述的方法中,还包括:根据复用周期计数,在不同的复用周期中,使能不同的RAM的写使能,向该RAM中写入延迟数据。
一种滤波装置,包括:RAM级联单元,将FPGA上的α个RAM进行级联,将各个RAM与FIR滤波器连接;复用单元,用于设置一个复用周期包括多个时钟周期,每一个RAM在该复用周期的不同时钟周期内均输出一个延迟数据,延迟数据参与滤波运算,并且延迟数据允许被输入到级联的下一个RAM中;滤波运算单元,用于在滤波运算中,当至少两个延迟数据的FIR滤波器系数相同时,将至少一个延迟数据相加得到延迟和值,将所述延迟和值与所述FIR滤波器系数相乘得到乘积,将所有的乘积求和得到当前的复用周期的滤波结果。
所述的装置,复用单元包括:地址控制模块,用于在每一个复用周期开始时更新各RAM的读地址,各RAM的读地址是递增或递减的;RAM控制模块,用于控制第一部分的β个RAM按照递增顺序输出延迟数据,则第二部分的γ个RAM按照递减顺序输出延迟数据,当α是偶数时,β=γ=(1/2)*α;当α是奇数时,α=2*β-1=2*γ+1。
所述的装置,还包括:系数控制单元,用于在一个时钟周期内,与各个延迟数据匹配的各个FIR滤波器系数具有中心对称性,当α是偶数时,FIR滤波器系数中,前α/2个FIR滤波器系数与后α/2个FIR滤波器系数中心对称,当α是奇数时,FIR滤波器系数中,前(α-1)/2个FIR滤波器系数与后(α-1)/2个FIR滤波器系数中心对称。
所述的装置,滤波运算单元包括:偶数运算模块,用于当α是偶数时,β=γ,在一个时钟周期内,第一部分的β个RAM输出的延迟数据分别顺序地与第二部分的γ个RAM输出的延迟数据逆序地相加得到所述延迟和值,奇数运算模块,用于当α是奇数时,β=γ+1,在一个时钟周期内,第一部分的前γ个RAM输出的延迟数据分别顺序地与第二部分的γ个RAM输出的延迟数据逆序地相加得到所述延迟和值。
本发明的上述技术方案的有益效果如下:在FIR滤波器工作时钟频率高于且为FIR滤波器输入数据速率整数倍的情形下,多个RAM的级联结构,在每一个复用周期存储采集到的相对缓慢的延迟数据,以及,在复用周期的每一个时钟周期内向FIR滤波器快速地输出延迟数据,以满足FIR滤波器的运算速度,占用资源少;又,FIR滤波器中,滤波运算是将至少两个延迟数据相加后再进行乘法运算得到乘积,因此减少了执行乘法运算的乘法器单元的数量,提高了资源使用率。
附图说明
图1表示一种实现FIR滤波的方法的结构示意图;
图2表示FPGA中节约资源的FIR滤波器设计方法结构示意图。
具体实施方式
为使本发明要解决的技术问题、技术方案和优点更加清楚,下面将结合附图及具体实施例进行详细描述。
本发明中,利用FPGA中FIR滤波器的时钟频率高于FIR滤波器数据输入速率的特点,将FPGA内部的RAM级联,利用各RAM读写地址和写使能的变化实现对各RAM内部数据的选择性写入和读取,实现FIR滤波器延时数据的输出。其中,根据FIR滤波器的时钟频率能够计算出FIR滤波器的时钟周期。
本发明实施例提供一种实现FIR滤波的方法,如图1所示,应用于FPGA,方法包括:
步骤101,将FPGA上的α个RAM进行级联,将各个RAM与FIR滤波器连接;
步骤102,设置一个复用周期包括多个时钟周期,每一个RAM在该复用周期的不同时钟周期内均输出一个延迟数据,各延迟数据在FIR滤波器中参与滤波运算,并且前(α-1)个RAM输出的延迟数据分别输入到级联的下一个RAM中;
步骤103,在所述滤波运算中,当至少两个延迟数据的FIR滤波器系数相同时,将至少两个延迟数据相加得到延迟和值,将所述延迟和值与所述FIR滤波器系数相乘得到乘积,将所有的乘积求和得到当前的复用周期的滤波结果。
应用所提供的技术方案,在FIR滤波器工作时钟频率高于且为FIR滤波器输入数据速率整数倍的情形下,多个RAM的级联结构,在每一个复用周期存储采集到的相对缓慢的延迟数据,以及,在复用周期的每一个时钟周期内向FIR滤波器快速地输出延迟数据,以满足FIR滤波器的运算速度,占用资源少;又,FIR滤波器中,滤波运算是将至少两个延迟数据相加后再进行乘法运算得到乘积,因此减少了执行乘法运算的乘法器单元的数量,提高了资源使用率。
在一个优选实施例中,FIR滤波器的工作时钟频率fc,输入延迟数据速率fd,所述设置一个复用周期包括多个时钟周期具体包括:
复用周期倍数k=fc/fd,一个复用周期内包括复用周期倍数个时钟周期。
一个复用周期包括若干个时钟周期,复用周期倍数k表明了复用周期包括的时钟周期的数目。
采用复用周期计数器,复用周期计数器按复用周期倍数k循环计数,提供时间基准。按照FIR滤波器的设计和数据的复用周期倍数k,控制RAM经过正确的延迟在相应时间点处提供延迟数据。
计算RAM的具体数目α的方式包括:根据FIR滤波器阶数N和复用周期倍数k计算出生成全部延迟数据所需的RAM的最少数目各个RAM在一个时钟周期内执行一次写入或者读出操作。
在复用周期的每一个时钟周期内向FIR滤波器快速地输出延迟数据,需要对各个RAM的读地址进行控制。
在一个优选实施例中,每一个RAM在该复用周期的不同时钟周期内均输出一个延迟数据,具体包括:
在每一个复用周期开始时更新各RAM的读地址,各RAM的读地址是递增或递减的;
第一部分的β个RAM按照递增顺序输出延迟数据,则第二部分的γ个RAM按照递减顺序输出延迟数据,当α是偶数时,β=γ=(1/2)*α;当α是奇数时,α=2*β-1=2*γ+1。
在一个优选实施例中,根据复用周期计数,在不同的复用周期中,使能不同的RAM的写使能,向该RAM中写入延迟数据。
在每一个复用周期存储采集到的相对缓慢的延迟数据,需要对各个RAM的写地址进行控制。需要明确的是:写入RAM的速率是向RAM输入延迟数据的速率,从RAM中读出延迟数据的速率是工作时钟的速率,即,从RAM中读出延迟数据的频率是工作时钟频率fc,写入RAM的速率比读出的速率慢。
为了按照滤波运算的公式,控制不同的RAM在相应的时间点输出经过延迟后的延迟数据,设计各RAM的写使能、写地址和读地址。
根据复用周期计数器的值,为各RAM提供写使能以及实现周期复用,在不同时刻,使能不同的RAM,实现向各RAM顺序写入延迟数据。
写使能:是指输出将到来的延迟数据写入RAM的使能信号,该使能信号有效,位于RAM写端口的延迟数据才能写入到该RAM。
延迟数据最先到达RAM0的写端口,可根据需要选择延迟数据在复用周期的第几个时钟周期写入RAM0。为了减少延迟,若选择在一个复用周期的第一个时钟周期写入RAM0,则需要RAM0写使能在每个复用周期的第一个时钟周期有效。
为了使RAM级联效果最好,以及考虑到RAM读写之间最好间隔1个时钟周期并且复用周期包括4个时钟周期,因此可以知道:对于RAM1,作为与RAM0级联的下一个RAM,RAM1的写使能在复用周期的第三个时钟周期有效,依此类推,得到各RAM写使能对应的时钟周期。
以及,在下一个复用周期的第一个时钟周期写使能RAM0,向RAM0输入新的延迟数据。
写地址:一个RAM会占用一段地址,每一个地址对应的空间都能存放一个延迟数据。向各RAM提供统一的写地址,统一的写地址是指,写地址在RAM0的起始地址~RAMα的最大地址之间循环。
到来的延迟数据最先进入RAM0,可根据需要选择延迟数据在复用周期的第几个时钟周期写入RAM0,为减少延迟,选择在第一个时钟周期写入RAM0,则RAM0写使能在每个复用周期的第一个时钟周期有效。每一次RAM0写使能有效,其对应的写地址可以是不同的,这是因为一个RAM会占用一段地址而非仅仅一个地址,写地址在RAM0的起始地址~RAMα的最大地址之间循环,使得每一次进入RAM0的延迟数据不会立即覆盖之前进入RAM0的延迟数据。
向RAM中写入延迟数据的实现方式不同,写使能所在的时钟周期也相应的不同。
每个延迟数据在各RAM中都要在复用周期的每个时钟周期输出一次,为了实现RAM级联的效果,以及考虑到RAM读写之间至少相差1个时钟周期,因此需要为各RAM提供读地址,提供读地址具体产生方式:
各RAM在每一个复用周期内输出的延迟数据并不是按照这些延迟数据到达RAM的顺序,在每一个复用周期开始时更新各RAM的读地址,各RAM的读地址是递增或递减的。以下对读地址进行详细描述:
读地址:根据各RAM写使能有效时的写地址和/或需要读取延迟数据时的当前写地址来生成当前读地址。为了实现所设计的数据输出格式,由于各FPGA性能的不同,读写之间至少相差一个时钟周期(假设为一个时钟周期),每个复用周期的读地址需提前两个时钟周期更新。
在一个实施例中,描述了RAM的读地址具体产生方法,原则是按照滤波运算的公式在相应的时间点输出经过延迟后的延迟数据。在第n个复用周期中,RAM0的写使能有效,RAM0写地址为X,则在第n个复用周期的第3个时钟周期,RAM0的读地址更新为X,经过两个时钟周期-第n个复用周期的第3个时钟周期和第4个时钟周期后,在第n+1个复用周期中,RAM0输出的即为之前写入的延迟数据d(-1),依此类推,可得到各RAM的读地址。
与各个延迟数据匹配的各个FIR滤波器系数具有中心对称性。在一个优选实施例中,还包括:
在一个时钟周期内,与各个延迟数据匹配的各个FIR滤波器系数具有中心对称性,
当α是偶数时,FIR滤波器系数中,前α/2个FIR滤波器系数与后α/2个FIR滤波器系数呈中心对称,
当α是奇数时,FIR滤波器系数中,前(α-1)/2个FIR滤波器系数与后(α-1)/2个FIR滤波器系数呈中心对称。
换言之,一个复用周期内包括k(复用周期倍数)个时钟周期,在一个复用周期内,每一个RAM输出k(复用周期倍数)次延迟数据,其中,每一个时钟周期输出一次延迟数据。
表1:
如表1和表2所记载,以5个RAM级联为例,在时钟周期n内,RAM0的FIR滤波器系数是H1,RAM1的FIR滤波器系数是H5,RAM2的FIR滤波器系数是H9,由于FIR滤波器系数具有中心对称性,因此RAM4(而不是RAM3)的FIR滤波器系数也是H1(与RAM0的相同),RAM3的FIR滤波器系数也是H5(与RAM1的相同)。
输出的FIR滤波器系数如表2:
滤波运算的工作原理是:
在一个优选实施例中,将至少两个延迟数据相加得到延迟和值,具体包括:
当α是偶数时,β=γ,在一个时钟周期内,第一部分的β个RAM输出的延迟数据分别顺序地与第二部分的γ个RAM输出的延迟数据逆序地相加得到所述延迟和值,
当α是奇数时,β=γ+1,在一个时钟周期内,第一部分的前γ个RAM输出的延迟数据分别顺序地与第二部分的γ个RAM输出的延迟数据逆序地相加得到所述延迟和值。
先对FIR滤波器系数相同的延迟数据求出和值,再将和值与对应的FIR滤波器系数相乘得到结果,并在一个时钟周期内对所有乘积求和,作为一次运算结果-延迟和值输出。减少了FPGA中乘法器的使用量。
在一个应用场景中,包括:
步骤1,根据FIR滤波器的工作时钟频率fc和输入数据速率fd计算出复用周期倍数k=fc/fd。
步骤2,根据FIR滤波器阶数N和复用周期倍数k计算出生成全部延迟数据所需的RAM的最少个数
设定FIR滤波器阶数N为19,复用周期倍数k为4,则可计算出所需最少RAM个数为α=5个。
步骤3,FIR滤波器完成一次运算所需延迟数据的个数为滤波器阶数N,标识为d1,d2,d3,...,d(n)。
具体地,为实现系数复用,实现RAM级联,充分利用RAM空间资源完成滤波运算,RAM0到RAM(N)输出的延迟数据在复用周期内必须连续。
在一个优选实施例中,
若RAM的个数α为偶数2s,前s个RAM输出延迟数据为递增顺序,后s个RAM输出延迟数据为递减顺序,
若RAM个数α为奇数2s+1,前s+1个RAM输出延迟数据为递增顺序,后s个RAM输出延迟数据为递减顺序。
具体地,如表1中所记载,RAM0在第一个时钟周期输出延迟数据d1,在第二个时钟周期输出延迟数据d2,
RAM(n)在第一个时钟周期输出的延迟数据d(n),在第二个时钟周期输出延迟数据d(n-1)。
其他各个RAM依此类推。
在一个应用场景中,包括:若RAM个数α为偶数2s,前s个RAM输出延迟数据为递增顺序,在一个复用周期内,RAM0分别输出d1~d(k),RAM1分别输出d(k+1)~d(2k)等;
后s个RAM输出延迟数据为递减顺序,在一个复用周期内,RAM(N)分别输出d(N)~d(N一K+1),RAM(N-1)分别输出d(N-k)~d(N-2k+1)等,k是复用周期倍数。
若RAM个数α为奇数2s+1,前s+1个RAM输出延迟数据为递增顺序,后s个RAM输出延迟数据为递减顺序,输出格式与α为偶数2s时相同。
在一个优选实施例中,延迟数据允许被输入到级联的下一个RAM中具体包括:设置前一个RAM输出的每个延迟数据在该RAM的倒数第二个时钟周期写入后一个RAM。
需要根据RAM输出的数据格式设计每个复用周期中FIR滤波器系数组的输出格式。由于FIR滤波器系数N并不一定能被复用周期k整除得到偶数。所以在步骤3中RAM输出的递增数据和递减数据的交界处可能在一个复用周期中存在重复数据。
在一个优选实施例中,在出现重复数据时,将对应的系数输出为0即可避免重复数据对运算的影响。
由于在逻辑运算中需要一个时钟周期对系数相同的延迟数据进行求和,所以系数组的输出需要比各RAM的输出晚一个时钟周期。
进行滤波计算,根据对系数复用的数据求和并与系数相乘,再对一个复用周期内每个时钟周期的计算结果求和即得到该复用周期的输出。
本发明实施例提供一种滤波装置,如图2所示,包括:
RAM级联单元,将FPGA上的α个RAM进行级联,将各个RAM与FIR滤波器连接;
复用单元,用于设置一个复用周期包括多个时钟周期,每一个RAM在该复用周期的不同时钟周期内均输出一个延迟数据,延迟数据参与滤波运算,并且延迟数据允许被输入到级联的下一个RAM中;
滤波运算单元,用于在滤波运算中,当至少两个延迟数据的FIR滤波器系数相同时,将至少一个延迟数据相加得到延迟和值,将所述延迟和值与所述FIR滤波器系数相乘得到乘积,将所有的乘积求和得到当前的复用周期的滤波结果。
在一个优选实施例中,复用单元包括:
地址控制模块,用于在每一个复用周期开始时更新各RAM的读地址,各RAM的读地址是递增或递减的;
RAM控制模块,用于控制第一部分的β个RAM按照递增顺序输出延迟数据,则第二部分的γ个RAM按照递减顺序输出延迟数据,当α是偶数时,β=γ=(1/2)*α;当α是奇数时,α=2*β-1=2*γ+1。
在一个优选实施例中,还包括:
系数控制单元,用于在一个时钟周期内,与各个延迟数据匹配的各个FIR滤波器系数具有中心对称性,
当α是偶数时,FIR滤波器系数中,前α/2个FIR滤波器系数与后α/2个FIR滤波器系数中心对称,
当α是奇数时,FIR滤波器系数中,前(α-1)/2个FIR滤波器系数与后(α-1)/2个FIR滤波器系数中心对称。
在一个优选实施例中,滤波运算单元包括:
偶数运算模块,用于当α是偶数时,β=γ,在一个时钟周期内,第一部分的β个RAM输出的延迟数据分别顺序地与第二部分的γ个RAM输出的延迟数据逆序地相加得到所述延迟和值,
奇数运算模块,用于当α是奇数时,β=γ+1,在一个时钟周期内,第一部分的前γ个RAM输出的延迟数据分别顺序地与第二部分的γ个RAM输出的延迟数据逆序地相加得到所述延迟和值。
采用本方案之后的优势是:根据FIR滤波器工作时钟频率和输入数据速率灵活调整RAM个数,始终保证使用最少的RAM个数来实现数据延迟结构。同时通过调整输出数据格式能最大限度复用乘法器。如此大量节约了FPGA中内部存储资源和乘法器资源,有效的降低了开发成本和FPGA时序约束难度。
以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明所述原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (11)
1.一种实现FIR滤波的方法,其特征在于,应用于FPGA,方法包括:
将FPGA上的α个RAM进行级联,将各个RAM与FIR滤波器连接;
设置一个复用周期包括多个时钟周期,每一个RAM在该复用周期的不同时钟周期内均输出一个延迟数据,延迟数据在FIR滤波器中参与滤波运算,并且前(α-1)个RAM输出的延迟数据允许分别输入到级联的下一个RAM中;
在滤波运算中,当至少两个延迟数据的FIR滤波器系数相同时,将至少两个延迟数据相加得到延迟和值,将所述延迟和值与所述FIR滤波器系数相乘得到乘积,将所有的乘积求和得到当前的复用周期的滤波结果。
2.根据权利要求1所述的方法,其特征在于,FIR滤波器的时钟频率fc,输入数据速率fd,所述设置一个复用周期包括多个时钟周期具体包括:
复用周期倍数k=fc/fd,一个复用周期内包括复用周期倍数个时钟周期。
3.根据权利要求1所述的方法,其特征在于,每一个RAM在该复用周期的不同时钟周期内均输出一个延迟数据,具体包括:
在每一个复用周期开始时更新各RAM的读地址,各RAM的读地址在该复用周期内是递增或递减的;
第一部分的β个RAM按照递增顺序输出延迟数据,则第二部分的γ个RAM按照递减顺序输出延迟数据,当α是偶数时,β=γ=(1/2)*α;当α是奇数时,α=2*β-1=2*γ+1。
4.根据权利要求3所述的方法,其特征在于,还包括:
在一个时钟周期内,与各个延迟数据匹配的各个FIR滤波器系数具有中心对称性,
当α是偶数时,FIR滤波器系数中,前α/2个FIR滤波器系数与后α/2个FIR滤波器系数呈中心对称,
当α是奇数时,FIR滤波器系数中,前(α-1)/2个FIR滤波器系数与后(α-1)/2个FIR滤波器系数呈中心对称。
5.根据权利要求4所述的方法,其特征在于,将至少两个延迟数据相加得到延迟和值,具体包括:
当α是偶数时,β=γ,在一个时钟周期内,第一部分的β个RAM输出的延迟数据分别顺序地与第二部分的γ个RAM输出的延迟数据逆序地相加得到所述延迟和值,
当α是奇数时,β=γ+1,在一个时钟周期内,第一部分的前γ个RAM输出的延迟数据分别顺序地与第二部分的γ个RAM输出的延迟数据逆序地相加得到所述延迟和值。
6.根据权利要求3所述的方法,其特征在于,前(α-1)个RAM输出的延迟数据允许分别输入到级联的下一个RAM中具体包括:
设置前一个RAM输出的每个延迟数据在该前一个RAM的倒数第二个时钟周期写入后一个RAM。
7.根据权利要求1所述的方法,其特征在于,还包括:
根据复用周期计数,在不同的复用周期中,使能不同的RAM的写使能,向该RAM中写入延迟数据。
8.一种滤波装置,其特征在于,包括:
RAM级联单元,将FPGA上的α个RAM进行级联,将各个RAM与FIR滤波器连接;
复用单元,用于设置一个复用周期包括多个时钟周期,每一个RAM在该复用周期的不同时钟周期内均输出一个延迟数据,延迟数据参与滤波运算,并且延迟数据允许被输入到级联的下一个RAM中;
滤波运算单元,用于在滤波运算中,当至少两个延迟数据的FIR滤波器系数相同时,将至少一个延迟数据相加得到延迟和值,将所述延迟和值与所述FIR滤波器系数相乘得到乘积,将所有的乘积求和得到当前的复用周期的滤波结果。
9.根据权利要求8所述的装置,其特征在于,复用单元包括:
地址控制模块,用于在每一个复用周期开始时更新各RAM的读地址,各RAM的读地址是递增或递减的;
RAM控制模块,用于控制第一部分的β个RAM按照递增顺序输出延迟数据,则第二部分的γ个RAM按照递减顺序输出延迟数据,当α是偶数时,β=γ=(1/2)*α;当α是奇数时,α=2*β-1=2*γ+1。
10.根据权利要求8所述的装置,其特征在于,还包括:
系数控制单元,用于在一个时钟周期内,与各个延迟数据匹配的各个FIR滤波器系数具有中心对称性,
当α是偶数时,FIR滤波器系数中,前α/2个FIR滤波器系数与后α/2个FIR滤波器系数中心对称,
当α是奇数时,FIR滤波器系数中,前(α-1)/2个FIR滤波器系数与后(α-1)/2个FIR滤波器系数中心对称。
11.根据权利要求8所述的装置,其特征在于,滤波运算单元包括:
偶数运算模块,用于当α是偶数时,β=γ,在一个时钟周期内,第一部分的β个RAM输出的延迟数据分别顺序地与第二部分的γ个RAM输出的延迟数据逆序地相加得到所述延迟和值,
奇数运算模块,用于当α是奇数时,β=γ+1,在一个时钟周期内,第一部分的前γ个RAM输出的延迟数据分别顺序地与第二部分的γ个RAM输出的延迟数据逆序地相加得到所述延迟和值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310320501.3A CN104348446B (zh) | 2013-07-26 | 2013-07-26 | 一种实现fir滤波的方法和滤波装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310320501.3A CN104348446B (zh) | 2013-07-26 | 2013-07-26 | 一种实现fir滤波的方法和滤波装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104348446A true CN104348446A (zh) | 2015-02-11 |
CN104348446B CN104348446B (zh) | 2018-05-11 |
Family
ID=52503407
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310320501.3A Active CN104348446B (zh) | 2013-07-26 | 2013-07-26 | 一种实现fir滤波的方法和滤波装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104348446B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106936405A (zh) * | 2015-12-30 | 2017-07-07 | 普天信息技术有限公司 | 基于fpga实现单路数字fir滤波器的方法及装置 |
CN109239688A (zh) * | 2018-07-31 | 2019-01-18 | 电子科技大学 | 一种基于fpga实现的高效多普勒滤波器组 |
CN110113029A (zh) * | 2019-05-07 | 2019-08-09 | 中国科学院电子学研究所 | 一种fir抽取滤波器的数据处理方法 |
CN113328716A (zh) * | 2021-05-28 | 2021-08-31 | 中国电子科技集团公司第十四研究所 | 一种基于fpga的宽带滤波器模块及实现方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070182614A1 (en) * | 2006-02-09 | 2007-08-09 | Sanyo Electric Co., Ltd. | Apparatus and Method for Setting Filter Coefficient, and Recording Medium Having a Program Recorded Thereon |
CN101594122A (zh) * | 2008-05-29 | 2009-12-02 | 奇景光电股份有限公司 | 有限脉冲响应滤波器及其实施方法 |
CN101820287A (zh) * | 2009-07-24 | 2010-09-01 | 北京工业大学 | 一种应用于双声道音频δ-∑数模转换器的插值滤波器 |
-
2013
- 2013-07-26 CN CN201310320501.3A patent/CN104348446B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070182614A1 (en) * | 2006-02-09 | 2007-08-09 | Sanyo Electric Co., Ltd. | Apparatus and Method for Setting Filter Coefficient, and Recording Medium Having a Program Recorded Thereon |
CN101594122A (zh) * | 2008-05-29 | 2009-12-02 | 奇景光电股份有限公司 | 有限脉冲响应滤波器及其实施方法 |
CN101820287A (zh) * | 2009-07-24 | 2010-09-01 | 北京工业大学 | 一种应用于双声道音频δ-∑数模转换器的插值滤波器 |
Non-Patent Citations (1)
Title |
---|
李海军等: ""一种基于FPGA节省资源实现FIR滤波器的设计方法"", 《信息与电子工程》 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106936405A (zh) * | 2015-12-30 | 2017-07-07 | 普天信息技术有限公司 | 基于fpga实现单路数字fir滤波器的方法及装置 |
CN109239688A (zh) * | 2018-07-31 | 2019-01-18 | 电子科技大学 | 一种基于fpga实现的高效多普勒滤波器组 |
CN110113029A (zh) * | 2019-05-07 | 2019-08-09 | 中国科学院电子学研究所 | 一种fir抽取滤波器的数据处理方法 |
CN110113029B (zh) * | 2019-05-07 | 2021-02-23 | 中国科学院电子学研究所 | 一种fir抽取滤波器的数据处理方法 |
CN113328716A (zh) * | 2021-05-28 | 2021-08-31 | 中国电子科技集团公司第十四研究所 | 一种基于fpga的宽带滤波器模块及实现方法 |
CN113328716B (zh) * | 2021-05-28 | 2023-08-01 | 中国电子科技集团公司第十四研究所 | 一种基于fpga的宽带滤波器模块及实现方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104348446B (zh) | 2018-05-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5356537B2 (ja) | 前置加算器段を備えたデジタル信号処理ブロック | |
US12046251B2 (en) | Interpolation filter system implemented by digital circuit | |
CN104348446A (zh) | 一种实现fir滤波的方法和滤波装置 | |
WO2016201216A1 (en) | Sparse cascaded-integrator-comb filters | |
CN103984560A (zh) | 基于大规模粗粒度嵌入式可重构***及其处理方法 | |
CN104202016A (zh) | 一种基于查表法的任意倍可变的信号升采样实现方法及*** | |
CN101617235A (zh) | 实现不使用乘法器的有限脉冲响应滤波器的方法和设备 | |
CN105048994A (zh) | 一种应用于fir滤波器的分布式算法 | |
CN104579240A (zh) | 一种基于fpga的可配置系数的滤波器、电子设备及滤波方法 | |
CN102063284B (zh) | 一种除法运算方法及装置 | |
CN203617974U (zh) | 一种基于fpga的可配置系数的滤波器及电子设备 | |
CN101840322B (zh) | 滤波器运算单元复用的方法和滤波器的运算*** | |
CN100502240C (zh) | 一种有限脉冲响应fir滤波器 | |
CN102684644A (zh) | 采样率转换滤波器及采样率转换实现方法 | |
JP2009245381A (ja) | 積和演算回路、その設計装置、プログラム | |
CN108900177A (zh) | 一种fir滤波器及其对数据进行滤波的方法 | |
CN101174822A (zh) | 一种半并行滤波器及其实现方法 | |
KR102687936B1 (ko) | 디지털 회로로 구현하는 보간 필터 시스템 | |
CN112732339B (zh) | 一种分时复用时间抽取fft实现方法、***及介质 | |
CN103095251A (zh) | 数字滤波高速化的改进 | |
Maity et al. | A comparative study on FPGA based FIR filter using broadcast structure and overlap save method | |
JP5102710B2 (ja) | デジタルフィルタ | |
Yadav et al. | FPGA Implementation of Efficient FIR Filter | |
JP2004128858A (ja) | Firデジタルフィルタ | |
CN104467740B (zh) | 一种基于fpga的多通道数字滤波器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |