基于FPGA的多路高速滤波器实现方法技术

技术编号:19485895 阅读:35 留言:0更新日期:2018-11-17 11:22
本发明专利技术特别涉及一种基于FPGA的多路高速滤波器实现方法,包括如下步骤:(A)将输入信号s(n)串并转换为M路信号s0,s1,…,sM‑1;(B)将串并转换后的M路信号分为M份,每一份有M路信号;(C)将所有M份M

【技术实现步骤摘要】
基于FPGA的多路高速滤波器实现方法
本专利技术涉及数字信号处理
,特别涉及一种基于FPGA的多路高速滤波器实现方法。
技术介绍
FIR(FiniteImpulseResponse)滤波器即有限长单位冲激响应滤波器,又称为非递归型滤波器,是数字信号处理系统中最基本的元件,它可以在保证任意幅频特性的同时具有严格的线性相频特性,同时其单位抽样响应是有限长的,因而滤波器是稳定的系统。FIR滤波器在通信、图像处理、模式识别等领域都有着广泛的应用。随着技术的发展,芯片采样率越来越高,一般都上GHz,而FPGA的系数时钟速率相对比较低,一般都不会超过400MHz。当信号采样率远大于FPGA运行时钟频率时,由于芯片限制无法再采用传统的方式对输入信号进行单路滤波。因此,要在FPGA中实现运算速率较高的FIR滤波器,只能采用并行结构以降低FPGA的工作频率。
技术实现思路
本专利技术的目的在于提供一种基于FPGA的多路高速滤波器实现方法,能够实现高采样率下的实时滤波。为实现以上目的,本专利技术采用的技术方案为:一种基于FPGA的多路高速滤波器实现方法,包括如下步骤:(A)将输入信号s(n)串并转换为M路信号s0,s1,…,sM-1,其中M=fS-ADC/fS-FPGA,fS-ADC为输入信号采样率,fS-FPGA为FPGA的工作频率;(B)将串并转换后的M路信号分为M份,每一份有M路信号:第1份M路信号,为原始M路信号的复制,顺序为s0/s1/…/sM-1;第2份M路信号,将信号s0延时并与s1/…/sM-1交换位置,顺序为……;第M份M路信号,将信号s0/s1/…/sM-2延时并与sM-1交换位置,顺序为其中,指对第m路信号进行延时;(C)将所有M份M2路信号延时P个单元并将延时数据输出,其中P=N/M,N为滤波器系数个数;(D)每一份M路信号,将抽出的延时数据与对应的滤波器系数相乘并累加;(E)将M份共M个结果数据按顺序输出即可获得当前时刻的输出信号。与现有技术相比,本专利技术存在以下技术效果:这里通过ADC芯片的高采样率和FPGA的低运算时钟之间的关系将一个串行FIR滤波器设计为多路进行,将前级输入的M路信号划分为具有均匀采样延时的M个部分,通过对每一部分进行乘累加操作后输出,然后将M个部分的M路输出合并就可以获得多路高速滤波器的输出,这种方式下输入与输出均可实现实时的连续性,非常方便。附图说明图1是直接性FIR滤波器结构图;图2是转置型FIR滤波器结构图;图3是FPGA中高速信号多路输入方式示意图;图4a-4d为多路并行滤波、输出示意图;图5a-5d分别是图4a-4d在FPGA中的数据流程图。具体实施方式下面结合图1至图5,对本专利技术做进一步详细叙述。一种基于FPGA的多路高速滤波器实现方法,包括如下步骤:(A)将输入信号s(n)串并转换为M路信号s0,s1,…,sM-1,其中M=fS-ADC/fS-FPGA,fS-ADC为输入信号采样率,fS-FPGA为FPGA的工作频率;(B)将串并转换后的M路信号分为M份,每一份有M路信号:第1份M路信号,为原始M路信号的复制,顺序为s0/s1/…/sM-1;第2份M路信号,将信号s0延时并与s1/…/sM-1交换位置,顺序为……第M份M路信号,将信号s0/s1/…/sM-2延时并与sM-1交换位置,顺序为其中,指对第m路信号进行延时;(C)将所有M份M2路信号延时P个单元并将延时数据输出,其中P=N/M,N为滤波器系数个数;(D)每一份M路信号,将抽出的延时数据与对应的滤波器系数相乘并累加;(E)将M份共M个结果数据按顺序输出即可获得当前时刻的输出信号。这里通过ADC芯片的高采样率和FPGA的低运算时钟之间的关系将一个串行FIR滤波器设计为多路进行,将前级输入的M路信号划分为具有均匀采样延时的M个部分,通过对每一部分进行乘累加操作后输出,然后将M个部分的M路输出合并就可以获得多路高速滤波器的输出,这种方式下输入与输出均可实现实时的连续性,非常方便。优选地,所述的步骤C中,若滤波器系数个数N不满足M的整数倍时,将滤波器系数通过补0实现滤波器系数个数为M的整数倍。步骤C中,P的取值为正整数,而M是固定的,因此滤波器系数个数N不一定正好满足公式P=N/M,此时就需要通过补0的方式,来保证P的取值为正整数。具体地,下面以四路信号为例来详细的阐述下实现方法:所述的输入信号采样率fS-ADC=1GHz,FPGA的工作频率fS-FPGA=250MHz,滤波器系数个数为8,步骤A-E变为:(A1)将输入信号s(n)串并转换为4路信号s0,s1,s2,s3;(B1)将串并转换后的4路信号分为4份,每一份有4路信号:第1份4路信号,为原始4路信号的复制,顺序为s0/s1/s2/s3;第2份4路信号,将信号s0延时并与s1/s2/s3交换位置,顺序为第3分4路信号,将信号s0/s1延时并与s2/s3交换位置,顺序为第4份4路信号,将信号s0/s1/s2延时并与s3交换位置,顺序为其中,指对第m路信号进行延时;(C1)将所有4份16路信号延时2个单元并将延时数据输出;(D1)每一份4路信号,将抽出的延时数据与对应的滤波器系数相乘并累加;(E)将4份共4个结果数据按顺序输出即可获得当前时刻的输出信号。这里的滤波器系数个数正好为8个,如果为7个,就需要进行补0。下面从原理上进行详细阐述,以解释上述步骤实现的理由。假设原始序列为s(n),冲击响应序列为h(n),则滤波器结果为s(n)与h(n)的卷积,即:由于h(n)为有限长冲击响应,且长度为N即:h(m)=0;当m<0或者m>N-1时因此:FIR滤波器的核心运算是卷积,图1所示的为直接型FIR滤波器结构图,图2为转置型FIR滤波器的结构。两种滤波器结构都是利用串行结构来实现的,串行结构的滤波器,其数据吞吐量受FPGA时钟的限制,无法做到太高,不利于滤波器的高速数字信号处理实现。本专利技术是在图2转置型FIR滤波器的结构的基础上进行滤波器的并行设计,以满足高速运算的需求。以1G采样率信号输入,FPGA运算时钟(即FPGA的工作频率)为250M为例,很显然,输入的1G信号经过串并转换变为4路250M输入。数据按交叉排列的方式进行流水输入,如图3所示。假设原始输入的信号由s(n)表示,n=0,1,2,…,经过串并转换为4路后的信号分别为:s(4*k)、s(4*k+1)、s(4*k+2)、s(4*k+3),k=0,1,2……可以将滤波器表达:利用m=N-1-m,则替换后的m取值范围仍然为0到N-1由于r[n+(N-1)]和r[n]只存在一个固定的延时关系,因此为简化起见采用r(n)代替r[n+(N-1)],另外,将上述表达式分为4路交叉形式,见如下表达式:上式中,k=0,1,2,…。假设N=4*P,N为原型滤波器的系数个数,若不为4的整数倍可以通过补零的方式使得N为4的整数倍。因此m取值范围为{4p+0,4p+1,4p+2,4p+3},其中p=0,1…P-1。将上述表达式分解如下所示:其中,r(4k+0)、r(4k+1)、r(4k+2)、r(4k+3)为一次4路并行滤波后的输出值。为了便于描述,这里不妨假设N=8,因此每次需要8个乘积本文档来自技高网...

