From 77491ec57d081898de8f74aeaac514fc9bee8c8d Mon Sep 17 00:00:00 2001
From: "Florian Kaltenberger (Italie)" <kaltenbe+italie@eurecom.fr>
Date: Tue, 11 Jun 2019 09:44:05 +0200
Subject: [PATCH] adding 46.08MHz sampling to USRP B210 (to use e.g. with 40MHz
 5G-NR)

---
 executables/nr-ru.c                          | 16 ++++++++++++----
 targets/ARCH/USRP/USERSPACE/LIB/usrp_lib.cpp | 12 ++++++++++--
 2 files changed, 22 insertions(+), 6 deletions(-)

diff --git a/executables/nr-ru.c b/executables/nr-ru.c
index f39449ddb62..57c084de5f8 100644
--- a/executables/nr-ru.c
+++ b/executables/nr-ru.c
@@ -1076,10 +1076,18 @@ void fill_rf_config(RU_t *ru, char *rf_config_file) {
         cfg->rx_bw = 40e6;
       }
     } else if(N_RB == 106) {
-      cfg->sample_rate=61.44e6;
-      cfg->samples_per_frame = 614400;
-      cfg->tx_bw = 20e6;
-      cfg->rx_bw = 20e6;
+      if (fp->threequarter_fs) {
+	cfg->sample_rate=46.08e6;
+	cfg->samples_per_frame = 460800;
+	cfg->tx_bw = 20e6;
+	cfg->rx_bw = 20e6;
+      }
+      else {
+	cfg->sample_rate=61.44e6;
+	cfg->samples_per_frame = 614400;
+	cfg->tx_bw = 20e6;
+	cfg->rx_bw = 20e6;
+      }
     } else {
       AssertFatal(0==1,"N_RB %d not yet supported for numerology %d\n",N_RB,mu);
     }
diff --git a/targets/ARCH/USRP/USERSPACE/LIB/usrp_lib.cpp b/targets/ARCH/USRP/USERSPACE/LIB/usrp_lib.cpp
index b9c08938e3c..5e99e1ba273 100644
--- a/targets/ARCH/USRP/USERSPACE/LIB/usrp_lib.cpp
+++ b/targets/ARCH/USRP/USERSPACE/LIB/usrp_lib.cpp
@@ -870,7 +870,7 @@ void set_rx_gain_offset(openair0_config_t *openair0_cfg, int chain_index,int bw_
 
       default:
         LOG_E(PHY,"unknown sampling rate %d\n",(int)openair0_cfg[0].sample_rate);
-        exit(-1);
+        //exit(-1);
         break;
     }
   }
@@ -1210,7 +1210,15 @@ extern "C" {
         }
 
         switch ((int)openair0_cfg[0].sample_rate) {
-          case 30720000:
+	case 46080000:
+            s->usrp->set_master_clock_rate(46.08e6);
+            //openair0_cfg[0].samples_per_packet    = 1024;
+            openair0_cfg[0].tx_sample_advance     = 115;
+            openair0_cfg[0].tx_bw                 = 40e6;
+            openair0_cfg[0].rx_bw                 = 40e6;
+            break;
+
+	case 30720000:
             s->usrp->set_master_clock_rate(30.72e6);
             //openair0_cfg[0].samples_per_packet    = 1024;
             openair0_cfg[0].tx_sample_advance     = 115;
-- 
GitLab