一种基于FPGA的多通道数字滤波器
技术领域
本发明涉及滤波器,尤其涉及的是一种基于FPGA的多通道数字滤波器。
背景技术
诸如电力、图像处理、雷达、气象领域中很多电子系统需要将多路信号进行滤波处理,这些信号的滤波往往计算量大、速度要求高、延时要小。随着数字滤波系统对宽带、高速、实时信号处理要求越来越高,对滤波器的处理速度、带宽等性能要求也随之提高。以前多用数字处理器DSP芯片编程实现,它们主要的数学运算单元是乘累加器(MAC)。MAC能在一个机器时钟周期内完成一次乘累加运算,同时硬件上配备不同等级的流水结构和哈佛结构,能够实现高速实时的数字信号处理。但由于其一个时钟周期只能进行一个计算,因此所有的计算均是串行处理,对于单路的信号处理尚可以接受,对于多路的信号处理,势必带来很长时间的延时,很容易就超过了系统的采样周期,使系统设计无法实现。所以必须寻找一种新型的技术或器件能够实现并行运算,也就是说在一个芯片中可以实现多个类似DSP芯片的功能单元,而FPGA用作数字信号处理的运算,其中的乘累加运算可以实现大多数数字信号处理算法,而强大的并行处理能力,则能够大大提高乘累加运算的效能。FPGA具有灵活的可编程逻辑,突破了并行处理与水平级数的限制,可以很好的实现信号处理的实时性。同时,开发程序的可移植性好,可以缩短开发周期;由于软件是烧至内部逻辑单元,所以不易破解,保密性强;但即便FPGA可以实现并行计算,一个芯片中可以实现多个相同的功能单元,但如果在多路数据处理时,每一路均单独使用一路处理单元,往往一块芯片仅能实现很有限的几路信号,基于这种情况,必须得使用“时间换空间”的设计策略,使其既能够实现快速处理,又能在同一块芯片上实现多路的计算。
发明内容
本发明的目的在于克服现有技术的不足,提供了一种基于FPGA的多通道数字滤波器,利用FPGA内部资源,实现低通滤波器内核,再通过多通道封装技术将内核打包成具有多通道滤波功能的滤波器。
本发明是通过以下技术方案实现的:一种基于FPGA的多通道数字滤波器,LP_Filter内核与外部多路数据通道、分频计数器、开关计数器和上升沿检测器封装,每个数据通道内设周期为1000的时间阀片,外部的数字输入信号在通道内传输经两级FIFO寄存器处理,经一级FIFO寄存器处理为一步时延输入信号,经两级FIFO寄存器处理为两步时延输入信号,该数字输入信号、一步时延输入信号、两步时延输入信号均通过三态开关接入低通滤波器LP_Filter内核;当分频计数器的复位输入端收到上升沿有效的外部输入提示信号ND或计数满1000的上升沿信号时,将计数值复位至0,从新计数;该开关计数器对分频计数器的输出进行计数,且根据该开关计数器的输出驱动通道的切换;该上升沿检测器接受开关计数器的信号,判断是否产生一个上升沿电平,并通知下级功能模块读取数据。
作为上述方案的进一步优化,低通滤波器LP_Filter内核中集成第一加法器、第二加法器、第三加法器、第四加法器、第五加法器,第一乘法器、第二乘法器、第三乘法器、第一移位寄存器和第二移位寄存器,数字输入信号xn经低通滤波器LP_Filter内核处理后输出数字输出信号yn,其信号处理步骤如下:
1)、数字输入信号xn和两步时延输入信号xn-2经第一加法器合成为33位宽度的数字信号x02;
2)、两个一步时延输入信号xn-1经第二加法器合成为33位宽度的数字信号x11;
3)、数字信号x02和x11经第三加法器合成为34位宽度的数字信号x012;
4)、数字信号x012经第一乘法器与滤波系数CX0合成为69位宽度的数字信号x69;
5)数字信号x69经第一移位寄存器截断处理为32位宽度的数字信号x32;
6)两步时延输出信号yn-2和滤波系数Cy2经第三乘法器合成为67位宽度的数字信号y21;
7)一步时延输出信号yn-1和滤波系数Cy1经第二乘法器合成为67位宽度的数字信号y11;
8)数字信号y21和y11经第四加法器合成为68位宽度的数字信号y68;
9)数字信号y68经第二移位寄存器截断处理为32位宽度的数字信号y32;
10)经截断处理的数字信号y32和x32经第五加法器合成为32位宽度的数字输出信号yn。
本发明的一种基于FPGA的多通道数字滤波器,为了实现多个通道的数据共用一个滤波器内核,将多个通道的输入数据与输出结果用多路开关的方式接入至上述的低通滤波内核中,并给出一段固定的延时。延时用计数器实现,延时计数器将时钟CLK信号作为计数源信号,当外部给出新的采样数据时,通过ND信号通知计数器开始计数,当计数值达到1000时就将输出信号给出10us的上升沿信号,以驱动下一级的多路开关驱动信号;多路开关驱动信号也是一个计数器,其计数信号源为上一级计数器的输出,每当输入信号有上升沿跳变时便将输出信号做加1操作,如果输出达到2时就复位至0,其输出去驱动输入输出口线上的多路开关,以使各个信号在多组数据通道间转换。因为数字滤波器的计算过程需要用到过去几个采样点的数据,所以必须将过去几个点的数据进行存储并在下次计算时应用,此处应用了2级的FIFO(先入先出寄存器),每当新的数据打入后,先前的数据就移出,以此来实现旧数据的存储与移动。当所有多组滤波数据均计算完毕后就给出RDY信号,通知外部其它单元数据已经计算完毕,可以读取数据,进行下一步的应用或计算。
本发明相比现有技术具有以下优点:本案中设计的一种基于FPGA的多通道数字滤波器采用这种独特的设计思路,将滤波功能设计为一个固定的核,而不同路的信号通过不同的时间阀片来轮询使用这个核,通过分频计数器、开关技术器实现多路信号对滤波核的共用,在时间与空间均满足要求的情况下实现设计思路。而由于滤波器的系数以及输入量很可能是些比较小的小数值,为了保持计算过程中的精度不丢失,对低通滤波器LP_Filter内核的数据先放大计算后再缩小的处理方式。
附图说明
图1是本发明的一种基于FPGA的多通道数字滤波器的结构原理图。
图2为图1中的低通滤波器LP_Filter内核的数据处理方法原理图。
具体实施方式
下面对本发明的实施例作详细说明,本实施例在以本发明技术方案为前提下进行实施,给出了详细的实施方式和具体的操作过程,但本发明的保护范围不限于下述的实施例。
参见图1和图2,为三路通道的优选实施例的一种基于FPGA的多通道数字滤波器,低通滤波器LP_Filter内核与外部三路数据通道、分频计数器Tcounter、开关计数器Scounter和上升沿检测器LPF_OK封装,每个数据通道内设周期为1000的时间阀片。
外部的数字输入信号X_a、X_b、X_c输入为数字输入信为xa、xb、xc,经两级FIFO寄存器处理,经一级FIFO寄存器处理为一步时延输入信号xa1、xb1、xc1,经两级FIFO寄存器处理为两步时延输入信号xa2、xb2、xc2,该数字输入信号、一步时延输入信号、两步时延输入信号均通过三态开关接入低通滤波器LP_Filter内核。数字输入信号为xa、xb、xc通过三态开关S3接至内核的数字输入信号xn0。一步时延输入信号xa1、xb1、xc1通过三态开关S3接至内核的一步时延数字输入信号xn1;两步时延输入信号xa2、xb2、xc2通过三态开关S3接至内核的两步时延输入信号xn2。
分频计数器Tcounter对时钟CLK信号进行计数,其RESET信号由外部输入提示信号ND与自身的输出O相或后产生,当分频计数器Tcounter的复位输入端收到上升沿有效的外部输入提示信号ND或计数满1000的上升沿信号时,将计数值复位至0,从新计数。
该开关计数器Scounter对分频计数器Tcounter的输出进行计数,输出为0、1、或2,且根据该开关计数器的输出驱动通道的切换。当外部输入提示信号ND提示有新的数据接入,开关计数器Scounter输出复位为0,以使滤波数据通道从a通道,然后b通道,然后c通道。即:
当b(0:1)=b00时,则接a通道;
当b(0:1)=b01时,则接b通道;
当b(0:1)=b10时,则接c通道。
通过以上的数据通道及其驱动方式,则将a、b、c三个通道的数据各自通过1000个时钟周期的时间,滤波后经由各自通道输出。
上升沿检测器LPF_OK接受开关计数器的信号,判断是否产生一个上升沿电平,并通知下级功能模块读取数据。当上升沿检测器LPF_OK模块接收来自开关计数器Scounter的b(0:1),当b(0:1)=b10时,输出10uS宽度的上升沿电平,用来通知下级功能模块读取数据。
参见图2,低通滤波器LP_Filter内核中集成第一加法器、第二加法器、第三加法器、第四加法器、第五加法器,第一乘法器、第二乘法器、第三乘法器、第一移位寄存器和第二移位寄存器,低通滤波器LP_Filter内核数据处理的实质为:将多个信号输入值和以前的多个输出值与固定的系数相乘后进行迭加,用FPGA里的乘法单元以及加法单元来实现,而为了保持计算过程中的小数精度不丢失,对数据先放大计算后再缩小。数字输入信号xn经低通滤波器LP_Filter内核处理后输出数字输出信号yn,其信号处理步骤如下:
1)、数字输入信号xn和两步时延输入信号xn-2经第一加法器合成为33位宽度的数字信号x02;
2)、两个一步时延输入信号xn-1经第二加法器合成为33位宽度的数字信号x11;
3)、数字信号x02和x11经第三加法器合成为34位宽度的数字信号x012;
4)、数字信号x012经第一乘法器与滤波系数CX0合成为69位宽度的数字信号x69;
5)数字信号x69经第一移位寄存器截断处理为32位宽度的数字信号x32;
6)两步时延输出信号yn-2和滤波系数Cy2经第三乘法器合成为67位宽度的数字信号y21;
7)一步时延输出信号yn-1和滤波系数Cy1经第二乘法器合成为67位宽度的数字信号y11;
8)数字信号y21和y11经第四加法器合成为68位宽度的数字信号y68;
9)数字信号y68经第二移位寄存器截断处理为32位宽度的数字信号y32;
10)经截断处理的数字信号y32和x32经第五加法器合成为32位宽度的数字输出信号yn。数字输出信号yn通过三态开关S3接至Y_a、Y_b、Y_c。
本案中设计的一种基于FPGA的多通道数字滤波器采用这种独特的设计思路,将滤波功能设计为一个固定的核,而不同路的信号通过不同的时间阀片来轮询使用这个核,通过分频计数器、开关技术器实现多路信号对滤波核的共用,在时间与空间均满足要求的情况下实现设计思路。而由于滤波器的系数以及输入量很可能是些比较小的小数值,为了保持计算过程中的精度不丢失,对低通滤波器LP_Filter内核的数据先放大计算后再缩小的处理方式。利用FPGA内部资源,实现低通滤波器内核,再通过多通道封装技术将内核打包成具有多通道滤波功能的滤波器。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。