mirror of
https://gitlab.eurecom.fr/oai/openairinterface5g.git
synced 2026-07-14 13:10:28 +00:00
Compare commits
8 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d44060b9ad | ||
|
|
77d8590a6c | ||
|
|
629dbcfcc0 | ||
|
|
59a76e7722 | ||
|
|
3d1423ac50 | ||
|
|
7fc3a153df | ||
|
|
59962f178c | ||
|
|
ea0bd8b955 |
@@ -130,7 +130,7 @@ void phy_init_nr_gNB(PHY_VARS_gNB *gNB)
|
||||
|
||||
crcTableInit();
|
||||
init_byte2m128i();
|
||||
init_pucch2_luts();
|
||||
init_pucch2_3_luts();
|
||||
|
||||
nr_init_fde(); // Init array for frequency equalization of transform precoding of PUSCH
|
||||
|
||||
|
||||
@@ -184,9 +184,8 @@ void gNB_I0_measurements(PHY_VARS_gNB *gNB, int slot, int first_symb, int num_sy
|
||||
} //rb
|
||||
} // symb
|
||||
int nb_rb=0;
|
||||
int32_t n0_subband_tot_perANT[frame_parms->nb_antennas_rx];
|
||||
int64_t n0_subband_tot_perANT[frame_parms->nb_antennas_rx];
|
||||
memset(n0_subband_tot_perANT, 0, sizeof(n0_subband_tot_perANT));
|
||||
|
||||
allocCast2D(n0_subband_power,
|
||||
unsigned int,
|
||||
measurements->n0_subband_power,
|
||||
@@ -195,7 +194,7 @@ void gNB_I0_measurements(PHY_VARS_gNB *gNB, int slot, int first_symb, int num_sy
|
||||
false);
|
||||
|
||||
for (int rb = 0 ; rb<frame_parms->N_RB_UL;rb++) {
|
||||
int32_t n0_subband_tot_perPRB=0;
|
||||
int64_t n0_subband_tot_perPRB=0;
|
||||
if (nb_symb[rb] > 0) {
|
||||
for (int aarx = 0; aarx < frame_parms->nb_antennas_rx; aarx++) {
|
||||
tmp_n0_subband[aarx][rb] /= nb_symb[rb];
|
||||
@@ -213,9 +212,9 @@ void gNB_I0_measurements(PHY_VARS_gNB *gNB, int slot, int first_symb, int num_sy
|
||||
if (nb_rb>0) {
|
||||
int64_t n0_subband_tot = 0;
|
||||
for (int aarx = 0; aarx < frame_parms->nb_antennas_rx; aarx++) {
|
||||
measurements->n0_subband_power_avg_perANT_dB[aarx] = dB_fixed(n0_subband_tot_perANT[aarx] / nb_rb);
|
||||
n0_subband_tot += n0_subband_tot_perANT[aarx];
|
||||
measurements->n0_subband_power_avg_perANT_dB[aarx] = dB_fixed((int32_t)(n0_subband_tot_perANT[aarx] / nb_rb));
|
||||
n0_subband_tot += (int32_t)(n0_subband_tot_perANT[aarx]/nb_rb);
|
||||
}
|
||||
measurements->n0_subband_power_avg_dB = dB_fixed(n0_subband_tot / nb_rb);
|
||||
measurements->n0_subband_power_avg_dB = dB_fixed(n0_subband_tot/frame_parms->nb_antennas_rx);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -81,6 +81,6 @@ void nr_codeword_unscrambling_init(int16_t *s, uint32_t size, uint8_t q, uint32_
|
||||
|
||||
/**@}*/
|
||||
|
||||
void init_pucch2_luts(void);
|
||||
void init_pucch2_3_luts(void);
|
||||
void set_prach_tables(int N_ZC, c16_t** ru, uint32_t** zc_inv);
|
||||
#endif
|
||||
|
||||
@@ -245,27 +245,20 @@ int get_nr_prach_duration(uint8_t prach_format);
|
||||
|
||||
void free_nr_prach_entry(prach_list_t *, prach_item_t *);
|
||||
|
||||
void nr_decode_pucch1(c16_t **rxdataF,
|
||||
pucch_GroupHopping_t pucch_GroupHopping,
|
||||
uint32_t n_id, // hoppingID higher layer parameter
|
||||
uint64_t *payload,
|
||||
NR_DL_FRAME_PARMS *frame_parms,
|
||||
int16_t amp,
|
||||
int nr_tti_tx,
|
||||
uint8_t m0,
|
||||
uint8_t nrofSymbols,
|
||||
uint8_t startingSymbolIndex,
|
||||
uint16_t startingPRB,
|
||||
uint16_t startingPRB_intraSlotHopping,
|
||||
uint8_t timeDomainOCC,
|
||||
uint8_t nr_bit);
|
||||
|
||||
void nr_decode_pucch2(PHY_VARS_gNB *gNB,
|
||||
void nr_decode_pucch1(PHY_VARS_gNB *gNB,
|
||||
c16_t **rxdataF,
|
||||
int frame,
|
||||
int slot,
|
||||
nfapi_nr_uci_pucch_pdu_format_2_3_4_t* uci_pdu,
|
||||
nfapi_nr_pucch_pdu_t* pucch_pdu);
|
||||
nfapi_nr_uci_pucch_pdu_format_0_1_t *uci_pdu,
|
||||
nfapi_nr_pucch_pdu_t *pucch_pdu);
|
||||
|
||||
|
||||
void nr_decode_pucch2_3(PHY_VARS_gNB *gNB,
|
||||
c16_t **rxdataF,
|
||||
int frame,
|
||||
int slot,
|
||||
nfapi_nr_uci_pucch_pdu_format_2_3_4_t* uci_pdu,
|
||||
nfapi_nr_pucch_pdu_t* pucch_pdu);
|
||||
|
||||
void nr_decode_pucch0(PHY_VARS_gNB *gNB,
|
||||
c16_t **rxdataF,
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -190,7 +190,7 @@ void nr_generate_pucch1(c16_t **txdataF,
|
||||
d = qpskSymbols[tmp];
|
||||
}
|
||||
#ifdef DEBUG_NR_PUCCH_TX
|
||||
printf("\t [nr_generate_pucch1] sequence modulation: payload=%lx \tde_re=%d \tde_im=%d\n", payload, d.r, d.i);
|
||||
printf("\t [nr_generate_pucch1] sequence modulation (amp %d/%d): payload=%lx \tde_re=%d \tde_im=%d\n", amp, baseVal,payload, d.r, d.i);
|
||||
#endif
|
||||
/*
|
||||
* Defining cyclic shift hopping TS 38.211 Subclause 6.3.2.2.2
|
||||
@@ -273,13 +273,14 @@ void nr_generate_pucch1(c16_t **txdataF,
|
||||
#ifdef DEBUG_NR_PUCCH_TX
|
||||
printf(
|
||||
"\t [nr_generate_pucch1] sequence generation \tu=%d \tv=%d \talpha=%lf \tr_u_v_alpha_delta[n=%d]=(%d,%d) "
|
||||
"\ty_n[n=%d]=(%d,%d)\n",
|
||||
"\td=(%d,%d)\ty_n[n=%d]=(%d,%d)\n",
|
||||
u,
|
||||
v,
|
||||
alpha,
|
||||
n,
|
||||
r_u_v_alpha_delta[n].r,
|
||||
r_u_v_alpha_delta[n].i,
|
||||
d.r,d.i,
|
||||
n,
|
||||
y_n[n].r,
|
||||
y_n[n].i);
|
||||
@@ -443,7 +444,7 @@ void nr_generate_pucch1(c16_t **txdataF,
|
||||
}
|
||||
|
||||
if ((startingPRB > (frame_parms->N_RB_DL>>1)) && ((frame_parms->N_RB_DL & 1) == 1)) { // if number RBs in bandwidth is odd and current PRB is upper band
|
||||
re_offset = ((l+startingSymbolIndex)*frame_parms->ofdm_symbol_size) + (12*(startingPRB-(frame_parms->N_RB_DL>>1))) + 6;
|
||||
re_offset = ((l+startingSymbolIndex)*frame_parms->ofdm_symbol_size) + (12*(startingPRB-(frame_parms->N_RB_DL>>1))) - 6;
|
||||
}
|
||||
|
||||
if ((startingPRB == (frame_parms->N_RB_DL>>1)) && ((frame_parms->N_RB_DL & 1) == 1)) { // if number RBs in bandwidth is odd and current PRB contains DC
|
||||
@@ -860,7 +861,7 @@ void nr_generate_pucch2(c16_t **txdataF,
|
||||
if (baseRB < halfRBs) // if number RBs in bandwidth is odd and current PRB is lower band
|
||||
re_offset += frame_parms->first_carrier_offset;
|
||||
else if (baseRB > halfRBs) // if number RBs in bandwidth is odd and current PRB is upper band
|
||||
re_offset += -halfRBs + 6;
|
||||
re_offset += -12*halfRBs - 6;
|
||||
else
|
||||
re_offset += frame_parms->first_carrier_offset;
|
||||
}
|
||||
@@ -973,6 +974,10 @@ void nr_generate_pucch3_4(c16_t **txdataF,
|
||||
uint16_t startingPRB = pucch_pdu->prb_start + pucch_pdu->bwp_start;
|
||||
uint8_t add_dmrs = pucch_pdu->add_dmrs_flag;
|
||||
|
||||
#ifdef DEBUG_NR_PUCCH_TX
|
||||
printf("\t [nr_generate_pucch3_4] nrofSymbols %d, nrofPRB %d, startingPRB %d, add_dmrs %d is_pi_over_2_bpsk_enabled %d\n",nrofSymbols,nrofPRB,startingPRB,add_dmrs,is_pi_over_2_bpsk_enabled);
|
||||
#endif
|
||||
|
||||
M_bit = nr_pucch_output_sequence_length(pucch_pdu->format_type,
|
||||
nrofSymbols,
|
||||
nrofPRB,
|
||||
@@ -980,6 +985,9 @@ void nr_generate_pucch3_4(c16_t **txdataF,
|
||||
is_pi_over_2_bpsk_enabled,
|
||||
add_dmrs);
|
||||
|
||||
#ifdef DEBUG_NR_PUCCH_TX
|
||||
printf("\t [nr_generate_pucch3_4] nrofSymbols %d, nrofPRB %d, startingPRB %d, add_dmrs %d is_pi_over_2_bpsk_enabled %d, M_bit %d\n",nrofSymbols,nrofPRB,startingPRB,add_dmrs,is_pi_over_2_bpsk_enabled,M_bit);
|
||||
#endif
|
||||
nr_uci_encoding(pucch_pdu->payload, pucch_pdu->n_bit, nrofPRB, false, M_bit, 0, b);
|
||||
/*
|
||||
* Implementing TS 38.211
|
||||
@@ -1020,7 +1028,7 @@ void nr_generate_pucch3_4(c16_t **txdataF,
|
||||
|
||||
if (is_pi_over_2_bpsk_enabled == 0) {
|
||||
// using QPSK if PUCCH format 3,4 and pi/2-BPSK is not configured, according to subclause 6.3.2.6.2
|
||||
c16_t qpskSymbols[4] = {{baseVal, baseVal}, {-baseVal, baseVal}, {-baseVal, baseVal}, {-baseVal, -baseVal}};
|
||||
c16_t qpskSymbols[4] = {{baseVal, baseVal}, {baseVal, -baseVal}, {-baseVal, baseVal}, {-baseVal, -baseVal}};
|
||||
for (int i=0; i < m_symbol; i++) { // QPSK modulation subclause 5.1.3
|
||||
int tmp = (btilde[2 * i] & 1) * 2 + (btilde[(2 * i) + 1] & 1);
|
||||
d[i] = qpskSymbols[tmp];
|
||||
@@ -1164,9 +1172,10 @@ void nr_generate_pucch3_4(c16_t **txdataF,
|
||||
c16_t *yPtr = y_n + l * 12 * nrofPRB;
|
||||
c16_t *zPtr = z + l * 12 * nrofPRB + k;
|
||||
*zPtr = (c16_t){0};
|
||||
for (int m = l * 12 * nrofPRB; m < (l + 1) * 12 * nrofPRB; m++) {
|
||||
// for (int m = l * 12 * nrofPRB; m < (l + 1) * 12 * nrofPRB; m++) {
|
||||
for (int m = 0; m < (12 * nrofPRB); m++) {
|
||||
const c16_t angle = {lround(32767 * cos(2 * M_PI * m * k / (12 * nrofPRB))),
|
||||
lround(32767 * sin(2 * M_PI * m * k / (12 * nrofPRB)))};
|
||||
lround(-32767 * sin(2 * M_PI * m * k / (12 * nrofPRB)))};
|
||||
c16_t tmp = c16mulShift(yPtr[m], angle, 15);
|
||||
csum(*zPtr, *zPtr, c16mulRealShift(tmp, base, 15));
|
||||
}
|
||||
@@ -1241,7 +1250,7 @@ void nr_generate_pucch3_4(c16_t **txdataF,
|
||||
nr_group_sequence_hopping(pucch_GroupHopping,pucch_pdu->hopping_id,n_hop,nr_slot_tx,&u,&v); // calculating u and v value
|
||||
|
||||
// Next we proceed to calculate base sequence for DM-RS signal, according to TS 38.211 subclause 6.4.1.33
|
||||
if (nrofPRB >= 3) { // TS 38.211 subclause 5.2.2.1 (Base sequences of length 36 or larger) applies
|
||||
if (l==0 && nrofPRB >= 3) { // TS 38.211 subclause 5.2.2.1 (Base sequences of length 36 or larger) applies
|
||||
int i = 4;
|
||||
|
||||
while (list_of_prime_numbers[i] < (12*nrofPRB)) i++;
|
||||
@@ -1265,7 +1274,7 @@ void nr_generate_pucch3_4(c16_t **txdataF,
|
||||
}
|
||||
}
|
||||
|
||||
if (nrofPRB == 2) { // TS 38.211 subclause 5.2.2.2 (Base sequences of length less than 36 using table 5.2.2.2-4) applies
|
||||
if (l==0 && nrofPRB == 2) { // TS 38.211 subclause 5.2.2.2 (Base sequences of length less than 36 using table 5.2.2.2-4) applies
|
||||
for (int n = 0; n < 12 * nrofPRB; n++) {
|
||||
c16_t table = {table_5_2_2_2_4_Re[u][n], table_5_2_2_2_4_Im[u][n]};
|
||||
r_u_v_base[n] = c16mulRealShift(table, amp, 15);
|
||||
@@ -1279,7 +1288,7 @@ void nr_generate_pucch3_4(c16_t **txdataF,
|
||||
}
|
||||
}
|
||||
|
||||
if (nrofPRB == 1) { // TS 38.211 subclause 5.2.2.2 (Base sequences of length less than 36 using table 5.2.2.2-2) applies
|
||||
if (l==0 && nrofPRB == 1) { // TS 38.211 subclause 5.2.2.2 (Base sequences of length less than 36 using table 5.2.2.2-2) applies
|
||||
for (int n = 0; n < 12 * nrofPRB; n++) {
|
||||
c16_t table = {table_5_2_2_2_2_Re[u][n], table_5_2_2_2_2_Im[u][n]};
|
||||
r_u_v_base[n] = c16mulRealShift(table, amp, 15);
|
||||
@@ -1298,12 +1307,12 @@ void nr_generate_pucch3_4(c16_t **txdataF,
|
||||
alpha = nr_cyclic_shift_hopping(pucch_pdu->hopping_id,m0,mcs,l,startingSymbolIndex,nr_slot_tx);
|
||||
|
||||
for (int rb=0; rb<nrofPRB; rb++) {
|
||||
const bool nb_rb_is_even = frame_parms->N_RB_DL & 1;
|
||||
const bool nb_rb_is_even = (frame_parms->N_RB_DL & 1)==0;
|
||||
const int halfRBs = frame_parms->N_RB_DL / 2;
|
||||
const int baseRB = rb + startingPRB;
|
||||
if ((intraSlotFrequencyHopping == 1) && (l<floor(nrofSymbols/2))) { // intra-slot hopping enabled, we need to calculate new offset PRB
|
||||
startingPRB = startingPRB + pucch_pdu->second_hop_prb;
|
||||
if ((intraSlotFrequencyHopping == 1) && (l>=floor(nrofSymbols/2))) { // intra-slot hopping enabled, we need to calculate new offset PRB
|
||||
startingPRB = pucch_pdu->second_hop_prb;
|
||||
}
|
||||
const int baseRB = rb + startingPRB;
|
||||
re_offset = ((l + startingSymbolIndex) * frame_parms->ofdm_symbol_size);
|
||||
//startingPRB = startingPRB + rb;
|
||||
if (nb_rb_is_even) {
|
||||
@@ -1327,7 +1336,7 @@ void nr_generate_pucch3_4(c16_t **txdataF,
|
||||
printf("3 ");
|
||||
#endif
|
||||
} else if (baseRB > halfRBs) { // if number RBs in bandwidth is odd and current PRB is upper band
|
||||
re_offset += 12 * (baseRB - halfRBs) + 6;
|
||||
re_offset += 12 * (baseRB - halfRBs) - 6;
|
||||
#ifdef DEBUG_NR_PUCCH_TX
|
||||
printf("4 ");
|
||||
#endif
|
||||
@@ -1340,7 +1349,7 @@ void nr_generate_pucch3_4(c16_t **txdataF,
|
||||
}
|
||||
|
||||
#ifdef DEBUG_NR_PUCCH_TX
|
||||
printf("re_offset=%u,baseRB=%d\n", re_offset, baseRB);
|
||||
printf("re_offset=%u,baseRB=%d\n", re_offset-((l + startingSymbolIndex) * frame_parms->ofdm_symbol_size), baseRB);
|
||||
#endif
|
||||
|
||||
//txptr = &txdataF[0][re_offset];
|
||||
@@ -1355,10 +1364,10 @@ void nr_generate_pucch3_4(c16_t **txdataF,
|
||||
txdataF[0][re_offset] = z[n + k];
|
||||
#ifdef DEBUG_NR_PUCCH_TX
|
||||
printf(
|
||||
"\t [nr_generate_pucch3_4] (l=%d,rb=%d,n=%d,k=%d) mapping PUCCH to RE \t amp=%d \tofdm_symbol_size=%d \tN_RB_DL=%d "
|
||||
"\tfirst_carrier_offset=%d \tz_pucch[%d]=txptr(%u)=(z(l=%d,n=%d)=(%d,%d))\n",
|
||||
"\t [nr_generate_pucch3_4] (l=%d,rb=%d,n=%d,k=%d) mapping PUCCH DATA to RE \t amp=%d \tofdm_symbol_size=%d \tN_RB_DL=%d "
|
||||
"\tfirst_carrier_offset=%d \tz_pucch[%d]=txptr(%u)=(z(l=%d,n=%d)=(%d,%d))[%d]\n",
|
||||
l,
|
||||
rb,
|
||||
startingPRB+rb,
|
||||
n,
|
||||
k,
|
||||
amp,
|
||||
@@ -1370,7 +1379,8 @@ void nr_generate_pucch3_4(c16_t **txdataF,
|
||||
l,
|
||||
n,
|
||||
txdataF[0][re_offset].r,
|
||||
txdataF[0][re_offset].i);
|
||||
txdataF[0][re_offset].i,
|
||||
re_offset-(l + startingSymbolIndex) * frame_parms->ofdm_symbol_size);
|
||||
#endif
|
||||
}
|
||||
if (table_6_4_1_3_3_2_1_dmrs_positions[nrofSymbols-4][l] == 1) { // mapping DM-RS signal according to TS38.211 subclause 6.4.1.3.2
|
||||
@@ -1378,12 +1388,13 @@ void nr_generate_pucch3_4(c16_t **txdataF,
|
||||
txdataF[0][re_offset] = c16mulShift(angle, r_u_v_base[n + j], 15);
|
||||
#ifdef DEBUG_NR_PUCCH_TX
|
||||
printf(
|
||||
"\t [nr_generate_pucch3_4] (l=%d,rb=%d,n=%d,j=%d) mapping DM-RS to RE \t amp=%d \tofdm_symbol_size=%d \tN_RB_DL=%d "
|
||||
"\t [nr_generate_pucch3_4] (l=%d,rb=%d,n=%d,j=%d,alpha %f) mapping PUCCH DM-RS to RE \t amp=%d \tofdm_symbol_size=%d \tN_RB_DL=%d "
|
||||
"\tfirst_carrier_offset=%d \tz_dm-rs[%d]=txptr(%u)=(r_u_v(l=%d,n=%d)=(%d,%d))\n",
|
||||
l,
|
||||
rb,
|
||||
rb+startingPRB,
|
||||
n,
|
||||
j,
|
||||
alpha,
|
||||
amp,
|
||||
frame_parms->ofdm_symbol_size,
|
||||
frame_parms->N_RB_DL,
|
||||
@@ -1393,7 +1404,8 @@ void nr_generate_pucch3_4(c16_t **txdataF,
|
||||
l,
|
||||
n,
|
||||
txdataF[0][re_offset].r,
|
||||
txdataF[0][re_offset].i);
|
||||
txdataF[0][re_offset].i,
|
||||
re_offset-(l + startingSymbolIndex) * frame_parms->ofdm_symbol_size);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
@@ -82,6 +82,9 @@ typedef struct {
|
||||
int pucch01_DTX;
|
||||
int pucch02_trials;
|
||||
int pucch02_DTX;
|
||||
int pucch1_sr_trials;
|
||||
int pucch1_positive_SR;
|
||||
int pucch11_trials;
|
||||
int pucch2_trials;
|
||||
int pucch2_DTX;
|
||||
} NR_gNB_UCI_STATS_t;
|
||||
|
||||
@@ -1021,27 +1021,33 @@ int phy_procedures_gNB_uespec_RX(PHY_VARS_gNB *gNB, int frame_rx, int slot_rx, N
|
||||
UL_INFO->uci_ind.slot = slot_rx;
|
||||
switch (pucch_pdu->format_type) {
|
||||
case 0:
|
||||
case 1:
|
||||
uci->pdu_type = NFAPI_NR_UCI_FORMAT_0_1_PDU_TYPE;
|
||||
uci->pdu_size = sizeof(nfapi_nr_uci_pucch_pdu_format_0_1_t);
|
||||
nfapi_nr_uci_pucch_pdu_format_0_1_t *uci_pdu_format0 = &uci->pucch_pdu_format_0_1;
|
||||
nfapi_nr_uci_pucch_pdu_format_0_1_t *uci_pdu_format0_1 = &uci->pucch_pdu_format_0_1;
|
||||
int offset =
|
||||
pucch_pdu->start_symbol_index * ofdm_symbol_size + (frame_parms->first_carrier_offset + pucch_pdu->prb_start * 12);
|
||||
LOG_D(NR_PHY,
|
||||
"frame %d, slot %d: PUCCH signal energy %d\n",
|
||||
"frame %d, slot %d: PUCCH %d signal energy %d\n",
|
||||
frame_rx,
|
||||
slot_rx,
|
||||
pucch_pdu->format_type,
|
||||
signal_energy_nodc(&rxdataF[0][soffset + offset], 12));
|
||||
nr_decode_pucch0(gNB, rxdataF, frame_rx, slot_rx, uci_pdu_format0, pucch_pdu);
|
||||
if (pucch_pdu->format_type == 0)
|
||||
nr_decode_pucch0(gNB, rxdataF, frame_rx, slot_rx, uci_pdu_format0_1, pucch_pdu);
|
||||
else
|
||||
nr_decode_pucch1(gNB, rxdataF, frame_rx, slot_rx, uci_pdu_format0_1, pucch_pdu);
|
||||
break;
|
||||
case 2:
|
||||
case 3:
|
||||
uci->pdu_type = NFAPI_NR_UCI_FORMAT_2_3_4_PDU_TYPE;
|
||||
uci->pdu_size = sizeof(nfapi_nr_uci_pucch_pdu_format_2_3_4_t);
|
||||
nfapi_nr_uci_pucch_pdu_format_2_3_4_t *uci_pdu_format2 = &uci->pucch_pdu_format_2_3_4;
|
||||
nfapi_nr_uci_pucch_pdu_format_2_3_4_t *uci_pdu_format2_3_4 = &uci->pucch_pdu_format_2_3_4;
|
||||
LOG_D(PHY, "%d.%d Calling nr_decode_pucch2\n", frame_rx, slot_rx);
|
||||
nr_decode_pucch2(gNB, rxdataF, frame_rx, slot_rx, uci_pdu_format2, pucch_pdu);
|
||||
nr_decode_pucch2_3(gNB, rxdataF, frame_rx, slot_rx, uci_pdu_format2_3_4, pucch_pdu);
|
||||
break;
|
||||
default:
|
||||
AssertFatal(1 == 0, "Only PUCCH formats 0 and 2 are currently supported\n");
|
||||
AssertFatal(1 == 0, "Only PUCCH formats 0-3 are currently supported\n");
|
||||
}
|
||||
UL_INFO->uci_ind.num_ucis += 1;
|
||||
pucch->active = false;
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -649,7 +649,7 @@ channel_desc_t *new_channel_desc_scm(uint8_t nb_tx,
|
||||
chan_desc->ch[i] = calloc(chan_desc->channel_length, sizeof(struct complexd));
|
||||
|
||||
for (i = 0; i<nb_tx*nb_rx; i++)
|
||||
chan_desc->chF[i] = calloc(1200, sizeof(struct complexd));
|
||||
chan_desc->chF[i] = calloc(273*12, sizeof(struct complexd));
|
||||
|
||||
for (i = 0; i<chan_desc->nb_taps; i++)
|
||||
chan_desc->a[i] = calloc(nb_tx*nb_rx, sizeof(struct complexd));
|
||||
@@ -711,7 +711,7 @@ channel_desc_t *new_channel_desc_scm(uint8_t nb_tx,
|
||||
chan_desc->ch[i] = (struct complexd *) malloc(chan_desc->channel_length * sizeof(struct complexd));
|
||||
|
||||
for (i = 0; i<nb_tx*nb_rx; i++)
|
||||
chan_desc->chF[i] = (struct complexd *) malloc(1200 * sizeof(struct complexd));
|
||||
chan_desc->chF[i] = (struct complexd *) malloc(273*12 * sizeof(struct complexd));
|
||||
|
||||
for (i = 0; i<chan_desc->nb_taps; i++)
|
||||
chan_desc->a[i] = (struct complexd *) malloc(nb_tx*nb_rx * sizeof(struct complexd));
|
||||
@@ -808,7 +808,7 @@ channel_desc_t *new_channel_desc_scm(uint8_t nb_tx,
|
||||
chan_desc->ch[i] = (struct complexd *) malloc(chan_desc->channel_length * sizeof(struct complexd));
|
||||
|
||||
for (i = 0; i<nb_tx*nb_rx; i++)
|
||||
chan_desc->chF[i] = (struct complexd *) malloc(1200 * sizeof(struct complexd));
|
||||
chan_desc->chF[i] = (struct complexd *) malloc(273*12 * sizeof(struct complexd));
|
||||
|
||||
for (i = 0; i<chan_desc->nb_taps; i++)
|
||||
chan_desc->a[i] = (struct complexd *) malloc(nb_tx*nb_rx * sizeof(struct complexd));
|
||||
@@ -864,7 +864,7 @@ channel_desc_t *new_channel_desc_scm(uint8_t nb_tx,
|
||||
chan_desc->ch[i] = (struct complexd *) malloc(chan_desc->channel_length * sizeof(struct complexd));
|
||||
|
||||
for (i = 0; i<nb_tx*nb_rx; i++)
|
||||
chan_desc->chF[i] = (struct complexd *) malloc(1200 * sizeof(struct complexd));
|
||||
chan_desc->chF[i] = (struct complexd *) malloc(273*12 * sizeof(struct complexd));
|
||||
|
||||
for (i = 0; i<chan_desc->nb_taps; i++)
|
||||
chan_desc->a[i] = (struct complexd *) malloc(nb_tx*nb_rx * sizeof(struct complexd));
|
||||
@@ -919,7 +919,7 @@ channel_desc_t *new_channel_desc_scm(uint8_t nb_tx,
|
||||
chan_desc->ch[i] = (struct complexd *) malloc(chan_desc->channel_length * sizeof(struct complexd));
|
||||
|
||||
for (i = 0; i<nb_tx*nb_rx; i++)
|
||||
chan_desc->chF[i] = (struct complexd *) malloc(1200 * sizeof(struct complexd));
|
||||
chan_desc->chF[i] = (struct complexd *) malloc(273*12 * sizeof(struct complexd));
|
||||
|
||||
for (i = 0; i<chan_desc->nb_taps; i++)
|
||||
chan_desc->a[i] = (struct complexd *) malloc(nb_tx*nb_rx * sizeof(struct complexd));
|
||||
@@ -974,7 +974,7 @@ channel_desc_t *new_channel_desc_scm(uint8_t nb_tx,
|
||||
chan_desc->ch[i] = (struct complexd *) malloc(chan_desc->channel_length * sizeof(struct complexd));
|
||||
|
||||
for (i = 0; i<nb_tx*nb_rx; i++)
|
||||
chan_desc->chF[i] = (struct complexd *) malloc(1200 * sizeof(struct complexd));
|
||||
chan_desc->chF[i] = (struct complexd *) malloc(273*12 * sizeof(struct complexd));
|
||||
|
||||
for (i = 0; i<chan_desc->nb_taps; i++)
|
||||
chan_desc->a[i] = (struct complexd *) malloc(nb_tx*nb_rx * sizeof(struct complexd));
|
||||
@@ -1029,7 +1029,7 @@ channel_desc_t *new_channel_desc_scm(uint8_t nb_tx,
|
||||
chan_desc->ch[i] = (struct complexd *) malloc(chan_desc->channel_length * sizeof(struct complexd));
|
||||
|
||||
for (i = 0; i<nb_tx*nb_rx; i++)
|
||||
chan_desc->chF[i] = (struct complexd *) malloc(1200 * sizeof(struct complexd));
|
||||
chan_desc->chF[i] = (struct complexd *) malloc(273*12 * sizeof(struct complexd));
|
||||
|
||||
for (i = 0; i<chan_desc->nb_taps; i++)
|
||||
chan_desc->a[i] = (struct complexd *) malloc(nb_tx*nb_rx * sizeof(struct complexd));
|
||||
@@ -1085,7 +1085,7 @@ channel_desc_t *new_channel_desc_scm(uint8_t nb_tx,
|
||||
chan_desc->ch[i] = (struct complexd *) malloc(chan_desc->channel_length * sizeof(struct complexd));
|
||||
|
||||
for (i = 0; i<nb_tx*nb_rx; i++)
|
||||
chan_desc->chF[i] = (struct complexd *) malloc(1200 * sizeof(struct complexd));
|
||||
chan_desc->chF[i] = (struct complexd *) malloc(273*12 * sizeof(struct complexd));
|
||||
|
||||
for (i = 0; i<chan_desc->nb_taps; i++)
|
||||
chan_desc->a[i] = (struct complexd *) malloc(nb_tx*nb_rx * sizeof(struct complexd));
|
||||
@@ -1141,7 +1141,7 @@ channel_desc_t *new_channel_desc_scm(uint8_t nb_tx,
|
||||
chan_desc->ch[i] = (struct complexd *) malloc(chan_desc->channel_length * sizeof(struct complexd));
|
||||
|
||||
for (i = 0; i<nb_tx*nb_rx; i++)
|
||||
chan_desc->chF[i] = (struct complexd *) malloc(1200 * sizeof(struct complexd));
|
||||
chan_desc->chF[i] = (struct complexd *) malloc(273*12 * sizeof(struct complexd));
|
||||
|
||||
for (i = 0; i<chan_desc->nb_taps; i++)
|
||||
chan_desc->a[i] = (struct complexd *) malloc(nb_tx*nb_rx * sizeof(struct complexd));
|
||||
|
||||
@@ -262,6 +262,25 @@ add_physim_test(physim.5g.nr_pucchsim.test26 "Format 2 12-bit 8/273 PRB" nr_pucc
|
||||
add_physim_test(physim.5g.nr_pucchsim.test27 "Format 2 19-bit 8/273 PRB" nr_pucchsim -R 273 -z8 -i 1 -P 2 -q8 -b 19 -s-3 -n3000)
|
||||
add_physim_test(physim.5g.nr_pucchsim.test28 "Format 2 64-bit 16/273 PRB" nr_pucchsim -R 273 -z8 -i 1 -P 2 -q16 -b 64 -s-3 -n3000)
|
||||
add_physim_test(physim.5g.nr_pucchsim.test29 "Format 2 64-bit 16/273 PRB Delay 2us" nr_pucchsim -R 273 -z8 -i 1 -P 2 -q16 -b 64 -s0 -S7 -d 2 -n3000)
|
||||
add_physim_test(physim.5g.nr_pucchsim.test30 "Format 1 NACK number of symbols = 4 273PRB" nr_pucchsim -R 273 -z8 -i 4 -P 1 -b 1 -B 0 -s-14 -n3000)
|
||||
add_physim_test(physim.5g.nr_pucchsim.test31 "Format 1 ACK number of symbols = 4 273PRB" nr_pucchsim -R 273 -z8 -i 4 -P 1 -b 1 -B 1 -s-14 -n3000)
|
||||
|
||||
add_physim_test(physim.5g.nr_pucchsim.test32 "Format 1 (NACK,NACK) number of symbols = 4 273PRB" nr_pucchsim -R 273 -z8 -i 4 -P 1 -b 2 -B 0 -s-14 -n3000)
|
||||
add_physim_test(physim.5g.nr_pucchsim.test33 "Format 1 (ACK,NACK) number of symbols = 4 273PRB with SR" nr_pucchsim -R 273 -z8 -i 4 -P 1 -b 2 -B 1 -s-14 -c -n3000)
|
||||
add_physim_test(physim.5g.nr_pucchsim.test34 "Format 1 (NACK,ACK) number of symbols = 4 273PRB" nr_pucchsim -R 273 -z8 -i 4 -P 1 -b 2 -B 2 -s-14 -n3000)
|
||||
add_physim_test(physim.5g.nr_pucchsim.test35 "Format 1 (ACK,ACK) number of symbols = 4 273PRB" nr_pucchsim -R 273 -z8 -i 4 -P 1 -b 2 -B 3 -s-14 -n3000)
|
||||
add_physim_test(physim.5g.nr_pucchsim.test36 "Format 1 NACK number of symbols = 8 273PRB" nr_pucchsim -R 273 -z8 -i 8 -P 1 -b 1 -B 0 -s-14 -n3000)
|
||||
add_physim_test(physim.5g.nr_pucchsim.test37 "Format 1 ACK number of symbols = 8 273PRB" nr_pucchsim -R 273 -z8 -i 8 -P 1 -b 1 -B 1 -s-14 -n3000)
|
||||
add_physim_test(physim.5g.nr_pucchsim.test38 "Format 1 (NACK,NACK) number of symbols = 8 273PRB" nr_pucchsim -R 273 -z8 -i 8 -P 1 -b 2 -B 0 -s-14 -n3000)
|
||||
add_physim_test(physim.5g.nr_pucchsim.test39 "Format 1 (ACK,NACK) number of symbols = 8 273PRB" nr_pucchsim -R 273 -z8 -i 8 -P 1 -b 2 -B 1 -s-14 -n3000)
|
||||
add_physim_test(physim.5g.nr_pucchsim.test40 "Format 1 (NACK,ACK) number of symbols = 8 273PRB with SR" nr_pucchsim -R 273 -z8 -i 8 -P 1 -b 2 -B 2 -s-14 -c -n3000)
|
||||
add_physim_test(physim.5g.nr_pucchsim.test41 "Format 1 (ACK,ACK) number of symbols = 8 273PRB" nr_pucchsim -R 273 -z8 -i 8 -P 1 -b 2 -B 3 -s-14 -n3000)
|
||||
add_physim_test(physim.5g.nr_pucchsim.test42 "Format 1 NACK number of symbols = 14 273PRB" nr_pucchsim -R 273 -z8 -i 14 -P 1 -b 1 -B 0 -s-14 -n3000)
|
||||
add_physim_test(physim.5g.nr_pucchsim.test43 "Format 1 ACK number of symbols = 14 273PRB" nr_pucchsim -R 273 -z8 -i 14 -P 1 -b 1 -B 1 -s-14 -n3000)
|
||||
add_physim_test(physim.5g.nr_pucchsim.test44 "Format 1 (NACK,NACK) number of symbols = 14 273PRB" nr_pucchsim -R 273 -z8 -i 14 -P 1 -b 2 -B 0 -s-14 -n3000)
|
||||
add_physim_test(physim.5g.nr_pucchsim.test45 "Format 1 (ACK,NACK) number of symbols = 14 273PRB" nr_pucchsim -R 273 -z8 -i 14 -P 1 -b 2 -B 1 -s-14 -n3000)
|
||||
add_physim_test(physim.5g.nr_pucchsim.test46 "Format 1 (NACK,ACK) number of symbols = 14 273PRB with SR" nr_pucchsim -R 273 -z8 -i 14 -P 1 -b 2 -B 2 -s-14 -c -n3000)
|
||||
add_physim_test(physim.5g.nr_pucchsim.test47 "Format 1 (ACK,ACK) number of symbols = 14 273PRB" nr_pucchsim -R 273 -z8 -i 14 -P 1 -b 2 -B 3 -s-14 -n3000)
|
||||
|
||||
####################################################################################
|
||||
###### nr_ulsim unit test ######
|
||||
|
||||
Reference in New Issue
Block a user