利用FPGA设计的一种可调FIR滤波器的实现方案

2018-01-03 17:22:15 来源:AET
标签:
基于灵活自适应的空口波形技术FOFDM(Filtered OFDM)是现代通信技术的研究热点,设计并实现可调FIR滤波器是实现该技术的核心工作之一。本文设计的基于FPGA的可调节FIR滤波器系数的自适应调整是通过控制算法对信道中的信号进行快速检测,然后将结果和滤波器的输出结果进行差值计算进行反馈调节。利用Quartus II和DSP Builder设计基于FPGA的16阶系数可调FIR滤波器,给出核心模块的设计电路图和仿真结果。仿真结果表明:基于灵活自适应空口波形技术可以在FPGA上实现,而且由于FPGA具有天然的并行性,实际的通信系统中可以采用并发模式进行,达到提高信号传送速率的目的。
 
0引言
4G移动通信方兴未艾,业界对于5G移动通信技术的讨论已经如火如荼。作为移动通信领域“皇冠”上的一颗明珠,基于灵活自适应的空口波形技术和成倍提升频谱效率的多址技术SCMA(Sparse Code Multiple Access)成为业内人士关注的焦点,其中,优化频带资源的利用率是FOFDM的核心。人们在研究算法优化的同时,也在关注算法的硬件实现。FPGA(Field Programmable Gate Array)在能耗、成本、运算速度等方面具有得天独厚的优势, 已经被广泛应用于各种数字信号处理和数字通信领域。本文重点研究FOFDM核心技术之一的可调FIR滤波器,设计并实现基于FPGA的可调节FIR滤波器。
 
近年来,基于FPGA的数字滤波器研究已经取得了很多成果。然而,从现有的文献来看,并没有可供参考的用于基于自适应的空口波形技术的方法。本文第1节为核心模块设计,第2节为MATLAB仿真结果和系统仿真结果,第3节给出了基本结论和下一步研究目标。
 
1基于FPGA的可调FIR滤波器设计
该设计总体思路是:利用输入波形的各项参数,借助MATLAB中的FDAtool工具计算出FIR滤波器所需参数,存入RAM。滤波器核心模块读取参数信息,调节滤波器的截止频率等参数,调节该模块的功能。
 
利用DSP_Builder开发核心滤波器模块的流程示意图如图1所示。
 
 
最基本的FIR滤波器的系统函数为:
 
 
可以用卷积表示为:
 
y(n)=x(n)*h(n)(2)
 
例如,一个典型的直接型4阶FIR滤波器,其表达式[11] 可写为式(3):
 
h(n)=h(0)x(n)+h(1)x(n-1)+h(2)x(n-2)+h(3)x(n-3)(3)
 
在图2中,总共存在3个延时单元、4个乘法器和一个4输入的加法器。
 
 
如果使用普通的数字信号处理器来实现这个4阶FIR滤波器,只能用串行的方式顺序地执行延时、乘、加操作。这必须用到多个指令周期,而无法在一个指令周期内完成。但是如果采用FPGA来实现,就可以利用FPGA指令可以并行的优点,在一个指令周期内得到结果。
 
根据公式(3)和图2,可以在Simulink中用DSP_Builder里的相关器件画出一个图3所示的4阶FIR滤波器模型。 
 
 
图3中“Delay”为延时单元,“Product”为乘法器单元,“ParallelAdderSubtractor”为加法器单元,“Input”与“Output”分别为输入输出。
 
(1)设计4阶FIR滤波器子系统
 
新建一个文件,将子系统模块(Subsystem)放入文件中,双击打开子系统模块,将上面已经设计好的4阶FIR滤波器放进去,并对端口进行修改。修改后的Subsystem模块有5个输入和2个输出,“input”与“output”都修改为“Altbus”(因为它们不再作为主输入端口,而是作为子系统的传输端口)。
 
(2)设计16阶FIR滤波器
 
