引言
目前,用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算法。
|