• LTE


    Introduction

    This example demonstrates the multicodeword transmission and reception in the uplink.

    Parameters

    % Generate configuration for FRC A3-2
    frc = lteRMCUL('A3-2');
    
    % UE configuration
    frc.TotSubframes = 1;   % Total number of subframes
    frc.NTxAnts = 2;        % Number of transmit antennas
    
    % Update Physical Uplink Shared Channel (PUSCH) configuration for 2 identically configured codewords
    frc.PUSCH.NLayers = 2;
    frc.PUSCH.Modulation = repmat({frc.PUSCH.Modulation},1,2);
    frc.PUSCH.RV = repmat(frc.PUSCH.RV,1,2);
    frc.PUSCH.TrBlkSizes = repmat(frc.PUSCH.TrBlkSizes,2,1);


    Encoding

    This section sets up the transport blocks and the Uplink Control Information (UCI). This is then coded to generate the Uplink Shared Channel (UL-SCH). The diagram below shows the operations performed internally by lteULSCH.

    % Set up the transport block sizes and data for both codewords
    TBSs = frc.PUSCH.TrBlkSizes(:,frc.NSubframe+1); % transport block sizes
    trBlks = {(randi([0 1], TBSs(1), 1)) (randi([0 1], TBSs(2), 1))}; % data
    
    % Set up UCI contents
    CQI = [1 0 1 0 0 0 1 1 1 0 0 0 1 1].';
    RI  = [0 1 1 0].';
    ACK = [1 0].';
    
    % UL-SCH coding including UCI coding
    cws = lteULSCH(frc,frc.PUSCH,trBlks,CQI,RI,ACK);
    
    % PUSCH modulation is applied to the generated codewords
    puschSymbols = ltePUSCH(frc,frc.PUSCH,cws);

    Decoding

    This section demodulates the PUSCH and applies channel decoding. The resulting UCI is then decoded to produce the received Channel Quality Indicator (CQI), Rank Indication (RI) and Acknowledgment (ACK).

    % PUSCH demodulation
    ulschInfo = lteULSCHInfo(frc,frc.PUSCH,TBSs,length(CQI),length(RI),length(ACK),'chsconcat');    % Get UL-SCH information
    llrs = ltePUSCHDecode(frc,ulschInfo,puschSymbols); % Decode PUSCH
    
    % UL-SCH decoding
    softBuffer = [];
    [rxtrblks,crc,softBuffer] = lteULSCHDecode(frc,ulschInfo,TBSs,llrs,softBuffer);
    
    % UCI decoding
    [llrsData,llrsCQI,llrsRI,llrsACK] = lteULSCHDeinterleave(frc,ulschInfo,llrs);
    rxCQI = lteCQIDecode(ulschInfo,llrsCQI);    % Decode CQI
    rxRI = lteRIDecode(ulschInfo,llrsRI);       % Decode RI
    rxACK = lteACKDecode(ulschInfo,llrsACK);    % Decode ACK

    esults

    The decoded CRC for both codewords is displayed. The transmitted and received CQI, RI and ACK bits are also shown.

    CRCs:
    Codeword 1: 0
    Codeword 2: 0
    
    CQI:
    transmitted: 1  0  1  0  0  0  1  1  1  0  0  0  1  1
    received   : 1  0  1  0  0  0  1  1  1  0  0  0  1  1
    
    RI:
    transmitted: 0  1  1  0
    received   : 0  1  1  0
    
    ACK:
    transmitted: 1  0
    received   : 1  0

    Reference 

      1. MathWorks

      2. 3GPP TS 36.104

  • 相关阅读:
    dart的map方法如何获取index
    Flutter学习(一)——创建一个项目
    springcloudOpenFeign在实际工作使用场景
    springcloud:config搭配bus使用
    springcloud:一篇学会springcloud config
    springcloud一篇搞定GateWay
    springcloud一篇搞定Hystrix
    Dockerfile实践二 爱我
    Redis小结 爱我
    程序员必备知识点 爱我
  • 原文地址:https://www.cnblogs.com/zzyzz/p/13288621.html
Copyright © 2020-2023  润新知