linux下c网络编程实现串口与网口的信息透传_基于AD9361的简易频谱分析仪设计与实现...

摘要:频谱分析仪是用来检测电信号频谱特征的仪器,在通信、雷达以及电子产品研发等领域有着广泛的应用。本文设计了基于ZYNQ系列SoC(System on chip)和AD9361实现的简易频谱分析仪,频谱数据可以通过串口发送给上位机,并在上位机中通过MATLAB进行数据处理和分析。相比普通频谱分析仪,该简易频谱分析仪使用便捷,体积小,且十分便于功能扩展。经测试,该频谱分析仪带宽为40MHz,其通带范围为LO(Local Oscillator )-20MHz到LO+20MHz,该频谱分析仪可以较为准确地分析信号功率范围为0dBm到-65dBm。

linux下c网络编程实现串口与网口的信息透传_基于AD9361的简易频谱分析仪设计与实现..._第1张图片

引言
频谱分析仪是用来测量电信号频谱特征的仪器,主要用于测量相关频段内的信号频谱。使用频谱分析仪,可以观测到信号在频域中的分布情况、信号能量及其他频谱信息。随着电子通信产业的不断发展,频谱分析仪广泛运用在通信、电子、雷达及电子产品研发等领域,是电子工程师重要的频域分析工具。
随着对于信号分析的不断发展,应实现频谱分析仪与上位机的通信。频谱分析仪可以通过网口、USB接口及串口向上位机发送数据,在上位机中,MATLAB、GNU radio等多种工具软件可以被用于处理该数据,扩展了频谱分析仪的功能[1]。而且传统的频谱分析仪价格昂贵,个人和小型团体均无力承受。基于此,本文使用Xilinx ZYNQ系列SoC及AD9361射频收发机完成了低成本简易频谱分析仪的设计与实现。与传统的频谱仪相比,该频谱仪价格低廉、便于携带。

1 系统设计

本系统设计采用ZedBoard开发板和AD9361射频收发机。ZedBoard开发板是Digilent公司基于ZYNQ-7000系列SoC制作的低成本开发板,该开发板的主芯片为ZYNQ系列XC7Z020芯片,该芯片使用两块ARM Cortex-A9 MPCore作为处理器(PS Processing System),并采用Xilinx 7系列FPGA作为可编程逻辑部分(PL Programmable Logic),实现了高灵活性、高性能和强大的配置功能[2]。

AD9361是一款高性能、高度集成的2收2发射频收发机,该收发机具有可编程、宽带宽等特点,其工作频率范围为70MHz~6GHz,支持的通道带宽为200KHz~56MHz。AD9361可以根据用户需求设置滤波器、本振、增益等参数,以契合用户设计[3]。设计主要基于Xilinx ZYNQ-7000系列的可编程SoC平台,在平台上插接AD9361板卡,利用AD9361进行对应带宽数据的采集,采集到的数据经过XC7Z020的PL部分进行时频转换,然后利用ARM将频谱分析结果通过串口发送至计算机。频谱分析带宽为0~40MHz,分辨率为25kHz。

linux下c网络编程实现串口与网口的信息透传_基于AD9361的简易频谱分析仪设计与实现..._第2张图片

本文采用基于快速傅里叶变换(FFT)完成频谱分析仪的设计。其中,主要模块包括射频输入及转换模块、频谱分析模块、ZYNQ PS(Processing System)控制模块、串口传输模块以及上位机处理模块。其基本结构如图1所示。

linux下c网络编程实现串口与网口的信息透传_基于AD9361的简易频谱分析仪设计与实现..._第3张图片

图1 系统结构

linux下c网络编程实现串口与网口的信息透传_基于AD9361的简易频谱分析仪设计与实现..._第4张图片

图2 AD9361接收框图

linux下c网络编程实现串口与网口的信息透传_基于AD9361的简易频谱分析仪设计与实现..._第5张图片

图3 ZYNQ PL 部分的频谱分析模块

其中,各部分的具体功能如下:

射频输入模块及转换,使用AD9361射频收发机完成搭建,其中,通过AD9361内置的本地振荡器(LO)完成对射频信号的射频到中频的转换,通过ADC完成模数转换,并通过后续的抽取滤波器进行下采样,最终得到I/Q两路分别为60MSPS采样率的信号,通过FMC接口送入ZedBoard,进行下一步处理。

频谱分析模块,该模块使用ZYNQ SoC的PL部分完成,主要完成频谱分析仪的频谱计算功能,其中通过FMC接口接收到射频输入及转换模块的数据信息,对其进行时序转换、加窗和FFT变换后,通过DMA发送至ZYNQ SoC的PS模块内的存储空间中,供PS部分读写。

