I’m a graduate student from China. I major in Computer Science and my
research focus on wireless networks. Today, I’m glad to share some of my
ideas on MIMO with you. (maybe a little pleonastic)
Definitely, MIMO is not a new terminology since it has been studied for
many years. But it was not until 2009 that MIMO really come to us. Now,
is much closer. MIMO is widely deployed in both cellular networks and
WLANs, with multiple antennas it can increase the performance of
systems significantly. The good news is, with the help of GNU Radio and
USRPs, we can also enjoy the benefits brought by MIMO. Now, I’m on a
project to build a simple MIMO system.
Basically, this system works a bit like a micro MIMO WLAN. The AP in
WLAN has two antennas and all of the Clients have only one antenna.
Apparently, such a system should support both uplink and downlink
Uplink: Clients can transmit frames to the AP. With two antennas, the AP
will receive two copies of the same symbols transmitted by the Client.
only difference is that these symbols traverse different channels and
experience different degrees of channel attenuation. With the
State Information) which can be acquired by the preamble, the AP
some decoding techniques to combine the signals received by the two
antennas and decode the corresponding symbols. When there is only one
Client transmit to the AP, decoding can be done by MRC(Maximal-ratio
combining) algorithm. Multiply the symbols received by the antennas with
the conjugate complex of channel attenuation value h respectively, the
total SNR in this transmission can be increased. If there are two
transmit to the AP simultaneously, decoding can be done by ZF or
ZF-SIC(zero-forcing Successive Interference Cancellation) algorithm.
Multiply the symbols received by the antennas with the orthogonal vector
the channel attenuation vector H, the contribution of corresponding
can be eliminated. Thus, the symbols transmitted by the two clients can
separated and decoded. (ZF-SIC is difficult to implement due to the
synchronization issues between different Clients).
Downlink: AP can also transmit to the Clients. The biggest advantage is
that the AP can transmit to up to two different Clients simultaneously
two antennas. MIMO node can utilize Beamforming techniques to pre-code
symbols transmitted by the two antennas. If the AP transmit to only one
Client, it just need to adjust the signal transmit on the two antennas
according to the channel attenuation h. Thus the total power received by
the Client is increased. The AP can also transmit to two Clients
concurrently, as long as the two Client’s channel attenuation
is linearly independent. Through transmitting linearly combination of
symbols to different receivers on separate antennas simultaneously, the
Clients can decode the symbols for them as if other signals do not
the total capacity is thus increased.
So, here is my basic proposal (which might be added to the “Signal
Processing” section of GR GSoC website?)
MIMO is a great technology which utilizes multiple antennas at both
transmitter and receiver to improve communication performance. It is
and more prevalent now. But MIMO is not a standard application in GNU
yet. Creating an OOT module (gr-mimo) that implements some of the basic
encoding and decoding algorithms would be great for the research
Build a MIMO system with one AP and several Clients, the AP has two
antennas and all of the Clients has one antenna only.
On the uplink, implement the MRC decoding algorithm at the AP. The
Clients transmit to the AP randomly based on standard OFDM PHY.
On the downlink, implement the Beamforming encoding algorithm at the
Upon receiving the frame from the Clients, the AP encodes the frames to
two(one) of the clients and transmits the frames to them(it)
simultaneously. Also based on OFDM PHY.
Notes: the channel state information (CSI) used in encoding and decoding
algorithms can be acquired by OFDM preambles (Sync words).
Decent understanding of OFDM and MIMO. Algorithms would be coded in both
C++ and Python.
PS: I work on this project for both study and research purpose, before
have gone through many relative papers and tutorials on how to build a
system in GNU Radio. So I feel that implementing a MIMO system in GNU
is feasible. Nevertheless, I have to treat it cautiously since it is
complicated to make it work. Now, I have already built an elementary
node with two USRPs (figure of the AP is attached to the end of the
and I’m working on a new module (gr-mimo) based on tx_ofdm.grc and
rx_ofdm.grc to implement uplink transmission. The next step is to debug
test the uplink transmission. Since there is no gr-mimo standard module
GNU Radio, I guess this project might be useful to GNU Radio beginners.
it has the honor of being involved in Google Summer of Code(GSoC) 2014,
that would be fantastic. Anyway, I am eager to get some insights from