Skip to content

Commit 7bcfaae

Browse files
committed
app: set default PRACH index for FDD and TDD
1 parent 0fefca5 commit 7bcfaae

File tree

5 files changed

+21
-19
lines changed

5 files changed

+21
-19
lines changed

apps/gnb/gnb_appconfig_translators.cpp

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1445,18 +1445,13 @@ static void derive_cell_auto_params(base_cell_appconfig& cell_cfg)
14451445
cell_cfg.tdd_ul_dl_cfg->pattern1.nof_ul_symbols = 0;
14461446
}
14471447

1448-
// If PRACH configuration Index not set, derive a valid one.
1448+
// If PRACH configuration Index not set, a default one is assigned.
14491449
if (not cell_cfg.prach_cfg.prach_config_index.has_value()) {
14501450
if (band_helper::get_duplex_mode(cell_cfg.band.value()) == duplex_mode::FDD) {
1451-
cell_cfg.prach_cfg.prach_config_index = 1;
1451+
cell_cfg.prach_cfg.prach_config_index = 16;
14521452
} else {
1453-
// TDD case. Ensure the PRACH falls in UL slots.
1454-
optional<uint8_t> index_found = prach_helper::find_valid_prach_config_index(
1455-
cell_cfg.common_scs, generate_tdd_pattern(cell_cfg.common_scs, cell_cfg.tdd_ul_dl_cfg.value()));
1456-
if (not index_found.has_value()) {
1457-
report_error("Failed to auto-derive PRACH configuration index");
1458-
}
1459-
cell_cfg.prach_cfg.prach_config_index = *index_found;
1453+
// Valid for TDD period of 5 ms. And, PRACH index 159 is well tested.
1454+
cell_cfg.prach_cfg.prach_config_index = 159;
14601455
}
14611456
}
14621457
}

apps/gnb/gnb_appconfig_validators.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,7 @@ static bool validate_pucch_cell_app_config(const base_cell_appconfig& config)
206206
/// Validates the given PRACH cell application configuration. Returns true on success, otherwise false.
207207
static bool validate_prach_cell_app_config(const prach_appconfig& config, nr_band band)
208208
{
209-
srsran_assert(config.prach_config_index.has_value(), "The PRACH configuration index must be set or auto-derived.");
209+
srsran_assert(config.prach_config_index.has_value(), "The PRACH configuration index must be set.");
210210

211211
auto code =
212212
prach_helper::prach_config_index_is_valid(config.prach_config_index.value(), band_helper::get_duplex_mode(band));

include/srsran/ran/prach/prach_helper.h

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,9 @@ error_type<interval<uint8_t>>
3838
prach_fits_in_tdd_pattern(subcarrier_spacing pusch_scs, uint8_t prach_cfg_idx, const tdd_ul_dl_config_common& tdd_cfg);
3939

4040
/// \brief Finds a PRACH configuration index that ensures that PRACH falls in an TDD UL slot.
41-
optional<uint8_t> find_valid_prach_config_index(subcarrier_spacing pusch_scs, const tdd_ul_dl_config_common& tdd_cfg);
41+
optional<uint8_t> find_valid_prach_config_index(subcarrier_spacing pusch_scs,
42+
uint8_t zero_correlation_zone,
43+
const tdd_ul_dl_config_common& tdd_cfg);
4244

4345
} // namespace prach_helper
44-
} // namespace srsran
46+
} // namespace srsran

lib/ran/prach/prach_helper.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ error_type<std::string> srsran::prach_helper::zero_correlation_zone_is_valid(uin
5454
if ((prach_config.format == prach_format_type::B4) && (zero_correlation_zone != 0) &&
5555
(zero_correlation_zone != 14)) {
5656
return fmt::format(
57-
"PRACH Zero Correlation Zone index (i.e., {}) with Format B4 is not supported for FDD. Use 0 or 14.\n",
57+
"PRACH Zero Correlation Zone index (i.e., {}) with Format B4 is not supported for TDD. Use 0 or 14.\n",
5858
zero_correlation_zone);
5959
}
6060
}
@@ -93,14 +93,16 @@ error_type<interval<uint8_t>> srsran::prach_helper::prach_fits_in_tdd_pattern(su
9393
return {};
9494
}
9595

