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
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
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
OpenXG
OpenXG-RAN
Commits
982a0546
Commit
982a0546
authored
Mar 10, 2021
by
luis_pereira87
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add support for PUSCH DMRS sequence generation when BWPStart>0
parent
7be1952c
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
13 additions
and
11 deletions
+13
-11
openair1/PHY/NR_ESTIMATION/nr_ul_channel_estimation.c
openair1/PHY/NR_ESTIMATION/nr_ul_channel_estimation.c
+3
-3
openair1/PHY/NR_TRANSPORT/nr_dlsch.c
openair1/PHY/NR_TRANSPORT/nr_dlsch.c
+1
-0
openair1/PHY/NR_UE_TRANSPORT/dci_nr.c
openair1/PHY/NR_UE_TRANSPORT/dci_nr.c
+1
-1
openair1/PHY/NR_UE_TRANSPORT/nr_ulsch_ue.c
openair1/PHY/NR_UE_TRANSPORT/nr_ulsch_ue.c
+8
-7
No files found.
openair1/PHY/NR_ESTIMATION/nr_ul_channel_estimation.c
View file @
982a0546
...
@@ -124,9 +124,9 @@ int nr_pusch_channel_estimation(PHY_VARS_gNB *gNB,
...
@@ -124,9 +124,9 @@ int nr_pusch_channel_estimation(PHY_VARS_gNB *gNB,
//------------------generate DMRS------------------//
//------------------generate DMRS------------------//
if
(
pusch_pdu
->
transform_precoding
==
transform_precoder_disabled
)
if
(
pusch_pdu
->
transform_precoding
==
transform_precoder_disabled
)
nr_pusch_dmrs_rx
(
gNB
,
Ns
,
gNB
->
nr_gold_pusch_dmrs
[
pusch_pdu
->
scid
][
Ns
][
symbol
],
&
pilot
[
0
],
1000
,
0
,
nb_rb_pusch
,
pusch_pdu
->
rb_start
*
NR_NB_SC_PER_RB
,
pusch_pdu
->
dmrs_config_type
);
nr_pusch_dmrs_rx
(
gNB
,
Ns
,
gNB
->
nr_gold_pusch_dmrs
[
pusch_pdu
->
scid
][
Ns
][
symbol
],
&
pilot
[
0
],
1000
,
0
,
nb_rb_pusch
,
(
pusch_pdu
->
bwp_start
+
pusch_pdu
->
rb_start
)
*
NR_NB_SC_PER_RB
,
pusch_pdu
->
dmrs_config_type
);
else
{
// if transform precoding or SC-FDMA is enabled in Uplink
else
{
// if transform precoding or SC-FDMA is enabled in Uplink
// NR_SC_FDMA supports type1 DMRS so only 6 DMRS REs per RB possible
// NR_SC_FDMA supports type1 DMRS so only 6 DMRS REs per RB possible
...
...
openair1/PHY/NR_TRANSPORT/nr_dlsch.c
View file @
982a0546
...
@@ -268,6 +268,7 @@ uint8_t nr_generate_pdsch(PHY_VARS_gNB *gNB,
...
@@ -268,6 +268,7 @@ uint8_t nr_generate_pdsch(PHY_VARS_gNB *gNB,
//to be moved to init phase potentially, for now tx_layers 1-8 are mapped on antenna ports 1000-1007
//to be moved to init phase potentially, for now tx_layers 1-8 are mapped on antenna ports 1000-1007
/// DMRS QPSK modulation
/// DMRS QPSK modulation
// TODO: performance improvement, we can skip the modulation of DMRS symbols outside the bandwidth part
for
(
int
l
=
rel15
->
StartSymbolIndex
;
l
<
rel15
->
StartSymbolIndex
+
rel15
->
NrOfSymbols
;
l
++
)
{
for
(
int
l
=
rel15
->
StartSymbolIndex
;
l
<
rel15
->
StartSymbolIndex
+
rel15
->
NrOfSymbols
;
l
++
)
{
if
(
rel15
->
dlDmrsSymbPos
&
(
1
<<
l
))
{
if
(
rel15
->
dlDmrsSymbPos
&
(
1
<<
l
))
{
nr_modulation
(
pdsch_dmrs
[
l
][
0
],
n_dmrs
*
2
,
DMRS_MOD_ORDER
,
mod_dmrs
[
l
]);
// currently only codeword 0 is modulated. Qm = 2 as DMRS is QPSK modulated
nr_modulation
(
pdsch_dmrs
[
l
][
0
],
n_dmrs
*
2
,
DMRS_MOD_ORDER
,
mod_dmrs
[
l
]);
// currently only codeword 0 is modulated. Qm = 2 as DMRS is QPSK modulated
...
...
openair1/PHY/NR_UE_TRANSPORT/dci_nr.c
View file @
982a0546
...
@@ -917,7 +917,7 @@ uint8_t nr_dci_decoding_procedure(PHY_VARS_NR_UE *ue,
...
@@ -917,7 +917,7 @@ uint8_t nr_dci_decoding_procedure(PHY_VARS_NR_UE *ue,
n_rnti
=
rel15
->
rnti
;
n_rnti
=
rel15
->
rnti
;
if
(
crc
==
n_rnti
)
{
if
(
crc
==
n_rnti
)
{
LOG_
D
(
PHY
,
"(%i.%i) Received dci indication (rnti %x,dci format %d,n_CCE %d,payloadSize %d,payload %llx)
\n
"
,
LOG_
I
(
PHY
,
"(%i.%i) Received dci indication (rnti %x,dci format %d,n_CCE %d,payloadSize %d,payload %llx)
\n
"
,
proc
->
frame_rx
,
proc
->
nr_slot_rx
,
n_rnti
,
rel15
->
dci_format_options
[
k
],
CCEind
,
dci_length
,
*
(
unsigned
long
long
*
)
dci_estimation
);
proc
->
frame_rx
,
proc
->
nr_slot_rx
,
n_rnti
,
rel15
->
dci_format_options
[
k
],
CCEind
,
dci_length
,
*
(
unsigned
long
long
*
)
dci_estimation
);
dci_ind
->
SFN
=
proc
->
frame_rx
;
dci_ind
->
SFN
=
proc
->
frame_rx
;
dci_ind
->
slot
=
proc
->
nr_slot_rx
;
dci_ind
->
slot
=
proc
->
nr_slot_rx
;
...
...
openair1/PHY/NR_UE_TRANSPORT/nr_ulsch_ue.c
View file @
982a0546
...
@@ -195,7 +195,7 @@ void nr_ue_ulsch_procedures(PHY_VARS_NR_UE *UE,
...
@@ -195,7 +195,7 @@ void nr_ue_ulsch_procedures(PHY_VARS_NR_UE *UE,
/////////////////////////DMRS Modulation/////////////////////////
/////////////////////////DMRS Modulation/////////////////////////
///////////
///////////
uint32_t
***
pusch_dmrs
=
UE
->
nr_gold_pusch_dmrs
[
slot
];
uint32_t
***
pusch_dmrs
=
UE
->
nr_gold_pusch_dmrs
[
slot
];
uint16_t
n_dmrs
=
(
start_rb
+
nb_rb
)
*
((
dmrs_type
==
pusch_dmrs_type1
)
?
6
:
4
);
uint16_t
n_dmrs
=
(
pusch_pdu
->
bwp_start
+
start_rb
+
nb_rb
)
*
((
dmrs_type
==
pusch_dmrs_type1
)
?
6
:
4
);
int16_t
mod_dmrs
[
n_dmrs
<<
1
]
__attribute
((
aligned
(
16
)));
int16_t
mod_dmrs
[
n_dmrs
<<
1
]
__attribute
((
aligned
(
16
)));
///////////
///////////
////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////
...
@@ -355,16 +355,17 @@ void nr_ue_ulsch_procedures(PHY_VARS_NR_UE *UE,
...
@@ -355,16 +355,17 @@ void nr_ue_ulsch_procedures(PHY_VARS_NR_UE *UE,
if
(
pusch_pdu
->
transform_precoding
==
transform_precoder_disabled
){
if
(
pusch_pdu
->
transform_precoding
==
transform_precoder_disabled
){
if
(
dmrs_type
==
pusch_dmrs_type1
)
if
(
dmrs_type
==
pusch_dmrs_type1
)
dmrs_idx
=
start_rb
*
6
;
dmrs_idx
=
(
pusch_pdu
->
bwp_start
+
start_rb
)
*
6
;
else
else
dmrs_idx
=
start_rb
*
4
;
dmrs_idx
=
(
pusch_pdu
->
bwp_start
+
start_rb
)
*
4
;
// Perform this on gold sequence, not required when SC FDMA operation is done,
// TODO: performance improvement, we can skip the modulation of DMRS symbols outside the bandwidth part
// Perform this on gold sequence, not required when SC FDMA operation is done,
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
}
else
{
}
else
{
dmrs_idx
=
0
;
dmrs_idx
=
0
;
}
}
}
else
if
(
pusch_pdu
->
pdu_bit_map
&
PUSCH_PDU_BITMAP_PUSCH_PTRS
)
{
}
else
if
(
pusch_pdu
->
pdu_bit_map
&
PUSCH_PDU_BITMAP_PUSCH_PTRS
)
{
...
...
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