Matlab Toolbox - 4G/LTE

 

 

 

RMC Dlownlink - CellRefP = N, NLayer = M, NTxAnts = N, port 7-14

 

These RMCs test transmission mode 9, where the PDSCH goes out on antenna ports 7 to 14 with a UE-specific DMRS. The UE measures the channel for CSI reporting on the CSI-RS rather than the CRS. This page generates R.43 to R.51 with lteRMCDL and lteRMCDLTool, and shows the grid of each transmit antenna.

Followings are the topics to be covered in this page.

Generating RMC Downlink Signal

The code follows the CellRefP = N, NLayer = M page, and it keeps the CRS split by port for CellRefP = 2 and 4. The new element is the DMRS, which the function lteDMRSIndices returns for the PDSCH configuration of each subframe.

    rc = 'R.43';

     

    rmc = lteRMCDL(rc)

    pdsch = rmc.PDSCH

     

    txData = [0;0;0;0];

    [txWaveform, txGrid, rmcCfgOut] = lteRMCDLTool(rmc, txData);

     

    SF_RE_NUM = rmc.NDLRB*12*14;

    SYM_RE_NUM = rmc.NDLRB*12;

    TxAntIndex = 0;

    TxAnt = TxAntIndex + 1;

     

    txGrid = txGrid(:,:,TxAnt);

    txGridChMap = txGrid(:,:,1);

     

    crs_scale = 0.2;

    pss_scale = 0.3;

    sss_scale = 0.3;

    phich_scale = 0.7;

    pcfich_scale = 0.8;

    pbch_scale = 0.7;

    pdcch_scale = 0.5;

    pdsch_scale = 0.4;

    dmrs_scale = 0.9;

     

    noPdschSubframe = [5];

     

    for i=0:9

        rmc.NSubframe = i;

        pdsch = rmc.PDSCH;

        indexOffset = (rmc.NDLRB * 12 * 14) * rmc.NSubframe;

        crs_sym_ind = lteCellRSIndices(rmc);

        if rmc.CellRefP == 2

            crs_sym_ind = reshape(crs_sym_ind,[length(crs_sym_ind)/2, 2]);

            crs_sym_ind_p0 = crs_sym_ind(:,1);

            crs_sym_ind_p1 = crs_sym_ind(:,2);

        elseif rmc.CellRefP == 4

            crs_sym_ind = reshape(crs_sym_ind,[length(crs_sym_ind)/3, 3]);

            crs_sym_ind_p0 = crs_sym_ind(:,1);

            crs_sym_ind_p1 = crs_sym_ind(:,2);

            crs_sym_ind_p2_3 = crs_sym_ind(:,3);

            crs_sym_ind_p2_3 = reshape(crs_sym_ind_p2_3,[length(crs_sym_ind_p2_3)/2, 2]);

            crs_sym_ind_p2 = crs_sym_ind_p2_3(:,1);

            crs_sym_ind_p3 = crs_sym_ind_p2_3(:,2);

        end    

        

        if iscell(pdsch.PRBSet) == true

             pdsch.PRBSet = cell2mat(pdsch.PRBSet(i+1));

        end    

        dmrs_sym_ind =  lteDMRSIndices(rmc,pdsch,'sub');

        

        if (i == 0) || (i == 5)

            pss_sym_ind = ltePSSIndices(rmc)+indexOffset;

            sss_sym_ind = lteSSSIndices(rmc)+indexOffset;

        end

        

        pcfich_sym_ind = ltePCFICHIndices(rmc)+indexOffset;

        phich_sym_ind = ltePHICHIndices(rmc)+indexOffset;

     

        if i == 0

            pbch_sym_ind = ltePBCHIndices(rmc)+indexOffset;

        end

        

        dci.NDLRB = rmc.NDLRB;

        dci.DCIFormat = pdsch.DCIFormat;

        dci.AllocationType = 0;

        dci.Allocation.RIV = 18;

        dci.ModCoding = 10;

        dci.HARQNo = 0;

        dci.NewData = 0;

        dci.TPCPUCCH = 0;

        dci.DuplexMode = 'FDD';

        dci.NTxAnts = 1;

        [dciMessage,dciMessageBits] = lteDCI(rmc,dci);

        

        pdcchConfig.RNTI = pdsch.RNTI;

        pdcchConfig.PDCCHFormat = pdsch.PDCCHFormat;

        

        codedDciBits = lteDCIEncode(pdcchConfig, dciMessageBits);

        pdcchDims = ltePDCCHInfo(rmc);

        pdcchBits = -1*ones(pdcchDims.MTot, 1);

        candidates = ltePDCCHSpace(rmc, pdcchConfig);

        pdcchBits ( candidates(1, 1) : candidates(1, 2) ) = codedDciBits;

        pdcch_sym = ltePDCCH(rmc, pdcchBits);

        

        pdcch_sym_ind = ltePDCCHIndices(rmc)+indexOffset;

        

            

        if ismember(i,noPdschSubframe) == false

           if iscell(pdsch.PRBSet) == true

              [pdsch_sym_ind,pdschIndInfo] = ltePDSCHIndices(rmc,pdsch,cell2mat(pdsch.PRBSet(i+1)));

           else   

              [pdsch_sym_ind,pdschIndInfo] = ltePDSCHIndices(rmc,pdsch,pdsch.PRBSet);

           end   

           pdsch_sym_ind = pdsch_sym_ind + indexOffset;

        end   

        

        if TxAntIndex < rmc.CellRefP

            if TxAntIndex == 0

               txGridChMap(crs_sym_ind_p0-SF_RE_NUM*TxAntIndex) = crs_scale;

            elseif TxAntIndex == 1

               txGridChMap(crs_sym_ind_p1-SF_RE_NUM*TxAntIndex) = crs_scale;     

            elseif TxAntIndex == 2

                txGridChMap(crs_sym_ind_p2-SF_RE_NUM*TxAntIndex) = crs_scale;

            elseif TxAntIndex == 3

                txGridChMap(crs_sym_ind_p3-SF_RE_NUM*TxAntIndex) = crs_scale;

            end    

        end

        

        if TxAntIndex == 0

            txGridChMap(pss_sym_ind) = pss_scale;

            txGridChMap(sss_sym_ind) = sss_scale;

        end

        

    %     idxAry = [];

    %     for di = 1:length(dmrs_sym_ind)

    %         if dmrs_sym_ind(di,3) == TxAnt

    %            idx = SYM_RE_NUM * (dmrs_sym_ind(di,2)-1-1) + (dmrs_sym_ind(di,1)-1);

    %            idxAry = [idxAry ; idx];

    %         end    

    %     end    

        

        %txGridChMap(idxAry+SF_RE_NUM*i) = dmrs_scale;

        

        if TxAntIndex < rmc.CellRefP

            txGridChMap(pcfich_sym_ind(:,TxAnt)-SF_RE_NUM*TxAntIndex) = pcfich_scale;

            txGridChMap(phich_sym_ind(:,TxAnt)-SF_RE_NUM*TxAntIndex) = phich_scale;

            txGridChMap(pbch_sym_ind(:,TxAnt)-SF_RE_NUM*TxAntIndex) = pbch_scale;

     

            txGridChMap(pdcch_sym_ind(:,TxAnt)-SF_RE_NUM*TxAntIndex) = pdcch_scale .* pdcch_sym(:,TxAnt);

        end

        

        if ismember(i,noPdschSubframe) == false

            txGridChMap(pdsch_sym_ind(:,TxAnt)-SF_RE_NUM*TxAntIndex) = pdsch_scale;

        end

    end

     

    ylabelText = {'0','1','2','3','4','5','6','7','8','9', ...

              '10','11','12','13','14','15','16','17','18','19', ...

              '20','21','22','23','24','25','26','27','28','29', ...

              '30','31','32','33','34','35','36','37','38','39', ...

              '40','41','42','43','44','45','46','47','48','49', ...

              '50','51','52','53','54','55','56','57','58','59', ...

              '60','61','62','63','64','65','66','67','68','69', ...

              '70','71','72','73','74','75','76','77','78','79', ...

              '80','81','82','83','84','85','86','87','88','89', ...

              '90','91','92','93','94','95','96','97','98','99'};

    ytick = 7:12:(rmc.NDLRB*12);

     

    subplot(2,3,1);

    imagesc(abs(txGrid));

    axis xy;

    xlabel('Subframe');

    ylabel('RB');

    set(gca,'xtick',8:14:140);

    set(gca,'xticklabel',{'0','1','2','3','4','5','6','7','8','9','10'});

    set(gca,'ytick',ytick);

    set(gca,'yticklabel',ylabelText);

     

     

    subplot(2,3,4);

    imagesc(abs(txGridChMap));

    axis xy;

    xlabel('Subframe');

    ylabel('RB');

    set(gca,'xtick',8:14:140);

    set(gca,'xticklabel',{'0','1','2','3','4','5','6','7','8','9','10'});

    set(gca,'ytick',ytick);

    set(gca,'yticklabel',ylabelText);

     

    subplot(2,3,[2 5]);

    imagesc(abs(txGridChMap));

    axis xy;

    xlabel('Symbol');

    ylabel('RB');

    xlim([0.5 14.5]);

    ylim([0.5 12*rmc.NDLRB]);

    set(gca,'xtick',1:14);

    set(gca,'xticklabel',{'0','1','2','3','4','5','6','7','8','9','10','11','12','13'});

    set(gca,'ytick',ytick);

    set(gca,'yticklabel',ylabelText);

     

    subplot(2,3,[3 6]);

    imagesc(abs(txGridChMap));

    axis xy;

    xlabel('Symbol');

    ylabel('Subcarrier');

    xlim([0.5 14.5]);

    ylim([0.5 24.5]);

    set(gca,'xtick',1:14);

    set(gca,'xticklabel',{'0','1','2','3','4','5','6','7','8','9','10','11','12','13'});

    set(gca,'ytick',0.5:23.5);

    set(gca,'yticklabel',ylabelText);

     

    mymap = [0.0 0.0 0.0

             1.0 1.0 0.0

             1.0 0.0 0.0

             0.5 0.0 0.0

             0.0 1.0 0.0

             0.0 0.5 0.0

             0.0 0.0 1.0

             0.0 0.0 0.5

             0.0 1.0 1.0

             1.0 0.0 1.0

             1.0 1.0 1.0];

    colormap(mymap);

     

    set(gcf, 'Position', [200, 200, 800, 700])

     

