龙空技术网

希尔伯特变换滤波器的FPGA设计

电子技术应用 622

前言:

今天大家对“matlab 滤波器系数幅频响应”大致比较着重,你们都想要学习一些“matlab 滤波器系数幅频响应”的相关知识。那么小编在网上搜集了一些关于“matlab 滤波器系数幅频响应””的相关文章,希望我们能喜欢,朋友们一起来学习一下吧!

宋炳勇,宋茂忠,屈豫威

(南京航空航天大学,江苏 南京 210016)

:在通信系统中,希尔伯特变换是被广泛应用的重要的变换。为了节约频谱资源,实现射频单边谱,通常需要借助希尔伯特变换器对信号进行分解。利用MATLAB设计希尔伯特变换滤波器的系数参数,将计算好的系数导入FPGA中,由FPGA调用IP Core实现。通过Modelsim对程序进行仿真,得到了理想的90°移相波形。仿真结果表明,100阶的FIR滤波器可以理想地逼近希尔伯特变换。

:FPGA;FIR滤波器;希尔伯特变换器

:TN713文献标识码:ADOI: 10.19358/j.issn.1674-7720.2017.02.008

引用格式:宋炳勇,宋茂忠,屈豫威.希尔伯特变换滤波器的FPGA设计[J].微型机与应用,2017,36(2):22-24,27.

0引言

随着通信系统的发展,有限的频谱资源日益紧张,为此大多数通信系统采用单边带信号,同时还可以降低发射功率和占用带宽。在单边带调制系统中需要对信号进行正交分解,在信号解析中通常采用希尔伯特变换法,因此希尔伯特变换得到了广泛的应用。

在传统的设计中,希尔伯特变换滤波器采用一个全通型的FIR滤波器来逼近,FIR滤波器具有严格的线性相位和稳定性等优点,可以使信号实现90°相移。文献[1]中对希尔伯特变换算法在信号处理中做了分析,文献[2]中对希尔伯特变换做了详尽的理论分析,文献[3]中采用加法器实现乘法器的功能,设计了希尔伯特变换器。文献[3]中的方案实现起来较为复杂且耗用资源较多。本文通过FPGA中的IP Core设计实现希尔伯特变换滤波器,可以节省宝贵资源。FPGA调用MATLAB计算出的希尔伯特变换滤波器系数参数,进而调用IP核设计出希尔伯特变换滤波器。而且FPGA采用并行处理技术,这样就大大提高了系统的运行速度和处理速度,FPGA芯片内部的逻辑模块和I/O端口可以自主配置,设计更加灵活,因此,FPGA在高速的实时信号处理中得到了广泛的应用[1]。

1希尔伯特变换滤波器原理

希尔伯特变换器是基于FIR型滤波器设计实现希尔伯特变换算法,希尔伯波特变换是分析和处理信号的一个重要的理论工具,在通信系统中希尔伯特变换通常用来构造解析信号[2]。希尔伯特变换器可以提供90°的相位变换而不影响频谱分量的幅度,即对信号进行希尔伯特变换就相当于对信号进行正交移相,使之成为自身的正交对[3]。设连续时间信号f(t)的希尔伯特变换为f︿(t)[4]

式(1)称为希尔伯特变换式,式中,*为卷积。f︿(t)可以看成是f(t)通过一滤波器的输出,滤波器的冲击响应为h(t)=1πt。由j1πt的傅里叶变换为符号函数sgn(ω),所以,希尔伯特变换滤波器的频率响应为

式(1)的频谱密度函数为:

式中F(jω)为原信号f(t)的频谱密度函数。式(4)说明一个信号的希尔伯特变换可以让该信号通过一个全通相移滤波器来实现,该滤波器对信号的所有正频率分量产生90°的滞后相移,而对所有的负频率分量产生超前90°的相移。

2希尔伯特变换滤波器的设计

2.1MATLAB设计滤波器系数

MATLAB是信号处理与分析的重要工具,其中,FDATool是滤波器设计与分析的专用工具箱。FDATool工具箱具有操作简单、灵活等优点,可以采用多种不同的算法设计实现不同的滤波器,只需要输入设计滤波器的各项参数即可[5]。在MATLAB开始菜单中找到Filter Design打开即可弹出FDATool界面。

根据工程要求,本文设计的滤波器阶数为100阶,通频带是0.5 MHz~9.5 MHz,采样频率选取20 MHz,设计方法采用Equiripple FIR。滤波器的各种特性如图1、图2所示。

由图1可看出,在幅频响应和相频响应满足要求的同时,滤波器的单位脉冲响应为极对称,即h(n)=-h(N-n-1),各项特性均满足希尔伯特变换滤波器的要求。滤波器设计完成并满足技术要求后可以保存,还可以导出滤波器的系数并存为文本文件或MATLAB变量[6],为后续的FPGA设计提供方便。

2.2希尔伯特变换滤波器的FPGA实现

传统的硬件描述语言(VHDL)对于很多算法(如DSP模块)很难设计,甚至是无法实现。为解决此问题,ALTERA公司在2002年推出了MATLAB和Quartus联合设计的DSP Builder数字信号处理工具,该工具很好地解决了算法问题[7]。本文的设计便是在ALTERA公司的Stratix III平台上完成的,使用的FPGA芯片为EP3SE260F1152I4。

DSP Builder中集成了许多函数(Megacore Function)文件,包括IIR、FIR滤波器,NCO函数,FFT函数等,这些函数可以快速、便捷、灵活地设计系统所需模块功能[8]。

本文的希尔伯特变换滤波器设计是采用Megacore中的FIR Compiler v11.1模块实现的[9]。将MATLAB设计的100阶希尔伯特变换滤波器系数导出并保存为.fcf文件,MATLAB计算出的系数为double型,且有空格,把所有空格删除掉后保存为.fcf文件。把编辑好的文件导入到FIR Compiler模块的参数设计中,FIR Compiler模块自动将MATLAB的double型系数量化成FPGA中对应的Fix Point型参数[10],系数位宽选择16 bit,同时设置输入通道数为1,输入端口位宽为16 bit,参数设置如图3所示。参数设置完成后DSP builder模块根据参数生成可编译的希尔伯特变换滤波器。3希尔伯特变换滤波器仿真结果

3.1测试信号的产生

本文的输入正弦波信号是调用Altera公司的IP,利用Megacore中Signal Generation模块的Cordic算法产生的正弦波信号,在Cordic算法函数中设置各种参数,如图4所示,其中在精度设置中Phase Accumulator Precision、Angular Resolution、Magnitude Precision分别设置为32、16、16,时钟速率采用100 MHz,输出数据速率为1 MHz,频率控制字为42 949 673,设置完成后可自动生成可编译的Verilog程序。

3.2仿真与验证结果

希尔伯特变换滤波器的MATLAB仿真结果如图5所示,输入信号频率为1 MHz。图6为Modelsim仿真结果,图6中由上到下分别为时钟信号、两个时钟使能信号、复位信号、输入信号和输出信号,图中时钟信号为100 MHz,输入信号为1 MHz,由图可看到,输出信号比输入信号滞后90°。图5和图6中输出信号和输入信号相比较均可看出输出信号有一个90°的相位移动,硬件仿真结果与软件仿真相比较表明仿真结果与理论结果基本一致。

4结语

本文对希尔伯特变换滤波器的设计进行了研究,通过MATLAB软件进行了滤波器的设计并仿真验证,得到100阶的FIR滤波器可以无限地逼近希尔伯特变换滤波器的结论。利用MATLAB设计的滤波器相关参数,通过DSP Builder模块导入系数文件,在FPGA中设计出了希尔伯特变换滤波器,并且通过Modelsim仿真得到了正确的移相90°的输出信号。该设计已经在卫星导航信号模拟源项目中得到了实际应用。

参考文献

[1] SARKAR S, MUKHERJEE K, RAY A. Generalization of Hilbertt tansform for symbolic analysis of noisy signals[J]. Signal Processing, 2009, 89(12):12451251.

[2] 王薇,王晓茹,黄晓青,等. 无功功率测量的Hilbert数字滤波器研究[J]. 电测与仪表,2007,44(3):912.

[3] 姚琮,张兴敢,肖文书.中频采样中希尔伯特变换器的FPGA实现[J]. 集成技术应用, 2004(9):7477.

[4] UWE M B. Digital signal processing with field programmable gate arrays[M]. Heidelberg: Springer,2003.

[5] 刘波,文忠,曾涯.Matlab信号处理[M]. 北京:电子工业出版社,2006.

标签: #matlab 滤波器系数幅频响应 #matlab滤波器系数导出后怎么用 #matlab滤波器系数