gNB: fix nr_generate_pdsch() for odd number of PDSCH RBs
This commit is contained in:
@@ -457,14 +457,34 @@ void nr_generate_pdsch(processingData_L1tx_t *msgTx,
|
|||||||
pmi = 0;//no precoding
|
pmi = 0;//no precoding
|
||||||
|
|
||||||
if (pmi == 0) {//unitary Precoding
|
if (pmi == 0) {//unitary Precoding
|
||||||
if(ap<rel15->nrOfLayers)
|
if (k + NR_NB_SC_PER_RB <= frame_parms->ofdm_symbol_size) { // RB does not cross DC
|
||||||
memcpy((void*)&txdataF[ap][l*frame_parms->ofdm_symbol_size + txdataF_offset + k],
|
if(ap<rel15->nrOfLayers)
|
||||||
(void*)&txdataF_precoding[ap][2*(l*frame_parms->ofdm_symbol_size + k)],
|
memcpy((void*)&txdataF[ap][l*frame_parms->ofdm_symbol_size + txdataF_offset + k],
|
||||||
NR_NB_SC_PER_RB*sizeof(int32_t));
|
(void*)&txdataF_precoding[ap][2*(l*frame_parms->ofdm_symbol_size + k)],
|
||||||
else
|
NR_NB_SC_PER_RB*sizeof(int32_t));
|
||||||
memset((void*)&txdataF[ap][l*frame_parms->ofdm_symbol_size + txdataF_offset + k],
|
else
|
||||||
0,
|
memset((void*)&txdataF[ap][l*frame_parms->ofdm_symbol_size + txdataF_offset + k],
|
||||||
NR_NB_SC_PER_RB*sizeof(int32_t));
|
0,
|
||||||
|
NR_NB_SC_PER_RB*sizeof(int32_t));
|
||||||
|
} else { // RB does cross DC
|
||||||
|
int neg_length = frame_parms->ofdm_symbol_size - k;
|
||||||
|
int pos_length = NR_NB_SC_PER_RB - neg_length;
|
||||||
|
if (ap<rel15->nrOfLayers) {
|
||||||
|
memcpy((void*)&txdataF[ap][l*frame_parms->ofdm_symbol_size + txdataF_offset + k],
|
||||||
|
(void*)&txdataF_precoding[ap][2*(l*frame_parms->ofdm_symbol_size + k)],
|
||||||
|
neg_length*sizeof(int32_t));
|
||||||
|
memcpy((void*)&txdataF[ap][l*frame_parms->ofdm_symbol_size + txdataF_offset],
|
||||||
|
(void*)&txdataF_precoding[ap][2*(l*frame_parms->ofdm_symbol_size)],
|
||||||
|
pos_length*sizeof(int32_t));
|
||||||
|
} else {
|
||||||
|
memset((void*)&txdataF[ap][l*frame_parms->ofdm_symbol_size + txdataF_offset + k],
|
||||||
|
0,
|
||||||
|
neg_length*sizeof(int32_t));
|
||||||
|
memset((void*)&txdataF[ap][l*frame_parms->ofdm_symbol_size + txdataF_offset],
|
||||||
|
0,
|
||||||
|
pos_length*sizeof(int32_t));
|
||||||
|
}
|
||||||
|
}
|
||||||
k += NR_NB_SC_PER_RB;
|
k += NR_NB_SC_PER_RB;
|
||||||
if (k >= frame_parms->ofdm_symbol_size) {
|
if (k >= frame_parms->ofdm_symbol_size) {
|
||||||
k -= frame_parms->ofdm_symbol_size;
|
k -= frame_parms->ofdm_symbol_size;
|
||||||
|
|||||||
Reference in New Issue
Block a user