基于Zynq-7000的宽带自适应噪声抵消系统设计

2015-05-05 01:59何宗苗
电视技术 2015年1期
关键词:驱动程序宽带滤波

何宗苗,窦 源,郑 风

(西南科技大学 信息工程学院 特殊环境机器人技术四川省重点实验室,四川 绵阳 621010)

基于Zynq-7000的宽带自适应噪声抵消系统设计

何宗苗,窦 源,郑 风

(西南科技大学 信息工程学院 特殊环境机器人技术四川省重点实验室,四川 绵阳 621010)

由于干扰噪声常常是随机变化和非平稳的,传统的滤波方法很难消除。针对这一问题,选用自适应格型联合算法(GAL-NLMS)。在Zynq-7000芯片PL部分实现了一个22阶的GAL-NLMS算法,在芯片的PS部分实现了驱动程序的设计和基于Qt的界面设计。处理速度达到175 Mbit/s,并在ZedBoard开发平台实现了宽带自适应噪声抵消系统。用被噪声干扰过的QPSK和16QAM调制信号对系统进行测试,结果表明系统有效。

非平稳;自适应;GAL-LMS;ZedBoard;噪声抵消

对于宽带自适应噪声干扰抵消系统,干扰噪声在接收信号中的具体体现是无法确知的,传统的滤波方法很难消除这种噪声,因此使用自适应滤波的方法。将同一干扰源发出的干扰信号作为滤波器的输入,包含未知干扰的原始信号作为自适应滤波器的参考信号。因此自适应噪声干扰抵消技术有着重要的应用,比如数字语音通信系统、天线阵的自适应旁瓣抑制器、水下电子对抗问题、心电图仪、调制信号辨识等应用。

本文采用赛灵思的Zynq-7000 All Programmable SoC实现了自适应格型联合处理算法[1](GAL-NLMS)。这款芯片将ARM双核Cortex-A9处理器(PS部分)与赛灵思28 nm FPGA可编程逻辑(PL部分)紧密地集成在一颗芯片上。ZedBoard是Zynq-7000处理器的一块低成本开发板[2],利用Xilinx[3]提供的ZedBoard开发板,实现了一套宽带自适应噪声干扰抵消系统。

1 适应格型联合处理算法

由于干扰噪声常常是随机变化和非平稳的,传统的滤波方法很难消除,所以需要寻求收敛速度快、计算复杂性低、跟踪性能好的自适应格型联合处理滤波算法(GAL-NLMS)。该算法的结构图如图1所示。

2 宽带自适应噪声干扰抵消原理

噪声干扰抵消原理如图2所示,x(n)中不包括有用信号s(n),只含有与N(n)相关的另一个噪声N′(n),d(n)中含有不相关噪声N(n)和希望提取的有用信号s(n)。由噪声抵消原理图知,输出信号y(n)为N′(n)的滤波信号。所以,噪声抵消系统的输出信号e(n)为

e(n)=s(n)+N(n)-y(n)

(1)

图1 GAL-NLMS算法

图2 噪声干扰抵消原理

(2)

由于有用信号s(n)与N(n),y(n)不相关,所以对式(2)两边取数学期望可以得到

(3)

3 系统总体架构

Zynq-7000分为PL与PS两部分,GAL-NLMS算法[4-6]分别在PL与PS上实现,在PL上实现GAL,在PS上实现NLMS,Qt界面和驱动程序。采用PS部分的AXI-GP0作为控制链路,AXI_HP0接口作为数据通道,来配置PL部分的AXI_DMA模块。Qt界面用于显示结果并接受用户输入数据。PS部分安装了键盘和鼠标,HDMI高清接口用来显示用户图形界面,SD卡存储应用程序和数据。设计方案如图3所示。

3.1 PL上的硬件设计

3.1.1 GAL-NLMS在PL上的设计

经过仿真,采用16 bit来量化输入输出的实部和虚部是足够的。16 bit的最高bit是符号位,低15 bit是数据位。确定了输入的位宽为实部和虚部各16 bit,就要想办法让输入数据适应这个位宽。

图3 系统总体架构

首先对输入数据进行归一化,除以各数中最大的绝对值,使输入全部变成小于1的数,然后乘以215,再用MATLAB转换为补码,输入给FPGA。GAL-NLMS算法由GAL部分和NLMS构成:一阶的GAL,消耗7个DSP48E1;一阶的NLMS消耗3个DSP48E1。Zynq-7000总共只有220个DSP48E1。得知算法极限在22阶,22阶的GAL-NLMS综合一下,最高频率达到175 MHz,资源使用情况如表1所示。

