无线通信——基于MATLAB实现OFDM系统(信道估计与均衡)

⽆线通信——基于MATLAB实现OFDM系统(信道估计与均衡)黑碟
基于MATLAB实现OFDM系统基带信号在频率选择性衰落信道条件下的发送与接收
题⽬及要求:
仿真系统构成:信号输⼊(为随机⽐特流)、OFDM调制、仿真信道传输、OFDM解调、信号输出(可能存在误码的⽐特率);
仿真分析内容:根据输⼊、输出⽐特流计算不同信噪⽐条件下的误码率,并绘制曲线。
对调制的要求:OFDM调制的⼦载波间隔为15KHz,循环前缀长度及⼦载波数⽬可调,各⼦载波使⽤QPSK调制。消息队列实现
其它要求:
开发运维一体化1. 信道采⽤3GPP TS36.101给出的ETU300Hz多径信道,并在其上叠加⼀个信噪⽐可调的⽩噪声。表
2.1-1~表2.1-4和表2.2-1给出
的ETU300Hz多径信道的参数。
2. 设计梳妆或者块状导频并在接收端完成信道估计与补偿,并与没有信道估计情况下的性能进⾏分析⽐较。
正⽂
1. OFDM系统的组成
由于是基带信号,所以系统中没有调制与解调的部分。若需对频带信号进⾏传输,只需要在进⼊信道前对基带信号进⾏调制,接收后进⾏解调即可。程序代码也可以在我写的这个上⾯进⾏稍微的改进即可。因此⼤家可以参考最下⾯程序的整体架构。下⾯为我根据系统组成画的系统框图。
① OFDM调制基本原理
  正交频分复⽤(OFDM)是多载波调制(MCM)技术的⼀种。MCM的基本思想是把数据流串并变换为N路速率较低的⼦数据流,⽤它们分别去调制N路⼦载波后再并⾏传输。因⼦数据流的速率是原来的1/N,即符号周期扩⼤为原来的N倍,远⼤于信道的最⼤延迟扩展,这样MCM就把⼀个宽带频率选择性信道划分成N个窄带平坦衰落信道,从⽽“先天”具有很强的抗多径衰落和抗脉冲⼲扰的能⼒,特别适合于⾼速⽆线数据传输。OFDM是⼀种⼦载波相互混叠的MCM,因此它除了具有上述毗M的优势外,还具有更⾼的频谱利⽤率。OFDM选择时域相互正交的⼦载波,它们虽然在频域相互混叠,却仍能在接收端被分离出来。
