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
zzha zzha
OpenXG-RAN
Commits
f9a81c17
Commit
f9a81c17
authored
Feb 12, 2018
by
Hongzhi
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
TBS bg1 for sib1/2
parent
0933c1c7
Changes
6
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
97 additions
and
99 deletions
+97
-99
openair1/PHY/CODING/nr_segmentation.c
openair1/PHY/CODING/nr_segmentation.c
+5
-5
openair1/PHY/LTE_TRANSPORT/dlsch_decoding.c
openair1/PHY/LTE_TRANSPORT/dlsch_decoding.c
+59
-30
openair1/PHY/LTE_TRANSPORT/dlsch_tbs_full.h
openair1/PHY/LTE_TRANSPORT/dlsch_tbs_full.h
+28
-59
openair1/PHY/defs.h
openair1/PHY/defs.h
+2
-2
openair1/PHY/impl_defs_lte.h
openair1/PHY/impl_defs_lte.h
+2
-2
openair1/SCHED/phy_procedures_lte_ue.c
openair1/SCHED/phy_procedures_lte_ue.c
+1
-1
No files found.
openair1/PHY/CODING/nr_segmentation.c
View file @
f9a81c17
...
...
@@ -65,7 +65,7 @@ int32_t nr_segmentation(unsigned char *input_buffer,
// Find K+
Bprime_by_C
=
Bprime
/
(
*
C
);
if
(
Bprime
<=
192
)
{
/*
if (Bprime <=192) {
Kb = 6;
} else if (Bprime <=560) {
Kb = 8;
...
...
@@ -73,9 +73,9 @@ int32_t nr_segmentation(unsigned char *input_buffer,
Kb = 9;
} else if (Bprime <=3840) {
Kb = 10;;
}
else
{
} else {*/
Kb
=
22
;
}
//
}
if
((
Bprime_by_C
%
Kb
)
>
0
)
...
...
@@ -83,7 +83,7 @@ if ((Bprime_by_C%Kb) > 0)
else
Z
=
(
Bprime_by_C
/
Kb
);
//
printf("nr segmetation B %d Bprime %d Bprime_by_C %d z %d \n", B, Bprime, Bprime_by_C, Z);
printf
(
"nr segmetation B %d Bprime %d Bprime_by_C %d z %d
\n
"
,
B
,
Bprime
,
Bprime_by_C
,
Z
);
if
(
Z
<=
2
)
{
*
Kplus
=
2
;
...
...
@@ -141,7 +141,7 @@ else
*
F
=
((
*
C
)
*
(
*
Kplus
)
-
(
Bprime
));
//
printf("final nr seg output Z %d Kplus %d F %d \n", *Zout, *Kplus, *F);
printf
(
"final nr seg output Z %d Kplus %d F %d
\n
"
,
*
Zout
,
*
Kplus
,
*
F
);
#ifdef DEBUG_SEGMENTATION
printf
(
"C %d, Kplus %d, Kminus %d, Bprime_bytes %d, Bprime %d, F %d
\n
"
,
*
C
,
*
Kplus
,
*
Kminus
,
Bprime
>>
3
,
Bprime
,
*
F
);
#endif
...
...
openair1/PHY/LTE_TRANSPORT/dlsch_decoding.c
View file @
f9a81c17
...
...
@@ -352,7 +352,6 @@ uint32_t dlsch_decoding(PHY_VARS_UE *phy_vars_ue,
}
kb
=
harq_process
->
Kplus
/
harq_process
->
Z
;
// p_decParams->Z = 128;
if
(
kb
==
22
){
p_decParams
->
BG
=
1
;
p_decParams
->
R
=
13
;
...
...
@@ -364,7 +363,7 @@ uint32_t dlsch_decoding(PHY_VARS_UE *phy_vars_ue,
kc
=
52
;
}
p_decParams
->
numMaxIter
=
5
;
p_decParams
->
numMaxIter
=
10
;
Kr
=
p_decParams
->
Z
*
kb
;
p_decParams
->
outMode
=
0
;
...
...
@@ -627,16 +626,16 @@ uint32_t dlsch_decoding(PHY_VARS_UE *phy_vars_ue,
llrProcBuf
,
p_procTime
);
ret
=
no_iteration_ldpc
;
//
ret = no_iteration_ldpc;
nb_total_decod
++
;
if
(
no_iteration_ldpc
>
5
){
nb_error_decod
++
;
}
//
if (!nb_total_decod%10000){
if
(
!
nb_total_decod
%
10000
){
printf
(
"Error number of iteration LPDC %d %ld/%ld
\n
"
,
no_iteration_ldpc
,
nb_error_decod
,
nb_total_decod
);
fflush
(
stdout
);
//
}
}
//else
//printf("OK number of iteration LPDC %d\n", no_iteration_ldpc);
...
...
@@ -650,11 +649,11 @@ uint32_t dlsch_decoding(PHY_VARS_UE *phy_vars_ue,
#endif
//#ifdef DEBUG_DLSCH_DECODING
//#ifdef DEBUG_DLSCH_DECODING
printf
(
"output decoder %d %d %d %d %d
\n
"
,
harq_process
->
c
[
r
][
0
],
harq_process
->
c
[
r
][
1
],
harq_process
->
c
[
r
][
2
],
harq_process
->
c
[
r
][
3
],
harq_process
->
c
[
r
][
4
]);
printf
(
"no_iterations_ldpc %d
\n
"
,
no_iteration_ldpc
);
write_output
(
"dec_output.m"
,
"dec0"
,
harq_process
->
c
[
0
],
Kr_bytes
,
1
,
4
);
//#endif
//
write_output("dec_output.m","dec0",harq_process->c[0],Kr_bytes,1,4);
//#endif
#if UE_TIMING_TRACE
...
...
@@ -945,7 +944,7 @@ uint32_t dlsch_decoding_mthread(PHY_VARS_UE *phy_vars_ue,
uint16_t
iind
;
// uint8_t dummy_channel_output[(3*8*block_length)+12];
short
dummy_w
[
MAX_NUM_DLSCH_SEGMENTS
][
3
*
(
8448
+
64
)];
uint32_t
r
,
r_offset
=
0
,
Kr
,
Kr_bytes
,
err_flag
=
0
;
uint32_t
r
,
r_offset
=
0
,
Kr
,
Kr_bytes
,
err_flag
=
0
,
Kr_int
,
kb
,
kc
;
uint8_t
crc_type
;
//UE_rxtx_proc_t *proc = &phy_vars_ue->proc;
int32_t
no_iteration_ldpc
;
...
...
@@ -1116,12 +1115,21 @@ uint32_t dlsch_decoding_mthread(PHY_VARS_UE *phy_vars_ue,
}
// p_decParams->Z = 128;
p_decParams
->
BG
=
1
;
p_decParams
->
R
=
89
;
p_decParams
->
numMaxIter
=
5
;
Kr
=
p_decParams
->
Z
*
22
;
p_decParams
->
outMode
=
0
;
kb
=
harq_process
->
Kplus
/
harq_process
->
Z
;
if
(
kb
==
22
){
p_decParams
->
BG
=
1
;
p_decParams
->
R
=
13
;
kc
=
68
;
}
else
{
p_decParams
->
BG
=
2
;
p_decParams
->
R
=
13
;
kc
=
52
;
}
p_decParams
->
numMaxIter
=
10
;
Kr
=
p_decParams
->
Z
*
kb
;
p_decParams
->
outMode
=
0
;
/*
else {
...
...
@@ -1301,6 +1309,12 @@ if (harq_process->C>1) { // wakeup worker if more than 1 segment
Kr_bytes
=
Kr
>>
3
;
//workaround for nr ldpc using lte interleaving
if
(
dlsch
->
harq_processes
[
harq_pid
]
->
C
>=
2
)
Kr_int
=
G
/
(
3
*
dlsch
->
harq_processes
[
harq_pid
]
->
C
);
else
Kr_int
=
Kr
;
if
(
Kr_bytes
<=
64
)
iind
=
(
Kr_bytes
-
5
);
else
if
(
Kr_bytes
<=
128
)
...
...
@@ -1310,8 +1324,8 @@ if (harq_process->C>1) { // wakeup worker if more than 1 segment
else
if
(
Kr_bytes
<=
768
)
iind
=
123
+
((
Kr_bytes
-
256
)
>>
3
);
else
{
printf
(
"dlsch_decoding: Illegal codeword size %d!!!
\n
"
,
Kr_bytes
);
return
(
dlsch
->
max_turbo_iterations
);
//
printf("dlsch_decoding: Illegal codeword size %d!!!\n",Kr_bytes);
//
return(dlsch->max_turbo_iterations);
}
#ifdef DEBUG_DLSCH_DECODING
...
...
@@ -1322,7 +1336,7 @@ if (harq_process->C>1) { // wakeup worker if more than 1 segment
start_meas
(
dlsch_rate_unmatching_stats
);
#endif
memset
(
&
dummy_w
[
r
][
0
],
0
,
3
*
(
8448
+
64
)
*
sizeof
(
short
));
harq_process
->
RTC
[
r
]
=
generate_dummy_w
(
4
+
(
Kr_bytes
*
8
)
,
harq_process
->
RTC
[
r
]
=
generate_dummy_w
(
Kr_int
,
(
uint8_t
*
)
&
dummy_w
[
r
][
0
],
(
r
==
0
)
?
harq_process
->
F
:
0
);
...
...
@@ -1368,6 +1382,7 @@ if (harq_process->C>1) { // wakeup worker if more than 1 segment
#endif
}
r_offset
+=
E
;
//printf("main thread r_offset %d\n",r_offset);
/*
printf("Subblock deinterleaving, d %p w %p\n",
...
...
@@ -1482,7 +1497,7 @@ if (harq_process->C>1) { // wakeup worker if more than 1 segment
llrProcBuf
,
p_procTime
);
if
(
no_iteration_ldpc
>
2
)
if
(
no_iteration_ldpc
>
10
)
printf
(
"Error number of iteration LPDC %d
\n
"
,
no_iteration_ldpc
);
//else
//printf("OK number of iteration LPDC %d\n", no_iteration_ldpc);
...
...
@@ -1850,7 +1865,7 @@ uint32_t dlsch_decoding_2thread0(void *arg)
uint16_t
iind
;
// uint8_t dummy_channel_output[(3*8*block_length)+12];
short
dummy_w
[
MAX_NUM_DLSCH_SEGMENTS
][
3
*
(
8448
+
64
)];
uint32_t
r
,
r_offset
=
0
,
Kr
,
Kr_bytes
,
err_flag
=
0
;
uint32_t
r
,
r_offset
=
0
,
Kr
,
Kr_bytes
,
err_flag
=
0
,
Kr_int
;
uint8_t
crc_type
;
uint8_t
C
;
uint8_t
Qm
;
...
...
@@ -1986,8 +2001,8 @@ uint32_t dlsch_decoding_2thread0(void *arg)
// p_decParams->Z = 128;
p_decParams
->
BG
=
1
;
p_decParams
->
R
=
89
;
p_decParams
->
numMaxIter
=
5
;
p_decParams
->
R
=
13
;
p_decParams
->
numMaxIter
=
2
;
Kr
=
p_decParams
->
Z
*
22
;
p_decParams
->
outMode
=
0
;
...
...
@@ -2045,6 +2060,8 @@ uint32_t dlsch_decoding_2thread0(void *arg)
r_offset
=
Nl
*
Qm
*
(
Gp
/
C
);
else
r_offset
=
Nl
*
Qm
*
((
GpmodC
==
0
?
0
:
1
)
+
(
Gp
/
C
));
printf
(
"thread0 r_offset %d
\n
"
,
r_offset
);
//for (r=(harq_process->C/2); r<harq_process->C; r++) {
r
=
1
;
//(harq_process->C/2);
...
...
@@ -2061,6 +2078,12 @@ uint32_t dlsch_decoding_2thread0(void *arg)
Kr_bytes
=
Kr
>>
3
;
//workaround for nr ldpc using lte interleaving
if
(
dlsch
->
harq_processes
[
harq_pid
]
->
C
>=
2
)
Kr_int
=
G
/
(
3
*
dlsch
->
harq_processes
[
harq_pid
]
->
C
);
else
Kr_int
=
Kr
;
if
(
Kr_bytes
<=
64
)
iind
=
(
Kr_bytes
-
5
);
else
if
(
Kr_bytes
<=
128
)
...
...
@@ -2070,7 +2093,7 @@ uint32_t dlsch_decoding_2thread0(void *arg)
else
if
(
Kr_bytes
<=
768
)
iind
=
123
+
((
Kr_bytes
-
256
)
>>
3
);
else
{
printf
(
"dlsch_decoding: Illegal codeword size %d!!!
\n
"
,
Kr_bytes
);
//
printf("dlsch_decoding: Illegal codeword size %d!!!\n",Kr_bytes);
//return(dlsch->max_turbo_iterations);
}
...
...
@@ -2082,7 +2105,7 @@ uint32_t dlsch_decoding_2thread0(void *arg)
start_meas
(
dlsch_rate_unmatching_stats
);
#endif
memset
(
&
dummy_w
[
r
][
0
],
0
,
3
*
(
8448
+
64
)
*
sizeof
(
short
));
harq_process
->
RTC
[
r
]
=
generate_dummy_w
(
4
+
(
Kr_bytes
*
8
)
,
harq_process
->
RTC
[
r
]
=
generate_dummy_w
(
Kr_int
,
(
uint8_t
*
)
&
dummy_w
[
r
][
0
],
(
r
==
0
)
?
harq_process
->
F
:
0
);
...
...
@@ -2603,8 +2626,8 @@ uint32_t dlsch_decoding_2thread1(void *arg)
uint32_t
ret
,
offset
;
uint16_t
iind
;
// uint8_t dummy_channel_output[(3*8*block_length)+12];
short
dummy_w
[
MAX_NUM_DLSCH_SEGMENTS
][
3
*
(
6144
+
64
)];
uint32_t
r
,
r_offset
=
0
,
Kr
,
Kr_bytes
,
err_flag
=
0
;
short
dummy_w
[
MAX_NUM_DLSCH_SEGMENTS
][
3
*
(
8448
+
64
)];
uint32_t
r
,
r_offset
=
0
,
Kr
,
Kr_bytes
,
err_flag
=
0
,
Kr_int
;
uint8_t
crc_type
;
uint8_t
C
;
uint8_t
Qm
;
...
...
@@ -2746,7 +2769,7 @@ uint32_t dlsch_decoding_2thread1(void *arg)
// p_decParams->Z = 128;
p_decParams
->
BG
=
1
;
p_decParams
->
R
=
89
;
p_decParams
->
numMaxIter
=
5
;
p_decParams
->
numMaxIter
=
2
;
Kr
=
p_decParams
->
Z
*
22
;
p_decParams
->
outMode
=
0
;
/*
...
...
@@ -2824,6 +2847,12 @@ uint32_t dlsch_decoding_2thread1(void *arg)
Kr_bytes
=
Kr
>>
3
;
//workaround for nr ldpc using lte interleaving
if
(
dlsch
->
harq_processes
[
harq_pid
]
->
C
>=
2
)
Kr_int
=
G
/
(
3
*
dlsch
->
harq_processes
[
harq_pid
]
->
C
);
else
Kr_int
=
Kr
;
if
(
Kr_bytes
<=
64
)
iind
=
(
Kr_bytes
-
5
);
else
if
(
Kr_bytes
<=
128
)
...
...
@@ -2833,7 +2862,7 @@ uint32_t dlsch_decoding_2thread1(void *arg)
else
if
(
Kr_bytes
<=
768
)
iind
=
123
+
((
Kr_bytes
-
256
)
>>
3
);
else
{
printf
(
"dlsch_decoding: Illegal codeword size %d!!!
\n
"
,
Kr_bytes
);
//
printf("dlsch_decoding: Illegal codeword size %d!!!\n",Kr_bytes);
//return(dlsch->max_turbo_iterations);
}
...
...
@@ -2844,8 +2873,8 @@ uint32_t dlsch_decoding_2thread1(void *arg)
#if UE_TIMING_TRACE
start_meas
(
dlsch_rate_unmatching_stats
);
#endif
memset
(
&
dummy_w
[
r
][
0
],
0
,
3
*
(
6144
+
64
)
*
sizeof
(
short
));
harq_process
->
RTC
[
r
]
=
generate_dummy_w
(
4
+
(
Kr_bytes
*
8
)
,
memset
(
&
dummy_w
[
r
][
0
],
0
,
3
*
(
8448
+
64
)
*
sizeof
(
short
));
harq_process
->
RTC
[
r
]
=
generate_dummy_w
(
Kr_int
,
(
uint8_t
*
)
&
dummy_w
[
r
][
0
],
(
r
==
0
)
?
harq_process
->
F
:
0
);
...
...
openair1/PHY/LTE_TRANSPORT/dlsch_tbs_full.h
View file @
f9a81c17
This diff is collapsed.
Click to expand it.
openair1/PHY/defs.h
View file @
f9a81c17
...
...
@@ -73,8 +73,8 @@
#define openair_free(y,x) free((y))
#define PAGE_SIZE 4096
#define RX_NB_TH_MAX
2
#define RX_NB_TH
2
#define RX_NB_TH_MAX
3
#define RX_NB_TH
3
//#ifdef SHRLIBDEV
...
...
openair1/PHY/impl_defs_lte.h
View file @
f9a81c17
...
...
@@ -37,8 +37,8 @@
#include "types.h"
//#include "defs.h"
#define RX_NB_TH_MAX
2
#define RX_NB_TH
2
#define RX_NB_TH_MAX
3
#define RX_NB_TH
3
#define LTE_SLOTS_PER_SUBFRAME 2
...
...
openair1/SCHED/phy_procedures_lte_ue.c
View file @
f9a81c17
...
...
@@ -3044,7 +3044,7 @@ void ue_pbch_procedures(uint8_t eNB_id,PHY_VARS_UE *ue,UE_rxtx_proc_t *proc, uin
else
{
if
(
ue
->
pbch_vars
[
eNB_id
]
->
pdu_errors_conseq
>=
100
)
{
LOG_E
(
PHY
,
"More that 100 consecutive PBCH errors! Exiting!
\n
"
);
mac_xface
->
macphy_exit
(
"More that 100 consecutive PBCH errors!"
);
//
mac_xface->macphy_exit("More that 100 consecutive PBCH errors!");
}
}
}
...
...
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