MIMO是如何實現抗干擾的?
我們都知道MIMO有兩種方式,分集和復用;MIMO也有兩個顯著的特點——可靠性與有效性。
MIMO采用多進多出的天線,來實現可靠性和有效性的提升。公網采用MIMO用來提升通信容量——有效性,專網通信用MIMO來提升系統(tǒng)的可靠性。
今天主要來講一講MIMO是如何實現可靠性的提升。
分集
分集是在多條獨立通道傳輸相同的數據,接收端通過分集合并技術,抵抗信道衰落,提升信道傳輸的可靠性。
復用
復用是在多條獨立信道傳輸不同的數據,提升頻譜利用率,增加信道容量。
在了解分集提升抗干擾性之前,我們先了解兩個概念。
瑞利衰落和多徑效應。
瑞利衰落是指信號在傳輸過程中,由于多普勒效應的影響使得信號的相位和幅度發(fā)生快速變化,這種變化被稱為快速衰落。
多徑衰落則是指信號在傳輸過程中經歷了多條路徑,不同路徑的信號到達時相位不同引起信號的疊加干擾,導致信號的衰落。
瑞利衰落和多徑衰落都是無線傳輸中不可避免的信道影響,但它們的產生機理不同。多徑衰落是由于信號在傳播時經歷了不同路徑的干涉導致信號衰減,而瑞利衰落則是由于信號振蕩和干擾造成的快速衰落。在環(huán)境較為簡單的開放區(qū)域,多徑效應相對弱,主要由瑞利衰落引起;而在城市、山地等復雜環(huán)境下,多徑效應很強,是主要的信道衰落因子。
瑞利衰落和多徑衰落都衰落的一種,衰落具有獨立性,即只要接收距離足夠大,則接收到的信號衰落不具備相關性,這就是MIMO分集抗衰落的設計原則。
在信道中,使用1根發(fā)射天線n根接收天線,發(fā)送信號通過n個不同的路徑。分集在天線設計時,都會保證各個天線之間無相關,所以天線之間的衰落是獨立的,可以獲得最大的分集增益為n,平均誤差概率可以減小 。
對于發(fā)射分集技術來說,同樣是利用多條路徑的增益來提高系統(tǒng)的可靠性。在一個具有m根發(fā)射天線n根接收天線的系統(tǒng)中,如果天線對之間的路徑增益是獨立均勻分布的瑞利衰落,可以獲得的最大分集增益為mn。
對比仿真
從仿真結果看,2T1R的效果好于1T1R,1T2R的效果好于2T1R,這也能理解4G手機是1發(fā)多收,而不是多發(fā)1收。
附仿真代碼
frmLen = 100; % frame length numPackets = 1000; % number of packets EbNo = 020; % Eb/No varying to 20 dB N = 2; % maximum number of Tx antennas M = 2; % maximum number of Rx antennas % Create comm.BPSKModulator and comm.BPSKDemodulator System objects(TM) P = 2; % modulation order bpskMod = comm.BPSKModulator; bpskDemod = comm.BPSKDemodulator('OutputDataType','double'); % Create comm.OSTBCEncoder and comm.OSTBCCombiner System objects ostbcEnc = comm.OSTBCEncoder; ostbcComb = comm.OSTBCCombiner; awgn1Rx = comm.AWGNChannel(... 'NoiseMethod', 'Signal to noise ratio (Eb/No)', ... 'SignalPower', 1); awgn2Rx = clone(awgn1Rx); errorCalc1 = comm.ErrorRate; errorCalc2 = comm.ErrorRate; errorCalc3 = comm.ErrorRate; s = rng(55408); H = zeros(frmLen, N, M); ber_noDiver = zeros(3,length(EbNo)); ber_Alamouti = zeros(3,length(EbNo)); ber_MaxRatio = zeros(3,length(EbNo)); ber_thy2 = zeros(1,length(EbNo)); fig = figure; grid on; ax = fig.CurrentAxes; hold(ax,'on'); ax.YScale = 'log'; xlim(ax,[EbNo(1), EbNo(end)]); ylim(ax,[1e-4 1]); xlabel(ax,'Eb/No (dB)'); ylabel(ax,'BER'); fig.NumberTitle = 'off'; fig.Renderer = 'zbuffer'; fig.Name = 'Transmit vs. Receive Diversity'; title(ax,'Transmit vs. Receive Diversity'); set(fig, 'DefaultLegendAutoUpdate', 'off'); fig.Position = figposition([15 50 25 30]); for idx = 1:length(EbNo) reset(errorCalc1); reset(errorCalc2); reset(errorCalc3); % Set the EbNo property of the AWGNChannel System objects awgn1Rx.EbNo = EbNo(idx); awgn2Rx.EbNo = EbNo(idx); % Loop over the number of packets for packetIdx = 1:numPackets % Generate data vector per frame data = randi([0 P-1], frmLen, 1); % Modulate data modData = bpskMod(data); % Alamouti Space-Time Block Encoder encData = ostbcEnc(modData); % Create the Rayleigh distributed channel response matrix % for two transmit and two receive antennas H(1end, :, :) = (randn(frmLen/2, N, M) + ... 1i*randn(frmLen/2, N, M))/sqrt(2); % assume held constant for 2 symbol periods H(2end, :, :) = H(1end, :, :); % Extract part of H to represent the 1x1, 2x1 and 1x2 channels H11 = H(:,1,1); H21 = H(:,:,1)/sqrt(2); H12 = squeeze(H(:,1,:)); % Pass through the channels chanOut11 = H11 .* modData; chanOut21 = sum(H21.* encData, 2); chanOut12 = H12 .* repmat(modData, 1, 2); % Add AWGN rxSig11 = awgn1Rx(chanOut11); rxSig21 = awgn1Rx(chanOut21); rxSig12 = awgn2Rx(chanOut12); % Alamouti Space-Time Block Combiner decData = ostbcComb(rxSig21, H21); % ML Detector (minimum Euclidean distance) demod11 = bpskDemod(rxSig11.*conj(H11)); demod21 = bpskDemod(decData); demod12 = bpskDemod(sum(rxSig12.*conj(H12), 2)); % Calculate and update BER for current EbNo value % for uncoded 1x1 system ber_noDiver(:,idx) = errorCalc1(data, demod11); % for Alamouti coded 2x1 system ber_Alamouti(:,idx) = errorCalc2(data, demod21); % for Maximal-ratio combined 1x2 system ber_MaxRatio(:,idx) = errorCalc3(data, demod12); end % end of FOR loop for numPackets % Calculate theoretical second-order diversity BER for current EbNo ber_thy2(idx) = berfading(EbNo(idx), 'psk', 2, 2); % Plot results semilogy(ax,EbNo(1:idx), ber_noDiver(1,1:idx), 'r*', ... EbNo(1:idx), ber_Alamouti(1,1:idx), 'go', ... EbNo(1:idx), ber_MaxRatio(1,1:idx), 'bs', ... EbNo(1:idx), ber_thy2(1:idx), 'm'); legend(ax,'No Diversity (1Tx, 1Rx)', 'Alamouti (2Tx, 1Rx)',... 'Maximal-Ratio Combining (1Tx, 2Rx)', ... 'Theoretical 2nd-Order Diversity'); drawnow; end % end of for loop for EbNo % Perform curve fitting and replot the results fitBER11 = berfit(EbNo, ber_noDiver(1,:)); fitBER21 = berfit(EbNo, ber_Alamouti(1,:)); fitBER12 = berfit(EbNo, ber_MaxRatio(1,:)); semilogy(ax,EbNo, fitBER11, 'r', EbNo, fitBER21, 'g', EbNo, fitBER12, 'b'); hold(ax,'off'); % Restore default stream rng(s);
總結
當下對MIMO的主流應用主要在增加通信容量上。在專網領域,通信地形的復雜,采用MIMO分集技術可以提升通信系統(tǒng)的通信可靠性。
編輯:黃飛
?
評論
查看更多