CN109412556A - 一种基于fpga的多路并行数据fir滤波实现方法 - Google Patents
一种基于fpga的多路并行数据fir滤波实现方法 Download PDFInfo
- Publication number
- CN109412556A CN109412556A CN201811252556.4A CN201811252556A CN109412556A CN 109412556 A CN109412556 A CN 109412556A CN 201811252556 A CN201811252556 A CN 201811252556A CN 109412556 A CN109412556 A CN 109412556A
- Authority
- CN
- China
- Prior art keywords
- din
- buffer
- data
- delay
- fir
- 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.)
- Withdrawn
Links
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03H—IMPEDANCE NETWORKS, e.g. RESONANT CIRCUITS; RESONATORS
- H03H17/00—Networks using digital techniques
- H03H17/02—Frequency selective networks
- H03H17/06—Non-recursive filters
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03H—IMPEDANCE NETWORKS, e.g. RESONANT CIRCUITS; RESONATORS
- H03H17/00—Networks using digital techniques
- H03H2017/0072—Theoretical filter design
- H03H2017/0081—Theoretical filter design of FIR filters
Landscapes
- Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Filters That Use Time-Delay Elements (AREA)
Abstract
本发明公开了一种基于FPGA的多路并行数据FIR滤波实现方法。该方法有如下步骤:1、将多路并行数据进行移位存储;2、将移位存储数据进行延迟打拍;3、将延迟打拍数据与FIR相应系数进行并行乘加运算;运算结果即为滤波后数据。该方法在FPGA内部实现了并行FIR阵列,以同时处理多路并行的数据。当采样信号带宽很大,采样率很高,FPGA必须在一个时钟周期接收多个采样点时,要对接收的数据实时进行FIR滤波处理,采用本发明提供的方法可很好的实现功能与性能要求。在大宽带数字信号处理、高速数字通信领域有广泛的应用价值。
Description
技术领域
本发明涉及数字通信、数字信号处理系统中的FIR滤波器,尤其涉及一种基于FPGA的多路并行数据FIR滤波实现方法。
背景技术
FIR滤波器又称有限长单位脉冲响应滤波器,是数字信号处理系统中最基本的单元。它可以在保证任意幅频特性的同时具有严格的线性相频特性,同时其单位脉冲响应是有限长的,因而由它组成的系统是稳定的。这些特性都使FIR滤波器在通信、图像处理、模式识别等领域有着广泛的应用。此外,FPGA有着规整的内部逻辑阵列、专用硬核乘法器和丰富的连线资源,且相对于串行运算为主的通用DSP芯片来说,其并行性和可扩展性更好,这都使FPGA特别适合于数字信号处理任务,从而设计出高速的FIR数字滤波器。传统的FIR滤波器往往针对采样率较低的情形,此时FPGA一个时钟周期收到一个数据点。当采样率很高,处理大带宽的信号时,通常的情形是FPGA一个时钟周期会收到多个数据点,此时需在FPGA内部设计并行的FIR滤波器阵列,以处理收到的多路并行数据。
发明内容
鉴于现在技术存在的问题,本发明提供一种基于FPGA的多路并行数据FIR滤波实现方法。本发明的目的就是要解决上述技术中存在的问题,采用FPGA来完成大带宽信号的多路并行数据FIR滤波。本方法在FPGA内部实现了并行FIR阵列,以同时处理多路并行的数据。当采样信号带宽很大,采样率很高,FPGA必须在一个时钟周期接收多个采样点时,通过本方法可对接收的数据实时进行FIR滤波处理。
本发明采取的技术方案是:一种基于FPGA的多路并行数据FIR滤波实现方法,其特征在于,有如下步骤:
一、将多路并行数据进行移位存储
将同时收到的多路数据D0,D1,...,Dn看作一个整体,并按D0存在din_buffer[n]中,D1存在din_buffer[n-1]中,...,Dn存在din_buffer[0]中的顺序进行缓存;同时,将din_buffer以并行数据数进行间隔移位,即din_buffer[0]移位到din_buffer[n+1],din_buffer[1]移位到din_buffer[n+2],...,din_buffer[n]移位到din_buffer[2n+1]。
二、将移位存储数据进行延迟打拍
将步骤一中的din_buffer作为一个整体进行延迟打拍,从而得到延迟打拍后的din_buffer_d0,din_buffer_d1,...,din_buffer_dm-1,m表示将din_buffer延迟打m拍。
三、将延迟打拍数据与FIR相应系数进行并行乘加运算
从步骤二的各din_buffer_d中取出与滤波器系数对应的数据做乘加运算,即用FIR阵列对并行数据进行滤波处理;FIR滤波数学计算公式为:y(n)=h(0)x(n)+h(1)x(n-1)+……+h(m)x(n-m),其中x(n)为数据采样点,h(m)为滤波器系数,y(n)为计算得到的滤波后数据。
本发明所产生的有益效果是:丰富了传统FIR滤波器可处理的信号带宽范围,当采样信号带宽很大,采样率很高时,可采用本方法处理大带宽信号的滤波问题。采用本发明提供的方法可很好的实现功能与性能要求。在大宽带数字信号处理、高速数字通信领域有广泛的应用价值。
附图说明
图1为传统FIR滤波器结构示意图;
图2为din_buffer的数据存储与移位示意图;
图3为din_buffer_d的数据延迟打拍示意图;
图4为FIR滤波器阵列示意图。
具体实施方式
以下结合附图对本发明做进一步说明:
基于FPGA的多路并行数据是来自同一信号的采样点数据。前端AD对信号进行采样,时刻1采样数据点1,时刻2采样数据点2,......,时刻N采样数据点N,如果采样率比较低,FPGA便能以较低时钟频率依次接收这些采样点数据;而当采样率很高时,FPGA不能以很高的时钟频率接收这些数据,只能一个时钟周期同时接收N个采样点,此即多路并行数据的含义。
本方法采用的FPGA芯片型号为Xilinx公司的XCKU040-FFVA1156-2-E。
图1示意了FIR滤波器的一般性结构图,是如下数学公式的直观显示。各个采样点数据与对应系数作乘加运算,从而达到滤波效果。滤波器系数决定了FIR滤波器特性。数学公式为,y(n)=h(0)x(n)+h(1)x(n-1)+……+h(m)x(n-m),其中x(n)为数据采样点,h(m)为滤波器系数,y(n)为计算得到的滤波后数据。
当采样信号带宽很大,需要很高的采样率时,FPGA必须在一个时钟周期接收多个采样点,此时FPGA内部逻辑需要并行的FIR滤波阵列来处理采样数据。
图2至图4分别对应本方法的步骤一至步骤三。方便起见,以下按一个时钟周期接收4个采样点数据,FIR滤波器系数个数为4,对本发明进行阐述。但本发明并不对并行接收采样点个数以及FIR滤波器系数个数作限制,且并行接收采样点个数与系数个数之间也没有必然联系,完全取决于采样率与滤波器性能要求。
首先,接收的4路并行数据按图2方式进行存储与移位,初始时din_buffer(数据缓存寄存器)清零。每个时钟周期din_buffer更新一次,其存储移位的伪代码为,din_buffer[7:0] <= {din_buffer[3:0],D4n,D4n+1,D4n+2,D4n+3},n=0,1,2,...,n值对应不同的周期。
其次,将din_buffer延迟打拍,如图3示意了在din_buffer内的数据为{D8,D9,D10,D11,D12,D13,D14,D15}时延迟打4拍的情形,得到din_buffer_d0,din_buffer_d1,din_buffer_d2,din_buffer_d3。相应操作的伪代码为,din_buffer_d0 <= din_buffer;,din_buffer_d1 <= din_buffer_d0,din_buffer_d2 <= din_buffer_d1,din_buffer_d3 <= din_buffer_d2。其中d是delay的缩写,表示数据延迟,dm-1表示延迟m拍。
最后,将din_buffer_d中的数据取出,并与对应滤波器系数按图4的方式作乘加运算。下面结合图2至图4对这一过程进行说明。
时钟周期3,FPGA同时收到4路数据{D12,D13,D14,D15},并按图2方式存入din_buffer中,同时din_buffer进行移位操作,得到din_buffer的数据为{D8,D9,D10,D11,D12,D13,D14,D15}。
然后将din_buffer延迟打拍,得到时钟周期4的din_buffer_d0,时钟周期5的din_buffer_d1,时钟周期6的din_buffer_d2,时钟周期7的din_buffer_d3,如图3中所示。
图4中有4个并行处理的FIR滤波器,对FPGA同时收到的4个样点数据{D12,D13,D14,D15}进行并行运算,进而得到4个运算结果,即4个滤波后数据{y12,y13,y14,y15}。由于FPGA内部逻辑是流水线处理的,随着每个时钟周期收到4个采样数据,经过几个周期的延迟便流水的得到相应的滤波结果,此即基于FPGA的多路并行数据FIR滤波实现方法。
以下对本方法再进一步举例详细说明:
一、将多路并行数据进行移位存储
将同时收到的多路数据D0,D1,...,Dn看作一个整体,并按D0存在din_buffer[n]中,D1存在din_buffer[n-1]中,...,Dn存在din_buffer[0]中的顺序进行缓存;同时,将din_buffer以并行数据数进行间隔移位,即din_buffer[0]移位到din_buffer[n+1],din_buffer[1]移位到din_buffer[n+2],...,din_buffer[n]移位到din_buffer[2n+1]。举例说明为:假设din_buffer深度为8,初始时din_buffer[0]-din_buffer[7]值为0,FPGA一个时钟周期收到4个并行数据。时钟周期0收到D0,D1,D2,D3,按上述移位存储得到din_buffer为{0,0,0,0,D0,D1,D2,D3};时钟周期1收到D4,D5,D6,D7,按上述移位存储得到din_buffer为{D0,D1,D2,D3,D4,D5,D6,D7};时钟周期2收到D8,D9,D10,D11,按上述移位存储得到din_buffer为{D4,D5,D6,D7,D8,D9,D10,D11};时钟周期3收到D12,D13,D14,D15,按上述移位存储得到din_buffer为{D8,D9,D10,D11,D12,D13,D14,D15}。
二、将移位存储数据进行延迟打拍
将步骤一中的din_buffer作为一个整体进行延迟打拍,从而得到延迟打拍后的din_buffer_d0,din_buffer_d1,...,din_buffer_dm-1,m表示将din_buffer延迟打m拍。举例说明为:时钟周期3时din_buffer为{D8,D9,D10,D11,D12,D13,D14,D15},时钟周期4得到打1拍的din_buffer_d0亦为{D8,D9,D10,D11,D12,D13,D14,D15},时钟周期5得到打2拍的din_buffer_d1亦为{D8,D9,D10,D11,D12,D13,D14,D15},时钟周期6得到打3拍的din_buffer_d2亦为{D8,D9,D10,D11,D12,D13,D14,D15},时钟周期7得到打4拍的din_buffer_d3亦为{D8,D9,D10,D11,D12,D13,D14,D15}。
三、将延迟打拍数据与FIR相应系数进行并行乘加运算
从步骤二的各din_buffer_d中取出与滤波器系数对应的数据做乘加运算,即用FIR阵列对并行数据进行滤波处理;FIR滤波数学计算公式为:y(n)=h(0)x(n)+h(1)x(n-1)+……+h(m)x(n-m),其中x(n)为数据采样点,h(m)为滤波器系数,y(n)为计算得到的滤波后数据。举例说明为:假设滤波器系数个数为4,时钟周期3亦同时收到4个数据D12,D13,D14,D15,经过FIR阵列运算后相应的得到4个滤波结果y12,y13,y14,y15。过程为,取出时钟周期4的din_buffer_d0[3]=D12与滤波器系数h(0)相乘,得到中间结果为D12*h(0);取出时钟周期5的din_buffer_d1[4]=D11与滤波器系数h(1)相乘再与之前中间结果D12*h(0)相加,得到D12*h(0)+D11*h(1);取出时钟周期6的din_buffer_d2[5]=D10与滤波器系数h(2)相乘再与之前中间结果D12*h(0)+D11*h(1)相加,得到D12*h(0)+D11*h(1)+D10*h(2);取出时钟周期7的din_buffer_d3[6]=D9与滤波器系数h(3)相乘再与之前中间结果D12*h(0)+D11*h(1)+D10*h(2)相加,得到D12*h(0)+D11*h(1)+D10*h(2)+D9*h(3)。经过这样的运算后便得到一路的滤波结果y12=D12*h(0)+D11*h(1)+D10*h(2)+D9*h(3)。由于FPGA的并行处理特性,按上述过程,同时从相应din_buffer_d中取出数据并与滤波器系数做乘加运算,便并行的得到其余路的滤波结果:
y13=D13*h(0)+D12*h(1)+D11*h(2)+D10*h(3) y14=D14*h(0)+D13*h(1)+D12*h(2)+D11*h(3) y15=D15*h(0)+D14*h(1)+D13*h(2)+ D12*h(3)。
Claims (2)
1. 一种基于FPGA的多路并行数据FIR滤波实现方法,其特征在于,有如下步骤:
一、将多路并行数据进行移位存储
将同时收到的多路数据D0,D1,...,Dn看作一个整体,并按D0存在din_buffer[n]中,D1存在din_buffer[n-1]中,...,Dn存在din_buffer[0]中的顺序进行缓存;同时,将din_buffer以并行数据数进行间隔移位,即din_buffer[0]移位到din_buffer[n+1],din_buffer[1]移位到din_buffer[n+2],...,din_buffer[n]移位到din_buffer[2n+1];
二、将移位存储数据进行延迟打拍
将步骤一中的din_buffer作为一个整体进行延迟打拍,从而得到延迟打拍后的din_buffer_d0,din_buffer_d1,...,din_buffer_dm-1,m表示将din_buffer延迟打m拍;
三、将延迟打拍数据与FIR相应系数进行并行乘加运算
从步骤二的各din_buffer_d中取出与滤波器系数对应的数据做乘加运算,即用FIR阵列对并行数据进行滤波处理;FIR滤波数学计算公式为:y(n)=h(0)x(n)+h(1)x(n-1)+……+h(m)x(n-m),其中x(n)为数据采样点,h(m)为滤波器系数,y(n)为计算得到的滤波后数据。
2.根据权利要求1所述的一种基于FPGA的多路并行数据FIR滤波实现方法,其特征在于,采用的FPGA芯片型号为Xilinx公司的XCKU040-FFVA1156-2-E。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811252556.4A CN109412556A (zh) | 2018-10-25 | 2018-10-25 | 一种基于fpga的多路并行数据fir滤波实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811252556.4A CN109412556A (zh) | 2018-10-25 | 2018-10-25 | 一种基于fpga的多路并行数据fir滤波实现方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109412556A true CN109412556A (zh) | 2019-03-01 |
Family
ID=65469687
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811252556.4A Withdrawn CN109412556A (zh) | 2018-10-25 | 2018-10-25 | 一种基于fpga的多路并行数据fir滤波实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109412556A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114063926A (zh) * | 2021-11-22 | 2022-02-18 | 上海创远仪器技术股份有限公司 | 基于fpga硬件实现数据间插值处理的方法、装置、处理器及其计算机可读存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102983839A (zh) * | 2012-12-05 | 2013-03-20 | 天津光电通信技术有限公司 | 一种基于fpga实现gmsk信号发生器的方法 |
CN203617974U (zh) * | 2013-10-21 | 2014-05-28 | 京微雅格(北京)科技有限公司 | 一种基于fpga的可配置系数的滤波器及电子设备 |
CN105227158A (zh) * | 2015-11-13 | 2016-01-06 | 中国空气动力研究与发展中心低速空气动力研究所 | 一种高精度信号实时滤波器 |
CN106803750A (zh) * | 2017-01-12 | 2017-06-06 | 中国电子科技集团公司第十四研究所 | 一种多通道流水fir滤波器 |
-
2018
- 2018-10-25 CN CN201811252556.4A patent/CN109412556A/zh not_active Withdrawn
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102983839A (zh) * | 2012-12-05 | 2013-03-20 | 天津光电通信技术有限公司 | 一种基于fpga实现gmsk信号发生器的方法 |
CN203617974U (zh) * | 2013-10-21 | 2014-05-28 | 京微雅格(北京)科技有限公司 | 一种基于fpga的可配置系数的滤波器及电子设备 |
CN105227158A (zh) * | 2015-11-13 | 2016-01-06 | 中国空气动力研究与发展中心低速空气动力研究所 | 一种高精度信号实时滤波器 |
CN106803750A (zh) * | 2017-01-12 | 2017-06-06 | 中国电子科技集团公司第十四研究所 | 一种多通道流水fir滤波器 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114063926A (zh) * | 2021-11-22 | 2022-02-18 | 上海创远仪器技术股份有限公司 | 基于fpga硬件实现数据间插值处理的方法、装置、处理器及其计算机可读存储介质 |
CN114063926B (zh) * | 2021-11-22 | 2024-03-15 | 上海创远仪器技术股份有限公司 | 基于fpga硬件实现数据间插值处理的方法、装置、处理器及其计算机可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111694027B (zh) | 超大动态扩频信号捕获方法与装置 | |
WO2018188228A1 (zh) | 高精度频率测量系统及方法 | |
CN107196881B (zh) | 一种高动态脉冲成形信号模拟方法和装置 | |
CN104201991B (zh) | 实现捷变频米波雷达的数字下变频系统 | |
CN105911351B (zh) | 基于dsp的实时zfft方法 | |
CN111600821B (zh) | 一种基于分数傅里叶变换域的线性调频信号稀疏采样与重建方法 | |
CN101126772A (zh) | 一种示波器的高速信号重构方法 | |
CN208190613U (zh) | 一种基于fpga实现的分数阶积分器 | |
CN109412556A (zh) | 一种基于fpga的多路并行数据fir滤波实现方法 | |
CN108918965A (zh) | 多通道信号相位、幅度高精度测量方法 | |
CN110784229B (zh) | 一种基于快速傅里叶变换的带有模拟滤波器补偿的mwc后端信号重构方法 | |
CN106603036A (zh) | 一种基于低阶内插滤波器的自适应时延估计方法 | |
CN101919706B (zh) | 抽取滤波的方法及装置 | |
US20070067377A1 (en) | Methods, devices, and programs for designing a digital filter and for generating a numerical sequence of desired frequency characteristics | |
CN108696468B (zh) | 一种基于欠采样的二相编码信号的参数估计方法 | |
WO2022253214A1 (zh) | 量子态信息处理系统、量子测控系统、量子计算机 | |
CN109951173A (zh) | 一种多路并行输入并行处理的fir滤波方法及滤波器 | |
CN108616265A (zh) | 一种基于五模余数基的rns dwt滤波器组的电路结构 | |
CN116111982A (zh) | 一种基于fpga的iir滤波方法、存储介质及装置 | |
WO2003047097A1 (fr) | Procede de conception d'un filtre numerique, appareil de projet, programme de projet pour la realisation d'un tel filtre, et filtre numerique y relatif | |
CN107786476A (zh) | 一种滤波器、时域均衡器以及接收机 | |
CN104579238B (zh) | 应用于全数字接收机的基于Schur算法的插值滤波器 | |
CN110808935B (zh) | 线性调频信号自相关运算的精确高效实现方法及装置 | |
CN105656451B (zh) | 一种基于频域处理的扩频信号匹配滤波系统及方法 | |
CN106160701A (zh) | 多通道数据采集系统、陷波器以及陷波器的设计方法 |
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 | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20190301 |
|
WW01 | Invention patent application withdrawn after publication |