destild
新手上路
發(fā)短消息
關(guān)注Ta
積分 -1127
帖子 60
威望 13021 個(gè)
禮品券 0 個(gè)
專家指數(shù) -1427
注冊(cè) 2017-1-19 專業(yè)方向
回答問題數(shù) 0
回答被采納數(shù) 0
回答采納率 0%
|
大
中
小
發(fā)表于 2019-01-13 18:42:22
只看樓主
|
“原文 Understanding LTE with MATLAB ,作者Houman Zarrinkoub,本文是對(duì)于該書的翻譯,書中的專業(yè)性詞匯給出了英文原文,圖和表的排版都是參考原文,翻譯不準(zhǔn)確的地方請(qǐng)讀者多多包涵。本文僅限于個(gè)人學(xué)習(xí),研究,交流,不得用于其他商業(yè)用途!”
5.18.2 SIMO模式 SIMO模式可以看作是SISO模式的一般情況。LTE傳輸模式1通常被視為SIMO傳輸模式。在這種模式下,信號(hào)處理鏈與SISO的情況非常相似,只是它使用多個(gè)(在我們的功能中為兩個(gè)或四個(gè))接收天線。在接收器上使用多個(gè)天線可以讓我們利用接收分集。最大比值組合接收分集(MRC)比單輸入單輸出(SISO)系統(tǒng)具有更好的誤碼率性能。建模接收分集不會(huì)改變發(fā)射機(jī),但會(huì)對(duì)信道建模和接收機(jī)操作帶來許多變化。所有這些變化都與多通道處理有關(guān)。
在傳輸性能之后,加載通道處理來自單個(gè)傳輸天線的樣本。但是,根據(jù)接收天線的數(shù)量,它分別對(duì)每個(gè)鏈路(發(fā)送器-接收器對(duì))應(yīng)用信道建模。衰落信道的輸出現(xiàn)在是一個(gè)多信道矩陣,行數(shù)等于傳輸樣本數(shù),列數(shù)等于接收天線數(shù)。類似地,awgn通道處理衰落通道的多通道輸出,并在添加白噪聲的情況下產(chǎn)生相同大小的輸出。
由于多通道接收信號(hào)現(xiàn)在是接收器的輸入,因此接收器中執(zhí)行的第一組操作必須跨不同的通道重復(fù)(表示不同的接收天線)。這些包括OFDM接收器、資源元素去映射器和達(dá)到均衡器功能的信道估計(jì)器。
每個(gè)接收器上的估計(jì)數(shù)據(jù)資源元素現(xiàn)在與一個(gè)新的均衡器相結(jié)合,以生成對(duì)發(fā)送信號(hào)的最佳估計(jì)。均衡器使用ZF或MMSE方法在每個(gè)天線上相等,但結(jié)果根據(jù)MRC進(jìn)行組合。這種方法基本上是根據(jù)每個(gè)接收天線的功率測(cè)量來衡量和衡量其貢獻(xiàn)。下面的matlab函數(shù)包含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 函數(shù)改進(jìn) 啟用Simo模式所需的修改會(huì)影響以下三個(gè)功能。 Redemapper_1Tx 現(xiàn)在通過在for循環(huán)中迭代接收天線來支持多通道處理,以便分別提取數(shù)據(jù)、CSR和其他信號(hào)。
ChanEstimate_1Tx 現(xiàn)在通過在多個(gè)天線上重復(fù)基于CSR信號(hào)的資源網(wǎng)格生成過程來支持多通道處理。
Equalizer_simo 采用MRC方法生成接收器處資源元素的最佳估計(jì)。與siso模式的頻域均衡器不同,simo模式的均衡器必須結(jié)合來自多個(gè)信道的貢獻(xiàn)。
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驗(yàn)證收發(fā)器性能 為了觀察接收分集對(duì)性能的影響,我們可以執(zhí)行simo收發(fā)器模型(commlteSIMO)的matlab腳本。首先,我們?cè)谀_本中設(shè)置與模型的各個(gè)組件相關(guān)的參數(shù)(commlteSIMO_參數(shù))。這與siso中使用的腳本相同,只是我們將接收參數(shù)的數(shù)量從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ā)器如何補(bǔ)償多徑衰落效應(yīng),并旋轉(zhuǎn)和縮放損壞的星座(均衡前),使其回到可以正確解調(diào)的星座(均衡后)。圖5.15顯示了均衡前后發(fā)送和接收信號(hào)的功率譜密度。結(jié)果表明,當(dāng)發(fā)射信號(hào)具有歸一化為1的功率譜幅度時(shí),接收信號(hào)的幅度譜反映了信道多徑衰落響應(yīng)的影響。均衡后,幅度譜表現(xiàn)出更為平坦的性質(zhì),與傳輸譜非常相似。

