Matlab Toolbox - 4G/LTE

 

 

 

Introduction

 

This page opens the series of Matlab LTE Toolbox examples on this site. It explains why a verified commercial tool is a good way to learn the LTE physical layer. It then suggests an order for working through the channels, and maps each channel to its toolbox functions and example page.

As you know and might have realized, In engineering you would never understand anything before you try it on your own.

As I am gaining longer and longer carreer in engineering, this is coming to me more and more clearly.

Let's say you are an engineer working in LTE, especially in physical layer. How would you be able to try things on your own ?

We can think of several ways as listed below :

    i) use In-house software (simulation software)

    ii) use In-house hardware

    iii) use commerical software (simulation software)

    iv) use commerical hardware

If something is in very early stage of the technical development or you are in such a company that leads the industry far ahead of others, probably option i) or ii) would be the only way. But in this case, it is highly likely that almost everybody (even developers) are on early stage of learning curve. If there is some problems, not everything would be clear whether the issue comes from the wrong implementation or from user mistake.

As a technology gets more established (at least as international standard gets published, you would start seeing option iii) or iv) avaiable in the market. I think one of the biggest benefit for option iii) or iv) is that 'somebody else has already verified or validated the product and you can give relatively strong trust of the outcome of the solution'. Especially if you are at a stage of learning a new technology using a tool (software or hardware), it is very important to get the something that has proven to work. Otherwise,  the result from the tool would easily mislead you to a wrong direction.

Matlab LTE toolbox can be a kind of option iii) that has long been in the market now implying that it has been pretty well verified.

Followings are the topics to be covered in this page.

Where to start and how to move forward ?

To be honest, I don't think there is only one best way or best steps that everybody would agree. In technical/logical aspect, I would recommend you to start with implementing each physical signal/channels in following order. But in reality, I saw many different approaches. Normally in a development team, you may see different teams for Downlink and Uplink and would see different engineers dedicated for a specific channels. Of course, there would be possibilities that one engineer is working on multiple different channels. Also, in reality I saw many cases where they start with PDSCH and PUSCH first since these are the most critical component. But if you are new to LTE physical layer at the stage of research or study, I would recommend you to follow this order.

LTE physical channels and signals to implement on the transmitter side, grouped into downlink and uplink

The transmitter or encoder side, split into downlink channels in orange and uplink channels in green. The lower green box is labelled Downlink in the drawing, but the channels under it are all uplink channels.

  • Downlink, top to bottom : PSS, SSS, Cell Specific RS, PCFICH, PHICH, DMRS, PDCCH, PBCH and PDSCH.
  • Uplink, top to bottom : PRACH, SRS, PUCCH-DMRS, PUCCH, PUSCH-DMRS and PUSCH.
  • Signals before channels : the synchronization and reference signals come first in both lists.

The order roughly follows the number of processing steps. PSS, SSS and the reference signals are sequences that go straight onto the resource grid. PCFICH, PHICH and PDCCH carry control information, each with its own coding, scrambling and modulation. PBCH and PDSCH carry a transport channel, BCH or DL-SCH, so they add CRC attachment, channel coding and rate matching in front of the physical channel. The uplink list follows the same rule, and each DMRS sits just before the channel it serves.

Next step is to understand/implement Reciever/Decoder side. Types of Channels is exactly same as shown above. The only difference is the direction. In this case, it is assumed that you have received radio wave signal for each of those channels. And then you have to extract the high layer data (high layer bit stream) from the received physical signal (I/Q) data.

Matlab LTE Toolbox provide libraries (functions) for both Transmission path and reciever path.

On the receiver side, the first job is to find the cell before any channel can be decoded. The toolbox handles this with lteCellSearch for the cell identity, lteDLFrameOffset for the frame timing, and lteFrequencyOffset for the carrier offset. Only then do the decoders, such as ltePDSCHDecode and lteDLSCHDecode, have a grid to work on. The Detect PCI, Detect Frame Offset, Detect Frequency Offset and Detect PDSCH pages cover these steps in that order.

  • Transmitter first : sequences, then control channels, then coded channels.
  • Receiver starts with synchronization : cell identity, frame offset and frequency offset come before any decoding.
  • One toolbox, both paths : the same toolbox provides the transmitter functions and the receiver functions.

Which toolbox function goes with which channel ?

The diagram above names the channels, but the toolbox names functions. The table below links the two, using the functions that the example pages on this site actually call. Most channels need two functions: one that generates the symbols, and one that returns their positions in the resource grid.

Direction

Channel

Toolbox functions

Example page

Downlink

PSS

ltePSS, ltePSSIndices

PSS

Downlink

SSS

lteSSS, lteSSSIndices

SSS

Downlink

Cell Specific RS

lteCellRS, lteCellRSIndices

Cell RS

Downlink

PCFICH

lteCFI, ltePCFICH, ltePCFICHIndices

PCFICH

Downlink

PHICH

ltePHICH, ltePHICHIndices, ltePHICHInfo

PHICH

Downlink

DMRS

lteDMRSIndices

RMC DL, ports 7 to 14

Downlink

PDCCH

lteDCI, lteDCIEncode, ltePDCCH, ltePDCCHIndices

PDCCH

Downlink

PBCH

lteMIB, lteBCH, ltePBCH, ltePBCHIndices

PBCH

Downlink

PDSCH

lteDLSCH, ltePDSCH, ltePDSCHIndices

PDSCH

Uplink

PRACH

ltePRACH

PRACH

Uplink

SRS

lteSRS, lteSRSIndices, lteSRSInfo

SRS

Uplink

PUCCH-DMRS

ltePUCCH1DRS, ltePUCCH2DRS and their Indices functions

PUCCH Format 1, Format 2

Uplink

PUCCH

ltePUCCH1, ltePUCCH2, lteUCIEncode

PUCCH Format 1, Format 2

Uplink

PUSCH-DMRS

ltePUSCHDRS, ltePUSCHDRSIndices

PUSCH DMRS

Uplink

PUSCH

lteULSCH, ltePUSCH, ltePUSCHIndices

PUSCH

The Indices functions matter as much as the generators. A generator such as ltePCFICH returns only the modulated symbols, and ltePCFICHIndices tells where they go in the grid that lteDLResourceGrid or lteULResourceGrid creates. The coded channels add a transport channel function in front: lteBCH for PBCH, lteDLSCH for PDSCH and lteULSCH for PUSCH. The downlink DMRS appears on this site only through lteDMRSIndices, inside the reference measurement channel examples.

  • Generator plus Indices : the symbols and their positions in the grid.
  • Transport channel function first : lteBCH, lteDLSCH and lteULSCH do the channel coding.
  • Grid functions : lteDLResourceGrid and lteULResourceGrid create the empty grid to fill.

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.211 v19.3.0 - Physical channels and modulation

[2] LTE Toolbox documentation, MathWorks