第三部分—利用硬件在环验证S模式信号解码算法
简介
在MATLAB或Simulink®中实现信号处理算法之后,合乎逻辑的下一步是利用从实际要使用的SDR硬件平台获得的真实数据验证算法的功能。首先是利用从系统获得的不同输入数据集来验证算法。这样做有助于验证算法的功能,但不能保证算法在其它环境条件下也能像预期那样工作,也不能确定对于SDR系统模拟前端和数字模块的不同设置,算法的行为和性能会如何。为了验证所有这些方面,如果能让算法在线运行以接收实时数据作为输入,并且调整SDR系统设置以实现最佳性能,将是非常有好处的。本系列文章的这一部分讨论ADI公司提供的软件工具,其支持MATLAB和Simulink模型与FMCOMMSx SDR平台直接互动;此外还会说明如何利用这些工具验证第二部分所述的ADS-B模型。
MATLAB和Simulink IIO系统对象
ADI公司提供了完整的软件基础设施来支持MATLAB和Simulink模型与FMCOMMSx SDR平台(其连接到运行Linux的FPGA/SoC系统)实时互动。这之所以可能,有赖于IIO System Object™3(系统对象),它设计用于通过TCP/IP与硬件系统交换数据,从而发送(接收)数据至(自)目标,控制目标的设置,并监测RSSI等不同目标参数。图1显示了该软件基础设施的基本架构以及系统组件之间的数据流。
图1. 软件基础设施框图
IIO系统对象基于MathWorks系统对象规范4,其公开了数据和控制接口,MATLAB/Simulink模型通过这些接口与基于IIO的系统通信。这些接口在一个配置文件中指定,配件文件将系统对象接口链接到IIO数据通道或IIO属性。这样便可实现通用型IIO系统对象,只需修改配置文件,它便能配合任何IIO平台工作。ADI GitHub库5提供了一些平台的配置文件和示例,包括AD-FMC++OMMS2-EBZ/AD-FMCOMMS3-EBZ/AD-FMCOMMS4- EBZ/AD-FMCOMMS5-EBZ SDR板和高速数据采集板AD-FMCDAQ2-EBZ。IIO系统对象与目标之间的通信是通过libiio服务器/客户端基础设施来完成。服务器运行于Linux下的嵌入式目标上,管理目标与本地/远程客户端之间的实时数据交换。libiio库是硬件低层细节的抽象,提供了简单但完整的编程接口,可用于绑定各种语言(C、C++、C#、Python)的高级项目。
本文接下来将通过一些实际例子说明如何利用IIO系统对象来验证ADS-B MATLAB和Simulink模型。一个连接到ZedBoard7且运行Analog Devices Linux发行版的AD-FMCOMMS3-EBZ SDR平台6用作SDR硬件平台,以验证ADS-B信号检测与解码算法是否正常工作,如图2所示。
图2. ADS-B算法验证的硬件设置
利用IIO系统对象验证MATLAB ADS-B算法
为了利用从AD-FMCOMMS3-EBZ SDR平台获得的实时数据验证MATLAB ADS-B解码算法,开发了一个MATLAB脚本来执行如下 *** 作:
根据用户输入计算地球带
创建并配置IIO系统对象
通过IIO系统对象配置AD-FMCOMMS3-EBZ模拟前端和数字模块
利用IIO系统对象从SDR平台接收数据帧
检测并解码ADS-B数据
显示解码的ADS-B信息
构建IIO系统对象之后,必须利用SDR系统的IP地址、目标设备名称、输入/输出通道的大小和数目对其进行配置。图3给出了一个创建并配置MATLAB IIO系统对象的例子。
图3. MATLAB IIO系统对象的创建和配置
然后,利用IIO系统对象设置AD9361属性并接收ADS-B信号。AD9361属性基于以下考量而设置:
图4. MATLAB libiio设置AD9361属性
利用基于AD9361的平台,采样速率相当容易确定。发送数据速率一般等于接收数据速率,最终取决于基带算法。本例中,解码算法是针对12.5 MSPS的采样速率而设计,AD9361采样速率据此设置。这样,接收到的样本便可直接应用于解码算法,无需其它抽取或插值 *** 作。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)