5.18.2.3 誤碼率測(cè)量 為了驗(yàn)證收發(fā)器的誤碼率性能,我們創(chuàng)建了一個(gè)名為commltesimo_test_timing_ber.m的測(cè)試臺(tái),首先初始化LTE系統(tǒng)參數(shù),然后迭代一系列的信噪比值,并調(diào)用循環(huán)中的commltesimo_fcn函數(shù)來計(jì)算相應(yīng)的誤碼率值。 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腳本時(shí),命令提示符中會(huì)顯示消息,包括收發(fā)器參數(shù)(調(diào)制類型、編碼速率、信道帶寬、天線配置和最大數(shù)據(jù)速率)、正在執(zhí)行的迭代以及已用時(shí)間的最終計(jì)數(shù)。
圖5.16顯示了作為信噪比值函數(shù)的收發(fā)器的誤碼率。在這個(gè)例子中,我們?cè)诎藗(gè)迭代中處理5000萬位,每個(gè)迭代的特征是一個(gè)信噪比值。收發(fā)器采用16QAM調(diào)制方案,編碼速率為1/3,系統(tǒng)帶寬為10MHz,Simo天線配置為1×4。選擇此參數(shù)集將導(dǎo)致9.91Mbps的最大數(shù)據(jù)速率,如函數(shù)zreport_data_rate.m所報(bào)告的那樣。

圖5.6 SIMO模型的BER計(jì)算 5.19本章小結(jié) 在本章中,我們研究了LTE標(biāo)準(zhǔn)中使用的多載波傳輸方案。重點(diǎn)開發(fā)了基于正交頻分復(fù)用(OFDM)傳輸?shù)腗ATLAB下行鏈路收發(fā)器。首先,我們研究了更現(xiàn)實(shí)的移動(dòng)通信信道表示,并介紹了多徑衰落信道模型。然后,我們提出了一個(gè)OFDM傳輸方案的功能要素,旨在對(duì)抗多徑衰落的影響。
然后,我們回顧了發(fā)送器中的功能元素,包括:(i)導(dǎo)致資源網(wǎng)格形成的數(shù)據(jù)的時(shí)頻表示;(ii)在資源網(wǎng)格中包含OFDM引導(dǎo)信號(hào)(或參考信號(hào));以及(iii)使用反向FFT計(jì)算傳輸數(shù)據(jù)的OFDM信號(hào)生成。作為一種基于資源網(wǎng)格表示的完全在頻域中指定的時(shí)域信號(hào)。
隨后,我們回顧了接收機(jī)中的典型功能元素,包括:(i)計(jì)算接收資源網(wǎng)格的OFDM接收機(jī),(ii)基于參考信號(hào)的信道估計(jì),(iii)基于信道估計(jì)結(jié)果插值的整個(gè)資源網(wǎng)格的信道響應(yīng)計(jì)算,以及(iv)頻域E。基于估計(jì)信道響應(yīng)的定性,用于恢復(fù)傳輸資源元素的最佳估計(jì)。
最后,我們整合了所有的功能元素,在Matlab中為L(zhǎng)TE標(biāo)準(zhǔn)的單天線下行傳輸模式建立了一個(gè)收發(fā)器模型。收發(fā)器也被稱為L(zhǎng)TE傳輸模式1,它處理SISO和SIMO下行鏈路收發(fā)器操作。通過模擬,我們進(jìn)行了定性評(píng)估和誤碼率性能測(cè)量。結(jié)果表明,該收發(fā)器能有效地對(duì)抗多徑衰落引起的碼間干擾的影響。在下一章中,我們將介紹MIMO多天線方案,其中多個(gè)天線用于傳輸。
本章完 2019/1/13

掃碼關(guān)注5G通信官方公眾號(hào),免費(fèi)領(lǐng)取以下5G精品資料
1、回復(fù)“YD5GAI”免費(fèi)領(lǐng)取《中國移動(dòng):5G網(wǎng)絡(luò)AI應(yīng)用典型場(chǎng)景技術(shù)解決方案白皮書》
2、回復(fù)“5G6G”免費(fèi)領(lǐng)取《5G_6G毫米波測(cè)試技術(shù)白皮書-2022_03-21》
3、回復(fù)“YD6G”免費(fèi)領(lǐng)取《中國移動(dòng):6G至簡(jiǎn)無線接入網(wǎng)白皮書》
4、回復(fù)“LTBPS”免費(fèi)領(lǐng)取《《中國聯(lián)通5G終端白皮書》》
5、回復(fù)“ZGDX”免費(fèi)領(lǐng)取《中國電信5G NTN技術(shù)白皮書》
6、回復(fù)“TXSB”免費(fèi)領(lǐng)取《通信設(shè)備安裝工程施工工藝圖解》
7、回復(fù)“YDSL”免費(fèi)領(lǐng)取《中國移動(dòng)算力并網(wǎng)白皮書》
8、回復(fù)“5GX3”免費(fèi)領(lǐng)取《 R16 23501-g60 5G的系統(tǒng)架構(gòu)1》
| |