CN102412808B - 一种基于fpga的高性能多路fir数字抽取滤波器及其读写方法 - Google Patents

一种基于fpga的高性能多路fir数字抽取滤波器及其读写方法 Download PDF

Info

Publication number
CN102412808B
CN102412808B CN201110380551.1A CN201110380551A CN102412808B CN 102412808 B CN102412808 B CN 102412808B CN 201110380551 A CN201110380551 A CN 201110380551A CN 102412808 B CN102412808 B CN 102412808B
Authority
CN
China
Prior art keywords
address
read
data
continuous
signal
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.)
Active
Application number
CN201110380551.1A
Other languages
English (en)
Other versions
CN102412808A (zh
Inventor
杨进
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nanjing Sinovatio Technology LLC
Original Assignee
Nanjing Sinovatio Technology LLC
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Nanjing Sinovatio Technology LLC filed Critical Nanjing Sinovatio Technology LLC
Priority to CN201110380551.1A priority Critical patent/CN102412808B/zh
Publication of CN102412808A publication Critical patent/CN102412808A/zh
Application granted granted Critical
Publication of CN102412808B publication Critical patent/CN102412808B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Complex Calculations (AREA)

Abstract

一种基于FPGA的高性能多路FIR数字抽取滤波器及其读写方法,它包括时分复用模块、时序控制模块、地址控制模块、双口RAM存储模块、运算系数配置模块、滤波运算模块和解时分复用模块,该滤波器需要使用所在的FPGA内的乘法器的个数E=[[M/2]/D],同时令P=[M/D],Q=[P/2]。本发明有效地避免了读写冲突造成的误操作、容易在FPGA内实现、节省了FPGA内数量很有限的高速硬核乘法器、方便后续滤波运算的实现、在FPGA内实现的数字电路具有很高的时序性能。采用本设计的读写策略方案使滤波方法在FPGA内的实现变得十分容易,数据流都是直接送给下级运算单元,降低了方法实现的复杂度。

Description

一种基于FPGA的高性能多路FIR数字抽取滤波器及其读写方法
技术领域
本发明涉及数字滤波器,尤其是采用可编程逻辑器件实现的数字滤波器,具体地说是一种基于FPGA的高性能多路FIR数字抽取滤波器及其读写方法。
背景技术
目前,数字滤波在图像处理、语音识别和模式识别等数字信号处理中占有重要地位。与模拟滤波器相比,数字滤波器可以满足滤波器幅度和相位特性的严格要求,可以克服模拟滤波器所无法克服的电压漂移、温度漂移和噪声等问题。数字滤波器包括有限冲激响应(FIR)滤波器和无限冲激响应(IIR)滤波器两大类,其中的FIR滤波器可以保证严格的线性相位。同时由于其实现结构主要是非递归的,因此FIR滤波器可以稳定工作。FIR滤波器被广泛用于各类数字信号处理系统中实现卷积、相关、自适应滤波、正交插值等处理。
随着数字信号处理的发展,信号的处理、编码、传输和存储等工作量越来越大。为了节省工作量及存储空间,在一个信号处理系统中常常需要不同的采样率处理,以及这些不同采样率信号之间的相互转换。在这种情况下,多速率数字信号处理产生并发展起来。它的应用给系统设计带来了许多好处,例如,降低系统实现的复杂度、降低计算复杂度、降低传输速率、减少存储量等。
抽取滤波器是基于软件无线电技术的数字通信系统中广泛运用的一种有效线性滤波器。由于其输入和输出数据速率具有线性的倍数关系的特点,这样具有了多数率信号处理的特性,是实现数字通信系统中接收机数字下变频(DDC)的重要技术。
对于非实时系统和低速采样系统,FIR滤波器的运算可在CPU或DSP处理器上采用软件实现。但是对于无线通讯、雷达以及工业控制,甚至语音信号处理等一些实时性要求较高的系统,由于FIR运算计算量过大,受到乘法器和加法器电路的限制,采用DSP软件可能无法实现,因此采用可编程逻辑器件便是最好的方法。
目前FIR滤波器大致有以下几种实现方法:
(1)使用单片通用数字滤波器集成电路。单片通用数字滤波器使用简单方便,但由于字长和阶数的规格较少,不能完全满足实际需要。虽可采用多片扩展来满足,但会增加体积和功耗,因而在实际中受到一定限制。
(2)采用DSP器件实现。由于有专门的函数可供调用,因此使用DSP器件设计FIR滤波器相对较简单,其应用也最为广泛。其唯一缺点是程序顺序执行,尽管DSP器件性能不断提高,但在某些实时性要求极高的场合中受到限制。
(3)采用可编程逻辑器件实现。随着可编程逻辑器件的容量和速度的不断增加,实现单片系统集成已经成为可能。利用可编程逻辑器件实现FIR滤波器,由于实现的是硬件并行方法,因此特别适用于某些实时性要求高的场合。
发明内容
本发明的目的是针对FIR滤波器实现的问题,提出一种采用可编程逻辑器件实现的基于FPGA的高性能多路FIR数字抽取滤波器及其读写方法。
本发明的技术方案是:
一种基于FPGA的高性能多路FIR数字抽取滤波器,它包括时分复用模块、时序控制模块、地址控制模块、双口RAM存储模块、运算系数配置模块、滤波运算模块和解时分复用模块,该滤波器的倍抽取为D,具有N个通道、M个滤波系数和L位数据宽度,该滤波器需要使用所在的FPGA内的乘法器的个数E=[[M/2]/D],同时令P=[M/D],Q=[P/2]:
时分复用模块TDM:通过N个通道采集N个L位的待滤波数据,将各通道的并行数据输入转化为1个通道的L位串行数据输出,并产生同步信号Sync_in;
时序控制模块TIME_CTRL:根据同步信号Sync_in产生其它模块的控制信号和同步后的串行数据;
地址控制模块ADDR_CTRL:根据时序控制模块的控制信号产生双口RAM存储模块的2E个读地址信号、1个写地址信号和1个写使能信号;
双口RAM存储模块DPRAM:用于存储时序控制模块同步后的待滤波数据,将串行数据按照写地址写入以后,再按照读地址读出,转换为符合滤波运算方法结构的串行数据,数据读出后对无效数据进行过滤,再通过2E个L位寄存器输出至滤波运算模块;
运算系数配置模块COMP_COEF:用于产生滤波运算的M个相关系数,根据控制信号,配置滤波运算需要的M个系数;
滤波运算模块COMP_OPE:通过2E个L位寄存器从双口RAM存储模块中读取2E个L位串行数据,配合运算系数配置模块的M个相关系数完成数据的滤波运算,模块内包括了FPGA内的E个乘法器;
解时分复用模块TDDM:完成N个通道滤波输出数据的解复用。
本发明的双口RAM存储模块DPRAM为一个,包括FPGA内的2E个双口RAM存储单元,由BLOCK RAM生成;各双口RAM存储单元均设有一个端口写,一个端口读,读写地址独立,完成数据读写操作;数据读出以后再对无效数据进行过滤。
本发明的双口RAM存储模块用于改变原始的待滤波数据的结构,转换为符合滤波运算方法结构的串行数据,数据读出以后对无效数据进行过滤。
一种基于FPGA的高性能多路FIR数字抽取滤波器的读写方法,基于FPGA的高性能多路FIR数字抽取滤波器,其特征是它包括分配RAM的大小步骤;在双口RAM存储模块中根据写使能信号和写地址信号对待滤波数据进行写数据的步骤,根据读地址信号进行读数据的步骤,数据读出以后对无效数据进行过滤的步骤和在滤波运算模块中进行滤波运算步骤。
本发明的分配RAM的大小步骤包括:
所使用的FPGA内的每一个乘法器需要对应使用FPGA内的2个L*MN bit的双口RAM存储单元,E个乘法器一共使用FPGA内的2E个L*MN bit的双口RAM存储单元,均由FPGA内的BLOCK RAM实现;
N个通道的地址分配规律:
通道0对应的地址依次为0、N、2N、3N…(M-4)N、(M-3)N、(M-2)N、(M-1)N;
通道1对应的地址依次为1、N+1、2N+1、3N+1…(M-4)N+1、(M-3)N+1、(M-2)N+1、(M-1)N+1;
通道N-2对应的地址依次为N-2、2N-2、3N-2、4N-2…(M-3)N-2、(M-2)N-2、(M-2)N-2、MN-2;
通道N-1对应的地址依次为N-1、2N-1、3N-1、4N-1…(M-3)N-1、(M-2)N-1、(M-1)N-1、MN-1;
每个通道对应位置的地址比前一个通道对应位置的地址增加1,从通道0开始增加到通道N-1,一共N个通道,依此类推。
本发明的根据写使能信号和写地址信号对待滤波数据进行写数据的步骤包括:
①产生写使能信号:输入待滤波数据有效时均为高电平;输入待滤波数据无效时均为低电平。
②产生写地址信号:写使能信号高电平期间,每隔1个时钟周期依次进行0~MN-1的模MN计数,计数值每次+1;写使能信号低电平期间,写地址保持不变。
③进行写操作:写使能信号高电平期间,输入的串行待滤波数据根据对应的写地址信号写入RAM存储单元中相应的位置,每隔1个时钟周期依次写入1个数据;具体的顺序为:N个通道对应的第1个数据依次写入,接着N个通道对应的第2个数据依次写入,依此类推,直到N个通道对应的M个数据全部写入;写使能信号低电平期间,没有数据写入。
本发明的根据读地址信号进行读数据的步骤包括:
①产生[P/2]个读地址的首地址的临时信号:
读地址1的首地址的临时信号变化规律:第1个地址赋值为(D-1)N;之后每隔DN个时钟周期进行1次0~MN-1的模MN计数,计数值每次+DN;
读地址3的首地址的临时信号变化规律:第1个地址赋值为(M-1)N;之后每隔DN个时钟周期进行1次0~MN-1的模MN计数,计数值每次+DN;
读地址P-1的首地址的临时信号变化规律:第1个地址赋值为[M-1-(Q-2)D]N;之后每隔DN个时钟周期进行1次0~MN-1的模MN计数,计数值每次+DN;
中间省略的信号变化规律依此类推;
②产生P个读地址的首地址信号:
读地址0的首地址变化规律:第1个地址赋值为(D-1)N;之后每隔N个时钟周期进行1次0~MN-1的模MN计数,计数值每次+N;
读地址1的首地址变化规律:连续D个地址为1组;连续D个地址的第1个地址赋值为读地址1的首地址的临时地址;之后的连续D-1个地址每隔N个时钟周期进行1次0~MN-1的模MN计数,计数值每次-N;
读地址2的首地址变化规律:第1个地址赋值为(2D-1)N;之后每隔N个时钟周期进行1次0~MN-1的模MN计数,计数值每次+N;
读地址3的首地址变化规律:连续D个地址为1组;连续D个地址的第1个地址赋值为读地址3的首地址的临时地址;之后的连续D-1个地址每隔N个时钟周期进行1次0~MN-1的模MN计数,计数值每次-N。
读地址P-2的首地址变化规律:第1个地址赋值为(QD-1)N;之后每隔N个时钟周期进行1次0~MN-1的模MN计数,计数值每次+N;
读地址P-1的首地址变化规律:连续D个地址为1组;连续D个地址的第1个地址赋值为读地址P-1的首地址的临时地址;之后的连续D-1个地址每隔N个时钟周期进行1次0~MN-1的模MN计数,计数值每次-N;
中间省略的信号变化规律依此类推;
③产生P个读地址信号:
读地址0的变化规律:连续N个地址为1组;首地址即连续N个地址中的第1个赋值为读地址0的首地址,之后的连续N-1个地址依次每隔1个时钟周期进行1次加法运算,每次+1;
读地址1的变化规律:连续N个地址为1组;首地址即连续N个地址中的第1个赋值为读地址1的首地址,之后的连续N-1个地址依次每隔1个时钟周期进行1次加法运算,每次+1;
读地址2的变化规律:连续N个地址为1组;首地址即连续N个地址中的第1个赋值为读地址2的首地址,之后的连续N-1个地址依次每隔1个时钟周期进行1次加法运算,每次+1;
读地址3的变化规律:连续N个地址为1组;首地址即连续N个地址中的第1个赋值为读地址3的首地址,之后的连续N-1个地址依次每隔1个时钟周期进行1次加法运算,每次+1;
读地址P-2的变化规律:连续N个地址为1组;首地址即连续N个地址中的第1个赋值为读地址P-2的首地址,之后的连续N-1个地址依次每隔1个时钟周期进行1次加法运算,每次+1;
读地址P-1的变化规律:连续N个地址为1组;首地址即连续N个地址中的第1个赋值为读地址P-1的首地址,之后的连续N-1个地址依次每隔1个时钟周期进行1次加法运算,每次+1。
中间省略的信号变化规律依此类推;
④进行读操作:
根据读地址信号从RAM存储单元中相应的位置读出数据,每隔1个时钟周期依次读出1个数据。
本发明的双口RAM存储模块对无效数据进行过滤,将无效数据置为0后输出至滤波运算模块进行运算;N个通道1次滤波运算的无效数据为[M/D]DN-MN=([M/D]D-M)N个。
本发明的有益效果:
本发明有效地避免了读写冲突造成的误操作、容易在FPGA内实现、节省了FPGA内数量很有限的高速硬核乘法器、方便后续滤波运算的实现、在FPGA内实现的数字电路具有很高的时序性能;同时采用本设计的读写策略方案使滤波方法在FPGA内的实现变得十分容易,数据流都是直接送给下级运算单元,降低了方法实现的复杂度,这点对在FPGA内实现方法是至关重要的。
本发明消耗FPGA内的乘法器数量少,FPGA内消耗的乘法器数量越少就可以在同一片FPGA里实现更多其他的算法;最高工作频率越高,最高工作频率和设计的时钟频率之间的频率差越大,实现的数字电路时序裕量就越大,时序性能就越好,设计的稳定性和可靠性越高。
下表列出了目前的几种方案在FPGA中实现FIR数字抽取滤波器时实现的情况,在最关键的消耗乘法器数量和最高工作频率2项指标上,本发明的滤波器都是最好的,比Xilinx公司的IP核设计还要优秀。
附图说明
图1是本发明的原理框图。
具体实施方式
下面结合附图和实施例对本发明作进一步的说明。
如图1所示,一种基于FPGA的高性能多路FIR数字抽取滤波器及其读写方法,其中:
●基于RAM的读写策略
基于避免因为读写冲突造成的误操作、实现起来简单和方便后续运算的原则,采用如下的读写策略:
⑴分配RAM的大小:
本实例中的情况:
本实例有6个通道,要使用FPGA内的2个乘法器。每一个乘法器需要对应使用FPGA内的2个17*102bit的双口RAM存储单元,地址分配见下表。2个乘法器一共使用FPGA内的4个17*102bit的双口RAM存储单元,均由FPGA内的BLOCK RAM实现。
本实例中RAM的地址分配
表面上看,这样的地址分配方式对应在每个通道上都是不连续的,很不方便;实际上,采用这种方式实现起来具有很多优点,详见后续的分析。
⑵写策略:
本实例中的情况:
①产生写使能信号:输入待滤波数据有效时均为高电平;输入待滤波数据无效时均为低电平。
②产生写地址信号:写使能信号高电平期间,每隔1个时钟周期依次进行0~101的模102计数,计数值每次+1;写使能信号低电平期间,写地址保持不变。
③进行写操作:写使能信号高电平期间,输入的串行待滤波数据根据对应的写地址信号写入RAM存储单元中相应的位置,每隔1个时钟周期依次写入1个数据;具体的顺序为:6个通道对应的第1个数据依次写入,接着6个通道对应的第2个数据依次写入,依此类推,直到6个通道对应的17个数据全部写入;写使能信号低电平期间,没有数据写入。
写策略的时序表如下:
⑶读策略:
本实例中的情况:
①产生2个读地址的首地址的临时信号:
读地址1的首地址的临时信号变化规律:第1个地址赋值为24;之后每隔30个时钟周期进行1次0~101的模102计数,计数值每次+30;
读地址3的首地址的临时信号变化规律:第1个地址赋值为96;之后每隔30个时钟周期进行1次0~101的模102计数,计数值每次+30;
相应的时序表如下:
②产生4个读地址的首地址信号:
读地址0的首地址变化规律:第1个地址赋值为24;之后每隔6个时钟周期进行1次0~101的模102计数,计数值每次+6;
读地址1的首地址变化规律:连续6个地址为1组;连续6个地址中的第1个地址赋值为读地址1的首地址的临时信号;之后的连续5个地址每隔6个时钟周期进行1次0~101的模102计数,计数值每次-6;
读地址2的首地址变化规律:第1个地址赋值为54;之后每隔6个时钟周期进行1次0~101的模102计数,计数值每次+6;
读地址3的首地址变化规律:连续6个地址为1组;连续6个地址中的第1个地址赋值为读地址3的首地址的临时信号;之后的连续5个地址每隔6个时钟周期进行1次0~101的模102计数,计数值每次-6。
相应的时序表如下:
③产生4个读地址信号:
读地址0的变化规律:连续6个地址为1组;连续6个地址中的第1个赋值为读地址0的首地址,之后的连续5个地址依次每隔1个时钟周期进行1次加法运算,每次+1;
读地址1的变化规律:连续6个地址为1组;连续6个地址中的第1个赋值为读地址1的首地址,之后的连续5个地址依次每隔1个时钟周期进行1次加法运算,每次+1;
读地址2的变化规律:连续6个地址为1组;连续6个地址中的第1个赋值为读地址2的首地址,之后的连续5个地址依次每隔1个时钟周期进行1次加法运算,每次+1;
读地址3的变化规律:连续6个地址为1组;连续6个地址中的第1个赋值为读地址3的首地址,之后的连续5个地址依次每隔1个时钟周期进行1次加法运算,每次+1。
相应的时序表如下:
⑷对无效数据进行过滤:
本实例中的情况:
由于1个通道的1次滤波运算需要17个数据,而4组读地址实际上读出了20个数据,因此有3个数据是无效数据,需要对其进行过滤,使对应的数据置为0,才能直接参加运算;依此类推,6个通道的1次滤波运算需要102个数据,而4组读地址实际上读出了120个数据,因此有18个数据是无效数据,需要对其进行过滤,使对应的数据置为0,才能直接参加运算。
读数据0和读数据1没有无效数据,原数据全部保留,相应的时序表如下:
读数据2和读数据3的有效数据全部保留,无效数据被过滤为0,相应的时序表如下:
输出数据大部分是有效数据,还有一部分数据为0,相应的时序表如下:
本实例中的情况:
①有效地避免了读写冲突造成的误操作
根据5倍抽取滤波器的工作原理,每当有5个输入数据进入滤波器后,就产生1个滤波器的输出。因此,每1次的滤波运算只能在5个输入数据长度的时间内进行,这就要求读写操作是在同时进行的,既要保证读出的数据符合滤波运算的结构,又要尽可能地避免读写冲突造成的误操作。读写冲突一般有2种情况:第1种是读操作进行早了,想要读的数据还没有被写入;第2种是读操作进行晚了,想要读的数据已经被覆盖了。本设计的读写策略高效、合理地满足了这些要求:当写数据有效时,一直进行写操作;当6个通道都写入连续5个数据后,开始进行读操作。其中读地址0超前于对应的写地址部分1个时钟周期,这样能够保证读地址和写地址之间一直保持固定的时序关系,可以有效地避免读写冲突。
②容易在FPGA内实现
从前面介绍的读写地址的产生过程可以看出:写地址信号本质上是一个计数器;读地址的首地址的临时信号本质上是一个加法器;读地址的首地址信号本质上是一个加、减法器;读地址信号本质上是一个加法器。所有这些信号的实现都比较简单,这对在FPGA内的实现是至关重要的。
FPGA中具有大量的Slice资源,可以很方便地配置成各种触发器和多路开关,实现多位高速计数器;内嵌的BLOCK RAM可以方便地配置成双端口RAM存储单元;此外还具有专门的快速加法进位链,可以轻松实现高速加法器;同时内嵌了高速硬核乘法器,完全可以实现高带宽乘法器。因此,以本设计的读写策略为控制核心的FIR数字抽取滤波器在FPGA中是容易实现的。实际的项目中,基于本设计的滤波器最高可以工作在391MHz,对于工作在368.64MHz的设计要求能够很轻松地达到。
③节省了FPGA内数量很有限的高速硬核乘法器
对于目前的主流FPGA来说,为了实现多路高带宽信号处理,往往要进行多级级联滤波,为了保证滤波效果,各级滤波器的阶数都比较高,消耗的硬核乘法器数量比较大;加上内嵌的高速硬核乘法器具有很高的性能,其数量又是很有限的,所以FPGA中内嵌的硬核乘法器资源是很宝贵的,往往成为设计中的瓶颈,使用起来要充分利用,尽可能地复用,尽量提高使用效率。按照本设计的读写策略实现的滤波器,在节省高速硬核乘法器方面具有巨大的优势,可以使整个设计具有更强的竞争力。
下表列出了目前的几种方案在FPGA中实现FIR数字抽取滤波器时消耗硬核乘法器的情况:
可见,由于采用了时分复用,方案2消耗的硬核乘法器数量仅仅为方案1的1/6,代价是数据速率的提高,对于目前的主流FPGA,以Xilinx公司的V5LX50T为例,内嵌的DSP48E硬核乘法器理论上最高可以工作在450MHz,目前我们的项目最高可以工作在391MHz,因此工作在368.64MHz可以轻松实现。
根据滤波器系数特征对滤波方法进行优化,通过本设计的读写策略进行控制,可以有效地提高硬核乘法器的使用效率,方案4消耗的硬核乘法器数量仅仅是方案3的1/2,方案2的1/5,方案1的1/27,比方案3的Xilinx公司的IP核设计还要节省乘法器。随着滤波器阶数的增加(几十阶)和抽取倍数的提高,节省的硬核乘法器数量还将大大增加,具有很高的经济价值。
④方便后续滤波运算的实现
1)由于读地址0为了避免读写冲突而超前对应的写地址部分1个时钟周期,读地址1—3要相应地配合读地址0。这就要求读地址1—3读出的数据要和读地址0读出的数据在滤波器系数对称的位置相对应。
2)因为1个通道的1次滤波运算需要17个数据,5倍抽取滤波器是每输入5个输入数据后产生1个输出数据,前3次滤波运算的输入数据不足17个,这部分对应的操作数需要为0,在本设计中,这部分地址读出的数据为0,即:当对应的输入数据还没写入时,读出的数据是0,同样可以直接参加加法运算。
3)1个通道的1次滤波运算需要17个数据,而4组读地址读出的数据有20个,因此有3个数据是无效数据,需要对其进行过滤,使对应的数据置为0,才能直接参加运算。
按照以上思想设计的读策略读出的数据和滤波过程的数据流完全一致,没写入的数据和无效的数据,对应的读数据是0,可以直接参加运算,十分方便后续运算。基于这种方案,设计出了下面所示的读地址顺序以及对应的读数据顺序:
进行1个通道的1次滤波运算按照滤波顺序排列的操作数
第1次滤波运算按照操作数顺序对应的读地址
第1次滤波运算按照读地址顺序对应的读数据
对无效读数据进行过滤后第1次滤波运算按照顺序对应的操作数
第2次滤波运算按照操作数顺序对应的读地址
第2次滤波运算按照读地址顺序对应的读数据
对无效读数据进行过滤后第2次滤波运算按照顺序对应的操作数
第3次滤波运算按照操作数顺序对应的读地址
第3次滤波运算按照读地址顺序对应的读数据
对无效读数据进行过滤后第3次滤波运算按照顺序对应的操作数
第4次滤波运算按照操作数顺序对应的读地址
第4次滤波运算按照读地址顺序对应的读数据
对无效读数据进行过滤后第4次滤波运算按照顺序对应的操作数
第4次以后的滤波运算和第4次的滤波运算类似。
由此可见,采用本设计的读写策略方案使滤波方法的实现变得十分容易,数据流都是直接送给下级运算单元,降低了方法实现的复杂度,这点对在FPGA内实现方法是至关重要的。
⑤在FPGA内实现的数字电路具有很高的时序性能
FPGA实现的数字电路的最高工作频率越高,最高工作频率和设计要求的时钟频率之间的频率差越大,电路的时序裕量就越大,设计的稳定性和可靠性就越高。
下表列出了目前的几种方案在FPGA中实现FIR数字抽取滤波器时工作频率的情况,方案1虽然时序裕量很大,但是由于消耗的乘法器过多,没有可比性;比较方案2—4,在最高工作频率上,本发明的滤波器是最高的,电路的时序裕量最大,比方案3的Xilinx公司的IP核设计的时序性能还要更好。
本发明未涉及部分均与现有技术相同或可采用现有技术加以实现。

