Version 45 (modified by 17 months ago) ( diff ) | ,
---|
Site Navigation
IBM 28GHz PAAM: Integration with USRPs with MIMO capability
Description
In this tutorial, we demonstrate the integration of IBM 28GHz PAAM boars with USRPs. We present the MIMO capability with real-time baseband processing using the system.
- The instructions for the RENEW Platform Agora software can be found here under RENEW license.
- The COSMOS team contributes to adding the UHD support for the Agora software under the UHD license. We thank the RENEW team for their support and help throughout the process.
Authors:
Zhenzhou (Tom) Qi, Duke University <zhenzhou.qi[at]duke[dot]edu>
Tingjun Chen, Duke University <tingjun.chen[at]duke[dot]edu>
Last updated: July 5, 2023
Prerequisites
In order to access COSMOS-SB2, create a reservation in COSMOS testbed 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 getting started page to get started.
Resources Required
- 2 USRP N310 SDRs (
sdr1-s1-lg1
andsdr1-md1
in SB2) - 2 IBM 28GHz PAAMs (
rfdev2-1
andrfdev2-2
in SB2 ) - 1 Server (
srv1-lg1
)
The current hardware connection in SB2 as shown below
sdr1-s1-lg1
RF2 TX/RX —rfdev2-1
IC0/TX/H,sdr1-s1-lg1
RF2 RX2 —rfdev2-1
IC1/RX/Hsdr1-s1-lg1
RF3 TX/RX —rfdev2-1
IC0/TX/V,sdr1-s1-lg1
RF3 RX2 —rfdev2-1
IC1/RX/Vsdr1-md1
RF2 TX/RX —rfdev2-2
IC0/TX/H,sdr1-md1
RF2 RX2 —rfdev2-2
IC1/RX/Hsdr1-md1
RF3 TX/RX —rfdev2-2
IC0/TX/V,sdr1-md1
RF2 RX2 —rfdev2-2
IC1/RX/V
The required software components used in this demo are already loaded to the IBMPAAM-USRP-RT-Baseband.ndz
node image, the node image includes:
- Ubuntu 20.04, UHD 4.1.0
- PAAM Control to initialize the PAAM boards to integrate with USRPs.
- Agora-UHD: An UHD-integrated real-time baseband processing pipeline. Please refer to
Cubic23
branch at here for more information. - Real-time visualization for the real-time DSP pipeline.
Tutorial Setup
Follow the steps below to gain access to the sandbox console and set up nodes with appropriate images.
- If you don't have one already, sign up for a COSMOS account
- Create a resource reservation on COSMOS SB2
- Login into sandbox console
console.sb2.cosmos-lab.org
) with four SSH sessions. - In terminal 1, make sure all the nodes and devices used in the experiment are turned off. Use the following command for SB2
omf tell -a offh -t sdr1-s1-lg1,sdr1-md1,rfdev2-1,rfdev2-2,srv1-lg1
- Load
IBMPAAM-USRP-RT-Baseband.ndz
on the server.omf load -i IBMPAAM-USRP-RT-Baseband.ndz -t srv1-lg1
- Turn all the required resources on and check the status of all the resources. Use the following commands for SB2.
omf tell -a on -t sdr1-s1-lg1,sdr1-md1,rfdev2-1,rfdev2-2,srv1-lg1
omf stat -t all
ssh
to the server with option -Y for using GUI for our live demo.ssh -Y root@srv1-lg1
- In all the ssh sessions for
srv1-lg1
, use the following to source the correct environment.source /opt/intel/oneapi/setvars.sh --force --config="/opt/intel/oneapi/renew-config.txt"
Experiment Execution
Find and prepare USRPs
- Upon logging into the server, set up the 10G data interfaces DATA1, DATA2 in terminal 1.
ifconfig DATA1 10.117.1.1 netmask 255.255.0.0 mtu 9000 up ifconfig DATA2 10.118.1.1 netmask 255.255.0.0 mtu 9000 up
sudo sysctl -w net.core.rmem_max=536870912 sudo sysctl -w net.core.wmem_max=536870912
After running the above commands, you should see that the data interfaces have the appropriate IP addresses assigned.
root@srv1-lg1:~# ifconfig DATA1 DATA1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet6 fe80::1e34:daff:fe42:d4c prefixlen 64 scopeid 0x20<link> ether 1c:34:da:42:0d:4c txqueuelen 1000 (Ethernet) RX packets 21092 bytes 1881634 (1.8 MB) RX errors 0 dropped 19183 overruns 0 frame 0 TX packets 686 bytes 204975 (204.9 KB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 root@srv1-lg1:~# ifconfig DATA2 DATA2: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet6 fe80::1e34:daff:fe42:d4d prefixlen 64 scopeid 0x20<link> ether 1c:34:da:42:0d:4d txqueuelen 1000 (Ethernet) RX packets 21091 bytes 1881530 (1.8 MB) RX errors 0 dropped 19184 overruns 0 frame 0 TX packets 690 bytes 226549 (226.5 KB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
- Run
und_find_devices
to make sure that both USRP N310s can be reached:[INFO] [UHD] linux; GNU C++ version 9.4.0; Boost_107100; UHD_4.1.0.HEAD-0-g25d617ca -------------------------------------------------- -- UHD Device 3 -------------------------------------------------- Device Address: serial: 315A35A addr: 10.117.2.1 claimed: False fpga: XG mgmt_addr: 10.116.2.1 mgmt_addr: 10.117.2.1 product: n310 type: n3xx -------------------------------------------------- -- UHD Device 4 -------------------------------------------------- Device Address: serial: 3176DF7 addr: 10.118.3.1 claimed: False fpga: XG mgmt_addr: 10.116.3.1 mgmt_addr: 10.118.3.1 product: n310 type: n3xx
Configure IBM 28GHz PAAM
COSMOS uses the IBM 28GHz PAAM API to configure and initialize the PAAM boards.
Under PAAM_Control
, use the following command to configure the PAAM boards in terminal 1:
root@srv1-lg1:~/PAAM_Control# python3 main.py
The following message will print out to indicate that the PAAM board is being successfully configured:
Opened port to FPGA Logged in to Petalinux Started command parser on Zynq sdpar_prog.py /version: Version is PAWR_v1.2.0 Using baseline FPGA control IP Reset the Phased Array Initialization of IC 0 was successful Initialization of IC 1 was successful Initialization of IC 2 was successful Initialization of IC 3 was successful IC0 current: 2.2629521016617793 status: On IC1 current: 1.3685239491691104 status: On IC2 current: 0.19550342130987292 status: Off IC3 current: 0.07820136852394917 status: Off Closed port to Zynq Opened port to FPGA Logged in to Petalinux Started command parser on Zynq sdpar_prog.py /version: Version is PAWR_v1.2.0 Using baseline FPGA control IP Reset the Phased Array Initialization of IC 0 was successful Initialization of IC 1 was successful Initialization of IC 2 was successful Initialization of IC 3 was successful IC0 current: 2.29227761485826 status: On IC1 current: 1.3587487781036167 status: On IC2 current: 0.15640273704789834 status: Off IC3 current: 0.16617790811339198 status: Off Closed port to Zynq Experiment Started!
Notice this program will hang there to indicate that the PAAM board is on, if you wish to turn off the ICs on the PAAM boards, please press CTRL+C
once.
Bring up real-time visualization
Please direct to the ~/Cubic23/Agora/files/log/csv
folder, where you will be able to see 3 types Python visualization files. In terminal 2, use the following command to choose the visualization for the system.
cubic_timeD.py
: This visualization tool helps to visualize the raw IQ samples captured by Agora-UHD and the corresponding FFT.root@srv1-lg1:~/Cubic23/Agora/files/log/csv# taskset -c 31 python3 cubic_mimo.py
cubic_conste.py
: This visualization tool helps to visualize the constellation Agora-UHD system get after demodulating the received signalsroot@srv1-lg1:~/Cubic23/Agora/files/log/csv# taskset -c 32 python3 cubic_conste.py --SISO --QAM16
--SISO/--MIMO
chooses the mode to plot for either SISO case or MIMO case,--QAM16/--QAM64
plots the corresponding reference point for different modulation types.
cubic_mimo.py
andcubic.py
: This visualization tool helps to visualize the EVM, SNR, and BER readings for the Agora-UHD system.
Attachments (7)
- 16QAM-EVM-SNR.png (62.0 KB ) - added by 17 months ago.
- 16QAM-FFT.png (88.1 KB ) - added by 17 months ago.
- 16QAM-MIMO.png (46.9 KB ) - added by 17 months ago.
- 64QAM-SISO.png (34.9 KB ) - added by 17 months ago.
- PAAM-2_2 .png (2.6 MB ) - added by 17 months ago.
- CFO_DL.png (49.6 KB ) - added by 17 months ago.
- CFO_UL.png (47.7 KB ) - added by 17 months ago.