四相移相键控(QPSK)
QPSK将每两个比特流映射到四个矩形星座点上,本文的映射规则如下
双比特码 | 符号 |
---|---|
00 | 1+1j |
10 | -1+1j |
11 | -1-1j |
01 | 1-1j |
假设信源0和1比特等概出现,则QPSK系统的误比特率在AWGN信道下的理论误比特率同BPSK,即
P b = 1 2 e r f c ( E b N 0 ) P_{b}=\frac{1}{2}erfc(\sqrt{\frac{E_{b}}{N_{0}}}) Pb=21erfc(N0Eb)
S N R SNR SNR与 E b N 0 \frac{E_{b}}{N_{0}} N0Eb的换算关系
S N = E b N 0 ∗ R c R m ( 1 + α ) d \frac{S}{N}={\frac{E_{b}}{N_{0}}}*\frac{R_{c}R_{m}}{(1+\alpha)d} NS=N0Eb∗(1+α)dRcRm
其中, S N \frac{S}{N} NS是信号噪声功率比, E b N 0 \frac{E_{b}}{N_{0}} N0Eb是比特信噪比, R c R_{c} Rc是信道编码速率, R m R_{m} Rm是调制率, α \alpha α是滚降因子, d d d是扩频倍数。
两边取 10 l o g 10 10log_{10} 10log10转化为 d B dB dB形式,即
S N R = ( E b N 0 ) d B + 10 l o g 10 ( R c ) + 10 l o g 10 ( R m ) − 10 l o g 10 ( 1 + α ) − 10 l o g 10 ( d ) SNR=(\frac{E_{b}}{N_{0}})_{dB}+10log_{10}(R_{c})+10log_{10}(R_{m})-10log_{10}(1+\alpha)-10log_{10}(d) SNR=(N0Eb)dB+10log10(Rc)+10log10(Rm)−10log10(1+α)−10log10(d)
具体推导过程见文献1
Matlab仿真与理论误比特率对比
close all;clc;clear
qpsk_code=[1+1j 1-1j -1+1j -1-1j]./sqrt(2);%归一化使每个符号的功率为1
Num=100;
SNR_dB = -10:2:16;
SNR = 10.^(SNR_dB/10);
NoiPower = 1./SNR;
sigma = sqrt(NoiPower/2);
for snr_N = 1:length(SNR)
ber = zeros(1,Num);
for tmp = 1:Num
qpsk_bit = randi([0,1],5e4,1);
qpsk_bit2 = reshape(qpsk_bit,2,[]);
data_signal = qpsk_code([2 1]*qpsk_bit2 + 1);%比特映射到符号
noise = sigma(snr_N).*((randn(1,length(data_signal)))+ 1i*randn(1,length(data_signal)));;
R_sig=data_signal+noise;
bit_dec=zeros(length(R_sig),1);
for loop_d = 1:length(R_sig)
[~,position] = min(abs(R_sig(loop_d)-qpsk_code()));%MAP判决
bit_dec(2*loop_d-1) = floor((position-1)/2);
bit_dec(2*loop_d) = mod((position-1),2);
end
err_bit = sum(bit_dec~=qpsk_bit);
ber(tmp) = err_bit/length(qpsk_bit);
end
ber_Mu(snr_N,:) = mean(ber,2).';
end
semilogy(SNR_dB,ber_Mu,'ro-')
hold on;grid on
BER = 1/2.*erfc(sqrt(SNR/2));
semilogy(SNR_dB,BER,'bo-')
legend('QPSK仿真','理论误码率')
xlabel('E_b/N_0(dB)')
ylabel('BER')
仿真结果
参考文献
张少侃,吕聪敏,甘浩.数字通信系统中Eb/N0与SNR转换方法的研究[J].现代计算机,2019(12):33-36.