基于MATLAB的安捷伦信号源IQ波形生成与下载回放系统
项目简介
本项目实现了一套完整的从MATLAB仿真到硬件射频输出的自动化测试链路。系统能够利用MATLAB生成复杂的基带I/Q波形(以16-QAM OFDM为例),将数据格式化为并在安捷伦(Agilent/Keysight)矢量信号源能够识别的二进制格式,并通过VISA接口(TCP/IP)将波形文件高速下载至仪器,最终通过可以编程仪器标准指令(SCPI)自动配置射频参数并激活信号回放。
该系统主要用于无线通信接收机测试、通信协议验证以及硬件在环(HIL)仿真,有效解决了从数学模型到物理信号转换的复杂性问题。
主要功能特性
- 高级波形合成:内置OFDM调制算法,支持生成包含循环前缀(CP)的16-QAM调制基带信号,并自动进行归一化处理以防止DAC溢出。
- 数据格式化与封装:自动执行浮点转定点量化(16-bit DAC)、I/Q数据交织以及大小端字节序转换,生成符合仪器ARB内存要求的二进制数据流。
- 高速波形下载:基于TCP/IP协议,通过VISA接口构建IEEE 488.2二进制块数据的SCPI指令,实现波形文件的高速传输。
- 全自动化控制:一键配置载波频率、输出功率、采样率,并自动加载波形、开启IQ调制器及射频输出端口。
- 仿真/实测双模式:提供硬件使能开关,支持在无硬件连接的情况下仅进行波形DSP生成与可视化验证。
- 可视化验证:提供时域波形图、星座图及功率谱密度(PSD)图,用于发射前的信号质量校验。
系统要求
- 软件环境:MATLAB(需安装 Instrument Control Toolbox 和 Signal Processing Toolbox)。
- 硬件设备:支持ARB功能的 Agilent/Keysight 矢量信号源(如ESG, MXG, PSG系列)。
- 连接方式:LAN网线连接(默认协议 TCPIP),需确保PC与仪器在同一网段。
- 驱动支持:PC端需安装 Keysight IO Libraries Suite 或相应的VISA驱动库。
详细实现逻辑与代码分析
本项目通过单一脚本 main.m 实现了全流程控制,主要包含以下六个核心处理阶段:
1. 系统参数配置
脚本首先定义了硬件连接参数和物理信号参数。
- 硬件连接:指定目标仪器的IP地址(默认
192.168.1.101)和VISA资源描述符,设置了10MB的通信缓冲区以支持大文件传输。 - 射频参数:设定中心频率为 2.4 GHz,输出功率为 -10 dBm,基带采样率为 100 MHz。
- 仿真开关:通过变量
enable_hardware 控制是否尝试连接物理设备。
2. 波形生成(DSP处理)
利用MATLAB生成符合OFDM标准的基带信号:
- 数据源:生成随机的二进制比特流。
- 星座映射:将比特流映射为 16-QAM 复数符号。
- OFDM调制:通过 64点 IFFT 运算将频域符号转换为时域波形,并添加长度为16的循环前缀(CP)以消除符号间干扰。
- 幅度控制:计算信号幅值最大值,将整体信号归一化并乘以0.9,预留余量防止仪器DAC削波失真。
3. 数据可视化验证
在下载前对生成的数据进行图形化校验:
- 时域图:绘制I路和Q路的前200个点,检查波形包络。
- 星座图:展示复数信号的分布情况,验证16-QAM调制星座点的正确性。
- 功率谱密度:使用
pwelch 函数分析基带信号的频谱特性。
4. 数据格式化与封装
这是连接软件与硬件的关键步骤,将MATLAB的双精度浮点数转换为仪器可识别的二进制流:
- 量化:将归一化后的[-1, 1]浮点I/Q数据映射到 16-bit 整数范围 [-32767, +32767]。
- 交织处理:按照仪器要求的顺序(I1, Q1, I2, Q2...)重组数据队列。
- 字节序转换:由于MATLAB(PC端)通常为小端序(Little-Endian),而仪器内部处理通常为大端序(Big-Endian),代码使用
swapbytes 函数对 int16 数据进行了字节翻转。
5. 硬件连接与波形下载
建立VISA连接并执行底层数据写入:
- VISA对象创建:配置输入/输出缓冲区大小和超时时间。
- SCPI指令构建:构建
:MMEM:DATA指令。代码采用IEEE 488.2二进制块格式(#),先发送指令头,随即发送纯二进制数据流,最后发送换行符结束。 - 错误检测:下载完成后立即查询系统错误(
:SYST:ERR?),确保数据写入无误。
6. 自动化配置与回放
通过SCPI指令完成信号源的最终设置:
- 参数下发:依次发送指令设置载波频率(
:FREQ)、幅度(:POW)和采样率(:RAD:ARB:SCL:RATE)。 - 波形加载:使用
:RAD:ARB:WAV 指令将下载到 WFM1: 目录的波形文件加载到播放内存。 - 激活输出:顺序开启ARB模式(
:RAD:ARB ON)、IQ调制器(:OUTP:MOD ON)和射频输出开关(:OUTP ON)。 - 完成确认:通过
*OPC? 查询确保所有硬件操作执行完毕。
使用方法
- 修改IP地址:在代码的“系统参数配置”部分,将
sig_gen_ip 修改为您实际连接的信号源IP地址。 - 网络检查:确保计算机能够 Ping 通信号源的IP。
- 模式选择:
* 若无硬件,设置
enable_hardware = false,运行脚本可查看生成的波形仿真图。
* 若有硬件,设置
enable_hardware = true。
- 运行脚本:直接运行
main.m。 - 观察结果:
* MATLAB控制台将输出连接状态、下载字节数及最终配置的频率功率。
* 信号源屏幕应显示已加载名为
MATLAB_IQ_TEST 的文件,RF指示灯亮起,并在指定频率输出信号。