【技术保护点】
1.一种基于FPGA的多路高速滤波器实现方法,包括如下步骤:(A)将输入信号s(n)串并转换为M路信号s0,s1,…,sM‑1,其中M=fS‑ADC/fS‑FPGA,fS‑ADC为输入信号采样率,fS‑FPGA为FPGA的工作频率;(B)将串并转换后的M路信号分为M份,每一份有M路信号:第1份M路信号,为原始M路信号的复制,顺序为s0/s1/…/sM‑1;第2份M路信号,将信号s0延时并与s1/…/sM‑1交换位置,顺序为

【技术特征摘要】
1.一种基于FPGA的多路高速滤波器实现方法,包括如下步骤:(A)将输入信号s(n)串并转换为M路信号s0,s1,…,sM-1,其中M=fS-ADC/fS-FPGA,fS-ADC为输入信号采样率,fS-FPGA为FPGA的工作频率;(B)将串并转换后的M路信号分为M份,每一份有M路信号:第1份M路信号,为原始M路信号的复制,顺序为s0/s1/…/sM-1;第2份M路信号,将信号s0延时并与s1/…/sM-1交换位置,顺序为……第M份M路信号,将信号s0/s1/…/sM-2延时并与sM-1交换位置,顺序为其中,指对第m路信号进行延时;(C)将所有M份M2路信号延时P个单元并将延时数据输出,其中P=N/M,N为滤波器系数个数;(D)每一份M路信号,将抽出的延时数据与对应的滤波器系数相乘并累加;(E)将M份共M个结果数据按顺序输出即可获得当前时刻的输出信号。2.如权利要求1所述的基于FPGA的多路高速滤波器实现方法,其特征在于:所述的步骤C中,若滤波器系数个数N不满足M...

【专利技术属性】
技术研发人员:庞豪杨金金赵蓓
申请(专利权)人:成都玖锦科技有限公司
类型:发明
国别省市:四川,51

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1