destild
新手上路
发短消息
关注Ta
积分 -742
帖子 60
威望 13021 个
礼品券 0 个
专家指数 -1042
注册 2017-1-19 专业方向
回答问题数 0
回答被采纳数 0
回答采纳率 0%
|
|
“原文 Understanding LTE with MATLAB ,作者Houman Zarrinkoub,本文是对于该书的翻译,书中的专业性词汇给出了英文原文,图和表的排版都是参考原文,翻译不准确的地方请读者多多包涵。本文仅限于个人学习,研究,交流,不得用于其他商业用途!”
5.18.2 SIMO模式 SIMO模式可以看作是SISO模式的一般情况。LTE传输模式1通常被视为SIMO传输模式。在这种模式下,信号处理链与SISO的情况非常相似,只是它使用多个(在我们的功能中为两个或四个)接收天线。在接收器上使用多个天线可以让我们利用接收分集。最大比值组合接收分集(MRC)比单输入单输出(SISO)系统具有更好的误码率性能。建模接收分集不会改变发射机,但会对信道建模和接收机操作带来许多变化。所有这些变化都与多通道处理有关。
在传输性能之后,加载通道处理来自单个传输天线的样本。但是,根据接收天线的数量,它分别对每个链路(发送器-接收器对)应用信道建模。衰落信道的输出现在是一个多信道矩阵,行数等于传输样本数,列数等于接收天线数。类似地,awgn通道处理衰落通道的多通道输出,并在添加白噪声的情况下产生相同大小的输出。
由于多通道接收信号现在是接收器的输入,因此接收器中执行的第一组操作必须跨不同的通道重复(表示不同的接收天线)。这些包括OFDM接收器、资源元素去映射器和达到均衡器功能的信道估计器。
每个接收器上的估计数据资源元素现在与一个新的均衡器相结合,以生成对发送信号的最佳估计。均衡器使用ZF或MMSE方法在每个天线上相等,但结果根据MRC进行组合。这种方法基本上是根据每个接收天线的功率测量来衡量和衡量其贡献。下面的matlab函数包含SIMO情况下收发器中的操作。 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循环中迭代接收天线来支持多通道处理,以便分别提取数据、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验证收发器性能 为了观察接收分集对性能的影响,我们可以执行simo收发器模型(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收发器如何补偿多径衰落效应,并旋转和缩放损坏的星座(均衡前),使其回到可以正确解调的星座(均衡后)。图5.15显示了均衡前后发送和接收信号的功率谱密度。结果表明,当发射信号具有归一化为1的功率谱幅度时,接收信号的幅度谱反映了信道多径衰落响应的影响。均衡后,幅度谱表现出更为平坦的性质,与传输谱非常相似。
5.18.2.3 误码率测量 为了验证收发器的误码率性能,我们创建了一个名为commltesimo_test_timing_ber.m的测试台,首先初始化LTE系统参数,然后迭代一系列的信噪比值,并调用循环中的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;
在执行matlab脚本时,命令提示符中会显示消息,包括收发器参数(调制类型、编码速率、信道带宽、天线配置和最大数据速率)、正在执行的迭代以及已用时间的最终计数。
图5.16显示了作为信噪比值函数的收发器的误码率。在这个例子中,我们在八个迭代中处理5000万位,每个迭代的特征是一个信噪比值。收发器采用16QAM调制方案,编码速率为1/3,系统带宽为10MHz,Simo天线配置为1×4。选择此参数集将导致9.91Mbps的最大数据速率,如函数zreport_data_rate.m所报告的那样。
图5.6 SIMO模型的BER计算 5.19本章小结 在本章中,我们研究了LTE标准中使用的多载波传输方案。重点开发了基于正交频分复用(OFDM)传输的MATLAB下行链路收发器。首先,我们研究了更现实的移动通信信道表示,并介绍了多径衰落信道模型。然后,我们提出了一个OFDM传输方案的功能要素,旨在对抗多径衰落的影响。
然后,我们回顾了发送器中的功能元素,包括:(i)导致资源网格形成的数据的时频表示;(ii)在资源网格中包含OFDM引导信号(或参考信号);以及(iii)使用反向FFT计算传输数据的OFDM信号生成。作为一种基于资源网格表示的完全在频域中指定的时域信号。
随后,我们回顾了接收机中的典型功能元素,包括:(i)计算接收资源网格的OFDM接收机,(ii)基于参考信号的信道估计,(iii)基于信道估计结果插值的整个资源网格的信道响应计算,以及(iv)频域E。基于估计信道响应的定性,用于恢复传输资源元素的最佳估计。
最后,我们整合了所有的功能元素,在Matlab中为LTE标准的单天线下行传输模式建立了一个收发器模型。收发器也被称为LTE传输模式1,它处理SISO和SIMO下行链路收发器操作。通过模拟,我们进行了定性评估和误码率性能测量。结果表明,该收发器能有效地对抗多径衰落引起的码间干扰的影响。在下一章中,我们将介绍MIMO多天线方案,其中多个天线用于传输。
本章完 2019/1/13
扫码关注5G通信官方公众号,免费领取以下5G精品资料
1、回复“iot6”免费领取《【8月30号登载】物联网创新技术与产业应用蓝皮书——物联网感知技术及系统应用》
2、回复“6G31”免费领取《基于云网融合的6G关键技术白皮书》
3、回复“IM6G”免费领取《6G典型场景和关键能力白皮书》
4、回复“SPN2”免费领取《中国移动SPN2.0技术白皮书》
5、回复“LTKJ7”免费领取《 联通科技周17本白皮书合集》
6、回复“5g-a”免费领取《中国联通5G-A 通感算融合技术白皮书》
7、回复“URLLC”免费领取《中国联通5G URLLC 技术白皮书》
8、回复“LDSL”免费领取《中国移动算力网络技术白皮书》
| |