Commit 698dfac0 authored by Florian Kaltenberger's avatar Florian Kaltenberger

Merge branch 'nr_pdsch' of https://gitlab.eurecom.fr/oai/openairinterface5g into nr_pdsch

parents bc5cb28d 6fc37985
...@@ -1298,6 +1298,7 @@ set(PHY_SRC_UE ...@@ -1298,6 +1298,7 @@ set(PHY_SRC_UE
${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_dci_tools.c ${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_dci_tools.c
${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_dlsch.c ${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_dlsch.c
${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_dlsch_tools.c ${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_dlsch_tools.c
${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_dlsch_coding.c
${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_tbs_tools.c ${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_tbs_tools.c
${OPENAIR1_DIR}/PHY/NR_REFSIG/nr_gold.c ${OPENAIR1_DIR}/PHY/NR_REFSIG/nr_gold.c
${OPENAIR1_DIR}/PHY/TOOLS/file_output.c ${OPENAIR1_DIR}/PHY/TOOLS/file_output.c
...@@ -1330,6 +1331,8 @@ set(PHY_SRC_UE ...@@ -1330,6 +1331,8 @@ set(PHY_SRC_UE
${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/nr_pbch.c ${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/nr_pbch.c
${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/nr_dlsch_demodulation.c ${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/nr_dlsch_demodulation.c
${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/nr_dlsch_decoding.c ${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/nr_dlsch_decoding.c
${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/nr_dlsch_llr_computation.c
${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_tbs_tools.c
${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/ ${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/
${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/srs_modulation_nr.c ${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/srs_modulation_nr.c
${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/dci_nr.c ${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/dci_nr.c
......
...@@ -50,3 +50,8 @@ void nr_get_PRG_parms(NR_BWP_PARMS* bwp, NR_gNB_DCI_ALLOC_t dci_alloc, uint8_t p ...@@ -50,3 +50,8 @@ void nr_get_PRG_parms(NR_BWP_PARMS* bwp, NR_gNB_DCI_ALLOC_t dci_alloc, uint8_t p
uint8_t nr_get_Qm(uint8_t Imcs, uint8_t table_idx); uint8_t nr_get_Qm(uint8_t Imcs, uint8_t table_idx);
uint32_t nr_get_code_rate(uint8_t Imcs, uint8_t table_idx); uint32_t nr_get_code_rate(uint8_t Imcs, uint8_t table_idx);
/** \brief Computes available bits G.
@param nb_rb, nb_symb_sch, nb_re_dmrs, length_dmrs */
uint32_t nr_get_G(uint16_t nb_rb, uint16_t nb_symb_sch,uint8_t nb_re_dmrs,uint16_t length_dmrs,uint8_t Qm);
...@@ -37,6 +37,7 @@ ...@@ -37,6 +37,7 @@
#include "PHY/CODING/lte_interleaver_inline.h" #include "PHY/CODING/lte_interleaver_inline.h"
#include "PHY/NR_TRANSPORT/nr_transport.h" #include "PHY/NR_TRANSPORT/nr_transport.h"
#include "PHY/NR_TRANSPORT/nr_transport_common_proto.h" #include "PHY/NR_TRANSPORT/nr_transport_common_proto.h"
#include "PHY/NR_TRANSPORT/nr_dlsch.h"
#include "SCHED_NR/sched_nr.h" #include "SCHED_NR/sched_nr.h"
#include "defs.h" #include "defs.h"
#include "UTIL/LOG/vcd_signal_dumper.h" #include "UTIL/LOG/vcd_signal_dumper.h"
...@@ -85,11 +86,11 @@ void free_gNB_dlsch(NR_gNB_DLSCH_t *dlsch) ...@@ -85,11 +86,11 @@ void free_gNB_dlsch(NR_gNB_DLSCH_t *dlsch)
#endif #endif
if (dlsch->harq_processes[i]->c[r]) { if (dlsch->harq_processes[i]->c[r]) {
free16(dlsch->harq_processes[i]->c[r],((r==0)?8:0) + 3+1056); free16(dlsch->harq_processes[i]->c[r],1056);
dlsch->harq_processes[i]->c[r] = NULL; dlsch->harq_processes[i]->c[r] = NULL;
} }
if (dlsch->harq_processes[i]->d[r]) { if (dlsch->harq_processes[i]->d[r]) {
free16(dlsch->harq_processes[i]->d[r],(96+12+3+(3*8448))); free16(dlsch->harq_processes[i]->d[r],3*8448);
dlsch->harq_processes[i]->d[r] = NULL; dlsch->harq_processes[i]->d[r] = NULL;
} }
...@@ -109,7 +110,7 @@ NR_gNB_DLSCH_t *new_gNB_dlsch(unsigned char Kmimo,unsigned char Mdlharq,uint32_t ...@@ -109,7 +110,7 @@ NR_gNB_DLSCH_t *new_gNB_dlsch(unsigned char Kmimo,unsigned char Mdlharq,uint32_t
{ {
NR_gNB_DLSCH_t *dlsch; NR_gNB_DLSCH_t *dlsch;
unsigned char exit_flag = 0,i,j,r,aa,layer; unsigned char exit_flag = 0,i,r,aa,layer;
int re; int re;
unsigned char bw_scaling =1; unsigned char bw_scaling =1;
...@@ -229,7 +230,7 @@ void clean_gNB_dlsch(NR_gNB_DLSCH_t *dlsch) ...@@ -229,7 +230,7 @@ void clean_gNB_dlsch(NR_gNB_DLSCH_t *dlsch)
for (i=0; i<Mdlharq; i++) { for (i=0; i<Mdlharq; i++) {
if (dlsch->harq_processes[i]) { if (dlsch->harq_processes[i]) {
// dlsch->harq_processes[i]->Ndi = 0; // dlsch->harq_processes[i]->Ndi = 0;
dlsch->harq_processes[i]->status = 0; //dlsch->harq_processes[i]->status = 0;
dlsch->harq_processes[i]->round = 0; dlsch->harq_processes[i]->round = 0;
for (j=0; j<96; j++) for (j=0; j<96; j++)
...@@ -242,7 +243,7 @@ void clean_gNB_dlsch(NR_gNB_DLSCH_t *dlsch) ...@@ -242,7 +243,7 @@ void clean_gNB_dlsch(NR_gNB_DLSCH_t *dlsch)
} }
} }
int dlsch_encoding(PHY_VARS_gNB *gNB, int nr_dlsch_encoding(PHY_VARS_gNB *gNB,
unsigned char *a, unsigned char *a,
uint8_t num_pdcch_symbols, uint8_t num_pdcch_symbols,
NR_gNB_DLSCH_t *dlsch, NR_gNB_DLSCH_t *dlsch,
...@@ -255,31 +256,39 @@ int dlsch_encoding(PHY_VARS_gNB *gNB, ...@@ -255,31 +256,39 @@ int dlsch_encoding(PHY_VARS_gNB *gNB,
unsigned int G; unsigned int G;
unsigned int crc=1; unsigned int crc=1;
unsigned short iind;
NR_DL_FRAME_PARMS *frame_parms = &gNB->frame_parms; NR_DL_FRAME_PARMS *frame_parms = &gNB->frame_parms;
unsigned char harq_pid = dlsch->current_harq_pid; unsigned char harq_pid = dlsch->harq_ids[subframe];
unsigned short nb_rb = dlsch->harq_processes[harq_pid]->nb_rb; unsigned short nb_rb = dlsch->harq_processes[harq_pid]->nb_rb;
unsigned int A, Z; unsigned int A, Z;
unsigned *pz = &Z; unsigned *pz = &Z;
unsigned char mod_order; unsigned char mod_order;
unsigned int Kr=0,Kr_bytes,r,r_offset=0,Kr_int=0; unsigned int Kr=0,r,r_offset=0;//Kr_bytes
unsigned short m=dlsch->harq_processes[harq_pid]->mcs; //unsigned short m=dlsch->harq_processes[harq_pid]->mcs;
uint8_t beamforming_mode=0; //uint8_t beamforming_mode=0;
uint8_t *d_tmp[MAX_NUM_DLSCH_SEGMENTS]; uint8_t *d_tmp[MAX_NUM_DLSCH_SEGMENTS];
double rate = 0.33; //double rate = 0.33;
uint8_t kb,BG; uint8_t kb,BG=1;
uint32_t E; uint32_t E;
uint8_t Ilbrm = 0; uint8_t Ilbrm = 0;
uint32_t Tbslbrm = 950984; //to compute tbs uint32_t Tbslbrm = 950984; //max tbs
uint16_t nb_symb_sch =2;
uint8_t nb_re_dmrs = 6;
uint16_t length_dmrs = 1;
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_ENB_DLSCH_ENCODING, VCD_FUNCTION_IN); VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_ENB_DLSCH_ENCODING, VCD_FUNCTION_IN);
dlsch->harq_processes[harq_pid]->TBS= nr_compute_tbs(dlsch->harq_processes[harq_pid]->mcs,
nb_rb,nb_symb_sch,nb_re_dmrs,length_dmrs,
dlsch->harq_processes[harq_pid]->Nl);
A = dlsch->harq_processes[harq_pid]->TBS; A = dlsch->harq_processes[harq_pid]->TBS;
//printf("Encoder: A: %d frame.subframe %d.%d \n",A, frame,subframe); //printf("Encoder: A: %d frame.subframe %d.%d \n",A, frame,subframe);
mod_order = get_nr_Qm(dlsch->harq_processes[harq_pid]->mcs); mod_order = get_nr_Qm(dlsch->harq_processes[harq_pid]->mcs);
G = get_G(frame_parms,nb_rb,dlsch->harq_processes[harq_pid]->rb_alloc,mod_order,dlsch->harq_processes[harq_pid]->Nl,num_pdcch_symbols,frame,subframe,beamforming_mode); G = nr_get_G(nb_rb, nb_symb_sch, nb_re_dmrs, length_dmrs,mod_order);
Tbslbrm = nr_compute_tbs(28,nb_rb,frame_parms->symbols_per_slot,0,0, dlsch->harq_processes[harq_pid]->Nl);
// if (dlsch->harq_processes[harq_pid]->Ndi == 1) { // this is a new packet // if (dlsch->harq_processes[harq_pid]->Ndi == 1) { // this is a new packet
if (dlsch->harq_processes[harq_pid]->round == 0) { // this is a new packet if (dlsch->harq_processes[harq_pid]->round == 0) { // this is a new packet
...@@ -324,7 +333,7 @@ int dlsch_encoding(PHY_VARS_gNB *gNB, ...@@ -324,7 +333,7 @@ int dlsch_encoding(PHY_VARS_gNB *gNB,
//printf("Encoder: B %d F %d \n",dlsch->harq_processes[harq_pid]->B, dlsch->harq_processes[harq_pid]->F); //printf("Encoder: B %d F %d \n",dlsch->harq_processes[harq_pid]->B, dlsch->harq_processes[harq_pid]->F);
Kr = dlsch->harq_processes[harq_pid]->K; Kr = dlsch->harq_processes[harq_pid]->K;
Kr_bytes = Kr>>3; //Kr_bytes = Kr>>3;
start_meas(te_stats); start_meas(te_stats);
for (r=0; r<dlsch->harq_processes[harq_pid]->C; r++) { for (r=0; r<dlsch->harq_processes[harq_pid]->C; r++) {
...@@ -394,7 +403,7 @@ int dlsch_encoding(PHY_VARS_gNB *gNB, ...@@ -394,7 +403,7 @@ int dlsch_encoding(PHY_VARS_gNB *gNB,
start_meas(i_stats); start_meas(i_stats);
nr_interleaving_ldpc(E, nr_interleaving_ldpc(E,
&dlsch->harq_processes[harq_pid]->Qm, dlsch->harq_processes[harq_pid]->Qm,
dlsch->harq_processes[harq_pid]->e+r_offset, dlsch->harq_processes[harq_pid]->e+r_offset,
dlsch->harq_processes[harq_pid]->f+r_offset); dlsch->harq_processes[harq_pid]->f+r_offset);
stop_meas(i_stats); stop_meas(i_stats);
......
...@@ -79,3 +79,9 @@ uint32_t nr_get_code_rate(uint8_t Imcs, uint8_t table_idx) { ...@@ -79,3 +79,9 @@ uint32_t nr_get_code_rate(uint8_t Imcs, uint8_t table_idx) {
AssertFatal(0, "Invalid MCS table index %d (expected in range [1,3])\n", table_idx); AssertFatal(0, "Invalid MCS table index %d (expected in range [1,3])\n", table_idx);
} }
} }
uint32_t nr_get_G(uint16_t nb_rb, uint16_t nb_symb_sch,uint8_t nb_re_dmrs,uint16_t length_dmrs, uint8_t Qm) {
uint32_t G;
G = ((12*nb_symb_sch)-(nb_re_dmrs*length_dmrs))*nb_rb*Qm;
return(G);
}
...@@ -35,6 +35,7 @@ ...@@ -35,6 +35,7 @@
#include "PHY/CODING/coding_extern.h" #include "PHY/CODING/coding_extern.h"
#include "PHY/CODING/coding_defs.h" #include "PHY/CODING/coding_defs.h"
#include "PHY/NR_TRANSPORT/nr_transport_common_proto.h" #include "PHY/NR_TRANSPORT/nr_transport_common_proto.h"
#include "PHY/NR_TRANSPORT/nr_dlsch.h"
//#include "SCHED/extern.h" //#include "SCHED/extern.h"
#include "SIMULATION/TOOLS/sim.h" #include "SIMULATION/TOOLS/sim.h"
#include "targets/RT/USER/nr-uesoftmodem.h" #include "targets/RT/USER/nr-uesoftmodem.h"
...@@ -65,13 +66,13 @@ void free_nr_ue_dlsch(NR_UE_DLSCH_t *dlsch) ...@@ -65,13 +66,13 @@ void free_nr_ue_dlsch(NR_UE_DLSCH_t *dlsch)
} }
for (r=0; r<MAX_NUM_NR_DLSCH_SEGMENTS; r++) { for (r=0; r<MAX_NUM_NR_DLSCH_SEGMENTS; r++) {
free16(dlsch->harq_processes[i]->c[r],((r==0)?8:0) + 3+1056); free16(dlsch->harq_processes[i]->c[r],1056);
dlsch->harq_processes[i]->c[r] = NULL; dlsch->harq_processes[i]->c[r] = NULL;
} }
for (r=0; r<MAX_NUM_NR_DLSCH_SEGMENTS; r++) for (r=0; r<MAX_NUM_NR_DLSCH_SEGMENTS; r++)
if (dlsch->harq_processes[i]->d[r]) { if (dlsch->harq_processes[i]->d[r]) {
free16(dlsch->harq_processes[i]->d[r],((3*8*8448)+12+96)*sizeof(short)); free16(dlsch->harq_processes[i]->d[r],(3*8448)*sizeof(short));
dlsch->harq_processes[i]->d[r] = NULL; dlsch->harq_processes[i]->d[r] = NULL;
} }
...@@ -201,8 +202,11 @@ uint32_t nr_dlsch_decoding(PHY_VARS_NR_UE *phy_vars_ue, ...@@ -201,8 +202,11 @@ uint32_t nr_dlsch_decoding(PHY_VARS_NR_UE *phy_vars_ue,
// int16_t *p_invd =&inv_d; // int16_t *p_invd =&inv_d;
uint8_t kb, kc; uint8_t kb, kc;
uint8_t Ilbrm = 0; uint8_t Ilbrm = 0;
uint32_t Tbslbrm = 950984; //to compute tbs uint32_t Tbslbrm = 950984;
uint16_t nb_prb = 106; //to update uint16_t nb_rb = 106; //to update
uint16_t nb_symb_sch = 2;
uint8_t nb_re_dmrs = 6;
uint16_t length_dmrs = 1;
uint32_t i,j; uint32_t i,j;
// uint32_t k; // uint32_t k;
...@@ -252,10 +256,12 @@ uint32_t nr_dlsch_decoding(PHY_VARS_NR_UE *phy_vars_ue, ...@@ -252,10 +256,12 @@ uint32_t nr_dlsch_decoding(PHY_VARS_NR_UE *phy_vars_ue,
harq_process->trials[harq_process->round]++; harq_process->trials[harq_process->round]++;
harq_process->TBS = nr_compute_tbs(harq_process->mcs,nb_rb,nb_symb_sch,nb_re_dmrs,length_dmrs, harq_process->Nl);
A = harq_process->TBS; A = harq_process->TBS;
ret = dlsch->max_ldpc_iterations; ret = dlsch->max_ldpc_iterations;
harq_process->G = nr_get_G(nb_rb, nb_symb_sch, nb_re_dmrs, length_dmrs, harq_process->Qm);
G = harq_process->G; G = harq_process->G;
//get_G(frame_parms,nb_rb,dlsch->rb_alloc,mod_order,num_pdcch_symbols,phy_vars_ue->frame,subframe); //get_G(frame_parms,nb_rb,dlsch->rb_alloc,mod_order,num_pdcch_symbols,phy_vars_ue->frame,subframe);
...@@ -326,7 +332,7 @@ uint32_t nr_dlsch_decoding(PHY_VARS_NR_UE *phy_vars_ue, ...@@ -326,7 +332,7 @@ uint32_t nr_dlsch_decoding(PHY_VARS_NR_UE *phy_vars_ue,
K_bytes_F = Kr_bytes-(harq_process->F>>3); K_bytes_F = Kr_bytes-(harq_process->F>>3);
Tbslbrm = nr_compute_tbs(harq_process->mcs,nb_prb,frame_parms->symbols_per_slot,0,0, harq_process->Nl); Tbslbrm = nr_compute_tbs(28,nb_rb,frame_parms->symbols_per_slot,0,0, harq_process->Nl);
for (r=0; r<harq_process->C; r++) { for (r=0; r<harq_process->C; r++) {
......
...@@ -114,7 +114,7 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue, ...@@ -114,7 +114,7 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue,
unsigned char aatx,aarx; unsigned char aatx,aarx;
unsigned short nb_rb = 0, round; unsigned short nb_rb = 0, nb_re =0, round;
int avgs = 0;// rb; int avgs = 0;// rb;
NR_DL_UE_HARQ_t *dlsch0_harq,*dlsch1_harq = 0; NR_DL_UE_HARQ_t *dlsch0_harq,*dlsch1_harq = 0;
...@@ -839,6 +839,9 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue, ...@@ -839,6 +839,9 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue,
//i_mod should have been passed as a parameter //i_mod should have been passed as a parameter
} }
nb_re= (symbol==2)? (nb_rb*6):(nb_rb*12);
pdsch_vars[eNB_id]->llr_offset[symbol] = nb_re*dlsch0_harq->Qm * 2;
#if UE_TIMING_TRACE #if UE_TIMING_TRACE
stop_meas(&ue->generic_stat_bis[ue->current_thread_id[nr_tti_rx]][slot]); stop_meas(&ue->generic_stat_bis[ue->current_thread_id[nr_tti_rx]][slot]);
#if DISABLE_LOG_X #if DISABLE_LOG_X
...@@ -879,29 +882,27 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue, ...@@ -879,29 +882,27 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue,
switch (dlsch0_harq->Qm) { switch (dlsch0_harq->Qm) {
case 2 : case 2 :
if ((rx_type==rx_standard) || (codeword_TB1 == -1)) { if ((rx_type==rx_standard) || (codeword_TB1 == -1)) {
dlsch_qpsk_llr(frame_parms, nr_dlsch_qpsk_llr(frame_parms,
pdsch_vars[eNB_id]->rxdataF_comp0, pdsch_vars[eNB_id]->rxdataF_comp0,
(int16_t*)pllr_symbol_cw0, (int16_t*)pllr_symbol_cw0,
symbol, symbol,
first_symbol_flag, first_symbol_flag,
nb_rb, nb_rb,
adjust_G2(frame_parms,dlsch0_harq->rb_alloc_even,2,nr_tti_rx,symbol),
beamforming_mode); beamforming_mode);
} else if (codeword_TB0 == -1){ } else if (codeword_TB0 == -1){
dlsch_qpsk_llr(frame_parms, nr_dlsch_qpsk_llr(frame_parms,
pdsch_vars[eNB_id]->rxdataF_comp0, pdsch_vars[eNB_id]->rxdataF_comp0,
(int16_t*)pllr_symbol_cw1, (int16_t*)pllr_symbol_cw1,
symbol, symbol,
first_symbol_flag, first_symbol_flag,
nb_rb, nb_rb,
adjust_G2(frame_parms,dlsch0_harq->rb_alloc_even,2,nr_tti_rx,symbol),
beamforming_mode); beamforming_mode);
} }
else if (rx_type >= rx_IC_single_stream) { else if (rx_type >= rx_IC_single_stream) {
if (dlsch1_harq->Qm == 2) { if (dlsch1_harq->Qm == 2) {
dlsch_qpsk_qpsk_llr(frame_parms, nr_dlsch_qpsk_qpsk_llr(frame_parms,
pdsch_vars[eNB_id]->rxdataF_comp0, pdsch_vars[eNB_id]->rxdataF_comp0,
rxdataF_comp_ptr, rxdataF_comp_ptr,
pdsch_vars[eNB_id]->dl_ch_rho2_ext, pdsch_vars[eNB_id]->dl_ch_rho2_ext,
...@@ -910,7 +911,7 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue, ...@@ -910,7 +911,7 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue,
adjust_G2(frame_parms,dlsch0_harq->rb_alloc_even,2,nr_tti_rx,symbol), adjust_G2(frame_parms,dlsch0_harq->rb_alloc_even,2,nr_tti_rx,symbol),
pdsch_vars[eNB_id]->llr128); pdsch_vars[eNB_id]->llr128);
if (rx_type==rx_IC_dual_stream) { if (rx_type==rx_IC_dual_stream) {
dlsch_qpsk_qpsk_llr(frame_parms, nr_dlsch_qpsk_qpsk_llr(frame_parms,
rxdataF_comp_ptr, rxdataF_comp_ptr,
pdsch_vars[eNB_id]->rxdataF_comp0, pdsch_vars[eNB_id]->rxdataF_comp0,
pdsch_vars[eNB_id]->dl_ch_rho_ext[harq_pid][round], pdsch_vars[eNB_id]->dl_ch_rho_ext[harq_pid][round],
...@@ -921,7 +922,7 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue, ...@@ -921,7 +922,7 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue,
} }
} }
else if (dlsch1_harq->Qm == 4) { else if (dlsch1_harq->Qm == 4) {
dlsch_qpsk_16qam_llr(frame_parms, nr_dlsch_qpsk_16qam_llr(frame_parms,
pdsch_vars[eNB_id]->rxdataF_comp0, pdsch_vars[eNB_id]->rxdataF_comp0,
rxdataF_comp_ptr,//i rxdataF_comp_ptr,//i
dl_ch_mag_ptr,//i dl_ch_mag_ptr,//i
...@@ -931,7 +932,7 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue, ...@@ -931,7 +932,7 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue,
adjust_G2(frame_parms,dlsch0_harq->rb_alloc_even,2,nr_tti_rx,symbol), adjust_G2(frame_parms,dlsch0_harq->rb_alloc_even,2,nr_tti_rx,symbol),
pdsch_vars[eNB_id]->llr128); pdsch_vars[eNB_id]->llr128);
if (rx_type==rx_IC_dual_stream) { if (rx_type==rx_IC_dual_stream) {
dlsch_16qam_qpsk_llr(frame_parms, nr_dlsch_16qam_qpsk_llr(frame_parms,
rxdataF_comp_ptr, rxdataF_comp_ptr,
pdsch_vars[eNB_id]->rxdataF_comp0,//i pdsch_vars[eNB_id]->rxdataF_comp0,//i
dl_ch_mag_ptr, dl_ch_mag_ptr,
...@@ -943,7 +944,7 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue, ...@@ -943,7 +944,7 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue,
} }
} }
else { else {
dlsch_qpsk_64qam_llr(frame_parms, nr_dlsch_qpsk_64qam_llr(frame_parms,
pdsch_vars[eNB_id]->rxdataF_comp0, pdsch_vars[eNB_id]->rxdataF_comp0,
rxdataF_comp_ptr,//i rxdataF_comp_ptr,//i
dl_ch_mag_ptr,//i dl_ch_mag_ptr,//i
...@@ -953,7 +954,7 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue, ...@@ -953,7 +954,7 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue,
adjust_G2(frame_parms,dlsch0_harq->rb_alloc_even,2,nr_tti_rx,symbol), adjust_G2(frame_parms,dlsch0_harq->rb_alloc_even,2,nr_tti_rx,symbol),
pdsch_vars[eNB_id]->llr128); pdsch_vars[eNB_id]->llr128);
if (rx_type==rx_IC_dual_stream) { if (rx_type==rx_IC_dual_stream) {
dlsch_64qam_qpsk_llr(frame_parms, nr_dlsch_64qam_qpsk_llr(frame_parms,
rxdataF_comp_ptr, rxdataF_comp_ptr,
pdsch_vars[eNB_id]->rxdataF_comp0,//i pdsch_vars[eNB_id]->rxdataF_comp0,//i
dl_ch_mag_ptr, dl_ch_mag_ptr,
...@@ -968,27 +969,25 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue, ...@@ -968,27 +969,25 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue,
break; break;
case 4 : case 4 :
if ((rx_type==rx_standard ) || (codeword_TB1 == -1)) { if ((rx_type==rx_standard ) || (codeword_TB1 == -1)) {
dlsch_16qam_llr(frame_parms, nr_dlsch_16qam_llr(frame_parms,
pdsch_vars[eNB_id]->rxdataF_comp0, pdsch_vars[eNB_id]->rxdataF_comp0,
pdsch_vars[eNB_id]->llr[0], pdsch_vars[eNB_id]->llr[0],
pdsch_vars[eNB_id]->dl_ch_mag0, pdsch_vars[eNB_id]->dl_ch_mag0,
symbol,first_symbol_flag,nb_rb, symbol,first_symbol_flag,nb_rb,
adjust_G2(frame_parms,dlsch0_harq->rb_alloc_even,4,nr_tti_rx,symbol),
pdsch_vars[eNB_id]->llr128, pdsch_vars[eNB_id]->llr128,
beamforming_mode); beamforming_mode);
} else if (codeword_TB0 == -1){ } else if (codeword_TB0 == -1){
dlsch_16qam_llr(frame_parms, nr_dlsch_16qam_llr(frame_parms,
pdsch_vars[eNB_id]->rxdataF_comp0, pdsch_vars[eNB_id]->rxdataF_comp0,
pdsch_vars[eNB_id]->llr[1], pdsch_vars[eNB_id]->llr[1],
pdsch_vars[eNB_id]->dl_ch_mag0, pdsch_vars[eNB_id]->dl_ch_mag0,
symbol,first_symbol_flag,nb_rb, symbol,first_symbol_flag,nb_rb,
adjust_G2(frame_parms,dlsch0_harq->rb_alloc_even,4,nr_tti_rx,symbol),
pdsch_vars[eNB_id]->llr128_2ndstream, pdsch_vars[eNB_id]->llr128_2ndstream,
beamforming_mode); beamforming_mode);
} }
else if (rx_type >= rx_IC_single_stream) { else if (rx_type >= rx_IC_single_stream) {
if (dlsch1_harq->Qm == 2) { if (dlsch1_harq->Qm == 2) {
dlsch_16qam_qpsk_llr(frame_parms, nr_dlsch_16qam_qpsk_llr(frame_parms,
pdsch_vars[eNB_id]->rxdataF_comp0, pdsch_vars[eNB_id]->rxdataF_comp0,
rxdataF_comp_ptr,//i rxdataF_comp_ptr,//i
pdsch_vars[eNB_id]->dl_ch_mag0, pdsch_vars[eNB_id]->dl_ch_mag0,
...@@ -998,7 +997,7 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue, ...@@ -998,7 +997,7 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue,
adjust_G2(frame_parms,dlsch0_harq->rb_alloc_even,4,nr_tti_rx,symbol), adjust_G2(frame_parms,dlsch0_harq->rb_alloc_even,4,nr_tti_rx,symbol),
pdsch_vars[eNB_id]->llr128); pdsch_vars[eNB_id]->llr128);
if (rx_type==rx_IC_dual_stream) { if (rx_type==rx_IC_dual_stream) {
dlsch_qpsk_16qam_llr(frame_parms, nr_dlsch_qpsk_16qam_llr(frame_parms,
rxdataF_comp_ptr, rxdataF_comp_ptr,
pdsch_vars[eNB_id]->rxdataF_comp0,//i pdsch_vars[eNB_id]->rxdataF_comp0,//i
pdsch_vars[eNB_id]->dl_ch_mag0,//i pdsch_vars[eNB_id]->dl_ch_mag0,//i
...@@ -1010,7 +1009,7 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue, ...@@ -1010,7 +1009,7 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue,
} }
} }
else if (dlsch1_harq->Qm == 4) { else if (dlsch1_harq->Qm == 4) {
dlsch_16qam_16qam_llr(frame_parms, nr_dlsch_16qam_16qam_llr(frame_parms,
pdsch_vars[eNB_id]->rxdataF_comp0, pdsch_vars[eNB_id]->rxdataF_comp0,
rxdataF_comp_ptr,//i rxdataF_comp_ptr,//i
pdsch_vars[eNB_id]->dl_ch_mag0, pdsch_vars[eNB_id]->dl_ch_mag0,
...@@ -1021,7 +1020,7 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue, ...@@ -1021,7 +1020,7 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue,
adjust_G2(frame_parms,dlsch0_harq->rb_alloc_even,4,nr_tti_rx,symbol), adjust_G2(frame_parms,dlsch0_harq->rb_alloc_even,4,nr_tti_rx,symbol),
pdsch_vars[eNB_id]->llr128); pdsch_vars[eNB_id]->llr128);
if (rx_type==rx_IC_dual_stream) { if (rx_type==rx_IC_dual_stream) {
dlsch_16qam_16qam_llr(frame_parms, nr_dlsch_16qam_16qam_llr(frame_parms,
rxdataF_comp_ptr, rxdataF_comp_ptr,
pdsch_vars[eNB_id]->rxdataF_comp0,//i pdsch_vars[eNB_id]->rxdataF_comp0,//i
dl_ch_mag_ptr, dl_ch_mag_ptr,
...@@ -1034,7 +1033,7 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue, ...@@ -1034,7 +1033,7 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue,
} }
} }
else { else {
dlsch_16qam_64qam_llr(frame_parms, nr_dlsch_16qam_64qam_llr(frame_parms,
pdsch_vars[eNB_id]->rxdataF_comp0, pdsch_vars[eNB_id]->rxdataF_comp0,
rxdataF_comp_ptr,//i rxdataF_comp_ptr,//i
pdsch_vars[eNB_id]->dl_ch_mag0, pdsch_vars[eNB_id]->dl_ch_mag0,
...@@ -1045,7 +1044,7 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue, ...@@ -1045,7 +1044,7 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue,
adjust_G2(frame_parms,dlsch0_harq->rb_alloc_even,4,nr_tti_rx,symbol), adjust_G2(frame_parms,dlsch0_harq->rb_alloc_even,4,nr_tti_rx,symbol),
pdsch_vars[eNB_id]->llr128); pdsch_vars[eNB_id]->llr128);
if (rx_type==rx_IC_dual_stream) { if (rx_type==rx_IC_dual_stream) {
dlsch_64qam_16qam_llr(frame_parms, nr_dlsch_64qam_16qam_llr(frame_parms,
rxdataF_comp_ptr, rxdataF_comp_ptr,
pdsch_vars[eNB_id]->rxdataF_comp0, pdsch_vars[eNB_id]->rxdataF_comp0,
dl_ch_mag_ptr, dl_ch_mag_ptr,
...@@ -1061,29 +1060,27 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue, ...@@ -1061,29 +1060,27 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue,
break; break;
case 6 : case 6 :
if ((rx_type==rx_standard) || (codeword_TB1 == -1)) { if ((rx_type==rx_standard) || (codeword_TB1 == -1)) {
dlsch_64qam_llr(frame_parms, nr_dlsch_64qam_llr(frame_parms,
pdsch_vars[eNB_id]->rxdataF_comp0, pdsch_vars[eNB_id]->rxdataF_comp0,
(int16_t*)pllr_symbol_cw0, (int16_t*)pllr_symbol_cw0,
pdsch_vars[eNB_id]->dl_ch_mag0, pdsch_vars[eNB_id]->dl_ch_mag0,
pdsch_vars[eNB_id]->dl_ch_magb0, pdsch_vars[eNB_id]->dl_ch_magb0,
symbol,first_symbol_flag,nb_rb, symbol,first_symbol_flag,nb_rb,
adjust_G2(frame_parms,dlsch0_harq->rb_alloc_even,6,nr_tti_rx,symbol),
pdsch_vars[eNB_id]->llr_offset[symbol], pdsch_vars[eNB_id]->llr_offset[symbol],
beamforming_mode); beamforming_mode);
} else if (codeword_TB0 == -1){ } else if (codeword_TB0 == -1){
dlsch_64qam_llr(frame_parms, nr_dlsch_64qam_llr(frame_parms,
pdsch_vars[eNB_id]->rxdataF_comp0, pdsch_vars[eNB_id]->rxdataF_comp0,
(int16_t*)pllr_symbol_cw1, (int16_t*)pllr_symbol_cw1,
pdsch_vars[eNB_id]->dl_ch_mag0, pdsch_vars[eNB_id]->dl_ch_mag0,
pdsch_vars[eNB_id]->dl_ch_magb0, pdsch_vars[eNB_id]->dl_ch_magb0,
symbol,first_symbol_flag,nb_rb, symbol,first_symbol_flag,nb_rb,
adjust_G2(frame_parms,dlsch0_harq->rb_alloc_even,6,nr_tti_rx,symbol),
pdsch_vars[eNB_id]->llr_offset[symbol], pdsch_vars[eNB_id]->llr_offset[symbol],
beamforming_mode); beamforming_mode);
} }
else if (rx_type >= rx_IC_single_stream) { else if (rx_type >= rx_IC_single_stream) {
if (dlsch1_harq->Qm == 2) { if (dlsch1_harq->Qm == 2) {
dlsch_64qam_qpsk_llr(frame_parms, nr_dlsch_64qam_qpsk_llr(frame_parms,
pdsch_vars[eNB_id]->rxdataF_comp0, pdsch_vars[eNB_id]->rxdataF_comp0,
rxdataF_comp_ptr,//i rxdataF_comp_ptr,//i
pdsch_vars[eNB_id]->dl_ch_mag0, pdsch_vars[eNB_id]->dl_ch_mag0,
...@@ -1093,7 +1090,7 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue, ...@@ -1093,7 +1090,7 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue,
adjust_G2(frame_parms,dlsch0_harq->rb_alloc_even,6,nr_tti_rx,symbol), adjust_G2(frame_parms,dlsch0_harq->rb_alloc_even,6,nr_tti_rx,symbol),
pdsch_vars[eNB_id]->llr128); pdsch_vars[eNB_id]->llr128);
if (rx_type==rx_IC_dual_stream) { if (rx_type==rx_IC_dual_stream) {
dlsch_qpsk_64qam_llr(frame_parms, nr_dlsch_qpsk_64qam_llr(frame_parms,
rxdataF_comp_ptr, rxdataF_comp_ptr,
pdsch_vars[eNB_id]->rxdataF_comp0,//i pdsch_vars[eNB_id]->rxdataF_comp0,//i
pdsch_vars[eNB_id]->dl_ch_mag0, pdsch_vars[eNB_id]->dl_ch_mag0,
...@@ -1105,7 +1102,7 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue, ...@@ -1105,7 +1102,7 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue,
} }
} }
else if (dlsch1_harq->Qm == 4) { else if (dlsch1_harq->Qm == 4) {
dlsch_64qam_16qam_llr(frame_parms, nr_dlsch_64qam_16qam_llr(frame_parms,
pdsch_vars[eNB_id]->rxdataF_comp0, pdsch_vars[eNB_id]->rxdataF_comp0,
rxdataF_comp_ptr,//i rxdataF_comp_ptr,//i
pdsch_vars[eNB_id]->dl_ch_mag0, pdsch_vars[eNB_id]->dl_ch_mag0,
...@@ -1116,7 +1113,7 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue, ...@@ -1116,7 +1113,7 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue,
adjust_G2(frame_parms,dlsch0_harq->rb_alloc_even,6,nr_tti_rx,symbol), adjust_G2(frame_parms,dlsch0_harq->rb_alloc_even,6,nr_tti_rx,symbol),
pdsch_vars[eNB_id]->llr128); pdsch_vars[eNB_id]->llr128);
if (rx_type==rx_IC_dual_stream) { if (rx_type==rx_IC_dual_stream) {
dlsch_16qam_64qam_llr(frame_parms, nr_dlsch_16qam_64qam_llr(frame_parms,
rxdataF_comp_ptr, rxdataF_comp_ptr,
pdsch_vars[eNB_id]->rxdataF_comp0,//i pdsch_vars[eNB_id]->rxdataF_comp0,//i
dl_ch_mag_ptr, dl_ch_mag_ptr,
...@@ -1129,7 +1126,7 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue, ...@@ -1129,7 +1126,7 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue,
} }
} }
else { else {
dlsch_64qam_64qam_llr(frame_parms, nr_dlsch_64qam_64qam_llr(frame_parms,
pdsch_vars[eNB_id]->rxdataF_comp0, pdsch_vars[eNB_id]->rxdataF_comp0,
rxdataF_comp_ptr,//i rxdataF_comp_ptr,//i
pdsch_vars[eNB_id]->dl_ch_mag0, pdsch_vars[eNB_id]->dl_ch_mag0,
...@@ -1140,7 +1137,7 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue, ...@@ -1140,7 +1137,7 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue,
adjust_G2(frame_parms,dlsch0_harq->rb_alloc_even,6,nr_tti_rx,symbol), adjust_G2(frame_parms,dlsch0_harq->rb_alloc_even,6,nr_tti_rx,symbol),
pdsch_vars[eNB_id]->llr_offset[symbol]); pdsch_vars[eNB_id]->llr_offset[symbol]);
if (rx_type==rx_IC_dual_stream) { if (rx_type==rx_IC_dual_stream) {
dlsch_64qam_64qam_llr(frame_parms, nr_dlsch_64qam_64qam_llr(frame_parms,
rxdataF_comp_ptr, rxdataF_comp_ptr,
pdsch_vars[eNB_id]->rxdataF_comp0,//i pdsch_vars[eNB_id]->rxdataF_comp0,//i
dl_ch_mag_ptr, dl_ch_mag_ptr,
...@@ -1163,35 +1160,32 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue, ...@@ -1163,35 +1160,32 @@ int nr_rx_pdsch(PHY_VARS_NR_UE *ue,
switch (get_Qm(dlsch1_harq->mcs)) { switch (get_Qm(dlsch1_harq->mcs)) {
case 2 : case 2 :
if (rx_type==rx_standard) { if (rx_type==rx_standard) {
dlsch_qpsk_llr(frame_parms, nr_dlsch_qpsk_llr(frame_parms,
pdsch_vars[eNB_id]->rxdataF_comp0, pdsch_vars[eNB_id]->rxdataF_comp0,
(int16_t*)pllr_symbol_cw0, (int16_t*)pllr_symbol_cw0,
symbol,first_symbol_flag,nb_rb, symbol,first_symbol_flag,nb_rb,
adjust_G2(frame_parms,dlsch0_harq->rb_alloc_even,2,nr_tti_rx,symbol),
beamforming_mode); beamforming_mode);
} }
break; break;
case 4: case 4:
if (rx_type==rx_standard) { if (rx_type==rx_standard) {
dlsch_16qam_llr(frame_parms, nr_dlsch_16qam_llr(frame_parms,
pdsch_vars[eNB_id]->rxdataF_comp0, pdsch_vars[eNB_id]->rxdataF_comp0,
pdsch_vars[eNB_id]->llr[0], pdsch_vars[eNB_id]->llr[0],
pdsch_vars[eNB_id]->dl_ch_mag0, pdsch_vars[eNB_id]->dl_ch_mag0,
symbol,first_symbol_flag,nb_rb, symbol,first_symbol_flag,nb_rb,
adjust_G2(frame_parms,dlsch0_harq->rb_alloc_even,4,nr_tti_rx,symbol),
pdsch_vars[eNB_id]->llr128, pdsch_vars[eNB_id]->llr128,
beamforming_mode); beamforming_mode);
} }
break; break;
case 6 : case 6 :
if (rx_type==rx_standard) { if (rx_type==rx_standard) {
dlsch_64qam_llr(frame_parms, nr_dlsch_64qam_llr(frame_parms,
pdsch_vars[eNB_id]->rxdataF_comp0, pdsch_vars[eNB_id]->rxdataF_comp0,
(int16_t*)pllr_symbol_cw0, (int16_t*)pllr_symbol_cw0,
pdsch_vars[eNB_id]->dl_ch_mag0, pdsch_vars[eNB_id]->dl_ch_mag0,
pdsch_vars[eNB_id]->dl_ch_magb0, pdsch_vars[eNB_id]->dl_ch_magb0,
symbol,first_symbol_flag,nb_rb, symbol,first_symbol_flag,nb_rb,
adjust_G2(frame_parms,dlsch0_harq->rb_alloc_even,6,nr_tti_rx,symbol),
pdsch_vars[eNB_id]->llr_offset[symbol], pdsch_vars[eNB_id]->llr_offset[symbol],
beamforming_mode); beamforming_mode);
} }
......
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -106,7 +106,7 @@ void qpsk_qpsk(int16_t *stream0_in, ...@@ -106,7 +106,7 @@ void qpsk_qpsk(int16_t *stream0_in,
@param nb_rb number of RBs for this allocation @param nb_rb number of RBs for this allocation
@param pbch_pss_sss_adj Number of channel bits taken by PBCH/PSS/SSS @param pbch_pss_sss_adj Number of channel bits taken by PBCH/PSS/SSS
@param llr128p pointer to pointer to symbol in dlsch_llr*/ @param llr128p pointer to pointer to symbol in dlsch_llr*/
int32_t dlsch_qpsk_qpsk_llr(NR_DL_FRAME_PARMS *frame_parms, int32_t nr_dlsch_qpsk_qpsk_llr(NR_DL_FRAME_PARMS *frame_parms,
int32_t **rxdataF_comp, int32_t **rxdataF_comp,
int32_t **rxdataF_comp_i, int32_t **rxdataF_comp_i,
int32_t **rho_i, int32_t **rho_i,
...@@ -142,7 +142,7 @@ void qpsk_qam16(int16_t *stream0_in, ...@@ -142,7 +142,7 @@ void qpsk_qam16(int16_t *stream0_in,
@param nb_rb number of RBs for this allocation @param nb_rb number of RBs for this allocation
@param pbch_pss_sss_adj Number of channel bits taken by PBCH/PSS/SSS @param pbch_pss_sss_adj Number of channel bits taken by PBCH/PSS/SSS
@param llr128p pointer to pointer to symbol in dlsch_llr*/ @param llr128p pointer to pointer to symbol in dlsch_llr*/
int32_t dlsch_qpsk_16qam_llr(NR_DL_FRAME_PARMS *frame_parms, int32_t nr_dlsch_qpsk_16qam_llr(NR_DL_FRAME_PARMS *frame_parms,
int32_t **rxdataF_comp, int32_t **rxdataF_comp,
int32_t **rxdataF_comp_i, int32_t **rxdataF_comp_i,
int **dl_ch_mag_i, //|h_1|^2*(2/sqrt{10}) int **dl_ch_mag_i, //|h_1|^2*(2/sqrt{10})
...@@ -154,6 +154,7 @@ int32_t dlsch_qpsk_16qam_llr(NR_DL_FRAME_PARMS *frame_parms, ...@@ -154,6 +154,7 @@ int32_t dlsch_qpsk_16qam_llr(NR_DL_FRAME_PARMS *frame_parms,
uint16_t pbch_pss_sss_adj, uint16_t pbch_pss_sss_adj,
int16_t **llr128p); int16_t **llr128p);
/** \brief This function computes the LLRs for ML (max-logsum approximation) dual-stream QPSK/64QAM reception. /** \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 stream0_in Input from channel compensated (MR combined) stream 0
@param stream1_in Input from channel compensated (MR combined) stream 1 @param stream1_in Input from channel compensated (MR combined) stream 1
...@@ -179,7 +180,7 @@ void qpsk_qam64(int16_t *stream0_in, ...@@ -179,7 +180,7 @@ void qpsk_qam64(int16_t *stream0_in,
@param nb_rb number of RBs for this allocation @param nb_rb number of RBs for this allocation
@param pbch_pss_sss_adj Number of channel bits taken by PBCH/PSS/SSS @param pbch_pss_sss_adj Number of channel bits taken by PBCH/PSS/SSS
@param llr128p pointer to pointer to symbol in dlsch_llr*/ @param llr128p pointer to pointer to symbol in dlsch_llr*/
int32_t dlsch_qpsk_64qam_llr(NR_DL_FRAME_PARMS *frame_parms, int32_t nr_dlsch_qpsk_64qam_llr(NR_DL_FRAME_PARMS *frame_parms,
int32_t **rxdataF_comp, int32_t **rxdataF_comp,
int32_t **rxdataF_comp_i, int32_t **rxdataF_comp_i,
int **dl_ch_mag_i, //|h_1|^2*(2/sqrt{10}) int **dl_ch_mag_i, //|h_1|^2*(2/sqrt{10})
...@@ -217,7 +218,7 @@ void qam16_qpsk(short *stream0_in, ...@@ -217,7 +218,7 @@ void qam16_qpsk(short *stream0_in,
@param nb_rb number of RBs for this allocation @param nb_rb number of RBs for this allocation
@param pbch_pss_sss_adj Number of channel bits taken by PBCH/PSS/SSS @param pbch_pss_sss_adj Number of channel bits taken by PBCH/PSS/SSS
@param llr16p pointer to pointer to symbol in dlsch_llr*/ @param llr16p pointer to pointer to symbol in dlsch_llr*/
int dlsch_16qam_qpsk_llr(NR_DL_FRAME_PARMS *frame_parms, int nr_dlsch_16qam_qpsk_llr(NR_DL_FRAME_PARMS *frame_parms,
int **rxdataF_comp, int **rxdataF_comp,
int **rxdataF_comp_i, int **rxdataF_comp_i,
int **dl_ch_mag, //|h_0|^2*(2/sqrt{10}) int **dl_ch_mag, //|h_0|^2*(2/sqrt{10})
...@@ -258,7 +259,7 @@ void qam16_qam16(short *stream0_in, ...@@ -258,7 +259,7 @@ void qam16_qam16(short *stream0_in,
@param nb_rb number of RBs for this allocation @param nb_rb number of RBs for this allocation
@param pbch_pss_sss_adj Number of channel bits taken by PBCH/PSS/SSS @param pbch_pss_sss_adj Number of channel bits taken by PBCH/PSS/SSS
@param llr16p pointer to pointer to symbol in dlsch_llr*/ @param llr16p pointer to pointer to symbol in dlsch_llr*/
int dlsch_16qam_16qam_llr(NR_DL_FRAME_PARMS *frame_parms, int nr_dlsch_16qam_16qam_llr(NR_DL_FRAME_PARMS *frame_parms,
int **rxdataF_comp, int **rxdataF_comp,
int **rxdataF_comp_i, int **rxdataF_comp_i,
int **dl_ch_mag, //|h_0|^2*(2/sqrt{10}) int **dl_ch_mag, //|h_0|^2*(2/sqrt{10})
...@@ -300,7 +301,7 @@ void qam16_qam64(short *stream0_in, ...@@ -300,7 +301,7 @@ void qam16_qam64(short *stream0_in,
@param nb_rb number of RBs for this allocation @param nb_rb number of RBs for this allocation
@param pbch_pss_sss_adj Number of channel bits taken by PBCH/PSS/SSS @param pbch_pss_sss_adj Number of channel bits taken by PBCH/PSS/SSS
@param llr16p pointer to pointer to symbol in dlsch_llr*/ @param llr16p pointer to pointer to symbol in dlsch_llr*/
int dlsch_16qam_64qam_llr(NR_DL_FRAME_PARMS *frame_parms, int nr_dlsch_16qam_64qam_llr(NR_DL_FRAME_PARMS *frame_parms,
int **rxdataF_comp, int **rxdataF_comp,
int **rxdataF_comp_i, int **rxdataF_comp_i,
int **dl_ch_mag, //|h_0|^2*(2/sqrt{10}) int **dl_ch_mag, //|h_0|^2*(2/sqrt{10})
...@@ -480,15 +481,13 @@ int dlsch_64qam_64qam_llr(NR_DL_FRAME_PARMS *frame_parms, ...@@ -480,15 +481,13 @@ int dlsch_64qam_64qam_llr(NR_DL_FRAME_PARMS *frame_parms,
@param llr128p pointer to pointer to symbol in dlsch_llr @param llr128p pointer to pointer to symbol in dlsch_llr
@param beamforming_mode beamforming mode @param beamforming_mode beamforming mode
*/ */
int32_t dlsch_qpsk_llr(NR_DL_FRAME_PARMS *frame_parms, int32_t nr_dlsch_qpsk_llr(NR_DL_FRAME_PARMS *frame_parms,
int32_t **rxdataF_comp, int32_t **rxdataF_comp,
int16_t *dlsch_llr, int16_t *dlsch_llr,
uint8_t symbol, uint8_t symbol,
uint8_t first_symbol_flag, uint8_t first_symbol_flag,
uint16_t nb_rb, uint16_t nb_rb,
uint16_t pbch_pss_sss_adj, uint8_t beamforming_mode);
//int16_t **llr128p,
uint8_t beamforming_mode);
/** /**
\brief This function generates log-likelihood ratios (decoder input) for single-stream 16QAM received waveforms \brief This function generates log-likelihood ratios (decoder input) for single-stream 16QAM received waveforms
...@@ -504,7 +503,7 @@ int32_t dlsch_qpsk_llr(NR_DL_FRAME_PARMS *frame_parms, ...@@ -504,7 +503,7 @@ int32_t dlsch_qpsk_llr(NR_DL_FRAME_PARMS *frame_parms,
@param beamforming_mode beamforming mode @param beamforming_mode beamforming mode
*/ */
int32_t dlsch_qpsk_llr_SIC(NR_DL_FRAME_PARMS *frame_parms, int32_t nr_dlsch_qpsk_llr_SIC(NR_DL_FRAME_PARMS *frame_parms,
int **rxdataF_comp, int **rxdataF_comp,
int32_t **sic_buffer, int32_t **sic_buffer,
int **rho_i, int **rho_i,
...@@ -515,15 +514,14 @@ int32_t dlsch_qpsk_llr_SIC(NR_DL_FRAME_PARMS *frame_parms, ...@@ -515,15 +514,14 @@ int32_t dlsch_qpsk_llr_SIC(NR_DL_FRAME_PARMS *frame_parms,
uint16_t mod_order_0, uint16_t mod_order_0,
uint32_t rb_alloc); uint32_t rb_alloc);
void dlsch_16qam_llr(NR_DL_FRAME_PARMS *frame_parms, void nr_dlsch_16qam_llr(NR_DL_FRAME_PARMS *frame_parms,
int32_t **rxdataF_comp, int32_t **rxdataF_comp,
int16_t *dlsch_llr, int16_t *dlsch_llr,
int32_t **dl_ch_mag, int32_t **dl_ch_mag,
uint8_t symbol, uint8_t symbol,
uint8_t first_symbol_flag, uint8_t first_symbol_flag,
uint16_t nb_rb, uint16_t nb_rb,
uint16_t pbch_pss_sss_adjust, int16_t **llr32p,
int16_t **llr128p,
uint8_t beamforming_mode); uint8_t beamforming_mode);
/** /**
\brief This function generates log-likelihood ratios (decoder input) for single-stream 16QAM received waveforms \brief This function generates log-likelihood ratios (decoder input) for single-stream 16QAM received waveforms
...@@ -538,7 +536,7 @@ void dlsch_16qam_llr(NR_DL_FRAME_PARMS *frame_parms, ...@@ -538,7 +536,7 @@ void dlsch_16qam_llr(NR_DL_FRAME_PARMS *frame_parms,
@param pbch_pss_sss_adjust PBCH/PSS/SSS RE adjustment (in REs) @param pbch_pss_sss_adjust PBCH/PSS/SSS RE adjustment (in REs)
@param beamforming_mode beamforming mode @param beamforming_mode beamforming mode
*/ */
void dlsch_16qam_llr_SIC (NR_DL_FRAME_PARMS *frame_parms, void nr_dlsch_16qam_llr_SIC (NR_DL_FRAME_PARMS *frame_parms,
int32_t **rxdataF_comp, int32_t **rxdataF_comp,
int32_t **sic_buffer, //Q15 int32_t **sic_buffer, //Q15
int32_t **rho_i, int32_t **rho_i,
...@@ -563,8 +561,7 @@ void dlsch_64qam_llr_SIC(NR_DL_FRAME_PARMS *frame_parms, ...@@ -563,8 +561,7 @@ void dlsch_64qam_llr_SIC(NR_DL_FRAME_PARMS *frame_parms,
uint16_t mod_order_0, uint16_t mod_order_0,
uint32_t rb_alloc); uint32_t rb_alloc);
void nr_dlsch_64qam_llr(NR_DL_FRAME_PARMS *frame_parms,
void dlsch_64qam_llr(NR_DL_FRAME_PARMS *frame_parms,
int32_t **rxdataF_comp, int32_t **rxdataF_comp,
int16_t *dlsch_llr, int16_t *dlsch_llr,
int32_t **dl_ch_mag, int32_t **dl_ch_mag,
...@@ -572,8 +569,6 @@ void dlsch_64qam_llr(NR_DL_FRAME_PARMS *frame_parms, ...@@ -572,8 +569,6 @@ void dlsch_64qam_llr(NR_DL_FRAME_PARMS *frame_parms,
uint8_t symbol, uint8_t symbol,
uint8_t first_symbol_flag, uint8_t first_symbol_flag,
uint16_t nb_rb, uint16_t nb_rb,
uint16_t pbch_pss_sss_adjust,
//int16_t **llr_save,
uint32_t llr_offset, uint32_t llr_offset,
uint8_t beamforming_mode); uint8_t beamforming_mode);
...@@ -1044,7 +1039,7 @@ int32_t nr_rx_pdsch(PHY_VARS_NR_UE *phy_vars_ue, ...@@ -1044,7 +1039,7 @@ int32_t nr_rx_pdsch(PHY_VARS_NR_UE *phy_vars_ue,
uint8_t i_mod, uint8_t i_mod,
uint8_t harq_pid); uint8_t harq_pid);
int32_t rx_pdcch(PHY_VARS_NR_UE *ue, int32_t nr_rx_pdcch(PHY_VARS_NR_UE *ue,
uint32_t frame, uint32_t frame,
uint8_t subframe, uint8_t subframe,
uint8_t eNB_id, uint8_t eNB_id,
......
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