② OFDM系统的实现模型
电子眼镜
吸附树脂  利⽤离散反傅⾥叶变换( IDFT) 或快速反傅⾥叶变换( IFFT) 实现的OFDM系统如图所⽰。输⼊已经过调制(符号匹配) 的复信号经过串P 并变换后,进⾏IDFT 或IFFT 和并/串变换,插⼊保护间隔后的信号s (t) 。该信号经过信道后,接收到的信号r ( t ) 经过去掉保护间隔以恢复⼦载波之间的正交性,再经过串/并变换和DFT 或FFT 后,恢复出OFDM的调制信号,再经过并串变换后还原出输⼊的符号。离散傅⾥叶变换是它的核⼼,它使各⼦载波相互正交。
2. 仿真过程
① 根据OFDM系统框图,⾸先由信源产⽣随机0,1序列,然后经过QPSK调制后进⾏串并转换,再对串
并转换后的序列进⾏IFFT变换得到时域信号,添加循环前缀后并串变换并通过ETU300HZ信道,对得到的信号在进⾏串并变换,去循环前缀,FFT变换,QPSK解调,并串转换后得到接收的信息序列,再将其与发送序列⽐较后得到没有信道估计下的误码率。
②对于有信道估计的误码率,可以在IFFT变换之前加⼊插导频,在FFT之后进⾏信道估计,最终可以得到有信道估计下的误码率曲线。其中信道估计算法采⽤了LS算法。其中块状导频适⽤于频率选择性衰落,梳状导频适⽤于快衰落,格状导频结合了两者的优点。
3. 仿真程序
整体代码如下所⽰:
%==================================================
%作者: Allen
%时间:4/272020
%=================OFDM仿真参数说明:================
% f_delta=15e3;---⼦载波间隔
%⼦载波数 carrier_count        ---128也就是FFT点数,通常为2的次幂
%⼦载波间隔 f_delta            ---15e3
%总符号数 symbol_count          ---1000
% IFFT长度 ifft_length          ---128
%循环前缀 cp_length            ---16
%调制⽅式---QPSK
%信道估计算法 ce_method        ---1:采⽤最⼩⼆乘法LS;0:采⽤mse算法
%插⼊导频间隔 pilot_interval    ---5
%每星座符号⽐特数 M            ---2
%信道模型选择参数 awgn_en      ---0:表⽰ETU信道;1:AWGN信道
%最⼤多普勒扩展 fd              ---300;通常可配置0-300hz之间的数据
%仿真统计次数 sta_num          ---10
%信噪⽐⼤⼩SNR                  ---可设置
%====================仿真过程=======================
%产⽣0-1随机序列=>串并转换=>映射=>取共轭
%=> IFFT =>加循环前缀和后缀=>并串转换=>
%多径信道即ETU信道=>加AWGN =>串并转换=>去前缀
手机通讯录加密%=> FFT =>解映射=>求误码率
%==================================================
clear all;
close all;
carrier_count =128;%⼦载波数
f_delta=15e3;%⼦载波间隔
f_delta=15e3;%⼦载波间隔
symbol_count =1000;%⼀次发送的总符号数
ifft_length = carrier_count;%ifft点数为⼦载波数⽬
cp_length =16;%循环前缀
ce_method=1%信道估计算法参数1:采⽤最⼩⼆乘法LS;0:采⽤mse算法
pilot_interval=5;%导频间隔
awgn_en=0;%信道选择参数0:表⽰ETU信道;1:AWGN信道
M=2;%每星座符号⽐特数
fd=300;%最⼤多普勒扩展
sta_num=20;%仿真统计次数
num_bit=carrier_count*symbol_count*M;%对应⽐特数据个数,即128*1000*2
pilot_bit_l=randi([01],1,M*carrier_count);%⽣成导频序列,长度为M*carrier_count
OFDM_SNR_BER=zeros(1,31);%存储直接解调OFDM误码率
OFDM_LS_SNR_BER=zeros(1,31);%存储基于信道估计后OFDM误码率
i=1;
%================多径信道参数=======================
fs=(carrier_count)*f_delta;%信道带宽,为⼦载波间隔乘以⼦载波个数
ts=1/fs;%每个bit符号持续的时间
tau=[0,50,120,200,230,500,1600,2300,5000]/(10^9);
pdb=[-1.0,-1.0,-1.0,0,0,0,-3.0,-5.0,-7.0];
chan=rayleighchan(ts,fd,tau,pdb);
chan.ResetBeforefiltering=0;
%================产⽣随机序列=======================
OFDM_sigbits =sourcebits(num_bit);%1*256000,发送的OFDM数据
[moddata_outI,moddata_outQ]=qpsk_modulation(OFDM_sigbits);%进⾏映射
OFDMmoddata_in_temp=moddata_outI+1i*moddata_outQ;
OFDMmoddata_in=reshape(OFDMmoddata_in_temp,carrier_count,length(OFDMmoddata_in_temp)/carrier_count);%串并变换
%================加导频========================
[Insertpilot_out,count,pilot_seq]=insert_pilot_f(OFDMmoddata_in,pilot_bit_l,pilot_interval);%加⼊导频后的矩阵为Insertpilot_out,⼤⼩为128*1200 %===================IFFT===========================
OFDMmoddata_out=ifft(Insertpilot_out,ifft_length)*sqrt(ifft_length);
%==================加循环前缀==================
InsertCPdata_out=Insert_CP(OFDMmoddata_out,cp_length);
%=================并串转换==========================
[m,n]=size(InsertCPdata_out)
Channel_data=reshape(InsertCPdata_out,1,m*n);
%===================发送信号,多径信道====================
for SNR=0:1:30
be1=0;
be2=0;
frm_cnt=0;
while(frm_cnt<sta_num)
frm_cnt=frm_cnt+1;
%经过多径信道
if(awgn_en==1)
Add_Multipath_data=Channel_data;%awgn信道
elseif(fd~=0)
Add_Multipath_data=filter(chan,Channel_data);%ETU信道
end
Add_noise_data=awgn(Add_Multipath_data,SNR,'measured');%添加⾼斯⽩噪声
%=======================串并变换===========================
Add_noise_data_temp=reshape(Add_noise_data,m,n);
%=======================去循环前缀==========================
DeleteCPdata_out=Delete_CP(Add_noise_data_temp,cp_length);
DeleteCPdata_out=Delete_CP(Add_noise_data_temp,cp_length);
%=======================取出导频H==========================
[Deletepilot_Data,H]=Get_pilot(DeleteCPdata_out,pilot_interval);
%=========================FFT==============================
OFDM_Demodulationdata_out_iter1=fft(Deletepilot_Data,ifft_length)/sqrt(ifft_length);
%===============⽆信道估计下并串转换以及逆映射===============
OFDMdemodulationdata_out_1=reshape(OFDM_Demodulationdata_out_iter1,1,num_bit/2);
[demodulationdata_outI_1,demodulationdata_outQ_1]=qpsk_demodulation(OFDMdemodulationdata_out_1);%星座的逆映射P2Sdata_out_1=P2SConverter(demodulationdata_outI_1,demodulationdata_outQ_1);
%=====================有信道估计下==========================
estimation_output=Channel_estimation(ce_method,Deletepilot_Data,pilot_seq,H);
OFDMdemodulationdata_out_2=reshape(estimation_output,1,num_bit/2);
[demodulationdata_outI_2,demodulationdata_outQ_2]=qpsk_demodulation(OFDMdemodulationdata_out_2);%星座的逆映射P2Sdata_out_2=P2SConverter(demodulationdata_outI_2,demodulationdata_outQ_2);
%=========================误⽐特率==========================
be1=be1+length(find(P2Sdata_out_1~=OFDM_sigbits));
be2=be2+length(find(P2Sdata_out_2~=OFDM_sigbits));
ber1=be1/(frm_cnt*num_bit);
ber2=be2/(frm_cnt*num_bit);
if(mod(frm_cnt,20)==0)
fprintf('SNR=%.1f,frm_cnt=%d,ber_de=%.8f,ber_ls=%.8f\n',SNR,frm_cnt,ber1,ber2);
end
end
%fprintf('SNR=%.1f,frm_cnt=%d,ber_de=%.8f,ber_ls=%.8f\n',SNR,frm_cnt,ber1,ber2);
%=========================误码率==========================
OFDM_SNR_BER(i)=ber1;
OFDM_LS_SNR_BER(i)=ber2;
i=i+1;
end
4.仿真结果
⼀、AWGN信道下的误码率曲线以及前五⼗个数据值 :
⼆、ETU300HZ多径信道下的误码率曲线(fd=300HZ即最⼤多普勒频移为300HZ)以及前五⼗个数据值:
三、ETU300HZ多径信道下的误码率曲线(fd=10HZ即最⼤多普勒频移为10HZ)以及前五⼗个数据值:

本文发布于:2024-09-22 06:38:06,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/3/264673.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:信道   信号   载波   估计   调制
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议