快速实现基于FPGA的脉动FIR滤波器
发布时间:2008/5/29 0:00:00 访问次数:598
引言
目前,用fpga(现场可编程门阵列)实现fir(有限冲击响应)滤波器的方法大多利用fpga中lut(查找表)的特点采用da(分布式算法)或csd码等方法,将乘加运算操作转化为位与、加减和移位操作。这些结构需要占用器件较多的le(逻辑元件)资源,设计周期长,工作频率低,实时性差。本文提出一种基于stratix系列fpga器件的新的实时高速脉动fir滤波器的快速实现方法。利 用fgpa集成的dsp(数字信号处理器)乘加模块定制卷积运算单元,利用vhdl(甚高速集成电路硬件描述语言)元件例化语句快速生成脉动阵列结构的fir滤波器,设计周期短、可移植性强,设计采用全流水结构,能高速、无滞后地实现实时信号处理。
1 设计指标及参数量化
1.1 滤波器技术指标
本文依据以下技术指标设计一个64阶等波纹滤波器:fs=4.092 mhz;fpass=1.4 mhz,fstop=1.6 mhz;wpass<1 db,wstop<-50 db。使用matlab中fda-tool工具获得滤波器系数。
1.2 参数量化
从fdatool中得到的滤波器系数值是一组浮点小数,必须量化为定点数才能在fpga器件中实现。本文采用移位舍入的量化方法对滤波器系数进行量化,matlab描述为:
得到64阶系数。滤波器系数预先存入器件内部rom中,通过修改coet.mif文件中的参数可以改变滤波器的类型或参数。使用altera_mf库中altsyncram元件可以直接调用rom中保存的数据。其调用语句描述如下:
2 fir设计
2.1 器件简介
stratix系列fpga内部提供了丰富的硬功能模块,如片内ram、pll(锁相环)、dsp模块等,充分理解这些模块的结构特点和工作原理,掌握其使用方法,可以充分利用器件资源,最大程度地发挥器件在整个系统设计中的作用,使系统设计最优化。提供的dsp模块集成了乘、加/减/累加、求和这几种算术操作,支持符号数、无符号数和混合运算,并且在这些计算路径中集成了可选的寄存器级和全局/局部时钟控制。一个dsp块最多可以配置成8个9×9、4个18×18或者1个36×36的乘法器,可工作在简单乘法器模式、乘累加模式、2乘加模式和4乘加模式,应用这4种模式,可以实现高性能的dsp算法。本文选用stratixⅱ器件,在quartusⅱ开发环境下应用4乘加模式生成脉动阵列pe(处理单元),用vhdl描述实现fir滤波器设计。
2.2 脉动阵列结构没计
本文参考文献[6]中阵列f结构--扇入结果,输入流动,权值存入pe,设计一种可实时更替权值的fir脉动结构,如图1所示。权值w从上流入各个pe中,输入x门左向右流入pe。在这个阵列中,x值在每个单步时刻内向右边的pe移动一次。在每次计算中,各个pe同时进行乘法,算出同一个y值的各乘积项,然后将乘积结果扇入至加法器中相加,得到该y值的结果,实现fir算法。
2.3 pe设计
dsp模块集成的算术操作中,4乘加模式就是4个乘法器将乘积送出相加,输出一个加/减的结果。利用模块内部可选的寄存器,可使输入数据在模块内部流动,实现移位寄存器功能,如图2所示fpga片内dsp块的结构。若两路输入分别为输入信号和滤波器系数。
本文选用dsp模块构成脉动阵列结构fir滤波器的pe卷积单元。具体方法是,采用基于altera_mf库的乘累加运算元件“altmult_add”可以快速完成pe设计。通过altera的ip工具megawizard管理器(megawizard plug-in manager),定制算术单元(arith-metic)中乘累加底层基本宏功能模块的参数,设置需要的乘法器个数、输入输出数据格式、流水线控制时钟等参数,即可完成4阶卷积pe元件的设计。
通过调用宏功能模块生成元件的封装文什,然后在设计代码中调用该封装文件。本文选择16位符号数输入、34位符号数输出,设置分级流水线控制输入、输出、乘积结果和加法结果,选择一路输入内部移位。第k个pe元件例化vhdl描述如下:
元件中clk0~clk1分别指向pe中各级寄存器建立时钟。例如t-1时刻,x(t-i)~x(t-4)参与pek中计算;t时刻,数据x(t)流入pe时,pe 中 4个乘法单元中寄存的数据往前流动,x(t-4)从shiftouta端门流向下级pe。
3 fir优化设计
将前述的例化的pe单元按图1所示的脉动结构连接起来,就完成了一个基本的脉动fir滤波器设计,为提高系统性能,需要进一步对设计进行优化。
3.1 时序优化设计
对设计而言,提高工作频率至关重要,更高的工作频率意味着更强的处理能力。合理设计系统的时序对提高整个设计的工作频率有着至关重要的作用。而整个系统中最核心和复杂的时序关系为pe内部乘加时序。以下时序优化以pe单元为例。
本设计期望系统工作在200 mhz以上。因此,对设计的tco(时钟到输出延时)、tsu(输入建立
引言
目前,用fpga(现场可编程门阵列)实现fir(有限冲击响应)滤波器的方法大多利用fpga中lut(查找表)的特点采用da(分布式算法)或csd码等方法,将乘加运算操作转化为位与、加减和移位操作。这些结构需要占用器件较多的le(逻辑元件)资源,设计周期长,工作频率低,实时性差。本文提出一种基于stratix系列fpga器件的新的实时高速脉动fir滤波器的快速实现方法。利 用fgpa集成的dsp(数字信号处理器)乘加模块定制卷积运算单元,利用vhdl(甚高速集成电路硬件描述语言)元件例化语句快速生成脉动阵列结构的fir滤波器,设计周期短、可移植性强,设计采用全流水结构,能高速、无滞后地实现实时信号处理。
1 设计指标及参数量化
1.1 滤波器技术指标
本文依据以下技术指标设计一个64阶等波纹滤波器:fs=4.092 mhz;fpass=1.4 mhz,fstop=1.6 mhz;wpass<1 db,wstop<-50 db。使用matlab中fda-tool工具获得滤波器系数。
1.2 参数量化
从fdatool中得到的滤波器系数值是一组浮点小数,必须量化为定点数才能在fpga器件中实现。本文采用移位舍入的量化方法对滤波器系数进行量化,matlab描述为:
得到64阶系数。滤波器系数预先存入器件内部rom中,通过修改coet.mif文件中的参数可以改变滤波器的类型或参数。使用altera_mf库中altsyncram元件可以直接调用rom中保存的数据。其调用语句描述如下:
2 fir设计
2.1 器件简介
stratix系列fpga内部提供了丰富的硬功能模块,如片内ram、pll(锁相环)、dsp模块等,充分理解这些模块的结构特点和工作原理,掌握其使用方法,可以充分利用器件资源,最大程度地发挥器件在整个系统设计中的作用,使系统设计最优化。提供的dsp模块集成了乘、加/减/累加、求和这几种算术操作,支持符号数、无符号数和混合运算,并且在这些计算路径中集成了可选的寄存器级和全局/局部时钟控制。一个dsp块最多可以配置成8个9×9、4个18×18或者1个36×36的乘法器,可工作在简单乘法器模式、乘累加模式、2乘加模式和4乘加模式,应用这4种模式,可以实现高性能的dsp算法。本文选用stratixⅱ器件,在quartusⅱ开发环境下应用4乘加模式生成脉动阵列pe(处理单元),用vhdl描述实现fir滤波器设计。
2.2 脉动阵列结构没计
本文参考文献[6]中阵列f结构--扇入结果,输入流动,权值存入pe,设计一种可实时更替权值的fir脉动结构,如图1所示。权值w从上流入各个pe中,输入x门左向右流入pe。在这个阵列中,x值在每个单步时刻内向右边的pe移动一次。在每次计算中,各个pe同时进行乘法,算出同一个y值的各乘积项,然后将乘积结果扇入至加法器中相加,得到该y值的结果,实现fir算法。
2.3 pe设计
dsp模块集成的算术操作中,4乘加模式就是4个乘法器将乘积送出相加,输出一个加/减的结果。利用模块内部可选的寄存器,可使输入数据在模块内部流动,实现移位寄存器功能,如图2所示fpga片内dsp块的结构。若两路输入分别为输入信号和滤波器系数。
本文选用dsp模块构成脉动阵列结构fir滤波器的pe卷积单元。具体方法是,采用基于altera_mf库的乘累加运算元件“altmult_add”可以快速完成pe设计。通过altera的ip工具megawizard管理器(megawizard plug-in manager),定制算术单元(arith-metic)中乘累加底层基本宏功能模块的参数,设置需要的乘法器个数、输入输出数据格式、流水线控制时钟等参数,即可完成4阶卷积pe元件的设计。
通过调用宏功能模块生成元件的封装文什,然后在设计代码中调用该封装文件。本文选择16位符号数输入、34位符号数输出,设置分级流水线控制输入、输出、乘积结果和加法结果,选择一路输入内部移位。第k个pe元件例化vhdl描述如下:
元件中clk0~clk1分别指向pe中各级寄存器建立时钟。例如t-1时刻,x(t-i)~x(t-4)参与pek中计算;t时刻,数据x(t)流入pe时,pe 中 4个乘法单元中寄存的数据往前流动,x(t-4)从shiftouta端门流向下级pe。
3 fir优化设计
将前述的例化的pe单元按图1所示的脉动结构连接起来,就完成了一个基本的脉动fir滤波器设计,为提高系统性能,需要进一步对设计进行优化。
3.1 时序优化设计
对设计而言,提高工作频率至关重要,更高的工作频率意味着更强的处理能力。合理设计系统的时序对提高整个设计的工作频率有着至关重要的作用。而整个系统中最核心和复杂的时序关系为pe内部乘加时序。以下时序优化以pe单元为例。
本设计期望系统工作在200 mhz以上。因此,对设计的tco(时钟到输出延时)、tsu(输入建立