Added 20MHz default configuration

This commit is contained in:
Xavier Arteaga 2021-07-21 15:02:20 +02:00 committed by Xavier Arteaga
parent ea802c23f2
commit dfa323df6b
3 changed files with 55 additions and 40 deletions

View File

@ -30,7 +30,17 @@ public:
* - SSB: 5ms * - SSB: 5ms
*/ */
R_CARRIER_CUSTOM_10MHZ = 0, R_CARRIER_CUSTOM_10MHZ = 0,
} carrier = R_CARRIER_CUSTOM_10MHZ; /**
* @brief Carrier reference configuration for 10MHz serving cell bandwidth
* - BW: 20 MHZ (106 PRB)
* - PCI: 500
* - SCS: 15 kHz
* - SSB: 5ms
*/
R_CARRIER_CUSTOM_20MHZ,
R_CARRIER_COUNT
} carrier = R_CARRIER_CUSTOM_10MHZ;
const std::vector<std::string> R_CARRIER_STRING = {"10MHz", "20MHz", "Invalid"};
enum { enum {
/** /**
@ -60,7 +70,7 @@ public:
/** /**
* @brief PDSCH parameters described in TS 38.101-4 Table 5.2.2.2.1-2 for the test described in table 5.2.2.2.1-3 * @brief PDSCH parameters described in TS 38.101-4 Table 5.2.2.2.1-2 for the test described in table 5.2.2.2.1-3
*/ */
R_PDSCH_2_1_1_TDD, R_PDSCH_TS38101_5_2_1,
/** /**
* @brief Invalid PDSCH reference channel * @brief Invalid PDSCH reference channel
@ -68,7 +78,7 @@ public:
R_PDSCH_COUNT R_PDSCH_COUNT
} pdsch = R_PDSCH_DEFAULT; } pdsch = R_PDSCH_DEFAULT;
const std::vector<std::string> R_PDSCH_STRING = {"default", "R.PDSCH.2-1.1 TDD", "Invalid"}; const std::vector<std::string> R_PDSCH_STRING = {"default", "ts38101/5.2-1", "Invalid"};
enum { enum {
/** /**
@ -122,6 +132,7 @@ private:
* Carrier make helper methods * Carrier make helper methods
*/ */
static void make_carrier_custom_10MHz(srsran_carrier_nr_t& carrier); static void make_carrier_custom_10MHz(srsran_carrier_nr_t& carrier);
static void make_carrier_custom_20MHz(srsran_carrier_nr_t& carrier);
/** /**
* TDD make helper methods * TDD make helper methods

View File

@ -37,7 +37,14 @@ phy_cfg_nr_default_t::reference_cfg_t::reference_cfg_t(const std::string& args)
srsran_terminate("Invalid reference argument '%s'", e.c_str()); srsran_terminate("Invalid reference argument '%s'", e.c_str());
} }
if (param.front() == "pdsch") { if (param.front() == "carrier") {
for (carrier = R_CARRIER_CUSTOM_10MHZ; carrier < R_CARRIER_COUNT; carrier = inc(carrier)) {
if (R_CARRIER_STRING[carrier] == param.back()) {
break;
}
}
srsran_assert(carrier != R_CARRIER_COUNT, "Invalid carrier reference configuration '%s'", param.back().c_str());
} else if (param.front() == "pdsch") {
for (pdsch = R_PDSCH_DEFAULT; pdsch < R_PDSCH_COUNT; pdsch = inc(pdsch)) { for (pdsch = R_PDSCH_DEFAULT; pdsch < R_PDSCH_COUNT; pdsch = inc(pdsch)) {
if (R_PDSCH_STRING[pdsch] == param.back()) { if (R_PDSCH_STRING[pdsch] == param.back()) {
break; break;
@ -61,6 +68,17 @@ void phy_cfg_nr_default_t::make_carrier_custom_10MHz(srsran_carrier_nr_t& carrie
carrier.scs = srsran_subcarrier_spacing_15kHz; carrier.scs = srsran_subcarrier_spacing_15kHz;
} }
void phy_cfg_nr_default_t::make_carrier_custom_20MHz(srsran_carrier_nr_t& carrier)
{
carrier.nof_prb = 106;
carrier.max_mimo_layers = 1;
carrier.pci = 500;
carrier.absolute_frequency_point_a = 633928;
carrier.absolute_frequency_ssb = 634176;
carrier.offset_to_carrier = 0;
carrier.scs = srsran_subcarrier_spacing_15kHz;
}
void phy_cfg_nr_default_t::make_tdd_custom_6_4(srsran_tdd_config_nr_t& tdd) void phy_cfg_nr_default_t::make_tdd_custom_6_4(srsran_tdd_config_nr_t& tdd)
{ {
tdd.pattern1.period_ms = 10; tdd.pattern1.period_ms = 10;
@ -315,7 +333,7 @@ void phy_cfg_nr_default_t::make_harq_auto(srsran_harq_ack_cfg_hl_t& harq,
void phy_cfg_nr_default_t::make_prach_default_lte(srsran_prach_cfg_t& prach) void phy_cfg_nr_default_t::make_prach_default_lte(srsran_prach_cfg_t& prach)
{ {
prach.config_idx = 0; prach.config_idx = 0;
prach.freq_offset = 2; prach.freq_offset = 4;
prach.root_seq_idx = 0; prach.root_seq_idx = 0;
prach.is_nr = true; prach.is_nr = true;
} }
@ -326,6 +344,11 @@ phy_cfg_nr_default_t::phy_cfg_nr_default_t(const reference_cfg_t& reference_cfg)
case reference_cfg_t::R_CARRIER_CUSTOM_10MHZ: case reference_cfg_t::R_CARRIER_CUSTOM_10MHZ:
make_carrier_custom_10MHz(carrier); make_carrier_custom_10MHz(carrier);
break; break;
case reference_cfg_t::R_CARRIER_CUSTOM_20MHZ:
make_carrier_custom_20MHz(carrier);
break;
case reference_cfg_t::R_CARRIER_COUNT:
srsran_terminate("Invalid carrier reference");
} }
switch (reference_cfg.tdd) { switch (reference_cfg.tdd) {
@ -344,7 +367,7 @@ phy_cfg_nr_default_t::phy_cfg_nr_default_t(const reference_cfg_t& reference_cfg)
case reference_cfg_t::R_PDSCH_DEFAULT: case reference_cfg_t::R_PDSCH_DEFAULT:
make_pdsch_default(pdsch); make_pdsch_default(pdsch);
break; break;
case reference_cfg_t::R_PDSCH_2_1_1_TDD: case reference_cfg_t::R_PDSCH_TS38101_5_2_1:
make_pdsch_2_1_1_tdd(carrier, pdsch); make_pdsch_2_1_1_tdd(carrier, pdsch);
break; break;
case reference_cfg_t::R_PDSCH_COUNT: case reference_cfg_t::R_PDSCH_COUNT:

View File

@ -9,6 +9,7 @@
if (RF_FOUND AND ENABLE_SRSUE AND ENABLE_SRSENB) if (RF_FOUND AND ENABLE_SRSUE AND ENABLE_SRSENB)
set(NR_PHY_TEST_GNB_NOF_THREADS 1) set(NR_PHY_TEST_GNB_NOF_THREADS 1)
set(NR_PHY_TEST_UE_NOF_THREADS 1) set(NR_PHY_TEST_UE_NOF_THREADS 1)
set(NR_PHY_TEST_BW 10MHz)
add_executable(nr_phy_test nr_phy_test.cc) add_executable(nr_phy_test nr_phy_test.cc)
target_link_libraries(nr_phy_test target_link_libraries(nr_phy_test
@ -24,32 +25,31 @@ if (RF_FOUND AND ENABLE_SRSUE AND ENABLE_SRSENB)
${Boost_LIBRARIES} ${Boost_LIBRARIES}
${ATOMIC_LIBS}) ${ATOMIC_LIBS})
add_nr_test(nr_phy_test_10MHz_dl_default nr_phy_test add_nr_test(nr_phy_test_${NR_PHY_TEST_BW}_dl_default nr_phy_test
--reference=carrier=${NR_PHY_TEST_BW}
--duration=100 --duration=100
--gnb.stack.pdsch.slots=\"0,1,2,3,4,5\" --gnb.stack.pdsch.slots=0,1,2,3,4,5
--gnb.stack.pdsch.start=0 # Start at RB 0
--gnb.stack.pdsch.length=52 # Full 10 MHz BW
--gnb.stack.pdsch.mcs=28 # Maximum MCS
--gnb.stack.pusch.slots=none --gnb.stack.pusch.slots=none
--gnb.phy.nof_threads=${NR_PHY_TEST_GNB_NOF_THREADS} --gnb.phy.nof_threads=${NR_PHY_TEST_GNB_NOF_THREADS}
--ue.phy.nof_threads=${NR_PHY_TEST_UE_NOF_THREADS} --ue.phy.nof_threads=${NR_PHY_TEST_UE_NOF_THREADS}
) )
add_nr_test(nr_phy_test_10MHz_R.PDSCH.2-1.1_TDD nr_phy_test add_nr_test(nr_phy_test_${NR_PHY_TEST_BW}_ts38101/5.2-1 nr_phy_test
"--reference=pdsch=R.PDSCH.2-1.1 TDD" --reference=carrier=${NR_PHY_TEST_BW},pdsch=ts38101/5.2-1
--duration=100 --duration=100
--gnb.stack.pdsch.mcs=27 --gnb.stack.pdsch.mcs=27
--gnb.stack.pdsch.start=0 --gnb.stack.pdsch.start=0
--gnb.stack.pdsch.length=52 --gnb.stack.pdsch.length=52
--gnb.stack.pdsch.slots=\"0,1,2,3,4,5\" --gnb.stack.pdsch.slots=0,1,2,3,4,5
--gnb.stack.pusch.slots=\"\" --gnb.stack.pusch.slots=none
--gnb.phy.nof_threads=${NR_PHY_TEST_GNB_NOF_THREADS} --gnb.phy.nof_threads=${NR_PHY_TEST_GNB_NOF_THREADS}
--ue.phy.nof_threads=${NR_PHY_TEST_UE_NOF_THREADS} --ue.phy.nof_threads=${NR_PHY_TEST_UE_NOF_THREADS}
) )
add_nr_test(nr_phy_test_10MHz_ul_only nr_phy_test add_nr_test(nr_phy_test_${NR_PHY_TEST_BW}_ul_only nr_phy_test
--reference=carrier=${NR_PHY_TEST_BW}
--duration=100 # 100 slots --duration=100 # 100 slots
--gnb.stack.pdsch.slots=none --gnb.stack.pdsch.slots=6 # No PDSCH
--gnb.stack.pusch.slots=6,7,8,9 # All possible UL slots --gnb.stack.pusch.slots=6,7,8,9 # All possible UL slots
--gnb.stack.pusch.start=0 # Start at RB 0 --gnb.stack.pusch.start=0 # Start at RB 0
--gnb.stack.pusch.length=52 # Full 10 MHz BW --gnb.stack.pusch.length=52 # Full 10 MHz BW
@ -58,7 +58,8 @@ if (RF_FOUND AND ENABLE_SRSUE AND ENABLE_SRSENB)
--ue.phy.nof_threads=${NR_PHY_TEST_UE_NOF_THREADS} --ue.phy.nof_threads=${NR_PHY_TEST_UE_NOF_THREADS}
) )
add_nr_test(nr_phy_test_10MHz_bidir nr_phy_test add_nr_test(nr_phy_test_${NR_PHY_TEST_BW}_bidir nr_phy_test
--reference=carrier=${NR_PHY_TEST_BW}
--duration=100 # 100 slots --duration=100 # 100 slots
--gnb.stack.pdsch.slots=0,1,2,3,4,5 # All possible DL slots --gnb.stack.pdsch.slots=0,1,2,3,4,5 # All possible DL slots
--gnb.stack.pdsch.start=0 # Start at RB 0 --gnb.stack.pdsch.start=0 # Start at RB 0
@ -87,7 +88,8 @@ if (RF_FOUND AND ENABLE_SRSUE AND ENABLE_SRSENB)
--ue.phy.nof_threads=${NR_PHY_TEST_UE_NOF_THREADS} --ue.phy.nof_threads=${NR_PHY_TEST_UE_NOF_THREADS}
) )
add_nr_test(nr_phy_test_10MHz_prach nr_phy_test add_nr_test(nr_phy_test_${NR_PHY_TEST_BW}_prach nr_phy_test
--reference=carrier=${NR_PHY_TEST_BW}
--duration=1000 # 100 slots --duration=1000 # 100 slots
--gnb.stack.pdsch.slots=none # No PDSCH --gnb.stack.pdsch.slots=none # No PDSCH
--gnb.stack.pusch.slots=none # No PUSCH --gnb.stack.pusch.slots=none # No PUSCH
@ -96,25 +98,4 @@ if (RF_FOUND AND ENABLE_SRSUE AND ENABLE_SRSENB)
--ue.stack.prach.preamble=10 # Use preamble 10 --ue.stack.prach.preamble=10 # Use preamble 10
--ue.phy.nof_threads=${NR_PHY_TEST_UE_NOF_THREADS} --ue.phy.nof_threads=${NR_PHY_TEST_UE_NOF_THREADS}
) )
add_nr_test(nr_phy_test_10MHz_sr nr_phy_test
--duration=1000 # 100 slots
--gnb.stack.pdsch.slots=none # No PDSCH
--gnb.stack.pusch.slots=none # No PUSCH
--gnb.phy.nof_threads=${NR_PHY_TEST_GNB_NOF_THREADS}
--ue.stack.sr.period=1 # Transmit SR every candidate
--ue.phy.nof_threads=${NR_PHY_TEST_UE_NOF_THREADS}
)
add_nr_test(nr_phy_test_10MHz_dl_sr nr_phy_test
--duration=100
--gnb.stack.pdsch.slots=\"0,1,2,3,4,5\"
--gnb.stack.pdsch.start=0 # Start at RB 0
--gnb.stack.pdsch.length=2 # Full 10 MHz BW
--gnb.stack.pdsch.mcs=1 # Minimum MCS
--gnb.stack.pusch.slots=none
--gnb.phy.nof_threads=${NR_PHY_TEST_GNB_NOF_THREADS}
--ue.stack.sr.period=1 # Transmit SR every candidate
--ue.phy.nof_threads=${NR_PHY_TEST_UE_NOF_THREADS}
)
endif () endif ()