destild
新手上路
發(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 [dataIn, dataOut, txSig, rxSig, dataRx, yRec, csr_ref]... 2 = commlteSIMO_step(nS, snrdB, prmLTEDLSCH, prmLTEPDSCH, prmMdl) 3%% TX 4% Generate payload 5dataIn = genPayload(nS, prmLTEDLSCH.TBLenVec); 6% Transport block CRC generation 7tbCrcOut1 =CRCgenerator(dataIn); 8% Channel coding includes - CB segmentation, turbo coding, rate matching, 9% bit selection, CB concatenation - per codeword 10[data, Kplus1, C1] = lteTbChannelCoding(tbCrcOut1, nS, prmLTEDLSCH, prmLTEPDSCH); 11%Scramble codeword 12scramOut = lteScramble(data, nS, 0, prmLTEPDSCH.maxG); 13% Modulate 14modOut = Modulator(scramOut, prmLTEPDSCH.modType); 15% Generate Cell-Specific Reference (CSR) signals 16csr = CSRgenerator(nS, prmLTEPDSCH.numTx); 17% Resource grid filling 18E=8*prmLTEPDSCH.Nrb; 19csr_ref=reshape(csr(1:E),2*prmLTEPDSCH.Nrb,4); 20txGrid = REmapper_1Tx(modOut, csr_ref, nS, prmLTEPDSCH); 21% OFDM transmitter 22txSig = OFDMTx(txGrid, prmLTEPDSCH); 23%% Channel 24% SIMO Fading channel 25[rxFade, chPathG] = MIMOFadingChan(txSig, prmLTEPDSCH, prmMdl); 26idealhD = lteIdChEst(prmLTEPDSCH, prmMdl, chPathG, nS); 27% Add AWG noise 28nVar = 10.^(0.1.*(-snrdB)); 29rxSig = AWGNChannel(rxFade, nVar); 30%% RX 31% OFDM Rx 32rxGrid = OFDMRx(rxSig, prmLTEPDSCH); 33% updated for numLayers -> numTx 34[dataRx, csrRx, idx_data] = REdemapper_1Tx(rxGrid, nS, prmLTEPDSCH); 35% MIMO 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 42% Frequency-domain equalizer 43% Based on Maximum-Combining Ratio (MCR) 44yRec = Equalizer_simo( dataRx, hD, nVar, prmLTEPDSCH.Eqmode); 45% Demodulate 46demodOut = DemodulatorSoft(yRec, prmLTEPDSCH.modType, nVar); 47% Descramble both received codewords 48rxCW = lteDescramble(demodOut, nS, 0, prmLTEPDSCH.maxG); 49% Channel decoding includes - CB segmentation, turbo decoding, rate dematching 50[decTbData1, ~,~] = lteTbChannelDecoding(nS, rxCW, Kplus1, C1, prmLTEDLSCH, prmLTEPDSCH); 51% Transport 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 [data, csr, idx_data, pdcch, pss, sss, bch] = REdemapper_1Tx(in, nS, prmLTE) 2%#codegen 3% NcellID = 0; % One of possible 504 values 4% numTx = 1; % prmLTE.numTx; 5% Get 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 {1, 2, 3} 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; 7% Assume same number of Tx and Rx antennas = 1 8% Initialize output buffer 9hD = complex(zeros(Nrb*Nrb_sc, Ndl_symb*2,numRx)); 10% Estimate 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 hp= csrRx(:,:,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 "average" or "interpolate" or "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 [y, num, denum] = 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 [1, 2, 3] for ['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的功率譜幅度時,接收信號的幅度譜反映了信道多徑衰落響應的影響。均衡后,幅度譜表現出更為平坦的性質,與傳輸譜非常相似。
![20190113_1547376267_63479295.jpg 1.JPG](/attachment.php?aid=693902)
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 + 2; if 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所報告的那樣。
![20190113_1547376302_88789966.jpg 捕獲.JPG](/attachment.php?aid=693904)
圖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
![20190113_1547376314_94103563.jpg 3.JPG](/attachment.php?aid=693905)
掃碼關注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》
| |