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
1b1270e8
Commit
1b1270e8
authored
Mar 03, 2017
by
Cedric Roux
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/feature-59-tm4' into develop_integration_w09
parents
5c0f42a2
b2c57f42
Changes
8
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
243 additions
and
218 deletions
+243
-218
openair1/PHY/LTE_TRANSPORT/dci_tools.c
openair1/PHY/LTE_TRANSPORT/dci_tools.c
+13
-9
openair1/PHY/LTE_TRANSPORT/dlsch_demodulation.c
openair1/PHY/LTE_TRANSPORT/dlsch_demodulation.c
+31
-19
openair1/PHY/LTE_TRANSPORT/dlsch_llr_computation.c
openair1/PHY/LTE_TRANSPORT/dlsch_llr_computation.c
+97
-115
openair1/PHY/LTE_TRANSPORT/dlsch_modulation.c
openair1/PHY/LTE_TRANSPORT/dlsch_modulation.c
+55
-46
openair1/PHY/LTE_TRANSPORT/proto.h
openair1/PHY/LTE_TRANSPORT/proto.h
+0
-1
openair1/SCHED/defs.h
openair1/SCHED/defs.h
+1
-1
openair1/SIMULATION/LTE_PHY/dlsim.c
openair1/SIMULATION/LTE_PHY/dlsim.c
+2
-2
openair1/SIMULATION/LTE_PHY/dlsim_tm4.c
openair1/SIMULATION/LTE_PHY/dlsim_tm4.c
+44
-25
No files found.
openair1/PHY/LTE_TRANSPORT/dci_tools.c
View file @
1b1270e8
...
...
@@ -4478,7 +4478,7 @@ void extract_dci2_info(uint8_t N_RB_DL, lte_frame_type_t frame_type, uint8_t nb_
pdci_info_extarcted
->
rah
=
rah
;
pdci_info_extarcted
->
mcs1
=
mcs1
;
pdci_info_extarcted
->
mcs
1
=
mcs2
;
pdci_info_extarcted
->
mcs
2
=
mcs2
;
pdci_info_extarcted
->
rv1
=
rv1
;
pdci_info_extarcted
->
rv2
=
rv2
;
pdci_info_extarcted
->
harq_pid
=
harq_pid
;
...
...
@@ -4978,7 +4978,7 @@ int check_dci_format2_2a_coherency(DCI_format_t dci_format,
{
uint8_t
rah
=
pdci_info_extarcted
->
rah
;
uint8_t
mcs1
=
pdci_info_extarcted
->
mcs1
;
uint8_t
mcs2
=
pdci_info_extarcted
->
mcs
1
;
uint8_t
mcs2
=
pdci_info_extarcted
->
mcs
2
;
uint8_t
rv1
=
pdci_info_extarcted
->
rv1
;
uint8_t
rv2
=
pdci_info_extarcted
->
rv2
;
uint8_t
harq_pid
=
pdci_info_extarcted
->
harq_pid
;
...
...
@@ -5615,7 +5615,7 @@ void prepare_dl_decoding_format2_2A(DCI_format_t dci_format,
uint8_t
rah
=
pdci_info_extarcted
->
rah
;
uint8_t
mcs1
=
pdci_info_extarcted
->
mcs1
;
uint8_t
mcs2
=
pdci_info_extarcted
->
mcs
1
;
uint8_t
mcs2
=
pdci_info_extarcted
->
mcs
2
;
uint8_t
rv1
=
pdci_info_extarcted
->
rv1
;
uint8_t
rv2
=
pdci_info_extarcted
->
rv2
;
uint8_t
harq_pid
=
pdci_info_extarcted
->
harq_pid
;
...
...
@@ -5642,9 +5642,9 @@ void prepare_dl_decoding_format2_2A(DCI_format_t dci_format,
TB1_active
=
0
;
}
//
#ifdef DEBUG_HARQ
#ifdef DEBUG_HARQ
printf
(
"[DCI UE]: TB0 status %d , TB1 status %d
\n
"
,
TB0_active
,
TB1_active
);
//
#endif
#endif
dlsch0_harq
->
mcs
=
mcs1
;
dlsch1_harq
->
mcs
=
mcs2
;
...
...
@@ -5682,21 +5682,23 @@ void prepare_dl_decoding_format2_2A(DCI_format_t dci_format,
if
(
TB0_active
==
0
)
{
dlsch0_harq
->
status
=
SCH_IDLE
;
pdlsch0
->
active
=
0
;
//
#ifdef DEBUG_HARQ
#ifdef DEBUG_HARQ
printf
(
"[DCI UE]: TB0 is deactivated, retransmit TB1 transmit in TM6
\n
"
);
//
#endif
#endif
}
if
(
TB1_active
==
0
)
{
dlsch1_harq
->
status
=
SCH_IDLE
;
pdlsch1
->
active
=
0
;
//
#ifdef DEBUG_HARQ
#ifdef DEBUG_HARQ
printf
(
"[DCI UE]: TB1 is deactivated, retransmit TB0 transmit in TM6
\n
"
);
//
#endif
#endif
}
#ifdef DEBUG_HARQ
printf
(
"[DCI UE]: dlsch0_harq status %d , dlsch1_harq status %d
\n
"
,
dlsch0_harq
->
status
,
dlsch1_harq
->
status
);
#endif
// compute resource allocation
if
(
TB0_active
==
1
){
...
...
@@ -5824,7 +5826,9 @@ void prepare_dl_decoding_format2_2A(DCI_format_t dci_format,
dlsch1_harq
->
Qm
=
(
mcs2
-
28
)
<<
1
;
}
#ifdef DEBUG_HARQ
printf
(
"[DCI UE]: dlsch0_harq status %d , dlsch1_harq status %d
\n
"
,
dlsch0_harq
->
status
,
dlsch1_harq
->
status
);
#endif
#ifdef DEBUG_HARQ
if
(
dlsch0
!=
NULL
&&
dlsch1
!=
NULL
)
...
...
openair1/PHY/LTE_TRANSPORT/dlsch_demodulation.c
View file @
1b1270e8
...
...
@@ -1556,8 +1556,11 @@ void prec2A_TM56_128(unsigned char pmi,__m128i *ch0,__m128i *ch1)
#elif defined(__arm__)
void
prec2A_TM56_128
(
unsigned
char
pmi
,
__m128i
*
ch0
,
__m128i
*
ch1
)
{
__m128i
amp
;
amp
=
_mm_set1_epi16
(
ONE_OVER_SQRT2_Q15
);
// sqrt(2) is already taken into account in computation sqrt_rho_a, sqrt_rho_b,
//so removed it
//__m128i amp;
//amp = _mm_set1_epi16(ONE_OVER_SQRT2_Q15);
switch
(
pmi
)
{
...
...
@@ -1587,8 +1590,8 @@ void prec2A_TM56_128(unsigned char pmi,__m128i *ch0,__m128i *ch1) {
break
;
}
ch0
[
0
]
=
_mm_mulhi_epi16
(
ch0
[
0
],
amp
);
ch0
[
0
]
=
_mm_slli_epi16
(
ch0
[
0
],
1
);
//
ch0[0] = _mm_mulhi_epi16(ch0[0],amp);
//
ch0[0] = _mm_slli_epi16(ch0[0],1);
_mm_empty
();
_m_empty
();
...
...
@@ -1602,10 +1605,12 @@ short TM3_prec[8]__attribute__((aligned(16))) = {1,1,-1,-1,1,1,-1,-1} ;
void
prec2A_TM3_128
(
__m128i
*
ch0
,
__m128i
*
ch1
)
{
//
__m128i amp = _mm_set1_epi16(ONE_OVER_SQRT2_Q15);
__m128i
amp
=
_mm_set1_epi16
(
ONE_OVER_SQRT2_Q15
);
__m128i
tmp0
,
tmp1
;
// sqrt(2) is already taken into account in computation sqrt_rho_a, sqrt_rho_b,
//so divide by 2 is replaced by divide by sqrt(2).
// print_shorts("prec2A_TM3 ch0 (before):",ch0);
// print_shorts("prec2A_TM3 ch1 (before):",ch1);
...
...
@@ -1621,9 +1626,13 @@ void prec2A_TM3_128(__m128i *ch0,__m128i *ch1) {
// print_shorts("prec2A_TM3 ch0 (mid):",&tmp0);
// print_shorts("prec2A_TM3 ch1 (mid):",ch1);
ch0
[
0
]
=
_mm_mulhi_epi16
(
ch0
[
0
],
amp
);
ch0
[
0
]
=
_mm_slli_epi16
(
ch0
[
0
],
1
);
ch1
[
0
]
=
_mm_mulhi_epi16
(
ch1
[
0
],
amp
);
ch1
[
0
]
=
_mm_slli_epi16
(
ch1
[
0
],
1
);
ch0
[
0
]
=
_mm_srai_epi16
(
ch0
[
0
],
1
);
ch1
[
0
]
=
_mm_srai_epi16
(
ch1
[
0
],
1
);
//
ch0[0] = _mm_srai_epi16(ch0[0],1);
//
ch1[0] = _mm_srai_epi16(ch1[0],1);
// print_shorts("prec2A_TM3 ch0 (after):",ch0);
// print_shorts("prec2A_TM3 ch1 (after):",ch1);
...
...
@@ -1637,9 +1646,12 @@ void prec2A_TM3_128(__m128i *ch0,__m128i *ch1) {
void
prec2A_TM4_128
(
int
pmi
,
__m128i
*
ch0
,
__m128i
*
ch1
)
{
// sqrt(2) is already taken into account in computation sqrt_rho_a, sqrt_rho_b,
//so divide by 2 is replaced by divide by sqrt(2).
// printf ("demod pmi=%d\n", pmi);
//
__m128i amp;
//
amp = _mm_set1_epi16(ONE_OVER_SQRT2_Q15);
__m128i
amp
;
amp
=
_mm_set1_epi16
(
ONE_OVER_SQRT2_Q15
);
__m128i
tmp0
,
tmp1
;
// print_shorts("prec2A_TM4 ch0 (before):",ch0);
...
...
@@ -1663,14 +1675,14 @@ void prec2A_TM4_128(int pmi,__m128i *ch0,__m128i *ch1) {
//print_shorts("prec2A_TM4 ch0 (middle):",ch0);
//print_shorts("prec2A_TM4 ch1 (middle):",ch1);
//
ch0[0] = _mm_mulhi_epi16(ch0[0],amp);
//
ch0[0] = _mm_slli_epi16(ch0[0],1);
//
ch1[0] = _mm_mulhi_epi16(ch1[0],amp);
//
ch1[0] = _mm_slli_epi16(ch1[0],1);
ch0
[
0
]
=
_mm_mulhi_epi16
(
ch0
[
0
],
amp
);
ch0
[
0
]
=
_mm_slli_epi16
(
ch0
[
0
],
1
);
ch1
[
0
]
=
_mm_mulhi_epi16
(
ch1
[
0
],
amp
);
ch1
[
0
]
=
_mm_slli_epi16
(
ch1
[
0
],
1
);
ch0
[
0
]
=
_mm_srai_epi16
(
ch0
[
0
],
1
);
//divide by 2
ch1
[
0
]
=
_mm_srai_epi16
(
ch1
[
0
],
1
);
//divide by 2
//
ch0[0] = _mm_srai_epi16(ch0[0],1); //divide by 2
//
ch1[0] = _mm_srai_epi16(ch1[0],1); //divide by 2
//print_shorts("prec2A_TM4 ch0 (end):",ch0);
//print_shorts("prec2A_TM4 ch1 (end):",ch1);
_mm_empty
();
...
...
@@ -5801,7 +5813,7 @@ unsigned short dlsch_extract_rbs_TM7(int **rxdataF,
#ifdef USER_MODE
void
dump_dlsch2
(
PHY_VARS_UE
*
ue
,
uint8_t
eNB_id
,
uint8_t
subframe
,
uint16_t
coded_bits_per_codeword
,
int
round
)
void
dump_dlsch2
(
PHY_VARS_UE
*
ue
,
uint8_t
eNB_id
,
uint8_t
subframe
,
uint16_t
coded_bits_per_codeword
,
int
round
,
unsigned
char
harq_pid
)
{
unsigned
int
nsymb
=
(
ue
->
frame_parms
.
Ncp
==
0
)
?
14
:
12
;
char
fname
[
32
],
vname
[
32
];
...
...
@@ -5862,12 +5874,12 @@ void dump_dlsch2(PHY_VARS_UE *ue,uint8_t eNB_id,uint8_t subframe,uint16_t coded_
sprintf
(
fname
,
"dlsch%d_r%d_rho.m"
,
eNB_id
,
round
);
sprintf
(
vname
,
"dl_rho_r%d_%d"
,
eNB_id
,
round
);
write_output
(
fname
,
vname
,
ue
->
pdsch_vars
[
subframe
&
0x1
][
eNB_id
]
->
dl_ch_rho_ext
[
round
][
0
],
12
*
N_RB_DL
*
nsymb
,
1
,
1
);
write_output
(
fname
,
vname
,
ue
->
pdsch_vars
[
subframe
&
0x1
][
eNB_id
]
->
dl_ch_rho_ext
[
harq_pid
][
round
][
0
],
12
*
N_RB_DL
*
nsymb
,
1
,
1
);
sprintf
(
fname
,
"dlsch%d_r%d_rho2.m"
,
eNB_id
,
round
);
sprintf
(
vname
,
"dl_rho2_r%d_%d"
,
eNB_id
,
round
);
write_output
(
fname
,
vname
,
ue
->
pdsch_vars
[
subframe
&
0x1
][
eNB_id
]
->
dl_ch_rho_ext
[
0
],
12
*
N_RB_DL
*
nsymb
,
1
,
1
);
write_output
(
fname
,
vname
,
ue
->
pdsch_vars
[
subframe
&
0x1
][
eNB_id
]
->
dl_ch_rho
2
_ext
[
0
],
12
*
N_RB_DL
*
nsymb
,
1
,
1
);
sprintf
(
fname
,
"dlsch%d_rxF_r%d_comp0.m"
,
eNB_id
,
round
);
sprintf
(
vname
,
"dl%d_rxF_r%d_comp0"
,
eNB_id
,
round
);
...
...
@@ -5875,7 +5887,7 @@ void dump_dlsch2(PHY_VARS_UE *ue,uint8_t eNB_id,uint8_t subframe,uint16_t coded_
if
(
ue
->
frame_parms
.
nb_antenna_ports_eNB
==
2
)
{
sprintf
(
fname
,
"dlsch%d_rxF_r%d_comp1.m"
,
eNB_id
,
round
);
sprintf
(
vname
,
"dl%d_rxF_r%d_comp1"
,
eNB_id
,
round
);
write_output
(
fname
,
vname
,
ue
->
pdsch_vars
[
subframe
&
0x1
][
eNB_id
]
->
rxdataF_comp1
[
0
][
round
],
12
*
N_RB_DL
*
nsymb
,
1
,
1
);
write_output
(
fname
,
vname
,
ue
->
pdsch_vars
[
subframe
&
0x1
][
eNB_id
]
->
rxdataF_comp1
[
harq_pid
][
round
][
0
],
12
*
N_RB_DL
*
nsymb
,
1
,
1
);
}
sprintf
(
fname
,
"dlsch%d_rxF_r%d_llr.m"
,
eNB_id
,
round
);
...
...
openair1/PHY/LTE_TRANSPORT/dlsch_llr_computation.c
View file @
1b1270e8
This diff is collapsed.
Click to expand it.
openair1/PHY/LTE_TRANSPORT/dlsch_modulation.c
View file @
1b1270e8
This diff is collapsed.
Click to expand it.
openair1/PHY/LTE_TRANSPORT/proto.h
View file @
1b1270e8
...
...
@@ -299,7 +299,6 @@ int32_t dlsch_modulation_SIC(int32_t **sic_buffer,
LTE_DL_FRAME_PARMS
*
frame_parms
,
uint8_t
num_pdcch_symbols
,
LTE_eNB_DLSCH_t
*
dlsch0
,
LTE_eNB_DLSCH_t
*
dlsch1
,
int
G
);
/*
\brief This function is the top-level routine for generation of the sub-frame signal (frequency-domain) for MCH.
...
...
openair1/SCHED/defs.h
View file @
1b1270e8
...
...
@@ -511,7 +511,7 @@ void dump_dlsch(PHY_VARS_UE *phy_vars_ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,uin
void
dump_dlsch_SI
(
PHY_VARS_UE
*
phy_vars_ue
,
UE_rxtx_proc_t
*
proc
,
uint8_t
eNB_id
,
uint8_t
subframe
);
void
dump_dlsch_ra
(
PHY_VARS_UE
*
phy_vars_ue
,
UE_rxtx_proc_t
*
proc
,
uint8_t
eNB_id
,
uint8_t
subframe
);
void
dump_dlsch2
(
PHY_VARS_UE
*
phy_vars_ue
,
uint8_t
eNB_id
,
uint8_t
subframe
,
uint16_t
coded_bits_per_codeword
,
int
round
);
void
dump_dlsch2
(
PHY_VARS_UE
*
phy_vars_ue
,
uint8_t
eNB_id
,
uint8_t
subframe
,
uint16_t
coded_bits_per_codeword
,
int
round
,
unsigned
char
harq_pid
);
/*@}*/
...
...
openair1/SIMULATION/LTE_PHY/dlsim.c
View file @
1b1270e8
...
...
@@ -2543,7 +2543,7 @@ int main(int argc, char **argv)
//pdsch_vars
dump_dlsch2
(
UE
,
eNB_id
,
subframe
,
coded_bits_per_codeword
,
round
);
dump_dlsch2
(
UE
,
eNB_id
,
subframe
,
coded_bits_per_codeword
,
round
,
UE
->
dlsch
[
0
][
0
]
->
current_harq_pid
);
write_output
(
"dlsch_e.m"
,
"e"
,
eNB
->
dlsch
[
0
][
0
]
->
harq_processes
[
0
]
->
e
,
coded_bits_per_codeword
,
1
,
4
);
...
...
@@ -2644,7 +2644,7 @@ int main(int argc, char **argv)
}
//pdsch_vars
dump_dlsch2
(
UE
,
eNB_id
,
subframe
,
coded_bits_per_codeword
,
roun
d
);
dump_dlsch2
(
UE
,
eNB_id
,
subframe
,
coded_bits_per_codeword
,
round
,
UE
->
dlsch
[
0
][
0
]
->
current_harq_pi
d
);
//write_output("dlsch_e.m","e",eNB->dlsch[0][0]->harq_processes[0]->e,coded_bits_per_codeword,1,4);
...
...
openair1/SIMULATION/LTE_PHY/dlsim_tm4.c
View file @
1b1270e8
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