ZYNQ PS控制模块,该模块为整个模块的控制中枢,完成对射频输入模块及频谱分析模块的控制。其中,对AD9361的控制为:调节AD9361的本振(LO)的输出,调节输入通路低通滤波器的带宽,调节增益模式及增益大小,调节各级采样率等。对频谱分析模块的控制为:调节计算FFT的点数等。PS模块可以读取频谱数据,并将频谱数据传输给网口通信模块。该模块在ZYNQ PS上移植的Linux系统中完成。

串口通信模块:通过该模块,可以完成由频谱分析仪到上位机的频谱数据的传输,也可以由上位机到频谱分析仪,如果需要高的传输速率,可以使用网口进行传输。

上位机处理模块:该模块在上位机中,通过使用MATLAB工具对所得的频谱数据进行进一步的处理、显示和完成频谱图。

2 系统实现

2.1 基于AD9361的射频输入及转换模块AD9361为系统的射频输入及转换模块,主要对输入的模拟信号进行混频、滤波、模数转换和降采样等预处理。并将处理完成的数字信号通过数字接口送入ZedBoard,供ZYNQ的PL部分进行进一步的信号处理。

如图2所示,为AD9361的接收通路,AD9361接收通路完成射频信号到基带信号的部分。基带信号处理包括两个可编程的模拟低通滤波器,一个12bit ADC,以及4级的数字下变频滤波器。每个数字下变频滤波器都可以被略去。其中I/Q两路的接收通路是相同的[4]。
根据设计需求,需要调节的有:增益控制模式及增益、本振大小、低通滤波器系数、各部分采样率以及FIR滤波器系数等。

linux下c网络编程实现串口与网口的信息透传_基于AD9361的简易频谱分析仪设计与实现..._第6张图片

图4 AD采集的数据实测图

linux下c网络编程实现串口与网口的信息透传_基于AD9361的简易频谱分析仪设计与实现..._第7张图片

图5 PC端收到串口输出数据

linux下c网络编程实现串口与网口的信息透传_基于AD9361的简易频谱分析仪设计与实现..._第8张图片

图6 频谱仪测试结果

在本次设计中,各部分的系数为:收发模式:使用FDD单收单发的收发模式;
增益模式:自动增益模式;LO频率设置:给上位机提供相应接口,可以根据用户需求进行设置;

低通滤波器设置:低通滤波器3dB带宽为40MHz;

ADC采样时钟频率:480MHz;

HB3/DEC3下采样滤波器:进行2倍抽取,输出数据的采样频率为240MHz;
HB2下采样滤波器:进行2倍抽取,输出数据的采样频率为120MHz;
HB1下采样滤波器:进行2倍抽取,输出数据的采样频率为60MHz;

linux下c网络编程实现串口与网口的信息透传_基于AD9361的简易频谱分析仪设计与实现..._第9张图片

表1 频谱分析仪测试数据

RX FIR滤波器设置:对该FIR滤波器进行略过,输出数据的采样频率为60MHz;
数字接口:采用LVDS传输模式。
通过对AD9361的相关寄存器进行配置,可以完成对设计的实现,以下对AD9361的一些关键寄存器进行介绍。

地址0x003为AD9361的Rx Enable and Filter Control寄存器,该寄存器用于控制接收通路的使能及数字寄存器的信息。由于使用FDD的单发单收模式,且HB3、HB2和HB1皆为2倍抽取,且将FIR滤波器略去,故该寄存器应配置为0X9C。

地址0x005为AD9361的RFPLL Dividers寄存器,可以配置该寄存器的值,对VCO进行分频,得到接收通路的LO频率信息。

bc2220dd8f3ee5955115de2c9a863dbf.png

地址0x012为AD9361的 Parallel Port Configuration寄存器,可以配置AD9361数字接口的方式,本设计中,采用LVDS的双端口模式,因此,这里设置该寄存器的值为0x10。地址0x013为AD9361的ENSM Mode寄存器,可以通过配置该寄存器AD9361的FDD状态机和TDD状态机之间的转换。

本设计中,采用FDD模式,因此设该寄存器的值为0x01。AD9361的VCO频率相关寄存器地址为0x231~0x235,该组寄存器设置的VCO值可以为6GHz~12GHz,经过0x005寄存器所设置的值进行分频后,作为AD9361 RX的LO。其计算公式为:

linux下c网络编程实现串口与网口的信息透传_基于AD9361的简易频谱分析仪设计与实现..._第10张图片

此外,ADI公司提供了基于Xilinx SDK的AD9361控制函数,可以使用这些函数对AD9361进行配置,这样可以简化AD9361的配置过程,提高工作效率,并提高配置的准确性。

2.2 ZYNQ PS与AD9361的通信

