139 | | - '''onenode.py:''' In this script we demonstrate the control of the SDR data interface. The script creates one SDR object that controls the ZCU111 and Siver IMA. |
140 | | |
141 | | |
142 | | In this demo we control a single SDR. The script creates an SDR object that controls the Xilinx RFSoC FPGA eval board and Sivers IMA. A user can provide arguments to the script, such as the carrier frequency, the COSMOS node id and the transceiver mode. The script by default starts a local connection at srv1-in1 with a carrier frequency at 60.48 GHz in receive mode. |
143 | | {{{#!shell-session |
144 | | root@srv1-in1:~/mmwsdr/host/demos/basic$ python onenode.py --freq 60.48e9 --node srv1-in1 --mode rx |
145 | | }}} |
| 139 | - '''onenode.py:''' In this demo we control a single SDR node. We create an SDR object and an XY-Table object using the `mmwsdr` library. The SDR object configures and controls a Xilinx RFSoC ZCU111 eval board and a Sivers IMA transceiver board. A user can provide arguments to the script, such as the carrier frequency, the COSMOS node id and the transceiver mode. The script by default starts a local connection with a carrier frequency at 60.48 GHz in receive mode. |
| 140 | 1. Start the transmitter in `srv1-in1`: |
| 141 | {{{#!shell-session |
| 142 | root@srv1-in1:~/mmwsdr/host/demos/basic$ python onenode.py --freq 60.48e9 --node srv1-in1 --mode tx |
| 143 | }}} |
| 144 | 2. Start the receive in `srv1-in2`: |
| 145 | {{{#!shell-session |
| 146 | root@srv1-in2:~/mmwsdr/host/demos/basic$ python onenode.py --freq 60.48e9 --node srv1-in2 --mode rx |
| 147 | }}} |
| 148 | 3. Observe the received signal in frequency-domain: |
| 149 | |
159 | | - '''twonode.py:''' |
| 163 | - '''twonode.py:''' In this demo we control two single SDR node. We create and SDR object and an XY-Table object for each node using the `mmwsdr` library. The SDR object configures and controls a Xilinx RFSoC ZCU111 eval board and a Sivers IMA transceiver board. A user can provide arguments to the script, such as the carrier frequency, the COSMOS node id and the transceiver mode. The script by default starts a local and a remote connection with the SDR. |
| 164 | 1. Start the remote Eder server on the : |
| 165 | {{{#!shell-session |
| 166 | root@srv1-in1:~/mmwsdr/host/mmwsdr/array$ python ederarray.py --unit SN0240 |
| 167 | }}} |
| 168 | 2. Start the experiment on the local server: |
| 169 | {{{#!shell-session |
| 170 | root@srv1-in2:~/mmwsdr/host/demos/basic$ python twonode.py --freq 60.48e9 --mode tx |
| 171 | }}} |
| 172 | |
| 173 | === Channel Sounder === |
| 174 | In this demo, we show a frequency-domain channel sounder at 60 GHz. We generate N_FFT symbols in |
| 175 | frequency-domain. We generate a wide-band sequence filling [sc_min, sc_max] sub-carries with random 4-QAM symbols. We |
| 176 | use IFFT to get the time-domain TX sequence. We transmit the data from SDR1 with cyclic repeat. We receive 100 frames |
| 177 | of N_FFT data from SDR2. The user can select to save or process the data. When we process the data |
| 178 | |
| 179 | In this section we demonstrated a frequency-domain channel sounder. We generate a tx sequence using `mmwave.utils.waveform.wideband` function. |
162 | | === Channel Sounder === |
163 | | In this section we demonstrated a frequency-domain channel sounder. We generate a tx sequence using `mmwave.utils.waveform.wideband` function. |
| 182 | In this demo, we use the calibration techniques by Sivers. The performance of the calibration can be further improved with the IQ calibration techniques described in the following papers, |
| 183 | |
| 184 | 1. A. Dhananjay, K. Zheng, M. Mezzavilla, L. Iotti, D. Shasha, and S. Rangan, "Pi-Radio v1: Calibration techniques to enable fully-digital beamforming at 60 GHz," Computer Networks, Volume 196, 2021, 108220, ISSN 1389-1286, https://doi.org/10.1016/j.comnet.2021.108220. |
| 185 | 2. A. Dhananjay, K. Zheng, J. Haarla, L. Iotti, M. Mezzavilla, D. Shasha, and S. Rangan, "Calibrating a 4-channel Fully-Digital 60 GHz SDR," In Proc. of the 14th International Workshop on Wireless Network Testbeds, Experimental evaluation & Characterization (WiNTECH'20). Association for Computing Machinery, New York, NY, USA, 40–47. https://doi.org/10.1145/3411276.3412195 |
| 186 | |
| 187 | Originally this techniques target a 4-channel fully-digital array. However, the algorithms are versatile and can target the phased arrays as well. |
| 188 | |
| 189 | ==== Calibrate RX IQ imbalance ==== |
| 190 | {{{#!shell-session |
| 191 | root@srv1-in1:~/mmwsdr/host/mmwsdr/array$ python ederarray.py --unit SN0240 |
| 192 | }}} |
| 193 | |
| 194 | ==== Calibrate TX IQ imbalance ==== |
| 195 | {{{#!shell-session |
| 196 | root@srv1-in1:~/mmwsdr/host/mmwsdr/array$ python ederarray.py --unit SN0240 |
| 197 | }}} |
| 198 | |