基于SOPC的FIR数字滤波器的设计
2012-06-19
郑成根 邓中亮
标签: FIR滤波器

摘要:为了探讨如何优化设计数字滤波器系统课题,本文首次提出了利用可编程的片上系统(SOPC)技术,采用基于SOPC的软硬件协同开发方法,设计了一个高速的、软件灵活配置的一个片上FIR系统,同时给出了硬件系统设计方法和软件系统的设计流程,还探讨了软硬件协同仿真和验证方法。在此系统上,用软件可以定制各种类型的FIR滤波器系统,包括自适应的FIR滤波器系统,又能满足系统的高速的要求。FIR (Finite Impulse Response有限冲激响应)数字滤波器在数字通信系统中,被大量的用于实现各种功能,如低通滤波、带通选择、抗混叠、抽取和内插等。

目前FIR滤波器的实现方法有三种:利用单片通用数字滤波器集成电路、DSP器件和可编程逻辑器件实现。单片通用数字滤波器使用方便,但由于字长和阶数的规格较少,不能完全满足实际需要。使用DSP器件实现虽然简单,但由于程序顺序执行,执行速度必然不快。可编程逻辑器件虽然可以并行处理数据和定制不同精度要求,但是它很难实现算法复杂的滤波器。随着当今集成电路的高速发展,一种新的可编程的片上系统技术(SOPC)也发展起来,这里我们用SOPC技术结合传统数字滤波器的两种实现方法,既可以很好满足数字处理的高速的要求,又容易实现复杂的算法。

1 FIR滤波器的原理与设计

对于一个FIR滤波器系统,它的冲激响应总是有限长的,其系统函数可以记为:

最基本的FIR滤波器可用下式表示:

其中:x(n)是输入采样序列,h(n)是滤波器系数,L是滤波器的阶数,y(n)表示滤波器的输出序列。用卷积来表示:

图1中显示了一个典型的直接一型的3阶FIR滤波器,其输出序列y(n)满足下列等式:

y(n)=h(0)x(n)+h(1)x(n-1)+h(2)x(n-2)+h(3)x(n-3)

在这个FIR滤波器中,总共有3个延时结、4个乘法单元、一个4输入的加法器。如果采用普通的数字信号处理器(DSP Processor)来实现,只能采用顺序的方式执行延时、乘加操作,不可能在一个DSP处理器指令周期完成,必须用多个指令周期完成。但是,如果采用FPGA来实现,就可以采用并行结构,在一个时钟周期内得到一个FIR滤波器的输出。而且从图1中可以看出所示的电路结构是一种流水线结构,这种结构在硬件系统中有利于并行高速运行。

图1 3阶FIR滤波器结构

在SOPC中的硬件模块可以独立成为一个功能块,也可成为SOPC系统的一个组成模块,甚至可以成为Nios嵌入式系统中一条自定义的指令对应的加速器模块。以下将设计一个可输人参数、方便调用、支持DMA方式的16阶FIR滤波器模块,作为SOPC系统的一个组成模块。

为了使该滤波器方便来回调用,在Xin 输入后插入一个延时,同时让Z0的系数项h(0)恒为0。FIR滤波器处理的往往是信号流,增加延时单元不会影响处理结果,只是让系统增加了一个时钟周期。对于该FIR滤波,其系统函数表示为:

H(z)=h(1)z-1 +h(2)z-2+h(3)z-3+h(4)z-4

其中h(n)作为输入端口。由于浮点运算所需的硬件资源太大,所以将参数进行量化处理后再输入到端口。

采用4个4阶的FIR滤波器级连在一起构成一个16阶的FIR滤波器,有16个参数输入端口,系统依然是流水线的结构,其系统函数表示为:

据此设计一个4阶的FIR滤波器模块:

module FIR_Rank4(clk,rst,chipselect,fir_in,fir_out,coff1,coff2,coff3,coff4)

这个模块将作为下面设计的l6阶的FIR滤波器的子模块来调用,它的接口的定义:clk系统时钟、rst同步复位而且可以清空所有的参数寄存器、chipselect是片选信号、fir_in是输入的处理信号、fir_out是输出处理完的信号、coff_x是系统的滤波系数。

为了更加有效地利用总线资源,在FIR滤波器单元加入缓存器,在数据输入端加人1K16位宽的FIFO,在数据输出端加入同样大小的FIFO。

整个FIR滤波器的硬件模块可分为:一个管理控制模块MCU、一个l6阶的FIR模块和2个FIFO模块,如图2所示。

图2 FIR滤波器系统

FIFO模块是利用FPGA的Block RAM生成的,加入输入输出两个FIFO可以让FIR系统支持DMA,提高整个系统的效率。FIR_X是一个四阶的

FIR滤波器,串连四个就组成了一个16阶的流水线架构的FIR滤波器。MCU是这个系统的核心模块,它要负责控制内部的FIFO、FIR_X动作,产生控制时序,给CPU反馈内部各个模块的状态。

2 基于Nios的FIR滤波器的软硬件协同设计

一个SOPC系统相当子一个完整的嵌人式系统,不但需要硬件模块,同时也需要一套与之对应的软件配合,它们之间也是可以相互转化,比如硬件的功能可以由软件实现,软件的功能可以由硬件实现,但是根据具体的情况划分它们的任务,这才是SOPC系统较传统的嵌人式系统的独有的优点,合理的划分软硬件的任务,使其相互补充,相得益彰发挥系统整合的性能。

