System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 基于FPGA的多组数据FIR滤波改进方法技术_技高网

基于FPGA的多组数据FIR滤波改进方法技术

技术编号:40920489 阅读:4 留言:0更新日期:2024-04-18 14:45
本发明专利技术实施例公开了一实现多组数据同时进行FIR滤波的改进方法。将各组数据存放到FIFO中,设置一个包含多个时钟周期的复用周期,包含的时钟周期个数与需要同时滤波的数据组个数相同。在该复用周期内,每个不同的时钟周期每一个FIFO输出一个数据,构成一组串行数据。根据滤波器的阶数和复用周期决定寄存器个数,将FIFO输出的串行数据依次放入寄存器中缓存,同时准备与滤波系数个数相同的乘法器,每个乘法器的乘数为滤波系数,被乘数为间隔为复用周期个数的寄存器中的数据值,所有乘积求和可以得到当前时钟周期内的滤波结果。该方法滤波所用乘法器只与滤波阶数有关,因此减少了多组数据同时滤波执行乘法运算与乘法器的数量与执行加法运算的加法器的数量。

【技术实现步骤摘要】

本专利技术涉及基于fpga的多组数据进行fir滤波的改进算法,属于信号处理。


技术介绍

1、目前,fir滤波广范应用于图像处理,雷达探测,超声探查等数字信号处理领域。fpga具有直接面向用户,灵活性和通用性极大,使用方便,硬件测试和实现快捷等特点,所以大量的信号处理工作选用fpga来实现。

2、fir的算法原来可以表示为:

3、

4、 其中 x(n) 为输入信号序列,h(n) 为 fir 滤波器的抽头系数,m为输入序列长度,n为滤波器长度。实现过程中,需要对输入数据进行延迟,得到滤波器阶数 n 个延迟数据来进行运算。对于多组数据进行fir滤波运算时,常用的方法是将单组数据fir滤波运算进行多次例化,分别对各组数据进行滤波运算,由于滤波会消耗 fpga 内部大量的存储器资源或寄存器资源和乘法器资源,多次例化会成倍增加资源的占用,容易造成设计资源和时序紧张,浪费很大的资源。


技术实现思路

1、本专利技术要解决的技术问题是提供一种实现多组数据fir 滤波的方法和滤波装置,解决现有技术中,多组数据进行fir 滤波时多次例化单通道滤波器,寄存器资源和乘法器资源会成倍增加,会对fpga 资源产生很大的浪费。

2、为了实现上述目的,本专利技术的技术方案是提供一种基于fpga的多组数据同时滤波的改进方法,方法包括:将需要滤波的多组数据分别存入特定的fifo中;设置一个包含多个时钟周期的复用周期,复用周期包含的时钟周期个数与并行滤波的数据组个数相同;在该复用周期内,每个不同的时钟周期各个fifo依次输出其中一组数据中的一个,构成一组串行数据;滤波运算时,根据滤波器的阶数和复用周期共同决定寄存器个数,寄存器的个数m=k*r,即滤波器阶数与复用周期的乘积,复用周期由并行滤波的数据组数决定,将m个寄存器进行级联,fifo输出的串行数据依次放入寄存器中缓存;将滤波系数与寄存其中缓存的数据相乘得到乘积,将所有的乘积相加得到的和即为当前时钟周期的滤波结果。

3、上述方法中,存储数据的fifo输入时钟与数据时钟同步,输出时钟可根据滤波器所需速率进行设置,fifo深度可以根据数据长度和滤波器速率进行设置;若要减少存储资源占用,降低fifo深度,可以提高滤波器时钟速率,如果滤波器速率为数据输入速率的k倍(k为并行数据组数),则可以不用占用fifo资源。

4、上述方法中,复用周期包含并行数据组数k个时钟周期,该时钟周期与fifo的输出时钟要保持一致。

5、上述方法中,每一个fifo在复用周期的不同时钟周期内输出一个数据,即在复用周期内,每个时钟周期内控制一个fifo的读使能有效,依次输出有效数据。

6、上述方法中,所需寄存器的个数m=k*r,即寄存器个数为滤波器阶数与复用周期的乘积,寄存器用来缓存fifo的输出数据,将所有寄存器进行级联,每个时钟周期所有寄存器更新一次缓存值,具体包括:初始化时每个寄存器的缓存值为0,数据有效开始,寄存器1的缓存值reg1更新为当前fifo输出的有效值,寄存器2的缓存值reg2为上个时钟周期寄存器1的缓存值reg1,寄存器3的缓存值reg3更新为寄存器2上个时钟周期的缓存值reg2,依次类推,每个时钟周期按上述规则更新寄存器缓存值。

