Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
openairinterface5G
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Deploy
Releases
Package Registry
Model registry
Operate
Terraform modules
Monitor
Incidents
Service Desk
Analyze
Value stream analytics
Contributor analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Parmentelat
openairinterface5G
Commits
58523405
Commit
58523405
authored
8 years ago
by
Florian Kaltenberger
Browse files
Options
Downloads
Patches
Plain Diff
some improvements too pdcchsim
parent
f9c54ec7
No related branches found
Branches containing commit
No related tags found
Tags containing commit
No related merge requests found
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
openair1/PHY/INIT/lte_param_init.c
+3
-1
3 additions, 1 deletion
openair1/PHY/INIT/lte_param_init.c
openair1/SIMULATION/LTE_PHY/pdcchsim.c
+77
-64
77 additions, 64 deletions
openair1/SIMULATION/LTE_PHY/pdcchsim.c
with
80 additions
and
65 deletions
openair1/PHY/INIT/lte_param_init.c
+
3
−
1
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;
...
...
This diff is collapsed.
Click to expand it.
openair1/SIMULATION/LTE_PHY/pdcchsim.c
+
77
−
64
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
,
num_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
);
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment