Merge remote-tracking branch 'origin/pucch_format1_MR' into integration_2026_w13 (!3966)
PUCCH Format 1 decoder implementation and validation with nr_pucchsim This is the implementation of the PUCCH Format 1 decoder, validated with pucchsim in the current branch. Build: ./build_oai --nrUE --gNB --ninja --phy_simulators Run tests: ctest -L nr_pucchsim -j 8
This commit is contained in:
@@ -241,20 +241,13 @@ int get_nr_prach_duration(uint8_t prach_format);
|
|||||||
|
|
||||||
void free_nr_prach_entry(prach_list_t *, prach_item_t *);
|
void free_nr_prach_entry(prach_list_t *, prach_item_t *);
|
||||||
|
|
||||||
void nr_decode_pucch1(c16_t **rxdataF,
|
void nr_decode_pucch1(PHY_VARS_gNB *gNB,
|
||||||
pucch_GroupHopping_t pucch_GroupHopping,
|
c16_t **rxdataF,
|
||||||
uint32_t n_id, // hoppingID higher layer parameter
|
int frame,
|
||||||
uint64_t *payload,
|
int slot,
|
||||||
NR_DL_FRAME_PARMS *frame_parms,
|
nfapi_nr_uci_pucch_pdu_format_0_1_t *uci_pdu,
|
||||||
int16_t amp,
|
nfapi_nr_pucch_pdu_t *pucch_pdu);
|
||||||
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_pucch2(PHY_VARS_gNB *gNB,
|
||||||
c16_t **rxdataF,
|
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];
|
d = qpskSymbols[tmp];
|
||||||
}
|
}
|
||||||
#ifdef DEBUG_NR_PUCCH_TX
|
#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
|
#endif
|
||||||
/*
|
/*
|
||||||
* Defining cyclic shift hopping TS 38.211 Subclause 6.3.2.2.2
|
* 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
|
#ifdef DEBUG_NR_PUCCH_TX
|
||||||
printf(
|
printf(
|
||||||
"\t [nr_generate_pucch1] sequence generation \tu=%d \tv=%d \talpha=%lf \tr_u_v_alpha_delta[n=%d]=(%d,%d) "
|
"\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,
|
u,
|
||||||
v,
|
v,
|
||||||
alpha,
|
alpha,
|
||||||
n,
|
n,
|
||||||
r_u_v_alpha_delta[n].r,
|
r_u_v_alpha_delta[n].r,
|
||||||
r_u_v_alpha_delta[n].i,
|
r_u_v_alpha_delta[n].i,
|
||||||
|
d.r,d.i,
|
||||||
n,
|
n,
|
||||||
y_n[n].r,
|
y_n[n].r,
|
||||||
y_n[n].i);
|
y_n[n].i);
|
||||||
|
|||||||
@@ -82,6 +82,9 @@ typedef struct {
|
|||||||
int pucch01_DTX;
|
int pucch01_DTX;
|
||||||
int pucch02_trials;
|
int pucch02_trials;
|
||||||
int pucch02_DTX;
|
int pucch02_DTX;
|
||||||
|
int pucch1_sr_trials;
|
||||||
|
int pucch1_positive_SR;
|
||||||
|
int pucch11_trials;
|
||||||
int pucch2_trials;
|
int pucch2_trials;
|
||||||
int pucch2_DTX;
|
int pucch2_DTX;
|
||||||
} NR_gNB_UCI_STATS_t;
|
} NR_gNB_UCI_STATS_t;
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -262,6 +262,24 @@ 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.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.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.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-8 -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-8 -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-8 -n1000)
|
||||||
|
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-8 -c -n1000)
|
||||||
|
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-8 -n1000)
|
||||||
|
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-8 -n1000)
|
||||||
|
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-8 -n1000)
|
||||||
|
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-8 -n1000)
|
||||||
|
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-8 -n1000)
|
||||||
|
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-8 -n1000)
|
||||||
|
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-8 -c -n1000)
|
||||||
|
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-8 -n1000)
|
||||||
|
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-8 -n1000)
|
||||||
|
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-8 -n1000)
|
||||||
|
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-8 -n1000)
|
||||||
|
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-8 -n1000)
|
||||||
|
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-8 -c -n1000)
|
||||||
|
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-8 -n1000)
|
||||||
|
|
||||||
####################################################################################
|
####################################################################################
|
||||||
###### nr_ulsim unit test ######
|
###### nr_ulsim unit test ######
|
||||||
|
|||||||
Reference in New Issue
Block a user