YunSDR通信小课堂-33
第16讲 MIMO-OFDM基带接收端系统搭建
IEEE802.11n协议物理层采用的主要技术是MIMO-OFDM技术,本章首先阐述MIMO-OFDM系统基本原理,在此基础上探讨IEEE802.11n采用的MIMO-OFDM系统结构。MIMO技术是具有极高频谱利用率的技术,在空间复用模式下,理想情况可以达到300Mbpss。OFDM技术能够有效对抗ISI,同时具有频谱利用率高、抗多径衰落性能好等优点。MIMO和OFDM的结合是高速无线通信系统的核心技术之一。最后,给出了IEEE802.11n协议物理层的系统结构和主要参数,并给出了参考设计以及核心代码块。
16.1 实验目的
IEEE802.11n接收端的设计与802.11a流程相似,但是精同步、信道估计等算法更为复杂,通过此次实验整体掌握接收端得流程以及各个模块的衔接,最后通过结果信息验证算法与YunSDR性能。
16.2 实验条件
YunSDR平台一套,Matlab软件环境,WiFi频段天线,频谱仪。
16.3 实验要求
在参考例程中,利用训练序列分别实现了帧同步检测和定时符号同步,然后利用FFT算法分离长训练序列并利用长训练序列在频域实现信道估计与均衡;最后分别根据信号域与数据域有序的进行解映射、解交织、解打孔、译码、解扰、解CRC等算法操作。由于信号域部分在发端并没有加扰所以不需要进行解扰操作。当信号域的信息被正确解出来后,根据信号域的码率、数据长度以及调制方式等信息对数据域的数据进行最后的解调,并在每个不同的操作步骤后打印出必要的信息,最后绘出功率谱密度、星座图等信息。
16.4 实验原理
和频偏估计与补偿结束之后,就可以进行精确定时同步以准确地搜索数据帧的起始位置。经过定时同步之后就可以去除循环前缀,通过FFT变换将时域信号变为频域信号。在FFT变换之后,我们利用接收到的长训练序列进行信道估计,得到等效信道HQ的估计。注意的是,为了正确估计出MIMO信道响应矩阵接收信号首先通过下变频变到基带,然后进行帧同步。帧同步需要确定OFDM符号帧的边界,进行初步的定时,将符号符号起始位置锁定在某个范围内。与一般通信系统不同的是,WLAN是一种突发通信系统,我们并不知道数据帧什么时候到达,因此需要首先进行帧头检测。
在系统得到大致的信号到达时刻,即粗同步建立的时候,就可以对接收信号进行载波频偏估计,然后利用估计值对接收信号的载波频偏进行纠正。载波频偏可能导致OFDM各个子载波之前发生信道间干扰(ICI) ,严重影响系统性能。在帧同步,发射机发送的长训练序列个数应该等于空间流数目。
相位噪声会产生公共相位误差(CPE)和信道间干扰(ICI) ,导致星座图发生扩散和旋转,因此需要进行相位噪声估计与纠正。该模块需要信道估计值作为输入。
信号检测过程中,需要长训练序列提供得到的信道估计作为输入。执行信号检测时,将检测出Ns:路数据流。因此只需在发端发送Ns:路长训练序列,收端做等效信道估计就能进行信号检测。
波束赋型模式中,数据传输前通过SVD分解得到信道状态信息,用于计算波束矩阵,也即在发端估计物理信道的状态,在我们的仿真系统中做了一些合理的简化。信道状态信息在收端获得,发端发送长训练序列给收端,收端做实际物理信道估计并反馈,发端使用这个结果直接用于波束成型。此后数据和长训练序列一起发送,接着收端做第二次信道估计,不过这次是等效信道估计,结果用于检测。注意,第一次信道估计需要一个长训练序列,而第二次需要Nsts个。
16.5 参考设计
协议没有明确规定接收机结构及接收算法,但根据MIMO-OFDM系统的一般原理、协议规定的发射机结构以及部分关键的系统参数,我们确定使用的802.11n接收机结构如图16-1所示:
接收端包括:同步,信道估计与均衡,QAM解调,解交织和Viterbi译码等操作。这里只对部分关键技术阐述。
符号同步分为粗同步和精同步,和IEEE802.11a同步方法类似,在IEEE 802.11a符号同步算法的基础上进行一些修改,并应用到本文设计的基带系统。
粗同步算法:
信道估计的算法已经在上一章节中详细讲解过,这里不再赘述。对于解调算法,与IEEE802.11a相同,采用硬解,这里不再做说明。
其中关键部分的Matlab代码块为:
%% 粗同步
thres_idx = rx_search_packet_short(rx_signal);
rx_signal_coarse_sync = rx_signal(thres_idx:end,:);
figure(1);
subplot(243);
plot(abs(rx_signal_coarse_sync(1:220,1)));
title('粗同步能量检测');
%% 精同步
thres_idx_long = rx_search_packet_long(rx_signal_coarse_sync);
Nrx=size(rx_signal_coarse_sync,2);
Ns=size(rx_signal_coarse_sync,1);
rx_signal_fine_sync=zeros(Ns,Nrx);
for i=1:Nrx
rx_signal_fine_sync(1:end-thres_idx_long(i)-31,i) = rx_signal_coarse_sync(thres_idx_long(i)+32:end,i);
end
figure(1);
subplot(244);
plot(abs(rx_signal_fine_sync(1:320)));
title('精同步信号时域波形');
%% 频偏估计与校正
[rx_signal_fine, freq_est] = rx_frequency_sync(rx_signal_fine_sync);
%% FFT
[freq_legacy_ltf,freq_legacy_sig,freq_highthrough_sig] = rx_timed_to_freqd_legacy(rx_signal_fine);
%% legacy 信道估计
channel_est=rx_estimate_channel_legacy(freq_legacy_ltf);
freq_legacy_sig=freq_legacy_sig./channel_est;
freq_highthrough_sig=freq_highthrough_sig./repmat(channel_est,2,1);
if Nrx~=1
freq_legacy_sig_mean=mean(freq_legacy_sig.').';
freq_highthrough_sig_mean=mean(freq_highthrough_sig.').';
else
freq_legacy_sig_mean=freq_legacy_sig;
freq_highthrough_sig_mean=freq_highthrough_sig;
end
subplot(245);
for i=1:Nrx
plot(abs(channel_est(:,i)),color(i));hold on
end
title('信道估计图');
hold off
%% 相位校正
legacy_sig_pc=rx_pilot_phase_signal(freq_legacy_sig_mean);
highthrough_sig_pc=rx_pilot_phase_signal(freq_highthrough_sig_mean);
主要Matlab文件的简介如下表:
扫描二维码关注订阅号,精彩文章