GSM Baseband Implementation

Fig 1. A Conceptual block diagram for GSM transmitter/Receiver. Only the above six blocks will be implemented.

As a input, voice interfaces will not be implemented. Instead a random bits are generated to be as input as shown in Fig 1.2

Fig 1.2 . Input is replaced by random bit generator here.

TRANSMITTER:

The overall picture of the transmitter seems to be as below.

Fig 1.3 Transmitter block diagram

To provide an input data stream to channel encode/interleaver, a sequence of random data bits are generated. This sequence is – after processing- received by the MUX which splits the incoming sequence to form the GSM normal burst. As this burst type requires that a training sequence is included , so that is also supplied (as shown in pic above).

After generating the normal GSM burst data sequence , the MUX returns this to GMSK modulator. GMSK block performs the differential encoding of the incoming burst to form the NRZ (non return to zero) sequence.

This modified sequence is then subject to actual GMSK modulation , after which the resulting signal is represented as complex baseband signal (in form of I and Q signal).

RECEIVER:

The overall structure of receiver is as follows:

Fig 1.4 Receiver block diagram

The demodulator accepts the GSM burst r using a complex baseband representation. based on the data sequence information concerning the over sampling sequence OSR, the training sequence TRAINING , and the desired length of the receiving filter Lh , the demodulator determines the most probable bit sequence.

This sequence is used as input to the DeMUX , Where the bits are split in order to retrieve the actual data bits., remaining control bit and training sequence is discharged here.

As a final operation channel decoding and de-interleaving is performed. Parameter values used in receiver is used as equal to values used in transmitter.

Matlab implementation:

The following .m files are propsed to simulate the above mentioned block diagram.

Transmitter section:

  1. data_gen.m for DataGenerator in Tx
  2. channel_enc.m for channelEncoder
  3. interleav.m for Interleaver.
  4. burst_g.m for MUX
  5. diff_enc.m for differential encoding (GMSK Mod)
  6. gmsk_mod.m (GMSK Mod)
  7. ph_g.m (GMSK Mod)

Fig 1.5 A Typical GSM Burst Structure

Receiver Section:

  1. mf.m (for matched filter in case of demodulator).
  2. viterbi_init.m
  3. viterbi_detector.m
  4. demux.m for demultiplexer
  5. channel_dec.m for channel decoder
  6. deinterleaver.m for DeInterleaving

file number 2 and 3 are for viterbi equalizer (minimum least square error detection).

In brief, on a broad level the functionality looks like as below.

  1. data_gen.m --- generates random data for transmission
  2. channel_enc.m – performs parity and convolutional encoding of data bits
  3. interleave.m -- interleave the encoded data bits
  4. gsm_mod.m - - modulates the burst and does multiplexing as well.
  5. mf.m – performs chanel estimation, synchronization, matched filtering and down

sampling

  1. viterbi_init.m -- set up data structure for viterbi detector to use
  2. viterbi_detector.m – viterbi algo based on MLSE
  3. demux.m -- does simple demultiplexing
  4. deinterleave.m – takes care of deinterleaving
  5. channel_dec.m – performs cahnnel decoding.

Other detailed desctiption about each block and its implementation will be given later.

These things are still in design phase and not yet finalized.

Your comments/suggestion/critics are most welcome in order to make the simulation more refined.

All of the above implementation will be done on 6.x or higher version of Matlab.

Currently I am identifying the built it APIs and other blocks which an be used to simulate it.