fix bugs introduced by previous commit
This commit is contained in:
@@ -1862,10 +1862,11 @@ void nr_pdsch_ptrs_processing(PHY_VARS_NR_UE *ue,
|
||||
#ifdef DEBUG_DL_PTRS
|
||||
printf("[PHY][DL][PTRS]: Rotate Symbol %2d with %d + j* %d\n", i, phase_per_symbol[i].r,phase_per_symbol[i].i);
|
||||
#endif
|
||||
rotate_cpx_vector((c16_t*)&rxdataF_comp[aarx][(i * (*nb_rb) * NR_NB_SC_PER_RB)],
|
||||
rotate_cpx_vector((c16_t *)&rxdataF_comp[0][aarx][(i * (*nb_rb) * NR_NB_SC_PER_RB)],
|
||||
&phase_per_symbol[i],
|
||||
(c16_t*)&rxdataF_comp[aarx][(i * (*nb_rb) * NR_NB_SC_PER_RB)],
|
||||
((*nb_rb) * NR_NB_SC_PER_RB), 15);
|
||||
(c16_t *)&rxdataF_comp[0][aarx][(i * (*nb_rb) * NR_NB_SC_PER_RB)],
|
||||
((*nb_rb) * NR_NB_SC_PER_RB),
|
||||
15);
|
||||
}// if not DMRS Symbol
|
||||
}// symbol loop
|
||||
}// last symbol check
|
||||
|
||||
@@ -518,9 +518,8 @@ int nr_csi_rs_ri_estimation(const PHY_VARS_NR_UE *ue,
|
||||
|
||||
// construct Hh x H elements
|
||||
if(ant_rx_conjch == ant_rx_ch) {
|
||||
nr_a_sum_b((__m128i *)&csi_rs_estimated_A_MF[port_tx_conjch][port_tx_ch][k_offset],
|
||||
(__m128i *)&csi_rs_estimated_conjch_ch[ant_rx_conjch][port_tx_conjch][ant_rx_ch][port_tx_ch][k_offset],
|
||||
1);
|
||||
nr_a_sum_b(
|
||||
(c16_t *)&csi_rs_estimated_A_MF[port_tx_conjch][port_tx_ch][k_offset], (c16_t *)&csi_rs_estimated_conjch_ch[ant_rx_conjch][port_tx_conjch][ant_rx_ch][port_tx_ch][k_offset], 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1876,12 +1876,7 @@ uint8_t nr_matrix_inverse(int32_t size,
|
||||
|
||||
if(flag) {//fixed point SIMD calc.
|
||||
//Allocate the submatrix elements
|
||||
c16_t sub_matrix_data[size - 1][size - 1][12 * nb_rb];
|
||||
memset(sub_matrix_data, 0, sizeof(sub_matrix_data));
|
||||
c16_t *sub_matrix[size - 1][size - 1];
|
||||
for (int rtx = 0; rtx < (size - 1); rtx++)
|
||||
for (int ctx = 0; ctx < (size - 1); ctx++)
|
||||
sub_matrix[ctx][rtx] = sub_matrix_data[ctx][rtx];
|
||||
|
||||
//Compute Matrix determinant
|
||||
nr_determin(size,
|
||||
@@ -1913,7 +1908,8 @@ uint8_t nr_matrix_inverse(int32_t size,
|
||||
//fill out the sub matrix corresponds to this element
|
||||
for (int ridx=0;ridx<(size-1);ridx++)
|
||||
for (int cidx=0;cidx<(size-1);cidx++)
|
||||
memcpy(sub_matrix[cidx][ridx], a44[cc[cidx]][rr[ridx]], sizeof(sub_matrix_data[cidx][ridx]));
|
||||
// To verify
|
||||
sub_matrix[cidx][ridx]=a44[cc[cidx]][rr[ridx]];
|
||||
|
||||
nr_determin(size - 1, // size
|
||||
sub_matrix,
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -87,216 +87,6 @@ int32_t nr_dlsch_qpsk_qpsk_llr(NR_DL_FRAME_PARMS *frame_parms,
|
||||
uint16_t pbch_pss_sss_adj,
|
||||
int16_t **llr128p);
|
||||
|
||||
/** \brief This function computes the LLRs for ML (max-logsum approximation) dual-stream QPSK/16QAM reception.
|
||||
@param stream0_in Input from channel compensated (MR combined) stream 0
|
||||
@param stream1_in Input from channel compensated (MR combined) stream 1
|
||||
@param ch_mag_i Input from scaled channel magnitude square of h0'*g1
|
||||
@param stream0_out Output from LLR unit for stream0
|
||||
@param rho01 Cross-correlation between channels (MR combined)
|
||||
@param length in complex channel outputs*/
|
||||
void nr_qpsk_qam16(int16_t *stream0_in,
|
||||
int16_t *stream1_in,
|
||||
short *ch_mag_i,
|
||||
int16_t *stream0_out,
|
||||
int16_t *rho01,
|
||||
int32_t length);
|
||||
|
||||
/** \brief This function computes the LLRs for ML (max-logsum approximation) dual-stream QPSK/64QAM reception.
|
||||
@param stream0_in Input from channel compensated (MR combined) stream 0
|
||||
@param stream1_in Input from channel compensated (MR combined) stream 1
|
||||
@param ch_mag_i Input from scaled channel magnitude square of h0'*g1
|
||||
@param stream0_out Output from LLR unit for stream0
|
||||
@param rho01 Cross-correlation between channels (MR combined)
|
||||
@param length in complex channel outputs*/
|
||||
void nr_qpsk_qam64(int16_t *stream0_in,
|
||||
int16_t *stream1_in,
|
||||
short *ch_mag_i,
|
||||
int16_t *stream0_out,
|
||||
int16_t *rho01,
|
||||
int32_t length);
|
||||
|
||||
/** \brief This function computes the LLRs for ML (max-logsum approximation) dual-stream 16QAM/QPSK reception.
|
||||
@param stream0_in Input from channel compensated (MR combined) stream 0
|
||||
@param stream1_in Input from channel compensated (MR combined) stream 1
|
||||
@param ch_mag Input from scaled channel magnitude square of h0'*g0
|
||||
@param stream0_out Output from LLR unit for stream0
|
||||
@param rho01 Cross-correlation between channels (MR combined)
|
||||
@param length in complex channel outputs*/
|
||||
void nr_qam16_qpsk(short *stream0_in, short *stream1_in, short *ch_mag, short *stream0_out, short *rho01, int length);
|
||||
|
||||
/** \brief This function computes the LLRs for ML (max-logsum approximation) dual-stream 16QAM/16QAM reception.
|
||||
@param stream0_in Input from channel compensated (MR combined) stream 0
|
||||
@param stream1_in Input from channel compensated (MR combined) stream 1
|
||||
@param ch_mag Input from scaled channel magnitude square of h0'*g0
|
||||
@param ch_mag_i Input from scaled channel magnitude square of h0'*g1
|
||||
@param stream0_out Output from LLR unit for stream0
|
||||
@param rho01 Cross-correlation between channels (MR combined)
|
||||
@param length in complex channel outputs*/
|
||||
void nr_qam16_qam16(short *stream0_in,
|
||||
short *stream1_in,
|
||||
short *ch_mag,
|
||||
short *ch_mag_i,
|
||||
short *stream0_out,
|
||||
short *rho01,
|
||||
int length);
|
||||
|
||||
/** \brief This function computes the LLRs for ML (max-logsum approximation) dual-stream 64QAM/64QAM reception.
|
||||
@param stream0_in Input from channel compensated (MR combined) stream 0
|
||||
@param stream1_in Input from channel compensated (MR combined) stream 1
|
||||
@param ch_mag Input from scaled channel magnitude square of h0'*g0
|
||||
@param stream0_out Output from LLR unit for stream0
|
||||
@param rho01 Cross-correlation between channels (MR combined)
|
||||
@param length in complex channel outputs*/
|
||||
void nr_qam64_qpsk(short *stream0_in,
|
||||
short *stream1_in,
|
||||
short *ch_mag,
|
||||
short *stream0_out,
|
||||
short *rho01,
|
||||
int length);
|
||||
|
||||
/** \brief This function perform LLR computation for dual-stream (64QAM/64QAM) transmission.
|
||||
@param frame_parms Frame descriptor structure
|
||||
@param rxdataF_comp Compensated channel output
|
||||
@param rxdataF_comp_i Compensated channel output for interference
|
||||
@param ch_mag Input from scaled channel magnitude square of h0'*g0
|
||||
@param rho_i Correlation between channel of signal and inteference
|
||||
@param dlsch_llr llr output
|
||||
@param symbol OFDM symbol index in sub-frame
|
||||
@param first_symbol_flag flag to indicate this is the first symbol of the dlsch
|
||||
@param nb_rb number of RBs for this allocation
|
||||
@param pbch_pss_sss_adj Number of channel bits taken by PBCH/PSS/SSS
|
||||
@param llr16p pointer to pointer to symbol in dlsch_llr*/
|
||||
int nr_dlsch_64qam_qpsk_llr(NR_DL_FRAME_PARMS *frame_parms,
|
||||
int **rxdataF_comp,
|
||||
int **rxdataF_comp_i,
|
||||
int **dl_ch_mag,
|
||||
int **rho_i,
|
||||
short *dlsch_llr,
|
||||
unsigned char symbol,
|
||||
unsigned char first_symbol_flag,
|
||||
unsigned short nb_rb,
|
||||
uint16_t pbch_pss_sss_adjust,
|
||||
short **llr16p);
|
||||
|
||||
/** \brief This function computes the LLRs for ML (max-logsum approximation) dual-stream 64QAM/16QAM reception.
|
||||
@param stream0_in Input from channel compensated (MR combined) stream 0
|
||||
@param stream1_in Input from channel compensated (MR combined) stream 1
|
||||
@param ch_mag Input from scaled channel magnitude square of h0'*g0
|
||||
@param ch_mag_i Input from scaled channel magnitude square of h0'*g1
|
||||
@param stream0_out Output from LLR unit for stream0
|
||||
@param rho01 Cross-correlation between channels (MR combined)
|
||||
@param length in complex channel outputs*/
|
||||
void nr_qam64_qam16(short *stream0_in,
|
||||
short *stream1_in,
|
||||
short *ch_mag,
|
||||
short *ch_mag_i,
|
||||
short *stream0_out,
|
||||
short *rho01,
|
||||
int length);
|
||||
|
||||
/** \brief This function computes the LLRs for ML (max-logsum approximation) dual-stream 64QAM/16QAM reception.
|
||||
@param stream0_in Input from channel compensated (MR combined) stream 0
|
||||
@param stream1_in Input from channel compensated (MR combined) stream 1
|
||||
@param ch_mag Input from scaled channel magnitude square of h0'*g0
|
||||
@param ch_mag_i Input from scaled channel magnitude square of h0'*g1
|
||||
@param stream0_out Output from LLR unit for stream0
|
||||
@param rho01 Cross-correlation between channels (MR combined)
|
||||
@param length in complex channel outputs*/
|
||||
void qam64_qam16_avx2(short *stream0_in,
|
||||
short *stream1_in,
|
||||
short *ch_mag,
|
||||
short *ch_mag_i,
|
||||
short *stream0_out,
|
||||
short *rho01,
|
||||
int length);
|
||||
|
||||
/** \brief This function perform LLR computation for dual-stream (64QAM/16QAM) transmission.
|
||||
@param frame_parms Frame descriptor structure
|
||||
@param rxdataF_comp Compensated channel output
|
||||
@param rxdataF_comp_i Compensated channel output for interference
|
||||
@param ch_mag Input from scaled channel magnitude square of h0'*g0
|
||||
@param ch_mag_i Input from scaled channel magnitude square of h0'*g1
|
||||
@param rho_i Correlation between channel of signal and inteference
|
||||
@param dlsch_llr llr output
|
||||
@param symbol OFDM symbol index in sub-frame
|
||||
@param first_symbol_flag flag to indicate this is the first symbol of the dlsch
|
||||
@param nb_rb number of RBs for this allocation
|
||||
@param pbch_pss_sss_adj Number of channel bits taken by PBCH/PSS/SSS
|
||||
@param llr16p pointer to pointer to symbol in dlsch_llr*/
|
||||
int nr_dlsch_64qam_16qam_llr(NR_DL_FRAME_PARMS *frame_parms,
|
||||
int **rxdataF_comp,
|
||||
int **rxdataF_comp_i,
|
||||
int **dl_ch_mag,
|
||||
int **dl_ch_mag_i,
|
||||
int **rho_i,
|
||||
short *dlsch_llr,
|
||||
unsigned char symbol,
|
||||
unsigned char first_symbol_flag,
|
||||
unsigned short nb_rb,
|
||||
uint16_t pbch_pss_sss_adjust,
|
||||
short **llr16p);
|
||||
|
||||
/** \brief This function computes the LLRs for ML (max-logsum approximation) dual-stream 64QAM/64QAM reception.
|
||||
@param stream0_in Input from channel compensated (MR combined) stream 0
|
||||
@param stream1_in Input from channel compensated (MR combined) stream 1
|
||||
@param ch_mag Input from scaled channel magnitude square of h0'*g0
|
||||
@param ch_mag_i Input from scaled channel magnitude square of h0'*g1
|
||||
@param stream0_out Output from LLR unit for stream0
|
||||
@param rho01 Cross-correlation between channels (MR combined)
|
||||
@param length in complex channel outputs*/
|
||||
void qam64_qam64(short *stream0_in,
|
||||
short *stream1_in,
|
||||
short *ch_mag,
|
||||
short *ch_mag_i,
|
||||
short *stream0_out,
|
||||
short *rho01,
|
||||
int length);
|
||||
|
||||
/** \brief This function computes the LLRs for ML (max-logsum approximation) dual-stream 64QAM/64QAM reception.
|
||||
@param stream0_in Input from channel compensated (MR combined) stream 0
|
||||
@param stream1_in Input from channel compensated (MR combined) stream 1
|
||||
@param ch_mag Input from scaled channel magnitude square of h0'*g0
|
||||
@param ch_mag_i Input from scaled channel magnitude square of h0'*g1
|
||||
@param stream0_out Output from LLR unit for stream0
|
||||
@param rho01 Cross-correlation between channels (MR combined)
|
||||
@param length in complex channel outputs*/
|
||||
void qam64_qam64_avx2(int32_t *stream0_in,
|
||||
int32_t *stream1_in,
|
||||
int32_t *ch_mag,
|
||||
int32_t *ch_mag_i,
|
||||
int16_t *stream0_out,
|
||||
int32_t *rho01,
|
||||
int length);
|
||||
|
||||
/** \brief This function perform LLR computation for dual-stream (64QAM/64QAM) transmission.
|
||||
@param frame_parms Frame descriptor structure
|
||||
@param rxdataF_comp Compensated channel output
|
||||
@param rxdataF_comp_i Compensated channel output for interference
|
||||
@param ch_mag Input from scaled channel magnitude square of h0'*g0
|
||||
@param ch_mag_i Input from scaled channel magnitude square of h0'*g1
|
||||
@param rho_i Correlation between channel of signal and inteference
|
||||
@param dlsch_llr llr output
|
||||
@param symbol OFDM symbol index in sub-frame
|
||||
@param first_symbol_flag flag to indicate this is the first symbol of the dlsch
|
||||
@param nb_rb number of RBs for this allocation
|
||||
@param pbch_pss_sss_adj Number of channel bits taken by PBCH/PSS/SSS
|
||||
@param llr16p pointer to pointer to symbol in dlsch_llr*/
|
||||
int nr_dlsch_64qam_64qam_llr(NR_DL_FRAME_PARMS *frame_parms,
|
||||
int **rxdataF_comp,
|
||||
int **rxdataF_comp_i,
|
||||
int **dl_ch_mag,
|
||||
int **dl_ch_mag_i,
|
||||
int **rho_i,
|
||||
short *dlsch_llr,
|
||||
unsigned char symbol,
|
||||
uint32_t len,
|
||||
unsigned char first_symbol_flag,
|
||||
unsigned short nb_rb,
|
||||
uint16_t pbch_pss_sss_adjust,
|
||||
//short **llr16p,
|
||||
uint32_t llr_offset);
|
||||
|
||||
|
||||
/** \brief This function generates log-likelihood ratios (decoder input) for single-stream QPSK received waveforms.
|
||||
@param frame_parms Frame descriptor structure
|
||||
@param rxdataF_comp Compensated channel output
|
||||
@@ -605,6 +395,7 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue,
|
||||
int32_t generate_nr_prach(PHY_VARS_NR_UE *ue, uint8_t gNB_id, int frame, uint8_t slot);
|
||||
|
||||
void dump_nrdlsch(PHY_VARS_NR_UE *ue,uint8_t gNB_id,uint8_t nr_slot_rx,unsigned int *coded_bits_per_codeword,int round, unsigned char harq_pid);
|
||||
void nr_a_sum_b(c16_t *input_x, c16_t *input_y, unsigned short nb_rb);
|
||||
/**@}*/
|
||||
#endif
|
||||
|
||||
|
||||
Reference in New Issue
Block a user