首页
|
新闻
|
新品
|
文库
|
方案
|
视频
|
下载
|
商城
|
开发板
|
数据中心
|
座谈新版
|
培训
|
工具
|
博客
|
论坛
|
百科
|
GEC
|
活动
|
主题月
|
电子展
注册
登录
论坛
博客
搜索
帮助
导航
默认风格
uchome
discuz6
GreenM
»
FPGA/CPLD可编程逻辑
» 基于FPGA 的FIR 数字滤波器设计方案
返回列表
回复
发帖
发新话题
发布投票
发布悬赏
发布辩论
发布活动
发布视频
发布商品
基于FPGA 的FIR 数字滤波器设计方案
发短消息
加为好友
Bazinga
当前离线
UID
1023230
帖子
5213
精华
0
积分
2607
阅读权限
70
在线时间
158 小时
注册时间
2013-12-20
最后登录
2015-10-22
金牌会员
UID
1023230
1
#
打印
字体大小:
t
T
Bazinga
发表于 2015-2-28 10:33
|
只看该作者
基于FPGA 的FIR 数字滤波器设计方案
滤波器
,
模型
,
软件
,
硬件
本文简要介绍了FIR数字滤波器的结构特点和基本原理,提出基于FPGA和DSP Builder的FIR数字滤波器的基本设计流程和实现方案。
在Matlab/Simulink环境下,采用DSP Builder模块搭建FIR模型,根据FDATool工具对FIR滤波器进行了设计,然后进行系统级仿真和ModelSim功能仿真,其仿真结果表明其数字滤波器的滤波效果良好。通过SignalCompiler把模型转换成VHDL语言加入到FPGA的硬件设计中,从QuartusⅡ软件中的虚拟逻辑分析工具SignalTapⅡ中得到数字滤波器实时的结果波形图,结果符合预期。
0引言
在信息信号处理过程中,数字滤波器是信号处理中使用最广泛的一种方法。通过滤波运算,将一组输入数据序列转变为另一组输出数据序列,从而实现时域或频域中信号属性的改变。常用的数字滤波器可分为有限脉冲响应(FIR)滤波器和无限脉冲响应(IIR)滤波器两种。其中,FIR数字滤波器具有严格的线性相位,而且非递归结构也保证了运算的稳定性。在实时性要求比较高的应用场合,采用可编程芯片FPGA加以实现,相比于DSP芯片或专用芯片的实现方法,具有高速、高精度、高灵活性的优点。本文在采取了一种基于FPGA和DSP Builder的方法设计FIR数字滤波器时,采用了层次化、模块化的设计思想,遵循DSP Builder的设计开发流程,在Matlab/Simulink中建立模型并进行系统级仿真,再进行Verilog语言转换,ModelSim仿真验证无误后实现了FIR数字滤波器的实时测试。
1 FIR数字滤波器的基本原理及结构
对于一个FIR滤波器系统,它的冲击响应总是有限长的,其系统函数可以记为:
式中:x(n)是输入采样序列;h(i)是滤波器系数;k是滤波器阶数;y(n)表示滤波器的输出序列。
图1为k阶FIR数字滤波器的结构框图。
2 FIR数字滤波器的设计流程
该设计流程主要涉及到Matlab/Simulink、DSPBuilder和QuartusⅡ等工具软件的开发设计。整个设计流程,包括从系统描述直至硬件实现,可以在一个完整的设计环境中完成,如图2所示。
(1)Matlab/Simulink中设计输入,即在Matlab的Simulink环境中建立一个扩展名为mdl的模型文件,用图形方式调用Altera DSP Builder和其他Simulink库中的图形模块(Block),构成系统级或算法级设计框图(或称Simulink设计模型)。
(2)利用Simulink的图形化仿真、分析功能,分析此设计模型的正确性,完成模型仿真,也叫系统级仿真。
(3)DSP Builder设计实现的关键一步,通过Signal-Compiler把Simulink的模型文件转化成通用的硬件描述语言Verilog文件。
(4)转换好的Verilog源代码用ModelSim软件进行功能仿真,验证Verilog文件的正确性。接下来的几个步骤是对以上设计产生的Verilog的RTL代码和仿真文件在QuartusⅡ工具软件中进行综合、编译适配,生成扩展名为。sof的文件加载到FPGA硬件系统中。
3 FIR数字滤波器的详细设计
3.1 FIR数字滤波器模块设计与系统级仿真
根据FIR数字滤波器的原理,在Simulink环境下搭建16阶的FIR数字滤波器结构,如图3所示。
在模型的搭建过程中,使用了两个8位的Shift Taps移位寄存器模块对输入信号进行分解,然后根据数字滤波器的原理进行算法计算。
模型搭建好之后,需要确定16阶FIR数字滤波器的系数,在这使用Matlab中的FDATool滤波器设计工具来确定。确定好滤波器的指标:
(1)设计一个16阶的FIR滤波器;
(2)低通滤波器;
(3)采样频率fs为16 384 Hz,截频点频率fs为533 Hz;
(4)输入序列位宽为16位。
在设计滤波器界面中,如图4所示,进行下列选择:
(1)滤波器类型(Filter Type)为低通(Lowpass);
(2)设计方法(Design Method)为FIR,采用窗口法(Window);
(3)滤波器阶数(Filter Order)定制为15(设置为15阶而不是16阶,是由于设计的16阶FIR滤波器的常系数项h(0)=0);
(4)滤波器窗口类型为Kaiser,Beta为0.5.
所有的选项确定好后,在FDATool滤波器设计界面中点击“Design Filter”,Matlab就会计算滤波器系数并作相关分析。图5所示为滤波器的幅频响应,图6所示为滤波器的阶跃响应。
由于所有的模块都在同一个Simulink图中,这时的Simulink设计图显得很复杂,不利于阅读和排错,因此把FIR数字滤波器模型做成一个子系统在设计图中显示出来,如图7所示,这就是Matlab中的层次化设计,在顶层设计图中,滤波器作为名称是SubFIR_533_16js的一个模块出现。同时,图7中还设置了其他模块,包括仿真信号输入模块、Signal TapⅡ信号实时监测模块、Signal Compiler模块、硬件开发板模块、TestBench模块。
这样整个滤波器的Simulink电路设计模型就完成了,然后要对该模型进行系统级仿真,查看其仿真结果,在频率为533 Hz的波形输入上加入了频率为3 600 Hz的扰动波形,其Simulink仿真结果如图8所示。
图中,上面的波形是533 Hz的输出,中间的波形是533 Hz加上3 600 Hz高频干扰后的输出,下面的波形是经过滤波后的输出。
3.2从模型文件到Verilog代码的RTL级转换和编译适配
利用Signal Compiler模块将电路模型文件即Simu-link模块文件(。mdl)转换成RTL级的Verilog代码表述和Tcl(工具命令语言)脚本。这种转换是用来对数字滤波器Simulink模型进行结构化分析的[5].获得转换好的VHDL描述后就可以调用Verilog综合器,这里我们选用QuartusⅡ,用来生成底层网表文件,同时也就可以得到其网表文件对应的RTL电路图。如图9所示。
3.3数字滤波器的ModelSim功能仿真
ModelSim软件可支持VHDL和Verilog混合仿真,无论是FPGA设计的RTL级和门级电路仿真,还是系统的功能仿真都可以用ModelSim来实现[4-5].由Signal Com-piler生成的Verilog硬件描述语言模块,在ModelSim中可以直接对Verilog代码进行仿真,检测源代码是否符合功能要求。图10所示的16阶FIR数字滤波器的功能仿真结果图。与图8的Simulink仿真结果图的波形一致,表明经过转换的Verilog源代码可以实现正常的滤波功能。
3.4 FIR数字滤波器的FPGA硬件实现
FIR数字滤波器一般是嵌入在采集器的采集板卡中进行工作的,把由数字滤波器的Verilog源代码生成的模块嵌入到采集板卡的FPGA逻辑中,如图11所示。
在QuartusⅡ环境下,数字滤波器的内部逻辑经过编译适配之后,以。sof文件的形式直接加载到FPGA中。
4 FIR数字滤波器的FPGA实时测试
进行实时测试的电路是应用FPGA和USB的数据采集电路,如图12所示。
测试时把信号发生器设置好的输入信号输入到A/D,采样得到的数据经过FPGA,再通过USB与PC机相连,应用QuartusⅡ中的SignalTapⅡ工具进行实时检测,结果如图13所示,其中,上面的波形为输入波形,频率为200 Hz,下面的波形为输出波形,由于200 Hz在低通的带通内,所以两者的波形相差不大。当输入波形为频率533 Hz时,由于是在截频点,其输出波形的幅值约为输入波形幅值的71%,如图13和14所示。
5结束
FIR数字滤波器在数字信号处理领域有着广泛的使用,本文通过仿真和实时验证两种方式实现了一种基于FPGA和DSP Builder的FIR数字滤波器。先根据FIR滤波器的基本原理和结构框图搭建了滤波器的模型,再根据滤波器的性能指标通过FDATool工具对其进行设计,并通过系统级仿真和ModelSim功能仿真进行了简要的可行性分析,最后通过QuartusⅡ软件对FIR数字滤波器进行实时验证,表明本方案所设计的FIR滤波器功能正确,性能良好。
收藏
分享
评分
the king of nerds
回复
引用
订阅
TOP
返回列表
测试测量
嵌入式技术
电商论坛
Pine A64
资料下载
方案分享
FAQ
行业应用
消费电子
便携式设备
医疗电子
汽车电子
工业控制
热门技术
智能可穿戴
3D打印
智能家居
综合设计
示波器技术
存储器
电子制造
计算机和外设
软件开发
分立器件
传感器技术
无源元件
资料共享
PCB综合技术
综合技术交流
EDA
MCU 单片机技术
ST MCU
Freescale MCU
NXP MCU
新唐 MCU
MIPS
X86
ARM
PowerPC
DSP技术
嵌入式技术
FPGA/CPLD可编程逻辑
模拟电路
数字电路
富士通半导体FRAM 铁电存储器“免费样片”使用心得
电源与功率管理
LED技术
测试测量
通信技术
3G
无线技术
微波在线
综合交流区
职场驿站
活动专区
在线座谈交流区
紧缺人才培训课程交流区
意见和建议