All the RMCs on this page use CellRefP = 2 and TxScheme = 'Port7-14', so the CRS exist only on antennas 0 and 1. The PDSCH goes out on four antennas, or two for R.51, through the precoding vector W. As on the port 5 page, the PSS, SSS, PBCH and control channels are marked only on the antennas that carry the CRS. Antennas 2 and 3 therefore show only the PDSCH and the DMRS.

The loop that marks the DMRS with dmrs_scale is commented out. The DMRS REs therefore keep the magnitude of the generated grid, and they appear in dark green in most of the plots below. The CSI-RS are not marked either, and they fall in subframes that the enlarged view of subframe 0 does not show.

  • TxScheme 'Port7-14' : transmission mode 9 with DCI Format 2C.
  • CRS only on antennas 0 and 1 : CellRefP = 2 in every RMC on this page.
  • DMRS shown by its own magnitude : the marking loop is commented out.

RMC R.43 with four CSI-RS ports

R.43 sends one QPSK layer on 50 RB, from 36.101 Table A.3.3.3.2-1. It uses four CSI-RS ports and a zero-power CSI-RS on top of them, so it shows every type of RE that the other RMCs on this page use.

rc = 'R.43'; TxAntIndex = 0

36.101 v14.4 - Table A.3.3.3.2-1: Fixed Reference Channel for CDM-multiplexed DM RS with four CSI-RS antenna ports   

