目录
1.π/4-QPSK原理简介
π/4-QPSK调制是将输入的二进制比特流转换为具有特定相位的载波信号。它把输入数据按每 2比特一组进行分组,每组数据对应一个特定的相位状态,共有 4 种不同的相位状态,分别相差 π/2。但与传统QPSK不同的是,π/4-QPSK的相位变化是相对于前一符号的相位,且相位跳变值为 ±π/4 或±3π/4。
常规QPSK有4种相位状态,相位跳变可能为±π/2 和±π。而π/4-QPSK把信号的相位平面平分成间隔为π/4的八种相位,并相间地分成两个相位组。信号相位每隔Ts = 2Tb秒必须从一个组跳变到另一个组,相邻码元之间信号相位的跳变量为±π/4和±3π/4,不会出现±π的相位跳变1。
π/4-QPSK的星座图可看作是将QPSK的星座图旋转π/4得到有8个符号点的星座图。相比 QPSK,其星座点之间的转移路径更为规则和受限,使得信号的包络起伏更小,在经过限带滤波和功率放大等处理时,能更好地保持信号的特性,减少频谱扩散和失真2。
由于相位跳变的限制,π/4-QPSK信号在传输过程中对噪声和干扰的敏感度相对较低,具有更好的抗干扰性能。在限带条件下,π/4-QPSK能有效减小信号包络的起伏,使得频谱特性得到改善,带外辐射更小,更适合在频谱资源有限的通信系统中应用4。
π/4旋转的QPSK调制,例如蓝牙、TETRA、PHS等系统中使用的π/4-QPSK调制。将整个QPSK的星座图旋转π/4,得到8个符号点的星座图,如下图所示,则相位的变化为±45°或±135°
2. π/4-QPSK解调原理
π/4-QPSK 的解调主要是通过对接收信号的相位进行检测和判断,恢复出原始的二进制数据。常用的解调方法有相干解调法和差分相干解调法。相干解调需要恢复出与发送端同频同相的载波,而差分相干解调则利用前后符号的相位差来进行解调,不需要精确的载波恢复。
π/4-QPSK 的相位跳变被限制在 ±π/4 或 ±3π/4,相对传统 QPSK,其相位变化较为平滑,信号的包络波动较小。在存在噪声和干扰的信道中,较小的相位跳变使得信号更不容易受到干扰的影响,能更好地保持信号的完整性,提高了系统的抗干扰能力和误码性能。
π/4-QPSK 信号的相位特性使得在接收端可以采用相干解调的方式进行信号解调。相干解调能够利用信号的相位信息,提高解调的准确性,并且与一些复杂的调制技术相比,其相干解调的实现复杂度相对较低,不需要过于复杂的信号处理算法和硬件电路,降低了系统的实现成本和复杂度。
除了相干解调外,π/4 - QPSK 还可以采用差分检测的方法进行解调。差分检测不需要精确的载波同步,对载波相位误差具有一定的容忍度,在一些难以实现精确载波同步的场景下,如移动环境中的快速衰落信道,差分检测的 π/4 - QPSK 具有更好的适应性,能够保证系统的正常工作。
3.MATLAB程序
56....................................................
for ij2 = 1:length(SNR)
for kk = 1:3000
[kk,ij2]
Nsamp= 100;
Num = 80; % 定义比特数
Num = (N-M)/R; % 定义比特数
bits0= rand(1,N-M)>=0.5; % 生成随机比特序列
bits = mod(bits0*G,2);
f1 = 1; % 定义载波频率
t = 0:1/Nsamp:4-1/Nsamp; % 定义时间序列
% QPSK
sa1 = cos(2*pi*f1*t); % 生成载波信号(对应比特1)
sa2 = sin(2*pi*f1*t); % 生成载波信号(对应比特1)
%串并
bitsI0=2*bits(1:2:end)-1;
bitsQ0=2*bits(2:2:end)-1;
dtheta = [225,135,315,45];
%参考文献https://www.doc88.com/p-3985541072059.html
for i=1:Num/2
if bitsI0(i)==-1 & bitsQ0(i)==-1
dthetak(i)=dtheta(1);
end
if bitsI0(i)==-1 & bitsQ0(i)==1
dthetak(i)=dtheta(2);
end
if bitsI0(i)==1 & bitsQ0(i)==-1
dthetak(i)=dtheta(3);
end
if bitsI0(i)==1 & bitsQ0(i)==1
dthetak(i)=dtheta(4);
end
if i==1
thetak(i)=dthetak(i);
else
thetak(i)=thetak(i-1)+dthetak(i);
end
end
thetak=mod(thetak,360);
thetak2=thetak/180*pi;
% 调制
CARRIERI=[];
QPSKI=[];
CARRIERQ=[];
QPSKQ=[];
for i=1:Num/2
bitsI(i) = cos(thetak2(i));
bitsQ(i) = sin(thetak2(i));
QPSKI=[QPSKI,bitsI(i)*sa1];
QPSKQ=[QPSKQ,bitsQ(i)*sa2];
CARRIERI=[CARRIERI,sa1];
CARRIERQ=[CARRIERQ,sa2];
end
%相加
RQPSK = QPSKI-QPSKQ;
RQPSK = awgn(RQPSK,SNR(ij2),'measured');
4.仿真结果
5.完整程序下载
完整可运行代码,博主已上传至优快云,使用版本为matlab2022a:
(本程序包含程序操作步骤视频)
基于π/4-QPSK调制解调+LDPC编译码通信链路matlab误码率仿真【包括程序,中文注释,程序操作视频】资源-优快云文库