Hello everyone,
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,
it
is much closer. MIMO is widely deployed in both cellular networks and
WLANs, with multiple antennas it can increase the performance of
wireless
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
this
WLAN has two antennas and all of the Clients have only one antenna.
Apparently, such a system should support both uplink and downlink
transmission.
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.
The
only difference is that these symbols traverse different channels and
experience different degrees of channel attenuation. With the
CSI(Channel
State Information) which can be acquired by the preamble, the AP
leverages
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
clients
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
of
the channel attenuation vector H, the contribution of corresponding
Client
can be eliminated. Thus, the symbols transmitted by the two clients can
be
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
with
two antennas. MIMO node can utilize Beamforming techniques to pre-code
the
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
coefficient
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
exist.
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 system
MIMO is a great technology which utilizes multiple antennas at both
transmitter and receiver to improve communication performance. It is
more
and more prevalent now. But MIMO is not a standard application in GNU
Radio
yet. Creating an OOT module (gr-mimo) that implements some of the basic
encoding and decoding algorithms would be great for the research
beginners
and engineers.
Objectives
-
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
AP.
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).
Requirements
Decent understanding of OFDM and MIMO. Algorithms would be coded in both
C++ and Python.
Potential mentor(s)
PS: I work on this project for both study and research purpose, before
it I
have gone through many relative papers and tutorials on how to build a
MIMO
system in GNU Radio. So I feel that implementing a MIMO system in GNU
Radio
is feasible. Nevertheless, I have to treat it cautiously since it is
really
complicated to make it work. Now, I have already built an elementary
MIMO
node with two USRPs (figure of the AP is attached to the end of the
Email)
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
and
test the uplink transmission. Since there is no gr-mimo standard module
in
GNU Radio, I guess this project might be useful to GNU Radio beginners.
If
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
you.
Thanks,
Zhou YiZiRui