Changes between Version 2 and Version 3 of Tutorials/Wireless/GNURadioCFOEstimation


Ignore:
Timestamp:
Feb 9, 2024, 5:24:08 PM (10 months ago)
Author:
prasanthi
Comment:

Legend:

Unmodified
Added
Removed
Modified
  • Tutorials/Wireless/GNURadioCFOEstimation

    v2 v3  
    4242    omf stat -t all
    4343    }}}
    44  1. {{{ssh}}} to the server with option -Y for using GUI with gnuradio.
     44 1. {{{ssh}}} to the servers with option -Y for using GUI with gnuradio.
    4545    {{{#!shell
    4646    ssh -Y root@srv1-lg1
    4747    }}}
     48    {{{#!shell
     49    ssh -Y root@srv2-lg1
     50    }}}
    4851=== Experiment Execution ===
    4952==== Find and prepare USRPs  ====
    50 * Upon logging into the server, run eth_config.sh script. This sets up the 10G data interfaces eno1, eno2. After running the script, you should see that the data interfaces have the appropriate IP addresses assigned, as per the tables for [https://wiki.cosmos-lab.org/wiki/Architecture/Domains/cosmos_sb1#IPAddressAssignment SB1] and [https://wiki.cosmos-lab.org/wiki/Architecture/Domains/cosmos_sb2#IPAddressAssignment SB2].
    51 {{{#!td
    52    SB1
    53    {{{#!shell
    54 root@srv1-lg1:~# ./eth_config.sh
    55 root@srv1-lg1:~# ifconfig eno1
    56 eno1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 9000
    57         inet 10.38.1.1  netmask 255.255.0.0  broadcast 10.38.255.255
    58         inet6 fe80::1e34:daff:fe42:c3c  prefixlen 64  scopeid 0x20<link>
    59         ether 1c:34:da:42:0c:3c  txqueuelen 1000  (Ethernet)
    60         RX packets 712  bytes 74814 (74.8 KB)
    61         RX errors 0  dropped 595  overruns 0  frame 0
    62         TX packets 42  bytes 9132 (9.1 KB)
    63         TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    64 root@srv1-lg1:~# ifconfig eno2
    65 eno2: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 9000
    66         inet 10.39.1.1  netmask 255.255.0.0  broadcast 10.39.255.255
    67         inet6 fe80::1e34:daff:fe42:c3d  prefixlen 64  scopeid 0x20<link>
    68         ether 1c:34:da:42:0c:3d  txqueuelen 1000  (Ethernet)
    69         RX packets 643  bytes 51548 (51.5 KB)
    70         RX errors 0  dropped 599  overruns 0  frame 0
    71         TX packets 42  bytes 9132 (9.1 KB)
    72         TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    73    }}}
     53* Upon logging into the servers, run eth_config_sb1.sh script on each of the servers. This sets up the 10G data interfaces DATA1, DATA2. After running the script, you should see that the data interfaces have the appropriate IP addresses assigned, as per the table for [https://wiki.cosmos-lab.org/wiki/Architecture/Domains/cosmos_sb1#IPAddressAssignment SB1].
     54{{{#!shell
     55root@srv1-lg1:~# ./eth_config_sb1.sh
     56root@srv1-lg1:~# ip addr
     572: DATA1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9000 qdisc mq state UP group default qlen 1000
     58    link/ether 1c:34:da:42:0c:3c brd ff:ff:ff:ff:ff:ff
     59    inet 10.38.1.1/16 scope global DATA1
     60       valid_lft forever preferred_lft forever
     61    inet6 fe80::1e34:daff:fe42:c3c/64 scope link
     62       valid_lft forever preferred_lft forever
     633: DATA2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9000 qdisc mq state UP group default qlen 1000
     64    link/ether 1c:34:da:42:0c:3d brd ff:ff:ff:ff:ff:ff
     65    inet 10.39.1.1/16 scope global DATA2
     66       valid_lft forever preferred_lft forever
     67    inet6 fe80::1e34:daff:fe42:c3d/64 scope link
     68       valid_lft forever preferred_lft forever
    7469}}}
    75 * Run {{{und_find_devices}}} to make sure that both USRP N310s can be reached:
    76 {{{#!td
    77    SB1
    78    {{{#!shell
     70* Run {{{und_find_devices}}} to make sure that both USRP N310s can be reached from both the servers:
     71{{{#!shell
    7972root@srv1-lg1:~# uhd_find_devices
    80 [INFO] [UHD] linux; GNU C++ version 7.5.0; Boost_106501; UHD_3.15.0.0-release
     73[INFO] [UHD] linux; GNU C++ version 9.4.0; Boost_107100; UHD_4.4.0.0-0ubuntu1~focal1
    8174--------------------------------------------------
    8275-- UHD Device 0
    8376--------------------------------------------------
    8477Device Address:
    85     serial: 3176DF5
    86     addr: 10.38.2.1
     78    serial: 3176DEB
     79    addr: 10.39.6.1
    8780    claimed: False
    88     mgmt_addr: 10.37.2.1
    89     mgmt_addr: 10.38.2.1
    90     mgmt_addr: 10.39.2.1
     81    fpga: XG
     82    mgmt_addr: 10.37.6.1
     83    mgmt_addr: 10.38.6.1
     84    mgmt_addr: 10.39.6.1
     85    name: ni-n3xx-3176DEB
    9186    product: n310
    9287    type: n3xx
     88
    9389--------------------------------------------------
    94 -- UHD Device 1
     90-- UHD Device 2
    9591--------------------------------------------------
    9692Device Address:
    97     serial: 3196937
    98     addr: 10.38.3.1
     93    serial: 3176DFA
     94    addr: 10.39.6.2
    9995    claimed: False
    100     mgmt_addr: 10.37.3.1
    101     mgmt_addr: 10.38.3.1
    102     mgmt_addr: 10.39.3.1
     96    fpga: HG
     97    mgmt_addr: 10.37.6.2
     98    mgmt_addr: 10.39.6.2
     99    name: ni-n3xx-3176DFA
    103100    product: n310
    104101    type: n3xx
    105    }}}
    106102}}}
     103
    107104
    108105==== Configure IBM 28GHz PAAM ====
     
    114111Details and examples for the above are provided at the [https://wiki.cosmos-lab.org/wiki/Resources/Services/ArrayMgmt array management page].
    115112For this experiment, we use static array management commands as shown below.
    116 First, start PAAM #1 (rfdev4-in1) in RX mode with V-polarization using 16 antenna elements on all the ICs, and configure the RX beamforming direction to be in the broadside (0,0). Check the current consumption on 2v7_0,1,2,3 to make sure all the ICs have been successfully initialized.
     113First, start PAAM #1 (rfdev4-in1) in TX mode with H-polarization using 16 antenna elements on all the ICs, and configure the TX beamforming direction to be in the broadside (0,0). Check the current consumption on 2v7_0,1,2,3 to make sure all the ICs have been successfully initialized.
    117114{{{#!shell
    118 root@console:~# curl "http://am1.orbit-lab.org:5054/array_mgmt/configure?dev_name=rfdev4-in1.sb1.cosmos-lab.org&ics=all&num_elements=16&txrx=rx&pol=v&theta=0&phi=0"
     115root@console:~# curl "http://am1.orbit-lab.org:5054/array_mgmt/configure?dev_name=rfdev4-in1.sb1.cosmos-lab.org&ics=all&num_elements=16&txrx=tx&pol=h&theta=0&phi=0"
    119116}}}
    120117{{{#!shell
     
    122119<response status="OK">
    123120  <action service="array_mgmt" name="configure" ipaddr="10.37.7.1">
    124     <step name="open" duration="3.599997"/>
    125     <step name="initializaition" duration="0.071123"/>
    126     <step name="enabling" duration="0.016817"/>
    127     <step name="steering" duration="0.007705"/>
    128     <state PAAM_ID="0x36" LO_switch="PLL" if_sw1="0x0" if_sw2="0x0" if_sw3="0x0" if_sw4="0x0"/>
     121    <step name="open" duration="3.254270"/>
     122    <step name="initializaition" duration="0.072135"/>
     123    <step name="enabling" duration="0.020807"/>
     124    <step name="steering" duration="0.010150"/>
     125    <state PAAM_ID="0x24" LO_switch="PLL" if_sw1="0x0" if_sw2="0x0" if_sw3="0x0" if_sw4="0x0" txrx="tx" polarization="h" />
    129126    <adc>
    130       <conv index="0" name="1v2" tADC="120" tVolt="0.293" tCurr="0.147"/>
    131       <conv index="1" name="1v5" tADC="334" tVolt="0.816" tCurr="1.632"/>
    132       <conv index="2" name="1v8" tADC="24" tVolt="0.059" tCurr="0.029"/>
    133       <conv index="3" name="2v7_0" tADC="163" tVolt="0.398" tCurr="0.797"/>
    134       <conv index="4" name="2v7_1" tADC="206" tVolt="0.503" tCurr="1.007"/>
    135       <conv index="5" name="2v7_2" tADC="220" tVolt="0.538" tCurr="1.075"/>
    136       <conv index="6" name="2v7_3" tADC="180" tVolt="0.440" tCurr="0.880"/>
    137       <conv index="7" name="3v3_pll" tADC="408" tVolt="0.997" tCurr="0.499"/>
    138       <conv index="8" name="5v_uzed" tADC="206" tVolt="0.503" tCurr="0.503"/>
    139       <conv index="9" name="12v" tADC="244" tVolt="0.596" tCurr="1.988"/>
     127      <conv index="0" name="1v2" tADC="107" tVolt="0.261" tCurr="0.131"/>
     128      <conv index="1" name="1v5" tADC="345" tVolt="0.843" tCurr="1.686"/>
     129      <conv index="2" name="1v8" tADC="0" tVolt="0.000" tCurr="0.000"/>
     130      <conv index="3" name="2v7_0" tADC="262" tVolt="0.640" tCurr="1.281"/>
     131      <conv index="4" name="2v7_1" tADC="270" tVolt="0.660" tCurr="1.320"/>
     132      <conv index="5" name="2v7_2" tADC="259" tVolt="0.633" tCurr="1.266"/>
     133      <conv index="6" name="2v7_3" tADC="276" tVolt="0.674" tCurr="1.349"/>
     134      <conv index="7" name="3v3_pll" tADC="46" tVolt="0.112" tCurr="0.056"/>
     135      <conv index="8" name="5v_uzed" tADC="308" tVolt="0.753" tCurr="0.753"/>
     136      <conv index="9" name="12v" tADC="328" tVolt="0.802" tCurr="2.672"/>
    140137      <conv index="10" name="0V" tADC="0" tVolt="0.000"/>
    141       <conv index="11" name="1V8" tADC="737" tVolt="1.801"/>
     138      <conv index="11" name="1V8" tADC="736" tVolt="1.799"/>
    142139    </adc>
    143     <step name="status" duration="0.020882"/>
    144     <step name="close" duration="0.100221"/>
     140    <step name="status" duration="0.018327"/>
     141    <step name="close" duration="0.100188"/>
    145142  </action>
    146143</response>
    147144}}}
    148145
    149 Similarly, start PAAM #2 (rfdev4-in2) in TX mode with V-polarization using 16 antenna elements on all the ICs, and configure the TX beamforming direction to be in the broadside (0,0). Check the current consumption to make sure the ICs have been successfully initialized.
     146Similarly, start PAAM #2 (rfdev4-in2) in RX mode with H-polarization using 16 antenna elements on all the ICs, and configure the RX beamforming direction to be in the broadside (0,0). Check the current consumption to make sure the ICs have been successfully initialized.
    150147{{{#!shell
    151 root@console:~# curl "http://am1.orbit-lab.org:5054/array_mgmt/configure?dev_name=rfdev4-in2.sb1.cosmos-lab.org&ics=all&num_elements=16&txrx=tx&pol=v&theta=0&phi=0"
     148root@console:~# curl "http://am1.orbit-lab.org:5054/array_mgmt/configure?dev_name=rfdev4-in2.sb1.cosmos-lab.org&ics=all&num_elements=16&txrx=rx&pol=h&theta=0&phi=0"
    152149}}}
    153150{{{#!shell
     
    155152<response status="OK">
    156153  <action service="array_mgmt" name="configure" ipaddr="10.37.7.2">
    157     <step name="open" duration="3.558891"/>
    158     <step name="initializaition" duration="0.072244"/>
    159     <step name="enabling" duration="0.018709"/>
    160     <step name="steering" duration="0.008254"/>
    161     <state PAAM_ID="0x30" LO_switch="PLL" if_sw1="0x0" if_sw2="0x0" if_sw3="0x0" if_sw4="0x0"/>
     154    <step name="open" duration="3.295830"/>
     155    <step name="initializaition" duration="0.071303"/>
     156    <step name="enabling" duration="0.019037"/>
     157    <step name="steering" duration="0.010038"/>
     158    <state PAAM_ID="0x33" LO_switch="PLL" if_sw1="0x0" if_sw2="0x0" if_sw3="0x0" if_sw4="0x0" txrx="rx" polarization="h" />
    162159    <adc>
    163       <conv index="0" name="1v2" tADC="125" tVolt="0.305" tCurr="0.153"/>
    164       <conv index="1" name="1v5" tADC="331" tVolt="0.809" tCurr="1.618"/>
    165       <conv index="2" name="1v8" tADC="22" tVolt="0.054" tCurr="0.027"/>
    166       <conv index="3" name="2v7_0" tADC="255" tVolt="0.623" tCurr="1.246"/>
    167       <conv index="4" name="2v7_1" tADC="250" tVolt="0.611" tCurr="1.222"/>
    168       <conv index="5" name="2v7_2" tADC="266" tVolt="0.650" tCurr="1.300"/>
    169       <conv index="6" name="2v7_3" tADC="264" tVolt="0.645" tCurr="1.290"/>
    170       <conv index="7" name="3v3_pll" tADC="410" tVolt="1.002" tCurr="0.501"/>
    171       <conv index="8" name="5v_uzed" tADC="215" tVolt="0.525" tCurr="0.525"/>
    172       <conv index="9" name="12v" tADC="300" tVolt="0.733" tCurr="2.444"/>
     160      <conv index="0" name="1v2" tADC="106" tVolt="0.259" tCurr="0.130"/>
     161      <conv index="1" name="1v5" tADC="345" tVolt="0.843" tCurr="1.686"/>
     162      <conv index="2" name="1v8" tADC="0" tVolt="0.000" tCurr="0.000"/>
     163      <conv index="3" name="2v7_0" tADC="209" tVolt="0.511" tCurr="1.022"/>
     164      <conv index="4" name="2v7_1" tADC="171" tVolt="0.418" tCurr="0.836"/>
     165      <conv index="5" name="2v7_2" tADC="219" tVolt="0.535" tCurr="1.070"/>
     166      <conv index="6" name="2v7_3" tADC="217" tVolt="0.530" tCurr="1.061"/>
     167      <conv index="7" name="3v3_pll" tADC="172" tVolt="0.420" tCurr="0.210"/>
     168      <conv index="8" name="5v_uzed" tADC="374" tVolt="0.914" tCurr="0.914"/>
     169      <conv index="9" name="12v" tADC="316" tVolt="0.772" tCurr="2.574"/>
    173170      <conv index="10" name="0V" tADC="0" tVolt="0.000"/>
    174       <conv index="11" name="1V8" tADC="734" tVolt="1.794"/>
     171      <conv index="11" name="1V8" tADC="738" tVolt="1.804"/>
    175172    </adc>
    176     <step name="status" duration="0.021005"/>
    177     <step name="close" duration="0.100240"/>
     173    <step name="status" duration="0.017713"/>
     174    <step name="close" duration="0.100175"/>
    178175  </action>
    179176</response>
     
    181178
    182179==== Run the experiment ====
    183 * On srv1-lg1, start gnuradio companion and open the example experiment that establishes a single tone transmission. Use the file that is appropriate for the domain (SB1 or SB2).
     180* Transmit an OFDM waveform from sdr1-in1+rfdev4-in1 by running the flowgraph TX_OFDM.grc on srv1-lg1. Launch gnuradio-companion on srv1-lg1
    184181{{{#!shell
    185 root@srv1-lg1:~# gnuradio-companion example_paam_tone_sb1.grc
     182root@srv1-lg1:~# cd GNURadioOFDMExample/
     183root@srv1-lg1:~/GNURadioOFDMExample# gnuradio-companion TX_OFDM.grc
    186184}}}
    187185
    188 * For running the experiment on SB1, configure the USRP sink (TX) with sdr1-in2 ("mgmt_addr=10.37.6.2,addr=10.39.6.2") and the USRP source (RX) with sdr1-in1("mgmt_addr=10.37.6.1,addr=10.39.6.1"). For SB2, configure the USRP sink (TX) with sdr1-s1-lg1 ("mgmt_addr=10.116.2.1,addr=10.117.2.1") and the USRP source (RX) with sdr1-md1 ("mgmt_addr=10.116.3.1,addr=10.117.3.1"). Set the carrier frequency to 3GHz (3e9) and the subdev to be "B:1" (RF3) (For SB2, use "B:0", RF2) on both TX and RX. In this example flowgraph, the sampling rate and the tone frequency are set to be 2.5MHz (2.5e6) and 1MHz (1e6), respectively.
    189 || [[Image(mmwavePaamBasicsFlowgraph.png, 600px)]] ||
     186* Please make sure the USRP sink (TX) in TX_OFDM.grc is configured with sdr1-in1 ("addr=10.39.6.1"). Set the carrier frequency to 3GHz (3e9) and the subdev to be "B:0" (RF3). In this flowgraph, the sampling rate is set to 62.5 MSPS and the number of OFDM subcarriers set to 64. So the maximum CFO that can be detected is 62.5/(2*64) = 0.488 MHz.
     187|| [[Image(usrp_sink_tx_ofdm.png, 600px)]] ||
    190188
     189* Receive the OFDM waveform on sdr1-in2+rfdev4-in2 by running the flowgraph RX_OFDM_CFO_estimation.grc on srv2-lg1. Launch gnuradio-companion on srv1-lg1
     190{{{#!shell
     191root@srv2-lg1:~# cd GNURadioOFDMExample/
     192root@srv2-lg1:~/GNURadioOFDMExample# gnuradio-companion RX_OFDM_CFO_estimation.grc
     193}}}
     194
     195* Please make sure the USRP source (RX) in RX_OFDM_CFO_estimation.grc is configured with sdr1-in2("addr=10.39.6.2"). Set the carrier frequency to 3GHz (3e9) and the subdev to be "B:0" (RF3).
     196|| [[Image(usrp_source_rx_ofdm.png, 600px)]] ||
     197
     198* Start both the flowgraphs.
     199