CN1862961A - 一种有限脉冲响应fir滤波器 - Google Patents
一种有限脉冲响应fir滤波器 Download PDFInfo
- Publication number
- CN1862961A CN1862961A CN 200610064981 CN200610064981A CN1862961A CN 1862961 A CN1862961 A CN 1862961A CN 200610064981 CN200610064981 CN 200610064981 CN 200610064981 A CN200610064981 A CN 200610064981A CN 1862961 A CN1862961 A CN 1862961A
- Authority
- CN
- China
- Prior art keywords
- ram
- filter
- address
- selector
- reading
- 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
Images
Landscapes
- Complex Calculations (AREA)
Abstract
本发明涉及一种FIR滤波器,包括滤波功能实现单元、数据输入单元、RAM数据读写单元和滤波器系数选择单元;所述数据输入单元用于输入与系统设置的可变阶数对应的滤波器输入数据值;所述RAM数据读写单元用于将滤波器输入数据值写入其内部的RAM中,以及产生起始读地址,并根据所述起始读地址从所述RAM中读取数据值给滤波功能实现单元;所述滤波器系数选择单元用于根据所述起始读地址以及系统设置的可变阶数选择滤波系数;所述滤波功能实现单元根据输入的数据值和滤波系数进行滤波处理。通过本发明采用RAM对数据进行处理,能够实现可变阶数的滤波,使FIR滤波器的应用范围更加广泛,通用性较强;而且本发明的FIR滤波器结构简单,占用资源较少。
Description
技术领域
本发明涉及通信领域,尤其涉及一种FIR(Finite impulse response,有限脉冲响应)滤波器。
背景技术
在通信系统中,用数字技术设计滤波器的方法越来越受到广泛的应用。这种通过数字技术设计的滤波器也称为数字滤波器。数字滤波器是为了完成信号滤波处理功能,用有限精度算法实现的离散时间线性非时变系统,其输入是一组数字量,其输出是经过变换的另一组数字量。数字滤波器具有稳定性高、精度高、灵活性大等突出优点。
一个数字滤波器的系统函数方程可以表示为:
直接由H(Z)得出表示输入输出关系的常系数线性差分方程为:
由上述方程可以看出,数字滤波器是将输入序列经过一定的运算变换成输出序列。大多数普通的数字滤波器是线性非时变的滤波器。对具有因果关系的FIR数字滤波器,其系统函数仅有零点(除z=0的极点外),并且因为系数ak全为零,所以上式的差分方程就简化为:
上式可以认为是x(n)与单位脉冲响应h(n)的直接卷积。
数字滤波器包括FIR滤波器和IIR(Infinite impulse response,无限脉冲响应)滤波器。所述FIR滤波器在保证满足滤波器幅频响应要求的同时还可获得严格的线性相位特性,从而较IIR滤波器更具有稳定性。对非线性相位要求的FIR滤波器一般可以用IIR滤波器来代替。
现有技术中一般采用寄存器实现输入数据的存取,其包括数据输入单元、寄存器数据读写单元、滤波器系数选择单元和滤波功能实现单元。所述数据输入单元根据固定的阶数输入相关的数据,寄存器数据读写单元写入该数据,并在适宜的时候读取该数据给滤波器系数选择单元,所述滤波器系数选择单元根据输入的数据选择相应的滤波系数,并传送给滤波功能实现单元;所述滤波功能实现单元根据所述滤波系数以及输入数据做点乘而后累加处理,从而实现滤波功能。
由现有技术可以看出,其采用寄存器形式实现固定阶数的滤波的技术方案存在如下缺陷:
1、阶数固定,不适用于阶数可变的情况,适应范围较小,不具有通用性。
2、采用寄存器实现方式实现可变阶数滤波器功能时,由于寄存器的存取数据的速度较慢,必须设置更多的寄存器才能满足存取数据速度的要求,从而需要复杂的外部信号处理电路,占用资源很大且实现复杂。
发明内容
本发明的目的是提供一种FIR滤波器,本发明采用RAM(读写存取器)实现可变阶数滤波器功能时不需要复杂的外部信号处理电路,结构简单,占用资源较少。
本发明的目的是通过以下技术方案实现的:
本发明提供一种FIR滤波器,包括数据输入单元、RAM数据读写单元、滤波器系数选择单元和滤波功能实现单元;
所述数据输入单元用于输入与系统设置的可变阶数对应的滤波器输入数据值;所述RAM数据读写单元用于将所述的滤波器输入数据值写入其内部的RAM中,以及产生起始读地址,并根据所产生的起始读地址从所述RAM中读取所述数据值给滤波功能实现单元;所述滤波器系数选择单元用于根据所述起始读地址以及系统设置的可变阶数选择并传送相应的滤波系数给所述滤波功能实现单元;所述滤波功能实现单元用于根据输入的数据值以及滤波系数进行滤波。
其中,所述RAM数据读写单元包括:
FIR滤波器控制信号产生电路、RAM模块逻辑电路以及至少一个RAM或至少一对RAM;
所述FIR滤波器控制信号产生电路,用于产生启动读开始rd_start信号的控制信号和产生控制计数器最高位cnt[3]的控制信号;
所述RAM模块逻辑电路,用于控制将输入到滤波器的输入数据值写入到RAM中,并产生从每个RAM中读取滤波器输入数据值的起始读地址,并将所述起始读地址信息传送给所述滤波系数选择单元,以及根据产生的起始读地址从每个RAM中读取出对应的数据值,并将其传送给所述滤波功能实现单元。
其中,所述RAM模块逻辑电路包括:
RAM写地址产生模块,用于通过同步信号的控制产生将滤波器输入数据值写入到RAM中的写地址。
其中,所述RAM模块逻辑电路还包括:
对应每个RAM的RAM读地址产生模块,用于根据RAM写地址产生模块产生的写地址产生读取滤波器输入数据值时的起始读地址。
其中,当至少为一对RAM时,对应每一对RAM中的其中一个RAM的RAM读地址产生模块包括第一选择器和第一计数器;
所述第一选择器被所述cnt[3]信号控制选择出需要移动的偏移地址,并用当前的写地址减去所述偏移地址得到读取数据值时起始读地址,然后通过rd_start信号使能所述第一计数器计数,并产生读地址;
对应每一对RAM中的另一个RAM的RAM读地址产生模块包括第二选择器和第二计数器;
所述第二选择器被所述cnt[3]信号控制选择出需要移动的偏移地址,并用当前的写地址加上所述偏移地址得到读取数据值时起始读地址,然后通过rd_start信号使能所述第二计数器计数,并产生读地址。
其中,当至少为一个RAM时,对应每一个RAM的RAM读地址产生模块包括:第三选择器和第三计数器;
所述第三选择器被所述cnt[3]信号控制选择出需要移动的偏移地址,并用当前的写地址减去或加上所述偏移地址得到读取数据值时起始读地址,然后通过rd_start信号使能所述第三计数器计数,并产生读地址。
其中,所述RAM模块逻辑电路还包括:
对应每一RAM的模处理部件,用于根据通过RAM读地址产生模块中的选择器根据RAM写地址产生模块输出的计数值选择出的数值,并通过所述数值对所述RAM读地址产生模块中的计数器的计数值进行模处理。
其中,所述滤波系数选择单元为至少一个,并且每个滤波系数选择单元对应一个RAM。
其中,所述滤波系数选择单元包括:
第四计数器、第四选择器、第五选择器、第六选择器、系数选择产生部件;
所述第四计数器由所述读开始rd_start信号控制开始计数;
所述第四选择器用于将第四计数器产生的计数值传送给所述系数选择产生部件;
所述第五选择器用于选择表示滤波系数为奇数或偶数的标识参数,并将其传送给所述系数选择产生部件;
所述第六选择器用于选择滤波系数中的偏移量中的参数,并将其传送给所述系数选择产生部件;
所述系数选择产生部件根据所述第四选择器输出的计数值、所述第五选择器输出的标识参数和第六选择器输出的参数计算出滤波系数,然后将其传送给所述滤波功能实现单元。
其中,所述滤波功能实现单元包括:乘法器和加法器;
所述乘法器将输入的数据值以及滤波系数进行点乘,并将结果输入到加法器进行累加处理,得到处理后的滤波结果。
其中,所述滤波功能实现单元还包括:
饱和截位部件,用于对所述加法器处理后的滤波结果进行截位处理。
由上述本发明提供的技术方案可以看出,本发明中通过RAM数据读写单元将滤波器输入数据值写入RAM中,以及产生起始读地址,并根据所述起始读地址从RAM中读取数据值给滤波功能实现单元;所述滤波器系数选择单元根据所述起始读地址以及系统设置的可变阶数选择滤波系数并传送给滤波功能实现单元;所述滤波功能实现单元根据输入的数据值和滤波系数进行滤波处理。由于本发明采用RAM对数据进行处理时,存储和读取数据均比较快,从而在可变阶数滤波器功能时,不需要设置很多的RAM就能够在规定的时间内获取要读取的数据,从而能够保证滤波器按要求输出计算结果,减少了FIR插值的运算时间,因此本发明不需要复杂的外部信号处理电路,从而使本发明的FIR滤波器的结构相对于寄存器实现方式简单,占用资源较少。另外,本发明根据相应的滤波器阶数产生相应的读写控制信号,从而能够实现可变阶数的滤波,使FIR滤波器的应用范围更加广泛,通用性较强,例如可以作为通用的FIR滤波器应用于不同的场合,而且本发明能够成功应用在中频处理芯片中。
附图说明
图1为本发明中可变阶数FIR滤波器的结构图;
图2为本发明提供的实施例中FIR滤波器的控制信号产生电路图;
图3为本发明提供的实施例中FIR滤波器的RAM模块逻辑电路和RAM结构图;
图4为本发明提供的实施例中FIR滤波器的RAM0读地址产生模块的工作原理图;
图5为本发明提供的实施例中FIR滤波器的RAM1读地址产生模块的工作原理图;
图6为本发明提供的实施例中FIR滤波器的滤波器系数选择单元的工作原理图;
图7为本发明提供的实施例中FIR滤波器的功能实现模块的结构图。
具体实施方式
针对本发明所述一种FIR滤波器,本发明提供了第一实施例,其结构如图1所示,包括:
数据输入单元、RAM数据读写单元、滤波器系数选择单元和滤波功能实现单元。
所述数据输入单元,用于根据配置的可变阶数输入输出数据计算需要的滤波器输入数据值,并将所述滤波器输入数据值传送给RAM数据读写单元。所述RAM数据读写单元将数据输入单元输入的滤波器输入数据值写入RAM中,并产生起始读地址,然后传送给所述滤波器系数选择单元,并将起始读地址对应的滤波器输入数据值读出,然后传送给滤波功能实现单元。所述滤波器系数选择单元根据所述起始读地址选择对应的滤波器系数,并将其传送给所述滤波功能实现单元。所述滤波功能实现单元对接收到的数据值和滤波器系数进行相乘累加处理,并输出处理后的数据。
假设FIR滤波器需要实现下行插值滤波,插值率为2。它的滤波阶数可配置,范围为:19~25,步长为1。它的系数可配置。它输入的滤波器输入数据值的特性为:14bit。经过滤波后输出数据为:18bit。插值率为2,表示输出数据速率是输入速率得两倍,因此设计时主时钟的速率要求至少为输出速率得8倍。而且所述FIR滤波器还要实现只要一个输入数据到来,则需输出两个新数据的功能。如果输出两个数据要用16cycle,则一个数据的处理时间为8个cycle。
下面基于上述假设详细描述数据输入单元、RAM数据读写单元、滤波器系数选择单元和滤波功能实现单元的实现:
一、数据输入单元:根据配置的可变阶数输入输出数据计算需要的滤波器输入数据值,并将所述滤波器输入数据值传送给RAM数据读写单元。
可实现2倍插值以及19~25可变阶数滤波的FIR滤波器中的数据输入单元根据配置的可变阶数输入输出数据计算需要的滤波器输入数据值,其输入的滤波器输入数据值与可变阶数的对应关系如表1所示:
h12 h11 h10 h9 h8 h7 h6 h5 h4 h3 h2 h1 h0 h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12
25阶 a12 0 a11 0 a10 0 a9 0 a8 0 a7 0 a6 0 a5 0 a4 0 a3 0 a2 0 a1 0 a0
0 a12 0 a11 0 a10 0 a9 0 a8 0 a7 0 a6 0 a5 0 a4 0 a3 0 a2 0 a1 0
24阶 h11 h10 h9 h8 h7 h6 h5 h4 h3 h2 h1 h0 h0 h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11
a11 0 a10 0 a9 0 a8 0 a7 0 a6 0 a5 0 a4 0 a3 0 a2 0 a1 0 a0 0
0 a11 0 a10 0 a9 0 a8 0 a7 0 a6 0 a5 0 a4 0 a3 0 a2 0 a1 0 a0
23阶 h11 h10 h9 h8 h7 h6 h5 h4 h3 h2 h1 h0 h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11
a11 0 a10 0 a9 0 a8 0 a7 0 a6 0 a5 0 a4 0 a3 0 a2 0 a1 0 a0
0 a11 0 a10 0 a9 0 a8 0 a7 0 a6 0 a5 0 a4 0 a3 0 a2 0 a1 0
22阶 h10 h9 h8 h7 h6 h5 h4 h3 h2 h1 h0 h0 h1 h2 h3 h4 h5 h6 h7 h8 h9 h10
a10 0 a9 0 a8 0 a7 0 a6 0 a5 0 a4 0 a3 0 a2 0 a1 0 a0 0
0 a10 0 a9 0 a8 0 a7 0 a6 0 a5 0 a4 0 a3 0 a2 0 a1 0 a0
21阶 h10 h9 h8 h7 h6 h5 h4 h3 h2 h1 h0 h1 h2 h3 h4 h5 h6 h7 h8 h9 h10
a10 0 a9 0 a8 0 a7 0 a6 0 a5 0 a4 0 a3 0 a2 0 a1 0 a0
0 a10 0 a9 0 a8 0 a7 0 a6 0 a5 0 a4 0 a3 0 a2 0 a1 0
20阶 h9 h8 h7 h6 h5 h4 h3 h2 h1 h0 h0 h1 h2 h3 h4 h5 h6 h7 h8 h9
a9 0 a8 0 a7 0 a6 0 a5 0 a4 0 a3 0 a2 0 a1 0 a0 0
0 a9 0 a8 0 a7 0 a6 0 a5 0 a4 0 a3 0 a2 0 a1 0 a0
19阶 h9 h8 h7 h6 h5 h4 h3 h2 h1 h0 h1 h2 h3 h4 h5 h6 h7 h8 h9
a9 0 a8 0 a7 0 a6 0 a5 0 a4 0 a3 0 a2 0 a1 0 a0
0 a9 0 a8 0 a7 0 a6 0 a5 0 a4 0 a3 0 a2 0 a1 0
表1
表1中对应每一阶数的第二行为输入的第一次输出数据计算需要的滤波器输入数据值,第三行为输入的第二次输出数据计算需要的滤波器输入数据值。
二、RAM数据读写单元
RAM数据读写单元包括FIR滤波器控制信号产生电路和RAM模块逻辑电路和一对RAM。
1、FIR滤波器控制信号产生电路主要用于产生FIR滤波器的控制信号。其逻辑结构如图2所示,其通过pow_ch_sync的同步清零操作,产生16位计数器cnt来计算16个相位,计数的有效信号为cnt_valid,它控制整个计数在pow_ch_sync的作用下有效,一般情况下其都为高电平,当pow_ch_sync的上升沿来到时,在下一个时钟cnt_valid变成高电平。只有当计数到达最大值且pow_ch_sync不来脉冲时,它会自动变成低电平,达到不计数的目的。通过计数器cnt的计数值产生cnt[3]和rd_start两个控制信号,分别控制所有的MUX电路和连接用于启动读开始使用的信号。
当相位达到4’b0000或4’b1000时,启动读RAM。读RAM的使能是由计数器计数,当达到要求的位置后,就停止读RAM。由于在前后半拍送出的数据导致读RAM的数据个数不同,可控制MUX选择前后半拍计数器应该计数的终值。这个计数器的计数有效用来使能读地址和系数选择的产生。
2、RAM模块逻辑电路
RAM模块逻辑电路主要控制将输入到RAM中的滤波器输入数据值同时写入到两个RAM中,并控制从RAM中读取滤波器输入数据值的起始读地址。如图3所示,RAM模块逻辑电路包括RAM0读地址产生模块、写地址产生模块、RAM1读地址产生模块,RAM0读地址产生模块和RAM1读地址产生模块分别与RAM0、RAM1相连接。其工作原理如下:
RAM模块逻辑电路通过同步信号pow_ch_sync控制写地址产生模块(在这里通过写地址计数器实现)产生写地址,然后根据所述写地址控制输入的滤波器输入数据值同时写入到两个RAM中,其中写的内容都是一样,共用一套写地址、写数据和写使能。当一个数据到来以后,同时写入到两块RAM的相同地址。
当控制从RAM0中读取滤波器输入数据值时,通过RAM0读地址产生模块完成读地址的选择产生。所述RAM0读地址产生模块如图4所示,包括第一计数器(这里为13递增计数器)、模处理模块(这里为模13处理模块)和第一选择器(这里为rd0_mux选择器),其工作原理描述如下:
通过rd0_mux选择器选择出需要移动的偏移地址,用当前的写地址ram_wr_addr减去偏移地址就得到RAM0读取的起始地址,其中为了保证其计数为正数,需要进行模13的处理,具体为通过rd0_mux选择器选择上述写地址计数器产生的写地址,并将其输入到模13处理模块进行模13处理,并将处理后的数值输入到13递增计数器。在rd_start启动信号的作用下,并在计数使能有效情况下,读地址rd0_addr_cnt开始自动计数,产生RAM0读地址。读使能表示计数使能有效信号。
RAM1读地址产生模块的工作原理如图5所示,其与RAM1读地址产生模块的区别之处只是RAM0读地址产生模块中用于产生读地址使用的计数器是递增计数器,而RAM1读地址产生模块中用于产生读地址使用的计数器是递减计数器,其工作原理与RAM0读地址产生模块的工作原理类似,这里不再详细描述。
通过两个RAM中设置的不同计数器,两个RAM读取数据的方式不同。两块RAM的读地址在要写地址的中间位置,分别从两个方向读出不同的数据。写地址加上一定的数值就是它的中间位置。这个数值是读地址产生的起始地址,如表2所示:
22阶 | COEF | h0 | h2 | h4 | h6 | h8 | h10 | h1 | h3 | h5 | h7 | h9 | |||||
RAM1 | 4 | 3 | 2 | 1 | 0 | 5 | 4 | 3 | 2 | 1 | 0 | ||||||
COEF | h1 | h3 | h5 | h7 | h9 | h0 | h2 | h4 | h6 | h8 | h10 | ||||||
21阶 | RAM0 | 6 | 7 | 8 | 9 | 10 | 6 | 7 | 8 | 9 | 10 | ||||||
COEF | h2 | h4 | h6 | h8 | h10 | h1 | h3 | h5 | h7 | h9 | |||||||
RAM1 | 5 | 4 | 3 | 2 | 1 | 0 | 5 | 4 | 3 | 2 | 1 | ||||||
COEF | h0 | h2 | h4 | h6 | h8 | h10 | h1 | h3 | h5 | h7 | h9 | ||||||
20阶 | RAM0 | 5 | 6 | 7 | 8 | 9 | 5 | 6 | 7 | 8 | 9 | ||||||
COEF | h1 | h3 | h5 | h7 | h9 | h0 | h2 | h4 | h6 | h8 | |||||||
RAM1 | 4 | 3 | 2 | 1 | 0 | 4 | 3 | 2 | 1 | 0 | |||||||
COEF | h0 | h2 | h4 | h6 | h8 | h1 | h3 | h5 | h7 | h9 | |||||||
19阶 | RAM0 | 5 | 6 | 7 | 8 | 9 | 5 | 6 | 7 | 8 | 9 | ||||||
COEF | h1 | h3 | h5 | h7 | h9 | h0 | h2 | h4 | h6 | h8 | |||||||
RAM1 | 4 | 3 | 2 | 1 | 0 | 4 | 3 | 2 | 1 | ||||||||
COEF | h1 | h3 | h5 | h7 | h9 | h2 | h4 | h6 | h8 |
表2
表2中的数值就是各种阶数的计数有效开始时刻的各个RAM读取数据时读地址的起始位置。随着主时钟节拍的变化,其读地址也相应的改变,这样达到读出一半数据的目的。表2中对应RAM1读取数据时读地址的起始位置是由中间位置开始递增,即完成从中点往下读一半数据;RAM0是由中间位置开始递减,即完成从中点往上读一半数据。其中计数的长度是通过rd_cnt_valid信号来控制的。这样就能够满足在8个时钟周期内完成规定的数据读取工作。
三、滤波器系数选择单元
滤波器系数选择单元主要为了实现RAM读出的数据要与滤波器的系数相匹配,在这里对应两个RAM设置了两个滤波器系数选择单元,即RAM0滤波器系数选择单元和RAM1滤波器系数选择单元。其中RAM0滤波器系数选择单元的逻辑结构如图6所示,包括第四计数器,即图中的计数器、第四选择器,即rd0_mux1_cnt、第五选择器,即rd0_mux2_coefb、第六选择器,即rd0_mux3_coefa,和系数选择产生部件;
所述计数器由所述读开始rd_start信号控制开始计数;所述rd0_mux1_cnt将计数器产生的计数值传送给所述系数选择产生部件;所述rd0_mux2_coefb选择表示滤波系数为奇数或偶数的标识参数,并将其传送给所述系数选择产生部件;rd0_mux3_coefa用于选择滤波系数中的偏移量,并将其传送给所述系数选择产生部件;所述系数选择产生部件根据所述rd0_mux1_cnt输出的计数值x、rd0_mux2_coefb输出的标识参数coefb和rd0_mux3_coefa输出的coefa参数计算出滤波系数,然后将其传送给所述滤波功能实现单元。
从图1可以发现这么一个规律,FIR滤波器的系数h如果要是偶数,则要么是从h0开始,要么是从h2开始读取RAM中的滤波器输入数据值,并通过图6中的MUX(rd0_mux2_coefb或rd0_mux3_coefa)选通,将起始读地址送入所述滤波器系数选择单元中的系数选择产生部件,系数选择产生部件根据配置选择相应的滤波系数h,具体实现如下:
当RAM中的滤波器输入数据值送入rd0_mux2_coefb时,rd0_mux2_coefb控制产生系数h中的偏移量值coefb;当RAM中的滤波器输入数据值送入rd0_mux3_coefa时,rd0_mux3_coefa控制产生系数h中的coefa值,用以表示选择的系数h是奇数还是偶数;rd0_mux1_cnt控制rd_cnt产生计数值x。
各选择器(mux)的配置数值,如表3所示:
rd0_mux1_cnt(X) | |||||
rd0_mux1_up | rd0_mux1_down | rd1_mux1_up | rd1_mux1_down | ||
25阶 | 110 | 5 | 5 | 6 | 5 |
24阶 | 101 | 5 | 5 | 5 | 5 |
23阶 | 100 | 5 | 5 | 5 | 4 |
22阶 | 011 | 5 | 4 | 4 | 5 |
21阶 | 010 | 4 | 4 | 5 | 4 |
20阶 | 001 | 4 | 4 | 4 | 4 |
19阶 | 000 | 4 | 4 | 4 | 3 |
rd0_mux3_coefa(选择系数中的a值) | |||||
rd0_mux3_up | rd0_mux3_down | rd1_mux3_up | rd1_mux3_down | ||
25阶 | 110 | 0 | 1 | 0 | 1 |
24阶 | 101 | 1 | 0 | 0 | 1 |
23阶 | 100 | 1 | 0 | 1 | 0 |
22阶 | 011 | 0 | 1 | 1 | 0 |
21阶 | 010 | 0 | 1 | 0 | 1 |
20阶 | 001 | 1 | 0 | 0 | 1 |
19阶 | 000 | 1 | 0 | 1 | 0 |
rd0_mux2_coefb(选择系数中的b值) | |||||
rd0_mux2_up | rd0_mux2_down | rd1_mux2_up | rd1_mux2_down | ||
25阶 | 110 | 1 | 0 | 0 | 0 |
24阶 | 101 | 0 | 0 | 0 | 0 |
23阶 | 100 | 0 | 0 | 0 | 1 |
22阶 | 011 | 0 | 0 | 0 | 0 |
21阶 | 010 | 1 | 0 | 0 | 0 |
20阶 | 001 | 0 | 0 | 0 | 0 |
19阶 | 000 | 0 | 0 | 0 | 1 |
表3
最后系数选择产生部件根据公式coef=2(x+coefb)+coefa算出相对应的系数,即h,并将其传送给FIR功能实现模块进行处理。
RAM1的滤波器系数选择单元的逻辑结构与RAM0的滤波器系数选择单元的逻辑结构类似,这里不再详细描述。
四、滤波功能实现单元
滤波功能实现单元主要是完成RAM数据与滤波器系数相乘累加、饱和截位等过程,最终输出信号为一个过滤后的数据信号fir_o和另一个过滤后的同步信号fir_sync两个信号。其结构如图7所示,包括两个乘法器,即图7中的rd0 mult乘法器1和rd1 mult乘法器2,一个加法器,即图中的rd mult add累加器3以及饱和截位部件4。
本单元输入数据的频率为6.5MHz。和主时钟比较,则要在16个主时钟里完成两个数据的输出,因此一个数据的计算需要在8个主时钟里完成。而一次计算,最多有12次乘法,于是在本模块中采用两个乘法器,即图7中的rd0 mult乘法器1和rd1 mult乘法器2来并行计算一次输入的数据,然后将结果送入累加器3进行累加处理。当结果计算出来后,经饱和截位部件4进行四舍五入、饱和截位得到需要的滤波结果输出。
经过上述滤波器中各个单元的处理完成了阶数可变、2X插值滤波器的功能。
如果实现阶数可变、1X插值滤波器的功能时,仅仅在滤波器中设置一个RAM,以及对应该RAM的一套控制电路即可,本领域的技术人员能够根据本发明轻而易举的实现,因此这里不再详细描述。
由上述本发明的具体实施方式可以看出,本发明由于本发明采用RAM对数据进行处理时,存储和读取数据均比较快,从而在可变阶数滤波器功能时,不需要设置很多的RAM就能够在规定的时间内获取要读取的数据,从而能够保证滤波器按要求输出计算结果,减少了FIR插值的运算时间,因此本发明不需要复杂的外部信号处理电路,从而使本发明的FIR滤波器的结构相对于寄存器实现方式简单,占用资源较少。另外,本发明根据相应的滤波器阶数产生相应的读写控制信号,从而能够实现可变阶数的滤波,使FIR滤波器的应用范围更加广泛,通用性较强,例如可以作为通用的FIR滤波器应用于不同的场合,而且本发明能够成功应用在中频处理芯片中。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。
Claims (11)
1、一种有限脉冲响应FIR滤波器,包括滤波功能实现单元,用于根据输入的数据值以及滤波系数进行滤波,其特征在于,还包括:
数据输入单元、RAM数据读写单元和滤波器系数选择单元;
所述数据输入单元用于输入与系统设置的可变阶数对应的滤波器输入数据值;所述RAM数据读写单元用于将所述的滤波器输入数据值写入其内部的RAM中,以及产生起始读地址,并根据所产生的起始读地址从所述RAM中读取所述数据值给滤波功能实现单元;所述滤波器系数选择单元用于根据所述起始读地址以及系统设置的可变阶数选择并传送相应的滤波系数给所述滤波功能实现单元。
2、根据权利要求1所述的FIR滤波器,其特征在于,所述RAM数据读写单元包括:
FIR滤波器控制信号产生电路、RAM模块逻辑电路以及至少一个RAM或至少一对RAM;
所述FIR滤波器控制信号产生电路,用于产生启动读开始rd_start信号的控制信号和产生控制计数器最高位cnt[3]的控制信号;
所述RAM模块逻辑电路,用于控制将输入到滤波器的输入数据值写入到RAM中,并产生从每个RAM中读取滤波器输入数据值的起始读地址,并将所述起始读地址信息传送给所述滤波系数选择单元,以及根据产生的起始读地址从每个RAM中读取出对应的数据值,并将其传送给所述滤波功能实现单元。
3、根据权利要求2所述的FIR滤波器,其特征在于,所述RAM模块逻辑电路包括:
RAM写地址产生模块,用于通过同步信号的控制产生将滤波器输入数据值写入到RAM中的写地址。
4、根据权利要求3所述的FIR滤波器,其特征在于,所述RAM模块逻辑电路还包括:
对应每个RAM的RAM读地址产生模块,用于根据RAM写地址产生模块产生的写地址产生读取滤波器输入数据值时的起始读地址。
5、根据权利要求4所述的FIR滤波器,其特征在于:
当至少为一对RAM时,
对应每一对RAM中的其中一个RAM的RAM读地址产生模块包括第一选择器和第一计数器;
所述第一选择器被所述cnt[3]信号控制选择出需要移动的偏移地址,并用当前的写地址减去所述偏移地址得到读取数据值时起始读地址,然后通过rd_start信号使能所述第一计数器计数,并产生读地址;
对应每一对RAM中的另一个RAM的RAM读地址产生模块包括第二选择器和第二计数器;
所述第二选择器被所述cnt[3]信号控制选择出需要移动的偏移地址,并用当前的写地址加上所述偏移地址得到读取数据值时起始读地址,然后通过rd_start信号使能所述第二计数器计数,并产生读地址。
6、根据权利要求4所述的FIR滤波器,其特征在于,当至少为一个RAM时,对应每一个RAM的RAM读地址产生模块包括:
第三选择器和第三计数器;
所述第三选择器被所述cnt[3]信号控制选择出需要移动的偏移地址,并用当前的写地址减去或加上所述偏移地址得到读取数据值时起始读地址,然后通过rd_start信号使能所述第三计数器计数,并产生读地址。
7、根据权利要求5或6所述的FIR滤波器,其特征在于,所述RAM模块逻辑电路还包括:
对应每一RAM的模处理部件,用于根据通过RAM读地址产生模块中的选择器根据RAM写地址产生模块输出的计数值选择出的数值,并通过所述数值对所述RAM读地址产生模块中的计数器的计数值进行模处理。
8、根据权利要求2所述的FIR滤波器,其特征在于:
所述滤波系数选择单元为至少一个,并且每个滤波系数选择单元对应一个RAM。
9、根据权利要求8所述的FIR滤波器,其特征在于,所述滤波系数选择单元包括:
第四计数器、第四选择器、第五选择器、第六选择器、系数选择产生部件;
所述第四计数器由所述读开始rd_start信号控制开始计数;
所述第四选择器用于将第四计数器产生的计数值传送给所述系数选择产生部件;
所述第五选择器用于选择表示滤波系数为奇数或偶数的标识参数,并将其传送给所述系数选择产生部件;
所述第六选择器用于选择滤波系数中的偏移量中的参数,并将其传送给所述系数选择产生部件;
所述系数选择产生部件根据所述第四选择器输出的计数值、所述第五选择器输出的标识参数和第六选择器输出的参数计算出滤波系数,然后将其传送给所述滤波功能实现单元。
10、根据权利要求1所述的FIR滤波器,其特征在于,所述滤波功能实现单元包括:
乘法器和加法器;
所述乘法器将输入的数据值以及滤波系数进行点乘,并将结果输入到加法器进行累加处理,得到处理后的滤波结果。
11、根据权利要求10所述的FIR滤波器,其特征在于,所述滤波功能实现单元还包括:
饱和截位部件,用于对所述加法器处理后的滤波结果进行截位处理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2006100649811A CN100502240C (zh) | 2006-03-20 | 2006-03-20 | 一种有限脉冲响应fir滤波器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2006100649811A CN100502240C (zh) | 2006-03-20 | 2006-03-20 | 一种有限脉冲响应fir滤波器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1862961A true CN1862961A (zh) | 2006-11-15 |
CN100502240C CN100502240C (zh) | 2009-06-17 |
Family
ID=37390304
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2006100649811A Expired - Fee Related CN100502240C (zh) | 2006-03-20 | 2006-03-20 | 一种有限脉冲响应fir滤波器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100502240C (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102388534A (zh) * | 2010-02-20 | 2012-03-21 | 华为技术有限公司 | 滤波设备和用于提供滤波设备的方法 |
CN102739195A (zh) * | 2012-06-06 | 2012-10-17 | 华为技术有限公司 | 一种fir滤波器的处理方法、装置和系统 |
CN105790728A (zh) * | 2014-12-25 | 2016-07-20 | 上海贝岭股份有限公司 | 一种多路数字滤波器 |
CN105827217A (zh) * | 2016-03-03 | 2016-08-03 | 深圳市紫光同创电子有限公司 | 一种有限长冲激响应滤波电路及可编程逻辑器件 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH01245607A (ja) * | 1988-03-25 | 1989-09-29 | Ricoh Co Ltd | 合成型良限インパルス応答デジタルフィルタ |
-
2006
- 2006-03-20 CN CNB2006100649811A patent/CN100502240C/zh not_active Expired - Fee Related
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102388534A (zh) * | 2010-02-20 | 2012-03-21 | 华为技术有限公司 | 滤波设备和用于提供滤波设备的方法 |
CN102388534B (zh) * | 2010-02-20 | 2014-04-30 | 华为技术有限公司 | 滤波设备和用于提供滤波设备的方法 |
CN102739195A (zh) * | 2012-06-06 | 2012-10-17 | 华为技术有限公司 | 一种fir滤波器的处理方法、装置和系统 |
CN102739195B (zh) * | 2012-06-06 | 2015-12-09 | 华为技术有限公司 | 一种fir滤波器的处理方法、装置和系统 |
CN105790728A (zh) * | 2014-12-25 | 2016-07-20 | 上海贝岭股份有限公司 | 一种多路数字滤波器 |
CN105790728B (zh) * | 2014-12-25 | 2018-11-30 | 上海贝岭股份有限公司 | 一种多路数字滤波器 |
CN105827217A (zh) * | 2016-03-03 | 2016-08-03 | 深圳市紫光同创电子有限公司 | 一种有限长冲激响应滤波电路及可编程逻辑器件 |
CN105827217B (zh) * | 2016-03-03 | 2018-10-12 | 深圳市紫光同创电子有限公司 | 一种有限长冲激响应滤波电路及可编程逻辑器件 |
Also Published As
Publication number | Publication date |
---|---|
CN100502240C (zh) | 2009-06-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1084965C (zh) | 在csd滤波器中处理信号的方法及适用于该方法的电路 | |
CN1992517A (zh) | 一种可编程内插滤波器装置及其实现方法 | |
CN102567596B (zh) | 一种面齿轮轮齿参数化建模方法 | |
CN101257288B (zh) | 一种可配置参数的有限冲激响应数字滤波器 | |
CN1168212C (zh) | 频率测量电路 | |
CN1862961A (zh) | 一种有限脉冲响应fir滤波器 | |
CN1900927A (zh) | 可重构数字信号处理器 | |
CN1109990C (zh) | 运算装置及运算方法 | |
CN1139185C (zh) | 有限脉冲响应滤波器及其滤波方法 | |
CN1976227A (zh) | 脉冲宽度调制装置 | |
CN105808206A (zh) | 基于ram实现乘法运算的方法及其系统 | |
CN1809837A (zh) | 图像处理装置、图像处理方法和程序及记录介质 | |
CN1835389A (zh) | 一种可以消除数控振荡器频率误差的方法及相位累加器 | |
CN101060326A (zh) | 加减计数电路和加减计数方法 | |
CN101051261A (zh) | 舍入运算方法及其运算装置 | |
CN1825760A (zh) | 数据传输控制和采样频率转换器 | |
CN113778940A (zh) | 基于fpga的高精度可重构相位调整ip核 | |
CN100550622C (zh) | 带有下采样功能的数字信号滤波装置及方法 | |
CN1158515A (zh) | 具有比特移位单元的数字滤波器 | |
CN1717653A (zh) | 带有查询表的乘法器 | |
Benkrid et al. | Novel area-efficient FPGA architectures for FIR filtering with symmetric signal extension | |
CN1442986A (zh) | I/q解调器及其i/q信号抽样方法 | |
CN100342643C (zh) | 二维锥形滤波器 | |
CN1688104A (zh) | 数字信号处理方法及装置 | |
CN1787368A (zh) | 有限脉冲响应滤波与欠采样相结合的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20090617 Termination date: 20200320 |
|
CF01 | Termination of patent right due to non-payment of annual fee |