Claims (4)

1.一种基于FPGA的高性能多路FIR数字抽取滤波器的读写方法,基于FPGA的高性能多路FIR数字抽取滤波器,所述的滤波器它包括时分复用模块、时序控制模块、地址控制模块、双口RAM存储模块、运算系数配置模块、滤波运算模块和解时分复用模块,该滤波器的倍抽取为D,具有N个通道、M个滤波系数和L位数据宽度,该滤波器需要使用所在的FPGA内的乘法器的个数E=[[M/2]/D],同时令P = [M/D],Q = [P/2]:
时分复用模块TDM:通过N个通道采集N个L位的待滤波数据,将各通道的并行数据输入转化为1个通道的L位串行数据输出,并产生同步信号Sync_in;
时序控制模块TIME_CTRL:根据同步信号Sync_in产生其它模块的控制信号和同步后的串行数据; 
地址控制模块ADDR_CTRL:根据时序控制模块的控制信号产生双口RAM存储模块的2E个读地址信号、1个写地址信号和1个写使能信号; 
双口RAM存储模块DPRAM:用于存储时序控制模块同步后的待滤波数据,将串行数据按照写地址写入以后,再按照读地址读出,转换为符合滤波运算方法结构的串行数据,数据读出后对无效数据进行过滤,再通过2E个L位寄存器输出至滤波运算模块;
运算系数配置模块COMP_COEF:用于产生滤波运算的M个相关系数,根据控制信号,配置滤波运算需要的M个系数;
滤波运算模块COMP_OPE:通过2E个L位寄存器从双口RAM存储模块中读取2E个L位串行数据,配合运算系数配置模块的M个相关系数完成数据的滤波运算,模块内包括了FPGA内的E个乘法器;
解时分复用模块TDDM:完成N个通道滤波输出数据的解复用;
其特征是该读写方法包括分配RAM的大小步骤;在双口RAM存储模块中根据写使能信号和写地址信号对待滤波数据进行写数据的步骤,根据读地址信号进行读数据的步骤,数据读出以后对无效数据进行过滤的步骤和在滤波运算模块中进行滤波运算步骤;
所述的根据读地址信号进行读数据的步骤包括:
 产生[P/2]个读地址的首地址的临时信号:
