Chip Implementation of a Signal Detector for a Multiple-Input Multiple-Output (MIMO) Wireless System
Users are continually demanding increased data rates to satisfy a variety of applications such as video streaming and mobile communications. This has necessitated a number of innovations in wireless communications in recent years. In particular, the use of multiple antennas at the wireless transmitter and receiver has received significant research interest as it is able to deliver vastly improved data rates compared to the traditional single-antenna systems.
In this project, our focus is on the implementation of a chip for the signal detection at the MIMO receiver. We model the MIMO transmission by generating thousands of random information bits and transmitting them in parallel over the multiple transmit antennas. The bits are modulated to symbols to enable radio frequency transmission and random noise is added for a range of signal to noise ratios. To get a realistic picture of the MIMO channel, several symbols need to be generated, which is a process that takes several hours even on a single computer with generous amounts of memory and processor speed.
At the receiver, we implement the signal detector using a hardware description language (Verilog), which processes the received distorted symbols sent by the transmitter. The detector is essentially a search algorithm, which explores a lattice that scales exponentially with the number of receive antennas. The inputs to the signal detector are represented using fixed point numbers and several simulations need to be carried out in order to determine a correct floating-to-fixed-point hardware translation. The hardware verification is a repetitive process as the fixed point implementation needs to be verified for every modification to the algorithm. The computational requirement of the testing stage lends itself to parallel processing, which significantly reduces the computation time.
Physical Systems and Engineering simulation: Wireless Communications
Algorithms and computational methods: Monte Carlo
Programming languages and libraries: Matlab