Members: Thomas TrieuGR, Amir Vince ZamanGR
Faculty advisors: Minsung Kim, Byungjun Kim
This group is split into two projects: Blind MIMO and Vector Perturbation Precoding.
This project is focused on implementing the nonlinear vector perturbation precoder (VPP) for multi-user MIMO (MU-MIMO) downlink on software-defined radio (SDR). The goal is move from simulations to evaluating our quantum-inspired quadratic unconstrained integer optimization (QUIO) solver on real-time over-the-air (OTA) experiments.
https://docs.google.com/presentation/d/1M5gA528Zvf9dHgyOum5pW-DnRFtxDAAWcUurcCG373U/edit?usp=sharing
This week was an introduction to the team and projects, highlighting our next steps. The goal for next week is to read more literature, learn more about the background of both projects, and complete ORBIT tutorials to familiarize with the testbed environment.
https://docs.google.com/presentation/d/1O3_yecXKA-xiwFyHrrnL2CbsvxBil1DFmTL_D_S3CJE/edit?usp=sharing
VPP: This week, I tested transmitting and receiving through the USRP X310 tutorials on sandbox 2 (wired) and on one of the grid's MIMO racks (OTA). I also conducted a literature review on a highly relevant paper about quantum annealing for MIMO downlink VPP to learn more about the end-to-end vector perturbation process.
Blind MIMO:
https://docs.google.com/presentation/d/1G80z7l_b3AJEdAlv3OMt0ccW7tah9Hvqw4cf1U4DYeU/edit?usp=sharing
VPP: This week I learned more about how VPP works, and I tried to get my advisor's UHD transmitter and GNU Radio receiver code working. I ended up running into FPGA and UHD version errors. Next week I'll make a flowgraph or block diagram to help with visualizing the VPP pipeline. The goal of the next few weeks is to get my advisor's code working and eventually convert the GNU Radio receiver to only UHD C++ API code.
Blind MIMO:
VPP: This week I added an Ansible workflow developed by one of my labmates, allowing for simpler and more consistent setup when starting my testbed reservation sessions. I was also able to get OTA packet detection working on the MIMO rack nodes for 2x2 MIMO. Next week I'll try to get synchronization working, convert channel estimation from GNU Radio to UHD, and make verifications in MATLAB.
https://docs.google.com/presentation/d/1ljSlzbqKYzA1O04J3Bv9ez23T1b2RrrB8c0blj8b1f8/edit?usp=sharing
Blind MIMO:
https://docs.google.com/presentation/d/17Cws-pFwCfpOVvxO-31_M1Bknca4LC_TpMsr4Me6wwg/edit?usp=sharing
VPP: This week I got 2x2 MIMO packet detection and synchronization working. Next week I'll try to completely replicate my advisor's GNU Radio receiver using only UHD C++ API (packet detection, synchronization, channel estimation, demodulation, and decoding). I also want to experiment with 4x4 MIMO and transmitting using multiple USRPs.
https://docs.google.com/presentation/d/1jTq0N0QBze6oRDhDqutH2uHsdQaHF8KTiyqzW4TiWJc/edit?usp=sharing
Blind MIMO:
https://docs.google.com/presentation/d/1GzFkdRHF2CfcsqPuTHgY5bLt01B12Bo8MmeqvBUh-3k/edit?usp=sharing
VPP: This week I got the UHD uplink receiver fully working, matching my advisor's GNU Radio receiver. Next week I'll try to implement zero-forcing precoding to prepare for downlink transmission. I'm pivoting from doing a turnaround setup (UL sounding, DL precoding) to doing a shared storage setup for small-scale experiments (DL sounding, DL precoding). This allows for a much simpler implementation where I don't need to account for the hardware turnaround time latency of the USRP X310s, and I can use the same TX/RX and RX2 ports.
https://docs.google.com/presentation/d/1wH4_LXBe4qCWT091zT-vjmqINwvhnx3fkq-HGlY5hzQ/edit?usp=sharing
Blind MIMO:
https://docs.google.com/presentation/d/15N2nEqnRGjHBOnRqiTOYQBV1_hG9oW0UUwjzOcEWifk/edit?usp=sharing
VPP: This week I realized that my UHD receiver had an equalization mismatch with my advisor's code: The GNU Radio receiver does maximum-likelihood (theoretically optimal) detection, but my UHD receiver only did linear ZF detection causing my bit-error-rates (BER) to be much higher than expected. I'm not able to get experimental results because the downlink receiver (demodulation and decoding after receiving precoded data) is not implemented yet. Next week I will have the complete downlink receiver and be able to measure the zero-forcing precoder's performance. I also plan on estimating channel coherence time through delaying the downlink transmission until BER rises significantly.
Blind MIMO:
VPP: This week I was able to get the zero-forcing precoder mostly working, and I started implementing brute-force (maximum likelihood or sphere encoding) vector perturbation and the modulo operation at the downlink receiver. There are still non-zero symbol-error-rates (SER), so I am rigorously testing to see what is causing the symbol-errors; either unavoidable noise/channel effects or systematic code/logic errors. Previously, I transmitted from one MIMO rack to another. To simplify diagnosing bugs with my signal processing code, I switched to transmitting and receiving all on one MIMO rack to minimize the effect of bad channels. Next week, I hope to get to the bottom of this before continuing with my implementation of VPP and including the QUIO solver.
https://docs.google.com/presentation/d/1VEvd4-JEQacbBAUal63YTpM9XJtYKzptFaSVBXKazQg/edit?usp=sharing
Blind MIMO:
https://docs.google.com/presentation/d/1WCG0kgka2e3uzL4v-shrgNyMDrBaN6ifMX9x_dKAB0s/edit?usp=sharing