首页
|
新闻
|
新品
|
文库
|
方案
|
视频
|
下载
|
商城
|
开发板
|
数据中心
|
座谈新版
|
培训
|
工具
|
博客
|
论坛
|
百科
|
GEC
|
活动
|
主题月
|
电子展
注册
登录
论坛
博客
搜索
帮助
导航
默认风格
uchome
discuz6
GreenM
»
FPGA/CPLD可编程逻辑
» 二维FIR滤波器的FPGA实现
返回列表
回复
发帖
发新话题
发布投票
发布悬赏
发布辩论
发布活动
发布视频
发布商品
二维FIR滤波器的FPGA实现
发短消息
加为好友
porereading
当前离线
UID
863084
帖子
7183
精华
0
积分
3592
阅读权限
90
在线时间
209 小时
注册时间
2011-11-30
最后登录
2019-8-28
论坛元老
UID
863084
1
#
打印
字体大小:
t
T
porereading
发表于 2015-2-14 21:49
|
只看该作者
二维FIR滤波器的FPGA实现
滤波器
,
而且
,
领域
,
通信
O 引言
二维有限长单位脉冲响应滤波器(2D—FIR)用于对二维信号的处理,如在通信领域中广泛采用2D-FIR完成对I、Q两支路基带信号的滤波[1]。由于涉及大量复数运算并且实时性要求高,如果不对算法作优化在技术上很难实现。目前主要设计方案是利用FPGA厂商提供的一维FIR知识产权核(IP),组成二维滤波器[2]。这种方案没有考滤复数运算的特点,不可能在算法上优化,而且IP核的内部代码是不可修改的,因此在不同厂商的器件上不可移植。2D_FIR的复数运算都需转成实数运算来实现的,而其中实数乘法运算占用逻辑资源远比实数加法多。通过分析复数乘法特点,减小其所需实数乘法器个数就可以减小逻辑资源占用率并提高运算速度。这种方案优点在于直接优化算法,不会受IP核限制可移植性很强。
1 2D—FlR的设计
采用FPGA设计复数FIR滤波器常见的方案[2]为:用FPGA厂商提供的4个实数FIR滤波器IP核组合成2D—FIR滤波器。很明显这种设计没有考虑复数运算的特点,2D—FIR滤波器占用资源至少4倍于实数FIR滤波器,硬件资源耗费过大,性能也会受到不小的影响。因此从算法上分析并优化滤波器的结构非常必要。
1.1 算法优化
2D—FIR滤波器结构采用卷积型,它对输入数据的处理就是进行卷积运算[3],如(1)式所示:
(1)式中各量全为复数:xρ(n)为输入数据为滤波器抽头系数。由(1)式可以看出其运算过程是先作复数乘法运算,再将乘积结果作复数加法得到一个复数乘法由4个实数乘法和2个实数加法构成。而相同位数的实数乘法器与实数加法器相比会占更多的硬件资源,也会对电路性能产生更多的负面影响。通过优化后的复数乘法如下:
比较(2)式和(3)式可以得到两个式子中xR×CI、xI×CR是共有项,故优化后的复乘法器需3个实数乘法器和5个实数加法器。如果抽头系数为常数cR-cI,可以事先计算,还可以省一个加法器。通过Quartus II编译、分析可以看到复乘法器性能提升了近14%,同时器件资源占用却下降了17%。因为滤波器共需15个复乘法器所以总体上减小的逻辑单元非常可观。
1.2 FPGA实现
考虑到2D—FIR滤波器的运用背景,除HDTV信道中要求抽头数大于100以外抽头数定为15已能满足一般通信系统的要求,输入数据和抽头系统数据宽度都为16位。其中,输入数据整数位(含符号位)为4位,小数位为12位,抽头系数整数位为(含符号位)3位,小数位为13位,输出数据与输入数据位宽选取一样。FPGA实现浮点小数运算代价太大,解决小数运算的方法是将小数表示为带符号的整数[2],运算后再对结果进行截尾处理。
由于2D—FIR滤波器中有很多乘法和加法器,它们都是大型组合逻辑电路,所以需要在电路上进一步优化。引入多级流水线是提升电路工作速度很有效的方法[4],文献[2]所采用的转置卷积型滤波器结构实质是在乘法器之间加入了一级流水线,但相对于多级流水线其对电路性能提升并不大。本文加流水线具体的做法是用寄存器将组合电路分成若干延时相近的小型组合电路,同时将乘法和加法器分别设置为3级和2级流水线以满足流水线配平原则。FPGA选用Altera公司专用于数字信号处理的EPlS20芯片,经过Quartus II编译后从报告中看到滤波器工作频率为146MHz,占用芯片54%的逻辑资源。
2 仿真及结论
电路仿真结果如图1所示,输入数据为[1+3*i,5,0,0,0 0,0,2,3.5,1+2*i,0,0…],抽头系数在模块中设为[0.851*i,0,0,1,-i,1.15-0.4.i,0,0,0,i, 0, 0, 0, 0,图1 2D—FIR滤波器电路时序仿真结果
0.1*i]。为了方便验证仿真结果,事先计算出输出数据并转化为带符号位的整数[-10457+3486i,0+17428i,0,4096+12288i,32768—4096i,9626—7987i…]。从图3中的仿真结果可以看到,经过十几个时钟周期的延时后复数FIR滤波器的输出为[3486+10457 i,17428,0,4096+12288i,32767-4096i,9626-7987i…],前面两个数据与计算结果不一致是因为:复滤波器刚开始工作时内部移位寄存器默认的数据是0而不是外部输入的数据,当数据全部装载入滤波器后,计算结果完全满足设计要求。
通过对算法与电路的优化使2D—FIR滤波器的性能提高了13%,逻辑资源的占用减小了16%。文中所提出的方案比常规方法更有效,而且具有更强的可移植性。
收藏
分享
评分
回复
引用
订阅
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
无线技术
微波在线
综合交流区
职场驿站
活动专区
在线座谈交流区
紧缺人才培训课程交流区
意见和建议