Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
OpenXG UE
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
Michael Black
OpenXG UE
Commits
bdc806e7
Commit
bdc806e7
authored
Sep 16, 2019
by
Khalid Ahmed
Committed by
Thomas Schlichter
Dec 18, 2019
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Adding table 6.4.1.1.3-4 for double DMRS symbol
parent
3e9817ee
Changes
5
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
31 additions
and
6 deletions
+31
-6
openair1/PHY/INIT/nr_init.c
openair1/PHY/INIT/nr_init.c
+1
-1
openair1/PHY/INIT/nr_init_ue.c
openair1/PHY/INIT/nr_init_ue.c
+1
-1
openair1/PHY/NR_REFSIG/dmrs_nr.c
openair1/PHY/NR_REFSIG/dmrs_nr.c
+26
-3
openair1/PHY/NR_REFSIG/dmrs_nr.h
openair1/PHY/NR_REFSIG/dmrs_nr.h
+1
-1
openair1/PHY/NR_UE_TRANSPORT/nr_ulsch_ue.c
openair1/PHY/NR_UE_TRANSPORT/nr_ulsch_ue.c
+2
-0
No files found.
openair1/PHY/INIT/nr_init.c
View file @
bdc806e7
...
@@ -155,7 +155,7 @@ int phy_init_nr_gNB(PHY_VARS_gNB *gNB,
...
@@ -155,7 +155,7 @@ int phy_init_nr_gNB(PHY_VARS_gNB *gNB,
//------------- config PUSCH DMRS parameters(to be updated from RRC)--------------//
//------------- config PUSCH DMRS parameters(to be updated from RRC)--------------//
gNB
->
dmrs_UplinkConfig
.
pusch_dmrs_type
=
pusch_dmrs_type1
;
gNB
->
dmrs_UplinkConfig
.
pusch_dmrs_type
=
pusch_dmrs_type1
;
gNB
->
dmrs_UplinkConfig
.
pusch_dmrs_AdditionalPosition
=
pusch_dmrs_pos
3
;
gNB
->
dmrs_UplinkConfig
.
pusch_dmrs_AdditionalPosition
=
pusch_dmrs_pos
0
;
gNB
->
dmrs_UplinkConfig
.
pusch_maxLength
=
pusch_len1
;
gNB
->
dmrs_UplinkConfig
.
pusch_maxLength
=
pusch_len1
;
//--------------------------------------------------------------------------------//
//--------------------------------------------------------------------------------//
...
...
openair1/PHY/INIT/nr_init_ue.c
View file @
bdc806e7
...
@@ -705,7 +705,7 @@ int init_nr_ue_signal(PHY_VARS_NR_UE *ue,
...
@@ -705,7 +705,7 @@ int init_nr_ue_signal(PHY_VARS_NR_UE *ue,
//------------- config DMRS parameters--------------//
//------------- config DMRS parameters--------------//
ue
->
dmrs_UplinkConfig
.
pusch_dmrs_type
=
pusch_dmrs_type1
;
ue
->
dmrs_UplinkConfig
.
pusch_dmrs_type
=
pusch_dmrs_type1
;
ue
->
dmrs_UplinkConfig
.
pusch_dmrs_AdditionalPosition
=
pusch_dmrs_pos
3
;
ue
->
dmrs_UplinkConfig
.
pusch_dmrs_AdditionalPosition
=
pusch_dmrs_pos
0
;
ue
->
dmrs_UplinkConfig
.
pusch_maxLength
=
pusch_len1
;
ue
->
dmrs_UplinkConfig
.
pusch_maxLength
=
pusch_len1
;
//-------------------------------------------------//
//-------------------------------------------------//
ue
->
nr_gold_pusch_dmrs
=
(
uint32_t
****
)
malloc16
(
fp
->
slots_per_frame
*
sizeof
(
uint32_t
***
));
ue
->
nr_gold_pusch_dmrs
=
(
uint32_t
****
)
malloc16
(
fp
->
slots_per_frame
*
sizeof
(
uint32_t
***
));
...
...
openair1/PHY/NR_REFSIG/dmrs_nr.c
View file @
bdc806e7
...
@@ -55,7 +55,27 @@ int32_t table_6_4_1_1_3_3_pusch_dmrs_positions_l [12][8] = {
...
@@ -55,7 +55,27 @@ int32_t table_6_4_1_1_3_3_pusch_dmrs_positions_l [12][8] = {
{
1
,
2049
,
2177
,
2337
,
1
,
1025
,
1057
,
585
},
//14 // (DMRS l' position)
{
1
,
2049
,
2177
,
2337
,
1
,
1025
,
1057
,
585
},
//14 // (DMRS l' position)
};
};
int32_t
get_l_prime
(
uint8_t
duration_in_symbols
,
uint8_t
mapping_type
,
pusch_dmrs_AdditionalPosition_t
additional_pos
)
{
// TS 38.211 Table 6.4.1.1.3-4: PUSCH DMRS positions l' within a slot for double-symbol DMRS and intra-slot frequency hopping disabled.
// The first 4 colomns are PUSCH mapping type A and the last 4 colomns are PUSCH mapping type B.
// When l' = l0, it is represented by 1
int32_t
table_6_4_1_1_3_4_pusch_dmrs_positions_l
[
12
][
8
]
=
{
// Duration in symbols
{
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
},
//<4 // (DMRS l' position)
{
1
,
1
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
,
-
1
},
//4 // (DMRS l' position)
{
1
,
1
,
-
1
,
-
1
,
1
,
1
,
-
1
,
-
1
},
//5 // (DMRS l' position)
{
1
,
1
,
-
1
,
-
1
,
1
,
1
,
-
1
,
-
1
},
//6 // (DMRS l' position)
{
1
,
1
,
-
1
,
-
1
,
1
,
1
,
-
1
,
-
1
},
//7 // (DMRS l' position)
{
1
,
1
,
-
1
,
-
1
,
1
,
33
,
-
1
,
-
1
},
//8 // (DMRS l' position)
{
1
,
1
,
-
1
,
-
1
,
1
,
33
,
-
1
,
-
1
},
//9 // (DMRS l' position)
{
1
,
257
,
-
1
,
-
1
,
1
,
129
,
-
1
,
-
1
},
//10 // (DMRS l' position)
{
1
,
257
,
-
1
,
-
1
,
1
,
129
,
-
1
,
-
1
},
//11 // (DMRS l' position)
{
1
,
257
,
-
1
,
-
1
,
1
,
513
,
-
1
,
-
1
},
//12 // (DMRS l' position)
{
1
,
1025
,
-
1
,
-
1
,
1
,
513
,
-
1
,
-
1
},
//13 // (DMRS l' position)
{
1
,
1025
,
-
1
,
-
1
,
1
,
513
,
-
1
,
-
1
},
//14 // (DMRS l' position)
};
int32_t
get_l_prime
(
uint8_t
duration_in_symbols
,
uint8_t
mapping_type
,
pusch_dmrs_AdditionalPosition_t
additional_pos
,
pusch_maxLength_t
pusch_maxLength
)
{
uint8_t
row
,
colomn
;
uint8_t
row
,
colomn
;
int32_t
l_prime
;
int32_t
l_prime
;
...
@@ -70,7 +90,10 @@ int32_t get_l_prime(uint8_t duration_in_symbols, uint8_t mapping_type, pusch_dmr
...
@@ -70,7 +90,10 @@ int32_t get_l_prime(uint8_t duration_in_symbols, uint8_t mapping_type, pusch_dmr
else
else
row
=
duration_in_symbols
-
3
;
row
=
duration_in_symbols
-
3
;
if
(
pusch_maxLength
==
pusch_len1
)
l_prime
=
table_6_4_1_1_3_3_pusch_dmrs_positions_l
[
row
][
colomn
];
l_prime
=
table_6_4_1_1_3_3_pusch_dmrs_positions_l
[
row
][
colomn
];
else
l_prime
=
table_6_4_1_1_3_4_pusch_dmrs_positions_l
[
row
][
colomn
];
AssertFatal
(
l_prime
>
0
,
"invalid l_prime < 0
\n
"
);
AssertFatal
(
l_prime
>
0
,
"invalid l_prime < 0
\n
"
);
...
@@ -120,7 +143,7 @@ uint8_t is_dmrs_symbol(uint8_t l,
...
@@ -120,7 +143,7 @@ uint8_t is_dmrs_symbol(uint8_t l,
l0
=
get_l0_ul
(
mapping_type
,
2
);
l0
=
get_l0_ul
(
mapping_type
,
2
);
l_prime_mask
=
get_l_prime
(
duration_in_symbols
,
mapping_type
,
additional_pos
);
l_prime_mask
=
get_l_prime
(
duration_in_symbols
,
mapping_type
,
additional_pos
,
dmrs_UplinkConfig
->
pusch_maxLength
);
if
(
k
==
((
start_sc
+
get_dmrs_freq_idx_ul
(
n
,
k_prime
,
delta
,
dmrs_type
))
%
ofdm_symbol_size
))
if
(
k
==
((
start_sc
+
get_dmrs_freq_idx_ul
(
n
,
k_prime
,
delta
,
dmrs_type
))
%
ofdm_symbol_size
))
is_dmrs_freq
=
1
;
is_dmrs_freq
=
1
;
...
...
openair1/PHY/NR_REFSIG/dmrs_nr.h
View file @
bdc806e7
...
@@ -57,7 +57,7 @@ void generate_dmrs_pbch(uint32_t dmrs_pbch_bitmap[DMRS_PBCH_I_SSB][DMRS_PBCH_N_H
...
@@ -57,7 +57,7 @@ void generate_dmrs_pbch(uint32_t dmrs_pbch_bitmap[DMRS_PBCH_I_SSB][DMRS_PBCH_N_H
uint8_t
get_l0_ul
(
uint8_t
mapping_type
,
uint8_t
dmrs_typeA_position
);
uint8_t
get_l0_ul
(
uint8_t
mapping_type
,
uint8_t
dmrs_typeA_position
);
uint16_t
get_dmrs_freq_idx_ul
(
uint16_t
n
,
uint8_t
k_prime
,
uint8_t
delta
,
uint8_t
dmrs_type
);
uint16_t
get_dmrs_freq_idx_ul
(
uint16_t
n
,
uint8_t
k_prime
,
uint8_t
delta
,
uint8_t
dmrs_type
);
int32_t
get_l_prime
(
uint8_t
duration_in_symbols
,
uint8_t
mapping_type
,
pusch_dmrs_AdditionalPosition_t
additional_pos
);
int32_t
get_l_prime
(
uint8_t
duration_in_symbols
,
uint8_t
mapping_type
,
pusch_dmrs_AdditionalPosition_t
additional_pos
,
pusch_maxLength_t
pusch_maxLength
);
uint8_t
is_dmrs_symbol
(
uint8_t
l
,
uint8_t
is_dmrs_symbol
(
uint8_t
l
,
uint16_t
k
,
uint16_t
k
,
...
...
openair1/PHY/NR_UE_TRANSPORT/nr_ulsch_ue.c
View file @
bdc806e7
...
@@ -328,6 +328,8 @@ void nr_ue_ulsch_procedures(PHY_VARS_NR_UE *UE,
...
@@ -328,6 +328,8 @@ void nr_ue_ulsch_procedures(PHY_VARS_NR_UE *UE,
if
(
is_dmrs
==
1
)
{
if
(
is_dmrs
==
1
)
{
printf
(
"DMRS l = %u
\n
"
,
l
);
nr_modulation
(
pusch_dmrs
[
l
][
0
],
n_dmrs
*
2
,
DMRS_MOD_ORDER
,
mod_dmrs
);
// currently only codeword 0 is modulated. Qm = 2 as DMRS is QPSK modulated
nr_modulation
(
pusch_dmrs
[
l
][
0
],
n_dmrs
*
2
,
DMRS_MOD_ORDER
,
mod_dmrs
);
// currently only codeword 0 is modulated. Qm = 2 as DMRS is QPSK modulated
((
int16_t
*
)
txdataF
[
ap
])[(
sample_offsetF
)
<<
1
]
=
(
Wt
[
l_prime
[
0
]]
*
Wf
[
k_prime
]
*
AMP
*
mod_dmrs
[
dmrs_idx
<<
1
])
>>
15
;
((
int16_t
*
)
txdataF
[
ap
])[(
sample_offsetF
)
<<
1
]
=
(
Wt
[
l_prime
[
0
]]
*
Wf
[
k_prime
]
*
AMP
*
mod_dmrs
[
dmrs_idx
<<
1
])
>>
15
;
...
...
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