MSCBSC 移動通信論壇
搜索
登錄注冊
網絡優(yōu)化工程師招聘專欄 4G/LTE通信工程師最新職位列表 通信實習生/應屆生招聘職位

  • 閱讀:4367
  • 回復:1
LTE在SIMO模式下的仿真測試
destild
新手上路
鎵嬫満鍙風爜宸查獙璇? style=


 發(fā)短消息    關注Ta 

積分 -1117
帖子 60
威望 13021 個
禮品券 0 個
專家指數 -1417
注冊 2017-1-19
專業(yè)方向 
回答問題數 0
回答被采納數 0
回答采納率 0%
 
發(fā)表于 2019-01-13 18:42:22  只看樓主 

原文 Understanding LTE with MATLAB  ,作者Houman Zarrinkoub,本文是對于該書的翻譯,書中的專業(yè)性詞匯給出了英文原文,圖和表的排版都是參考原文,翻譯不準確的地方請讀者多多包涵。本文僅限于個人學習,研究,交流,不得用于其他商業(yè)用途!


5.18.2 SIMO模式

SIMO模式可以看作是SISO模式的一般情況。LTE傳輸模式1通常被視為SIMO傳輸模式。在這種模式下,信號處理鏈與SISO的情況非常相似,只是它使用多個(在我們的功能中為兩個或四個)接收天線。在接收器上使用多個天線可以讓我們利用接收分集。最大比值組合接收分集(MRC)比單輸入單輸出(SISO)系統具有更好的誤碼率性能。建模接收分集不會改變發(fā)射機,但會對信道建模和接收機操作帶來許多變化。所有這些變化都與多通道處理有關。

在傳輸性能之后,加載通道處理來自單個傳輸天線的樣本。但是,根據接收天線的數量,它分別對每個鏈路(發(fā)送器-接收器對)應用信道建模。衰落信道的輸出現在是一個多信道矩陣,行數等于傳輸樣本數,列數等于接收天線數。類似地,awgn通道處理衰落通道的多通道輸出,并在添加白噪聲的情況下產生相同大小的輸出。


由于多通道接收信號現在是接收器的輸入,因此接收器中執(zhí)行的第一組操作必須跨不同的通道重復(表示不同的接收天線)。這些包括OFDM接收器、資源元素去映射器和達到均衡器功能的信道估計器。


每個接收器上的估計數據資源元素現在與一個新的均衡器相結合,以生成對發(fā)送信號的最佳估計。均衡器使用ZF或MMSE方法在每個天線上相等,但結果根據MRC進行組合。這種方法基本上是根據每個接收天線的功率測量來衡量和衡量其貢獻。下面的matlab函數包含SIMO情況下收發(fā)器中的操作。

 1function [dataIndataOuttxSigrxSigdataRxyReccsr_ref]...
