Changes between Initial Version and Version 1 of Tutorials/Wireless/mmwaveRFSoC


Ignore:
Timestamp:
May 20, 2020, 5:40:28 AM (4 years ago)
Author:
skrimpon
Comment:

Legend:

Unmodified
Added
Removed
Modified
  • Tutorials/Wireless/mmwaveRFSoC

    v1 v1  
     1[[Include(WikiToC)]]
     2
     3== Using Sivers mmWave equipment on COSMOS SandBox1 ==
     4
     5=== Description ===
     6A pair of Sivers EVK06002s, evaluation kits for Sivers IMA TRX BF/01, are deployed on COSMOS SandBox1. TRX BF/01 is a 16+16 IEEE802.11ad Beamforming Transceiver with a complete Radio front-end with 57-66 GHz mmWave frequency range. This tutorial demonstrates how  to transmit and receive a signal in the 60GHz mmWave spectrum using these Sivers front-ends.
     7
     8Current mmWave setup in COSMOS SB1 looks as shown in the figure below.
     9
     10|| [[Image(MISO_tutorial.jpg, 900px)]] ||
     11
     12In the benchtop 60GHz setup of SandBox1, either USRP X310 or RFSoC ZCU111 can be used for baseband processing. RF Switch boxes as shown in the figure are used to select between X310 and RFSoC. RF switch commands are explained at wiki:/Resources/Services/RFSwitch. To select X310s as baseband processing units, all the switches in the RF switch boxes are configured to port 1.
     13
     14This experiment uses the Xilinx ZynqMP Ultrascale+ RFSoC ZCU111 board for the baseband processing. Sivers control software on srv3, srv4 talk to the mmWave front-ends over USB links. Host GNURadio applications on srv3, srv4, send/receive data samples to/from the RFSoC over 1G Ethernet link.
     15 
     16=== Prerequisites ===
     17In order to access the test bed, create a reservation and have it approved by the reservation service. Access to the resources is granted after the reservation is confirmed. Please follow the process shown on the COSMOS [wiki:GettingStarted getting started] page to get started.
     18
     19=== Resources required ===
     202 servers srv3-lg1, srv4-lg1, 2 USRP X310s rfdev3-1, rfdev3-2 and both the Sivers platforms rfdev3-5, rfdev3-6 on COSMOS SB1.
     21=== Tutorial Setup ===
     22
     23Follow the steps below to gain access to the [wiki:Architecture/Domains/cosmos_sb1 sandbox 1 console] and set up nodes with appropriate images.
     24 1. If you don't have one already, sign up for a [https://www.cosmos-lab.org/portal-2/ COSMOS account]
     25 1. [wiki:/GettingStarted#MakeaReservation Create a resource reservation] on sandbox 1
     26 1. [wiki:/GettingStarted#LogintoyourReservation Login] into sandbox 1 console (console.sb1.cosmos-lab.org) with two SSH sessions.
     27 1. Make sure all the nodes and devices of this reservation are turned off:
     28{{{#!shell
     29omf tell -a offh -t system:topo:allres
     30}}}
     31 1. The image rfsoc_sivers_sb1_cosmos.ndz is [baseline_uhd.ndz] with Sivers control software and the Xilinx XSCT software installed
     32  Load sivers_sb1_cosmos.ndz on srv3,srv4. 
     33{{{#!shell
     34omf load -i rfsoc_sivers_sb1_cosmos.ndz -t srv3-lg1,srv4-lg1
     35}}}
     36 1. Turn all the required resources on and check the status
     37{{{#!shell
     38omf tell -a on -t srv3-lg1,srv4-lg1,rfdev3-3,rfdev3-4,rfdev3-5,rfdev3-6
     39}}}
     40 1. Check that the nodes are turned on
     41{{{#!shell
     42omf stat -t system:topo:allres
     43}}}
     44 1. ssh to the nodes, use option -Y for using GUI.
     45
     46=== Experiment Execution ===
     47
     48==== Prepare RFSoC boards ====
     49We need to download the FPGA firmware, the linux image and the rootfs over the JTAG. We use the Xilinx XSCT tool to do that. Note that this process will take around 5-10'.
     50
     51* Configure the FPGA firmware of the rfdev3-3 from the srv3-lg1 as follows:
     52{{{#!shell-session
     53root@srv3-lg1:~# cd rfsoc/firmware/sb1_rfdev3_3/
     54root@srv3-lg1:~/rfsoc/firmware/sb1_rfdev3_3# xsct download_firmware.tcl
     55}}}
     56
     57* Configure the FPGA firmware of the rfdev3-4 from the srv4-lg1 as follows:
     58{{{#!shell-session
     59root@srv4-lg1:~# cd rfsoc/firmware/sb1_rfdev3_4/
     60root@srv4-lg1:~/rfsoc/firmware/sb1_rfdev3_4# xsct download_firmware.tcl
     61}}}
     62
     63* You can connect to FPGA over a serial monitor as follows:
     64{{{#!shell-session
     65root@srv3-lg1:~# minicom -D /dev/ttyUSB5
     66root@srv4-lg1:~# minicom -D /dev/ttyUSB1
     67}}}
     68
     69==== Prepare Sivers 60GHz front-ends ====
     70* To demonstrate the experiment here, we use Sivers front-end SN0240 as transmitter and SN0243 as receiver
     71
     72||  SN0240 as transmitter                    ||  SN0243 as receiver                       ||
     73||  `root@srv4-lg1:~/ederenv# ./start_mb1.sh  --gui SN0240` || `root@srv3-lg1:~/ederenv# ./start_mb1.sh  --gui SN0243` ||
     74||  Click "Enable Tx" and "LO leakage Cal"   ||  Click "Enable Rx"                         ||
     75||  [[Image(Sivers_TX_SN0240.jpg, 500px)]]      ||  [[Image(Sivers_RX_SN0243.jpg, 500px)]]      ||
     76
     77* Make sure the RF switch boxes are configured to use X310s (all switches set to port 2)
     78{{{#!shell-session
     79root@console:~# curl am1.cosmos-lab.org:5054/rf_switch/status?name=rfsw1.sb1.cosmos-lab.org,rfsw2.sb1.cosmos-lab.org
     80
     81<response status="OK">
     82  <rf_switch name="rfsw1.sb1.cosmos-lab.org" num_of_switches="4">
     83    <switch number="1" port="2"/>
     84    <switch number="2" port="2"/>
     85    <switch number="3" port="2"/>
     86    <switch number="4" port="2"/>
     87  </rf_switch>
     88  <rf_switch name="rfsw2.sb1.cosmos-lab.org" num_of_switches="4">
     89    <switch number="1" port="2"/>
     90    <switch number="2" port="2"/>
     91    <switch number="3" port="2"/>
     92    <switch number="4" port="2"/>
     93  </rf_switch>
     94</response>
     95}}}
     96
     97* If some or all the ports are set to "1", set them to port "2"
     98{{{#!shell
     99curl "am1.cosmos-lab.org:5054/rf_switch/set?name=rfsw1.sb1.cosmos-lab.org,rfsw2.sb1.cosmos-lab.org&switch=1,2,3,4&port=2"
     100}}}
     101
     102=== Execution ===
     103==== Run the experiment ====
     104* Start transmit application on the TX node(srv4-lg1). Run the tx_waveforms python script in the examples folder:
     105{{{#!shell-session
     106root@srv3-lg1:~/rfsoc/examples# ./tx_waveforms
     107}}}
     108 
     109* Start transmit application on the RX node(srv3-lg1). Run the rx_waveforms python script in the examples folder:
     110{{{#!shell-session
     111root@srv3-lg1:~/rfsoc/examples# ./tx_waveforms
     112}}}
     113||  Tx Waveform   ||  Rx Waveform  ||
     114||  [[Image(rfsoc_tx.png, 500px)]]      ||  [[Image(rfsoc_rx.jpg, 500px)]]      ||