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
wangwenhui
OpenXG-RAN
Commits
6dd87747
Commit
6dd87747
authored
9 years ago
by
Raymond Knopp
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fixes TM2 UE performance. Issues were related to improper RE extraction for 5 MHz channels.
parent
29000fee
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
12 additions
and
10 deletions
+12
-10
openair1/PHY/LTE_TRANSPORT/dlsch_demodulation.c
openair1/PHY/LTE_TRANSPORT/dlsch_demodulation.c
+12
-10
No files found.
openair1/PHY/LTE_TRANSPORT/dlsch_demodulation.c
View file @
6dd87747
...
@@ -53,7 +53,7 @@
...
@@ -53,7 +53,7 @@
#endif
#endif
//#define DEBUG_PHY 1
//#define DEBUG_PHY 1
//
#define DEBUG_DLSCH_DEMOD 1
#define DEBUG_DLSCH_DEMOD 1
int
avg
[
4
];
int
avg
[
4
];
...
@@ -3091,19 +3091,21 @@ void dlsch_alamouti(LTE_DL_FRAME_PARMS *frame_parms,
...
@@ -3091,19 +3091,21 @@ void dlsch_alamouti(LTE_DL_FRAME_PARMS *frame_parms,
ch_mag1
=
(
__m128i
*
)
&
dl_ch_mag
[
2
][
jj
];
ch_mag1
=
(
__m128i
*
)
&
dl_ch_mag
[
2
][
jj
];
ch_mag0b
=
(
__m128i
*
)
&
dl_ch_magb
[
0
][
jj
];
ch_mag0b
=
(
__m128i
*
)
&
dl_ch_magb
[
0
][
jj
];
ch_mag1b
=
(
__m128i
*
)
&
dl_ch_magb
[
2
][
jj
];
ch_mag1b
=
(
__m128i
*
)
&
dl_ch_magb
[
2
][
jj
];
for
(
rb
=
0
;
rb
<
nb_rb
;
rb
++
)
{
for
(
rb
=
0
;
rb
<
nb_rb
;
rb
++
)
{
for
(
re
=
0
;
re
<
((
pilots
==
0
)
?
12
:
8
);
re
+=
2
)
{
for
(
re
=
0
;
re
<
((
pilots
==
0
)
?
12
:
8
);
re
+=
2
)
{
// Alamouti RX combining
// Alamouti RX combining
// printf("Alamouti: symbol %d, rb %d, re %d: rxF0 (%d,%d,%d,%d), rxF1 (%d,%d,%d,%d)\n",symbol,rb,re,rxF0[0],rxF0[1],rxF0[2],rxF0[3],rxF1[0],rxF1[1],rxF1[2],rxF1[3]);
rxF0
[
0
]
=
rxF0
[
0
]
+
rxF1
[
2
];
rxF0
[
0
]
=
rxF0
[
0
]
+
rxF1
[
2
];
rxF0
[
1
]
=
rxF0
[
1
]
-
rxF1
[
3
];
rxF0
[
1
]
=
rxF0
[
1
]
-
rxF1
[
3
];
rxF0
[
2
]
=
rxF0
[
2
]
-
rxF1
[
0
];
rxF0
[
2
]
=
rxF0
[
2
]
-
rxF1
[
0
];
rxF0
[
3
]
=
rxF0
[
3
]
+
rxF1
[
1
];
rxF0
[
3
]
=
rxF0
[
3
]
+
rxF1
[
1
];
// printf("Alamouti: rxF0 after (%d,%d,%d,%d)\n",rxF0[0],rxF0[1],rxF0[2],rxF0[3]);
rxF0
+=
4
;
rxF0
+=
4
;
rxF1
+=
4
;
rxF1
+=
4
;
...
@@ -3817,6 +3819,9 @@ unsigned short dlsch_extract_rbs_dual(int **rxdataF,
...
@@ -3817,6 +3819,9 @@ unsigned short dlsch_extract_rbs_dual(int **rxdataF,
rb_alloc_ind
=
(
rb_alloc
[
3
]
>>
(
prb
-
96
))
&
1
;
rb_alloc_ind
=
(
rb_alloc
[
3
]
>>
(
prb
-
96
))
&
1
;
else
else
rb_alloc_ind
=
0
;
rb_alloc_ind
=
0
;
if
(
rb_alloc_ind
==
1
)
nb_rb
++
;
// PBCH
// PBCH
if
((
subframe
==
0
)
&&
if
((
subframe
==
0
)
&&
...
@@ -3907,7 +3912,6 @@ unsigned short dlsch_extract_rbs_dual(int **rxdataF,
...
@@ -3907,7 +3912,6 @@ unsigned short dlsch_extract_rbs_dual(int **rxdataF,
rxF_ext
+=
8
;
rxF_ext
+=
8
;
}
// pilots==1
}
// pilots==1
nb_rb
++
;
}
else
{
// Odd number of RBs
}
else
{
// Odd number of RBs
...
@@ -3997,7 +4001,7 @@ unsigned short dlsch_extract_rbs_dual(int **rxdataF,
...
@@ -3997,7 +4001,7 @@ unsigned short dlsch_extract_rbs_dual(int **rxdataF,
memcpy
(
dl_ch0_ext
,
dl_ch0p
,
12
*
sizeof
(
int32_t
));
memcpy
(
dl_ch0_ext
,
dl_ch0p
,
12
*
sizeof
(
int32_t
));
memcpy
(
dl_ch1_ext
,
dl_ch1p
,
12
*
sizeof
(
int32_t
));
memcpy
(
dl_ch1_ext
,
dl_ch1p
,
12
*
sizeof
(
int32_t
));
memcpy
(
rxF_ext
,
rxF
,
12
*
sizeof
(
int32_t
));
memcpy
(
rxF_ext
,
rxF
,
12
*
sizeof
(
int32_t
));
for
(
i
=
0
;
i
<
12
;
i
++
)
//
for (i=0;i<12;i++)
// printf("extract rb %d, re %d => (%d,%d)\n",prb,i,*(short *)&rxF_ext[i],*(1+(short*)&rxF_ext[i]));
// printf("extract rb %d, re %d => (%d,%d)\n",prb,i,*(short *)&rxF_ext[i],*(1+(short*)&rxF_ext[i]));
dl_ch0_ext
+=
12
;
dl_ch0_ext
+=
12
;
dl_ch1_ext
+=
12
;
dl_ch1_ext
+=
12
;
...
@@ -4050,7 +4054,6 @@ unsigned short dlsch_extract_rbs_dual(int **rxdataF,
...
@@ -4050,7 +4054,6 @@ unsigned short dlsch_extract_rbs_dual(int **rxdataF,
rxF_ext
+=
8
;
rxF_ext
+=
8
;
}
//skip_half==0
}
//skip_half==0
}
//pilots==1
}
//pilots==1
nb_rb
++
;
}
else
{
// Do middle RB (around DC)
}
else
{
// Do middle RB (around DC)
if
(
pilots
==
0
)
{
if
(
pilots
==
0
)
{
...
@@ -4067,7 +4070,7 @@ unsigned short dlsch_extract_rbs_dual(int **rxdataF,
...
@@ -4067,7 +4070,7 @@ unsigned short dlsch_extract_rbs_dual(int **rxdataF,
dl_ch0p
+=
6
;
dl_ch0p
+=
6
;
dl_ch1p
+=
6
;
dl_ch1p
+=
6
;
rxF
=
&
rxdataF
[
aarx
][((
symbol
*
(
frame_parms
->
ofdm_symbol_size
)))];
rxF
=
&
rxdataF
[
aarx
][
1
+
((
symbol
*
(
frame_parms
->
ofdm_symbol_size
)))];
memcpy
(
dl_ch0_ext
,
dl_ch0p
,
6
*
sizeof
(
int32_t
));
memcpy
(
dl_ch0_ext
,
dl_ch0p
,
6
*
sizeof
(
int32_t
));
memcpy
(
dl_ch1_ext
,
dl_ch1p
,
6
*
sizeof
(
int32_t
));
memcpy
(
dl_ch1_ext
,
dl_ch1p
,
6
*
sizeof
(
int32_t
));
...
@@ -4090,14 +4093,14 @@ unsigned short dlsch_extract_rbs_dual(int **rxdataF,
...
@@ -4090,14 +4093,14 @@ unsigned short dlsch_extract_rbs_dual(int **rxdataF,
//printf("(pilots)extract rb %d, re %d => (%d,%d)\n",prb,i,*(short *)&rxF[i],*(1+(short*)&rxF[i]));
//printf("(pilots)extract rb %d, re %d => (%d,%d)\n",prb,i,*(short *)&rxF[i],*(1+(short*)&rxF[i]));
}
}
}
}
rxF
=
&
rxdataF
[
aarx
][
symbol
*
(
frame_parms
->
ofdm_symbol_size
)];
rxF
=
&
rxdataF
[
aarx
][
1
+
symbol
*
(
frame_parms
->
ofdm_symbol_size
)];
for
(;
i
<
12
;
i
++
)
{
for
(;
i
<
12
;
i
++
)
{
if
((
i
!=
((
frame_parms
->
nushift
+
6
)
%
12
))
&&
if
((
i
!=
((
frame_parms
->
nushift
+
6
)
%
12
))
&&
(
i
!=
((
frame_parms
->
nushift
+
9
)
%
12
)))
{
(
i
!=
((
frame_parms
->
nushift
+
9
)
%
12
)))
{
dl_ch0_ext
[
j
]
=
dl_ch0p
[
i
];
dl_ch0_ext
[
j
]
=
dl_ch0p
[
i
];
dl_ch1_ext
[
j
]
=
dl_ch1p
[
i
];
dl_ch1_ext
[
j
]
=
dl_ch1p
[
i
];
rxF_ext
[
j
++
]
=
rxF
[(
1
+
i
-
6
)];
rxF_ext
[
j
++
]
=
rxF
[(
i
-
6
)];
//printf("(pilots)extract rb %d, re %d => (%d,%d)\n",prb,i,*(short *)&rxF[1+i-6],*(1+(short*)&rxF[1+i-6]));
//printf("(pilots)extract rb %d, re %d => (%d,%d)\n",prb,i,*(short *)&rxF[1+i-6],*(1+(short*)&rxF[1+i-6]));
}
}
}
}
...
@@ -4106,7 +4109,6 @@ unsigned short dlsch_extract_rbs_dual(int **rxdataF,
...
@@ -4106,7 +4109,6 @@ unsigned short dlsch_extract_rbs_dual(int **rxdataF,
dl_ch1_ext
+=
8
;
dl_ch1_ext
+=
8
;
rxF_ext
+=
8
;
rxF_ext
+=
8
;
}
//pilots==1
}
//pilots==1
nb_rb
++
;
}
// if Middle PRB
}
// if Middle PRB
}
// if odd PRB
}
// if odd PRB
}
// if rballoc==1
}
// if rballoc==1
...
...
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