通信原理(6)载波传输OFDM

0 OFDM基本原理

OFDM(Orthogonal Frequency Division Multiplexing)即正交频分复用技术,实际上OFDM是MCM(Multi Carrier Modulation)多载波调制的一种。通过频分复用实现高速串行数据的并行传输,它具有较好的抗多径衰弱的能力,能够支持多用户接入。在LTE、5G NR、802.11ax通信协议的物理层中都用到了OFDM技术。

OFDM主要思想是:将信道分成若干正交子信道,将高速数据信号转换成并行的低速子数据流,调制到在每个子信道上进行传输。正交信号可以通过在接收端采用相关技术来分开,这样可以减少子信道之间的相互干扰(ISI)。每个子信道上的信号带宽小于信道的相关带宽,因此每个子信道上可以看成平坦性衰落,从而可以消除码间串扰,而且由于每个子信道的带宽仅仅是原信道带宽的一小部分,信道均衡变得相对容易。
在这里插入图片描述
在这里插入图片描述

OFDM中的各个载波是相互正交的,每个载波在一个符号时间内有整数个载波周期,每个载波的频谱最大值点和相邻载波的零点重叠,这样便减小了载波间的干扰。由于载波间有部分重叠,所以它比传统的FDMA提高了频带利用率。

OFDM符号:如果系统带宽为20M,那么系统包含100个RB,每个RB包含12个子载波,即一个OFDM符号上共有1200个子载波。同时,一个OFDM符号包含的比特数也与资源元素选用的调制方式有关系,如果所有资源单元(子载波)都选用64QAM调制,则一个资源元素包含6个bit。这样,一个OFDM符号的比特数=100126 bit=7200 bit。
在这里插入图片描述
在这里插入图片描述

1 OFDM调制

IDFT、IFFT

2 OFDM解调

DFT、FFT

3 OFDM仿真

MATLAB程序

clc;
clear;
close all;


M  = 8;			% 子载波数
fc   = 1e6;		% 主载波频率/Hz
fsub = 1e3;		% 子载波频率间隔
fsig = fc:fsub:fc+(M-1)*fsub; % 频率序列

T  = 0.001;		% 子载波持续时间
fs = 10e6;		% 采样频率/Hz
ts = 1/fs;		% 采样时间间隔
t  = 0:ts:T-ts;	% 一个符号周期的时间矢量

% 载波信号
c  = zeros(M,length(t));
NN = length(t)*16;
XN = zeros(M,NN);
f0 = fs/NN;
f  = (0:NN-1)*f0;
for k = 1:M
	c(k,:)  = exp(1j*2*pi*fsig(k)*t);
	XN(k,:) = fft(c(k,:),NN);
end

figure;
plot(f,abs(XN(1,:)), f,abs(XN(2,:)), f,abs(XN(3,:)), f,abs(XN(4,:)), f,abs(XN(5,:)), f,abs(XN(6,:)), f,abs(XN(7,:)), f,abs(XN(8,:)));
legend('1000kHz子载波', '1001kHz子载波', '1002kHz子载波', '1003kHz子载波', '1004kHz子载波', '1005kHz子载波', '1006kHz子载波', '1007kHz子载波');
axis([995e3 1012e3 -inf inf]);
title('频域中 子载波分布图');
ylabel('幅度');
xlabel('频率/Hz');


% OFDM载波调制(这里每个子载波使用2-ASK调制,实际上每个子载波使用PSK、QAM调制也可以)
symbol = M;
msg  = randi([0 1],1,symbol);% 并行发送8bit数据
% msg  = [1 1 0 1 1 1 0 1];% 并行发送8bit数据
tx = zeros(1,length(t));
for k = 1:length(msg)
	tx = tx + msg(k)*c(k,:);% 子载波叠加
end
XN_tx = fft(tx,NN);
disp(['发送数据: ' num2str(msg)]);



% 空中信道传输
sigma = sum(abs(tx))/length(tx) * 0.9;
rx    = tx + sigma*rand(1,length(tx));% 加入AWGN(实际上只影响直流分量)
XN_rx = fft(rx,NN);



% OFDM解调
msg_demodulation = zeros(1,symbol);
for k = 1:symbol
	if(abs(XN_rx(16001 + 16*(k-1))) > 5e3) % 使用FFT结果来解调
		msg_demodulation(1,k) = 1;
	end
end
disp(['收到数据: ' num2str(msg_demodulation)]);

bit_error_cnt = 0;
for k = 1:symbol
	if(msg_demodulation(k) ~= msg(k))
		% 当判定的接收比特与发送比特不一致时,认为判定错误
		bit_error_cnt = bit_error_cnt + 1;
	end
end
bit_error_percent = bit_error_cnt/symbol;
disp(['误码率: ' num2str(bit_error_percent)]);


figure;
subplot(2,1,1);plot(t,real(tx));axis([-inf inf -inf inf]);title('OFDM发送信号 时域图');
ylabel('幅度');
xlabel('时间/s');
subplot(2,1,2);plot(t,real(rx));axis([-inf inf -inf inf]);title('OFDM接收信号 时域图');
ylabel('幅度');
xlabel('时间/s');

figure;
subplot(2,1,1);plot(f,abs(XN_tx));axis([995e3 1012e3 -inf inf]);title('OFDM发送信号 频谱');
ylabel('幅度');
xlabel('频率/Hz');
subplot(2,1,2);plot(f,abs(XN_rx));axis([995e3 1012e3 -inf inf]);title('OFDM接收信号 频谱');
ylabel('幅度');
xlabel('频率/Hz');

结果:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值