Resource grid of RMC R.43 on antenna 0 over one frame and in subframe 0

rc = 'R.43'; TxAntIndex = 1

 
Resource grid of RMC R.43 on antenna 1 over one frame and in subframe 0

rc = 'R.43'; TxAntIndex = 2

 
Resource grid of RMC R.43 on antenna 2 over one frame and in subframe 0

rc = 'R.43'; TxAntIndex = 3

 
Resource grid of RMC R.43 on antenna 3 over one frame and in subframe 0

rmc =

 

  struct with fields:

 

                      RC: 'R.43'

                   NDLRB: 50

                CellRefP: 2

                 NCellID: 0

            CyclicPrefix: 'Normal'

                     CFI: 2

             PCFICHPower: 0

                      Ng: 'Sixth'

           PHICHDuration: 'Normal'

                   HISet: [112×3 double]

              PHICHPower: 0

                  NFrame: 0

               NSubframe: 0

            TotSubframes: 10

               Windowing: 0

              DuplexMode: 'FDD'

                   PDSCH: [1×1 struct]

         OCNGPDCCHEnable: 'Off'

          OCNGPDCCHPower: 0

         OCNGPDSCHEnable: 'Off'

          OCNGPDSCHPower: 0

               OCNGPDSCH: [1×1 struct]

                 CSIRefP: 4

             CSIRSPeriod: [5 2]

             CSIRSConfig: 0

    ZeroPowerCSIRSPeriod: 3

    ZeroPowerCSIRSConfig: '0001000000000000'

 

 

pdsch =

 

  struct with fields:

 

           TxScheme: 'Port7-14'

         Modulation: {'QPSK'}

            NLayers: 1

                Rho: 0

               RNTI: 1

              RVSeq: [0 1 2 3]

                 RV: 0

     NHARQProcesses: 8

       NTurboDecIts: 5

             PRBSet: {1×10 cell}

     TargetCodeRate: 0.3333

     ActualCodeRate: [0.3057 0.3040 0.3145 0.3145 0.3040 0 0.3040 0.3145 0.3145 0.3040]

         TrBlkSizes: [2984 3624 3624 3624 3624 0 3624 3624 3624 3624]

    CodedTrBlkSizes: [9840 12000 11600 11600 12000 0 12000 11600 11600 12000]

          DCIFormat: 'Format2C'

        PDCCHFormat: 2

         PDCCHPower: 0

            CSIMode: 'PUSCH 1-2'

            PMIMode: 'Wideband'

              NSCID: 0

                  W: [0.5000 + 0.0000i 0.5000 + 0.0000i 0.5000 + 0.0000i 0.5000 + 0.0000i]

            NTxAnts: 4

R.43. Antennas 0 and 1 carry the CRS, the synchronization signals and the control channels. Antennas 2 and 3 carry only the PDSCH and the DMRS. In subframe 0, the PDSCH leaves out RB 21 to 29 on every antenna.

The DMRS of port 7 follow 36.211 v19.3.0 clause 6.10.3.2. They take subcarriers 1, 6 and 11 of each PRB in symbols 5, 6, 12 and 13, which are the dark green REs in the enlarged view. That is 12 REs per PRB pair. A PRB pair has 168 REs, and with CFI 2 the control region takes 24 of them. The CRS of ports 0 and 1 take 12 more, and the DMRS another 12. So 144 - 12 - 12 = 120 REs remain, and 50 RB give 6000 REs, which are the 12000 coded bits of subframes 1, 4, 6 and 9.

