Added gaussian filter configuration options in srsue.conf
This commit is contained in:
parent
d0d5893a1c
commit
15173c5c30
|
@ -487,9 +487,11 @@ typedef struct {
|
|||
uint32_t cfo_loop_pss_conv;
|
||||
uint32_t cfo_ref_mask;
|
||||
bool average_subframe_enabled;
|
||||
int time_correct_period;
|
||||
bool estimator_fil_auto;
|
||||
float estimator_fil_stddev;
|
||||
uint32_t estimator_fil_order;
|
||||
int time_correct_period;
|
||||
std::string sss_algorithm;
|
||||
float estimator_fil_w;
|
||||
bool rssi_sensor_enabled;
|
||||
bool sic_pss_enabled;
|
||||
float rx_gain_offset;
|
||||
|
|
|
@ -592,9 +592,6 @@ float chest_estimate_cfo(srslte_chest_dl_t *q)
|
|||
}
|
||||
|
||||
void chest_interpolate_noise_est(srslte_chest_dl_t *q, cf_t *input, cf_t *ce, uint32_t sf_idx, uint32_t port_id, uint32_t rxant_id, srslte_sf_t ch_mode){
|
||||
uint32_t npilots = SRSLTE_REFSIGNAL_NUM_SF(q->cell.nof_prb, port_id);
|
||||
uint32_t nsymbols = (ch_mode == SRSLTE_SF_MBSFN)?srslte_refsignal_mbsfn_nof_symbols():srslte_refsignal_cs_nof_symbols(port_id);
|
||||
|
||||
if (q->cfo_estimate_enable && ((1<<sf_idx) & q->cfo_estimate_sf_mask)) {
|
||||
q->cfo = chest_estimate_cfo(q);
|
||||
}
|
||||
|
|
|
@ -261,6 +261,18 @@ void parse_args(all_args_t *args, int argc, char *argv[]) {
|
|||
bpo::value<bool>(&args->expert.phy.average_subframe_enabled)->default_value(true),
|
||||
"Averages in the time domain the channel estimates within 1 subframe. Needs accurate CFO correction.")
|
||||
|
||||
("expert.estimator_fil_auto",
|
||||
bpo::value<bool>(&args->expert.phy.estimator_fil_auto)->default_value(false),
|
||||
"The channel estimator smooths the channel estimate with an adaptative filter.")
|
||||
|
||||
("expert.estimator_fil_stddev",
|
||||
bpo::value<float>(&args->expert.phy.estimator_fil_stddev)->default_value(1.0f),
|
||||
"Sets the channel estimator smooth gaussian filter standard deviation.")
|
||||
|
||||
("expert.estimator_fil_order",
|
||||
bpo::value<uint32_t>(&args->expert.phy.estimator_fil_order)->default_value(4),
|
||||
"Sets the channel estimator smooth gaussian filter order (even values perform better).")
|
||||
|
||||
("expert.time_correct_period",
|
||||
bpo::value<int>(&args->expert.phy.time_correct_period)->default_value(5),
|
||||
"Period for sampling time offset correction.")
|
||||
|
@ -269,10 +281,6 @@ void parse_args(all_args_t *args, int argc, char *argv[]) {
|
|||
bpo::value<string>(&args->expert.phy.sss_algorithm)->default_value("full"),
|
||||
"Selects the SSS estimation algorithm.")
|
||||
|
||||
("expert.estimator_fil_w",
|
||||
bpo::value<float>(&args->expert.phy.estimator_fil_w)->default_value(0.1),
|
||||
"Chooses the coefficients for the 3-tap channel estimator centered filter.")
|
||||
|
||||
("expert.pdsch_csi_enabled",
|
||||
bpo::value<bool>(&args->expert.phy.pdsch_csi_enabled)->default_value(false),
|
||||
"Stores the Channel State Information and uses it for weightening the softbits. It is only compatible with TM1.")
|
||||
|
|
|
@ -441,13 +441,11 @@ bool phch_worker::extract_fft_and_pdcch_llr() {
|
|||
if (phy->get_pending_ack(tti) || decode_pdcch) {
|
||||
|
||||
// Setup estimator filter
|
||||
float w_coeff = phy->args->estimator_fil_w;
|
||||
if (w_coeff > 0.0) {
|
||||
srslte_chest_dl_set_smooth_filter3_coeff(&ue_dl.chest, w_coeff);
|
||||
} else if (w_coeff == 0.0) {
|
||||
srslte_chest_dl_set_smooth_filter(&ue_dl.chest, NULL, 0);
|
||||
}
|
||||
|
||||
srslte_chest_dl_set_smooth_filter_gauss(&ue_dl.chest,
|
||||
phy->args->estimator_fil_order,
|
||||
phy->args->estimator_fil_stddev);
|
||||
srslte_chest_dl_set_smooth_filter_auto(&ue_dl.chest, phy->args->estimator_fil_auto);
|
||||
|
||||
if (!phy->args->snr_estim_alg.compare("refs")) {
|
||||
srslte_chest_dl_set_noise_alg(&ue_dl.chest, SRSLTE_NOISE_ALG_REFS);
|
||||
} else if (!phy->args->snr_estim_alg.compare("empty")) {
|
||||
|
|
|
@ -98,7 +98,9 @@ void phy::set_default_args(phy_args_t *args)
|
|||
args->cfo_correct_tol_hz = 50;
|
||||
args->time_correct_period = 5;
|
||||
args->sss_algorithm = "full";
|
||||
args->estimator_fil_w = 0.1;
|
||||
args->estimator_fil_auto = false;
|
||||
args->estimator_fil_stddev = 1.0f;
|
||||
args->estimator_fil_order = 4;
|
||||
}
|
||||
|
||||
bool phy::check_args(phy_args_t *args)
|
||||
|
@ -107,10 +109,6 @@ bool phy::check_args(phy_args_t *args)
|
|||
log_h->console("Error in PHY args: nof_phy_threads must be 1, 2 or 3\n");
|
||||
return false;
|
||||
}
|
||||
if (args->estimator_fil_w > 1.0) {
|
||||
log_h->console("Error in PHY args: estimator_fil_w must be 0<=w<=1\n");
|
||||
return false;
|
||||
}
|
||||
if (args->snr_ema_coeff > 1.0) {
|
||||
log_h->console("Error in PHY args: snr_ema_coeff must be 0<=w<=1\n");
|
||||
return false;
|
||||
|
|
|
@ -150,7 +150,9 @@ enable = false
|
|||
# sampling frequency offset. Default is enabled.
|
||||
# sss_algorithm: Selects the SSS estimation algorithm. Can choose between
|
||||
# {full, partial, diff}.
|
||||
# estimator_fil_w: Chooses the coefficients for the 3-tap channel estimator centered filter.
|
||||
# estimator_fil_auto: The channel estimator smooths the channel estimate with an adaptative filter.
|
||||
# estimator_fil_stddev: Sets the channel estimator smooth gaussian filter standard deviation.
|
||||
# estimator_fil_order: Sets the channel estimator smooth gaussian filter order (even values perform better).
|
||||
# The taps are [w, 1-2w, w]
|
||||
# metrics_period_secs: Sets the period at which metrics are requested from the UE.
|
||||
#
|
||||
|
@ -204,7 +206,9 @@ enable = false
|
|||
#time_correct_period = 5
|
||||
#sfo_correct_disable = false
|
||||
#sss_algorithm = full
|
||||
#estimator_fil_w = 0.1
|
||||
#estimator_fil_auto = false
|
||||
#estimator_fil_stddev = 1.0
|
||||
#estimator_fil_order = 4
|
||||
#average_subframe_enabled = true
|
||||
#sic_pss_enabled = true
|
||||
#pregenerate_signals = false
|
||||
|
|
Loading…
Reference in New Issue