| 2 | |
| 3 | === Description === |
| 4 | This tutorial shows how to use the RFNoC Correlator block(CE) for channel sounding. This experiment is conducted using USRP X310s on ORBIT grid. |
| 5 | |
| 6 | === Set Up === |
| 7 | Make a reservation on the [https://www.orbit-lab.org/schedule/ Orbit Scheduler] for using the grid. |
| 8 | ==== Prepare Receive Node ==== |
| 9 | * Load channel_sounder_x310.ndz on an ORBIT node. |
| 10 | {{{ |
| 11 | prasanthi@console.grid:~$ omf load -i channel_sounder_x310.ndz -t node1-19 |
| 12 | }}} |
| 13 | * Once imaging is done, turn the node on and log in |
| 14 | {{{ |
| 15 | prasanthi@console.grid:~$ omf tell -a on -t node1-19 |
| 16 | prasanthi@console.grid:~$ ssh root@node1-19 |
| 17 | }}} |
| 18 | |
| 19 | ==== Prepare Receive USRPs ==== |
| 20 | * Pick USRP X310s from the MIMO racks 23-1...8, 23-11...18, 24-1...8, 24-11...18 and load correlator FPGA image on them. The USRPs are programmed one at a time. |
| 21 | {{{ |
| 22 | root@node1-19:~# uhd_image_loader --args="addr=10.10.24.12" --fpga-path="/root/bit/corrmag63avg8k_v2_8_7.bit" |
| 23 | }}} |
| 24 | * Power cycle USRPs so that the new FPGA image is active |
| 25 | {{{ |
| 26 | prasanthi@console.grid:~$ omf tell -a offh -t node24-12,node24-13 |
| 27 | prasanthi@console.grid:~$ omf tell -a on -t node24-12,node24-13 |
| 28 | }}} |
| 29 | * Running uhd_usrp_probe on the X310s with spectrum sensing FPGA image should give the following |
| 30 | {{{ |
| 31 | | | / |
| 32 | | | | RFNoC blocks on this device: |
| 33 | | | | |
| 34 | | | | * DmaFIFO_0 |
| 35 | | | | * Radio_0 |
| 36 | | | | * Radio_1 |
| 37 | | | | * DDC_0 |
| 38 | | | | * DUC_0 |
| 39 | | | | * Corrmag63avg8k_0 |
| 40 | | | | * FIFO_0 |
| 41 | |
| 42 | }}} |
| 43 | ==== Prepare Transmit Node ==== |
| 44 | A spectrum spreader RFNoC block is being used to generate wideband PN signal. |
| 45 | * Load prasanthi-channel-sounder.ndz on an ORBIT node. |
| 46 | {{{ |
| 47 | prasanthi@console.grid:~$ omf load -i prasanthi-channel-sounder.ndz -t node14-20 |
| 48 | }}} |
| 49 | * Once imaging is done, turn the node on and log in |
| 50 | {{{ |
| 51 | prasanthi@console.grid:~$ omf tell -a on -t node14-20 |
| 52 | prasanthi@console.grid:~$ ssh root@node14-20 |
| 53 | }}} |
| 54 | |
| 55 | ==== Prepare Transmit USRP ==== |
| 56 | * Pick a USRP X310 for transmitting, and load the spectrum spreader FPGA image |
| 57 | {{{ |
| 58 | root@node1-20:~# uhd_image_loader --args="addr=10.10.24.11" --fpga-path="/root/bit/x310_spreader_4_28.bit" |
| 59 | }}} |
| 60 | * Power cycle the USRP so that the new FPGA image is active |
| 61 | {{{ |
| 62 | prasanthi@console.grid:~$ omf tell -a offh -t node24-11 |
| 63 | prasanthi@console.grid:~$ omf tell -a on -t node24-11 |
| 64 | }}} |
| 65 | * Running uhd_usrp_probe on the X310 with spectrum spreader FPGA image should give the following |
| 66 | {{{ |
| 67 | | | _____________________________________________________ |
| 68 | | | / |
| 69 | | | | RFNoC blocks on this device: |
| 70 | | | | |
| 71 | | | | * DmaFIFO_0 |
| 72 | | | | * Radio_0 |
| 73 | | | | * Radio_1 |
| 74 | | | | * DUC_0 |
| 75 | | | | * Spreader_0 |
| 76 | | | | * FIFO_0 |
| 77 | | | | * FIFO_1 |
| 78 | }}} |
| 79 | ==== Set up SSH tunnel from your local port 5100 to grid.orbit-lab.org:5100 ==== |
| 80 | {{{ |
| 81 | ssh -L 5100:grid.orbit-lab.org:5100 username@grid.orbit-lab.org |
| 82 | }}} |
| 83 | ==== Set up a web proxy for the receive node ==== |
| 84 | Use run-websock command to set up the proxy (this is required for remote web based streaming) |
| 85 | {{{ |
| 86 | prasanthi@console.grid:~$ run-websock 5100 10.10.1.19:5100 --daemon |
| 87 | WARNING: no 'numpy' module, HyBi protocol will be slower |
| 88 | WebSocket server settings: |
| 89 | - Listen on :5100 |
| 90 | - Flash security policy server |
| 91 | - No SSL/TLS support (no cert file) |
| 92 | - Backgrounding (daemon) |
| 93 | }}} |
| 94 | === Run the experiment === |
| 95 | * Run rfnoc_spec_sense_display on the receive node. The command below starts the application to receive spectrum sensing samples from 4 USRP X310s at 100MSPS. |
| 96 | {{{ |
| 97 | root@node1-19:~/uhd/host/build/examples# ./rfnoc_spec_sense_display --args="addr0=10.10.23.11,addr1=10.10.23.12,addr2=10.10.23.13,addr3=10.10.23.14,skip_ddc,skip_duc" --freq 5e9 --gain 15 --ddc-args="input_rate=200000000.0,output_rate=100000000.0" --num-usrp 4 --spec-sense-args="avg_size=256" |
| 98 | }}} |
| 99 | * Run rfnoc_spreader on the transmit node. The command below starts the application to send a 50MHz wide PN signal on node23-17. |
| 100 | {{{ |
| 101 | root@node1-20:~/uhd/host/build/examples# ./rfnoc_spreader --args="addr=10.10.23.17,skip_ddc,skip_duc" --freq 5e9 --gain 15 --duc-args="input_rate=50000000.0,output_rate=200000000.0" |
| 102 | }}} |
| 103 | * Download spec_sense_display.html and open it in your browser. Once you click the Start button, you should see power spectrum display as shown below. |
| 104 | |
| 105 | || [[Image(spec_sense_display.jpg)]]|| |
| 106 | |
| 107 | |
| 108 | |