CSIRSPeriod = [5 2] puts the CSI-RS in subframes 2 and 7, with a period of 5 and an offset of 2. Four CSI-RS ports take 4 REs per PRB pair, so those subframes carry 116 REs per PRB pair and 11600 coded bits. ZeroPowerCSIRSPeriod = 3 is the configuration index 3 of 36.211 Table 6.10.5.3-1, a period of 5 and an offset of 3. The zero-power CSI-RS then removes 4 more REs in subframes 3 and 8, which gives the same 11600 bits.

Subframe 0 leaves out RB 21 to 29, three resource block groups of 3 RB around the PBCH and the synchronization signals. So 41 RB with 120 REs give 4920 REs and 9840 coded bits. The transport block adds a 24-bit CRC, and (2984 + 24) / 9840 = 0.3057, the ActualCodeRate of subframe 0. W = [0.5 0.5 0.5 0.5] spreads the one layer equally over the four antennas.

  • DMRS at subcarriers 1, 6 and 11 : in symbols 5, 6, 12 and 13, 12 REs per PRB pair.
  • 120 PDSCH REs per PRB pair : 144 minus 12 CRS and 12 DMRS with CFI 2.
  • CSI-RS in subframes 2 and 7 : zero-power CSI-RS in subframes 3 and 8, 4 REs each.
  • Subframe 0 without RB 21 to 29 : 9840 coded bits on 41 RB.

RMCs R.44, R.45 and R.45-1 with four CSI-RS ports

R.44, R.45 and R.45-1 come from 36.101 Table A.3.3.3.2-2, which uses four CSI-RS ports without a zero-power CSI-RS. They move the CSI-RS to subframes 1 and 6, and R.45-1 also removes the central RBs from every subframe.

rc = 'R.44'; TxAntIndex = 0

36.101 v14.4 - Table A.3.3.3.2-2: Fixed Reference Channel for four antenna ports (CSI-RS)  

Resource grid of RMC R.44 on antenna 0 over one frame and in subframe 0

rc = 'R.44'; TxAntIndex = 1

 
Resource grid of RMC R.44 on antenna 1 over one frame and in subframe 0

rc = 'R.44'; TxAntIndex = 2

 
Resource grid of RMC R.44 on antenna 2 over one frame and in subframe 0

rc = 'R.44'; TxAntIndex = 3

 
Resource grid of RMC R.44 on antenna 3 over one frame and in subframe 0

rmc =

 

  struct with fields:

 

                      RC: 'R.44'

                   NDLRB: 50

                CellRefP: 2

                 NCellID: 0

            CyclicPrefix: 'Normal'

                     CFI: 2

             PCFICHPower: 0

                      Ng: 'Sixth'

           PHICHDuration: 'Normal'

                   HISet: [112×3 double]

              PHICHPower: 0

                  NFrame: 0

               NSubframe: 0

            TotSubframes: 10

               Windowing: 0

              DuplexMode: 'FDD'

                   PDSCH: [1×1 struct]

         OCNGPDCCHEnable: 'Off'

          OCNGPDCCHPower: 0

         OCNGPDSCHEnable: 'Off'

          OCNGPDSCHPower: 0

               OCNGPDSCH: [1×1 struct]

                 CSIRefP: 4

             CSIRSPeriod: [5 1]

             CSIRSConfig: 6

    ZeroPowerCSIRSPeriod: 'Off'

    ZeroPowerCSIRSConfig: '0010000000000000'

 

 

pdsch =

 

  struct with fields:

 

           TxScheme: 'Port7-14'

         Modulation: {'QPSK'}

            NLayers: 1

                Rho: 0

               RNTI: 1

              RVSeq: [0 1 2 3]

                 RV: 0

     NHARQProcesses: 8

       NTurboDecIts: 5

             PRBSet: {1×10 cell}

     TargetCodeRate: 0.3333

     ActualCodeRate: [0.3057 0.3145 0.3040 0.3040 0.3040 0 0.3145 0.3040 0.3040 0.3040]

         TrBlkSizes: [2984 3624 3624 3624 3624 0 3624 3624 3624 3624]

    CodedTrBlkSizes: [9840 11600 12000 12000 12000 0 11600 12000 12000 12000]

          DCIFormat: 'Format2C'

        PDCCHFormat: 2

         PDCCHPower: 0

            CSIMode: 'PUSCH 3-1'

            PMIMode: 'Wideband'

              NSCID: 0

                  W: [0.5000 + 0.0000i 0.5000 + 0.0000i 0.5000 + 0.0000i 0.5000 + 0.0000i]

            NTxAnts: 4

R.44, QPSK. The same RE layout as R.43 in subframe 0.

rc = 'R.45'; TxAntIndex = 0

36.101 v14.4 - Table A.3.3.3.2-2: Fixed Reference Channel for four antenna ports (CSI-RS)   

Resource grid of RMC R.45 on antenna 0 over one frame and in subframe 0

rc = 'R.45'; TxAntIndex = 1

 
Resource grid of RMC R.45 on antenna 1 over one frame and in subframe 0

