Commit f7827a1d authored by Francesco Mani's avatar Francesco Mani

fix for dword length in csi rs

parent ef4adce1
...@@ -145,7 +145,7 @@ void nr_init_csi_rs(PHY_VARS_gNB* gNB, uint32_t Nid) ...@@ -145,7 +145,7 @@ void nr_init_csi_rs(PHY_VARS_gNB* gNB, uint32_t Nid)
reset = 1; reset = 1;
x2 = ((1<<10) * (fp->symbols_per_slot*slot+symb+1) * ((Nid<<1)+1) + (Nid)); x2 = ((1<<10) * (fp->symbols_per_slot*slot+symb+1) * ((Nid<<1)+1) + (Nid));
for (uint32_t n=0; n<NR_MAX_PDCCH_DMRS_INIT_LENGTH_DWORD; n++) { for (uint32_t n=0; n<NR_MAX_CSI_RS_INIT_LENGTH_DWORD; n++) {
csi_rs[slot][symb][n] = lte_gold_generic(&x1, &x2, reset); csi_rs[slot][symb][n] = lte_gold_generic(&x1, &x2, reset);
reset = 0; reset = 0;
} }
......
...@@ -59,7 +59,7 @@ void nr_generate_csi_rs(PHY_VARS_gNB *gNB, ...@@ -59,7 +59,7 @@ void nr_generate_csi_rs(PHY_VARS_gNB *gNB,
for (uint8_t symb=0; symb<frame_parms.symbols_per_slot; symb++) { for (uint8_t symb=0; symb<frame_parms.symbols_per_slot; symb++) {
reset = 1; reset = 1;
x2 = ((1<<10) * (frame_parms.symbols_per_slot*slot+symb+1) * ((Nid<<1)+1) + (Nid)); x2 = ((1<<10) * (frame_parms.symbols_per_slot*slot+symb+1) * ((Nid<<1)+1) + (Nid));
for (uint32_t n=0; n<NR_MAX_PDCCH_DMRS_INIT_LENGTH_DWORD; n++) { for (uint32_t n=0; n<NR_MAX_CSI_RS_INIT_LENGTH_DWORD; n++) {
gold_csi_rs[symb][n] = lte_gold_generic(&x1, &x2, reset); gold_csi_rs[symb][n] = lte_gold_generic(&x1, &x2, reset);
reset = 0; reset = 0;
} }
...@@ -516,12 +516,12 @@ void nr_generate_csi_rs(PHY_VARS_gNB *gNB, ...@@ -516,12 +516,12 @@ void nr_generate_csi_rs(PHY_VARS_gNB *gNB,
if (rho < 1) { if (rho < 1) {
if (csi_params.freq_density == 0) if (csi_params.freq_density == 0)
csi_length = (((csi_bw + csi_start)>>1)<<kprime)<<1; csi_length = (((csi_bw + csi_start)>>1)<<kprime)<<1;
else else
csi_length = ((((csi_bw + csi_start)>>1)<<kprime)+1)<<1; csi_length = ((((csi_bw + csi_start)>>1)<<kprime)+1)<<1;
} }
else else
csi_length = (((uint16_t) rho*(csi_bw + csi_start))<<kprime)<<1; csi_length = (((uint16_t) rho*(csi_bw + csi_start))<<kprime)<<1;
#ifdef NR_CSIRS_DEBUG #ifdef NR_CSIRS_DEBUG
printf(" start rb %d, n. rbs %d, csi length %d\n",csi_start,csi_bw,csi_length); printf(" start rb %d, n. rbs %d, csi length %d\n",csi_start,csi_bw,csi_length);
...@@ -535,41 +535,36 @@ void nr_generate_csi_rs(PHY_VARS_gNB *gNB, ...@@ -535,41 +535,36 @@ void nr_generate_csi_rs(PHY_VARS_gNB *gNB,
// NZP CSI RS // NZP CSI RS
if (csi_params.csi_type == 1) { if (csi_params.csi_type == 1) {
// assuming amp is the amplitude of SSB channels // assuming amp is the amplitude of SSB channels
switch (csi_params.power_control_offset_ss) { switch (csi_params.power_control_offset_ss) {
case 0: case 0:
beta = (amp*ONE_OVER_SQRT2_Q15)>>15; beta = (amp*ONE_OVER_SQRT2_Q15)>>15;
break; break;
case 1:
case 1: beta = amp;
beta = amp; break;
break; case 2:
beta = (amp*ONE_OVER_SQRT2_Q15)>>14;
case 2: break;
beta = (amp*ONE_OVER_SQRT2_Q15)>>14; case 3:
break; beta = amp<<1;
break;
case 3: default:
beta = amp<<1; AssertFatal(0==1, "Invalid SS power offset density index for CSI\n");
break; }
default: for (lp=0; lp<=lprime; lp++){
AssertFatal(0==1, "Invalid SS power offset density index for CSI\n"); symb = csi_params.symb_l0;
} nr_modulation(gold_csi_rs[symb+lp], csi_length, DMRS_MOD_ORDER, mod_csi[symb+lp]);
if ((csi_params.row == 5) || (csi_params.row == 7) || (csi_params.row == 11) || (csi_params.row == 13) || (csi_params.row == 16))
for (lp=0; lp<=lprime; lp++){ nr_modulation(gold_csi_rs[symb+1], csi_length, DMRS_MOD_ORDER, mod_csi[symb+1]);
symb = csi_params.symb_l0; if ((csi_params.row == 14) || (csi_params.row == 13) || (csi_params.row == 16) || (csi_params.row == 17)) {
nr_modulation(gold_csi_rs[symb+lp], csi_length, DMRS_MOD_ORDER, mod_csi[symb+lp]); symb = csi_params.symb_l1;
if ((csi_params.row == 5) || (csi_params.row == 7) || (csi_params.row == 11) || (csi_params.row == 13) || (csi_params.row == 16)) nr_modulation(gold_csi_rs[symb+lp], csi_length, DMRS_MOD_ORDER, mod_csi[symb+lp]);
nr_modulation(gold_csi_rs[symb+1], csi_length, DMRS_MOD_ORDER, mod_csi[symb+1]); if ((csi_params.row == 13) || (csi_params.row == 16))
if ((csi_params.row == 14) || (csi_params.row == 13) || (csi_params.row == 16) || (csi_params.row == 17)) { nr_modulation(gold_csi_rs[symb+1], csi_length, DMRS_MOD_ORDER, mod_csi[symb+1]);
symb = csi_params.symb_l1; }
nr_modulation(gold_csi_rs[symb+lp], csi_length, DMRS_MOD_ORDER, mod_csi[symb+lp]); }
if ((csi_params.row == 13) || (csi_params.row == 16))
nr_modulation(gold_csi_rs[symb+1], csi_length, DMRS_MOD_ORDER, mod_csi[symb+1]);
}
}
} }
uint16_t start_sc = frame_parms.first_carrier_offset; uint16_t start_sc = frame_parms.first_carrier_offset;
......
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