读地址1的首地址的临时信号变化规律:第1个地址赋值为(D-1)N;之后每隔DN个时钟周期进行1次0~MN-1的模MN计数,计数值每次+ DN;
读地址3的首地址的临时信号变化规律:第1个地址赋值为(M-1)N;之后每隔DN个时钟周期进行1次0~MN-1的模MN计数,计数值每次+DN;
读地址P-1的首地址的临时信号变化规律:第1个地址赋值为[M-1-(Q-2)D]N;之后每隔DN个时钟周期进行1次0~MN-1的模MN计数,计数值每次+DN;
中间省略的信号变化规律依此类推;
    产生P个读地址的首地址信号:
读地址0的首地址变化规律:第1个地址赋值为(D-1)N;之后每隔N个时钟周期进行1次0~MN-1的模MN计数,计数值每次+N;
读地址1的首地址变化规律:连续D个地址为1组;连续D个地址的第1个地址赋值为读地址1的首地址的临时地址;之后的连续D-1个地址每隔N个时钟周期进行1次0~MN-1的模MN计数,计数值每次-N;
读地址2的首地址变化规律:第1个地址赋值为(2D-1)N;之后每隔N个时钟周期进行1次0~MN-1的模MN计数,计数值每次+N;
读地址3的首地址变化规律:连续D个地址为1组;连续D个地址的第1个地址赋值为读地址3的首地址的临时地址;之后的连续D-1个地址每隔N个时钟周期进行1次0~MN-1的模MN计数,计数值每次-N;
读地址P-2的首地址变化规律:第1个地址赋值为(QD-1)N;之后每隔N个时钟周期进行1次0~MN-1的模MN计数,计数值每次+N;
读地址P-1的首地址变化规律:连续D个地址为1组;连续D个地址的第1个地址赋值为读地址P-1的首地址的临时地址;之后的连续D-1个地址每隔N个时钟周期进行1次0~MN-1的模MN计数,计数值每次-N;
中间省略的信号变化规律依此类推;
 产生P个读地址信号:
读地址0的变化规律:连续N个地址为1组;首地址即连续N个地址中的第1个赋值为读地址0的首地址,之后的连续N-1个地址依次每隔1个时钟周期进行1次加法运算,每次+1;
读地址1的变化规律:连续N个地址为1组;首地址即连续N个地址中的第1个赋值为读地址1的首地址,之后的连续N-1个地址依次每隔1个时钟周期进行1次加法运算,每次+1;
读地址2的变化规律:连续N个地址为1组;首地址即连续N个地址中的第1个赋值为读地址2的首地址,之后的连续N-1个地址依次每隔1个时钟周期进行1次加法运算,每次+1;
读地址3的变化规律:连续N个地址为1组;首地址即连续N个地址中的第1个赋值为读地址3的首地址,之后的连续N-1个地址依次每隔1个时钟周期进行1次加法运算,每次+1;
读地址P-2的变化规律:连续N个地址为1组;首地址即连续N个地址中的第1个赋值为读地址P-2的首地址,之后的连续N-1个地址依次每隔1个时钟周期进行1次加法运算,每次+1;
读地址P-1的变化规律:连续N个地址为1组;首地址即连续N个地址中的第1个赋值为读地址P-1的首地址,之后的连续N-1个地址依次每隔1个时钟周期进行1次加法运算,每次+1;
中间省略的信号变化规律依此类推;
 进行读操作:
根据读地址信号从RAM存储单元中相应的位置读出数据,每隔1个时钟周期依次读出1个数据。
2.根据权利要求1所述的基于FPGA的高性能多路FIR数字抽取滤波器的读写方法,其特征是所述的分配RAM的大小步骤包括:
所使用的FPGA内的每一个乘法器需要对应使用FPGA内的2个L*MN bit的双口RAM存储单元,E个乘法器一共使用FPGA内的2E个L*MN bit的双口RAM存储单元,均由FPGA内的BLOCK RAM实现;
N个通道的地址分配规律:
通道0对应的地址依次为0、N、2N、3N…(M-4)N、(M-3)N、(M-2)N、(M-1)N;
通道1对应的地址依次为1、N+1、2N+1、3N+1…(M-4)N+1、(M-3)N+1、(M-2)N+1、(M-1)N+1;
通道N-2对应的地址依次为N-2、2N-2、3N-2、4N-2…(M-3)N-2、(M-2)N-2、(M-2)N-2、MN-2;
通道N-1对应的地址依次为N-1、2N-1、3N-1、4N-1…(M-3)N-1、(M-2)N-1、(M-1)N-1、MN-1;
每个通道对应位置的地址比前一个通道对应位置的地址增加1,从通道0开始增加到通道N-1,一共N个通道,依此类推。
3.根据权利要求1所述的基于FPGA的高性能多路FIR数字抽取滤波器的读写方法,其特征是所述的根据写使能信号和写地址信号对待滤波数据进行写数据的步骤包括:
①  产生写使能信号:输入待滤波数据有效时均为高电平;输入待滤波数据无效时均为低电平;
②  产生写地址信号:写使能信号高电平期间,每隔1个时钟周期依次进行0~MN-1的模MN计数,计数值每次+1;写使能信号低电平期间,写地址保持不变;
③  进行写操作:写使能信号高电平期间,输入的串行待滤波数据根据对应的写地址信号写入RAM存储单元中相应的位置,每隔1个时钟周期依次写入1个数据;具体的顺序为:N个通道对应的第1个数据依次写入,接着N个通道对应的第2个数据依次写入,依此类推,直到N个通道对应的M个数据全部写入;写使能信号低电平期间,没有数据写入。
4.根据权利要求1所述的基于FPGA的高性能多路FIR数字抽取滤波器的读写方法,其特征是所述的双口RAM存储模块对无效数据进行过滤,将无效数据置为0后输出至滤波运算模块进行运算;N个通道1次滤波运算的无效数据为 [M/D]DN-MN=([M/D]D-M)N个。
CN201110380551.1A 2011-11-25 2011-11-25 一种基于fpga的高性能多路fir数字抽取滤波器及其读写方法 Active CN102412808B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201110380551.1A CN102412808B (zh) 2011-11-25 2011-11-25 一种基于fpga的高性能多路fir数字抽取滤波器及其读写方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201110380551.1A CN102412808B (zh) 2011-11-25 2011-11-25 一种基于fpga的高性能多路fir数字抽取滤波器及其读写方法