2    = commlteSIMO_step(nS, snrdB, prmLTEDLSCH, prmLTEPDSCH, prmMdl)
3%% TX
4%  Generate payload
5dataIn = genPayload(nS,  prmLTEDLSCH.TBLenVec);
6Transport block CRC generation
7tbCrcOut1 =CRCgenerator(dataIn);
8Channel coding includes - CB segmentationturbo codingrate matching,
9bit selectionCB concatenation - per codeword
10[dataKplus1C1] = lteTbChannelCoding(tbCrcOut1, nS, prmLTEDLSCH, prmLTEPDSCH);
11%Scramble codeword
12scramOut = lteScramble(data, nS, 0, prmLTEPDSCH.maxG);
13Modulate
14modOut = Modulator(scramOut, prmLTEPDSCH.modType);
15Generate Cell-Specific Reference (CSRsignals
16csr = CSRgenerator(nS, prmLTEPDSCH.numTx);
17Resource grid filling
18E=8*prmLTEPDSCH.Nrb;
19csr_ref=reshape(csr(1:E),2*prmLTEPDSCH.Nrb,4);
20txGrid = REmapper_1Tx(modOut, csr_ref, nS, prmLTEPDSCH);
21OFDM transmitter
22txSig = OFDMTx(txGrid, prmLTEPDSCH);
23%% Channel
24SIMO Fading channel
25[rxFadechPathG] = MIMOFadingChan(txSig, prmLTEPDSCH, prmMdl);
26idealhD = lteIdChEst(prmLTEPDSCH,  prmMdl, chPathG, nS);
27Add AWG noise
28nVar = 10.^(0.1.*(-snrdB));
29rxSig =  AWGNChannel(rxFade, nVar);
30%% RX
31OFDM Rx
32rxGrid = OFDMRx(rxSig, prmLTEPDSCH);
33updated for numLayers -> numTx
34[dataRxcsrRxidx_data] = REdemapper_1Tx(rxGrid, nS, prmLTEPDSCH);
35MIMO channel estimation
36if prmMdl.chEstOn
37    chEst = ChanEstimate_1Tx(prmLTEPDSCH, csrRx,  csr_ref, 'interpolate');
38    hD=ExtChResponse(chEst, idx_data, prmLTEPDSCH);
39else
40    hD = idealhD;
41end
42Frequency-domain equalizer
43Based on Maximum-Combining Ratio (MCR
44yRec = Equalizer_simo( dataRx, hD, nVar, prmLTEPDSCH.Eqmode);    
45Demodulate
46demodOut = DemodulatorSoft(yRec, prmLTEPDSCH.modType, nVar);
47Descramble both received codewords
48rxCW =  lteDescramble(demodOut, nS, 0, prmLTEPDSCH.maxG);
49Channel decoding includes - CB segmentationturbo decodingrate dematching
50[decTbData1, ~,~] = lteTbChannelDecoding(nS, rxCW, Kplus1, C1,  prmLTEDLSCH, prmLTEPDSCH);
51Transport block CRC detection
52[dataOut, ~] = CRCdetector(decTbData1);
53end
54


5.18.2.1 函數改進

啟用Simo模式所需的修改會影響以下三個功能。

  • Redemapper_1Tx 現在通過在for循環(huán)中迭代接收天線來支持多通道處理,以便分別提取數據、CSR和其他信號。

  • ChanEstimate_1Tx 現在通過在多個天線上重復基于CSR信號的資源網格生成過程來支持多通道處理。

  • Equalizer_simo 采用MRC方法生成接收器處資源元素的最佳估計。與siso模式的頻域均衡器不同,simo模式的均衡器必須結合來自多個信道的貢獻。

 1function [datacsridx_datapdcchpsssssbch] = REdemapper_1Tx(in, nS, prmLTE)
2%#codegen
3NcellID = 0;                                     % One of possible 504 values
4numTx = 1;                                      % prmLTE.numTx;
5Get input params
6numRx=prmLTE.numRx;                   % number of receive antennas
7Nrb = prmLTE.Nrb;                            % either of 
{6,...,1}
8Nrb_sc = prmLTE.Nrb_sc;                 % 12 for normal mode
9numContSymb    = prmLTE.contReg;  % either {123}
10Npss= prmLTE.numPSSRE;
11Nsss=prmLTE.numSSSRE;
12Nbch=prmLTE.numBCHRE;
13Ncsr=prmLTE.numCSRResources;
14Ndci=prmLTE.numContRE;
15%% Specify resource grid location indices for CSR, PDCCH, PDSCH, PBCH, PSS, SSS
16%% 1st: Indices for CSR pilot symbols
17lenOFDM = Nrb*Nrb_sc;
18idx            = 1:lenOFDM;
19idx_csr0   = 1:6:lenOFDM;              % More general starting point = 1+mod(NcellID, 6);
20idx_csr4   = 4:6:lenOFDM;              % More general starting point = 1+mod(3+NcellID, 6);
21idx_csr     =[idx_csr0, 4*lenOFDM+idx_csr4, 7*lenOFDM+idx_csr0, 11*lenOFDM+idx_csr4];
22%% 2nd: Indices for PDCCH control data symbols
23ContREs=numContSymb*lenOFDM;
24idx_dci=1:ContREs;
25idx_pdcch = ExpungeFrom(idx_dci,idx_csr0);
26%% 3rd: Indices for PDSCH and PDSCH data in OFDM symbols whee pilots are present
27idx_data0= ExpungeFrom(idx,idx_csr0);
28idx_data4 = ExpungeFrom(idx,idx_csr4);
29switch nS
30    %% 4th: Indices for BCH, PSS, SSS are only found in specific subframes 0 and 5
31    % Thsese symbols share the same 6 center sub-carrier locations (idx_ctr)
32    % and differ in OFDM symbol number.
33    case 0    % Subframe 0
34        % PBCH, PSS, SSS are available + CSR, PDCCH, PDSCH
35        idx_6rbs = (1:72);
36        idx_ctr = 0.5* lenOFDM - 36 + idx_6rbs ;
37        idx_SSS  = 5* lenOFDM + idx_ctr;
38        idx_PSS  = 6* lenOFDM + idx_ctr;
39        idx_ctr0 = ExpungeFrom(idx_ctr,idx_csr0);
40        idx_bch=[7*lenOFDM + idx_ctr0, 8*lenOFDM + idx_ctr, 9*lenOFDM + idx_ctr, 10*lenOFDM + idx_ctr];
41        idx_data5   = ExpungeFrom(idx,idx_ctr);
42        idx_data7 = ExpungeFrom(idx_data0,idx_ctr);
43        idx_data   = [ContREs+1:4*lenOFDM,   4*lenOFDM+idx_data4, ...
44            5*lenOFDM+idx_data5, 6*lenOFDM+idx_data5,  7*lenOFDM+idx_data7, 8*lenOFDM+idx_data5, ...
45            9*lenOFDM+idx_data5, 10*lenOFDM+idx_data5, 11*lenOFDM+idx_data4, ...
46            12*lenOFDM+1:14*lenOFDM];
47    case 10  % Subframe 5
48        % PSS, SSS are available + CSR, PDCCH, PDSCH
49        % Primary ans Secondary synchronization signals in OFDM symbols 5 and 6
50        idx_6rbs = (1:72);
51        idx_ctr = 0.5* lenOFDM - 36 + idx_6rbs ;
52        idx_SSS  = 5* lenOFDM + idx_ctr;
53        idx_PSS  = 6* lenOFDM + idx_ctr;
54        idx_data5 = ExpungeFrom(idx,idx_ctr);
55        idx_data   = [ContREs+1:4*lenOFDM, 4*lenOFDM+idx_data4,  5*lenOFDM+idx_data5, 6*lenOFDM+idx_data5, ...
56            7*lenOFDM+idx_data0, 8*lenOFDM+1:11*lenOFDM,  11*lenOFDM+idx_data4, ...
57            12*lenOFDM+1:14*lenOFDM];
58    otherwise % other subframes
59        % Only CSR, PDCCH, PDSCH
60        idx_data = [ContREs+1:4*lenOFDM, 4*lenOFDM+idx_data4, ...
61            5*lenOFDM+1:7*lenOFDM, ...
62            7*lenOFDM+idx_data0, ...
63            8*lenOFDM+1:11*lenOFDM, ...
64            11*lenOFDM+idx_data4, ...
65            12*lenOFDM+1:14*lenOFDM];
66end
67%% Handle 3 types of subframes differently
68pss=complex(zeros(Npss,numRx));
69sss=complex(zeros(Nsss,numRx));
70bch=complex(zeros(Nbch,numRx));
71data=complex(zeros(numel(idx_data),numRx));
72csr=complex(zeros(Ncsr,numRx));
73pdcch = complex(zeros(Ndci,numRx));
74idx_data=idx_data.';
75for n=1:numRx
76    tmp=in(:,:,n);
77    data(:,n)=tmp(idx_data);       % Physical Downlink Shared Channel (PDSCH) = user data
78    csr(:,n)=tmp(idx_csr.'
);            % Cell-Specific Reference signal (CSR) = pilots
79    pdcch(:,n) = tmp(idx_pdcch.');   % Physical Downlink Control Channel (PDCCH)
80    if nS==0
81        pss(:,n)=tmp(idx_PSS.'
);    % Primary Synchronization Signal (PSS)
82        sss(:,n)=tmp(idx_SSS.');     % Secondary Synchronization Signal (SSS)
83        bch(:,n)=tmp(idx_bch.'
);    % Broadcast Cahnnel data (BCH)
84    elseif nS==10
85        pss(:,n)=tmp(idx_PSS.');     % Primary Synchronization Signal (PSS)
86        sss(:,n)=tmp(idx_SSS.'
);      % Secondary Synchronization Signal (SSS)
87    end
88end


 1function hD = ChanEstimate_1Tx(prmLTE, Rx, Ref, Mode)
2%#codegen
3Nrb           = prmLTE.Nrb;     % Number of resource blocks
4Nrb_sc      = prmLTE.Nrb_sc;                 % 12 for normal mode
5Ndl_symb = prmLTE.Ndl_symb;        % 7    for normal mode
6numRx = prmLTE.numRx;
7Assume same number of Tx and Rx antennas = 1
8Initialize output buffer
9hD = complex(zeros(Nrb*Nrb_sc, Ndl_symb*2,numRx));
10Estimate channel based on CSR - per antenna port
11csrRx = reshape(Rx, numel(Rx)/(4*numRx), 4, numRx); % Align received pilots with reference pilots
12for n=1:numRx
13    hpcsrRx(:,:,n)./Ref;                  % Just divide received pilot by reference pilot
14    % to obtain channel response at pilot locations
15    % Now use some form of averaging/interpolation/repeating to
16    % compute channel response for the whole grid
17    % Choose one of 3 estimation methods "averageor "interpolateor "hybrid"
18    switch Mode
19        case 'average'
20            tmp=gridResponse_averageSubframe(hp, Nrb, Nrb_sc, Ndl_symb);
21        case 'interpolate'
22            tmp=gridResponse_interpolate(hp, Nrb, Nrb_sc, Ndl_symb);
23        case 'hybrid'
24            tmp=gridResponse_averageSlot(hp, Nrb, Nrb_sc, Ndl_symb);
25        otherwise
26            error('Choose the right mode for function ChanEstimate.');
27    end
28    hD(:,:,n)=tmp;
29end
30


 1function [ynumdenum]  = Equalizer_simo(in, hD, nVar, EqMode)
2%#codegen
3switch EqMode
4    case 1,   % Zero forcing
5       num = conj(hD);
6       denum=conj(hD).*hD;            
7    case 2,   % MMSE
8        num = conj(hD);
9        denum=conj(hD).*hD+nVar;  
10    otherwise,
11        error('Two equalization mode available: Zero forcing or MMSE');
12end
13y = sum(in .*num,2)./sum(denum,2);
14


5.18.2.2驗證收發(fā)器性能

為了觀察接收分集對性能的影響,我們可以執(zhí)行simo收發(fā)器模型(commlteSIMO)的matlab腳本。首先,我們在腳本中設置與模型的各個組件相關的參數(commlteSIMO_參數)。這與siso中使用的腳本相同,只是我們將接收參數的數量從1更改為4。

 1% PDSCH
2numTx          = 1;    % Number of transmit antennas
3numRx          = 4;    % Number of receive antennas
4chanBW       = 4;    % Index to chanel bandwidth used [1,....6]
5contReg       = 1;    % No. of OFDM symbols dedictaed to control information [1,...,3]
6modType      =  2;   % Modulation type [123for ['QPSK,'16QAM','64QAM']
7% DLSCH
8cRate            = 1/3; % Rate matching target coding rate 
9maxIter         = 6;     % Maximum number of turbo decoding terations  
10fullDecode    = 0;    % Whether "full" or "early stopping" turbo decoding is performed
11% Channel model
12chanMdl        =  '
frequency-selective-high-mobility'; 
13corrLvl           = '
Low'; 
14% Simulation parametrs
15Eqmode        = 2;      % Type of equalizer used [1,2] for ['
ZF', 'MMSE']
16chEstOn        = 1;     % Whether channel estimation is done or ideal channel model used
17maxNumErrs = 1e7; % Maximum number of errors found before simulation stops
18maxNumBits = 1e7;  % Maximum number of bits processed before simulation stops
19visualsOn     = 0;      % Whether to visualize channel response and constellations
20snrdB            = 16;   % Value of SNR used in this experiment
21

圖5.14說明了星座圖,并顯示了Simo OFDM收發(fā)器如何補償多徑衰落效應,并旋轉和縮放損壞的星座(均衡前),使其回到可以正確解調的星座(均衡后)。圖5.15顯示了均衡前后發(fā)送和接收信號的功率譜密度。結果表明,當發(fā)射信號具有歸一化為1的功率譜幅度時,接收信號的幅度譜反映了信道多徑衰落響應的影響。均衡后,幅度譜表現出更為平坦的性質,與傳輸譜非常相似。

1.JPG


5.18.2.3 誤碼率測量
為了驗證收發(fā)器的誤碼率性能,我們創(chuàng)建了一個名為commltesimo_test_timing_ber.m的測試臺,首先初始化LTE系統參數,然后迭代一系列的信噪比值,并調用循環(huán)中的commltesimo_fcn函數來計算相應的誤碼率值。

 1% Script for SIMO LTE (mode 1)
2%
3% Single codeword transmission only,
4%
5clear all
6clear functions
7disp('Simulating the LTE Mode 1: Single Tx and multiple Rx antrenna');
8%% Create the parameter structures
9commlteSIMO_params;
10[prmLTEPDSCH, prmLTEDLSCH, prmMdl] = commlteSIMO_initialize( chanBW, contReg, modType, Eqmode,...
11    numTx, numRx, cRate,maxIter, fullDecode, chanMdl, corrLvl, chEstOn, maxNumErrs, maxNumBits);
12clear  chanBW contReg numTx numRx modType Eqmode cRate maxIter fullDecode chanMdl corrLvl chEstOn maxNumErrs maxNumBits;
13%%
14zReport_data_rate(prmLTEDLSCH, prmLTEPDSCH);
15MaxIter=numel(prmMdl.snrdBs);
16ber_vector=zeros(1,MaxIter);
17tic;
18for n=1:MaxIter
19    fprintf(1,'Iteration %2d out of %2d : ', n, MaxIter);
20    hPBer = comm.ErrorRate;
21    snrdB = prmMdl.snrdBs(n);
22    maxNumErrs=prmMdl.maxNumErrs;
23    maxNumBits=prmMdl.maxNumBits;
24    %% Simulation loop
25    nS = 0; % Slot number, one of [0:2:18]
26    Measures = zeros(3,1); %initialize BER output
27    while (( Measures(2)< maxNumErrs) && (Measures(3) < maxNumBits))
28        [dataIn, dataOut, txSig, rxSig, dataRx, yRec, csr] = ...
29            commlteSIMO_step(nS, snrdB, prmLTEDLSCH, prmLTEPDSCH, prmMdl);
30        % Calculate  bit errors
31        Measures = step(hPBer, dataIn, dataOut);
32        % Visualize constellations and spectrum
33        if visualsOn
34            zVisualize( prmLTEPDSCH, txSig, rxSig, yRec, dataRx, csr, nS);
35        end;
36        % Update subframe number
37        nS = nS + 2if nS > 19, nS = mod(nS, 20); end;
38    end
39    ber=Measures(1);
40    ber_vector(n)=ber;
41    disp(ber_vector);
42end;
43toc;
44%% Now visualize
45semilogy(prmMdl.snrdBs, ber_vector);
46title('BER - commlteSIMO');xlabel('SNR (dB)');ylabel('ber');grid;

在執(zhí)行matlab腳本時,命令提示符中會顯示消息,包括收發(fā)器參數(調制類型、編碼速率、信道帶寬、天線配置和最大數據速率)、正在執(zhí)行的迭代以及已用時間的最終計數。


圖5.16顯示了作為信噪比值函數的收發(fā)器的誤碼率。在這個例子中,我們在八個迭代中處理5000萬位,每個迭代的特征是一個信噪比值。收發(fā)器采用16QAM調制方案,編碼速率為1/3,系統帶寬為10MHz,Simo天線配置為1×4。選擇此參數集將導致9.91Mbps的最大數據速率,如函數zreport_data_rate.m所報告的那樣。


捕獲.JPG

圖5.6 SIMO模型的BER計算

5.19本章小結

在本章中,我們研究了LTE標準中使用的多載波傳輸方案。重點開發(fā)了基于正交頻分復用(OFDM)傳輸的MATLAB下行鏈路收發(fā)器。首先,我們研究了更現實的移動通信信道表示,并介紹了多徑衰落信道模型。然后,我們提出了一個OFDM傳輸方案的功能要素,旨在對抗多徑衰落的影響。


然后,我們回顧了發(fā)送器中的功能元素,包括:(i)導致資源網格形成的數據的時頻表示;(ii)在資源網格中包含OFDM引導信號(或參考信號);以及(iii)使用反向FFT計算傳輸數據的OFDM信號生成。作為一種基于資源網格表示的完全在頻域中指定的時域信號。


隨后,我們回顧了接收機中的典型功能元素,包括:(i)計算接收資源網格的OFDM接收機,(ii)基于參考信號的信道估計,(iii)基于信道估計結果插值的整個資源網格的信道響應計算,以及(iv)頻域E。基于估計信道響應的定性,用于恢復傳輸資源元素的最佳估計。


最后,我們整合了所有的功能元素,在Matlab中為LTE標準的單天線下行傳輸模式建立了一個收發(fā)器模型。收發(fā)器也被稱為LTE傳輸模式1,它處理SISO和SIMO下行鏈路收發(fā)器操作。通過模擬,我們進行了定性評估和誤碼率性能測量。結果表明,該收發(fā)器能有效地對抗多徑衰落引起的碼間干擾的影響。在下一章中,我們將介紹MIMO多天線方案,其中多個天線用于傳輸。



本章完

2019/1/13



3.JPG



掃碼關注5G通信官方公眾號,免費領取以下5G精品資料
  • 1、回復“YD5GAI”免費領取《中國移動:5G網絡AI應用典型場景技術解決方案白皮書
  • 2、回復“5G6G”免費領取《5G_6G毫米波測試技術白皮書-2022_03-21
  • 3、回復“YD6G”免費領取《中國移動:6G至簡無線接入網白皮書
  • 4、回復“LTBPS”免費領取《《中國聯通5G終端白皮書》
  • 5、回復“ZGDX”免費領取《中國電信5G NTN技術白皮書
  • 6、回復“TXSB”免費領取《通信設備安裝工程施工工藝圖解
  • 7、回復“YDSL”免費領取《中國移動算力并網白皮書
  • 8、回復“5GX3”免費領取《 R16 23501-g60 5G的系統架構1
  • 對本帖內容的看法? 我要點評

     
    [充值威望,立即自動到帳] [VIP貴賓權限+威望套餐] 另有大量優(yōu)惠贈送活動,請光臨充值中心
    充值擁有大量的威望和最高的下載權限,下載站內資料無憂
    destild
    新手上路
    鎵嬫満鍙風爜宸查獙璇? style=


     發(fā)短消息    關注Ta 

    積分 -1117
    帖子 60
    威望 13021 個
    禮品券 0 個
    專家指數 -1417
    注冊 2017-1-19
    專業(yè)方向 
    回答問題數 0
    回答被采納數 0
    回答采納率 0%
     
    發(fā)表于 2019-01-13 18:48:08  只看樓主 


    QUOTE:
    原帖由 destild 于 2019-1-13 10:42:22 發(fā)表
    “原文 Understanding LTE with MATLAB ,作者Houman Zarrinkoub,本文是對于該書的翻譯,書中的專業(yè)性詞匯給出了英文原文,圖和表的排版都是參考原文,翻譯不準確的地方請讀者多多包涵。本文僅限于個人學 ...


    對本帖內容的看法? 我要點評

     
    [立即成為VIP會員,百萬通信專業(yè)資料立即下載,支付寶、微信付款,簡單、快速!]

    快速回復主題    
    標題
    內容
     上傳資料請點左側【添加附件】

    當前時區(qū) GMT+8, 現在時間是 2025-02-14 11:59:30
    渝ICP備11001752號  Copyright @ 2006-2016 mscbsc.com  本站統一服務郵箱:mscbsc@163.com

    Processed in 0.494923 second(s), 16 queries , Gzip enabled
    TOP
    清除 Cookies - 聯系我們 - 移動通信網 - 移動通信論壇 - 通信招聘網 - Archiver