表1 22阶GAL-NLMS算法资源占用情况

3.1.2 AXI-Stream IP设计

将设计好的GAL-NLMS算法进行IP封装并支持AXI-Stream传输。AXI总线是PS与PL两者之间最方便快捷的通信手段。AXI-Stream是一种连续传输的接口技术,速度非常快,而且不需要地址线。这类IP不能通过内存映射方式控制,必须有一个转换装置,可以通过AXI-DMA模块[7]来实现内存映射到流式接口的转换。把SD卡的信号传输到DDR2内存,传输数据到自定义IP,处理结果仍传回DDR2中,交给主机显示。与DDR2的通信需要借助AXI-HP物理接口,PL部分为master,负责数据搬移。在Xilinx XPS开发工具中,选择AXI-Stream接口[8],利用向导生成用户自定义IP,并命名为my stream ip。

3.1.3 算法与总线模块封装

在AXI_Stream IP的开发基础上,对GAL-NLMS算法进行了整合,设计的IP包含主机与从机2个接口,首先通过从机接口获得PS部分传过来的输入数据,然后进行GAL-NLMS处理,然后按照Stream总线协议依次将处理结果通过主机接口传回PS部分的DDR2存储空间中。

为了便于流水线操作,各阶次对输入做了7clk的FIFO,每次计算时从FIFO末端取数据进行计算。为了使硬件达到最高吞吐率,输入数据点组织为每7个点一组,依次输入,当最后一个点进入FIFO时,第一个点的计算结果已在输出端有效,可以取出缓存,最后通过总线一起传回PS。

但是每块输入数据结束时,由于第一阶输入采用寄存器类型,如果没有恰当的措施控制,那么GAL-NLMS模块将一直运行,对该输入寄存器中存储的最后一个样值连续重复采样,无形中相当于增加了输入数据长度,破坏了输入数据的连续性,导致后面一组输入数据到来时,前面的错误计算结果会引入后一组计算中,导致误差传播,以致结果完全错误。解决方法是在每次从机读取数据时,进行流水线更新操作;而空闲时,流水线处于静默状态,并停止其clk信号。这样做的另一个好处是DSP48E1模块在数据到来之前不运行,降低了系统功耗。下面是my_stream_ip功能仿真波形图如图4所示。

图4 my_stream_ip功能仿真波形图(截图)

3.2 PS上的软件设计

3.2.1 驱动程序文件接口

硬件部分需要通过本小节的驱动程序来完成初始化和数据输入输出操作。驱动程序将硬件抽象为文件,应用程序需要访问时,只考虑文件的打开、关闭、读写等操作,并不关心具体实现,这样便于操作系统管理设备,加载驱动与卸载驱动可以动态进行而不需要重新启动内核。Linux驱动程序[9]也是以模块的方式组织的。在终端下执行insmod时自动调用模块初始化函数,而执行rmmod时自动调用模块退出函数。只有上面这两个函数,只能完成硬件初始化操作,其他的工作都做不了。应该为上层应用程序提供文件接口,文件读写接口函数声明如下:

staticint axi_dma_write(struct file*filp,char *buffer,size_t length,loff_t * offset);

staticint axi_dma_read(struct file*filp,char *buffer,size_t length,loff_t * offset);

staticint axi_dma_release(struct inode*inode,struct file *filp);

staticint axi_dma_open(struct inode*inode,struct file*filp);

staticstruct file_operations axi_dma_fops={

.owner = THIS_MODULE,

.read =axi_dma_read,

.write =axi_dma_write,

.open =axi_dma_open,

.release =axi_dma_release,

};

上面声明了和文件操作相关的5个接口函数,文件打开和关闭比较简单,打开时分配资源,关闭时释放资源,分别调用相应的内核函数即可。写入数据的函数应该每次先写入一组输入数据,然后调用22阶GAL-NLMS算法模块进行计算,剩下最后一个文件读取回调函数,在前面基础上实现起来也很容易。

3.2.2 基于Qt的应用程序设计

Qt是一个移植性很强的C++库,可运行在Linux,Windows等多种平台,采用Qt Creator工具[10]进行开发,该软件的主界面如图5所示。应用程序主要完成如下几个功能:选择并读取实测数据;显示实测数据波形;控制PL硬件部分的打开、关闭、读写数据;利用软硬件协同完成GAL_NLMS算法;显示处理结果(时域波形和星座图);显示算法处理耗时。

图5 Broadand Adaptive Noise Cancellation System界面(截图)

4 系统测试