rc = 'R.45'; TxAntIndex = 2

 
Resource grid of RMC R.45 on antenna 2 over one frame and in subframe 0

rc = 'R.45'; TxAntIndex = 3

 
Resource grid of RMC R.45 on antenna 3 over one frame and in subframe 0

rmc =

 

  struct with fields:

 

                      RC: 'R.45'

                   NDLRB: 50

                CellRefP: 2

                 NCellID: 0

            CyclicPrefix: 'Normal'

                     CFI: 2

             PCFICHPower: 0

                      Ng: 'Sixth'

           PHICHDuration: 'Normal'

                   HISet: [112×3 double]

              PHICHPower: 0

                  NFrame: 0

               NSubframe: 0

            TotSubframes: 10

               Windowing: 0

              DuplexMode: 'FDD'

                   PDSCH: [1×1 struct]

         OCNGPDCCHEnable: 'Off'

          OCNGPDCCHPower: 0

         OCNGPDSCHEnable: 'Off'

          OCNGPDSCHPower: 0

               OCNGPDSCH: [1×1 struct]

                 CSIRefP: 4

             CSIRSPeriod: [5 1]

             CSIRSConfig: 8

    ZeroPowerCSIRSPeriod: 'Off'

    ZeroPowerCSIRSConfig: '0010000000000000'

 

 

pdsch =

 

  struct with fields:

 

           TxScheme: 'Port7-14'

         Modulation: {'16QAM'}

            NLayers: 1

                Rho: 0

               RNTI: 1

              RVSeq: [0 1 2 3]

                 RV: 0

     NHARQProcesses: 8

       NTurboDecIts: 5

             PRBSet: {1×10 cell}

     TargetCodeRate: 0.5000

     ActualCodeRate: [0.4878 0.4966 0.4800 0.4800 0.4800 0 0.4966 0.4800 0.4800 0.4800]

         TrBlkSizes: [9528 11448 11448 11448 11448 0 11448 11448 11448 11448]

    CodedTrBlkSizes: [19680 23200 24000 24000 24000 0 23200 24000 24000 24000]

          DCIFormat: 'Format2C'

        PDCCHFormat: 2

         PDCCHPower: 0

            CSIMode: 'PUSCH 1-2'

            PMIMode: 'Subband'

              NSCID: 0

                  W: [0.5000 + 0.0000i 0.5000 + 0.0000i 0.5000 + 0.0000i 0.5000 + 0.0000i]

            NTxAnts: 4

R.45, 16QAM. The same REs as R.44.

rc = 'R.45-1'; TxAntIndex = 0

36.101 v14.4 - Table A.3.3.3.2-2: Fixed Reference Channel for four antenna ports (CSI-RS)   

Resource grid of RMC R.45-1 on antenna 0 over one frame and in subframe 0

rc = 'R.45-1'; TxAntIndex = 1

 
Resource grid of RMC R.45-1 on antenna 1 over one frame and in subframe 0

rc = 'R.45-1'; TxAntIndex = 2

 
Resource grid of RMC R.45-1 on antenna 2 over one frame and in subframe 0

rc = 'R.45-1'; TxAntIndex = 3

 
Resource grid of RMC R.45-1 on antenna 3 over one frame and in subframe 0

rmc =

 

  struct with fields:

 

                      RC: 'R.45-1'

                   NDLRB: 50

                CellRefP: 2

                 NCellID: 0

            CyclicPrefix: 'Normal'

                     CFI: 2

             PCFICHPower: 0

                      Ng: 'Sixth'

           PHICHDuration: 'Normal'

                   HISet: [112×3 double]

              PHICHPower: 0

                  NFrame: 0

               NSubframe: 0

            TotSubframes: 10

               Windowing: 0

              DuplexMode: 'FDD'

                   PDSCH: [1×1 struct]

         OCNGPDCCHEnable: 'Off'

          OCNGPDCCHPower: 0

         OCNGPDSCHEnable: 'Off'

          OCNGPDSCHPower: 0

               OCNGPDSCH: [1×1 struct]

                 CSIRefP: 4

             CSIRSPeriod: [5 1]

             CSIRSConfig: 8

    ZeroPowerCSIRSPeriod: 'Off'

    ZeroPowerCSIRSConfig: '0010000000000000'

 

 

pdsch =

 

  struct with fields:

 

           TxScheme: 'Port7-14'

         Modulation: {'16QAM'}

            NLayers: 1

                Rho: 0

               RNTI: 1

              RVSeq: [0 1 2 3]

                 RV: 0

     NHARQProcesses: 8

       NTurboDecIts: 5

             PRBSet: [39×1 double]

     TargetCodeRate: 0.5000

     ActualCodeRate: [0.4718 0.4881 0.4718 0.4718 0.4718 0 0.4881 0.4718 0.4718 0.4718]

         TrBlkSizes: [8760 8760 8760 8760 8760 0 8760 8760 8760 8760]

    CodedTrBlkSizes: [18720 18096 18720 18720 18720 0 18096 18720 18720 18720]

          DCIFormat: 'Format2C'

        PDCCHFormat: 2

         PDCCHPower: 0

            CSIMode: 'PUSCH 1-2'

            PMIMode: 'Subband'

              NSCID: 0

                  W: [0.5000 + 0.0000i 0.5000 + 0.0000i 0.5000 + 0.0000i 0.5000 + 0.0000i]

            NTxAnts: 4

