CPOFDM-16QAM性能仿真,输出接收端的星座图

目录

1.算法概述

2.部分程序

3.算法部分仿真结果图

4.完整程序获取


1.算法概述

       CP-OFDM(Cyclic Prefix Orthogonal Frequency Division Multiplexing,循环前缀正交频分复用)通信系统采用多个正交子载波(Orthogonalsub-Carrier)并行传输数据,可以高效传输数据并且有效对抗频率选择性衰落信道带来的影响。但是在数据传输过程中,对子载波的正交性有严苛的要求,所以CP-OFDM系统对载波及采样时钟的频率偏差(即频偏)非常敏感,必须通过频偏估计与纠正技术,使得频率偏差处于接收机可容忍范围内,从而保证数据的正确传输。
       CP-OFDM 技术利用多个平行窄带子载波来传输信息,而不使用单个宽带载波。该技术定义充分,已在 4G LTE 下行链路和Wi-Fi通信标准成功实施,因此也适合用于 5G NR 设计。

       不过,5G NR 上行链路还提供了一种不同的波形格式,这种波形格式类似 4G LTE 上行链路使用的波形模式⸺离散傅立叶变换扩频正交频分复用(DFT-S-OFDM)波形。DFT-S-OFDM 波形是一种 4G 采用的波形,结合了循环前缀正交频分复用和低峰均比(PAPR)的优点。DFTS-OFDM 波形对上行链路有帮助,对于高功率的 2 级功率应用或者当用户设备位于基站蜂窝的边缘位置,远离信号塔时,DFT-S-OFDM 可能是首选波形。

       在灵活性上,5G NR 提供的子载波间隔方案还超越了 LET 提供的固定 15 kHz 子载波间隔。5G NR 提供的子载波间隔包括 FR2,最大间隔达到 240 kHz。灵活的载波间隔可用于适当支持 5G NR 所需的多元化频带、频谱类型及部署模式。

        DFT-S-OFDM 非常类似于 LTE 上行链路使用的单频分复用接入(SCFDMA),CP-OFDM 非常类似于 LTE 下行链路使用的正交频分复用接入(OFDMA)。3GPP 之所以选择 CP-OFDM,原因如下:

CP-OFDM 能够面向复杂程度较低的接收器延展。

在一些最重要的 5G 性能指标上(例如:与多天线技术的兼容性),CP-OFDM 排名最高。

CP-OFDM 的时域控制良好,这一点对于低延时关键应用和时分双工(TDD)部署具有重要意义。

``图1 CP-OFDM链路

2.部分程序

clc;
clear;
close all;
warning off;
addpath(genpath(pwd));


v1 = 1;
v2 = 3;
nBit = 1024*2;
lSymbol = 4;
nChannel = 4;
baseFreq = 100; % 1Hz
tSymbol = nChannel/baseFreq; % time for one symbol
nSymbol = nBit/(nChannel*lSymbol);
bitSequence = bit_generate(nBit);

mapQAM = mapping_16QAM(v1,v2);

for k = 1:nBit/lSymbol
    rInd = fix((k-1)/nChannel) +1;
    cInd = k-(rInd-1)*nChannel;
    fr = (k-1)*lSymbol +1;
    bSymbol(rInd,cInd).bit = bitSequence(fr:fr+lSymbol-1);  
end

fBase = 100; %100Hz for base frequence
fFirst = 200; %500Hz for first channel
Fs = 1024;
rTg = 1/8; %Ratio of guard 
Tsym = 1/fBase;
Tg = Tsym*rTg;
Tsig = nSymbol*(Tsym+Tg);

bSymbol = generateSymbolWave(bSymbol,mapQAM,fBase,fFirst,rTg,Fs);
 
sOFDM = [];
for k=1:nSymbol
    tmpSignal = 0;
    for j= 1:nChannel
        tmpSignal = tmpSignal + bSymbol(k,j).symbol;
    end
    sOFDM = [sOFDM tmpSignal];
end

%sOFDM is the signal CP-OFDM
% figure(1);
% dt = 1/(fBase*Fs);
% t=(0:length(sOFDM)-1)*dt;
% plot(t,sOFDM);
% title('Signal CP-OFDM');
% xlabel('Time [s]');
% ylabel('Amplitude');


fftOFDM = fft(sOFDM);
fftOFDM = fftshift(fftOFDM);
freq = (-length(sOFDM)/2:length(sOFDM)/2-1)*fBase;



% figure(2);
% plot(freq, 2*abs(fftOFDM)/Fs);
% title('Spectrum of sine');
% xlabel('Frequency [Hz]');
% ylabel('Amplitude');
%  

% figure(3);
  pOFDM = sOFDM.^2;
% plot(t, 10*log10(pOFDM));
% title('Power of CP-OFDM signal');
% xlabel('Time [s]');
% ylabel('Power [dB]');
 

powerOFDM = 0;
for k= 1: length(pOFDM)
    powerOFDM = powerOFDM + pOFDM(k);
    
end
powerOFDM = powerOFDM/length(pOFDM);
snr_lin = 10^(5/10);    % 5dB
var = powerOFDM/snr_lin;
%var =2000;
noise = (var/sqrt(2))*(randn(1,length(sOFDM)) +i*randn(1,length(sOFDM)));
sOFDM_fft = fft(sOFDM) + noise*Fs/2;
%sOFDM = sOFDM + abs(noise);
sOFDM = ifft(sOFDM_fft);                  %add noise into signal

% figure(4);
% 
% plot(t,noise);
% title('Signal CP-OFDM with Gaussian noise');
% xlabel('Time [s]');
% ylabel('Amplitude');


sorted_noise = sort(abs(noise));
dx = 0:0.001:20;
count =1;
Fx = zeros(1,length(dx));

k=1;
while ( k<= length(sorted_noise))
    if count 

3.算法部分仿真结果图

CPOFDM-16QAM性能仿真,输出接收端的星座图_第1张图片

 CPOFDM-16QAM性能仿真,输出接收端的星座图_第2张图片

 A125

4.完整程序获取

使用版本matlab2022a

解压密码:C+123456

获得方式1:

CPOFDM-16QAM性能仿真,输出接收端的星座图

获取方式2:

如果下载链接失效,加博主微信,或私信。

你可能感兴趣的:(Matlab通信和信号,5g,CPOFDM,16QAM)