Matlab Toolbox - 4G/LTE
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.

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 | |
Downlink | SSS | lteSSS, lteSSSIndices | |
Downlink | Cell Specific RS | lteCellRS, lteCellRSIndices | |
Downlink | PCFICH | lteCFI, ltePCFICH, ltePCFICHIndices | |
Downlink | PHICH | ltePHICH, ltePHICHIndices, ltePHICHInfo | |
Downlink | DMRS | lteDMRSIndices | |
Downlink | PDCCH | lteDCI, lteDCIEncode, ltePDCCH, ltePDCCHIndices | |
Downlink | PBCH | lteMIB, lteBCH, ltePBCH, ltePBCHIndices | |
Downlink | PDSCH | lteDLSCH, ltePDSCH, ltePDSCHIndices | |
Uplink | PRACH | ltePRACH | |
Uplink | SRS | lteSRS, lteSRSIndices, lteSRSInfo | |
Uplink | PUCCH-DMRS | ltePUCCH1DRS, ltePUCCH2DRS and their Indices functions | |
Uplink | PUCCH | ltePUCCH1, ltePUCCH2, lteUCIEncode | |
Uplink | PUSCH-DMRS | ltePUSCHDRS, ltePUSCHDRSIndices | |
Uplink | PUSCH | lteULSCH, ltePUSCH, ltePUSCHIndices |
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