Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
OpenXG UE
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Michael Black
OpenXG UE
Commits
98fa483c
Commit
98fa483c
authored
Sep 10, 2020
by
hardy
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/ptrs_ul_phase_compensation' into integration_2020_wk37
parents
5534db8c
7cb12b46
Changes
18
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
18 changed files
with
801 additions
and
195 deletions
+801
-195
.gitignore
.gitignore
+6
-0
cmake_targets/CMakeLists.txt
cmake_targets/CMakeLists.txt
+1
-0
cmake_targets/autotests/test_case_list.xml
cmake_targets/autotests/test_case_list.xml
+9
-3
cmake_targets/build_oai
cmake_targets/build_oai
+1
-1
openair1/PHY/INIT/nr_init.c
openair1/PHY/INIT/nr_init.c
+11
-5
openair1/PHY/NR_ESTIMATION/nr_ul_channel_estimation.c
openair1/PHY/NR_ESTIMATION/nr_ul_channel_estimation.c
+407
-0
openair1/PHY/NR_ESTIMATION/nr_ul_estimation.h
openair1/PHY/NR_ESTIMATION/nr_ul_estimation.h
+26
-0
openair1/PHY/NR_REFSIG/dmrs_nr.c
openair1/PHY/NR_REFSIG/dmrs_nr.c
+21
-0
openair1/PHY/NR_REFSIG/nr_dmrs_rx.c
openair1/PHY/NR_REFSIG/nr_dmrs_rx.c
+24
-0
openair1/PHY/NR_REFSIG/nr_refsig.h
openair1/PHY/NR_REFSIG/nr_refsig.h
+3
-0
openair1/PHY/NR_TRANSPORT/nr_transport_proto.h
openair1/PHY/NR_TRANSPORT/nr_transport_proto.h
+0
-1
openair1/PHY/NR_TRANSPORT/nr_ulsch_demodulation.c
openair1/PHY/NR_TRANSPORT/nr_ulsch_demodulation.c
+88
-111
openair1/PHY/NR_UE_TRANSPORT/nr_ulsch_ue.c
openair1/PHY/NR_UE_TRANSPORT/nr_ulsch_ue.c
+3
-3
openair1/PHY/defs_gNB.h
openair1/PHY/defs_gNB.h
+9
-2
openair1/SIMULATION/NR_PHY/ulsim.c
openair1/SIMULATION/NR_PHY/ulsim.c
+140
-67
openair1/SIMULATION/TOOLS/phase_noise.c
openair1/SIMULATION/TOOLS/phase_noise.c
+42
-0
openair1/SIMULATION/TOOLS/sim.h
openair1/SIMULATION/TOOLS/sim.h
+8
-0
openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.c
openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.c
+2
-2
No files found.
.gitignore
View file @
98fa483c
...
...
@@ -12,3 +12,9 @@ targets/bin/
# vscode
.vscode
# Tags for vim/global
GPATH
GRTAGS
GTAGS
tags
cmake_targets/CMakeLists.txt
View file @
98fa483c
...
...
@@ -2377,6 +2377,7 @@ add_library(LFDS7
add_library
(
SIMU_COMMON
${
OPENAIR1_DIR
}
/SIMULATION/TOOLS/random_channel.c
${
OPENAIR1_DIR
}
/SIMULATION/TOOLS/rangen_double.c
${
OPENAIR1_DIR
}
/SIMULATION/TOOLS/phase_noise.c
)
# Simulation library
...
...
cmake_targets/autotests/test_case_list.xml
View file @
98fa483c
...
...
@@ -1276,7 +1276,10 @@
(Test2: MCS 16 50 PRBs),
(Test3: MCS 28 50 PRBs),
(Test4: MCS 9 217 PRBs),
(Test5: MCS 9 273 PRBs)
</desc>
(Test5: MCS 9 273 PRBs),
(Test6: DMRS Type A, 3 DMRS, 4 PTRS, 5 Interpolated Symbols),
(Test7: DMRS Type B, 3 DMRS, 2 PTRS, 7 Interpolated Symbols),
(Test8: DMRS Type B, 3 DMRS, 2 PTRS, 3 Interpolated Symbols)
</desc>
<pre_compile_prog></pre_compile_prog>
<compile_prog>
$OPENAIR_DIR/cmake_targets/build_oai
</compile_prog>
<compile_prog_args>
--phy_simulators -c
</compile_prog_args>
...
...
@@ -1287,8 +1290,11 @@
-n100 -m16 -s10
-n100 -m28 -s20
-n100 -m9 -R217 -r217 -s5
-n100 -m9 -R273 -r273 -s5
</main_exec_args>
<tags>
nr_ulsim.test1 nr_ulsim.test2 nr_ulsim.test3 nr_ulsim.test4 nr_ulsim.test5
</tags>
-n100 -m9 -R273 -r273 -s5
-n100 -s5 -T 2 1 2 -U 2 0 2
-n100 -s5 -T 2 2 2 -U 2 1 2
-n100 -s5 -a4 -b8 -T 2 1 2 -U 2 1 3
</main_exec_args>
<tags>
nr_ulsim.test1 nr_ulsim.test2 nr_ulsim.test3 nr_ulsim.test4 nr_ulsim.test5 nr_ulsim.test6 nr_ulsim.test7 nr_ulsim.test8
</tags>
<search_expr_true>
PUSCH test OK
</search_expr_true>
<search_expr_false>
segmentation fault|assertion|exiting|fatal
</search_expr_false>
<nruns>
3
</nruns>
...
...
cmake_targets/build_oai
View file @
98fa483c
...
...
@@ -211,7 +211,7 @@ function main() {
GDB
=
0
CMAKE_BUILD_TYPE
=
"RelWithDebInfo"
echo_info
"Will Compile with gdb symbols"
CMAKE_CMD
=
"
$CMAKE_CMD
-DCMAKE_BUILD_TYPE=RelWithDebInfo"
CMAKE_CMD
=
"
$CMAKE_CMD
-DCMAKE_BUILD_TYPE=RelWithDebInfo
-DCMAKE_EXPORT_COMPILE_COMMANDS=1
"
shift
;;
"MinSizeRel"
)
...
...
openair1/PHY/INIT/nr_init.c
View file @
98fa483c
...
...
@@ -251,10 +251,11 @@ int phy_init_nr_gNB(PHY_VARS_gNB *gNB,
pusch_vars
[
ULSCH_id
]
->
ul_ch_estimates_ext
=
(
int32_t
**
)
malloc16
(
Prx
*
sizeof
(
int32_t
*
)
);
pusch_vars
[
ULSCH_id
]
->
ul_ch_ptrs_estimates
=
(
int32_t
**
)
malloc16
(
Prx
*
sizeof
(
int32_t
*
)
);
pusch_vars
[
ULSCH_id
]
->
ul_ch_ptrs_estimates_ext
=
(
int32_t
**
)
malloc16
(
Prx
*
sizeof
(
int32_t
*
)
);
pusch_vars
[
ULSCH_id
]
->
ptrs_phase_per_slot
=
(
int32_t
**
)
malloc16
(
Prx
*
sizeof
(
int32_t
*
)
);
pusch_vars
[
ULSCH_id
]
->
ul_ch_estimates_time
=
(
int32_t
**
)
malloc16
(
Prx
*
sizeof
(
int32_t
*
)
);
pusch_vars
[
ULSCH_id
]
->
rxdataF_comp
=
(
int32_t
**
)
malloc16
(
Prx
*
sizeof
(
int32_t
*
)
);
pusch_vars
[
ULSCH_id
]
->
ul_ch_mag0
=
(
int32_t
**
)
malloc16
(
Prx
*
sizeof
(
int32_t
*
)
);
pusch_vars
[
ULSCH_id
]
->
ul_ch_magb0
=
(
int32_t
**
)
malloc16
(
Prx
*
sizeof
(
int32_t
*
)
);
pusch_vars
[
ULSCH_id
]
->
ul_ch_mag0
=
(
int32_t
**
)
malloc16
(
Prx
*
sizeof
(
int32_t
*
)
);
pusch_vars
[
ULSCH_id
]
->
ul_ch_magb0
=
(
int32_t
**
)
malloc16
(
Prx
*
sizeof
(
int32_t
*
)
);
pusch_vars
[
ULSCH_id
]
->
ul_ch_mag
=
(
int32_t
**
)
malloc16
(
Prx
*
sizeof
(
int32_t
*
)
);
pusch_vars
[
ULSCH_id
]
->
ul_ch_magb
=
(
int32_t
**
)
malloc16
(
Prx
*
sizeof
(
int32_t
*
)
);
pusch_vars
[
ULSCH_id
]
->
rho
=
(
int32_t
**
)
malloc16_clear
(
Prx
*
sizeof
(
int32_t
*
)
);
...
...
@@ -268,16 +269,18 @@ int phy_init_nr_gNB(PHY_VARS_gNB *gNB,
pusch_vars
[
ULSCH_id
]
->
ul_ch_estimates_time
[
i
]
=
(
int32_t
*
)
malloc16_clear
(
2
*
sizeof
(
int32_t
)
*
fp
->
ofdm_symbol_size
);
pusch_vars
[
ULSCH_id
]
->
ul_ch_ptrs_estimates
[
i
]
=
(
int32_t
*
)
malloc16_clear
(
sizeof
(
int32_t
)
*
fp
->
ofdm_symbol_size
*
2
*
fp
->
symbols_per_slot
);
// max intensity in freq is 1 sc every 2 RBs
pusch_vars
[
ULSCH_id
]
->
ul_ch_ptrs_estimates_ext
[
i
]
=
(
int32_t
*
)
malloc16_clear
(
sizeof
(
int32_t
)
*
fp
->
ofdm_symbol_size
*
2
*
fp
->
symbols_per_slot
);
pusch_vars
[
ULSCH_id
]
->
ptrs_phase_per_slot
[
i
]
=
(
int32_t
*
)
malloc16_clear
(
sizeof
(
int32_t
)
*
fp
->
symbols_per_slot
);
// symbols per slot
pusch_vars
[
ULSCH_id
]
->
rxdataF_comp
[
i
]
=
(
int32_t
*
)
malloc16_clear
(
sizeof
(
int32_t
)
*
N_RB_UL
*
12
*
fp
->
symbols_per_slot
);
pusch_vars
[
ULSCH_id
]
->
ul_ch_mag0
[
i
]
=
(
int32_t
*
)
malloc16_clear
(
fp
->
symbols_per_slot
*
sizeof
(
int32_t
)
*
N_RB_UL
*
12
);
pusch_vars
[
ULSCH_id
]
->
ul_ch_magb0
[
i
]
=
(
int32_t
*
)
malloc16_clear
(
fp
->
symbols_per_slot
*
sizeof
(
int32_t
)
*
N_RB_UL
*
12
);
pusch_vars
[
ULSCH_id
]
->
ul_ch_mag0
[
i
]
=
(
int32_t
*
)
malloc16_clear
(
fp
->
symbols_per_slot
*
sizeof
(
int32_t
)
*
N_RB_UL
*
12
);
pusch_vars
[
ULSCH_id
]
->
ul_ch_magb0
[
i
]
=
(
int32_t
*
)
malloc16_clear
(
fp
->
symbols_per_slot
*
sizeof
(
int32_t
)
*
N_RB_UL
*
12
);
pusch_vars
[
ULSCH_id
]
->
ul_ch_mag
[
i
]
=
(
int32_t
*
)
malloc16_clear
(
fp
->
symbols_per_slot
*
sizeof
(
int32_t
)
*
N_RB_UL
*
12
);
pusch_vars
[
ULSCH_id
]
->
ul_ch_magb
[
i
]
=
(
int32_t
*
)
malloc16_clear
(
fp
->
symbols_per_slot
*
sizeof
(
int32_t
)
*
N_RB_UL
*
12
);
pusch_vars
[
ULSCH_id
]
->
rho
[
i
]
=
(
int32_t
*
)
malloc16_clear
(
sizeof
(
int32_t
)
*
(
fp
->
N_RB_UL
*
12
*
7
*
2
)
);
}
printf
(
"ULSCH_id %d (before llr alloc) : %p
\n
"
,
ULSCH_id
,
gNB
->
dlsch
[
0
][
0
]
->
harq_processes
[
0
]);
pusch_vars
[
ULSCH_id
]
->
llr
=
(
int16_t
*
)
malloc16_clear
(
(
8
*
((
3
*
8
*
6144
)
+
12
))
*
sizeof
(
int16_t
)
);
// [hna] 6144 is LTE and (8*((3*8*6144)+12)) is not clear
printf
(
"ULSCH_id %d (after llr alloc) : %p
\n
"
,
ULSCH_id
,
gNB
->
dlsch
[
0
][
0
]
->
harq_processes
[
0
]);
printf
(
"ULSCH_id %d (after llr alloc) : %p
\n
"
,
ULSCH_id
,
gNB
->
dlsch
[
0
][
0
]
->
harq_processes
[
0
]);
pusch_vars
[
ULSCH_id
]
->
ul_valid_re_per_slot
=
(
int16_t
*
)
malloc16_clear
(
sizeof
(
int16_t
)
*
fp
->
symbols_per_slot
);
}
//ulsch_id
/*
for (ulsch_id=0; ulsch_id<NUMBER_OF_UE_MAX; ulsch_id++)
...
...
@@ -338,6 +341,7 @@ void phy_free_nr_gNB(PHY_VARS_gNB *gNB)
free_and_zero
(
pusch_vars
[
ULSCH_id
]
->
ul_ch_estimates_time
[
i
]);
free_and_zero
(
pusch_vars
[
ULSCH_id
]
->
ul_ch_ptrs_estimates
[
i
]);
free_and_zero
(
pusch_vars
[
ULSCH_id
]
->
ul_ch_ptrs_estimates_ext
[
i
]);
free_and_zero
(
pusch_vars
[
ULSCH_id
]
->
ptrs_phase_per_slot
[
i
]);
free_and_zero
(
pusch_vars
[
ULSCH_id
]
->
rxdataF_comp
[
i
]);
free_and_zero
(
pusch_vars
[
ULSCH_id
]
->
ul_ch_mag0
[
i
]);
free_and_zero
(
pusch_vars
[
ULSCH_id
]
->
ul_ch_magb0
[
i
]);
...
...
@@ -353,6 +357,8 @@ void phy_free_nr_gNB(PHY_VARS_gNB *gNB)
free_and_zero
(
pusch_vars
[
ULSCH_id
]
->
ul_ch_ptrs_estimates
);
free_and_zero
(
pusch_vars
[
ULSCH_id
]
->
ul_ch_ptrs_estimates_ext
);
free_and_zero
(
pusch_vars
[
ULSCH_id
]
->
ul_ch_estimates_time
);
free_and_zero
(
pusch_vars
[
ULSCH_id
]
->
ptrs_phase_per_slot
);
free_and_zero
(
pusch_vars
[
ULSCH_id
]
->
ul_valid_re_per_slot
);
free_and_zero
(
pusch_vars
[
ULSCH_id
]
->
rxdataF_comp
);
free_and_zero
(
pusch_vars
[
ULSCH_id
]
->
ul_ch_mag0
);
free_and_zero
(
pusch_vars
[
ULSCH_id
]
->
ul_ch_magb0
);
...
...
openair1/PHY/NR_ESTIMATION/nr_ul_channel_estimation.c
View file @
98fa483c
This diff is collapsed.
Click to expand it.
openair1/PHY/NR_ESTIMATION/nr_ul_estimation.h
View file @
98fa483c
...
...
@@ -51,4 +51,30 @@ void gNB_I0_measurements(PHY_VARS_gNB *gNB);
int
nr_est_timing_advance_pusch
(
PHY_VARS_gNB
*
phy_vars_gNB
,
int
UE_id
);
void
nr_pusch_ptrs_processing
(
PHY_VARS_gNB
*
gNB
,
nfapi_nr_pusch_pdu_t
*
rel15_ul
,
uint8_t
ulsch_id
,
uint8_t
nr_tti_rx
,
uint8_t
dmrs_symbol_flag
,
unsigned
char
symbol
,
uint32_t
nb_re_pusch
);
void
nr_pusch_phase_estimation
(
NR_DL_FRAME_PARMS
*
frame_parms
,
nfapi_nr_pusch_pdu_t
*
rel15_ul
,
int16_t
*
ptrs_ch_p
,
unsigned
char
Ns
,
unsigned
char
symbol
,
int16_t
*
rxF_comp
,
uint32_t
***
ptrs_gold_seq
,
int16_t
*
error_est
,
uint16_t
*
ptrs_sc
);
void
nr_pusch_phase_interpolation
(
int16_t
*
error_est
,
uint8_t
start_symbol
,
uint8_t
end_symbol
);
int
nr_ptrs_find_next_estimate
(
int16_t
*
error_est
,
uint8_t
counter
,
uint8_t
end_symbol
);
#endif
openair1/PHY/NR_REFSIG/dmrs_nr.c
View file @
98fa483c
...
...
@@ -362,4 +362,25 @@ void generate_dmrs_pbch(uint32_t dmrs_pbch_bitmap[DMRS_PBCH_I_SSB][DMRS_PBCH_N_H
free
(
dmrs_sequence
);
#endif
}
/* return the position of next dmrs symbol in a slot */
int
get_next_dmrs_symbol_in_slot
(
uint16_t
ul_dmrs_symb_pos
,
uint8_t
counter
,
uint8_t
end_symbol
)
{
for
(
uint8_t
symbol
=
counter
;
symbol
<
end_symbol
;
symbol
++
)
if
((
ul_dmrs_symb_pos
>>
symbol
)
&
0x01
)
{
return
symbol
;
}
return
0
;
}
/* return the total number of dmrs symbol in a slot */
uint8_t
get_dmrs_symbols_in_slot
(
uint16_t
l_prime_mask
,
uint16_t
nb_symb
)
{
uint8_t
tmp
=
0
;
for
(
int
i
=
0
;
i
<
nb_symb
;
i
++
)
{
tmp
+=
(
l_prime_mask
>>
i
)
&
0x01
;
}
return
tmp
;
}
openair1/PHY/NR_REFSIG/nr_dmrs_rx.c
View file @
98fa483c
...
...
@@ -223,3 +223,27 @@ int nr_pbch_dmrs_rx(int symbol,
return
(
0
);
}
/*!
\brief This function generate gold ptrs sequence for each OFDM symbol
\param *in gold sequence for ptrs per OFDM symbol
\param length is number of RE in a OFDM symbol
\param *output pointer to all ptrs RE in a OFDM symbol
*/
void
nr_gen_ref_conj_symbols
(
uint32_t
*
in
,
uint32_t
length
,
int16_t
*
output
,
uint16_t
offset
,
int
mod_order
)
{
uint8_t
idx
,
b_idx
;
for
(
int
i
=
0
;
i
<
length
/
mod_order
;
i
++
)
{
idx
=
0
;
for
(
int
j
=
0
;
j
<
mod_order
;
j
++
)
{
b_idx
=
(
i
*
mod_order
+
j
)
&
0x1f
;
if
(
i
&&
(
!
b_idx
))
in
++
;
idx
^=
(((
*
in
)
>>
b_idx
)
&
1
)
<<
(
mod_order
-
j
-
1
);
}
output
[
i
<<
1
]
=
nr_rx_mod_table
[(
offset
+
idx
)
<<
1
];
output
[(
i
<<
1
)
+
1
]
=
nr_rx_mod_table
[((
offset
+
idx
)
<<
1
)
+
1
];
}
}
openair1/PHY/NR_REFSIG/nr_refsig.h
View file @
98fa483c
...
...
@@ -52,6 +52,9 @@ int nr_pusch_dmrs_rx(PHY_VARS_gNB *gNB,
uint8_t
dmrs_type
);
void
init_scrambling_luts
(
void
);
void
nr_gen_ref_conj_symbols
(
uint32_t
*
in
,
uint32_t
length
,
int16_t
*
output
,
uint16_t
offset
,
int
mod_order
);
uint8_t
get_next_dmrs_symbol_in_slot
(
uint16_t
ul_dmrs_symb_pos
,
uint8_t
counter
,
uint8_t
end_symbol
);
uint8_t
get_dmrs_symbols_in_slot
(
uint16_t
l_prime_mask
,
uint16_t
nb_symb
);
void
nr_generate_modulation_table
(
void
);
...
...
openair1/PHY/NR_TRANSPORT/nr_transport_proto.h
View file @
98fa483c
...
...
@@ -157,7 +157,6 @@ void nr_ulsch_extract_rbs_single(int32_t **rxdataF,
NR_gNB_PUSCH
*
pusch_vars
,
unsigned
char
symbol
,
uint8_t
is_dmrs_symbol
,
uint8_t
is_ptrs_symbol
,
nfapi_nr_pusch_pdu_t
*
pusch_pdu
,
NR_DL_FRAME_PARMS
*
frame_parms
);
...
...
openair1/PHY/NR_TRANSPORT/nr_ulsch_demodulation.c
View file @
98fa483c
This diff is collapsed.
Click to expand it.
openair1/PHY/NR_UE_TRANSPORT/nr_ulsch_ue.c
View file @
98fa483c
...
...
@@ -226,12 +226,12 @@ void nr_ue_ulsch_procedures(PHY_VARS_NR_UE *UE,
/////////////////////////PTRS parameters' initialization/////////////////////////
///////////
int16_t
mod_ptrs
[
(
nb_rb
/
2
)
*
(
NR_SYMBOLS_PER_SLOT
-
1
)
*
2
]
;
// assume maximum number of PTRS per pusch allocation
int16_t
mod_ptrs
[
nb_rb
]
__attribute
((
aligned
(
16
)))
;
// assume maximum number of PTRS per pusch allocation
K_ptrs
=
0
;
// just to avoid a warning
if
(
harq_process_ul_ue
->
pusch_pdu
.
pdu_bit_map
&
PUSCH_PDU_BITMAP_PUSCH_PTRS
)
{
K_ptrs
=
(
harq_process_ul_ue
->
pusch_pdu
.
pusch_ptrs
.
ptrs_freq_density
)
?
4
:
2
;
K_ptrs
=
harq_process_ul_ue
->
pusch_pdu
.
pusch_ptrs
.
ptrs_freq_density
;
L_ptrs
=
1
<<
harq_process_ul_ue
->
pusch_pdu
.
pusch_ptrs
.
ptrs_time_density
;
beta_ptrs
=
1
;
// temp value until power control is implemented
...
...
@@ -322,7 +322,7 @@ void nr_ue_ulsch_procedures(PHY_VARS_NR_UE *UE,
uint16_t
m
=
0
,
n
=
0
,
dmrs_idx
=
0
,
ptrs_idx
=
0
;
for
(
l
=
start_symbol
;
l
<
start_symbol
+
number_of_symbols
;
l
++
)
{
ptrs_idx
=
0
;
// every PTRS symbol has a new gold sequence
k
=
start_sc
;
n
=
0
;
dmrs_idx
=
0
;
...
...
openair1/PHY/defs_gNB.h
View file @
98fa483c
...
...
@@ -397,8 +397,6 @@ typedef struct {
/// - first index: rx antenna id [0..nb_antennas_rx[
/// - second index (definition from phy_init_lte_eNB()): ? [0..12*N_RB_UL*frame_parms->symbols_per_tti[
int32_t
**
rxdataF_ext2
;
/// \brief Offset for calculating the index of rxdataF_ext for the current symbol
uint32_t
rxdataF_ext_offset
;
/// \brief Hold the channel estimates in time domain based on DRS.
/// - first index: rx antenna id [0..nb_antennas_rx[
/// - second index: ? [0..4*ofdm_symbol_size[
...
...
@@ -466,6 +464,13 @@ typedef struct {
uint16_t
ptrs_symbols
;
// PTRS subcarriers per OFDM symbol
uint16_t
ptrs_sc_per_ofdm_symbol
;
/// \brief Estimated phase error based upon PTRS on each symbol .
/// - first index: ? [0..7] Number of Antenna
/// - second index: ? [0...14] smybol per slot
int32_t
**
ptrs_phase_per_slot
;
/// \brief Total RE count after DMRS/PTRS RE's are extracted from respective symbol.
/// - first index: ? [0...14] smybol per slot
int16_t
*
ul_valid_re_per_slot
;
/// flag to verify if channel level computation is done
uint8_t
cl_done
;
}
NR_gNB_PUSCH
;
...
...
@@ -807,10 +812,12 @@ typedef struct PHY_VARS_gNB_s {
time_stats_t
ulsch_deinterleaving_stats
;
time_stats_t
ulsch_unscrambling_stats
;
time_stats_t
ulsch_channel_estimation_stats
;
time_stats_t
ulsch_ptrs_processing_stats
;
time_stats_t
ulsch_channel_compensation_stats
;
time_stats_t
ulsch_rbs_extraction_stats
;
time_stats_t
ulsch_mrc_stats
;
time_stats_t
ulsch_llr_stats
;
/*
time_stats_t rx_dft_stats;
time_stats_t ulsch_freq_offset_estimation_stats;
...
...
openair1/SIMULATION/NR_PHY/ulsim.c
View file @
98fa483c
This diff is collapsed.
Click to expand it.
openair1/SIMULATION/TOOLS/phase_noise.c
0 → 100644
View file @
98fa483c
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
#include "sim.h"
/* linear phase noise model */
void
phase_noise
(
double
ts
,
int16_t
*
InRe
,
int16_t
*
InIm
)
{
double
fd
=
300
;
//0.01*30000
static
double
i
=
0
;
double
real
,
imag
,
x
,
y
;
i
++
;
real
=
cos
(
fd
*
2
*
M_PI
*
i
*
ts
);
imag
=
sin
(
fd
*
2
*
M_PI
*
i
*
ts
);
x
=
((
real
*
(
double
)
InRe
[
0
])
-
(
imag
*
(
double
)
InIm
[
0
]))
;
y
=
((
real
*
(
double
)
InIm
[
0
])
+
(
imag
*
(
double
)
InRe
[
0
]))
;
InRe
[
0
]
=
(
int16_t
)(
x
);
InIm
[
0
]
=
(
int16_t
)(
y
);
}
openair1/SIMULATION/TOOLS/sim.h
View file @
98fa483c
...
...
@@ -460,6 +460,14 @@ void init_channelmod(void) ;
double
N_RB2sampling_rate
(
uint16_t
N_RB
);
double
N_RB2channel_bandwidth
(
uint16_t
N_RB
);
/* Linear phase noise model */
/*!
\brief This function produce phase noise and add to input signal
\param ts Sampling time
\param *Re *Im Real and Imag part of the signal
*/
void
phase_noise
(
double
ts
,
int16_t
*
InRe
,
int16_t
*
InIm
);
#include "targets/RT/USER/rfsim.h"
void
do_DL_sig
(
sim_t
*
sim
,
...
...
openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.c
View file @
98fa483c
...
...
@@ -1940,9 +1940,9 @@ uint8_t get_K_ptrs(uint16_t nrb0, uint16_t nrb1, uint16_t N_RB) {
LOG_I
(
PHY
,
"PUSH PT-RS is not present.
\n
"
);
return
-
1
;
}
else
if
(
N_RB
>=
nrb0
&&
N_RB
<
nrb1
)
return
0
;
return
2
;
else
return
1
;
return
4
;
}
uint16_t
nr_dci_size
(
NR_ServingCellConfigCommon_t
*
scc
,
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment