DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 121|回复: 0
打印 上一主题 下一主题

FIR带通滤波器的FPGA实现

[复制链接]
跳转到指定楼层
楼主
发表于 2011-4-25 20:30:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
FIR带通滤波器的FPGA实现
引 言
在FPGA应用中,比较广泛而基础的就是数字滤波器。根据其单位冲激响应函数的时域特性可分为无限冲击响应(Infinite Impulse Response,IIR)滤波器和有限冲击响应(Finite Impulse Response,FIR)滤波器。DSP Builder集成了Altera和Matlab/Simulink基于FPGA的信号处理的建模和设计。该工具可以将数字信号处理算法(DSP)系统表示成为一个高度抽象的模块,在不降低硬件性能的前提下,自动将系统映射为一个基于FPGA的硬件设计方案。即支持设计者在Matlab中完成算法设计,在Simulink软件中完成系统集成,然后通过SignalCompiler(模块名)生成在QuartusⅡ软件中可以使用的硬件描述语言,最终实现硬件系统的设计。FIR滤波器是DSPBuilder应用中最为常用的模块之一,在此基于上述基础,设计实现了基于模块的FIR数字带通滤波器。

1 基于DSP Builder的滤波系统设计
1.1 FIR滤波器原理
有限冲激响应(Finite Impulse Response,FIR)滤波器是由有限个采样值组成,实现的方式是非递归、稳定的,在满足幅频响应要求的同时,可以获得严格的线性相位特性,因此在高保真的信号处理等领域得到广泛应用。
对于一个FIR滤波器系统,它的冲击相应总是有限长的,其系统函数可记为:

最基本的FIR滤波器可表示为:



式中:z(n)是输入采样序列;h(n)是滤波器系数;L是滤波器阶数;y(n)表示滤波器输出序列,为x(n)和h(n)的卷积。FIR滤波器基本结构如图1所示。



对于一个4阶滤波器子系统其输出可表示为:



可见在这个子系统中共需要4个延时器,4个乘法单元和一个4输入的加法器,并可以根据实际需要选择调用子系统构成多阶滤波器。
1.2 滤波的总体要求及实现
1.2.1 设计要求和滤波参数选取
该带通滤波器的技术指标为16阶FIR数字带通滤波器,对模拟信号的采样频率fs为102.4 kHz,通带频率为24~44 kHz,上限截止频率24 kHz,下限截止频率44 kHz,输入/输出序列位宽分别是9位、19位。滤波器系数由滤波器设计工具FDATools生成。因FIR数字滤波器的设计方法主要有窗函数法和等波纹一致逼近法等,比较最佳效果选定Equiripple等波纹法实验。输入信号采用DSPBuilder库中的增加/减少(Increment Decrement)模块和LUT模块,分别构成一个线性递增的地址发生器和正弦查找表模块。这样组建一组正弦信号,考虑组建通带内频率f1=24.414 kHz与带外频率f2=48.828 kHz叠加。之所以选这两个频率主要根据LUT中的信号的步进制即在一个周期(0~2π)中对信号采样点来决定的。
1.2.2 带通滤波器的模型设计
根据FIR滤波器原理和4阶子系统的输出公式,在Matlab的Simulink环境下,调用Altera DSP Builder库中的4个 Delay延迟模块、4个Product乘法模块、5个9位的Input输入端口、1个20位的Output输出端口和一个4输入的加法器,使9位的输入序列x(n)和FIR滤波器的系数h(0),h(1),h(2),h(3)作为输入,完成4阶滤波器子系统。调用4个这样的子系统级联起来构成16阶的滤波器。其中,滤波器系数h(0),h(1),…,h(15)由滤波器设计工具FDATools生成,系数与滤波器关联,建立出完整的滤波系统模型。
2 Simulink的模型仿真
在Simulink环境下设计仿真时间等参数,运行仿真得到滤波输出的幅频相应图和时域图如图2,图3所示。
图2中纵横坐标分别代表了幅值和频率值显示,Magnitude,Frequency单位分别是dB(幅值单位也称衰减倍数)和MHz(横坐标每格单位相比kHz被放大104便于观察)。纵横轴每格量为5 dB和50 MHz。从该频谱图中可看出,滤波后通带内幅频曲线相对平缓,带外衰减较大,由滤波前的连续幅频变成了选择通过的单一幅频曲线,起到了过滤带外频谱的作用。



该图坐标轴的纵横轴分别代表了幅度值和时间轴。单位分别为十进制数和s。图3(a)是两正弦信号经平行加法器合成的波形图3(b)滤波后的波形。可见高频信号衰减很大起到了过滤带外时间离散信号的作用。综上该带通滤波器在频域和时域都实现了相应的滤波功能,至此完成了模型仿真。
3 在ModeISim中实现RTL级仿真
Simulink中仅实现了算法级的仿真,而ModelSim需要对生成的VHDL代码进行功能仿真即RTL级仿真。如图4的波形。



图4定性表述了6个信号波形。clock为时钟周期,第二个信号是全局复位。重点观察第三、六个信号,分别是输入信号(加了数/模转换的)的模拟显示和经滤波后输出信号的模拟显示。这和Simulink中仿真结果是一致的。第四个信号是滤波后(加数/模转换)的信号,第五个是最后一个4阶滤波子系统的输出。同样可设置ModelSim对应的数字显示,每个时钟周期对应的数值即为每个时钟周期对正弦信号的一个采样点计算一次的值。

4 在QuartusⅡ中实现时序仿真
ModelSim中也仅实现RTL级仿真,并不能精确反应电路的全部硬件特性。Altera提供自动和手动两种综合适配流程,在此选用自动流程在QuartusⅡ中进行硬件设计。设定990 ns仿真结果如图5所示与图3ModelSim的数字显示对应信号和结果均是一致的,只是QuartusⅡ的时序仿真更为精确。



5 FPGA硬件实现
系统仿真通过后,需转到硬件上加以实现,这是整个DSP Builder设计中最为关键的一步。QuartusⅡ仿真中生成了.sof编程文件,用于FPGA编程配置,完成了对开发板StratixⅡEP2S180特定芯片的编译和管脚的分配。将.sof文件下载到开发板中,编程模式为USB Blaster相应模式为JTAG,用示波器检测D/A输出,可观察到实测的输入/输出波形与仿真结果均对应一致。至此完成了该滤波器完整的FPGA开发设计,并验证了该滤波器达到预期设计要求。

6 结 语
这里介绍在Altera DSPBuilder。环境下基于模型化设计FIR数字带通滤波器的方法,通过模块化的方法实现了向VHDL硬件描述语言代码的自动转换、RTL级功能仿真、综合编译适配和布局布线、时序实时仿真直至对目标器件的编程配置和硬件实现。验证了滤波器满足预期设计要求。创新点在于便捷地设计模块或修改基本参数,完成其他DSP系统设计。综上采用DSP Builder作FPGA设计,可以更快速、可靠、有效地实现系统功能。体现了FPGA技术的便捷和发展。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2024-11-13 02:22 , 耗时 0.091245 秒, 18 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表