Changes between Version 19 and Version 20 of Tutorials/Wireless/mmwaveRFSoC


Ignore:
Timestamp:
Feb 1, 2022, 11:05:20 PM (2 years ago)
Author:
skrimpon
Comment:

Legend:

Unmodified
Added
Removed
Modified
  • Tutorials/Wireless/mmwaveRFSoC

    v19 v20  
    137137root@srv1-in1:~/mmwsdr/host/demos/basic$ python video.py --node srv1-in1
    138138}}}
    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
     142root@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
     146root@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
    146150- '''ederarray.py:''' This script contains SDR object to control the Sivers array.
    147151
     
    157161}}}
    158162
    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
     166root@srv1-in1:~/mmwsdr/host/mmwsdr/array$ python ederarray.py --unit SN0240
     167}}}
     168 2. Start the experiment on the local server:
     169{{{#!shell-session
     170root@srv1-in2:~/mmwsdr/host/demos/basic$ python twonode.py --freq 60.48e9 --mode tx
     171}}}
     172
     173=== Channel Sounder ===
     174In this demo, we show a frequency-domain channel sounder at 60 GHz. We generate N_FFT symbols in
     175frequency-domain. We generate a wide-band sequence filling [sc_min, sc_max] sub-carries with random 4-QAM symbols. We
     176use IFFT to get the time-domain TX sequence. We transmit the data from SDR1 with cyclic repeat. We receive 100 frames
     177of N_FFT data from SDR2. The user can select to save or process the data. When we process the data
     178
     179In this section we demonstrated a frequency-domain channel sounder. We generate a tx sequence using `mmwave.utils.waveform.wideband` function.
    160180
    161181=== Calibration ===
    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.
     182In 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
     1841. 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.
     1852. 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
     187Originally 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
     191root@srv1-in1:~/mmwsdr/host/mmwsdr/array$ python ederarray.py --unit SN0240
     192}}}
     193
     194==== Calibrate TX IQ imbalance ====
     195{{{#!shell-session
     196root@srv1-in1:~/mmwsdr/host/mmwsdr/array$ python ederarray.py --unit SN0240
     197}}}
     198
    164199
    165200=== Array Pattern ===
    166201{{{#!shell-session
    167 root@srv1-in1:~/mmwsdr/host/demos/$ python array_pattern.py --node srv1-in1
    168 }}}
    169 === Beam Tracking Measurements ===
     202root@srv1-in1:~/mmwsdr/host/mmwsdr/array$ python ederarray.py --unit SN0240
     203}}}
     204{{{#!shell-session
     205root@srv1-in2:~/mmwsdr/host/demos/basic$ python twonode.py --freq 60.48e9 --mode tx
     206}}}
     207
     208=== Beam Tracking ===