R.45-1, 16QAM. RB 21 to 29, RB 48 and RB 49 stay empty in every subframe, not only in subframe 0.

CSIRSPeriod = [5 1] puts the CSI-RS in subframes 1 and 6. Those subframes carry 116 REs per PRB pair, which gives 11600 coded bits for R.44 and 23200 for R.45. The other subframes, 2, 3, 4, 7, 8 and 9, keep 120 REs per PRB pair, because ZeroPowerCSIRSPeriod is 'Off'. R.44 carries the same 2984 and 3624 bit transport blocks as R.43, and R.45 carries 9528 and 11448 bits with 16QAM.

R.45-1 allocates 39 RB in every subframe: RB 0 to 20 and RB 30 to 47. It avoids the central RBs even where no PBCH or synchronization signal is present, so the transport block stays at 8760 bits in all nine subframes. With 16QAM, 39 RB give 18720 coded bits, and 18096 in subframes 1 and 6, which are 39 x 116 REs with 4 bits each. The frame views of R.45-1 show this empty band across the whole frame.

  • CSI-RS in subframes 1 and 6 : CSIRSPeriod = [5 1], no zero-power CSI-RS.
  • R.44 QPSK, R.45 16QAM : both on 50 RB with one layer.
  • R.45-1 on 39 RB : 8760 bits in every subframe.

RMCs R.48 and R.50 with four CSI-RS ports

R.48 and R.50 return to Table A.3.3.3.2-1, the table of R.43. R.48 keeps QPSK but raises the code rate to about 1/2, and R.50 uses 64QAM. The RE layout is the same as for R.43, so the difference lies in the transport block sizes.

rc = 'R.48'; TxAntIndex = 0

36.101 v14.4 - Table A.3.3.3.2-1: Fixed Reference Channel for CDM-multiplexed DM RS with four CSI-RS antenna ports   

Resource grid of RMC R.48 on antenna 0 over one frame and in subframe 0

rc = 'R.48'; TxAntIndex = 1

 
Resource grid of RMC R.48 on antenna 1 over one frame and in subframe 0

rc = 'R.48'; TxAntIndex = 2

 
Resource grid of RMC R.48 on antenna 2 over one frame and in subframe 0

rc = 'R.48'; TxAntIndex = 3

 
Resource grid of RMC R.48 on antenna 3 over one frame and in subframe 0

rmc =

 

  struct with fields:

 

                      RC: 'R.48'

                   NDLRB: 50

                CellRefP: 2

                 NCellID: 0

            CyclicPrefix: 'Normal'

                     CFI: 2

             PCFICHPower: 0

                      Ng: 'Sixth'

           PHICHDuration: 'Normal'

                   HISet: [112×3 double]

              PHICHPower: 0

                  NFrame: 0

               NSubframe: 0

            TotSubframes: 10

               Windowing: 0

              DuplexMode: 'FDD'

                   PDSCH: [1×1 struct]

         OCNGPDCCHEnable: 'Off'

          OCNGPDCCHPower: 0

         OCNGPDSCHEnable: 'Off'

          OCNGPDSCHPower: 0

               OCNGPDSCH: [1×1 struct]

                 CSIRefP: 4

             CSIRSPeriod: [5 2]

             CSIRSConfig: 0

    ZeroPowerCSIRSPeriod: 'Off'

    ZeroPowerCSIRSConfig: '0010000000000000'

 

 

pdsch =

 

  struct with fields:

 

           TxScheme: 'Port7-14'

         Modulation: {'QPSK'}

            NLayers: 1

                Rho: 0

               RNTI: 1

              RVSeq: [0 1 2 3]

                 RV: 0

     NHARQProcesses: 8

       NTurboDecIts: 5

             PRBSet: {1×10 cell}

     TargetCodeRate: [0.5073 0.5227 0.5407 0.5227 0.5227 0 0.5227 0.5407 0.5227 0.5227]

     ActualCodeRate: [0.5073 0.5227 0.5407 0.5227 0.5227 0 0.5227 0.5407 0.5227 0.5227]

         TrBlkSizes: [4968 6200 6200 6200 6200 0 6200 6200 6200 6200]

    CodedTrBlkSizes: [9840 12000 11600 12000 12000 0 12000 11600 12000 12000]

          DCIFormat: 'Format2C'

        PDCCHFormat: 2

         PDCCHPower: 0

            CSIMode: 'PUCCH 1-1'

            PMIMode: 'Wideband'

              NSCID: 0

                  W: [0.5000 + 0.0000i 0.5000 + 0.0000i 0.5000 + 0.0000i 0.5000 + 0.0000i]

            NTxAnts: 4

R.48, QPSK. The same RE layout as R.43.

rc = 'R.50'; TxAntIndex = 0

36.101 v14.4 - Table A.3.3.3.2-1: Fixed Reference Channel for CDM-multiplexed DM RS with four CSI-RS antenna ports   

Resource grid of RMC R.50 on antenna 0 over one frame and in subframe 0

rc = 'R.50'; TxAntIndex = 1

 
Resource grid of RMC R.50 on antenna 1 over one frame and in subframe 0

rc = 'R.50'; TxAntIndex = 2

 
Resource grid of RMC R.50 on antenna 2 over one frame and in subframe 0

rc = 'R.50'; TxAntIndex = 3

 
Resource grid of RMC R.50 on antenna 3 over one frame and in subframe 0

rmc =

 

  struct with fields:

 

                      RC: 'R.50'

                   NDLRB: 50

                CellRefP: 2

                 NCellID: 0

            CyclicPrefix: 'Normal'

                     CFI: 2

             PCFICHPower: 0

                      Ng: 'Sixth'

           PHICHDuration: 'Normal'

                   HISet: [112×3 double]

              PHICHPower: 0

                  NFrame: 0

               NSubframe: 0

            TotSubframes: 10

               Windowing: 0

              DuplexMode: 'FDD'

                   PDSCH: [1×1 struct]

         OCNGPDCCHEnable: 'Off'

          OCNGPDCCHPower: 0

         OCNGPDSCHEnable: 'Off'

          OCNGPDSCHPower: 0

               OCNGPDSCH: [1×1 struct]

                 CSIRefP: 4

             CSIRSPeriod: [5 2]

             CSIRSConfig: 3

    ZeroPowerCSIRSPeriod: 3

    ZeroPowerCSIRSConfig: '0001000000000000'

 

 

pdsch =

 

  struct with fields:

 

           TxScheme: 'Port7-14'

         Modulation: {'64QAM'}

            NLayers: 1

                Rho: 0

               RNTI: 1

              RVSeq: [0 0 1 2]

                 RV: 0

     NHARQProcesses: 8

       NTurboDecIts: 5

             PRBSet: {1×10 cell}

     TargetCodeRate: 0.5000

     ActualCodeRate: [0.5008 0.5120 0.4745 0.4745 0.5120 0 0.5120 0.4745 0.4745 0.5120]

         TrBlkSizes: [14688 18336 16416 16416 18336 0 18336 16416 16416 18336]

    CodedTrBlkSizes: [29520 36000 34800 34800 36000 0 36000 34800 34800 36000]

          DCIFormat: 'Format2C'

        PDCCHFormat: 2

         PDCCHPower: 0

            CSIMode: 'PUCCH 1-1'

            PMIMode: 'Wideband'

              NSCID: 0

                  W: [0.5000 + 0.0000i 0.5000 + 0.0000i 0.5000 + 0.0000i 0.5000 + 0.0000i]

            NTxAnts: 4

R.50, 64QAM. The same REs again.

R.48 has CSI-RS in subframes 2 and 7 and no zero-power CSI-RS, so only those two subframes carry 11600 coded bits. The transport block stays at 6200 bits in all of them, and the code rate changes from subframe to subframe. That is why the toolbox reports TargetCodeRate as an array for R.48, with 0.5407 in the CSI-RS subframes and 0.5227 elsewhere.

R.50 has the CSI-RS and the zero-power CSI-RS of R.43, so subframes 2, 3, 7 and 8 carry 34800 coded bits, 116 REs per PRB pair with 6 bits each. Unlike R.48, R.50 lowers the transport block in those subframes, from 18336 to 16416 bits. Subframe 0 carries 14688 bits in 29520 coded bits, again on 41 RB.

  • R.48: one TBS of 6200 bits : the code rate rises to 0.5407 in the CSI-RS subframes.
  • R.50: 64QAM : 16416 bits in the CSI-RS and zero-power CSI-RS subframes.
  • Same RE layout as R.43 : only the modulation and the TBS change.

RMC R.51 with two CSI-RS ports

R.51 is the two-antenna member of the group. It uses two CSI-RS ports and W = [0.7071 0.7071]. So the PDSCH goes out on the two antennas that already carry the CRS, and the page shows two grids instead of four.

rc = 'R.51'; TxAntIndex = 0

36.101 v14.4 - Table A.3.3.3.1-1: Fixed Reference Channel for CDM-multiplexed DM RS with two CSI-RS antenna ports   

Resource grid of RMC R.51 on antenna 0 over one frame and in subframe 0

rc = 'R.51'; TxAntIndex = 1

 
Resource grid of RMC R.51 on antenna 1 over one frame and in subframe 0

rmc =

 

  struct with fields:

 

                      RC: 'R.51'

                   NDLRB: 50

                CellRefP: 2

                 NCellID: 0

            CyclicPrefix: 'Normal'

                     CFI: 2

             PCFICHPower: 0

                      Ng: 'Sixth'

           PHICHDuration: 'Normal'

                   HISet: [112×3 double]

              PHICHPower: 0

                  NFrame: 0

               NSubframe: 0

            TotSubframes: 10

               Windowing: 0

              DuplexMode: 'FDD'

                   PDSCH: [1×1 struct]

         OCNGPDCCHEnable: 'Off'

          OCNGPDCCHPower: 0

         OCNGPDSCHEnable: 'Off'

          OCNGPDSCHPower: 0

               OCNGPDSCH: [1×1 struct]

                 CSIRefP: 2

             CSIRSPeriod: [5 2]

             CSIRSConfig: 8

    ZeroPowerCSIRSPeriod: 3

    ZeroPowerCSIRSConfig: '0010000000000000'

 

 