Publications (2)

Publication Number Publication Date
CN102412808A CN102412808A (zh) 2012-04-11
CN102412808B true CN102412808B (zh) 2015-01-21

Family

ID=45914703

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110380551.1A Active CN102412808B (zh) 2011-11-25 2011-11-25 一种基于fpga的高性能多路fir数字抽取滤波器及其读写方法

Country Status (1)

Country Link
CN (1) CN102412808B (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105515548B (zh) * 2014-10-20 2019-01-04 普天信息技术有限公司 基于fpga的多路抽取复用滤波器的方法及装置
CN105790728B (zh) * 2014-12-25 2018-11-30 上海贝岭股份有限公司 一种多路数字滤波器
CN106936405A (zh) * 2015-12-30 2017-07-07 普天信息技术有限公司 基于fpga实现单路数字fir滤波器的方法及装置
CN107038267B (zh) * 2016-02-04 2021-06-18 京微雅格(北京)科技有限公司 一种fpga芯片基本单元的设计方法
CN106803750B (zh) * 2017-01-12 2020-01-10 中国电子科技集团公司第十四研究所 一种多通道流水fir滤波器
CN107979355A (zh) * 2017-12-22 2018-05-01 西安烽火电子科技有限责任公司 一种fir滤波器及其滤波方法
CN111343106B (zh) * 2020-02-25 2023-03-24 母国标 多路中频数字信号处理装置和方法
CN111708483B (zh) * 2020-05-13 2023-07-25 北京无线电计量测试研究所 一种信号延时方法和装置
CN111865270B (zh) * 2020-07-07 2023-04-25 北京无线电计量测试研究所 一种信号延时方法和装置
CN113778940B (zh) * 2021-09-06 2023-03-07 电子科技大学 基于fpga的高精度可重构相位调整ip核

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101351791A (zh) * 2005-09-02 2009-01-21 奎克菲尔特技术公司 共享存储器和共享乘法器的可编程数字滤波器的实现
CN101350683A (zh) * 2008-09-22 2009-01-21 北京理工大学 一种数字方法实现的预加重滤波器
CN101640522A (zh) * 2008-07-31 2010-02-03 中兴通讯股份有限公司 一种适用于抽取滤波器的数据抽取方法及装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101351791A (zh) * 2005-09-02 2009-01-21 奎克菲尔特技术公司 共享存储器和共享乘法器的可编程数字滤波器的实现
CN101640522A (zh) * 2008-07-31 2010-02-03 中兴通讯股份有限公司 一种适用于抽取滤波器的数据抽取方法及装置
CN101350683A (zh) * 2008-09-22 2009-01-21 北京理工大学 一种数字方法实现的预加重滤波器

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
李海军,王玉萍,黄耀群.一种基于FPGA节省资源实现FIR滤波器的设计方法.《信息与电子工程》.2010,第8卷(第4期),455-458. *

Also Published As

Publication number Publication date
CN102412808A (zh) 2012-04-11

Similar Documents

Publication Publication Date Title
CN102412808B (zh) 一种基于fpga的高性能多路fir数字抽取滤波器及其读写方法
CN101326715B (zh) 数字滤波器
CN105915241B (zh) Fpga中实现超高速数字正交下变频及抽取滤波的方法与系统
CN101567701B (zh) 一种高效多路数字下变频器系统
CN103166598A (zh) 数字滤波器及其配置方法、电子设备及无线通信系统
CN103748576A (zh) 自适应均衡器
CN103269212A (zh) 低成本低功耗可编程多级fir滤波器实现方法
CN102739195A (zh) 一种fir滤波器的处理方法、装置和系统
CN100574098C (zh) 基于可编程逻辑器件的插值cic滤波器及实现方法
CN105048994A (zh) 一种应用于fir滤波器的分布式算法
CN101944364A (zh) 音频处理方法及音频系统
CN105720944B (zh) 通用fir滤波器及其配置方法
CN204316468U (zh) 一种多路数字滤波器
CN102025377A (zh) 一种改进型级联积分梳妆插值滤波器
CN101820287A (zh) 一种应用于双声道音频δ-∑数模转换器的插值滤波器
CN203617974U (zh) 一种基于fpga的可配置系数的滤波器及电子设备
CN102946251B (zh) 一种多通道异步采样adc实现多通道同步采样的方法
CN101895273B (zh) 多制式数据的滤波器及滤波方法
CN101980140B (zh) 一种ssram访问控制系统
CN104348446A (zh) 一种实现fir滤波的方法和滤波装置
CN103378820A (zh) 可编程数字滤波实现方法、装置、基带芯片及其终端
CN101840322B (zh) 滤波器运算单元复用的方法和滤波器的运算系统
CN203166913U (zh) 一种电力线载波发射机数字前端
CN103078606B (zh) 多通道的cic内插滤波器系统及其实现方法
CN105634439A (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
C53 Correction of patent for invention or patent application
CB02 Change of applicant information

Address after: Yuhuatai District of Nanjing City, Jiangsu province 210012 Bauhinia Road No. 68

Applicant after: Nanjing Sinovatio Technology LLC

Address before: Yuhuatai District of Nanjing City, Jiangsu province 210012 Bauhinia Road No. 68

Applicant before: Nanjing Zhongxing Special Software Co., Ltd.

COR Change of bibliographic data

Free format text: CORRECT: APPLICANT; FROM: NANJING ZHONGXING SPECIAL SOFTWARE CO., LTD. TO: NANJING SINOVATIO TECHNOLOGY LLC

C14 Grant of patent or utility model
GR01 Patent grant
C56 Change in the name or address of the patentee
CP02 Change in the address of a patent holder

Address after: 210012 Yuhuatai, Jiangsu province tulip Road, No. 17, No.

Patentee after: Nanjing Sinovatio Technology LLC

Address before: Yuhuatai District of Nanjing City, Jiangsu province 210012 Bauhinia Road No. 68

Patentee before: Nanjing Sinovatio Technology LLC

CP02 Change in the address of a patent holder
CP02 Change in the address of a patent holder

Address after: Room 1501, building 2, No.19, ningshuang Road, Yuhuatai District, Nanjing City, Jiangsu Province

Patentee after: Nanjing Sinovatio Technology LLC

Address before: 210012 tulip Road 17, Yuhuatai District, Jiangsu, Nanjing

Patentee before: Nanjing Sinovatio Technology LLC