Updated ofdm fep in gNB
This commit is contained in:
@@ -69,43 +69,74 @@ void nr_feptx0(RU_t *ru,int tti_tx,int first_symbol, int num_symbols, int aa) {
|
|||||||
slot_offset = fp->get_samples_slot_timestamp(slot,fp,0);
|
slot_offset = fp->get_samples_slot_timestamp(slot,fp,0);
|
||||||
slot_offsetF = first_symbol*fp->ofdm_symbol_size;
|
slot_offsetF = first_symbol*fp->ofdm_symbol_size;
|
||||||
|
|
||||||
|
int abs_first_symbol = slot*fp->symbols_per_slot;
|
||||||
|
|
||||||
if (first_symbol>0) slot_offset += (fp->ofdm_symbol_size*first_symbol) + (fp->nb_prefix_samples0) + (fp->nb_prefix_samples*(first_symbol-1));
|
for (uint16_t idx_sym=abs_first_symbol; idx_sym<abs_first_symbol+first_symbol; idx_sym++)
|
||||||
|
slot_offset += (idx_sym%(0x7<<fp->numerology_index)) ? fp->nb_prefix_samples0 : fp->nb_prefix_samples;
|
||||||
|
|
||||||
|
slot_offset += fp->ofdm_symbol_size*first_symbol;
|
||||||
|
|
||||||
LOG_D(PHY,"SFN/SF:RU:TX:%d/%d Generating slot %d (first_symbol %d num_symbols %d)\n",ru->proc.frame_tx, ru->proc.tti_tx,slot,first_symbol,num_symbols);
|
LOG_D(PHY,"SFN/SF:RU:TX:%d/%d Generating slot %d (first_symbol %d num_symbols %d)\n",ru->proc.frame_tx, ru->proc.tti_tx,slot,first_symbol,num_symbols);
|
||||||
|
|
||||||
if (fp->Ncp == 1) {
|
if (fp->Ncp == 1)
|
||||||
PHY_ofdm_mod(&ru->common.txdataF_BF[aa][slot_offsetF],
|
PHY_ofdm_mod(&ru->common.txdataF_BF[aa][slot_offsetF],
|
||||||
(int*)&ru->common.txdata[aa][slot_offset],
|
(int*)&ru->common.txdata[aa][slot_offset],
|
||||||
fp->ofdm_symbol_size,
|
fp->ofdm_symbol_size,
|
||||||
num_symbols,
|
num_symbols,
|
||||||
fp->nb_prefix_samples,
|
fp->nb_prefix_samples,
|
||||||
CYCLIC_PREFIX);
|
CYCLIC_PREFIX);
|
||||||
}
|
|
||||||
else {
|
else {
|
||||||
if (first_symbol==0) {
|
if (fp->numerology_index != 0) {
|
||||||
PHY_ofdm_mod(&ru->common.txdataF_BF[aa][slot_offsetF],
|
|
||||||
(int*)&ru->common.txdata[aa][slot_offset],
|
if (slot%(fp->slots_per_subframe/2)) {
|
||||||
fp->ofdm_symbol_size,
|
PHY_ofdm_mod(&ru->common.txdataF_BF[aa][slot_offsetF],
|
||||||
1,
|
(int*)&ru->common.txdata[aa][slot_offset],
|
||||||
fp->nb_prefix_samples0,
|
fp->ofdm_symbol_size,
|
||||||
CYCLIC_PREFIX);
|
num_symbols,
|
||||||
PHY_ofdm_mod(&ru->common.txdataF_BF[aa][slot_offsetF+fp->ofdm_symbol_size],
|
fp->nb_prefix_samples,
|
||||||
(int*)&ru->common.txdata[aa][slot_offset+fp->nb_prefix_samples0+fp->ofdm_symbol_size],
|
CYCLIC_PREFIX);
|
||||||
fp->ofdm_symbol_size,
|
}
|
||||||
num_symbols-1,
|
else {
|
||||||
fp->nb_prefix_samples,
|
PHY_ofdm_mod(&ru->common.txdataF_BF[aa][slot_offsetF],
|
||||||
CYCLIC_PREFIX);
|
(int*)&ru->common.txdata[aa][slot_offset],
|
||||||
|
fp->ofdm_symbol_size,
|
||||||
|
1,
|
||||||
|
fp->nb_prefix_samples0,
|
||||||
|
CYCLIC_PREFIX);
|
||||||
|
PHY_ofdm_mod(&ru->common.txdataF_BF[aa][slot_offsetF+fp->ofdm_symbol_size],
|
||||||
|
(int*)&ru->common.txdata[aa][slot_offset+fp->nb_prefix_samples0+fp->ofdm_symbol_size],
|
||||||
|
fp->ofdm_symbol_size,
|
||||||
|
num_symbols-1,
|
||||||
|
fp->nb_prefix_samples,
|
||||||
|
CYCLIC_PREFIX);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
else {
|
else {
|
||||||
PHY_ofdm_mod(&ru->common.txdataF_BF[aa][slot_offsetF],
|
for (uint16_t idx_sym=abs_first_symbol; idx_sym<abs_first_symbol+num_symbols; idx_sym++) {
|
||||||
(int*)&ru->common.txdata[aa][slot_offset],
|
if (idx_sym%0x7) {
|
||||||
fp->ofdm_symbol_size,
|
PHY_ofdm_mod(&ru->common.txdataF_BF[aa][slot_offsetF],
|
||||||
num_symbols,
|
(int*)&ru->common.txdata[aa][slot_offset],
|
||||||
fp->nb_prefix_samples,
|
fp->ofdm_symbol_size,
|
||||||
CYCLIC_PREFIX);
|
1,
|
||||||
|
fp->nb_prefix_samples,
|
||||||
|
CYCLIC_PREFIX);
|
||||||
|
slot_offset += fp->nb_prefix_samples+fp->ofdm_symbol_size;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
PHY_ofdm_mod(&ru->common.txdataF_BF[aa][slot_offsetF],
|
||||||
|
(int*)&ru->common.txdata[aa][slot_offset],
|
||||||
|
fp->ofdm_symbol_size,
|
||||||
|
1,
|
||||||
|
fp->nb_prefix_samples0,
|
||||||
|
CYCLIC_PREFIX);
|
||||||
|
slot_offset += fp->nb_prefix_samples0+fp->ofdm_symbol_size;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_RU_FEPTX_OFDM+(first_symbol!=0?1:0), 0);
|
//VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_RU_FEPTX_OFDM+(first_symbol!=0?1:0), 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user