WIP: SRS configuration of PUSCH and PUCCH. No SRS detection yet. To be tested on HW
This commit is contained in:
@@ -320,7 +320,7 @@ typedef struct {
|
||||
uint16_t srs_ConfigIndex;
|
||||
/// Parameter: \f$n^\text{CS}_\text{SRS}\f$. See TS 36.211 (5.5.3.1). \vr{[0..7]} \note the specification sais it is an enumerated value.
|
||||
uint8_t cyclicShift;
|
||||
// Parameter: ue srs subframe for internal implementation
|
||||
// Parameter: internal implementation: UE SRS configured
|
||||
uint8_t srsConfigDedicatedSetup;
|
||||
// Parameter: cell srs subframe for internal implementation
|
||||
uint8_t srsCellSubframe;
|
||||
|
||||
@@ -514,6 +514,10 @@ void dump_dlsch_ra(PHY_VARS_UE *phy_vars_ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,
|
||||
void dump_dlsch2(PHY_VARS_UE *phy_vars_ue,uint8_t eNB_id,uint8_t subframe, uint16_t coded_bits_per_codeword,int round, unsigned char harq_pid);
|
||||
|
||||
|
||||
int is_srs_occasion_common(LTE_DL_FRAME_PARMS *frame_parms,int frame_tx,int subframe_tx);
|
||||
|
||||
void compute_srs_pos(lte_frame_type_t frameType,uint16_t isrs,uint16_t *psrsPeriodicity,uint16_t *psrsOffset);
|
||||
|
||||
/*@}*/
|
||||
|
||||
|
||||
|
||||
@@ -942,3 +942,148 @@ MU_MIMO_mode *get_mu_mimo_mode (module_id_t Mod_id, uint8_t CC_id, rnti_t rnti)
|
||||
|
||||
return &PHY_vars_eNB_g[Mod_id][CC_id]->mu_mimo_mode[UE_id];
|
||||
}
|
||||
|
||||
int is_srs_occasion_common(LTE_DL_FRAME_PARMS *frame_parms,int frame_tx,int subframe_tx)
|
||||
{
|
||||
uint8_t isSubframeSRS = 0; // SRS Cell Occasion
|
||||
|
||||
//ue->ulsch[eNB_id]->srs_active = 0;
|
||||
//ue->ulsch[eNB_id]->Nsymb_pusch = 12-(frame_parms->Ncp<<1)- ue->ulsch[eNB_id]->srs_active;
|
||||
if(frame_parms->soundingrs_ul_config_common.enabled_flag)
|
||||
{
|
||||
|
||||
LOG_D(PHY," SRS SUBFRAMECONFIG: %d\n", frame_parms->soundingrs_ul_config_common.srs_SubframeConfig);
|
||||
|
||||
uint8_t TSFC;
|
||||
uint16_t deltaTSFC; // bitmap
|
||||
uint8_t srs_SubframeConfig;
|
||||
|
||||
// table resuming TSFC (Period) and deltaSFC (offset)
|
||||
const uint16_t deltaTSFCTabType1[15][2] = { {1,1},{1,2},{2,2},{1,5},{2,5},{4,5},{8,5},{3,5},{12,5},{1,10},{2,10},{4,10},{8,10},{351,10},{383,10} }; // Table 5.5.3.3-2 3GPP 36.211 FDD
|
||||
const uint16_t deltaTSFCTabType2[14][2] = { {2,5},{6,5},{10,5},{18,5},{14,5},{22,5},{26,5},{30,5},{70,10},{74,10},{194,10},{326,10},{586,10},{210,10} }; // Table 5.5.3.3-2 3GPP 36.211 TDD
|
||||
|
||||
srs_SubframeConfig = frame_parms->soundingrs_ul_config_common.srs_SubframeConfig;
|
||||
if (FDD == frame_parms->frame_type)
|
||||
{
|
||||
// srs_SubframeConfig =< 14
|
||||
deltaTSFC = deltaTSFCTabType1[srs_SubframeConfig][0];
|
||||
TSFC = deltaTSFCTabType1[srs_SubframeConfig][1];
|
||||
}
|
||||
else
|
||||
{
|
||||
// srs_SubframeConfig =< 13
|
||||
deltaTSFC = deltaTSFCTabType2[srs_SubframeConfig][0];
|
||||
TSFC = deltaTSFCTabType2[srs_SubframeConfig][1];
|
||||
}
|
||||
|
||||
// Sounding reference signal subframes are the subframes satisfying ns/2 mod TSFC (- deltaTSFC
|
||||
uint16_t tmp = (subframe_tx % TSFC);
|
||||
if((1<<tmp) & deltaTSFC)
|
||||
{
|
||||
// This is a Sounding reference signal subframes
|
||||
isSubframeSRS = 1;
|
||||
}
|
||||
LOG_D(PHY," ISTDD: %d, TSFC: %d, deltaTSFC: %d, AbsSubframeTX: %d.%d\n", frame_parms->frame_type, TSFC, deltaTSFC, frame_tx, subframe_tx);
|
||||
}
|
||||
return(isSubframeSRS);
|
||||
}
|
||||
|
||||
void compute_srs_pos(lte_frame_type_t frameType,uint16_t isrs,uint16_t *psrsPeriodicity,uint16_t *psrsOffset)
|
||||
{
|
||||
if(TDD == frameType)
|
||||
{
|
||||
if(isrs<10)
|
||||
{
|
||||
mac_xface->macphy_exit("2 ms SRS periodicity not supported");
|
||||
}
|
||||
|
||||
if((isrs>9)&&(isrs<15))
|
||||
{
|
||||
*psrsPeriodicity=5;
|
||||
*psrsOffset=isrs-10;
|
||||
}
|
||||
if((isrs>14)&&(isrs<25))
|
||||
{
|
||||
*psrsPeriodicity=10;
|
||||
*psrsOffset=isrs-15;
|
||||
}
|
||||
if((isrs>24)&&(isrs<45))
|
||||
{
|
||||
*psrsPeriodicity=20;
|
||||
*psrsOffset=isrs-25;
|
||||
}
|
||||
if((isrs>44)&&(isrs<85))
|
||||
{
|
||||
*psrsPeriodicity=40;
|
||||
*psrsOffset=isrs-45;
|
||||
}
|
||||
if((isrs>84)&&(isrs<165))
|
||||
{
|
||||
*psrsPeriodicity=80;
|
||||
*psrsOffset=isrs-85;
|
||||
}
|
||||
if((isrs>164)&&(isrs<325))
|
||||
{
|
||||
*psrsPeriodicity=160;
|
||||
*psrsOffset=isrs-165;
|
||||
}
|
||||
if((isrs>324)&&(isrs<645))
|
||||
{
|
||||
*psrsPeriodicity=320;
|
||||
*psrsOffset=isrs-325;
|
||||
}
|
||||
|
||||
if(isrs>644)
|
||||
{
|
||||
mac_xface->macphy_exit("Isrs out of range");
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
if(isrs<2)
|
||||
{
|
||||
*psrsPeriodicity=2;
|
||||
*psrsOffset=isrs;
|
||||
}
|
||||
if((isrs>1)&&(isrs<7))
|
||||
{
|
||||
*psrsPeriodicity=5;
|
||||
*psrsOffset=isrs-2;
|
||||
}
|
||||
if((isrs>6)&&(isrs<17))
|
||||
{
|
||||
*psrsPeriodicity=10;
|
||||
*psrsOffset=isrs-7;
|
||||
}
|
||||
if((isrs>16)&&(isrs<37))
|
||||
{
|
||||
*psrsPeriodicity=20;
|
||||
*psrsOffset=isrs-17;
|
||||
}
|
||||
if((isrs>36)&&(isrs<77))
|
||||
{
|
||||
*psrsPeriodicity=40;
|
||||
*psrsOffset=isrs-37;
|
||||
}
|
||||
if((isrs>76)&&(isrs<157))
|
||||
{
|
||||
*psrsPeriodicity=80;
|
||||
*psrsOffset=isrs-77;
|
||||
}
|
||||
if((isrs>156)&&(isrs<317))
|
||||
{
|
||||
*psrsPeriodicity=160;
|
||||
*psrsOffset=isrs-157;
|
||||
}
|
||||
if((isrs>316)&&(isrs<637))
|
||||
{
|
||||
*psrsPeriodicity=320;
|
||||
*psrsOffset=isrs-317;
|
||||
}
|
||||
if(isrs>636)
|
||||
{
|
||||
mac_xface->macphy_exit("Isrs out of range");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -307,8 +307,6 @@ void phy_procedures_emos_eNB_TX(unsigned char subframe, PHY_VARS_eNB *eNB)
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
void phy_procedures_eNB_S_RX(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,relaying_type_t r_type)
|
||||
{
|
||||
UNUSED(r_type);
|
||||
@@ -824,6 +822,9 @@ void generate_eNB_ulsch_params(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,DCI_ALLOC
|
||||
LTE_DL_FRAME_PARMS *fp=&eNB->frame_parms;
|
||||
int frame = proc->frame_tx;
|
||||
int subframe = proc->subframe_tx;
|
||||
uint16_t srsPeriodicity;
|
||||
uint16_t srsOffset;
|
||||
uint16_t do_srs=0;
|
||||
|
||||
LOG_D(PHY,
|
||||
"[eNB %"PRIu8"][PUSCH %"PRIu8"] Frame %d subframe %d UL Frame %"PRIu32", UL Subframe %"PRIu8", Generated ULSCH (format0) DCI (rnti %"PRIx16", dci %"PRIx8"), aggregation %d\n",
|
||||
@@ -839,6 +840,12 @@ void generate_eNB_ulsch_params(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,DCI_ALLOC
|
||||
dci_alloc->dci_pdu[0],
|
||||
1<<dci_alloc->L);
|
||||
|
||||
if (is_srs_occasion_common(fp,frame,subframe)) {
|
||||
compute_srs_pos(fp->frame_type, eNB->physicalConfigDedicated[UE_id]->soundingRS_UL_ConfigDedicated->choice.setup.srs_ConfigIndex, &srsPeriodicity, &srsOffset);
|
||||
if ((((10*frame+subframe) % srsPeriodicity) == srsOffset))
|
||||
do_srs = 1;
|
||||
}
|
||||
|
||||
generate_eNB_ulsch_params_from_dci(eNB,
|
||||
proc,
|
||||
&dci_alloc->dci_pdu[0],
|
||||
@@ -849,7 +856,7 @@ void generate_eNB_ulsch_params(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,DCI_ALLOC
|
||||
0,
|
||||
P_RNTI,
|
||||
CBA_RNTI,
|
||||
0); // do_srs
|
||||
do_srs); // do_srs
|
||||
|
||||
LOG_T(PHY,"[eNB %"PRIu8"] Frame %d subframe %d : CCE resources for UE spec DCI (PUSCH %"PRIx16") => %d\n",
|
||||
eNB->Mod_id,frame,subframe,dci_alloc->rnti,
|
||||
@@ -1344,7 +1351,7 @@ void phy_procedures_eNB_TX(PHY_VARS_eNB *eNB,
|
||||
// Apply physicalConfigDedicated if needed
|
||||
// This is for UEs that have received this IE, which changes these DL and UL configuration, we apply after a delay for the eNodeB UL parameters
|
||||
phy_config_dedicated_eNB_step2(eNB);
|
||||
|
||||
|
||||
// Now loop again over the DCIs for UL configuration
|
||||
for (i=0; i<DCI_pdu->Num_common_dci + DCI_pdu->Num_ue_spec_dci ; i++) {
|
||||
dci_alloc = &DCI_pdu->dci_alloc[i];
|
||||
@@ -2083,6 +2090,9 @@ void pucch_procedures(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,int UE_id,int harq
|
||||
PUCCH_FMT_t format;
|
||||
const int subframe = proc->subframe_rx;
|
||||
const int frame = proc->frame_rx;
|
||||
uint16_t srsPeriodicity;
|
||||
uint16_t srsOffset;
|
||||
uint16_t do_srs=0;
|
||||
|
||||
if ((eNB->dlsch[UE_id][0]) &&
|
||||
(eNB->dlsch[UE_id][0]->rnti>0) &&
|
||||
@@ -2092,6 +2102,14 @@ void pucch_procedures(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,int UE_id,int harq
|
||||
do_SR = is_SR_subframe(eNB,proc,UE_id);
|
||||
// do_SR = 0;
|
||||
|
||||
// check if there is SRS and we have to use shortened format
|
||||
// TODO: check for exceptions in transmission of SRS together with ACK/NACK
|
||||
if (is_srs_occasion_common(fp,frame,subframe)) {
|
||||
compute_srs_pos(fp->frame_type, eNB->physicalConfigDedicated[UE_id]->soundingRS_UL_ConfigDedicated->choice.setup.srs_ConfigIndex, &srsPeriodicity, &srsOffset);
|
||||
if ((((10*frame+subframe) % srsPeriodicity) == srsOffset))
|
||||
do_srs = 1;
|
||||
}
|
||||
|
||||
// Now ACK/NAK
|
||||
// First check subframe_tx flag for earlier subframes
|
||||
|
||||
@@ -2150,7 +2168,7 @@ void pucch_procedures(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,int UE_id,int harq
|
||||
UE_id,
|
||||
eNB->scheduling_request_config[UE_id].sr_PUCCH_ResourceIndex,
|
||||
0, // n2_pucch
|
||||
0, // shortened format, should be use_srs flag, later
|
||||
do_srs, // shortened format
|
||||
&SR_payload,
|
||||
frame,
|
||||
subframe,
|
||||
@@ -2190,7 +2208,7 @@ void pucch_procedures(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,int UE_id,int harq
|
||||
UE_id,
|
||||
(uint16_t)n1_pucch0,
|
||||
0, //n2_pucch
|
||||
0, // shortened format
|
||||
do_srs, // shortened format
|
||||
pucch_payload0,
|
||||
frame,
|
||||
subframe,
|
||||
@@ -2220,7 +2238,7 @@ void pucch_procedures(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,int UE_id,int harq
|
||||
UE_id,
|
||||
eNB->scheduling_request_config[UE_id].sr_PUCCH_ResourceIndex,
|
||||
0, //n2_pucch
|
||||
0, // shortened format
|
||||
do_srs, // shortened format
|
||||
pucch_payload0,
|
||||
frame,
|
||||
subframe,
|
||||
@@ -2281,7 +2299,7 @@ void pucch_procedures(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,int UE_id,int harq
|
||||
UE_id,
|
||||
eNB->scheduling_request_config[UE_id].sr_PUCCH_ResourceIndex,
|
||||
0, //n2_pucch
|
||||
0, // shortened format
|
||||
do_srs, // shortened format
|
||||
pucch_payload0,
|
||||
frame,
|
||||
subframe,
|
||||
@@ -2313,7 +2331,7 @@ void pucch_procedures(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,int UE_id,int harq
|
||||
UE_id,
|
||||
(uint16_t)n1_pucch0,
|
||||
0, // n2_pucch
|
||||
0, // shortened format
|
||||
do_srs, // shortened format
|
||||
pucch_payload0,
|
||||
frame,
|
||||
subframe,
|
||||
@@ -2338,7 +2356,7 @@ void pucch_procedures(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,int UE_id,int harq
|
||||
UE_id,
|
||||
(uint16_t)n1_pucch1,
|
||||
0, //n2_pucch
|
||||
0, // shortened format
|
||||
do_srs, // shortened format
|
||||
pucch_payload1,
|
||||
frame,
|
||||
subframe,
|
||||
@@ -2886,8 +2904,6 @@ void phy_procedures_eNB_uespec_RX(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,const
|
||||
eNB->rb_mask_ul[2]=0;
|
||||
eNB->rb_mask_ul[3]=0;
|
||||
|
||||
|
||||
|
||||
// Check for active processes in current subframe
|
||||
harq_pid = subframe2harq_pid(fp,
|
||||
frame,subframe);
|
||||
|
||||
@@ -435,163 +435,26 @@ uint8_t is_ri_TXOp(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id)
|
||||
return(0);
|
||||
}
|
||||
|
||||
void compute_srs_pos(lte_frame_type_t frameType,uint16_t isrs,uint16_t *psrsPeriodicity,uint16_t *psrsOffset)
|
||||
|
||||
|
||||
void ue_compute_srs_occasion(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,uint8_t isSubframeSRS)
|
||||
{
|
||||
if(TDD == frameType)
|
||||
{
|
||||
if(isrs<10)
|
||||
{
|
||||
mac_xface->macphy_exit("2 ms SRS periodicity not supported");
|
||||
}
|
||||
|
||||
if((isrs>9)&&(isrs<15))
|
||||
{
|
||||
*psrsPeriodicity=5;
|
||||
*psrsOffset=isrs-10;
|
||||
}
|
||||
if((isrs>14)&&(isrs<25))
|
||||
{
|
||||
*psrsPeriodicity=10;
|
||||
*psrsOffset=isrs-15;
|
||||
}
|
||||
if((isrs>24)&&(isrs<45))
|
||||
{
|
||||
*psrsPeriodicity=20;
|
||||
*psrsOffset=isrs-25;
|
||||
}
|
||||
if((isrs>44)&&(isrs<85))
|
||||
{
|
||||
*psrsPeriodicity=40;
|
||||
*psrsOffset=isrs-45;
|
||||
}
|
||||
if((isrs>84)&&(isrs<165))
|
||||
{
|
||||
*psrsPeriodicity=80;
|
||||
*psrsOffset=isrs-85;
|
||||
}
|
||||
if((isrs>164)&&(isrs<325))
|
||||
{
|
||||
*psrsPeriodicity=160;
|
||||
*psrsOffset=isrs-165;
|
||||
}
|
||||
if((isrs>324)&&(isrs<645))
|
||||
{
|
||||
*psrsPeriodicity=320;
|
||||
*psrsOffset=isrs-325;
|
||||
}
|
||||
|
||||
if(isrs>644)
|
||||
{
|
||||
mac_xface->macphy_exit("Isrs out of range");
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
if(isrs<2)
|
||||
{
|
||||
*psrsPeriodicity=2;
|
||||
*psrsOffset=isrs;
|
||||
}
|
||||
if((isrs>1)&&(isrs<7))
|
||||
{
|
||||
*psrsPeriodicity=5;
|
||||
*psrsOffset=isrs-2;
|
||||
}
|
||||
if((isrs>6)&&(isrs<17))
|
||||
{
|
||||
*psrsPeriodicity=10;
|
||||
*psrsOffset=isrs-7;
|
||||
}
|
||||
if((isrs>16)&&(isrs<37))
|
||||
{
|
||||
*psrsPeriodicity=20;
|
||||
*psrsOffset=isrs-17;
|
||||
}
|
||||
if((isrs>36)&&(isrs<77))
|
||||
{
|
||||
*psrsPeriodicity=40;
|
||||
*psrsOffset=isrs-37;
|
||||
}
|
||||
if((isrs>76)&&(isrs<157))
|
||||
{
|
||||
*psrsPeriodicity=80;
|
||||
*psrsOffset=isrs-77;
|
||||
}
|
||||
if((isrs>156)&&(isrs<317))
|
||||
{
|
||||
*psrsPeriodicity=160;
|
||||
*psrsOffset=isrs-157;
|
||||
}
|
||||
if((isrs>316)&&(isrs<637))
|
||||
{
|
||||
*psrsPeriodicity=320;
|
||||
*psrsOffset=isrs-317;
|
||||
}
|
||||
if(isrs>636)
|
||||
{
|
||||
mac_xface->macphy_exit("Isrs out of range");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void ue_compute_srs_occasion(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id)
|
||||
{
|
||||
LTE_DL_FRAME_PARMS *frame_parms = &ue->frame_parms;
|
||||
int frame_tx = proc->frame_tx;
|
||||
int subframe_tx = proc->subframe_tx;
|
||||
uint8_t isSubframeSRS = 0; // SRS Cell Occasion
|
||||
|
||||
uint8_t is_pucch2_subframe = 0;
|
||||
uint8_t is_sr_an_subframe = 0;
|
||||
|
||||
SOUNDINGRS_UL_CONFIG_DEDICATED *pSoundingrs_ul_config_dedicated=&ue->soundingrs_ul_config_dedicated[eNB_id];
|
||||
|
||||
LTE_DL_FRAME_PARMS *frame_parms = &ue->frame_parms;
|
||||
int frame_tx = proc->frame_tx;
|
||||
int subframe_tx = proc->subframe_tx;
|
||||
SOUNDINGRS_UL_CONFIG_DEDICATED *pSoundingrs_ul_config_dedicated=&ue->soundingrs_ul_config_dedicated[eNB_id];
|
||||
uint16_t srsPeriodicity;
|
||||
uint16_t srsOffset;
|
||||
uint8_t is_pucch2_subframe = 0;
|
||||
uint8_t is_sr_an_subframe = 0;
|
||||
|
||||
// check for SRS opportunity
|
||||
pSoundingrs_ul_config_dedicated->srsUeSubframe = 0;
|
||||
pSoundingrs_ul_config_dedicated->srsCellSubframe = 0;
|
||||
pSoundingrs_ul_config_dedicated->srsCellSubframe = isSubframeSRS;
|
||||
|
||||
ue->ulsch[eNB_id]->srs_active = 0;
|
||||
ue->ulsch[eNB_id]->Nsymb_pusch = 12-(frame_parms->Ncp<<1)- ue->ulsch[eNB_id]->srs_active;
|
||||
if(frame_parms->soundingrs_ul_config_common.enabled_flag)
|
||||
{
|
||||
|
||||
LOG_D(PHY," SRS SUBFRAMECONFIG: %d, Isrs: %d \n", frame_parms->soundingrs_ul_config_common.srs_SubframeConfig, pSoundingrs_ul_config_dedicated->srs_ConfigIndex);
|
||||
|
||||
uint8_t TSFC;
|
||||
uint16_t deltaTSFC; // bitmap
|
||||
uint8_t srs_SubframeConfig;
|
||||
uint16_t srsPeriodicity;
|
||||
uint16_t srsOffset;
|
||||
|
||||
// table resuming TSFC (Period) and deltaSFC (offset)
|
||||
const uint16_t deltaTSFCTabType1[15][2] = { {1,1},{1,2},{2,2},{1,5},{2,5},{4,5},{8,5},{3,5},{12,5},{1,10},{2,10},{4,10},{8,10},{351,10},{383,10} }; // Table 5.5.3.3-2 3GPP 36.211 FDD
|
||||
const uint16_t deltaTSFCTabType2[14][2] = { {2,5},{6,5},{10,5},{18,5},{14,5},{22,5},{26,5},{30,5},{70,10},{74,10},{194,10},{326,10},{586,10},{210,10} }; // Table 5.5.3.3-2 3GPP 36.211 TDD
|
||||
|
||||
srs_SubframeConfig = frame_parms->soundingrs_ul_config_common.srs_SubframeConfig;
|
||||
if (FDD == frame_parms->frame_type)
|
||||
{
|
||||
// srs_SubframeConfig =< 14
|
||||
deltaTSFC = deltaTSFCTabType1[srs_SubframeConfig][0];
|
||||
TSFC = deltaTSFCTabType1[srs_SubframeConfig][1];
|
||||
}
|
||||
else
|
||||
{
|
||||
// srs_SubframeConfig =< 13
|
||||
deltaTSFC = deltaTSFCTabType2[srs_SubframeConfig][0];
|
||||
TSFC = deltaTSFCTabType2[srs_SubframeConfig][1];
|
||||
}
|
||||
|
||||
// Sounding reference signal subframes are the subframes satisfying ns/2 mod TSFC (- deltaTSFC
|
||||
uint16_t tmp = (subframe_tx % TSFC);
|
||||
if((1<<tmp) & deltaTSFC)
|
||||
{
|
||||
// This is a Sounding reference signal subframes
|
||||
isSubframeSRS = 1;
|
||||
pSoundingrs_ul_config_dedicated->srsCellSubframe = 1;
|
||||
}
|
||||
LOG_D(PHY," ISTDD: %d, TSFC: %d, deltaTSFC: %d, AbsSubframeTX: %d.%d, srsCellSubframe: %d \n", frame_parms->frame_type, TSFC, deltaTSFC, frame_tx, subframe_tx, pSoundingrs_ul_config_dedicated->srsCellSubframe);
|
||||
LOG_D(PHY," SrsDedicatedSetup: %d \n",pSoundingrs_ul_config_dedicated->srsConfigDedicatedSetup);
|
||||
if (isSubframeSRS) {
|
||||
LOG_D(PHY," SrsDedicatedSetup: %d \n",pSoundingrs_ul_config_dedicated->srsConfigDedicatedSetup);
|
||||
if(pSoundingrs_ul_config_dedicated->srsConfigDedicatedSetup)
|
||||
{
|
||||
compute_srs_pos(frame_parms->frame_type, pSoundingrs_ul_config_dedicated->srs_ConfigIndex, &srsPeriodicity, &srsOffset);
|
||||
@@ -666,6 +529,7 @@ void ue_compute_srs_occasion(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void get_cqipmiri_params(PHY_VARS_UE *ue,uint8_t eNB_id)
|
||||
{
|
||||
|
||||
@@ -2131,9 +1995,7 @@ void phy_procedures_UE_TX(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,ui
|
||||
int subframe_tx = proc->subframe_tx;
|
||||
int frame_tx = proc->frame_tx;
|
||||
unsigned int aa;
|
||||
|
||||
|
||||
|
||||
uint8_t isSubframeSRS;
|
||||
|
||||
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_UE_TX,VCD_FUNCTION_IN);
|
||||
|
||||
@@ -2161,7 +2023,9 @@ void phy_procedures_UE_TX(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,ui
|
||||
|
||||
if (ue->UE_mode[eNB_id] != PRACH) {
|
||||
// check cell srs subframe and ue srs subframe. This has an impact on pusch encoding
|
||||
ue_compute_srs_occasion(ue,proc,eNB_id);
|
||||
isSubframeSRS = is_srs_occasion_common(&ue->frame_parms,proc->frame_tx,proc->subframe_tx);
|
||||
|
||||
ue_compute_srs_occasion(ue,proc,eNB_id,isSubframeSRS);
|
||||
|
||||
ue_ulsch_uespec_procedures(ue,proc,eNB_id,abstraction_flag);
|
||||
|
||||
|
||||
@@ -632,12 +632,14 @@ int main(int argc, char **argv)
|
||||
|
||||
UE->pdcch_vars[0]->crnti = 14;
|
||||
|
||||
UE->frame_parms.soundingrs_ul_config_common.enabled_flag = srs_flag;
|
||||
UE->frame_parms.soundingrs_ul_config_common.srs_BandwidthConfig = 2;
|
||||
UE->frame_parms.soundingrs_ul_config_common.srs_SubframeConfig = 7;
|
||||
UE->soundingrs_ul_config_dedicated[eNB_id].srs_Bandwidth = 0;
|
||||
UE->soundingrs_ul_config_dedicated[eNB_id].transmissionComb = 0;
|
||||
UE->soundingrs_ul_config_dedicated[eNB_id].freqDomainPosition = 0;
|
||||
|
||||
eNB->frame_parms.soundingrs_ul_config_common.enabled_flag = srs_flag;
|
||||
eNB->frame_parms.soundingrs_ul_config_common.srs_BandwidthConfig = 2;
|
||||
eNB->frame_parms.soundingrs_ul_config_common.srs_SubframeConfig = 7;
|
||||
|
||||
|
||||
@@ -885,7 +885,7 @@ abort();
|
||||
rb_table_index=UE_template->pre_allocated_rb_table_index_ul;
|
||||
} else {
|
||||
mcs=10;//cmin (10, openair_daq_vars.target_ue_ul_mcs);
|
||||
rb_table_index=5; // for PHR
|
||||
rb_table_index=13; // for PHR
|
||||
}
|
||||
|
||||
UE_list->eNB_UE_stats[CC_id][UE_id].ulsch_mcs2=mcs;
|
||||
|
||||
@@ -62,11 +62,11 @@ eNBs =
|
||||
pusch_nDMRS1 = 1;
|
||||
phich_duration = "NORMAL";
|
||||
phich_resource = "ONESIXTH";
|
||||
srs_enable = "DISABLE";
|
||||
/* srs_BandwidthConfig =;
|
||||
srs_SubframeConfig =;
|
||||
srs_ackNackST =;
|
||||
srs_MaxUpPts =;*/
|
||||
srs_enable = "ENBABLE";
|
||||
srs_BandwidthConfig = 2;
|
||||
srs_SubframeConfig = 3;
|
||||
srs_ackNackST = "FALSE";
|
||||
srs_MaxUpPts = "DISABLE";
|
||||
|
||||
pusch_p0_Nominal = -90;
|
||||
pusch_alpha = "AL1";
|
||||
|
||||
Reference in New Issue
Block a user