ZYNQ PS与AD9361采用SPI和GPIO接口进行通信。ZYNQ内包含两个SPI控制器,可以工作在主/从模式或多主机模式下。本次设计采用ZYNQ PS中的一组SPI控制器对AD9361的相关寄存器进行读写。在ZYNQ上,我们可以通过MIO引出最多54个GPIO引脚,所有的GPIO都可以单独配置成输入、输出以及中断的功能。本设计中,采用GPIO对AD9361的TXNRX、NABLE以及RESETB引脚进行配置,以达到对AD9361控制的目的。

2.3 基于ZYNQ PL的频谱分析模块
频谱分析模块主要由时序处理模块、加窗模块、FFT模块及DMA模块完成,FFT的点数由ZYNQ PS部分通过AXI_GPIO模块控制,图3为ZYNQ PL频谱分析部分的框图。

数字信号输入为模拟信号,经过射频输入及转换模块后得到的数字信号,该数字信号的采样率为60MSPS,由LVDS方式通过FMC接口输入至该模块输入端。

时序处理模块将PL中相关模块的时序和AD9361收发机的数字接口时序进行相互转换,使其频谱分析模块可以正常工作。

由于在使用FPGA进行信号处理中,不可能对无限长的信号进行测量和分析,只能对信号进行截断,并对截断部分进行周期拓展并进行处理。但这样得到的信号会发生频谱泄露现象。为了减小频谱泄露的影响,需在计算FFT变换之前采用加窗技术,常见的窗有:hanning窗、hamming窗以及Gaussian窗等。本设计采用8192点hanning窗,以减少由于信号截断所带来的频谱泄露现象。

FFT模块对输入的数据进行FFT或IFFT变换,得到时域数据的频谱信息或频域数据的时域信息。其中FFT模块的计算点数为8~8192点,FFT模块使用Xilinx官方提供的IP 核。

ZYNQ PS模块为频谱分析模块提供控制信息,并接收由AXI_DMA传输的频谱数据。ZYNQ PS与AXI_GPIO通过AXI4协议进行数据传输,与AXI_DMA通过AXI_Lite协议进行控制信号传输。FFT与DMA之间使用AXI_Stream协议进行数据传输。DMA与ZYNQ PS HP接口之间通过AXI协议进行传输,这样可以拥有很高的吞吐率和性能,但需要花费额外的逻辑资源。

2.4 ZYNQ与PC通信
为了更方便地进行频谱分析以及对频谱分析仪的控制,设计参考文献[7]采用串口方式将得到的频谱分析数据发送到PC端,频谱分析首先数据经过DMA传输到PS的内存中,然后通过串口将数据发送到PC端。串口速率传输较慢,FFT转换并不是持续转换,一次转换数据全部通过串口发送完毕后,再进行下一次转换。

3 系统测试

为了方便观察结果,我们在工程中加入了ILA模块监视AD采集到的数据,如图4所示,在Vivado中的Hardware Manager中抓取的AD输入数据,图5为串口收到对应FFT后的数据。将AD9361的本振设置为1.9GHz,外接信号源设置为1.902GHz,且频率为-50dBm,得到的频谱数据经过上位机处理后得出图6所示的结果,其中MATLAB所计算出来的2MHz的功率值为-49.7101dBm。

表1为利用该频谱分析仪测试的一些数据,测试时本振设置为1.9GHz。
测试结果表明,该频谱分析仪通带范围为LO-20MHz到LO+20MHz,在该通带范围内可以较为准确地分析的信号功率为0dBm到-65dBm,平均误差小于1.5dB。当信号源频率与LO频率相差为20MHz时,绝对误差约为1dB左右。经过分析,是AD9361内部的模拟低通滤波器部分对信号造成了消减,因此产生了误差。

4 总结与展望
论文采用ZedBoard平台以及AD9361射频收发机设计并实现了一款简易频谱分析仪,该频谱分析仪核心部件为AD9361和ZedBoard,外加一台电脑,成本低廉,方便可靠,成品作为个人或小型团队使用。如果对传输速率有更高的要求,可以利用ZedBoard的网口将频谱分析后的数据传送到PC端(参考文献略)。

linux下c网络编程实现串口与网口的信息透传_基于AD9361的简易频谱分析仪设计与实现..._第11张图片

关于射频百花潭

专注于射频微波/高频高速技术,是该专业领域最大的技术交流和信息分享平台。由资深射频高速专家,深圳励知科技徐兴福创建,公司主要从事PCB Layout设计(包括高速及射频)外包,高速信号完整性仿真,Rogers/FR4 PCB加工,电话15989459034(微信同号)

你可能感兴趣的:(matlab数字信号频谱图,stm32制作usb分析仪)