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
58523405
Commit
58523405
authored
Aug 25, 2016
by
Florian Kaltenberger
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
some improvements too pdcchsim
parent
f9c54ec7
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
80 additions
and
65 deletions
+80
-65
openair1/PHY/INIT/lte_param_init.c
openair1/PHY/INIT/lte_param_init.c
+3
-1
openair1/SIMULATION/LTE_PHY/pdcchsim.c
openair1/SIMULATION/LTE_PHY/pdcchsim.c
+77
-64
No files found.
openair1/PHY/INIT/lte_param_init.c
View file @
58523405
...
...
@@ -51,7 +51,9 @@ void lte_param_init(unsigned char N_tx,
lte_frame_parms
->
nb_antennas_tx
=
N_tx
;
lte_frame_parms
->
nb_antennas_rx
=
N_rx
;
lte_frame_parms
->
nb_antennas_tx_eNB
=
(
transmission_mode
==
1
)
?
1
:
2
;
lte_frame_parms
->
phich_config_common
.
phich_resource
=
one
;
lte_frame_parms
->
phich_config_common
.
phich_resource
=
oneSixth
;
lte_frame_parms
->
phich_config_common
.
phich_duration
=
normal
;
lte_frame_parms
->
tdd_config
=
tdd_config
;
lte_frame_parms
->
frame_type
=
frame_type
;
// lte_frame_parms->Csrs = 2;
...
...
openair1/SIMULATION/LTE_PHY/pdcchsim.c
View file @
58523405
...
...
@@ -57,15 +57,17 @@ PHY_VARS_UE *PHY_vars_UE;
#define CCCH_RB_ALLOC computeRIV(PHY_vars_eNB->lte_frame_parms.N_RB_UL,0,2)
#define DLSCH_RB_ALLOC ((uint16_t)0x1fbf) // igore DC component,RB13
#define msg printf
DCI_PDU
DCI_pdu
;
DCI_PDU
*
get_dci
(
LTE_DL_FRAME_PARMS
*
lte_frame_parms
,
uint8_t
log2L
,
uint8_t
log2Lcommon
,
uint8_t
format_selector
,
uint32_t
rnti
)
DCI_PDU
*
get_dci
(
LTE_DL_FRAME_PARMS
*
lte_frame_parms
,
uint8_t
log2L
,
uint8_t
log2Lcommon
,
DCI_format_t
format_selector
[
MAX_NUM_DCI
],
uint8_t
num_dci
,
uint32_t
rnti
)
{
uint32_t
BCCH_alloc_pdu
[
2
];
uint32_t
DLSCH_alloc_pdu
[
2
];
uint32_t
UL_alloc_pdu
[
2
];
int
i
;
int
i
nd
;
int
dci_length_bytes
=
0
,
dci_length
=
0
;
int
BCCH_pdu_size_bits
=
0
,
BCCH_pdu_size_bytes
=
0
;
int
UL_pdu_size_bits
=
0
,
UL_pdu_size_bytes
=
0
;
...
...
@@ -360,39 +362,39 @@ DCI_PDU *get_dci(LTE_DL_FRAME_PARMS *lte_frame_parms,uint8_t log2L, uint8_t log2
}
}
for
(
ind
=
0
;
ind
<
num_dci
;
ind
++
)
{
if
(
format_selector
[
ind
]
==
format1A
)
{
// add common dci
DCI_pdu
.
dci_alloc
[
ind
].
dci_length
=
BCCH_pdu_size_bits
;
DCI_pdu
.
dci_alloc
[
ind
].
L
=
log2Lcommon
;
DCI_pdu
.
dci_alloc
[
ind
].
rnti
=
SI_RNTI
;
DCI_pdu
.
dci_alloc
[
ind
].
format
=
format1A
;
DCI_pdu
.
dci_alloc
[
ind
].
ra_flag
=
0
;
memcpy
((
void
*
)
&
DCI_pdu
.
dci_alloc
[
0
].
dci_pdu
[
0
],
&
BCCH_alloc_pdu
[
0
],
BCCH_pdu_size_bytes
);
DCI_pdu
.
Num_common_dci
++
;
}
// add common dci
DCI_pdu
.
dci_alloc
[
0
].
dci_length
=
BCCH_pdu_size_bits
;
DCI_pdu
.
dci_alloc
[
0
].
L
=
log2Lcommon
;
DCI_pdu
.
dci_alloc
[
0
].
rnti
=
SI_RNTI
;
DCI_pdu
.
dci_alloc
[
0
].
format
=
format1A
;
DCI_pdu
.
dci_alloc
[
0
].
ra_flag
=
0
;
memcpy
((
void
*
)
&
DCI_pdu
.
dci_alloc
[
0
].
dci_pdu
[
0
],
&
BCCH_alloc_pdu
[
0
],
BCCH_pdu_size_bytes
);
DCI_pdu
.
Num_common_dci
++
;
if
(
lte_frame_parms
->
N_RB_DL
>=
25
)
{
// add ue specific dci
DCI_pdu
.
dci_alloc
[
1
].
dci_length
=
dci_length
;
DCI_pdu
.
dci_alloc
[
1
].
L
=
log2L
;
DCI_pdu
.
dci_alloc
[
1
].
rnti
=
rnti
;
DCI_pdu
.
dci_alloc
[
1
].
format
=
format1
;
DCI_pdu
.
dci_alloc
[
1
].
ra_flag
=
0
;
memcpy
((
void
*
)
&
DCI_pdu
.
dci_alloc
[
1
].
dci_pdu
[
0
],
&
DLSCH_alloc_pdu
[
0
],
dci_length_bytes
);
if
(
format_selector
[
ind
]
==
format1
)
{
// add ue specific dci
DCI_pdu
.
dci_alloc
[
ind
].
dci_length
=
dci_length
;
DCI_pdu
.
dci_alloc
[
ind
].
L
=
log2L
;
DCI_pdu
.
dci_alloc
[
ind
].
rnti
=
rnti
;
DCI_pdu
.
dci_alloc
[
ind
].
format
=
format1
;
DCI_pdu
.
dci_alloc
[
ind
].
ra_flag
=
0
;
memcpy
((
void
*
)
&
DCI_pdu
.
dci_alloc
[
ind
].
dci_pdu
[
0
],
&
DLSCH_alloc_pdu
[
0
],
dci_length_bytes
);
DCI_pdu
.
Num_ue_spec_dci
++
;
if
(
lte_frame_parms
->
N_RB_DL
>=
50
)
{
DCI_pdu
.
dci_alloc
[
2
].
dci_length
=
UL_pdu_size_bits
;
DCI_pdu
.
dci_alloc
[
2
].
L
=
log2L
;
DCI_pdu
.
dci_alloc
[
2
].
rnti
=
rnti
;
DCI_pdu
.
dci_alloc
[
2
].
format
=
format0
;
DCI_pdu
.
dci_alloc
[
2
].
ra_flag
=
0
;
memcpy
((
void
*
)
&
DCI_pdu
.
dci_alloc
[
0
].
dci_pdu
[
0
],
&
UL_alloc_pdu
[
0
],
UL_pdu_size_bytes
);
}
if
(
format_selector
[
ind
]
==
format0
)
{
DCI_pdu
.
dci_alloc
[
ind
].
dci_length
=
UL_pdu_size_bits
;
DCI_pdu
.
dci_alloc
[
ind
].
L
=
log2L
;
DCI_pdu
.
dci_alloc
[
ind
].
rnti
=
rnti
;
DCI_pdu
.
dci_alloc
[
ind
].
format
=
format0
;
DCI_pdu
.
dci_alloc
[
ind
].
ra_flag
=
0
;
memcpy
((
void
*
)
&
DCI_pdu
.
dci_alloc
[
ind
].
dci_pdu
[
0
],
&
UL_alloc_pdu
[
0
],
UL_pdu_size_bytes
);
DCI_pdu
.
Num_ue_spec_dci
++
;
}
}
}
return
(
&
DCI_pdu
);
}
...
...
@@ -428,7 +430,9 @@ int main(int argc, char **argv)
// int8_t interf1=-128,interf2=-128;
uint8_t
dci_cnt
=
0
;
LTE_DL_FRAME_PARMS
*
frame_parms
;
uint8_t
log2L
=
2
,
log2Lcommon
=
2
,
format_selector
=
0
;
uint8_t
log2L
=
2
,
log2Lcommon
=
2
;
DCI_format_t
format_selector
[
MAX_NUM_DCI
];
uint8_t
num_dci
=
0
;
uint8_t
numCCE
,
common_active
=
0
,
ul_active
=
0
,
dl_active
=
0
;
uint32_t
n_trials_common
=
0
,
n_trials_ul
=
0
,
n_trials_dl
=
0
,
false_detection_cnt
=
0
;
...
...
@@ -470,6 +474,11 @@ int main(int argc, char **argv)
rxdata[0] = (int *)malloc16(FRAME_LENGTH_BYTES);
rxdata[1] = (int *)malloc16(FRAME_LENGTH_BYTES);
*/
logInit
();
while
((
c
=
getopt
(
argc
,
argv
,
"hapFg:R:c:n:s:x:y:z:L:M:N:I:f:i:S:P:Y"
))
!=
-
1
)
{
switch
(
c
)
{
case
'a'
:
...
...
@@ -613,7 +622,15 @@ int main(int argc, char **argv)
break
;
case
'N'
:
format_selector
=
atoi
(
optarg
);
format_selector
[
num_dci
]
=
(
DCI_format_t
)
atoi
(
optarg
);
if
((
format_selector
[
num_dci
]
<
format0
)
||
(
format_selector
[
num_dci
]
>
format1A
))
{
printf
(
"only formats 0, 1, and 1A supported for the moment
\n
"
);
exit
(
-
1
);
}
if
(
format_selector
[
num_dci
]
==
format0
)
ul_active
=
1
;
if
(
format_selector
[
num_dci
]
==
format1A
)
common_active
=
1
;
if
(
format_selector
[
num_dci
]
==
format1
)
dl_active
=
1
;
num_dci
++
;
break
;
case
'O'
:
...
...
@@ -663,25 +680,27 @@ int main(int argc, char **argv)
printf
(
"-y Number of TX antennas used in eNB
\n
"
);
printf
(
"-z Number of RX antennas used in UE
\n
"
);
printf
(
"-P Number of interfering PHICH
\n
"
);
printf
(
"-L log2 of Aggregation level for UE Specific DCI (
1,2,4,8
)
\n
"
);
printf
(
"-L log2 of Aggregation level for UE Specific DCI (
0,1,2,3
)
\n
"
);
printf
(
"-M log2 Aggregation level for Common DCI (4,8)
\n
"
);
printf
(
"-N Format for UE Spec DCI (0 - format1,
\n
"
);
printf
(
" 1 - format1A,
\n
"
);
printf
(
" 2 - format1B_2A,
\n
"
);
printf
(
" 3 - format1B_4A,
\n
"
);
printf
(
" 4 - format1C,
\n
"
);
printf
(
" 5 - format1D_2A,
\n
"
);
printf
(
" 6 - format1D_4A,
\n
"
);
printf
(
" 7 - format2A_2A_L10PRB,
\n
"
);
printf
(
" 8 - format2A_2A_M10PRB,
\n
"
);
printf
(
" 9 - format2A_4A_L10PRB,
\n
"
);
printf
(
" 10 - format2A_4A_M10PRB,
\n
"
);
printf
(
" 11 - format2_2A_L10PRB,
\n
"
);
printf
(
" 12 - format2_2A_M10PRB,
\n
"
);
printf
(
" 13 - format2_4A_L10PRB,
\n
"
);
printf
(
" 14 - format2_4A_M10PRB
\n
"
);
printf
(
" 15 - format2_2D_M10PRB
\n
"
);
printf
(
" 16 - format2_2D_L10PRB
\n
"
);
printf
(
"-N Format for UE Spec DCI (0 - format0,
\n
"
);
printf
(
" 1 - format1,
\n
"
);
printf
(
" 2 - format1A,
\n
"
);
printf
(
" 3 - format1B_2A,
\n
"
);
printf
(
" 4 - format1B_4A,
\n
"
);
printf
(
" 5 - format1C,
\n
"
);
printf
(
" 6 - format1D_2A,
\n
"
);
printf
(
" 7 - format1D_4A,
\n
"
);
printf
(
" 8 - format2A_2A_L10PRB,
\n
"
);
printf
(
" 9 - format2A_2A_M10PRB,
\n
"
);
printf
(
" 10 - format2A_4A_L10PRB,
\n
"
);
printf
(
" 11 - format2A_4A_M10PRB,
\n
"
);
printf
(
" 12 - format2_2A_L10PRB,
\n
"
);
printf
(
" 13 - format2_2A_M10PRB,
\n
"
);
printf
(
" 14 - format2_4A_L10PRB,
\n
"
);
printf
(
" 15 - format2_4A_M10PRB
\n
"
);
printf
(
" 16 - format2_2D_M10PRB
\n
"
);
printf
(
" 17 - format2_2D_L10PRB
\n
"
);
printf
(
" can be called multiple times to add more than one DCI
\n
"
);
printf
(
"-O Oversampling factor
\n
"
);
printf
(
"-I Cell Id
\n
"
);
printf
(
"-F Input sample stream
\n
"
);
...
...
@@ -690,11 +709,6 @@ int main(int argc, char **argv)
}
}
logInit
();
if
((
transmission_mode
>
1
)
&&
(
n_tx
==
1
))
n_tx
=
2
;
...
...
@@ -730,7 +744,7 @@ int main(int argc, char **argv)
printf
(
"SNR0 %f, SNR1 %f
\n
"
,
snr0
,
snr1
);
frame_parms
=
&
PHY_vars_eNB
->
lte_frame_parms
;
get_dci
(
frame_parms
,
log2L
,
log2Lcommon
,
format_selector
,
n_rnti
);
get_dci
(
frame_parms
,
log2L
,
log2Lcommon
,
format_selector
,
n
um_dci
,
n
_rnti
);
txdata
=
PHY_vars_eNB
->
lte_eNB_common_vars
.
txdata
[
eNb_id
];
...
...
@@ -864,15 +878,14 @@ int main(int argc, char **argv)
if
(
input_fd
==
NULL
)
{
numCCE
=
0
;
n_trials_common
++
;
common_active
=
1
;
if
(
PHY_vars_eNB
->
lte_frame_parms
.
N_RB_DL
>=
50
)
{
if
(
common_active
==
1
)
{
n_trials_common
++
;
}
if
(
ul_active
==
1
)
{
n_trials_ul
++
;
ul_active
=
1
;
}
if
(
PHY_vars_eNB
->
lte_frame_parms
.
N_RB_DL
>=
25
)
{
if
(
dl_active
==
1
)
{
n_trials_dl
++
;
dl_active
=
1
;
}
num_pdcch_symbols
=
get_num_pdcch_symbols
(
DCI_pdu
.
Num_common_dci
+
DCI_pdu
.
Num_ue_spec_dci
,
...
...
@@ -1236,7 +1249,7 @@ int main(int argc, char **argv)
}
//trials
printf
(
"SNR %f : n_errors_common = %d/%d (%e)
\n
"
,
SNR
,
n_errors_common
,
n_trials_common
,(
double
)
n_errors_common
/
n_trials_common
);
if
(
common_active
)
printf
(
"SNR %f : n_errors_common = %d/%d (%e)
\n
"
,
SNR
,
n_errors_common
,
n_trials_common
,(
double
)
n_errors_common
/
n_trials_common
);
if
(
ul_active
==
1
)
printf
(
"SNR %f : n_errors_ul = %d/%d (%e)
\n
"
,
SNR
,
n_errors_ul
,
n_trials_ul
,(
double
)
n_errors_ul
/
n_trials_ul
);
if
(
dl_active
==
1
)
printf
(
"SNR %f : n_errors_dl = %d/%d (%e)
\n
"
,
SNR
,
n_errors_dl
,
n_trials_dl
,(
double
)
n_errors_dl
/
n_trials_dl
);
printf
(
"SNR %f : n_errors_cfi = %d/%d (%e)
\n
"
,
SNR
,
n_errors_cfi
,
trial
,(
double
)
n_errors_cfi
/
trial
);
...
...
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