我们先来看一下一个滤波器系统需要完成什么任务:

1)计算设计滤波器的系数;

2)对其系数进行量化;

3)接受原始数据;

41对数据进行处理;

5)传送处理后的数据。

根据这些任务的特点,把处理数据用硬件实现外,其余都用软件实现。

2.1系统硬件的总体设计

综合设计的硬件框图如图3所示,整个SOPC系统由CPU (nios32)、DMA控制器、memory、Avalon总线和上面设计的FIR滤波器模块。利用Altera公司的SOPC Builder工具生成上面的系统,需要把设计的FIR滤波器安装到SOPCBuilder中,以便在系统集成时添加该模块。这里FIR滤波器模块看成是一个存储器(FIFO)类型的模块,需要在DMA控制器与FIR模块添加连接关系,这样就可以完成FIR模块到memory的DMA设置。这里的memory采用片上memory,可以方便整个系统的仿真。

完成上面的工作,一个支持并行的FIR滤波器的片上系统的芯片(SOC)就搭建成了,依据这个系统我们就可以实现各种复杂算法的滤波器。

2.2系统软件的总体设计

CPU模块不仅需要完成FIR滤波器的系数计算、量化和传接送数据等,还需要对整个系统进行任务调度,让系统高效的、实时的运行。根据给定的通带波动、阻带衰减、过渡带宽和窗函数的选择等,利用FIR系数的计算算法,计算出系统的系数。由于前面设计的FIR滤波器完全采用16位带符号的定点数运算,而由上面计算得到的系数是浮点的,所以需要将系数量化成定点数。系数相对于A/D量化的数据分辨值很小,所以还需要对其进行放大。考虑以上两个原因,将系数除以A/D的量化间隔(转换电平值除以2的A/D的位数的次方),再取其整数,最后补码的形式,这种量化方法可以降低量化噪声。

接下来需要设置FIR滤波器寄存器,把原始数据传到滤波器的输入缓存里,启动滤波器,等待滤波器处理结束标志,再从输出缓存里把数据存到指定地方。这样一来整个系统几乎已经完成,但是上面设计的FIR单元是16阶的,如果出现超过16阶怎么办,而且采用窗函数设计的,一般系统的阶数都会很高,这里就可以体现SOPC的特点。以一个24阶FIR滤波器为例,很显然FIR模块不可能处理24阶的滤波器,但是我们可以将24阶拆分成一个16阶和8阶的两个系统,采用时分复用的方式来处理。这里体现了面积和速率互换的原则。

2.3软硬件协同验证和仿真

基于SOPC的软硬件协同验证仿真,可以缩短产品的开发周期,同时也可以发现直接调试无法观察到的问题,如总线的时序问题。

由于SOPC系统是以FPGA为基础的,一般很容易进行系统重建。但是仿真也是不可缺少的一个环节,由于系统的仿真不仅要考虑硬件的仿真,同时也要运行软件来进行仿真,而且系统是异构仿真,所以软硬件协同仿真就尤为重要。

系统仿真方法:

前仿真:利用Ahera集成的ModelSim进行软硬件的协同仿真,来验证硬件逻辑和软件的正确性。本系统设计时完全采用On-Memory,所以可以将编好的软件编译成可执行的代码,加到RAM里面去,进行协同仿真。

后仿真:在QuartuslI中的EDA tools setting中的simulator项设为ModelSim,然后进行编译,编译后会生成门级网表文件和延时文件,再把它们添加到ModelSim工程里就可以进行后仿真了。

3 FIR滤波器的实现与仿真

现在设计一个FIR低通滤波器,所希望的频率响应h(ejw)在0≤w≤π/4之间为1,在π/4≤w≤π之间为0。

图5是用Cadence Simvison软件对系统进行仿真的结果。图6右图将仿真得到的数据用曲线的形式表示,这样更加直观,左图是Matlab仿真得到的结果,从仿真图上可以看出,经过滤波产生信号,电路的延时只有10个clock,系统时钟设为50M,那么电路延时0.2uS,系统处理速度很快,完全满足系统实时的要求。再与matlab的仿真结果对比,效果很接近,滤波效果也符合要求。

4结束语

数字滤波是一种应用广泛的数字处理技术,其研究也在不断地深入。本文提出了基于SOPC技术来实现FIR数字滤波器,采用该系统特有的软硬件协同设计方法来实现各种复杂算法的FIR滤波器系统,同时探讨了如何实现软硬件协同验证和仿真的方法,这种方法可以节约研发成本和时间,而且可以发现其内部的细微的问题。

参考文献

1.程佩青,数字信号处理教程,北京:清华大学出版社

2.夏宇闻,Verilog数字系统设计教程,北京:北京航空航天大学出版社

3.郭书军,嵌入式处理器原理及应用,北京:清华大学出版社

4.潘松,SOPC技术实用教程,北京:清华大学出版社

可能会用到的工具/仪表
本站简介 | 意见建议 | 免责声明 | 版权声明 | 联系我们
CopyRight@2024-2039 嵌入式资源网
蜀ICP备2021025729号