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
promise
OpenXG-RAN
Commits
2167d2c0
Commit
2167d2c0
authored
7 years ago
by
Florian Kaltenberger
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
some bugfixes to the uespec pilot generation for TM8
parent
6ab9229b
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
42 additions
and
21 deletions
+42
-21
openair1/PHY/LTE_REFSIG/defs.h
openair1/PHY/LTE_REFSIG/defs.h
+2
-2
openair1/PHY/LTE_REFSIG/lte_gold.c
openair1/PHY/LTE_REFSIG/lte_gold.c
+4
-4
openair1/PHY/LTE_TRANSPORT/dci_tools.c
openair1/PHY/LTE_TRANSPORT/dci_tools.c
+14
-4
openair1/PHY/LTE_TRANSPORT/defs.h
openair1/PHY/LTE_TRANSPORT/defs.h
+2
-0
openair1/PHY/LTE_TRANSPORT/dlsch_modulation.c
openair1/PHY/LTE_TRANSPORT/dlsch_modulation.c
+14
-6
openair1/PHY/LTE_TRANSPORT/proto.h
openair1/PHY/LTE_TRANSPORT/proto.h
+2
-1
openair1/PHY/defs.h
openair1/PHY/defs.h
+4
-4
No files found.
openair1/PHY/LTE_REFSIG/defs.h
View file @
2167d2c0
...
...
@@ -45,10 +45,10 @@ unsigned int lte_gold_generic(unsigned int *x1, unsigned int *x2, unsigned char
void
lte_gold
(
LTE_DL_FRAME_PARMS
*
frame_parms
,
uint32_t
lte_gold_table
[
20
][
2
][
14
],
uint16_t
Nid_cell
);
/*! \brief This function generates the LTE Gold sequence for DL UE-specific pilots for antenna ports 7,...,14 (transmission modes 8/9) */
void
lte_gold_ue_spec
(
uint32_t
lte_gold_uespec_table
[
2
][
20
][
2
][
21
],
uint16_t
Nid_cell
,
uint16_t
*
n_idDMRS
);
void
lte_gold_ue_spec
(
uint32_t
lte_gold_uespec_table
[
2
][
20
][
2
][
100
],
uint16_t
Nid_cell
,
uint16_t
*
n_idDMRS
);
/*! \brief This function generates the LTE Gold sequence for DL UE-specific pilots for antenna port 5 (transmission mode 7) */
void
lte_gold_ue_spec_port5
(
uint32_t
lte_gold_uespec_port5_table
[
20
][
38
],
uint16_t
Nid_cell
,
uint16_t
n_rnti
);
void
lte_gold_ue_spec_port5
(
uint32_t
lte_gold_uespec_port5_table
[
20
][
75
],
uint16_t
Nid_cell
,
uint16_t
n_rnti
);
/*!\brief This function generates the LTE Gold sequence (36-211, Sec 7.2), specifically for DL UE-specific reference signals for antenna ports 7..14.
@param frame_parms LTE DL Frame parameters
...
...
This diff is collapsed.
Click to expand it.
openair1/PHY/LTE_REFSIG/lte_gold.c
View file @
2167d2c0
...
...
@@ -81,7 +81,7 @@ void lte_gold(LTE_DL_FRAME_PARMS *frame_parms,uint32_t lte_gold_table[20][2][14]
}
}
void
lte_gold_ue_spec
(
uint32_t
lte_gold_uespec_table
[
2
][
20
][
2
][
21
],
uint16_t
Nid_cell
,
uint16_t
*
n_idDMRS
)
void
lte_gold_ue_spec
(
uint32_t
lte_gold_uespec_table
[
2
][
20
][
2
][
100
],
uint16_t
Nid_cell
,
uint16_t
*
n_idDMRS
)
{
unsigned
char
ns
,
l
;
...
...
@@ -117,7 +117,7 @@ void lte_gold_ue_spec(uint32_t lte_gold_uespec_table[2][20][2][21],uint16_t Nid_
// printf("x1 : %x, x2 : %x\n",x1,x2);
}
for
(
n
=
0
;
n
<
1
4
;
n
++
)
{
for
(
n
=
0
;
n
<
1
00
;
n
++
)
{
x1
=
(
x1
>>
1
)
^
(
x1
>>
4
);
x1
=
x1
^
(
x1
<<
31
)
^
(
x1
<<
28
);
x2
=
(
x2
>>
1
)
^
(
x2
>>
2
)
^
(
x2
>>
3
)
^
(
x2
>>
4
);
...
...
@@ -131,7 +131,7 @@ void lte_gold_ue_spec(uint32_t lte_gold_uespec_table[2][20][2][21],uint16_t Nid_
}
}
void
lte_gold_ue_spec_port5
(
uint32_t
lte_gold_uespec_port5_table
[
20
][
38
],
uint16_t
Nid_cell
,
uint16_t
n_rnti
)
void
lte_gold_ue_spec_port5
(
uint32_t
lte_gold_uespec_port5_table
[
20
][
75
],
uint16_t
Nid_cell
,
uint16_t
n_rnti
)
{
unsigned
char
ns
;
...
...
@@ -157,7 +157,7 @@ void lte_gold_ue_spec_port5(uint32_t lte_gold_uespec_port5_table[20][38],uint16_
//printf("x1 : %x, x2 : %x\n",x1,x2);
}
for
(
n
=
0
;
n
<
38
;
n
++
)
{
for
(
n
=
0
;
n
<
75
;
n
++
)
{
x1
=
(
x1
>>
1
)
^
(
x1
>>
4
);
x1
=
x1
^
(
x1
<<
31
)
^
(
x1
<<
28
);
x2
=
(
x2
>>
1
)
^
(
x2
>>
2
)
^
(
x2
>>
3
)
^
(
x2
>>
4
);
...
...
This diff is collapsed.
Click to expand it.
openair1/PHY/LTE_TRANSPORT/dci_tools.c
View file @
2167d2c0
...
...
@@ -886,6 +886,7 @@ int generate_eNB_dlsch_params_from_dci(int frame,
uint8_t
TPC
=
0
;
uint8_t
TB0_active
=
0
,
TB1_active
=
0
;
uint8_t
ndi1
=
0
,
ndi2
=
0
;
uint8_t
nscid
;
LTE_DL_eNB_HARQ_t
*
dlsch0_harq
=
NULL
,
*
dlsch1_harq
=
NULL
;
// printf("Generate eNB DCI, format %d, rnti %x (pdu %p)\n",dci_format,rnti,dci_pdu);
...
...
@@ -2134,9 +2135,10 @@ int generate_eNB_dlsch_params_from_dci(int frame,
rballoc
=
((
DCI2B_1_5MHz_TDD_t
*
)
dci_pdu
)
->
rballoc
;
rv1
=
((
DCI2B_1_5MHz_TDD_t
*
)
dci_pdu
)
->
rv1
;
rv2
=
((
DCI2B_1_5MHz_TDD_t
*
)
dci_pdu
)
->
rv2
;
ndi1
=
((
DCI2B_1_5MHz_TDD_t
*
)
dci_pdu
)
->
ndi1
;
ndi2
=
((
DCI2B_1_5MHz_TDD_t
*
)
dci_pdu
)
->
ndi2
;
ndi1
=
((
DCI2B_1_5MHz_TDD_t
*
)
dci_pdu
)
->
ndi1
;
ndi2
=
((
DCI2B_1_5MHz_TDD_t
*
)
dci_pdu
)
->
ndi2
;
harq_pid
=
((
DCI2B_1_5MHz_TDD_t
*
)
dci_pdu
)
->
harq_pid
;
nscid
=
((
DCI2B_1_5MHz_TDD_t
*
)
dci_pdu
)
->
scrambling_id
;
}
else
{
mcs1
=
((
DCI2B_1_5MHz_FDD_t
*
)
dci_pdu
)
->
mcs1
;
mcs2
=
((
DCI2B_1_5MHz_FDD_t
*
)
dci_pdu
)
->
mcs2
;
...
...
@@ -2146,6 +2148,7 @@ int generate_eNB_dlsch_params_from_dci(int frame,
ndi1
=
((
DCI2B_1_5MHz_FDD_t
*
)
dci_pdu
)
->
ndi1
;
ndi2
=
((
DCI2B_1_5MHz_FDD_t
*
)
dci_pdu
)
->
ndi2
;
harq_pid
=
((
DCI2B_1_5MHz_FDD_t
*
)
dci_pdu
)
->
harq_pid
;
nscid
=
((
DCI2B_1_5MHz_FDD_t
*
)
dci_pdu
)
->
scrambling_id
;
}
break
;
...
...
@@ -2161,6 +2164,7 @@ int generate_eNB_dlsch_params_from_dci(int frame,
ndi1
=
((
DCI2B_5MHz_TDD_t
*
)
dci_pdu
)
->
ndi1
;
ndi2
=
((
DCI2B_5MHz_TDD_t
*
)
dci_pdu
)
->
ndi2
;
harq_pid
=
((
DCI2B_5MHz_TDD_t
*
)
dci_pdu
)
->
harq_pid
;
nscid
=
((
DCI2B_5MHz_TDD_t
*
)
dci_pdu
)
->
scrambling_id
;
}
else
{
mcs1
=
((
DCI2B_5MHz_FDD_t
*
)
dci_pdu
)
->
mcs1
;
mcs2
=
((
DCI2B_5MHz_FDD_t
*
)
dci_pdu
)
->
mcs2
;
...
...
@@ -2171,6 +2175,7 @@ int generate_eNB_dlsch_params_from_dci(int frame,
ndi1
=
((
DCI2B_5MHz_FDD_t
*
)
dci_pdu
)
->
ndi1
;
ndi2
=
((
DCI2B_5MHz_FDD_t
*
)
dci_pdu
)
->
ndi2
;
harq_pid
=
((
DCI2B_5MHz_FDD_t
*
)
dci_pdu
)
->
harq_pid
;
nscid
=
((
DCI2B_5MHz_FDD_t
*
)
dci_pdu
)
->
scrambling_id
;
}
break
;
...
...
@@ -2186,6 +2191,7 @@ int generate_eNB_dlsch_params_from_dci(int frame,
ndi1
=
((
DCI2B_10MHz_TDD_t
*
)
dci_pdu
)
->
ndi1
;
ndi2
=
((
DCI2B_10MHz_TDD_t
*
)
dci_pdu
)
->
ndi2
;
harq_pid
=
((
DCI2B_10MHz_TDD_t
*
)
dci_pdu
)
->
harq_pid
;
nscid
=
((
DCI2B_10MHz_TDD_t
*
)
dci_pdu
)
->
scrambling_id
;
}
else
{
mcs1
=
((
DCI2B_10MHz_FDD_t
*
)
dci_pdu
)
->
mcs1
;
mcs2
=
((
DCI2B_10MHz_FDD_t
*
)
dci_pdu
)
->
mcs2
;
...
...
@@ -2196,6 +2202,7 @@ int generate_eNB_dlsch_params_from_dci(int frame,
ndi1
=
((
DCI2B_10MHz_FDD_t
*
)
dci_pdu
)
->
ndi1
;
ndi2
=
((
DCI2B_10MHz_FDD_t
*
)
dci_pdu
)
->
ndi2
;
harq_pid
=
((
DCI2B_10MHz_FDD_t
*
)
dci_pdu
)
->
harq_pid
;
nscid
=
((
DCI2B_10MHz_FDD_t
*
)
dci_pdu
)
->
scrambling_id
;
}
break
;
...
...
@@ -2211,6 +2218,7 @@ int generate_eNB_dlsch_params_from_dci(int frame,
ndi1
=
((
DCI2B_20MHz_TDD_t
*
)
dci_pdu
)
->
ndi1
;
ndi2
=
((
DCI2B_20MHz_TDD_t
*
)
dci_pdu
)
->
ndi2
;
harq_pid
=
((
DCI2B_20MHz_TDD_t
*
)
dci_pdu
)
->
harq_pid
;
nscid
=
((
DCI2B_20MHz_TDD_t
*
)
dci_pdu
)
->
scrambling_id
;
}
else
{
mcs1
=
((
DCI2B_20MHz_FDD_t
*
)
dci_pdu
)
->
mcs1
;
mcs2
=
((
DCI2B_20MHz_FDD_t
*
)
dci_pdu
)
->
mcs2
;
...
...
@@ -2221,6 +2229,7 @@ int generate_eNB_dlsch_params_from_dci(int frame,
ndi1
=
((
DCI2B_20MHz_FDD_t
*
)
dci_pdu
)
->
ndi1
;
ndi2
=
((
DCI2B_20MHz_FDD_t
*
)
dci_pdu
)
->
ndi2
;
harq_pid
=
((
DCI2B_20MHz_FDD_t
*
)
dci_pdu
)
->
harq_pid
;
nscid
=
((
DCI2B_20MHz_TDD_t
*
)
dci_pdu
)
->
scrambling_id
;
}
break
;
...
...
@@ -2327,8 +2336,7 @@ int generate_eNB_dlsch_params_from_dci(int frame,
frame_parms
->
N_RB_DL
);
if
(
dlsch1
!=
NULL
)
{
// fixme (need to copy more fields of rb_alloc)
dlsch1_harq
->
rb_alloc
[
0
]
=
dlsch0_harq
->
rb_alloc
[
0
];
memcpy
(
dlsch1_harq
->
rb_alloc
,
dlsch0_harq
->
rb_alloc
,
4
*
sizeof
(
uint32_t
));
dlsch1_harq
->
nb_rb
=
dlsch0_harq
->
nb_rb
;
}
}
else
if
((
dlsch0
==
NULL
)
&&
(
dlsch1
!=
NULL
))
{
...
...
@@ -2350,6 +2358,7 @@ int generate_eNB_dlsch_params_from_dci(int frame,
dlsch0_harq
->
dl_power_off
=
1
;
dlsch0_harq
->
mimo_mode
=
TM8
;
//this DCI can only be used in TM8
dlsch0_harq
->
Nlayers
=
1
;
dlsch0_harq
->
nscid
=
nscid
;
}
if
(
dlsch1_harq
!=
NULL
)
{
...
...
@@ -2363,6 +2372,7 @@ int generate_eNB_dlsch_params_from_dci(int frame,
dlsch1_harq
->
dl_power_off
=
1
;
dlsch1_harq
->
mimo_mode
=
TM8
;
//this DCI can only be used in TM8
dlsch1_harq
->
Nlayers
=
1
;
dlsch1_harq
->
nscid
=
nscid
;
}
break
;
...
...
This diff is collapsed.
Click to expand it.
openair1/PHY/LTE_TRANSPORT/defs.h
View file @
2167d2c0
...
...
@@ -166,6 +166,8 @@ typedef struct {
uint8_t
first_layer
;
/// codeword this transport block is mapped to
uint8_t
codeword
;
/// nscid
uint8_t
nscid
;
}
LTE_DL_eNB_HARQ_t
;
typedef
struct
{
...
...
This diff is collapsed.
Click to expand it.
openair1/PHY/LTE_TRANSPORT/dlsch_modulation.c
View file @
2167d2c0
...
...
@@ -590,7 +590,8 @@ int allocate_REs_in_RB(PHY_VARS_eNB *phy_vars_eNB,
uint8_t
mprime
,
uint8_t
Ns
,
int
*
P1_SHIFT
,
int
*
P2_SHIFT
)
int
*
P2_SHIFT
,
uint8_t
nscid
)
{
LTE_DL_FRAME_PARMS
*
frame_parms
=
&
phy_vars_eNB
->
frame_parms
;
...
...
@@ -1585,7 +1586,7 @@ int allocate_REs_in_RB(PHY_VARS_eNB *phy_vars_eNB,
if
(
is_not_UEspecRS
(
lprime
,
re
,
frame_parms
->
nushift
,
frame_parms
->
Ncp
,
8
,
Ns
))
{
//LOG_D(PHY,"TM8 tti_offset %d, jj %d, jj2 %d, x0 %p, x1 %p\n",tti_offset,*jj,*jj2,x0,x1);
/*
switch (mod_order0) {
case 2: //QPSK
...
...
@@ -1726,12 +1727,13 @@ int allocate_REs_in_RB(PHY_VARS_eNB *phy_vars_eNB,
break;
}
*/
}
else
{
for
(
p
=
7
;
p
<
9
;
p
++
)
{
if
(
p
==
first_layer0
||
p
==
first_layer1
)
{
if
(
frame_parms
->
Ncp
==
0
)
{
//normal CP
ind
=
3
*
lprime
*
dlsch0_harq
->
nb_rb
+
3
*
rb
+
mprime2
;
ind
=
3
*
lprime
*
frame_parms
->
N_RB_DL
+
3
*
rb
+
mprime2
;
ind_dword
=
ind
>>
4
;
ind_qpsk_symb
=
ind
&
0xf
;
...
...
@@ -1756,7 +1758,7 @@ int allocate_REs_in_RB(PHY_VARS_eNB *phy_vars_eNB,
qpsk_p
=
(
w
==
1
)
?
qpsk
:
nqpsk
;
/* pointer to the frequency domain Tx signal */
txdataF
[
p
][
tti_offset
]
=
qpsk_p
[(
phy_vars_eNB
->
lte_gold_uespec_table
[
0
][
Ns
][
lprime
][
ind_dword
]
>>
(
2
*
ind_qpsk_symb
))
&
3
]
;
txdataF
[
p
][
tti_offset
]
=
qpsk_p
[(
phy_vars_eNB
->
lte_gold_uespec_table
[
nscid
][
Ns
][
0
][
ind_dword
]
>>
(
2
*
ind_qpsk_symb
))
&
3
]
;
}
}
mprime2
++
;
...
...
@@ -2160,7 +2162,7 @@ int dlsch_modulation(PHY_VARS_eNB* phy_vars_eNB,
uint8_t
mprime
=
0
,
Ns
;
int8_t
lprime
=-
1
;
int
aa
=
0
;
uint8_t
nscid
=
0
;
#ifdef DEBUG_DLSCH_MODULATION
uint8_t
Nl0
=
0
;
//= dlsch0_harq->Nl;
...
...
@@ -2185,6 +2187,8 @@ int dlsch_modulation(PHY_VARS_eNB* phy_vars_eNB,
Nl1
=
dlsch1_harq
->
Nl
;
#endif
nscid
=
dlsch0_harq
->
nscid
;
}
else
if
((
dlsch0
!=
NULL
)
&&
(
dlsch1
==
NULL
)){
harq_pid
=
dlsch0
->
current_harq_pid
;
...
...
@@ -2202,6 +2206,8 @@ int dlsch_modulation(PHY_VARS_eNB* phy_vars_eNB,
Nl1
=
0
;
#endif
nscid
=
dlsch0_harq
->
nscid
;
}
else
if
((
dlsch0
==
NULL
)
&&
(
dlsch1
!=
NULL
)){
harq_pid
=
dlsch1
->
current_harq_pid
;
...
...
@@ -2219,6 +2225,7 @@ int dlsch_modulation(PHY_VARS_eNB* phy_vars_eNB,
Nl1
=
0
;
#endif
nscid
=
dlsch1_harq
->
nscid
;
}
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_ENB_DLSCH_MODULATION
,
VCD_FUNCTION_IN
);
...
...
@@ -2575,7 +2582,8 @@ int dlsch_modulation(PHY_VARS_eNB* phy_vars_eNB,
mprime
,
Ns
,
P1_SHIFT
,
P2_SHIFT
);
P2_SHIFT
,
nscid
);
if
((
mimo_mode
==
TM7
)
&&
(
lprime
>=
0
))
mprime
+=
3
+
frame_parms
->
Ncp
;
...
...
This diff is collapsed.
Click to expand it.
openair1/PHY/LTE_TRANSPORT/proto.h
View file @
2167d2c0
...
...
@@ -269,7 +269,8 @@ int32_t allocate_REs_in_RB(PHY_VARS_eNB* phy_vars_eNB,
uint8_t
mprime
,
uint8_t
Ns
,
int
*
P1_SHIFT
,
int
*
P2_SHIFT
);
int
*
P2_SHIFT
,
uint8_t
nscid
);
/** \fn int32_t dlsch_modulation(int32_t **txdataF,
...
...
This diff is collapsed.
Click to expand it.
openair1/PHY/defs.h
View file @
2167d2c0
...
...
@@ -476,10 +476,10 @@ typedef struct PHY_VARS_eNB_s {
uint32_t
lte_gold_table
[
20
][
2
][
14
];
/// UE-specific reference symbols (p=5), TM 7
uint32_t
lte_gold_uespec_port5_table
[
NUMBER_OF_UE_MAX
][
20
][
38
];
uint32_t
lte_gold_uespec_port5_table
[
NUMBER_OF_UE_MAX
][
20
][
75
];
/// UE-specific reference symbols (p=7...14), TM 8/9/10
uint32_t
lte_gold_uespec_table
[
2
][
20
][
2
][
21
];
uint32_t
lte_gold_uespec_table
[
2
][
20
][
2
][
100
];
/// mbsfn reference symbols
uint32_t
lte_gold_mbsfn_table
[
10
][
3
][
42
];
...
...
@@ -739,10 +739,10 @@ typedef struct {
uint32_t
lte_gold_table
[
7
][
20
][
2
][
14
];
/// UE-specific reference symbols (p=5), TM 7
uint32_t
lte_gold_uespec_port5_table
[
20
][
38
];
uint32_t
lte_gold_uespec_port5_table
[
20
][
75
];
/// ue-specific reference symbols
uint32_t
lte_gold_uespec_table
[
2
][
20
][
2
][
21
];
uint32_t
lte_gold_uespec_table
[
2
][
20
][
2
][
100
];
/// mbsfn reference symbols
uint32_t
lte_gold_mbsfn_table
[
10
][
3
][
42
];
...
...
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