96-
optional<uint8_t> srsran::prach_helper::find_valid_prach_config_index(subcarrier_spacing pusch_scs,
96+
optional<uint8_t> srsran::prach_helper::find_valid_prach_config_index(subcarrier_spacing pusch_scs,
97+
uint8_t zero_correlation_zone,
9798
const tdd_ul_dl_config_common& tdd_cfg)
9899
{
99100
static constexpr size_t NOF_PRACH_CONFIG_INDEXES = 256;
100101

101102
// Iterate over different PRACH configuration indexes until a valid one is found.
102103
for (unsigned prach_cfg_idx = 0; prach_cfg_idx != NOF_PRACH_CONFIG_INDEXES; ++prach_cfg_idx) {
103104
if (prach_config_index_is_valid(prach_cfg_idx, duplex_mode::TDD).has_value() and
105+
zero_correlation_zone_is_valid(zero_correlation_zone, prach_cfg_idx, duplex_mode::TDD).has_value() and
104106
prach_fits_in_tdd_pattern(pusch_scs, prach_cfg_idx, tdd_cfg).has_value()) {
105107
return prach_cfg_idx;
106108
}

lib/scheduler/config/serving_cell_config_factory.cpp

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -338,10 +338,13 @@ srsran::config_helpers::make_default_ul_config_common(const cell_config_builder_
338338
cfg.freq_info_ul.freq_band_list.back().band = *params.band;
339339
cfg.init_ul_bwp.generic_params = make_default_init_bwp(params);
340340
cfg.init_ul_bwp.rach_cfg_common.emplace();
341-
cfg.init_ul_bwp.rach_cfg_common->rach_cfg_generic.prach_config_index = 1;
341+
cfg.init_ul_bwp.rach_cfg_common->rach_cfg_generic.zero_correlation_zone_config = 15;
342+
cfg.init_ul_bwp.rach_cfg_common->rach_cfg_generic.prach_config_index = 16;
342343
if (band_helper::get_duplex_mode(params.band.value()) == duplex_mode::TDD) {
343-
optional<uint8_t> idx_found =
344-
prach_helper::find_valid_prach_config_index(params.scs_common, *params.tdd_ul_dl_cfg_common);
344+
optional<uint8_t> idx_found = prach_helper::find_valid_prach_config_index(
345+
params.scs_common,
346+
cfg.init_ul_bwp.rach_cfg_common->rach_cfg_generic.zero_correlation_zone_config,
347+
*params.tdd_ul_dl_cfg_common);
345348
srsran_assert(idx_found.has_value(), "Unable to find a PRACH config index for the given TDD pattern");
346349
cfg.init_ul_bwp.rach_cfg_common->rach_cfg_generic.prach_config_index = idx_found.value();
347350
}
@@ -365,8 +368,8 @@ srsran::config_helpers::make_default_ul_config_common(const cell_config_builder_
365368
cfg.init_ul_bwp.rach_cfg_common->msg3_transform_precoder = false;
366369
cfg.init_ul_bwp.rach_cfg_common->rach_cfg_generic.msg1_fdm = 1;
367370
// Add +3 PRBS to the MSG1 frequency start, which act as a guardband between the PUCCH and PRACH.
368-
cfg.init_ul_bwp.rach_cfg_common->rach_cfg_generic.msg1_frequency_start = 6;
369-
cfg.init_ul_bwp.rach_cfg_common->rach_cfg_generic.zero_correlation_zone_config = 15;
371+
cfg.init_ul_bwp.rach_cfg_common->rach_cfg_generic.msg1_frequency_start = 6;
372+
370373
cfg.init_ul_bwp.rach_cfg_common->rach_cfg_generic.ra_resp_window = 10U << to_numerology_value(params.scs_common);
371374
cfg.init_ul_bwp.rach_cfg_common->rach_cfg_generic.preamble_rx_target_pw = -100;
372375
cfg.init_ul_bwp.pusch_cfg_common.emplace();

0 commit comments

Comments
 (0)