Use of oversampling mode to support 40 MHz in OAI5G using BRF 2.0 micro

Discussions related to embedded firmware, driver, and user mode application software development
Post Reply
nitinjain
Posts: 6
Joined: Tue Nov 28, 2023 6:24 am

Use of oversampling mode to support 40 MHz in OAI5G using BRF 2.0 micro

Post by nitinjain »

Hi,
I am trying to bring up Openairinterface 5G (OAI5G) using BladeRF 2.0 micro xA4.


Recently, I was able to make it work for two modes:

(1.) Band 1 which has smaller BW profile(15 kHz freq spacing, 52 RB's, 15.36 Msps sampling rate)

(2.) N78 20 MHz (51 RB's, 30 kHz subcarrier offset using 30.72 Msps Sampling rate.

Now I am trying to bring up N78 40 MHz bandwidth profile. It uses 46.08 Msps sampling rate.

I have been trying to bring it up but ran into issues:
Following is the command
sudo ./nr-softmodem -O ../../../targets/PROJECTS//GENERIC-NR-5GC/CONF/gnb.sa.band78.fr1.106PRB.usrpb210.conf --sa --continuous-tx -E

I see following messages/warning:

[BRF] sampling_rate 46080000, num_buffers 128, buffer_size 2048, num transfer 16, timeout_ms (rx 0, tx 0)
[BRF] init dev 0x7247d4003c80
[BRF] Device operates at max speed
[BRF] set RX frequency to 3619200000
[BRF] set RX sample rate to 46080000, 46080000
[BRF] set RX bandwidth to 80000000, 56000000
cal 0: freq 2300000000.000000, offset 53.500000, diff 1319200000.000000
cal 1: freq 1880000000.000000, offset 57.000000, diff 1739200000.000000
cal 2: freq 816000000.000000, offset 73.000000, diff 2803200000.000000
[BRF] set RX gain to 42 (53)
[BRF] set TX Frequency to 3619200000
[BRF] set TX sampling rate to 46080000
[BRF] set TX bandwidth to 80000000
[BRF] set the TX gain to 73
[BRF] configured TX sync interface
[BRF] configured Rx sync interface
[BRF] TX module enabled

[WARNING @ host/libraries/libbladeRF/src/board/bladerf2/common.c:356] The total sample throughput for the 2 active channels, 92.16 Msps, is greater than the recommended maximum sample throughput, 80 Msps. You may experience dropped samples unless the sample rate is reduced, or some channels are deactivated.


Afterwards I continuously see following messages:

RX bad samples count, wanted 23040, got 20224
RX overrun (316) is detected. t=8242471Got 23040 samples. nsymps 23040
RX overrun (317) is detected. t=8265511Got 23040 samples. nsymps 23040
RX overrun (318) is detected. t=8288551Got 23040 samples. nsymps 23040
RX overrun (319) is detected. t=8311591Got 23040 samples. nsymps 23040
RX overrun (320) is detected. t=8334631Got 23040 samples. nsymps 23040
RX overrun (321) is detected. t=8357671Got 23040 samples. nsymps 23040
RX overrun (322) is detected. t=8380711Got 23040 samples. nsymps 23040
RX overrun (323) is detected. t=8403751Got 23040 samples. nsymps 23040
RX overrun (324) is detected. t=8426791Got 23040 samples. nsymps 23040
RX overrun (325) is detected. t=8449831Got 20224 samples. nsymps 23040
RX bad samples count, wanted 23040, got 20224
RX overrun (326) is detected. t=8535079Got 23040 samples. nsymps 23040
RX overrun (327) is detected. t=8558119Got 23040 samples. nsymps 23040
RX overrun (328) is detected. t=8581159Got 23040 samples. nsymps 23040
RX overrun (329) is detected. t=8604199Got 23040 samples. nsymps 23040
RX overrun (330) is detected. t=8627239Got 23040 samples. nsymps 23040
RX overrun (331) is detected. t=8650279Got 23040 samples. nsymps 23040
RX overrun (332) is detected. t=8673319Got 23040 samples. nsymps 23040
RX overrun (333) is detected. t=8696359Got 23040 samples. nsymps 23040
RX overrun (334) is detected. t=8719399Got 23040 samples. nsymps 23040
RX overrun (335) is detected. t=8742439Got 20224 samples. nsymps 23040
RX bad samples count, wanted 23040, got 20224




Now my queries are as follows:

(1.)
I understand that throughput on USB between host and USB handler FPGA is 92.16 Msps (1 channel , I and Q, 46.08 Msps each) and safe limit is 80 Msps even though USB 3.0 can go upto ~500-600 Msps.

Above timing issue is not due to slow computing capabilities of my host machine since it is intel i9 13th gen processor based and anyway, B210 is working fine for same profile on my machine.

It is clear that this limitation is due to BRF driver and probably FPGA logic handling USB packets in BRF 2.0 since B210 is able to handle same on my machine itself.

Can anything be done to alleviate this issue so that BRF 2.0 micro can run above 5G profile?

(2.) Do you think that using oversampling mode and 8 bit mode may reduce quantum of traffic between FPGA and host and therefore reducing delay in traffic?
Cheers!
Nitin Jain
Bangalore, India
https://in.linkedin.com/in/nitjain
Post Reply