Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
OpenXG-RAN
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
canghaiwuhen
OpenXG-RAN
Commits
496eae67
Commit
496eae67
authored
6 years ago
by
Raymond Knopp
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
minor changes in initial synchronization
parent
a780c31d
Changes
10
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
67 additions
and
45 deletions
+67
-45
cmake_targets/CMakeLists.txt
cmake_targets/CMakeLists.txt
+2
-2
openair1/PHY/INIT/nr_init.c
openair1/PHY/INIT/nr_init.c
+2
-0
openair1/PHY/INIT/nr_init_ue.c
openair1/PHY/INIT/nr_init_ue.c
+2
-0
openair1/PHY/MODULATION/slot_fep_nr.c
openair1/PHY/MODULATION/slot_fep_nr.c
+7
-8
openair1/PHY/NR_REFSIG/sss_nr.h
openair1/PHY/NR_REFSIG/sss_nr.h
+1
-1
openair1/PHY/NR_TRANSPORT/nr_sss.c
openair1/PHY/NR_TRANSPORT/nr_sss.c
+3
-2
openair1/PHY/NR_UE_TRANSPORT/nr_pbch.c
openair1/PHY/NR_UE_TRANSPORT/nr_pbch.c
+4
-2
openair1/PHY/NR_UE_TRANSPORT/pss_nr.c
openair1/PHY/NR_UE_TRANSPORT/pss_nr.c
+5
-0
openair1/PHY/NR_UE_TRANSPORT/sss_nr.c
openair1/PHY/NR_UE_TRANSPORT/sss_nr.c
+35
-27
openair1/PHY/TOOLS/lte_dfts.c
openair1/PHY/TOOLS/lte_dfts.c
+6
-3
No files found.
cmake_targets/CMakeLists.txt
View file @
496eae67
...
...
@@ -1297,7 +1297,7 @@ set(PHY_SRC_UE
${
OPENAIR1_DIR
}
/PHY/NR_REFSIG/nr_gold.c
${
OPENAIR1_DIR
}
/PHY/TOOLS/file_output.c
${
OPENAIR1_DIR
}
/PHY/TOOLS/cadd_vv.c
${
OPENAIR1_DIR
}
/PHY/TOOLS/lte_dfts.c
#
${OPENAIR1_DIR}/PHY/TOOLS/lte_dfts.c
${
OPENAIR1_DIR
}
/PHY/TOOLS/log2_approx.c
${
OPENAIR1_DIR
}
/PHY/TOOLS/cmult_sv.c
${
OPENAIR1_DIR
}
/PHY/TOOLS/cmult_vv.c
...
...
@@ -1334,7 +1334,7 @@ set(PHY_SRC_UE
${
OPENAIR1_DIR
}
/PHY/NR_UE_ESTIMATION/nr_dl_channel_estimation.c
${
OPENAIR1_DIR
}
/PHY/TOOLS/file_output.c
${
OPENAIR1_DIR
}
/PHY/TOOLS/cadd_vv.c
${
OPENAIR1_DIR
}
/PHY/TOOLS/lte_dfts.c
#
${OPENAIR1_DIR}/PHY/TOOLS/lte_dfts.c
${
OPENAIR1_DIR
}
/PHY/TOOLS/log2_approx.c
${
OPENAIR1_DIR
}
/PHY/TOOLS/cmult_sv.c
${
OPENAIR1_DIR
}
/PHY/TOOLS/cmult_vv.c
...
...
This diff is collapsed.
Click to expand it.
openair1/PHY/INIT/nr_init.c
View file @
496eae67
...
...
@@ -100,6 +100,8 @@ int phy_init_nr_gNB(PHY_VARS_gNB *gNB,
gNB
->
check_for_MUMIMO_transmissions
=
0
;
while
(
gNB
->
configured
==
0
)
usleep
(
10000
);
init_dfts
();
/*
LOG_I(PHY,"[gNB %"PRIu8"] Initializing DL_FRAME_PARMS : N_RB_DL %"PRIu8", PHICH Resource %d, PHICH Duration %d nb_antennas_tx:%u nb_antennas_rx:%u PRACH[rootSequenceIndex:%u prach_Config_enabled:%u configIndex:%u highSpeed:%u zeroCorrelationZoneConfig:%u freqOffset:%u]\n",
gNB->Mod_id,
...
...
This diff is collapsed.
Click to expand it.
openair1/PHY/INIT/nr_init_ue.c
View file @
496eae67
...
...
@@ -655,6 +655,8 @@ int init_nr_ue_signal(PHY_VARS_NR_UE *ue,
fp
->
nb_antennas_tx
=
1
;
fp
->
nb_antennas_rx
=
1
;
init_dfts
();
printf
(
"Initializing UE vars (abstraction %"
PRIu8
") for eNB TXant %"
PRIu8
", UE RXant %"
PRIu8
"
\n
"
,
abstraction_flag
,
fp
->
nb_antennas_tx
,
fp
->
nb_antennas_rx
);
//LOG_D(PHY,"[MSC_NEW][FRAME 00000][PHY_UE][MOD %02u][]\n", ue->Mod_id+NB_eNB_INST);
...
...
This diff is collapsed.
Click to expand it.
openair1/PHY/MODULATION/slot_fep_nr.c
View file @
496eae67
...
...
@@ -25,17 +25,17 @@
#include "PHY/LTE_ESTIMATION/lte_estimation.h"
#include "PHY/NR_UE_ESTIMATION/nr_estimation.h"
//
#define DEBUG_FEP
#define DEBUG_FEP
#define SOFFSET 0
int
nr_slot_fep
(
PHY_VARS_NR_UE
*
ue
,
unsigned
char
l
,
unsigned
char
Ns
,
int
sample_offset
,
int
no_prefix
,
int
reset_freq_est
,
NR_CHANNEL_EST_t
channel
)
unsigned
char
l
,
unsigned
char
Ns
,
int
sample_offset
,
int
no_prefix
,
int
reset_freq_est
,
NR_CHANNEL_EST_t
channel
)
{
NR_DL_FRAME_PARMS
*
frame_parms
=
&
ue
->
frame_parms
;
NR_UE_COMMON
*
common_vars
=
&
ue
->
common_vars
;
...
...
@@ -143,7 +143,6 @@ int nr_slot_fep(PHY_VARS_NR_UE *ue,
#if UE_TIMING_TRACE
stop_meas
(
&
ue
->
rx_dft_stats
);
#endif
}
}
else
{
rx_offset
+=
(
frame_parms
->
ofdm_symbol_size
+
nb_prefix_samples
)
*
l
;
// +
...
...
This diff is collapsed.
Click to expand it.
openair1/PHY/NR_REFSIG/sss_nr.h
View file @
496eae67
...
...
@@ -51,7 +51,7 @@
#define NUMBER_SSS_SEQUENCE (336)
#define INVALID_SSS_SEQUENCE (NUMBER_SSS_SEQUENCE)
#define LENGTH_SSS_NR (127)
#define SCALING_METRIC_SSS_NR (19)
#define SCALING_METRIC_SSS_NR (1
5)//(1
9)
#define N_ID_2_NUMBER (NUMBER_PSS_SEQUENCE)
#define N_ID_1_NUMBER (NUMBER_SSS_SEQUENCE)
...
...
This diff is collapsed.
Click to expand it.
openair1/PHY/NR_TRANSPORT/nr_sss.c
View file @
496eae67
...
...
@@ -21,7 +21,7 @@
#include "PHY/NR_TRANSPORT/nr_transport.h"
//
#define NR_SSS_DEBUG
#define NR_SSS_DEBUG
int
nr_generate_sss
(
int16_t
*
d_sss
,
int32_t
**
txdataF
,
...
...
@@ -76,6 +76,7 @@ int nr_generate_sss( int16_t *d_sss,
for
(
int
m
=
0
;
m
<
NR_SSS_LENGTH
;
m
++
)
{
((
int16_t
*
)
txdataF
[
aa
])[
2
*
(
l
*
frame_parms
->
ofdm_symbol_size
+
k
)]
=
(
a
*
d_sss
[
m
])
>>
15
;
printf
(
"sss %d: %d
\n
"
,
m
,((
int16_t
*
)
txdataF
[
aa
])[
2
*
(
l
*
frame_parms
->
ofdm_symbol_size
+
k
)]);
k
++
;
if
(
k
>=
frame_parms
->
ofdm_symbol_size
)
...
...
@@ -83,7 +84,7 @@ int nr_generate_sss( int16_t *d_sss,
}
}
#ifdef NR_SSS_DEBUG
write_output
(
"sss_0.m"
,
"sss_0"
,
(
void
*
)
txdataF
[
0
][
2
*
l
*
frame_parms
->
ofdm_symbol_size
],
frame_parms
->
ofdm_symbol_size
,
1
,
1
);
// write_output("sss_0.m", "sss_0", (void*)txdataF[0][
l*frame_parms->ofdm_symbol_size], frame_parms->ofdm_symbol_size, 1, 1);
#endif
return
0
;
...
...
This diff is collapsed.
Click to expand it.
openair1/PHY/NR_UE_TRANSPORT/nr_pbch.c
View file @
496eae67
...
...
@@ -567,7 +567,7 @@ int nr_rx_pbch( PHY_VARS_NR_UE *ue,
#ifdef DEBUG_PBCH
//printf("address dataf %p",nr_ue_common_vars->common_vars_rx_data_per_thread[ue->current_thread_id[subframe_rx]].rxdataF);
write_output
(
"rxdataF0_pbch.m"
,
"rxF0pbch"
,
nr_ue_common_vars
->
common_vars_rx_data_per_thread
[
ue
->
current_thread_id
[
subframe_rx
]].
rxdataF
,
frame_parms
->
ofdm_symbol_size
*
4
,
2
,
1
);
write_output
(
"rxdataF0_pbch.m"
,
"rxF0pbch"
,
nr_ue_common_vars
->
common_vars_rx_data_per_thread
[
ue
->
current_thread_id
[
subframe_rx
]].
rxdataF
,
frame_parms
->
ofdm_symbol_size
*
4
,
1
,
1
);
#endif
nr_pbch_extract
(
nr_ue_common_vars
->
common_vars_rx_data_per_thread
[
ue
->
current_thread_id
[
subframe_rx
]].
rxdataF
,
...
...
@@ -718,6 +718,7 @@ int nr_rx_pbch( PHY_VARS_NR_UE *ue,
printf
(
"[PBCH] decoder payload[%d] = %x
\n
"
,
i
,
decoded_output
[
i
]);
}
//#endif
ue
->
dl_indication
.
rx_ind
=
&
ue
->
rx_ind
;
// hang on rx_ind instance
//ue->rx_ind.sfn_slot = 0; //should be set by higher-1-layer, i.e. clean_and_set_if_instance()
ue
->
rx_ind
.
number_pdus
=
ue
->
rx_ind
.
number_pdus
+
1
;
...
...
@@ -729,7 +730,8 @@ int nr_rx_pbch( PHY_VARS_NR_UE *ue,
ue
->
rx_ind
.
rx_indication_body
->
mib_pdu
.
ssb_length
=
Lmax
;
// confirm with TCL
ue
->
rx_ind
.
rx_indication_body
->
mib_pdu
.
cell_id
=
frame_parms
->
Nid_cell
;
// confirm with TCL
ue
->
if_inst
->
dl_indication
(
&
ue
->
dl_indication
);
if
(
ue
->
if_inst
&&
ue
->
if_inst
->
dl_indication
)
ue
->
if_inst
->
dl_indication
(
&
ue
->
dl_indication
);
return
0
;
}
...
...
This diff is collapsed.
Click to expand it.
openair1/PHY/NR_UE_TRANSPORT/pss_nr.c
View file @
496eae67
...
...
@@ -269,6 +269,8 @@ void generate_pss_nr(int N_ID_2, int ofdm_symbol_size)
#ifdef DBG_PSS_NR
if
(
N_ID_2
==
0
)
{
for
(
int
i
=
0
;
i
<
16
;
i
++
)
printf
(
"f %d: %d,%d
\n
"
,
i
,
synchroF_tmp
[
i
<<
1
],
synchroF_tmp
[
1
+
(
i
<<
1
)]);
for
(
int
i
=
0
;
i
<
16
;
i
++
)
printf
(
"t %d: %d,%d
\n
"
,
i
,
primary_synchro_time
[
i
<<
1
],
primary_synchro_time
[
1
+
(
i
<<
1
)]);
char
output_file
[
255
];
char
sequence_name
[
255
];
sprintf
(
output_file
,
"%s%d_%d%s"
,
"pss_seq_t_"
,
N_ID_2
,
length
,
".m"
);
...
...
@@ -277,6 +279,9 @@ void generate_pss_nr(int N_ID_2, int ofdm_symbol_size)
printf
(
"file %s sequence %s
\n
"
,
output_file
,
sequence_name
);
write_output
(
output_file
,
sequence_name
,
primary_synchro_time
,
length
,
1
,
1
);
sprintf
(
output_file
,
"%s%d_%d%s"
,
"pss_seq_f_"
,
N_ID_2
,
length
,
".m"
);
sprintf
(
sequence_name
,
"%s%d_%d"
,
"pss_seq_f_"
,
N_ID_2
,
length
);
write_output
(
output_file
,
sequence_name
,
synchroF_tmp
,
length
,
1
,
1
);
}
#endif
...
...
This diff is collapsed.
Click to expand it.
openair1/PHY/NR_UE_TRANSPORT/sss_nr.c
View file @
496eae67
...
...
@@ -96,7 +96,8 @@ void init_context_sss_nr(int amp)
/* Modulation of SSS is a BPSK TS 36.211 chapter 5.1.2 BPSK */
#if 1
d_sss
[
N_ID_2
][
N_ID_1
][
n
]
=
dss_current
*
amp
;
d_sss
[
N_ID_2
][
N_ID_1
][
n
]
=
dss_current
;
// * amp;
(
void
)
amp
;
#else
(
void
)
amp
;
d_sss
[
N_ID_2
][
N_ID_1
][
n
]
=
(
dss_current
*
SHRT_MAX
)
>>
SCALING_PSS_NR
;
...
...
@@ -126,6 +127,8 @@ void init_context_sss_nr(int amp)
*
*********************************************************************/
#define DEBUG_SSS_NR
#define DEBUG_PLOT_SSS
void
insert_sss_nr
(
int16_t
*
sss_time
,
NR_DL_FRAME_PARMS
*
frame_parms
)
{
...
...
@@ -425,21 +428,21 @@ int rx_sss_nr(PHY_VARS_NR_UE *ue, int32_t *tot_metric,uint8_t *phase_max)
// Do FFTs for SSS/PSS
// SSS
nr_slot_fep
(
ue
,
SSS_SYMBOL_NB
,
// symbol number
0
,
// Ns slot number
ue
->
rx_offset
,
// sample_offset of int16_t
0
,
// no_prefix
1
,
// reset frequency estimation
NR_SSS_EST
);
SSS_SYMBOL_NB
,
// symbol number
0
,
// Ns slot number
ue
->
rx_offset
,
// sample_offset of int16_t
0
,
// no_prefix
1
,
// reset frequency estimation
NR_SSS_EST
);
// PSS
nr_slot_fep
(
ue
,
PSS_SYMBOL_NB
,
0
,
ue
->
rx_offset
,
0
,
1
,
NR_SSS_EST
);
PSS_SYMBOL_NB
,
0
,
ue
->
rx_offset
,
0
,
1
,
NR_SSS_EST
);
frame_parms
->
nb_prefix_samples0
=
nb_prefix_samples0
;
...
...
@@ -452,17 +455,11 @@ int rx_sss_nr(PHY_VARS_NR_UE *ue, int32_t *tot_metric,uint8_t *phase_max)
#ifdef DEBUG_PLOT_SSS
write_output
(
"rxsig0.m"
,
"rxs0"
,
&
ue
->
common_vars
.
rxdata
[
0
][
0
],
ue
->
frame_parms
.
samples_per_tti
,
1
,
1
);
write_output
(
"rxdataF0.m"
,
"rxF0"
,
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
ue
->
current_thread_id
[
0
]].
rxdataF
[
0
],
frame_parms
->
ofdm_symbol_size
,
2
,
1
);
write_output
(
"rxdataF0.m"
,
"rxF0"
,
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
ue
->
current_thread_id
[
0
]].
rxdataF
[
0
]
[
frame_parms
->
ofdm_symbol_size
*
SSS_SYMBOL_NB
]
,
frame_parms
->
ofdm_symbol_size
,
2
,
1
);
write_output
(
"pss_ext.m"
,
"pss_ext"
,
pss_ext
,
LENGTH_PSS_NR
,
1
,
1
);
#endif
#if 0
write_output("sss_ext.m","sss_ext",sss_ext,LENGTH_SSS_NR,1,1);
write_output("sss_ref.m","sss_ref", d_sss,LENGTH_SSS_NR,1,1);
#endif
#if 0
int16_t *p = (int16_t *)sss_ext[0];
...
...
@@ -489,6 +486,14 @@ int rx_sss_nr(PHY_VARS_NR_UE *ue, int32_t *tot_metric,uint8_t *phase_max)
sss
=
(
int16_t
*
)
&
sss_ext
[
0
][
0
];
#ifdef DEBUG_PLOT_SSS
write_output
(
"sss_ext.m"
,
"sss_ext"
,
sss_ext
[
0
],
LENGTH_SSS_NR
,
1
,
1
);
write_output
(
"sss_ref.m"
,
"sss_ref"
,
d_sss
,
LENGTH_SSS_NR
,
1
,
1
);
#endif
#if 0
/* simulate of a phase shift on the signal */
...
...
@@ -499,11 +504,11 @@ int rx_sss_nr(PHY_VARS_NR_UE *ue, int32_t *tot_metric,uint8_t *phase_max)
#endif
#if
0
#if
1
int16_t
*
ps
=
(
int16_t
*
)
pss_ext
;
for
(
int
i
=
0
;
i
<
LENGTH_SSS_NR
;
i
++
)
{
printf("sss ref [%i] : %d
%d \n", i, d_sss[0][0][i]
, d_sss[0][0][i]);
printf
(
"sss ref [%i] : %d
\n
"
,
i
,
d_sss
[
0
][
0
][
i
]);
printf
(
"sss ext [%i] : %d %d
\n
"
,
i
,
sss
[
2
*
i
],
sss
[
2
*
i
+
1
]);
printf
(
"pss ref [%i] : %d %d
\n
"
,
i
,
primary_synchro_nr
[
0
][
2
*
i
],
primary_synchro_nr
[
0
][
2
*
i
+
1
]);
...
...
@@ -528,8 +533,11 @@ int rx_sss_nr(PHY_VARS_NR_UE *ue, int32_t *tot_metric,uint8_t *phase_max)
// This is the inner product using one particular value of each unknown parameter
for
(
i
=
0
;
i
<
LENGTH_SSS_NR
;
i
++
)
{
metric_re
+=
d
[
i
]
*
(((
phase_re_nr
[
phase
]
*
sss
[
2
*
i
])
>>
SCALING_METRIC_SSS_NR
)
-
((
phase_im_nr
[
phase
]
*
sss
[
2
*
i
+
1
])
>>
SCALING_METRIC_SSS_NR
))
+
d
[
i
]
*
(((
phase_im_nr
[
phase
]
*
sss
[
2
*
i
])
>>
SCALING_METRIC_SSS_NR
)
+
((
phase_re_nr
[
phase
]
*
sss
[
2
*
i
+
1
])
>>
SCALING_METRIC_SSS_NR
));
if
(
Nid1
==
0
&&
phase
==
3
)
printf
(
"i %d, phase %d/%d: metric %d, phase (%d,%d) sss (%d,%d) d %d
\n
"
,
i
,
phase
,
PHASE_HYPOTHESIS_NUMBER
,
metric_re
,
phase_re_nr
[
phase
],
phase_im_nr
[
phase
],
sss
[
2
*
i
],
sss
[
1
+
(
2
*
i
)],
d
[
i
]);
}
metric
=
metric_re
;
...
...
@@ -550,14 +558,14 @@ int rx_sss_nr(PHY_VARS_NR_UE *ue, int32_t *tot_metric,uint8_t *phase_max)
}
//#ifdef DEBUG_SSS_NR
#define SSS_METRIC_FLOOR_NR (30000)
if
(
*
tot_metric
>
SSS_METRIC_FLOOR_NR
)
{
if
(
*
tot_metric
>
SSS_METRIC_FLOOR_NR
)
{
Nid2
=
GET_NID2
(
frame_parms
->
Nid_cell
);
Nid1
=
GET_NID1
(
frame_parms
->
Nid_cell
);
printf
(
"Nid2 %d Nid1 %d tot_metric %d, phase_max %d
\n
"
,
Nid2
,
Nid1
,
*
tot_metric
,
*
phase_max
);
}
//#endif
}
//#endif
return
(
0
);
}
This diff is collapsed.
Click to expand it.
openair1/PHY/TOOLS/lte_dfts.c
View file @
496eae67
...
...
@@ -74,7 +74,7 @@ static inline void cmac(__m128i a,__m128i b, __m128i *re32, __m128i *im32)
cmac_tmp
=
_mm_sign_epi16
(
b
,
*
(
__m128i
*
)
reflip
);
cmac_tmp_re32
=
_mm_madd_epi16
(
a
,
cmac_tmp
);
// cmac_tmp = _mm_shufflelo_epi16(b,_MM_SHUFFLE(2,3,0,1));
// cmac_tmp = _mm_shufflehi_epi16(cmac_tmp,_MM_SHUFFLE(2,3,0,1));
cmac_tmp
=
_mm_shuffle_epi8
(
b
,
_mm_set_epi8
(
13
,
12
,
15
,
14
,
9
,
8
,
11
,
10
,
5
,
4
,
7
,
6
,
1
,
0
,
3
,
2
));
...
...
@@ -4464,6 +4464,7 @@ void dft2048(int16_t *x,int16_t *y,int scale)
_mm_empty
();
_m_empty
();
}
void
idft2048
(
int16_t
*
x
,
int16_t
*
y
,
int
scale
)
...
...
@@ -4567,6 +4568,8 @@ void dft2048(int16_t *x,int16_t *y,int scale)
int
i
;
simd256_q15_t
ONE_OVER_SQRT2_Q15_128
=
set1_int16_simd256
(
ONE_OVER_SQRT2_Q15
);
write_output
(
"dftin.m"
,
"dftin"
,
x
,
2048
,
1
,
1
);
xtmpp
=
xtmp
;
for
(
i
=
0
;
i
<
4
;
i
++
)
{
...
...
@@ -4645,7 +4648,7 @@ void dft2048(int16_t *x,int16_t *y,int scale)
_mm_empty
();
_m_empty
();
write_output
(
"dftout.m"
,
"dftout"
,
y
,
2048
,
1
,
1
);
}
void
idft2048
(
int16_t
*
x
,
int16_t
*
y
,
int
scale
)
...
...
@@ -4658,7 +4661,7 @@ void idft2048(int16_t *x,int16_t *y,int scale)
simd256_q15_t
ONE_OVER_SQRT2_Q15_128
=
set1_int16_simd256
(
ONE_OVER_SQRT2_Q15
);
xtmpp
=
xtmp
;
for
(
i
=
0
;
i
<
4
;
i
++
)
{
transpose4_ooff_simd256
(
x256
,
xtmpp
,
128
);
transpose4_ooff_simd256
(
x256
+
2
,
xtmpp
+
1
,
128
);
...
...
This diff is collapsed.
Click to expand it.
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