Hello and welcome to the calibration demo developed by Nutaq with available off-the-shelf Nutaq product. In this demo, we will calibrate the phase and gain of multiple receivers.
The hardware used to implement the calibration design is the Nutaq TitanMIMO-6 Massive MIMO testbed. Stacked on top of each other in this video, each TitanMimo-6 forms an 8 x 8 system, built using Nutaq’s second generation Radio640 FMC modules. For this demo, we use an external clocking device, which provides a common reference clock to each of the 4 Radio640 FMC double-stack modules. For calibration at the receiver side, we will be using a single transmit antenna and multiple receive antennas. The hardware setup consists of the 16 receive antennas shown here and a single transmit antenna, placed at the far side.
This figure summarizes the calibration design. In order to calibrate the phase and gain of the 16 receiver elements, we use MATLAB to save a known reference signal on the onboard DDR3 SODIMM RAM. Then, using a single transmit antenna, shown as the black antenna element here, the reference signal is transmitted over the air. The 8 receive antennas of each TitanMIMO-6 receive this reference signal. Before sending the received data to Matlab for further processing, the received signal at each receiver element undergoes a complex multiplication operation with the phase and gain offset correction factors, which are saved in memory registers onboard the system. This multiplication is done inside the FPGA. By default, the correction factors all have a value of 1, and these are updated once the reference signal is received for the first time and the offset correction factors have been calculated in MATLAB.
Here we show the Xilinx Platform Studio project used to generate the bitstream for the Virtex 6 FPGA, which is onboard the TitanMimo-6. The design was developed using Nutaq’s BSDK, which provides customized IP cores to access various peripherals on-board the TitanMiMo-6, including the Radio640 modules, the PCIE and Ethernet interfaces, the Mestor LVDS lanes and the DDR3 SODIMM memory, to name a few. Focusing on the parts that perform calibration-related operations, the rx_calibrator_0 IP core, shown here, creates an FPGA design that takes its input from the Radio640 ADCs, performs the complex multiplication, and then passes the data to the real-time data-exchange IP core, from where it is sent to MATLAB running on the host machine. Within MATLAB, the received data is correlated with the original reference signal and the difference between correlation peaks is used to estimate the phase offsets.
Here we show the MATLAB mcode scripts that perform the functions required for calibration, which is done in two steps. During the first step, after performing Radio640 initialization, Digital Calibration, and Multi-chip synchronization, we first select the antenna element that is used to transmit the reference signal over the air. Then, we send the calibration data file, which contains the reference signal, to the on-board DDR3 RAM. Following this, the reference signal is transmitted over the air. The next two commands enable the streaming of the received data from the FPGA to the host machine, where it is saved in a bin file. In the second step of calibration, the data from the bin files is loaded into MATLAB, where it is correlated with the original reference signal. Then, the difference between correlation peaks and the ratio of the energies of the received and original reference signals are used to calculate the phase and gain offset correction factors. Finally, after displaying the results, the correlation factors are sent to the memory registers onboard the FPGAs.
We now run the demo on the hardware. To start, we will execute Step 1 of Calibration, where the reference signal is transmitted over the air and received by the 16 receive antennas.
At this stage, we have acquired the reference signal for the first time. We now move to Step 2 of calibration.
As we can see from this figure, the received signals are all out of phase and there is also a large variation in their gains as compared to the reference signal, which make the received signals unusable in array processing. The bold, black plot here depicts the original reference signal. At end of Step 2, the phase and gain offset correction factors have been calculated and loaded into the memory registers onboard the TitanMIMO-6. Therefore, if we now retransmit the reference signal, the signals received by the 16 receiver elements should all be aligned in phase and gain. Step 3 and Step 4 perform this check by retransmitting the reference signal.
As we can see from this figure, the received signals are all aligned in phase and gain. The results can still be improved further by increasing the number of acquisitions.