Minor fixes
- removing "Nsymb_pusch" and "Nsc_pusch" from "NR_UE_ULSCH_t" - using "number_of_symbols" from "NR_UL_UE_HARQ_t" instead - removing "generate_ue_ulsch_params"
This commit is contained in:
committed by
Thomas Schlichter
parent
b10cc48351
commit
b7733bae40
@@ -1055,18 +1055,6 @@ int nr_ulsch_encoding(NR_UE_ULSCH_t *ulsch,
|
|||||||
NR_DL_FRAME_PARMS* frame_parms,
|
NR_DL_FRAME_PARMS* frame_parms,
|
||||||
uint8_t harq_pid);
|
uint8_t harq_pid);
|
||||||
|
|
||||||
/*! \brief Fill up NR_UE_ULSCH_t and NR_UL_UE_HARQ_t structs
|
|
||||||
@param[in] UE, Pointer to PHY_VARS_NR_UE struct
|
|
||||||
@param[in] thread_id, thread id
|
|
||||||
@param[in] gNB_id, gNB id
|
|
||||||
@param[in] harq_pid, harq id
|
|
||||||
*/
|
|
||||||
|
|
||||||
int generate_ue_ulsch_params(PHY_VARS_NR_UE *UE,
|
|
||||||
uint8_t thread_id,
|
|
||||||
int gNB_id,
|
|
||||||
unsigned char harq_pid);
|
|
||||||
|
|
||||||
/*! \brief Perform PUSCH scrambling. TS 38.211 V15.4.0 subclause 6.3.1.1
|
/*! \brief Perform PUSCH scrambling. TS 38.211 V15.4.0 subclause 6.3.1.1
|
||||||
@param[in] in, Pointer to input bits
|
@param[in] in, Pointer to input bits
|
||||||
@param[in] size, of input bits
|
@param[in] size, of input bits
|
||||||
|
|||||||
@@ -159,10 +159,6 @@ typedef struct {
|
|||||||
} NR_UL_UE_HARQ_t;
|
} NR_UL_UE_HARQ_t;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
/// Current Number of Symbols
|
|
||||||
uint8_t Nsymb_pusch;
|
|
||||||
/// Nsc_pusch, number of allocated subcarriers for ULSCH
|
|
||||||
uint16_t Nsc_pusch;
|
|
||||||
/// number of DMRS resource elements
|
/// number of DMRS resource elements
|
||||||
uint8_t nb_re_dmrs;
|
uint8_t nb_re_dmrs;
|
||||||
/// DMRS length
|
/// DMRS length
|
||||||
|
|||||||
@@ -46,73 +46,6 @@
|
|||||||
//#define DEBUG_PUSCH_MAPPING
|
//#define DEBUG_PUSCH_MAPPING
|
||||||
|
|
||||||
|
|
||||||
int generate_ue_ulsch_params(PHY_VARS_NR_UE *UE,
|
|
||||||
uint8_t thread_id,
|
|
||||||
int gNB_id,
|
|
||||||
unsigned char harq_pid){
|
|
||||||
|
|
||||||
int N_PRB_oh, N_RE_prime, cwd_idx, length_dmrs, Nid_cell;
|
|
||||||
int nb_rb, Nsymb_pusch, first_rb, nb_codewords,mcs,rvidx;
|
|
||||||
uint16_t n_rnti;
|
|
||||||
|
|
||||||
NR_UE_ULSCH_t *ulsch_ue;
|
|
||||||
NR_UL_UE_HARQ_t *harq_process_ul_ue;
|
|
||||||
|
|
||||||
LOG_W(PHY,"This function should not be used. Use FAPI interfaces instead\n");
|
|
||||||
|
|
||||||
//--------------------------Temporary configuration-----------------------------//
|
|
||||||
length_dmrs = 1;
|
|
||||||
n_rnti = 0x1234;
|
|
||||||
Nid_cell = 0;
|
|
||||||
nb_rb = 50;
|
|
||||||
first_rb = 30;
|
|
||||||
Nsymb_pusch = 12;
|
|
||||||
nb_codewords = 1;
|
|
||||||
mcs = 9;
|
|
||||||
rvidx = 0;
|
|
||||||
//------------------------------------------------------------------------------//
|
|
||||||
|
|
||||||
for (cwd_idx = 0; cwd_idx < nb_codewords; cwd_idx++) {
|
|
||||||
|
|
||||||
ulsch_ue = UE->ulsch[thread_id][gNB_id][cwd_idx];
|
|
||||||
harq_process_ul_ue = ulsch_ue->harq_processes[harq_pid];
|
|
||||||
|
|
||||||
ulsch_ue->length_dmrs = length_dmrs;
|
|
||||||
ulsch_ue->rnti = n_rnti;
|
|
||||||
ulsch_ue->Nid_cell = Nid_cell;
|
|
||||||
ulsch_ue->Nsc_pusch = nb_rb*NR_NB_SC_PER_RB;
|
|
||||||
ulsch_ue->Nsymb_pusch = Nsymb_pusch;
|
|
||||||
ulsch_ue->nb_re_dmrs = UE->dmrs_UplinkConfig.pusch_maxLength*(UE->dmrs_UplinkConfig.pusch_dmrs_type == pusch_dmrs_type1)?6:4;
|
|
||||||
|
|
||||||
|
|
||||||
N_PRB_oh = 0; // higher layer (RRC) parameter xOverhead in PUSCH-ServingCellConfig
|
|
||||||
N_RE_prime = NR_NB_SC_PER_RB*Nsymb_pusch - ulsch_ue->nb_re_dmrs - N_PRB_oh;
|
|
||||||
|
|
||||||
if (harq_process_ul_ue) {
|
|
||||||
|
|
||||||
harq_process_ul_ue->mcs = mcs;
|
|
||||||
harq_process_ul_ue->Nl = nb_codewords;
|
|
||||||
harq_process_ul_ue->nb_rb = nb_rb;
|
|
||||||
harq_process_ul_ue->first_rb = first_rb;
|
|
||||||
harq_process_ul_ue->number_of_symbols = Nsymb_pusch;
|
|
||||||
harq_process_ul_ue->num_of_mod_symbols = N_RE_prime*nb_rb*nb_codewords;
|
|
||||||
harq_process_ul_ue->rvidx = rvidx;
|
|
||||||
harq_process_ul_ue->TBS = nr_compute_tbs(harq_process_ul_ue->mcs,
|
|
||||||
nb_rb,
|
|
||||||
Nsymb_pusch,
|
|
||||||
ulsch_ue->nb_re_dmrs,
|
|
||||||
length_dmrs,
|
|
||||||
harq_process_ul_ue->Nl);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void nr_pusch_codeword_scrambling(uint8_t *in,
|
void nr_pusch_codeword_scrambling(uint8_t *in,
|
||||||
uint16_t size,
|
uint16_t size,
|
||||||
uint32_t Nid,
|
uint32_t Nid,
|
||||||
@@ -196,15 +129,13 @@ uint8_t nr_ue_ulsch_procedures(PHY_VARS_NR_UE *UE,
|
|||||||
ulsch_ue->length_dmrs = length_dmrs;
|
ulsch_ue->length_dmrs = length_dmrs;
|
||||||
ulsch_ue->rnti = n_rnti;
|
ulsch_ue->rnti = n_rnti;
|
||||||
ulsch_ue->Nid_cell = Nid_cell;
|
ulsch_ue->Nid_cell = Nid_cell;
|
||||||
ulsch_ue->Nsc_pusch = harq_process_ul_ue->nb_rb*NR_NB_SC_PER_RB;
|
|
||||||
ulsch_ue->Nsymb_pusch = harq_process_ul_ue->number_of_symbols;
|
|
||||||
ulsch_ue->nb_re_dmrs = UE->dmrs_UplinkConfig.pusch_maxLength*(UE->dmrs_UplinkConfig.pusch_dmrs_type == pusch_dmrs_type1)?6:4;
|
ulsch_ue->nb_re_dmrs = UE->dmrs_UplinkConfig.pusch_maxLength*(UE->dmrs_UplinkConfig.pusch_dmrs_type == pusch_dmrs_type1)?6:4;
|
||||||
|
|
||||||
N_RE_prime = NR_NB_SC_PER_RB*harq_process_ul_ue->number_of_symbols - ulsch_ue->nb_re_dmrs - N_PRB_oh;
|
N_RE_prime = NR_NB_SC_PER_RB*harq_process_ul_ue->number_of_symbols - ulsch_ue->nb_re_dmrs - N_PRB_oh;
|
||||||
|
|
||||||
harq_process_ul_ue->num_of_mod_symbols = N_RE_prime*harq_process_ul_ue->nb_rb*num_of_codewords;
|
harq_process_ul_ue->num_of_mod_symbols = N_RE_prime*harq_process_ul_ue->nb_rb*num_of_codewords;
|
||||||
|
|
||||||
TBS = nr_compute_tbs( harq_process_ul_ue->mcs, harq_process_ul_ue->nb_rb, ulsch_ue->Nsymb_pusch, ulsch_ue->nb_re_dmrs, ulsch_ue->length_dmrs, harq_process_ul_ue->Nl);
|
TBS = nr_compute_tbs( harq_process_ul_ue->mcs, harq_process_ul_ue->nb_rb, harq_process_ul_ue->number_of_symbols, ulsch_ue->nb_re_dmrs, ulsch_ue->length_dmrs, harq_process_ul_ue->Nl);
|
||||||
|
|
||||||
harq_process_ul_ue->TBS = TBS;
|
harq_process_ul_ue->TBS = TBS;
|
||||||
|
|
||||||
@@ -223,7 +154,7 @@ uint8_t nr_ue_ulsch_procedures(PHY_VARS_NR_UE *UE,
|
|||||||
mod_order = nr_get_Qm(harq_process_ul_ue->mcs, 1);
|
mod_order = nr_get_Qm(harq_process_ul_ue->mcs, 1);
|
||||||
|
|
||||||
available_bits = nr_get_G(harq_process_ul_ue->nb_rb,
|
available_bits = nr_get_G(harq_process_ul_ue->nb_rb,
|
||||||
ulsch_ue->Nsymb_pusch,
|
harq_process_ul_ue->number_of_symbols,
|
||||||
ulsch_ue->nb_re_dmrs,
|
ulsch_ue->nb_re_dmrs,
|
||||||
ulsch_ue->length_dmrs,
|
ulsch_ue->length_dmrs,
|
||||||
mod_order,
|
mod_order,
|
||||||
@@ -260,7 +191,7 @@ uint8_t nr_ue_ulsch_procedures(PHY_VARS_NR_UE *UE,
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
start_symbol = 14 - ulsch_ue->Nsymb_pusch;
|
start_symbol = 14 - harq_process_ul_ue->number_of_symbols;
|
||||||
|
|
||||||
/////////////////////////DMRS Modulation/////////////////////////
|
/////////////////////////DMRS Modulation/////////////////////////
|
||||||
///////////
|
///////////
|
||||||
@@ -303,7 +234,7 @@ uint8_t nr_ue_ulsch_procedures(PHY_VARS_NR_UE *UE,
|
|||||||
uint32_t nb_re_pusch, nb_re_dmrs_per_rb;
|
uint32_t nb_re_pusch, nb_re_dmrs_per_rb;
|
||||||
uint32_t y_offset = 0;
|
uint32_t y_offset = 0;
|
||||||
|
|
||||||
for (l = start_symbol; l < start_symbol + ulsch_ue->Nsymb_pusch; l++) {
|
for (l = start_symbol; l < start_symbol + harq_process_ul_ue->number_of_symbols; l++) {
|
||||||
|
|
||||||
if(l == dmrs_symbol)
|
if(l == dmrs_symbol)
|
||||||
nb_re_dmrs_per_rb = ulsch_ue->nb_re_dmrs; // [hna] ulsch_ue->nb_re_dmrs = 6 in this configuration
|
nb_re_dmrs_per_rb = ulsch_ue->nb_re_dmrs; // [hna] ulsch_ue->nb_re_dmrs = 6 in this configuration
|
||||||
@@ -347,7 +278,7 @@ uint8_t nr_ue_ulsch_procedures(PHY_VARS_NR_UE *UE,
|
|||||||
uint8_t k_prime=0;
|
uint8_t k_prime=0;
|
||||||
uint16_t m=0, n=0, dmrs_idx=0, k=0;
|
uint16_t m=0, n=0, dmrs_idx=0, k=0;
|
||||||
|
|
||||||
for (l=start_symbol; l<start_symbol+ulsch_ue->Nsymb_pusch; l++) {
|
for (l=start_symbol; l<start_symbol+harq_process_ul_ue->number_of_symbols; l++) {
|
||||||
|
|
||||||
k = start_sc;
|
k = start_sc;
|
||||||
|
|
||||||
|
|||||||
@@ -2495,12 +2495,12 @@ void phy_procedures_nrUE_TX(PHY_VARS_NR_UE *ue,
|
|||||||
ulsch_ue = ue->ulsch[thread_id][gNB_id][0]; // cwd_index = 0
|
ulsch_ue = ue->ulsch[thread_id][gNB_id][0]; // cwd_index = 0
|
||||||
harq_process_ul_ue = ulsch_ue->harq_processes[harq_pid];
|
harq_process_ul_ue = ulsch_ue->harq_processes[harq_pid];
|
||||||
|
|
||||||
TBS = nr_compute_tbs( harq_process_ul_ue->mcs, harq_process_ul_ue->nb_rb, ulsch_ue->Nsymb_pusch, ulsch_ue->nb_re_dmrs, ulsch_ue->length_dmrs, harq_process_ul_ue->Nl);
|
TBS = nr_compute_tbs( harq_process_ul_ue->mcs, harq_process_ul_ue->nb_rb, harq_process_ul_ue->number_of_symbols, ulsch_ue->nb_re_dmrs, ulsch_ue->length_dmrs, harq_process_ul_ue->Nl);
|
||||||
|
|
||||||
LOG_I(PHY, "[phy_procedures_nrUE_TX] mcs = %d, nb_rb = %d \n , Nsymb_pusch = %d, nb_re_dmrs = %d, length_dmrs = %d, precod_nbr_layers = %d, TBS = %d\n",
|
LOG_I(PHY, "[phy_procedures_nrUE_TX] mcs = %d, nb_rb = %d \n , Nsymb_pusch = %d, nb_re_dmrs = %d, length_dmrs = %d, precod_nbr_layers = %d, TBS = %d\n",
|
||||||
harq_process_ul_ue->mcs,
|
harq_process_ul_ue->mcs,
|
||||||
harq_process_ul_ue->nb_rb,
|
harq_process_ul_ue->nb_rb,
|
||||||
ulsch_ue->Nsymb_pusch,
|
harq_process_ul_ue->number_of_symbols,
|
||||||
ulsch_ue->nb_re_dmrs,
|
ulsch_ue->nb_re_dmrs,
|
||||||
ulsch_ue->length_dmrs,
|
ulsch_ue->length_dmrs,
|
||||||
harq_process_ul_ue->Nl,
|
harq_process_ul_ue->Nl,
|
||||||
|
|||||||
Reference in New Issue
Block a user