分别在高斯信道和瑞丽信道中对16QAM+OFDM进行误码率仿真

目录

一、理论基础

二、核心程序

三、仿真结论


一、理论基础


        802.11a的传输技术为多载波调制技术。802.11a标准是已在办公室、家庭、宾馆、机场等众多场合得到广泛应用的802.11b无线联网标准的后续标准。它工作在5GHzU-NII频带,物理层速率可达54Mb/s,传输层可达25Mbps。可提供25Mbps的无线ATM接口和10Mbps的以太网无线帧结构接口,以及TDD/TDMA的空中接口;支持语音、数据、图像业务;一个扇区可接入多个用户,每个用户可带多个用户终端。IEEE 无线网络标准,指定最大 54Mbps 的数据传输速率和 5GHz 的工作频段。

       802.11a标准采用了与原始标准相同的核心协议,工作频率为5GHz,使用52个正交频分多路复用副载波,最大原始数据传输率为54Mb/s,这达到了现实网络中等吞吐量(20Mb/s)的要求。如果需要的话,数据率可降为48,36,24,18,12,9或者6Mb/s。802.11a拥有12条不相互重叠的频道,8条用于室内,4条用于点对点传输。它不能与IEEE 802.11b进行互操作,除非使用了对两种标准都采用的设备。

        OFDM(Orthogonal Frequency Division Multiplexing)即正交频分复用技术,实际上OFDM是MCM(Multi Carrier Modulation),多载波调制的一种。通过频分复用实现高速串行数据的并行传输, 它具有较好的抗多径衰落的能力,能够支持多用户接入。OFDM技术由MCM(Multi-Carrier Modulation,多载波调制)发展而来。OFDM技术是多载波传输方案的实现方式之一,它的调制和解调是分别基于IFFT和FFT来实现的,是实现复杂度最低、应用最广的一种多载波传输方案。

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

       OFDM是一种特殊的多载波传输方案。OFDM应用DFT和其逆变换IDFT方法解决了产生多个互相正交的子载波和从子载波中恢复原信号的问题。这就解决了多载波传输系统发送和传送的难题。应用快速傅里叶变换更使多载波传输系统的复杂度大大降低。从此OFDM技术开始走向实用。但是应用OFDM系统仍然需要大量繁杂的数字信号处理过程,而当时还缺乏数字处理功能强大的元器件,因此OFDM技术迟迟没有得到迅速发展。

      基于IFFT/FFT 实现的OFDM 系统:

       OFDM采用BPSK、QPSK、16QAM、64QAM4种调制方式。按照星座图,将每个子信道上的数据,映射到星座图点的复数表示,转换为同相Ich和正交分量Qch。

       其实这是一种查表的方法,以16QAM星座为例,bits_per_symbol=4,则每个OFDM符号的每个子信道上有4个二进制数{d1,d2,d3,d4},共有16种取值,对应星座图上16个点,每个点的实部记为Qch。为了所有的映射点有相同高的平均功率,输出要进行归一化,所以对应BPSK,PQSK,16QAM,64QAM,分别乘以归一化系数系数1,, , .输出的复数序列即为映射后的调制结果。

        对上一步得到的相同分量和正交分量按照(Ich+Qch*i)进行IFFT运算。并将得到的复数的实部作为新的Ich,虚部作为新的Qch。 

        同步技术对各种数字传输技术来说十分关键,对于OFDM 系统更是如此。因为OFDM对同步误差十分敏感,同步性能的好坏直接影响到接收的性能,一旦同步性能不好,OFDM 的整体性能将会严重下降。

        在实际运用中, 信号的产生和解调都是采用数字信号处理的方法来实现的, 此时要对信号进行抽样, 形成离散时间信号。 由于OFDM信号的带宽为B=N·Δf, 信号必须以Δt=1/B=1/(N·Δf)的时间间隔进行采样。 采样后的信号用sn,i

       t=1/B=1/(N·Δf)的时间间隔进行采样。 采样后的信号用sn,i表示, i = 0, 1, …, N-1,则有

              

       从该式可以看出,它是一个严格的离散反傅立叶变换(IDFT)的表达式。IDFT可以采用快速反傅立叶变换(IFFT)来实现 

       由IFFT运算后的每个符号的同相分量和正交分量分别转换为串行数据,并将符号尾部G长度的数据加到头部,构成循环前缀。如果加入空的间隔,在多径传播的影响下,会造成载波间干扰ICI。保护见个的长度G应该大于多径时的扩张的最大值。

二、核心程序

