Notice: If you use the matlab codes, its at your own risk! We are not giving guarantee that this code is error free and can meet the requirements for a certain application. We are not going to take any kind of liability resulting from your use of this program.
We present a simulator the presents the state-of-the art massive MIMO detectors. The detector simulator is built on Professor Christoph Studer's simple simulator for MIMO detection. The most popular detectors for massive MIMO right now are approximate-inversion based detectors such as Neumann-approximation based (NSA) detector, Gauss-Seidel (GS) detectors or Conjugate-Gradient (CG) detector. These detectors provides low complexity and within a few iterations perform as good as exact inversion based MMSE detection when the ratio of the numbers between base station antennas and users are high, for example, in a 128x8 systems.
A high number of RF chains are not always feasible and when the numbers of BS antennas and users are comparable, the NSA, GS and CG cant provide the desired error-rate. The box detectors such as ADMM-based inifnity norm detector (ADMIN) or optimized co-ordinate descent (OCD) can provide satisfactory performance in those scenarios. The error-rate figure shows a 64x16 system for 64QAM modulation scheme.
The simulator presented here supports the following algorithms:
Approximate inversion based detection: NSA, GS, CG
BOX detection: ADMIN, OCD
Convention detection: matched filter, MMSE
If you are using the simulator to write any scientific paper, please cite the following:
S. Shahabuddin, I. Hautala, M. Juntti, and C. Studer, "ADMM-based Infinity Norm Detection for Massive MIMO: Algorithm and VLSI Architecture", IEEE Transactions on Very Large Scale Integration (VLSI) Systems, February 2021
The MATLAB code is presented here
Acknowledgement: Michael Wu.
Transmitter precoding is an alternative of receiver optimization to combat multiple access interference in a synchronous multiuser channel.
The transmitter precoding can be characterized by a linear transformation of the transmitted signals that minimizes the mean squared errors at all the receivers.
A simple Matlab simulator for multiuser MIMO scheduling and precoding is presented here. The simulator supports scheduling methods like norm-based scheduling, proportional fair scheduling etc. The precoding methods include zero-forcing (ZF), minimum mean square error (MMSE) and zero-forcing dirty paper coding (ZF-DPC).
If you are using these codes to write any scientific paper, please cite the following:
S. Shahabuddin, O. Silven, and M. Juntti, “ASIP design for Multiuser MIMO Broadcast Precoding", in European Conference on Network and Communications, Oulu, Finland, June, 2017.
MU-MIMO Precoder matlab code
Acknowledgement: Ganesh Venkatraman.
Lattice reduction (LR) is a preprocessing technique that can be used with the linear detection to significantly improve the BER performance and reduce the gap between the traditional linear detectors and optimal ML. LR transforms the MIMO channel matrix to a near orthogonal matrix and thus facilitates to achieve a better BER performance. The most used LR algorithm is called the Lenstra-Lenstra-Lov´asz (LLL) algorithm according to the name of the inventors. The LLL algorithm poses many challenges due to the undeterministic execution time and higher computational complexity. We propose a modified LLL (MLLL) algorithm that is based on the original LLL algorithm on complex domain. The SNR vs BER performance of the MLLL can be seen here:
A matlab simulator is provided here. The simulator is based on Professor Christoph Studer's simple simulator for MIMO detection and can be found here:
I have added the orginal LLL and modified LLL lattice reduction aided linear detection algorithms in that simulator. You just have to run the simulator once to get the performance of the lattice reduction aided detection.
If you are using these codes to write any scientific paper, please cite the following:
S. Shahabuddin, J. Janhunen, A. Ghazi, Z. Khan, and M. Juntti, “A Customized Lattice Reduction Multiprocessor for MIMO Detection", in IEEE International Symposium on Circuits and Systems, Lisbon, Portugal, May 2015.
The MATLAB code is presented here:
Acknowledgement: Xiaojia Lu, Christoph Studer.
Turbo decoder is used in many communication standards, for example 3G/4G for error correction. In this section we are providing some matlab codes for turbo decoder with radix-4 BCJR/MAP algorithm. Turbo decoder consists of two soft-input soft-output (SISO) decoders that exchanges the information and correct the incoming log-likelihood ratios (LLR) more reliably. Simply put, when the first SISO decoder corrects the error the 2nd SISO decoder gets a better or more refined LLRs to correct. Naturally, the output of the 2nd SISO decoder is better than the first one. In this way, the two SISO decoders exchange the LLRs to reach the best output finally. There are interleavers in between the SISO decoders to permute the input values.
The algorithm to for SISO decoding is called BCJR according to the inventors or MAP algorithm. Generally, radix-2 BCJR algorithm is used for turbo decoding. But a high throughput version of the radix-2 SISO decoder is the radix-4 SISO. We are here providing a matlab code of the radix-4 turbo decoder. If you want to take a look and understand the algorithms more please take a look at the following papers. And if you are using these codes to write any scientific paper, you please one of the following:
1. S. Shahabuddin, J. Janhunen, M. Juntti, A. Ghazi, and O. Silven, "Design of a transport triggered vector processor for turbo Decoding", in Springer Journal of Analog Integrated Circuits and Signal Processing, March 2014.
The MATLAB code is presented here:
turbo decoder matlab code
Acknowledgement: Jarkko Huusko, Mikko Vehkapera.