Linux启动成功后自动运行Qt应用程序,观察是否显示完整,各项功能是否正常。用40 dB噪声干扰QPSK调制信号,10 dB的噪声干扰16QAM调制信号。分别用噪声干扰过的QPSK和16QAM调制信号对系统进行测试,测试结果如图6、图7所示。

图6中,QPSK调制信号受到噪声干扰,星座发生相位偏移,经过自适应噪声干扰抵消系统后,纠正了相位偏差。从图7可以看出,16QAM调制信号受到噪声干扰非常严重,开始时分不清星座形状,经过自适应噪声干扰抵消系统后,能清楚辨认是16QAM信号,说明设计的算法系统是有效的。

图6 QPSK测试结果(截图)

图7 16QAM测试结果(截图)

5 小结

在通信向高速、宽带发展的今天,本文设计的宽带自适应噪声干扰抵消系统,能够对低信噪比的噪声进行很好的处理,能够提高信号传输和接收的信噪比质量。最高处理频率达到175 MHz,该系统收敛速度快、跟踪性能好。实测表明,系统能够广泛地运用于现代信号处理中,具有一定的应用价值。

[1]何振亚. 自适应信号处理[M].北京:科学出版社,2002.

[2]何宾. Xilinx all programmable Zynq-7000 Soc设计指南[M]. 北京:清华大学出版社,2013.

[3]田耘,胡彬,徐文波,等. Xilinx ISE Design Suite 10.x FPGA开发指南[M].北京:人民邮电出版社,2008.

[4]李善姬. 一种用于自适应噪声抵消的变步长LMS算法[J]. 电讯技术,2011,50(11):30-33.

[5]高鹰,谢胜利. 一种变步长LMS自适应滤波算法及分析[J]. 电子学报,2001,29(8):1094-1097.

[6]李湘云. 自适应滤波器的FPGA实现及应用[D]. 南京:南京林业大学,2012.

[7]Xilinx. LogiCORE IP AXI DMA v6.03a[EB/OL].[2014-05-20].http://www.xilinx.com/support/documentation/ip_documentation/axi_dma/v6_03_a/pg021_axi_dma.pdf.

[8]ARM. AMBA 4 AXI4-Stream Protocol v1.0[EB/OL].[ 2014-05-21]. http://www.xilinx.com/support/documentation/ip_documentation/axis_protocol_checker/v1_0/pg145-axis-protocol-checker.pdf.

[9]俞辉,李永,何旭莉,等. 嵌入式Linux程序设计案例与实验教程[M]. 北京:机械工业出版社,2009.

[10]丁林松,黄丽琴. QT4图形设计与嵌入式开发[M]. 北京:人民邮电出版社,2009.

Design of Broadband Adaptive Noise Cancellation System Based on Zynq-7000

HE Zongmiao, DOU Yuan, ZHENG Feng

(CollegeofInformationEngineering,RobotTechnologyUsedforSpecialEnvironmentKeyLaboratoryofSichuanProvince,SouthwestUniversityofScienceandTechnology,SichuanMianyang621010,China)

Because of the interference noise is often random and non-stationary, the traditional filtering method is difficult to remove it. To solve this problem, an algorithm of joint adaptive lattice (GAL-NLMS) is adopted in this paper. A 22 order GAL-NLMS algorithm is achieved in the PL part of Zynq-7000 chip, and a design of driver and interface design based on Qt are achieved in the PS part of the chip. The processing speed can reach 175 Mbit/s, and broadband adaptive noise cancellation system is realized in ZedBoard which is a development platform. The system is tested using QPSK and 16QAM modulated signals and the results show that the system is effective.

non-stationary; adaptive; GAL-NLMS; ZedBoard; noise cancellation

国防基础科研计划项目(B3120133002);西南科技大学研究生创新基金项目(14ycx115)

TN911.7

A

10.16280/j.videoe.2015.01.012

2014-06-26

【本文献信息】何宗苗,窦源,郑风.基于Zynq-7000的宽带自适应噪声抵消系统设计[J].电视技术,2015,39(1).

何宗苗(1988— ),硕士生,主要研究方向为软件无线电、通信信号处理。

责任编辑:李 薇

猜你喜欢
驱动程序宽带滤波
我国行政村、脱贫村通宽带率达100%
装宽带的人
计算机硬件设备驱动程序分析
一种新颖的宽带大功率分配器
基于自适应Kalman滤波的改进PSO算法
RTS平滑滤波在事后姿态确定中的应用
基于线性正则变换的 LMS 自适应滤波
基于四元数互补滤波的无人机姿态解算
什么是宽带?
基于MPC8280的CPU单元与内部总线驱动程序设计