Skip to content

PSBCH 5G Sidelink Development

Melissa requested to merge episys-merge-develop-sl into develop

The current progress of EpiSci 5G sidelink is the full PHY implementation of the PSBCH (Physical Broadcast Channel). This channel is responsible for the synchronization of multiple UEs (mode 2). Our efforts were soley focused on mode 2, meaning a basestation is not present.

To establish a sidelink connection, synchronization information is broadcasted from a Synchronization Reference (SyncRef) UE and potentially decoded and accepted by other nearby UEs. By detecting the SLSS (SL Synchronization Signal), a nearby UE is able to extract critical pieces of information about the SyncRef UE. This synchronization procedure is required for establishing a 5G sidelink connection between multiple UEs.

Specifically, the information contained in the SLSS allows the nearby UE to synchronize with the SyncRef UE in both time and frequency. The SLSS is sent within the S-SSB frame and is made up of four main symbols. The S-SSB frame is broadcasted perioidically and made up of three main symbols: the PSBCH (and associated DMRS for decoding), S-PSS, and S-SSS. Each of these symbols contain relevant frequency and time information, which is extracted through correlation. Furthermore, these signals contain identifying information specific to the SyncRef UE to ensure proper connectivity. The S-SSS symbol can be analyzed for Reference Signal Received Power (RSRP) measurements for reporting current channel conditions.

The work in this commit will add the synchronization signaling and testing procedure. At the moment, we have three methods in which we test the detection and decoding of the SSB frame.

  1. PSBCH Simulator: This simulator is a standalone executable. It simply tests the generation of the SSB frame and the receiving (near by UE's) ability to decode and interpret this frame. The PSBCH simulator (nr_psbchsim) does not test any of the other PHY functionality (threat starting, OTA transmission, etc.). The simulator takes in a range of SNR values, which it will create an AWGN "channel" to apply to the TX buffer prior to memcopying the data into the RX buffer for decoding. These results were used as preliminary steps prior to moving to RFSIM and OTA testing. This simulator can be ran with the ./nr_psbchsim -s-11 -S9 -n 1 -R 106 2>&1 | tee psbchsim.log command, where in this case, we sweep through SNR -11 dB to 9 dB. Note, the nr_psbchsim executable is located in openairinterface5g/cmake_targets/ran_build/build. The successful decodes can be then plotted across the sweep. -n sets the number of trials to be conducted per SNR value and -R sets the number of resource blocks (RBs).
  2. RF Simulator: The commands for launch the RFSIM (SL version) are very similar to 5G standard CL inputs. We set one UE as the SyncRef UE with the --syncref flag; this UE will also be denoted as the SERVER in the case of RFSIM. A second UE can be launched, and this (nearby) UE is the client. The commands to launch the RFSIM in sidelink mode 2 are shown below: SSH to Machine 1:
cd openairinterface5g/cmake_targets/ran_build/build
sudo RFSIMULATOR=server ./nr-uesoftmodem --sync-ref --rfsim  --sl-mode 2 --rfsimulator.serverport 4048 2>&1 | tee ue-server.log

SSH to Machine 2:

cd openairinterface5g/cmake_targets/ran_build/build
sudo RFSIMULATOR=127.0.0.1 ./nr-uesoftmodem --rfsim --sl-mode 2 --rfsimulator.serverport 4048 2>&1 | tee ue-client.log
  1. OTA USRP Testing: The OTA USRP testing was conducted using two N310s and two B210s. At the moment, we cannot successfully run a combination of different USRP types, so we have only been able to test a 2 UE scenario (e.g., using both B210s or both N310s). In the 2 UE scenario, one USRP has an OAI SyncRef UE launched and the other is the "nearby" UE (default). The following commands are OTA USRP commands used internally. SSH to Machine 1:
cd ~/openairinterface5g/cmake_targets
sudo LD_LIBRARY_PATH=$PWD/ran_build/build:$LD_LIBRARY_PATH \
./ran_build/build/nr-uesoftmodem -E --sl-mode 2 --sync-ref -r 106 --numerology 1 \
            --band 38 -C 2600000000 \
            --usrp-args "type=n3xx,addr=192.168.10.2,subdev=A:0,master_clock_rate=122.88e6" \
            --nokrnmod 1 2>&1 | tee ~/tx.log

SSH to Machine 2:

cd ~/openairinterface5g/cmake_targets
sudo LD_LIBRARY_PATH=$PWD/ran_build/build:$LD_LIBRARY_PATH \
./ran_build/build/nr-uesoftmodem -E --sl-mode 2 -r 106 --numerology 1 \
    --band 38 -C 2600000000 \
    --usrp-args "type=n3xx,addr=192.168.20.2,subdev=A:0,master_clock_rate=122.88e6" \
    --nokrnmod 1 2>&1 | tee ~/rx.log

Lastly, we have created a preliminary test script. This test script is used to quickly test either the RFSIM test option or the OTA USRP test environement. The --help option should provide an overview of the possible commands and configurations the test script accepts. The test script will analyze the logs of the RX (client/nearby) UE for successful decoding of the SSB frame and validate that the NID1 and NID2 set in the TX (SyncRef) UE match. An example of running the test script is shown below.

cd ~/openairinterface5g/ci-scripts
./run_sl_test.py --test rfsim

Note, the default is OTA USRP testing. For this test method, you will need to provide the IP addresses each USRP is hosted on to the test script.

Edited by Melissa

Merge request reports