Commit 65698f6a authored by francescomani's avatar francescomani

some improvements in ul-mimo code

parent d36079c9
......@@ -493,8 +493,6 @@ int main( int argc, char **argv ) {
set_options(CC_id, UE[CC_id]);
NR_UE_MAC_INST_t *mac = get_mac_inst(0);
NR_DL_FRAME_PARMS *fp = &UE[CC_id]->frame_parms;
mac->phy_config.config_req.carrier_config.num_tx_ant = fp->nb_antennas_tx;
if (get_softmodem_params()->sa) { // set frame config to initial values from command line and assume that the SSB is centered on the grid
uint16_t nr_band = get_band(downlink_frequency[CC_id][0],uplink_frequency_offset[CC_id][0]);
......
......@@ -1213,7 +1213,6 @@ typedef struct
uint8_t transformPrecoder;
uint16_t data_scrambling_id;
uint8_t nrOfLayers;
uint8_t Tpmi;
//DMRS
uint16_t ul_dmrs_symb_pos;
uint8_t dmrs_config_type;
......
......@@ -950,7 +950,6 @@ static uint8_t pack_ul_tti_request_pusch_pdu(nfapi_nr_pusch_pdu_t *pusch_pdu, ui
push8(pusch_pdu->transformPrecoder, ppWritePackedMsg, end) &&
push16(pusch_pdu->data_scrambling_id, ppWritePackedMsg, end) &&
push8(pusch_pdu->nrOfLayers, ppWritePackedMsg, end) &&
push8(pusch_pdu->Tpmi, ppWritePackedMsg, end) &&
push16(pusch_pdu->ul_dmrs_symb_pos, ppWritePackedMsg, end) &&
push8(pusch_pdu->dmrs_config_type, ppWritePackedMsg, end) &&
push16(pusch_pdu->ul_dmrs_scrambling_id, ppWritePackedMsg, end) &&
......@@ -4449,7 +4448,6 @@ static uint8_t unpack_ul_tti_request_pusch_pdu(void *tlv, uint8_t **ppReadPacked
pull8(ppReadPackedMsg, &pusch_pdu->transformPrecoder, end) &&
pull16(ppReadPackedMsg, &pusch_pdu->data_scrambling_id, end) &&
pull8(ppReadPackedMsg, &pusch_pdu->nrOfLayers, end) &&
pull8(ppReadPackedMsg, &pusch_pdu->Tpmi, end) &&
pull16(ppReadPackedMsg, &pusch_pdu->ul_dmrs_symb_pos, end) &&
pull8(ppReadPackedMsg, &pusch_pdu->dmrs_config_type, end) &&
pull16(ppReadPackedMsg, &pusch_pdu->ul_dmrs_scrambling_id, end) &&
......
......@@ -285,7 +285,7 @@ void nr_generate_pdsch(processingData_L1tx_t *msgTx,
start_meas(&gNB->dlsch_resource_mapping_stats);
for (int ap=0; ap<rel15->nrOfLayers; ap++) {
// DMRS params for this ap
// DMRS params for this poir
get_Wt(Wt, ap, dmrs_Type);
get_Wf(Wf, ap, dmrs_Type);
delta = get_delta(ap, dmrs_Type);
......
This diff is collapsed.
......@@ -369,10 +369,10 @@ void nr_ulsch_procedures(PHY_VARS_gNB *gNB, int frame_rx, int slot_rx, int ULSCH
nr_ulsch_layer_demapping(gNB->pusch_vars[ULSCH_id]->llr,
pusch_pdu->nrOfLayers,
pusch_pdu->qam_mod_order,
G,
gNB->pusch_vars[ULSCH_id]->llr_layers);
pusch_pdu->nrOfLayers,
pusch_pdu->qam_mod_order,
G,
gNB->pusch_vars[ULSCH_id]->llr_layers);
//----------------------------------------------------------
//------------------- ULSCH unscrambling -------------------
......
......@@ -33,6 +33,7 @@
#include "LAYER2/NR_MAC_gNB/mac_proto.h"
#include "common/utils/nr/nr_common.h"
#include <limits.h>
#include <executables/softmodem-common.h>
#define reserved 0xffff
......@@ -2531,6 +2532,30 @@ uint8_t get_transformPrecoding(const NR_BWP_UplinkCommon_t *initialUplinkBWP,
return -1;
}
uint8_t get_pusch_nb_antenna_ports(NR_PUSCH_Config_t *pusch_Config,
NR_SRS_Config_t *srs_config,
dci_field_t srs_resource_indicator) {
uint8_t n_antenna_port = 1;
if (get_softmodem_params()->phy_test == 1) {
// temporary hack to allow UL-MIMO in phy-test mode without SRS
n_antenna_port = *pusch_Config->maxRank;
}
else {
if(srs_config != NULL && srs_resource_indicator.nbits > 0) {
for(int rs = 0; rs < srs_config->srs_ResourceSetToAddModList->list.count; rs++) {
NR_SRS_ResourceSet_t *srs_resource_set = srs_config->srs_ResourceSetToAddModList->list.array[rs];
if(srs_resource_set->usage == NR_SRS_ResourceSet__usage_codebook) {
NR_SRS_Resource_t *srs_resource = srs_config->srs_ResourceToAddModList->list.array[srs_resource_indicator.val];
AssertFatal(srs_resource != NULL,"SRS resource indicated by DCI does not exist\n");
n_antenna_port = 1<<srs_resource->nrofSRS_Ports;
}
}
}
}
return n_antenna_port;
}
uint16_t nr_dci_size(const NR_BWP_DownlinkCommon_t *initialDownlinkBWP,
const NR_BWP_UplinkCommon_t *initialUplinkBWP,
const NR_CellGroupConfig_t *cg,
......@@ -2544,17 +2569,16 @@ uint16_t nr_dci_size(const NR_BWP_DownlinkCommon_t *initialDownlinkBWP,
uint16_t numRBG = 0;
long rbg_size_config;
int num_entries = 0;
int pusch_antenna_ports = 1; // TODO hardcoded number of antenna ports for pusch
const NR_BWP_DownlinkDedicated_t *bwpd = NULL;
const NR_BWP_UplinkDedicated_t *ubwpd = NULL;
const NR_BWP_DownlinkCommon_t *bwpc = NULL;
const NR_BWP_UplinkCommon_t *ubwpc = NULL;
const NR_PDSCH_Config_t *pdsch_Config = NULL;
const NR_PUSCH_Config_t *pusch_Config = NULL;
const NR_PUCCH_Config_t *pucch_Config = NULL;
const NR_PDCCH_Config_t *pdcch_Config = NULL;
const NR_SRS_Config_t *srs_config = NULL;
NR_PDSCH_Config_t *pdsch_Config = NULL;
NR_PUSCH_Config_t *pusch_Config = NULL;
NR_PUCCH_Config_t *pucch_Config = NULL;
NR_PDCCH_Config_t *pdcch_Config = NULL;
NR_SRS_Config_t *srs_config = NULL;
if(bwp_id > 0) {
AssertFatal(cg!=NULL,"Cellgroup is null and bwp_id!=0");
bwpd=cg->spCellConfig->spCellConfigDedicated->downlinkBWP_ToAddModList->list.array[bwp_id-1]->bwp_Dedicated;
......@@ -2709,7 +2733,7 @@ uint16_t nr_dci_size(const NR_BWP_DownlinkCommon_t *initialDownlinkBWP,
// Precoding info and number of layers
long transformPrecoder = get_transformPrecoding(initialUplinkBWP, pusch_Config, ubwpd, (uint8_t*)&format, rnti_type, 0);
pusch_antenna_ports = *pusch_Config->maxRank;
uint8_t pusch_antenna_ports = get_pusch_nb_antenna_ports(pusch_Config, srs_config, dci_pdu->srs_resource_indicator);
dci_pdu->precoding_information.nbits=0;
if (pusch_Config &&
......
......@@ -144,6 +144,10 @@ void get_info_from_tda_tables(int default_abc,
void fill_coresetZero(NR_ControlResourceSet_t *coreset0, NR_Type0_PDCCH_CSS_config_t *type0_PDCCH_CSS_config);
void fill_searchSpaceZero(NR_SearchSpace_t *ss0, NR_Type0_PDCCH_CSS_config_t *type0_PDCCH_CSS_config);
uint8_t get_pusch_nb_antenna_ports(NR_PUSCH_Config_t *pusch_Config,
NR_SRS_Config_t *srs_config,
dci_field_t srs_resource_indicator);
uint16_t compute_pucch_prb_size(uint8_t format,
uint8_t nr_prbs,
uint16_t O_tot,
......
This diff is collapsed.
......@@ -691,7 +691,6 @@ void config_uldci(const NR_BWP_Uplink_t *ubwp,
"Non Codebook configuration non supported\n");
dci_pdu_rel15->srs_resource_indicator.val = 0; // taking resource 0 for SRS
}
AssertFatal((pusch_pdu->Tpmi==0), "unsupport Tpmi\n");
dci_pdu_rel15->precoding_information.val= 0;
if (pusch_pdu->nrOfLayers == 2)
{
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment