一种利用MATLAB软件和安捷伦E4438C仪器产生自定义信号的方法
张少侃;梁中英;高心炜
【摘 要】为了产生模拟接收机在复杂无线电波环境下的测试接收物理波形信号,给出一种使用MATLAB软件和安捷伦E4438C矢量信号源产生自定义物理波形信号的方法.以QPSK调制信号为例,给出MATLAB软件产生数字波形文件的详细代码,并且给出数字波形文件下载到E4438C仪器和使用E4438C产生物理波形文件的具体详细步骤.最后,通过示波器和EVM测试仪验证所产生的QPSK物理波形的正确性.
【期刊名称】《现代计算机(专业版)》
【年(卷),期】2016(000)010
【总页数】5页(P76-80)
【关键词】MATLAB;E4438C矢量信号源;自定义波形
【作 者】张少侃;梁中英;高心炜
【作者单位】广州海格通信集团股份有限公司,广州 510663;广州海格通信集团股份有限公司,广州 510663;广州海格通信集团股份有限公司,广州 510663
【正文语种】中 文
在我们当前生存的无线电环境中,充满着各种各样复杂的无线电波,因此任何真实的电子系统都必须能够在复杂的无线电信号环境中工作。在当前无线电波环境中,空中除了本电子系统发射的信号外,还同时存在着各种噪声和其他电子系统发出的干扰信号,因此在接收机的开发和测试过程中,要充分考虑到真实复杂环境中噪声和其他干扰信号的影响。为了测试接收机能否在真实无线电波环境中工作,也即接收机能否在复杂无线电波环境下工作,我们需要有一个真实的可以自定义产生任何形式信号的信号源[1]。
文献[2]介绍了一种复杂波形产生器的设计与实现方法,但其只能产生复杂载波并不能产生自定义的信息内容,而且使用可编程逻辑硬件开发,不能达到复杂无线电波形的快速搭建要求。另外,虽然现有的很多仪器已经可以很容易地合成出各种标准的通信信号,甚至是各种衰落形式的信号,但是实际的无线电波环境中往往情况更加复杂。例如雷达系统中对复杂波形信号的要求体现为宽的信号带宽、波形捷变能力以及较低的相位噪声和杂散电平等[3-4]。
因此,研究复杂自定义信号物理波形的产生意义重大。本文利用MATLAB软件产生任意形式的数字信号域波形文件,将数字信号波形文件下载到安捷伦公司的E4438C矢量信号源[5]中,让它产生我们想要的任意形式物理信号。
MATLAB软件是一款集信号仿真和信号分析的强大工具软件,用它我们可以产生任意形式的数字域波形文件,如我们常见的QPSK、GMSK调制信号以及更加复杂的FDMA、CDMA等多址接入信号。另外其强大的信号处理工具箱,使得我们可以通过MATLAB产生形式的数字波形信号。
下面我们以常见的QPSK调制信号为例,给出使用MATLAB产生可以下载到安捷伦E4438C仪器中的波形文件。首先给出QPSK的映射星座图为[pi/4, pi*7/ 4, pi*3/4, pi*5/4],成型滤波采用平方根升余弦滚降成型滤波器,内插倍数为4,滚降因子为0.35,迟延为6。相应的MATLAB脚本代码如下:
insValue=4; %内插倍数
alpha=0.35; %滚降因子
groupDelay=6; %迟延
filterCoeff =rcosine(1,insValue,'fir/sqrt',alpha,groupDelay);%生成平方根升余弦滚降成型FIR滤波器系数
filterDelay=(length(filterCoeff)-1)/2; %滤波器的延迟
qpskAngle=[pi/4, pi*7/4, pi*3/4, pi*5/4]; %QPSK星座映射图
msg=randint(1,1000); %随机产生0、1序列
code=reshape(msg, 2, length(msg)/2); %串行转并行
id=bi2de(code','left-msb'); %二进制转十进制
codeAngle=qpskAngle(id+1); %星座图角度映射
sig=exp(1i*codeAngle); %QPSK调制映射
sig=upsample(sig, insValue); %信号插零
txSig=conv(sig,filterCoeff); %成型滤波
txSig=txSig(filterDelay+1:length(txSig)-filterDelay); %去除延迟
通过执行以上MATLAB代码,我们得到了QPSK调制信号的数字域波形txSig,信号txSig的信号图和IQ两路的时域波形图分别如图1和图2所示。
有了以上信号,我们还需要对txSig做定点量化处理,这里我们选择实部和虚部的量化位宽均是16比特。量化的MATLAB脚本语句为:
quantityBit=16; %量化位宽
sigPulseI=real(txSig); %取出实部
sigPulseQ=imag(txSig); %取出虚部
factorDIV=max(max(abs(sigPulseI)),max(abs(sig-PulseQ))); %取IQ两路最大幅值作为归一化因子
if(factorDIV ==0)%此种情况对应IQ两路全为零
sigPulseI_quantity=zeros(size(sigPulseI));
sigPulseQ_quantity=zeros(size(sigPulseQ));
else %此时进行量化处理
sigPulseI_quantity =floor(sigPulseI /factorDIV *(2^(quantityBit -1)-1));
sigPulseQ_quantity =floor(sigPulseQ/factorDIV *(2^ (quantityBit-1)-1));
end
sigPulse_quantity =sigPulseI_quantity +1j* sigPulseQ_ quantity; %合并为复数
得到16比特量化后的复信号sigPulse_quantity后,我们需要将其实部和虚部分别写入到txt文件中,以便下载到安捷伦E4438C仪器中。这里对两个txt文件的名字有要求,IQ两路信号的txt文件名需为***_i. txt和***_q.txt的格式,例如本例中我们选择的名字为和。以下给出将sigPulse_quantity信号写入txt文件的MATLAB脚本代码。
Isig=real(sigPulse_quantity); %取出实部
Qsig=imag(sigPulse_quantity); %取出虚部
fileNameI=''; %实部波形文件名
fileNameQ=''; %虚部波形文件名
fid = fopen(fileNameI, 'wt'); %打开实部文件
if(fid==-1)%打开文件失败
error('实部信号波形文件打开失败');
end
for i=1:length(Isig)
fprintf(fid, '%d\n', Isig(i)); %写入数据
end
fclose(fid);
fid = fopen(fileNameQ, 'wt'); %打开虚部文件
if(fid==-1)%打开文件失败
error('虚部信号波形文件打开失败');
end
for i=1:length(Qsig)
fprintf(fid, '%d\n', Qsig(i)); %写入数据
end
fclose(fid);
至此,我们便使用MATLAB软件得到了QPSK调制信号实部和虚部波形文件和,后面我们需要将这两个波形文件使用安捷伦E4438C产生物理波形。
在上面部分我们得到了QPSK调制信号实部和虚部的两个波形文件,本部分主要解决将两个
波形文件下载到安捷伦E4438C仪器中。文献[6]中虽然介绍了E4438C构建功放生产测试平台的方法,但其并未对MATLAB产生的数字波形文件下载到E4438C中做详细介绍。本文介绍的下载方法使用的是安捷伦E4438C仪器的网口与计算机网口连接的方式,其连接框图如图3所示。
计算机想要通过网口和安捷伦E4438C连接,计算机需要首先安装安捷伦E4438C的驱动程序,安装完驱动程序后进入“Agilent IO control”界面如下:
matlab 下载
通过界面指引操作把通过网口连接的E4438C仪器到,如出现图5所示界面,则表示驱动安装成功。