4阶子系统完成后,按照图4搭建一个16阶的FIR滤波器。其中Constant模块的初始值为5,需要另外计算,下文讲解如何计算Constant值。
 
 
(3)计算Constant的值
 Constant的值就相当于h(n),是决定FIR滤波器具体性能的重要参数,该值为滤波器要调节的核心参数,它是通过滤波器的输出和输入信号的差值得到的。
 
(4)导出参数
 
点击左上角的File,单击Export,跳出Export界面,点击下方的Export按钮,可以将16个参数导出到MATLAB的主窗口。
 
(5)将参数填入FIR滤波器的模型中
 
在MATLAB仿真阶段,该参数可以手动输入到FIR滤波器Constant模块中,这样便完成了一个16阶低通FIR滤波器的设计。在系统设计阶段,步骤(4)计算结果会暂存在定制的RAM模块中。
 
 
关注与非网微信 ( ee-focus )
限量版产业观察、行业动态、技术大餐每日推荐
享受快时代的精品慢阅读
 

 

继续阅读
通过单片机控制数据流对FPGA进行编程配置

基于FPGA基本数据流的下载控制方式,利用遗传算法,通过单片机控制数据流的方式对FPGA进行编程配置,实现自身重构,使系统具有自适应、自组织和自修复的特性。

升级固件写FLASH如何避免让FPGA发生意外?
升级固件写FLASH如何避免让FPGA发生意外?

FPGA配置两种模式:主动配置和被动配置方式,采用主动配置下,我们就需要一片FLASH来存储FPGA固件,那么我们在升级固件写FLASH的过程中如何避免因意外情况发生导致升级失败而使FPGA变砖呢?下面就由笔者带领大家来挖山掘石、一探究竟。

当FPGA越来越像SoC,FPGA跟ASIC还有啥区别
当FPGA越来越像SoC,FPGA跟ASIC还有啥区别

随着处理器被添加到传统FPGA中,可编程性被添加到ASIC中,FPGA和ASIC的分界线日益模糊。

FPGA的两条发展之路,怎么走更稳?
FPGA的两条发展之路,怎么走更稳?

在第一条路上,FPGA不断优化,主要用于加速数据中心工作负载。 数据中心是大型供应商关注的下一个“圣杯”。

给 FPGA 配备一个最合适的电源管理产品

寻找为 FPGA 供电的最佳解决方案并不简单。许多供应商以适合为 FPGA 供电的名义推销某些产品。为 FPGA 供电的 DC-DC 转换器选择有何特定要求?其实并不多。一般而言,所有电源转换器都可用来为 FPGA 供电。

更多资讯
搞懂数据分析中因变量和自变量之间的关系

回归模型有多种,一般在数据分析中用的比较常用的有线性回归和逻辑回归。其描述的是一组因变量和自变量之间的关系,通过特定的方程来模拟。这么做的目的也是为了预测,但有时也不是全部为了预测,只是为了解释一种现象,因果关系。

树莓派 3B 接MPU6050方法 以及ROS应用
树莓派 3B 接MPU6050方法 以及ROS应用

主要是ROS应用,不多说了,可能要你自己重新编译工作空间的话,可以选择性的只编译这个包就行了。

典型的SDSoC设计开发的几个步骤
典型的SDSoC设计开发的几个步骤

类比到FPGA SoC的应用开发中,用户最关注的部分往往是算法的最终实现和算法模块的优化——包括IP或是软件功能块——SDSoC的设计理念正是让用户能够更加专注于这些核心问题,其他问题SDSoC帮你搞掂。从这个意义上看,SDSoC在“简单”的背后确实不简单。

HDL仿真器基于事件的仿真算法
HDL仿真器基于事件的仿真算法

目前,HDL仿真器主要有三种实现算法(机制):基于时间的算法(Time-Based)、基于事件的算法(Event-Based,EBS)和基于周期的算法(Cycle-Based,CBS)。

想要入门eFPGA,看这一篇就够了
想要入门eFPGA,看这一篇就够了

嵌入式FPGA(eFPGA)是指将一个或多个FPGA以IP的形式嵌入ASIC,ASSP或SoC等芯片中。

Moore8直播课堂
电路方案