pdsch =

 

  struct with fields:

 

           TxScheme: 'Port7-14'

         Modulation: {'16QAM'}

            NLayers: 1

                Rho: 0

               RNTI: 1

              RVSeq: [0 1 2 3]

                 RV: 0

     NHARQProcesses: 8

       NTurboDecIts: 5

             PRBSet: {1×10 cell}

     TargetCodeRate: 0.5000

     ActualCodeRate: [0.4878 0.4800 0.4881 0.4966 0.4800 0 0.4800 0.4881 0.4966 0.4800]

         TrBlkSizes: [9528 11448 11448 11448 11448 0 11448 11448 11448 11448]

    CodedTrBlkSizes: [19680 24000 23600 23200 24000 0 24000 23600 23200 24000]

          DCIFormat: 'Format2C'

        PDCCHFormat: 2

         PDCCHPower: 0

            CSIMode: 'PUCCH 1-1'

            PMIMode: 'Wideband'

              NSCID: 0

                  W: [0.7071 + 0.0000i 0.7071 + 0.0000i]

            NTxAnts: 2

R.51, 16QAM on two antennas. The DMRS REs appear in dark blue instead of dark green.

The DMRS take the same REs as in the other RMCs. They change colour because the plot shows them by their own magnitude, and W = 0.7071 gives each antenna a larger share than W = 0.5. The colour therefore says nothing new about the RE layout.

Two CSI-RS ports take 2 REs per PRB pair instead of 4. Subframes 2 and 7 therefore carry 118 REs per PRB pair and 23600 coded bits. The zero-power CSI-RS takes 4 REs in subframes 3 and 8, which gives 23200 bits, and the other subframes carry 24000. The transport blocks are those of R.45: 9528 bits in subframe 0 and 11448 elsewhere.

The image table used to label R.51 as 36.101 Table A.3.4.3.3-1, but that table defines the TDD version. The toolbox output shows DuplexMode 'FDD', and its values match the FDD Table A.3.3.3.1-1, so the label now names that table.

  • Two CSI-RS ports : 2 REs per PRB pair, 23600 coded bits in subframes 2 and 7.
  • W = [0.7071 0.7071] : one layer on two antennas.
  • FDD Table A.3.3.3.1-1 : not the TDD Table A.3.4.3.3-1.

Checking the RMCs against 36.101

Are these values still the ones in the current specification? The page cites 36.101 v14.4, and the table below compares the toolbox output with 36.101 v20.0.0 Tables A.3.3.3.1-1, A.3.3.3.2-1 and A.3.3.3.2-2.

RMC

Modulation

TBS

Coded bits

36.101 v20.0.0

R.43

QPSK

2984 / 3624

9840 / 12000 / 11600

match, Table A.3.3.3.2-1

R.44

QPSK

2984 / 3624

9840 / 12000 / 11600

match, Table A.3.3.3.2-2

R.45

16QAM

9528 / 11448

19680 / 24000 / 23200

match, Table A.3.3.3.2-2

R.45-1

16QAM

8760

18720 / 18096

match, Table A.3.3.3.2-2

R.48

QPSK

4968 / 6200

9840 / 12000 / 11600

match, Table A.3.3.3.2-1

R.50

64QAM

14688 / 18336 / 16416

29520 / 36000 / 34800

match, Table A.3.3.3.2-1

R.51

16QAM

9528 / 11448

19680 / 24000 / 23600 / 23200

match, Table A.3.3.3.1-1

The first value is subframe 0, and the next ones are the subframes without and with CSI-RS REs, in the order of the sections above. Every value matches. The only correction is the table number of R.51, which the image table gave as the TDD Table A.3.4.3.3-1.

  • All seven RMCs match 36.101 v20.0.0 : transport blocks and coded bits.
  • R.51 is in Table A.3.3.3.1-1 : the FDD table for two CSI-RS ports.

Disclaimer !

This page is only to show you the overall logics and visualization for various LTE physical layer channels. I haven't investigated much about verifying about the accuracy.

If you think the code is not so efficient, it is 100% my fault. I haven't made any effort for effiecient code. I just tried to create code as simple as possible for the readers. As you know, easy-to-read code is not always efficient for a specific chipset.

If you find any mistake in terms of accuracy, it is also very highly likely be my fault. Not the problem of Matlab tool box itself.

Any comment and corrections if you find any mistake will be welcome and appreciated.

Reference

[1] 3GPP TS 36.101 v20.0.0 - Tables A.3.3.3.1-1, A.3.3.3.2-1 and A.3.3.3.2-2, Fixed Reference Channels for CSI-RS

[2] 3GPP TS 36.211 v19.3.0 - clause 6.10.3, UE-specific reference signals, and clause 6.10.5, CSI reference signals