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
alex037yang
OpenXG-RAN
Commits
a63c08d3
Commit
a63c08d3
authored
Dec 07, 2018
by
Guy De Souza
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
PBCH new format
parent
5e9af204
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
16 additions
and
16 deletions
+16
-16
openair1/PHY/NR_TRANSPORT/nr_dci_tools.c
openair1/PHY/NR_TRANSPORT/nr_dci_tools.c
+1
-1
openair1/PHY/NR_TRANSPORT/nr_pbch.c
openair1/PHY/NR_TRANSPORT/nr_pbch.c
+15
-15
No files found.
openair1/PHY/NR_TRANSPORT/nr_dci_tools.c
View file @
a63c08d3
...
@@ -129,7 +129,7 @@ void nr_fill_dci_and_dlsch(PHY_VARS_gNB *gNB,
...
@@ -129,7 +129,7 @@ void nr_fill_dci_and_dlsch(PHY_VARS_gNB *gNB,
dci_alloc
->
pdcch_params
.
rnti_type
,
dci_alloc
->
pdcch_params
.
rnti_type
,
N_RB
,
N_RB
,
cfg
);
cfg
);
Assert
_
Fatal
(
dci_alloc
->
size
<=
64
,
"DCI sizes above 64 bits not yet supported"
);
AssertFatal
(
dci_alloc
->
size
<=
64
,
"DCI sizes above 64 bits not yet supported"
);
n_shift
=
(
dci_alloc
->
pdcch_params
.
config_type
==
NFAPI_NR_CSET_CONFIG_MIB_SIB1
)
?
n_shift
=
(
dci_alloc
->
pdcch_params
.
config_type
==
NFAPI_NR_CSET_CONFIG_MIB_SIB1
)
?
cfg
->
sch_config
.
physical_cell_id
.
value
:
dci_alloc
->
pdcch_params
.
shift_index
;
cfg
->
sch_config
.
physical_cell_id
.
value
:
dci_alloc
->
pdcch_params
.
shift_index
;
nr_fill_cce_list
(
dci_alloc
,
n_shift
,
cand_idx
);
nr_fill_cce_list
(
dci_alloc
,
n_shift
,
cand_idx
);
...
...
openair1/PHY/NR_TRANSPORT/nr_pbch.c
View file @
a63c08d3
...
@@ -183,15 +183,15 @@ void nr_pbch_scrambling(NR_gNB_PBCH *pbch,
...
@@ -183,15 +183,15 @@ void nr_pbch_scrambling(NR_gNB_PBCH *pbch,
if
(
!
encoded
)
{
if
(
!
encoded
)
{
/// 1st Scrambling
/// 1st Scrambling
for
(
int
i
=
0
;
i
<
length
;
++
i
)
{
for
(
int
i
=
0
;
i
<
length
;
++
i
)
{
if
((
unscrambling_mask
>>
i
)
&
1
)
if
((
unscrambling_mask
>>
(
31
-
i
)
)
&
1
)
pbch
->
pbch_a_prime
^=
((
pbch
->
pbch_a_interleaved
>>
i
)
&
1
)
<<
i
;
pbch
->
pbch_a_prime
^=
((
pbch
->
pbch_a_interleaved
>>
(
31
-
i
))
&
1
)
<<
(
31
-
i
)
;
else
{
else
{
if
(((
k
+
offset
)
&
0x1f
)
==
0
)
{
if
(((
k
+
offset
)
&
0x1f
)
==
0
)
{
s
=
lte_gold_generic
(
&
x1
,
&
x2
,
reset
);
s
=
lte_gold_generic
(
&
x1
,
&
x2
,
reset
);
reset
=
0
;
reset
=
0
;
}
}
pbch
->
pbch_a_prime
^=
(((
pbch
->
pbch_a_interleaved
>>
i
)
&
1
)
^
((
s
>>
((
k
+
offset
)
&
0x1f
))
&
1
))
<<
i
;
pbch
->
pbch_a_prime
^=
(((
pbch
->
pbch_a_interleaved
>>
(
31
-
i
))
&
1
)
^
((
s
>>
((
k
+
offset
)
&
0x1f
))
&
1
))
<<
(
31
-
i
)
;
k
++
;
/// k increase only when payload bit is not special bit
k
++
;
/// k increase only when payload bit is not special bit
}
}
}
}
...
@@ -215,17 +215,17 @@ void nr_init_pbch_interleaver(uint8_t *interleaver) {
...
@@ -215,17 +215,17 @@ void nr_init_pbch_interleaver(uint8_t *interleaver) {
for
(
uint8_t
i
=
0
;
i
<
NR_POLAR_PBCH_PAYLOAD_BITS
;
i
++
)
for
(
uint8_t
i
=
0
;
i
<
NR_POLAR_PBCH_PAYLOAD_BITS
;
i
++
)
if
(
!
i
)
// choice bit:1
if
(
!
i
)
// choice bit:1
*
(
interleaver
+
i
)
=
*
(
nr_pbch_payload_interleaving_pattern
+
j_other
++
);
*
(
interleaver
+
i
)
=
*
(
nr_pbch_payload_interleaving_pattern
+
31
-
j_other
++
);
else
if
(
i
<
7
)
//Sfn bits:6
else
if
(
i
<
7
)
//Sfn bits:6
*
(
interleaver
+
i
)
=
*
(
nr_pbch_payload_interleaving_pattern
+
j_sfn
++
);
*
(
interleaver
+
i
)
=
*
(
nr_pbch_payload_interleaving_pattern
+
31
-
j_sfn
++
);
else
if
(
i
<
24
)
// other:17
else
if
(
i
<
24
)
// other:17
*
(
interleaver
+
i
)
=
*
(
nr_pbch_payload_interleaving_pattern
+
j_other
++
);
*
(
interleaver
+
i
)
=
*
(
nr_pbch_payload_interleaving_pattern
+
31
-
j_other
++
);
else
if
(
i
<
28
)
// Sfn:4
else
if
(
i
<
28
)
// Sfn:4
*
(
interleaver
+
i
)
=
*
(
nr_pbch_payload_interleaving_pattern
+
j_sfn
++
);
*
(
interleaver
+
i
)
=
*
(
nr_pbch_payload_interleaving_pattern
+
31
-
j_sfn
++
);
else
if
(
i
==
28
)
// Hrf bit:1
else
if
(
i
==
28
)
// Hrf bit:1
*
(
interleaver
+
i
)
=
*
(
nr_pbch_payload_interleaving_pattern
+
j_hrf
);
*
(
interleaver
+
i
)
=
*
(
nr_pbch_payload_interleaving_pattern
+
31
-
j_hrf
);
else
// Ssb bits:3
else
// Ssb bits:3
*
(
interleaver
+
i
)
=
*
(
nr_pbch_payload_interleaving_pattern
+
j_ssb
++
);
*
(
interleaver
+
i
)
=
*
(
nr_pbch_payload_interleaving_pattern
+
31
-
j_ssb
++
);
}
}
int
nr_generate_pbch
(
NR_gNB_PBCH
*
pbch
,
int
nr_generate_pbch
(
NR_gNB_PBCH
*
pbch
,
...
@@ -258,7 +258,7 @@ int nr_generate_pbch(NR_gNB_PBCH *pbch,
...
@@ -258,7 +258,7 @@ int nr_generate_pbch(NR_gNB_PBCH *pbch,
memset
((
void
*
)
pbch
,
0
,
sizeof
(
NR_gNB_PBCH
));
memset
((
void
*
)
pbch
,
0
,
sizeof
(
NR_gNB_PBCH
));
pbch
->
pbch_a
=
0
;
pbch
->
pbch_a
=
0
;
for
(
int
i
=
0
;
i
<
NR_PBCH_PDU_BITS
;
i
++
)
for
(
int
i
=
0
;
i
<
NR_PBCH_PDU_BITS
;
i
++
)
pbch
->
pbch_a
|=
((
pbch_pdu
[
2
-
(
i
>>
3
)]
>>
(
7
-
(
i
&
7
)))
&
1
)
<<
i
;
pbch
->
pbch_a
|=
((
pbch_pdu
[
2
-
(
i
>>
3
)]
>>
(
7
-
(
i
&
7
)))
&
1
)
<<
(
NR_PBCH_PDU_BITS
-
i
-
1
)
;
#ifdef DEBUG_PBCH_ENCODING
#ifdef DEBUG_PBCH_ENCODING
for
(
int
i
=
0
;
i
<
3
;
i
++
)
for
(
int
i
=
0
;
i
<
3
;
i
++
)
printf
(
"pbch_pdu[%d]: 0x%02x
\n
"
,
i
,
pbch_pdu
[
i
]);
printf
(
"pbch_pdu[%d]: 0x%02x
\n
"
,
i
,
pbch_pdu
[
i
]);
...
@@ -267,15 +267,15 @@ int nr_generate_pbch(NR_gNB_PBCH *pbch,
...
@@ -267,15 +267,15 @@ int nr_generate_pbch(NR_gNB_PBCH *pbch,
// Extra byte generation
// Extra byte generation
for
(
int
i
=
0
;
i
<
4
;
i
++
)
for
(
int
i
=
0
;
i
<
4
;
i
++
)
pbch
->
pbch_a
|=
((
sfn
>>
(
3
-
i
))
&
1
)
<<
(
24
+
i
);
// resp. 4th, 3rd, 2nd ans 1st lsb of sfn
pbch
->
pbch_a
|=
((
sfn
>>
(
3
-
i
))
&
1
)
<<
(
7
-
i
);
// resp. 4th, 3rd, 2nd ans 1st lsb of sfn
pbch
->
pbch_a
|=
n_hf
<<
28
;
// half frame index bit
pbch
->
pbch_a
|=
n_hf
<<
3
;
// half frame index bit
if
(
Lmax
==
64
)
if
(
Lmax
==
64
)
for
(
int
i
=
0
;
i
<
3
;
i
++
)
for
(
int
i
=
0
;
i
<
3
;
i
++
)
pbch
->
pbch_a
|=
((
ssb_index
>>
(
5
-
i
))
&
1
)
<<
(
2
9
+
i
);
// resp. 6th, 5th and 4th bits of ssb_index
pbch
->
pbch_a
|=
((
ssb_index
>>
(
5
-
i
))
&
1
)
<<
(
2
-
i
);
// resp. 6th, 5th and 4th bits of ssb_index
else
else
pbch
->
pbch_a
|=
((
config
->
sch_config
.
ssb_subcarrier_offset
.
value
>>
4
)
&
1
)
<<
2
9
;
//MSB of k_SSB (bit index 4)
pbch
->
pbch_a
|=
((
config
->
sch_config
.
ssb_subcarrier_offset
.
value
>>
4
)
&
1
)
<<
2
;
//MSB of k_SSB (bit index 4)
LOG_I
(
PHY
,
"After extra byte: pbch_a = 0x%08x
\n
"
,
pbch
->
pbch_a
);
LOG_I
(
PHY
,
"After extra byte: pbch_a = 0x%08x
\n
"
,
pbch
->
pbch_a
);
...
@@ -294,7 +294,7 @@ int nr_generate_pbch(NR_gNB_PBCH *pbch,
...
@@ -294,7 +294,7 @@ int nr_generate_pbch(NR_gNB_PBCH *pbch,
#endif
#endif
// Scrambling
// Scrambling
unscrambling_mask
=
(
Lmax
==
64
)
?
0x
100006D
:
0x1000041
;
unscrambling_mask
=
(
Lmax
==
64
)
?
0x
B6000080
:
0x82000080
;
M
=
(
Lmax
==
64
)
?
(
NR_POLAR_PBCH_PAYLOAD_BITS
-
6
)
:
(
NR_POLAR_PBCH_PAYLOAD_BITS
-
3
);
M
=
(
Lmax
==
64
)
?
(
NR_POLAR_PBCH_PAYLOAD_BITS
-
6
)
:
(
NR_POLAR_PBCH_PAYLOAD_BITS
-
3
);
nushift
=
(((
sfn
>>
2
)
&
1
)
<<
1
)
^
((
sfn
>>
1
)
&
1
);
nushift
=
(((
sfn
>>
2
)
&
1
)
<<
1
)
^
((
sfn
>>
1
)
&
1
);
pbch
->
pbch_a_prime
=
0
;
pbch
->
pbch_a_prime
=
0
;
...
...
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