APP下载

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

2017-02-15宋炳勇宋茂忠屈豫威

网络安全与数据管理 2017年2期
关键词:希尔伯特参数设置信号处理

宋炳勇,宋茂忠,屈豫威

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

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

宋炳勇,宋茂忠,屈豫威

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

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

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

0 引言

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

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

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

(1)

(2)

记H(jω)=|H(jω)|ejφ(ω),当|H(jω)|=1时:

(3)

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

(4)

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

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

2.1 MATLAB设计滤波器系数

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.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 希尔伯特变换滤波器IP核参数设置

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程序。

图4 NCO参数设置

3.2 仿真与验证结果

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

图5 MATLAB仿真结果

图6 Modelsim仿真结果

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.

[6] 任淑萍,王欣峰. 基于Matlab的数字滤波器设计与仿真[J]. 机械管理开发,2009,24(3):191-193.

[7] 袁博,宋万杰,吴顺君. 基于FPGA的MATLAB与QuartusII联合设计技术研究[J]. 电子工程师,2007,33(1):6-8.

[8] 基于Hilbert变换的单边带调制系统及FPGA实现[J]. 吉林大学学报, 2012,30(1):60-65.

[9] 赵颖,刘祖深. 基于FPGA_IP Core 的64 阶FIR 滤波器的设计[J]. 应用天地,2012,31(10):58-62.

[10] 颜彪,杨娟. 关于希尔伯特变换的分析和研究[J].电气电子教学学报,2004,26(5):27-29.

Design of Hilbert transformer based on FPGA

Song Bingyong, Song Maozhong, Qu Yuwei

(Nanjing University of Aeronautics and Astronautics, Nanjing 210016, China)

As an important transformation, Hilbert transform has been widely used in the communication system. In order to save spectrum resource and achieve unilateral radio frequency, the signal should be decomposed by Hilbert transformer. First step is design Hilbert filter coefficients through MATLAB. Secondly, calculated coefficients will be imported to FPGA (Field Programmable Gate Arrays). Then FPGA will call IP core and implement filter. Using Modelsim to simulate the program can obtain ideal phase shift waveform, and the simulation results show that 100 order FIR filter approaches Hilbert filter perfectly.

FPGA; FIR filter; Hilbert transformer

TN713

A

10.19358/j.issn.1674- 7720.2017.02.008

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

2016-09-06)

宋炳勇(1989-),男,硕士研究生,主要研究方向:卫星导航。

宋茂忠(1962-),男,硕士,职称 教授,主要研究方向:卫星导航。

屈豫威(1992-),男,硕士研究生,主要研究方向:卫星导航。

猜你喜欢

希尔伯特参数设置信号处理
一个真值函项偶然逻辑的希尔伯特演算系统
有趣的希尔伯特
有趣的希尔伯特
《信号处理》征稿简则
《信号处理》第九届编委会
《信号处理》征稿简则
《信号处理》第九届编委会
逃生疏散模拟软件应用
蚁群算法求解TSP中的参数设置
基于希尔伯特- 黄变换的去噪法在外测数据处理中的应用