function [error_rate_sig,error_rate_mut]=ofdm_ray(SNR,M,bit_length,bit_moded,bit_sequence)
carrier_count = 200; % 子载波数
symbol_count = 100;
ifft_length = 512;
CP_length = 128;
CS_length = 20;
alpha = 1.5/32;
carrier_position = 29:228;
conj_position = 485:-1:286;
%% IFFT
% 串并转换
ifft_position = zeros(ifft_length,symbol_count);
bit_moded = reshape(bit_moded,carrier_count,symbol_count);
% figure('position',[400 0 400 400],'menubar','none');
% stem(abs(bit_moded(:,1)));
% grid on;
ifft_position(carrier_position,:)=bit_moded(:,:);
ifft_position(conj_position,:)=conj(bit_moded(:,:));
signal_time = ifft(ifft_position,ifft_length);

% 加循环前缀和后缀
signal_time_C = [signal_time(end-CP_length+1:end,:);signal_time];
signal_time_C = [signal_time_C; signal_time_C(1:CS_length,:)];

% 加窗
signal_window = zeros(size(signal_time_C));
% 通过矩阵点乘
signal_window = signal_time_C.*repmat(rcoswindow(alpha,size(signal_time_C,1)),1,symbol_count);

%% 发送信号,多径信道
signal_Tx = reshape(signal_window,1,[]); % 变成时域一个完整信号,待传输
signal_origin = reshape(signal_time_C,1,[]); % 未加窗完整信号
mult_path_am = [1 0.2 0.1]; %  多径幅度
mutt_path_time = [0 20 50]; % 多径时延
windowed_Tx = zeros(size(signal_Tx));
path2 = 0.2*[zeros(1,20) signal_Tx(1:end-20) ];
path3 = 0.1*[zeros(1,50) signal_Tx(1:end-50) ];
signal_Tx_mult = signal_Tx + path2 + path3; % 多径信号


%% 加AWGN
signal_power_sig = var(signal_Tx); % 单径发送信号功率
signal_power_mut = var(signal_Tx_mult); % 多径发送信号功率
SNR_linear = 10^(SNR/10);
noise_power_mut = signal_power_mut/SNR_linear;
noise_power_sig = signal_power_sig/SNR_linear;
noise_sig = randn(size(signal_Tx))*sqrt(noise_power_sig);
noise_mut = randn(size(signal_Tx_mult))*sqrt(noise_power_mut);
% noise_sig=0;
% noise_mut=0;

% 加瑞利信道
n1=length(signal_Tx_mult);
R=raylrnd(0.5,1,n1);         %瑞利信道
signal_Tx=signal_Tx.*R;
signal_Tx_mult=signal_Tx_mult.*R;

Rx_data_sig = signal_Tx+noise_sig;
Rx_data_mut = signal_Tx_mult+noise_mut;
%% 串并转换
Rx_data_mut = reshape(Rx_data_mut,ifft_length+CS_length+CP_length,[]);
Rx_data_sig = reshape(Rx_data_sig,ifft_length+CS_length+CP_length,[]);
%% 去循环前缀和后缀
Rx_data_sig(1:CP_length,:) = [];
Rx_data_sig(end-CS_length+1:end,:) = [];
Rx_data_mut(1:CP_length,:) = [];
Rx_data_mut(end-CS_length+1:end,:) = [];
%% FFT
fft_sig = fft(Rx_data_sig);
fft_mut = fft(Rx_data_mut);
%% 降采样
data_sig = fft_sig(carrier_position,:);
data_mut = fft_mut(carrier_position,:);

%% 逆映射
bit_demod_sig = reshape(qamdemod(data_sig,M,'OutputType','bit'),[],1);
bit_demod_mut = reshape(qamdemod(data_mut,M,'OutputType','bit'),[],1);
%% 误码率
error_bit_sig = sum(bit_demod_sig~=bit_sequence);
error_bit_mut = sum(bit_demod_mut~=bit_sequence);
error_rate_sig = error_bit_sig/bit_length;
error_rate_mut = error_bit_mut/bit_length;


end
up4008

三、仿真结论

       通过MATLAB等仿真工具可以对16QAM+OFDM系统在高斯信道和瑞丽信道下的BER性能进行详细分析。在仿真过程中,可以设置不同的系统参数(如子载波数、调制方式、信噪比等),并观察BER随这些参数变化的情况。通过比较不同信道下的BER性能,可以评估系统在实际应用中的可行性。

猜你喜欢

转载自blog.csdn.net/ccsss22/article/details/135273574