1.算法描述
OQPSK调制技术是一种恒包络调制技术,受系统非线性影响小,具有较高的带宽利用率和功率利用率,在卫星环境、无线环境下得到广泛应用。因此,在通信信号侦收设备所处理的信号中,存在大量的OQPSK信号。在传统的侦收设备中,接收机的解调单元都是采用模拟处理方法和器件实现的。大都使用了模拟滤波器、鉴相器(乘法器)和压控振荡器(VCO)。这种传统的模拟解调单元电路体积大,形式复杂;调试过程复杂、调试周期长;器件内部噪声大,易受环境影响,可靠性差。因此,这种传统的侦收设备不能完全发挥数字通信的优势,实现信号的最佳接收。随着大规模集成电路(VLSI)技术和工艺的进步,数字集成电路的复杂度和功能达到了前所未有的高度,以专用集成电路(ASIC)、数字信号处理器(DSP)、和现场可编程逻辑门阵列(FPGA)为代表的IC,已经在工业生产中得到大规模的应用。这些技术和工艺的快速发展,给侦收设备中解调单元的全数字化提供了可能。
全数字化的调制解调器与传统的模拟电路调制解调器相比主要有以下优点:硬件电路稳定、通用、易维护;电路的稳定性好,基本不受环境、器件个体性能差异因素影响,无需复杂的电路调试。算法由软件实现,可以在通用的硬件平台上用不同的算法实现不同的调制解调器。数字调制解调算法通过计算机设计仿真,易于调试。易于实现自适应接收,可以切换或者调整系统软件,加载不同的算法,实现对多种不同体制信号的自适应接收。利于集成,随着数字器件的高速发展,数字接收机的集成度越来越高,使通信设备的小型化成为可能。本课题正是以某型侦收设备中OQPSK解调器的全数字化为背景展开研究,设计并实现全数字OQPSK调制解调器。
OQPSK也称为偏移四相相移键控(offset-QPSK),是QPSK的改进型。它与QPSK有同样的相位关系,也是把输入码流分成两路,然后进行正交调制。不同点在于它将同相和正交两支路的码流在时间上错开了半个码元周期。由于两支路码元半周期的偏移,每次只有一路可能发生极性翻转,不会发生两支路码元极性同时翻转的现象。因此,OQPSK信号相位只能跳变0°、±90°,不会出现180°的相位跳变。
OQPSK信号可采用正交相干解调方式解调。它与QPSK信号的解调原理基本相同,其差别仅在于对Q支路信号抽样判决时间比I支路延迟了/2,这是因为在调制时Q支路信号在时间上偏移了/2,所以抽样判决时刻也应偏移/2,以保证对两支路交错抽样。
OQPSK克服了QPSK的l80°的相位跳变,信号通过BPF后包络起伏小,性能得到了改善,因此受到了广泛重视。但是,当码元转换时,相位变化不连续,存在90°的相位跳变,因而高频滚降慢,频带仍然较宽。
采用非归零码直接进行调制所得的QPSK信号的幅度非常恒定,但其信号频谱较大。然而,当QPSK进行波形成形时,它们将失去恒包络的性质。偶尔发生的弧度为π的相移,会导致信号的包络在瞬间通过零点。任何一种在过零点的硬限幅或非线性放大都会引起旁瓣再生和频谱扩展,必须使用效率较低的线性放大器放大QPSK信号,这将使放大器的效率受到限制,进而影响到终端的小型化。
为了克服QPSK对信道的线性度要求很高,交错QPSK(OQPSK)或参差QPSK虽然在非线性环境下也会产生频谱扩展,但对此已不那么敏感,因此能支持更高效率的放大器。
在OQPSK中,其I支路比特流和Q支路比特流在数据沿上差半个符号周期,其它特性和QPSK信号类似。在QPSK信号中,奇比特流和偶比特流的比特同时跳变,但是在OQPSK信号中,I支路比特流和Q支路比特流,在它们的变化沿的地方错开一比特(半个符号周期)。
由于在标准QPSK中,相位跳变仅在每个Ts=2TB秒时发生,并且存在180°的最大相移。可是在OQPSK信号中,比特跳变(从而相位跳变)每Tb秒发生一次。因为I支路和Q支路的跳变瞬时被错开了,所以在任意给定时刻只有两个比特流中的一个改变它的值。这意味着,在任意时刻发送信号的最大相移都限制在±90°。因此OQPSK信号消除了180°相位跳变,改善了其包括特性。
从星座图看出,180°相位跳变消除了,所以OQPSK信号的带限不会导致信号包络经过零点。OQPSK包络的变化小多了,因此对OQPSK的硬限幅或非线性放大不会再生出严重的频带扩展现,OQPSK即使在非线性放大后仍能保持其带限的性质,这就非常适合移动通信系统,因为在低功率应用情况下,带宽效率和高效非线性放大器是起决定性作用的。还有,当在接收机端由于参考信号的噪声造成相位抖动时,OQPSK信号表现的性能比QPSK要好。
2.仿真效果预览
matlab2022a仿真结果如下:
3.MATLAB核心程序
clear ;
len = 2000; %设置数据长度
Freq_Data = 16.32e6; %采样频率--转换抽样频率为:16.32MHZ
nsamp = 16; %采样率
Freq_Sample = Freq_Data * nsamp;
%%
Freq_Carr = 8e6; %载波频率
FC_NCO = 8e6; %本地NCO频率
Ts = 1 / Freq_Sample;
T = nsamp * Ts;
alpha = 0.5;
delay = 2;
wc = Freq_Carr * 2 * pi;
wc_nco = FC_NCO * 2 * pi;
Delta_Freq = - Freq_Carr/100; %频偏
%%
%得到OQPSK调制两路信号
I_Data = ones(len,1);
for i = 1 : 2 : len
I_Data(i) = -1;
end
Q_Data = I_Data;
I_D = u_rrcsend(I_Data,len,nsamp,0,Ts);
Q_D = u_rrcsend(Q_Data,len,nsamp,0,Ts);
carlen = length(I_D)/nsamp;
%载波信号
Delta_Phase=0; %初始相位为0
I_Carrier=cos((wc+Delta_Freq)/Freq_Sample*(1:carlen*nsamp)); %I路载波
Q_Carrier=-sin((wc+Delta_Freq)/Freq_Sample*(1:carlen*nsamp)); %Q路载波
%调制
I_MOD = I_D.*I_Carrier;
Q_MOD = Q_D.*Q_Carrier;
%生成OQPSK信号
send = I_MOD + Q_MOD;
figure(1);stairs(I_Data);
figure(2);stairs(Q_Data);
figure(3);plot(I_D);
figure(4);plot(Q_D);
figure(5);plot(I_Carrier);
figure(6);plot(Q_Carrier);
figure(7);plot(I_MOD);
figure(8);plot(Q_MOD);