Hardware implementation of a MIMO decoder is a demanding task because of the computational complexity of searching the closest points in an unstructured lattice in a multi-dimensional domain. This model shows how to use Simulink® HDL Coder™ to check, generate, and verify HDL code for a fixed-point MIMO decoder model. The computational units are implemented using Simulink® blocks. The control unit is designed using MATLAB™ Function blocks.
Contents
IntroductionChannel Matrix GenerationPerformance Optimization TechniquesData Control TechniquesBit Error RateReference
Introduction
The decoding algorithm used in this demo applies the Schnorr-Euchner method as the search strategy in the lattice decoder. For details on this algorithm, see the paper listed in the Reference section below.
Channel Matrix Generation
The MIMO decoder implemented in this demo models a 4 transmit and 4 receive wireless system with BPSK modulation. The channel matrix G, whose elements Gij represents the amplitude distortion from the j-th transmit antenna to the i-th receive antenna, are real zero mean Gaussian variables with variance 1 per dimension. The channel matrix used in the demo is generated using the MATLAB® function randn() with a fixed seed initialized in the InitFcn Model callback function of the Model Properties.
Changing the seed number will change the channel matrix. However, the requirements of the fixed-point data length in the MIMOdecoder module might be affected. Therefore a different bit error rate will be generated.
The model will not work correctly if the random number seed reset function is removed. The channel matrix is required to remain constant when the decoder is decoding a received vector (i.e. the Decoder_Done signal must be low).Extra logic is necessary to make the channel matrix time-varying.
Performance Optimization Techniques
This demo also demonstrates design performance