7、上述方法中,将滤波器系数和寄存器中缓存的值相乘后,将得到的乘积求和得到当前时钟周期的滤波结果,需要用到的乘法器个数为滤波器阶数r个,但寄存器有m=k*r个,因此不需要用到全部的寄存器缓存值,只需要寄存器1的缓存值reg1,寄存器k+1的的缓存值reg k+1,以此类推,每隔k个寄存器取一次缓存值,可得到r个数据进行滤波运算。

8、本专利技术的技术方案所达到的有益效果有:在多组数据并行fir 滤波时,将并行数据转换成串行数据,可根据需要有条件的控制滤波器的运算速率,提高fir滤波器的运算速率;由于进行了数据的并串转换,实现fir滤波时所需要的乘法器与加法器只与滤波器阶数相关,因此减少了执行乘法运算的乘法器单元和执行加法运算的加法器单元的数量,提高了fpga的资源使用率。

本文档来自技高网...

【技术保护点】

1.一种实现多组数据的FIR滤波器的改进方法,其特征是应用于FPGA,设置一个包含多个时钟周期的复用周期,复用周期包含的时钟周期个数与需要同时滤波的数据组个数相同;在该复用周期内,每个不同的时钟周期每一个FIFO依次输出其中一组数据中的一个,构成一组串行数据;滤波运算时,根据滤波器的阶数和复用周期决定寄存器个数,将串行数据依次放入寄存器中缓存,同时准备与滤波系数个数相同的乘法器,每个乘法器的乘数为滤波系数,被乘数为从寄存器1开始,每隔复用周期个数寄存器中的数据值,所有乘积求和可以得到当前时钟内的滤波结果。

2.根据权利要求1所述的,其特征是并行滤波的数据为k组,所设置的一个复用周期包括多个时钟周期具体为:复用周期倍数则为k ,即一个复用周期内包含k个时钟周期。

3.根据权利要求1所述的,其特征是多组数据存入多组FIFO,每一个FIFO 在复用周期的不同时钟周期输出一个数据构成一组串行数据,具体表示为:

4.根据权利要求1所述的,其特征是将FIFO中输出的数据放入寄存器中缓存,寄存器的个数m与复用周期所包含的时钟个数k和滤波器阶数r有关具体为:寄存器的个数m=k*r。

5.根据权利要求4所述的,其特征是将m个寄存器进行级联,每个时钟周期更新一次寄存器,具体表现为:

6.根据权利要求1所述的,其特征是需要使用滤波器阶数r个乘法器。

7.根据权利要求1所述的,其特征是每个乘法器乘数为滤波系数,被乘数为寄存器中缓存的数据,以寄存器1为起始,间隔复合周期时钟个数取寄存器的值参与乘法运算。

8.根据权利要求1所述的,其特征是多组数据滤波改进方法,包括:

9.根据权利要求8所述的,其特征是FIFO控制模块,需要滤波的数据需要存入FIFO,在复用周期内,每个时钟周期内控制一个FIFO的读使能有效,依次输出有效数据。

10.根据权利要求1所述的,其特征是可以有效的控制FIR滤波器的运算速率;

...

【技术特征摘要】

1.一种实现多组数据的fir滤波器的改进方法,其特征是应用于fpga,设置一个包含多个时钟周期的复用周期,复用周期包含的时钟周期个数与需要同时滤波的数据组个数相同;在该复用周期内,每个不同的时钟周期每一个fifo依次输出其中一组数据中的一个,构成一组串行数据;滤波运算时,根据滤波器的阶数和复用周期决定寄存器个数,将串行数据依次放入寄存器中缓存,同时准备与滤波系数个数相同的乘法器,每个乘法器的乘数为滤波系数,被乘数为从寄存器1开始,每隔复用周期个数寄存器中的数据值,所有乘积求和可以得到当前时钟内的滤波结果。

2.根据权利要求1所述的,其特征是并行滤波的数据为k组,所设置的一个复用周期包括多个时钟周期具体为:复用周期倍数则为k ,即一个复用周期内包含k个时钟周期。

3.根据权利要求1所述的,其特征是多组数据存入多组fifo,每一个fifo 在复用周期的不同时钟周期输出一个数据构成一组串行数据,具体表示为:

4....

【专利技术属性】
技术研发人员:张笑
申请(专利权)人:南京云石医疗科技有限公司
类型:发明
国别省市:

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

1