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
2e29a27c
Commit
2e29a27c
authored
Nov 06, 2017
by
lfarizav
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
some updates
parent
75cf5870
Changes
9
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
139 additions
and
483 deletions
+139
-483
openair1/PHY/LTE_TRANSPORT/dci.c
openair1/PHY/LTE_TRANSPORT/dci.c
+28
-25
openair1/PHY/LTE_TRANSPORT/prach.c
openair1/PHY/LTE_TRANSPORT/prach.c
+76
-421
openair1/PHY/TOOLS/signal_energy.c
openair1/PHY/TOOLS/signal_energy.c
+3
-3
openair1/SCHED/phy_procedures_lte_eNb.c
openair1/SCHED/phy_procedures_lte_eNb.c
+2
-0
openair1/SCHED/phy_procedures_lte_ue.c
openair1/SCHED/phy_procedures_lte_ue.c
+8
-7
openair1/SIMULATION/RF/adc.c
openair1/SIMULATION/RF/adc.c
+1
-1
openair1/SIMULATION/RF/dac.c
openair1/SIMULATION/RF/dac.c
+1
-1
openair1/SIMULATION/TOOLS/multipath_channel.c
openair1/SIMULATION/TOOLS/multipath_channel.c
+8
-18
targets/SIMU/USER/channel_sim.c
targets/SIMU/USER/channel_sim.c
+12
-7
No files found.
openair1/PHY/LTE_TRANSPORT/dci.c
View file @
2e29a27c
...
...
@@ -3537,7 +3537,7 @@ void dci_decoding_procedure0(LTE_UE_PDCCH **pdcch_vars,
dci_decoded_output
[
current_thread_id
][
4
],
dci_decoded_output
[
current_thread_id
][
5
],
dci_decoded_output
[
current_thread_id
][
6
],
dci_decoded_output
[
current_thread_id
][
7
]);
#endif
}
printf
(
"[dci] crc %x
\n
"
,
crc
);
if
(
crc
==
si_rnti
)
{
dci_alloc
[
*
dci_cnt
].
format
=
format_si
;
*
dci_cnt
=
*
dci_cnt
+
1
;
...
...
@@ -4011,9 +4011,10 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
printf
(
"[DCI search] doing common search/format0 aggregation 4
\n
"
);
#endif
if
(
ue
->
prach_resources
[
eNB_id
])
if
(
ue
->
prach_resources
[
eNB_id
])
{
ra_rnti
=
ue
->
prach_resources
[
eNB_id
]
->
ra_RNTI
;
printf
(
"[dci] ra_RNTI %d, ue->decode_SIB? %d
\n
"
,
ra_rnti
,
ue
->
decode_SIB
);
}
// First check common search spaces at aggregation 4 (SI_RNTI, P_RNTI and RA_RNTI format 0/1A),
// and UE_SPEC format0 (PUSCH) too while we're at it
dci_decoding_procedure0
(
pdcch_vars
,
1
,
mode
,
subframe
,
...
...
@@ -4038,7 +4039,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
&
CCEmap0
,
&
CCEmap1
,
&
CCEmap2
);
printf
(
"[dci]1 dci_cnt %d, CCEmap0 %x
\n
"
,
dci_cnt
,
CCEmap0
);
if
((
CCEmap0
==
0xffff
)
||
((
format0_found
==
1
)
&&
(
format_c_found
==
1
)))
return
(
dci_cnt
);
...
...
@@ -4067,7 +4068,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
&
CCEmap0
,
&
CCEmap1
,
&
CCEmap2
);
printf
(
"[dci]2 dci_cnt %d, CCEmap0 %x
\n
"
,
dci_cnt
,
CCEmap0
);
if
((
CCEmap0
==
0xffff
)
||
((
format0_found
==
1
)
&&
(
format_c_found
==
1
)))
return
(
dci_cnt
);
...
...
@@ -4100,7 +4101,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
&
CCEmap0
,
&
CCEmap1
,
&
CCEmap2
);
printf
(
"[dci]3 dci_cnt %d, CCEmap0 %x
\n
"
,
dci_cnt
,
CCEmap0
);
if
((
CCEmap0
==
0xffff
)
||
((
format0_found
==
1
)
&&
(
format_c_found
==
1
)))
return
(
dci_cnt
);
...
...
@@ -4130,7 +4131,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
&
CCEmap1
,
&
CCEmap2
);
//#endif
printf
(
"[dci]4 dci_cnt %d, CCEmap0 %x
\n
"
,
dci_cnt
,
CCEmap0
);
}
if
(
ue
->
UE_mode
[
eNB_id
]
<=
PRACH
)
...
...
@@ -4164,7 +4165,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
&
CCEmap0
,
&
CCEmap1
,
&
CCEmap2
);
printf
(
"[dci]5 dci_cnt %d, CCEmap0 %x
\n
"
,
dci_cnt
,
CCEmap0
);
if
((
CCEmap0
==
0xffff
)
||
((
format0_found
==
1
)
&&
(
format_c_found
==
1
)))
return
(
dci_cnt
);
...
...
@@ -4197,7 +4198,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
&
CCEmap0
,
&
CCEmap1
,
&
CCEmap2
);
printf
(
"[dci]6 dci_cnt %d, CCEmap0 %x
\n
"
,
dci_cnt
,
CCEmap0
);
if
((
CCEmap0
==
0xffff
)
||
((
format0_found
==
1
)
&&
(
format_c_found
==
1
)))
return
(
dci_cnt
);
...
...
@@ -4232,7 +4233,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
&
CCEmap0
,
&
CCEmap1
,
&
CCEmap2
);
printf
(
"[dci]7 dci_cnt %d, CCEmap0 %x
\n
"
,
dci_cnt
,
CCEmap0
);
if
((
CCEmap0
==
0xffff
)
||
((
format0_found
==
1
)
&&
(
format_c_found
==
1
)))
return
(
dci_cnt
);
...
...
@@ -4266,7 +4267,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
&
CCEmap0
,
&
CCEmap1
,
&
CCEmap2
);
printf
(
"[dci]8 dci_cnt %d, CCEmap0 %x
\n
"
,
dci_cnt
,
CCEmap0
);
if
((
CCEmap0
==
0xffff
)
||
((
format0_found
==
1
)
&&
(
format_c_found
==
1
)))
return
(
dci_cnt
);
...
...
@@ -4301,7 +4302,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
&
CCEmap1
,
&
CCEmap2
);
//printf("[DCI search] Format 1 aggregation 1 dci_cnt %d\n",dci_cnt);
printf
(
"[dci]9 dci_cnt %d, CCEmap0 %x
\n
"
,
dci_cnt
,
CCEmap0
);
if
((
CCEmap0
==
0xffff
)
||
(
format_c_found
==
1
))
return
(
dci_cnt
);
...
...
@@ -4334,7 +4335,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
&
CCEmap1
,
&
CCEmap2
);
//printf("[DCI search] Format 1 aggregation 2 dci_cnt %d\n",dci_cnt);
printf
(
"[dci]10 dci_cnt %d, CCEmap0 %x
\n
"
,
dci_cnt
,
CCEmap0
);
if
((
CCEmap0
==
0xffff
)
||
(
format_c_found
==
1
))
return
(
dci_cnt
);
...
...
@@ -4367,7 +4368,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
&
CCEmap1
,
&
CCEmap2
);
//printf("[DCI search] Format 1 aggregation 4 dci_cnt %d\n",dci_cnt);
printf
(
"[dci]11 dci_cnt %d, CCEmap0 %x
\n
"
,
dci_cnt
,
CCEmap0
);
if
((
CCEmap0
==
0xffff
)
||
((
format0_found
==
1
)
&&
(
format_c_found
==
1
)))
return
(
dci_cnt
);
...
...
@@ -4401,7 +4402,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
&
CCEmap1
,
&
CCEmap2
);
//printf("[DCI search] Format 1 aggregation 8 dci_cnt %d\n",dci_cnt);
printf
(
"[dci]12 dci_cnt %d, CCEmap0 %x
\n
"
,
dci_cnt
,
CCEmap0
);
if
((
CCEmap0
==
0xffff
)
||
((
format0_found
==
1
)
&&
(
format_c_found
==
1
)))
return
(
dci_cnt
);
...
...
@@ -4439,7 +4440,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
&
CCEmap0
,
&
CCEmap1
,
&
CCEmap2
);
printf
(
"[dci]13 dci_cnt %d, CCEmap0 %x
\n
"
,
dci_cnt
,
CCEmap0
);
LOG_D
(
PHY
,
" format 2A_2A search CCEmap0 %x, format0_found %d, format_c_found %d
\n
"
,
CCEmap0
,
format0_found
,
format_c_found
);
if
((
CCEmap0
==
0xffff
)
||
((
format0_found
==
1
)
&&
(
format_c_found
==
1
)))
...
...
@@ -4475,7 +4476,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
&
CCEmap0
,
&
CCEmap1
,
&
CCEmap2
);
printf
(
"[dci]14 dci_cnt %d, CCEmap0 %x
\n
"
,
dci_cnt
,
CCEmap0
);
if
((
CCEmap0
==
0xffff
)
||
((
format0_found
==
1
)
&&
(
format_c_found
==
1
)))
return
(
dci_cnt
);
...
...
@@ -4510,7 +4511,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
&
CCEmap0
,
&
CCEmap1
,
&
CCEmap2
);
printf
(
"[dci]15 dci_cnt %d, CCEmap0 %x
\n
"
,
dci_cnt
,
CCEmap0
);
if
((
CCEmap0
==
0xffff
)
||
((
format0_found
==
1
)
&&
(
format_c_found
==
1
)))
return
(
dci_cnt
);
...
...
@@ -4546,6 +4547,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
&
CCEmap0
,
&
CCEmap1
,
&
CCEmap2
);
printf
(
"[dci]16 dci_cnt %d, CCEmap0 %x
\n
"
,
dci_cnt
,
CCEmap0
);
//#endif
if
((
CCEmap0
==
0xffff
)
||
((
format0_found
==
1
)
&&
(
format_c_found
==
1
)))
...
...
@@ -4581,7 +4583,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
&
CCEmap0
,
&
CCEmap1
,
&
CCEmap2
);
printf
(
"[dci]17 dci_cnt %d, CCEmap0 %x
\n
"
,
dci_cnt
,
CCEmap0
);
if
((
CCEmap0
==
0xffff
)
||
((
format0_found
==
1
)
&&
(
format_c_found
==
1
)))
return
(
dci_cnt
);
...
...
@@ -4614,7 +4616,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
&
CCEmap0
,
&
CCEmap1
,
&
CCEmap2
);
printf
(
"[dci]18 dci_cnt %d, CCEmap0 %x
\n
"
,
dci_cnt
,
CCEmap0
);
if
((
CCEmap0
==
0xffff
)
||
((
format0_found
==
1
)
&&
(
format_c_found
==
1
)))
return
(
dci_cnt
);
...
...
@@ -4647,7 +4649,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
&
CCEmap0
,
&
CCEmap1
,
&
CCEmap2
);
printf
(
"[dci]19 dci_cnt %d, CCEmap0 %x
\n
"
,
dci_cnt
,
CCEmap0
);
if
((
CCEmap0
==
0xffff
)
||
((
format0_found
==
1
)
&&
(
format_c_found
==
1
)))
return
(
dci_cnt
);
...
...
@@ -4681,6 +4683,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
&
CCEmap0
,
&
CCEmap1
,
&
CCEmap2
);
printf
(
"[dci]20 dci_cnt %d, CCEmap0 %x
\n
"
,
dci_cnt
,
CCEmap0
);
//#endif
}
else
if
((
tmode
==
5
)
||
(
tmode
==
6
))
{
// This is MU-MIMO
...
...
@@ -4712,7 +4715,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
&
CCEmap0
,
&
CCEmap1
,
&
CCEmap2
);
printf
(
"[dci]21 dci_cnt %d, CCEmap0 %x
\n
"
,
dci_cnt
,
CCEmap0
);
if
((
CCEmap0
==
0xffff
)
||
((
format0_found
==
1
)
&&
(
format_c_found
==
1
)))
...
...
@@ -4746,7 +4749,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
&
CCEmap0
,
&
CCEmap1
,
&
CCEmap2
);
printf
(
"[dci]22 dci_cnt %d, CCEmap0 %x
\n
"
,
dci_cnt
,
CCEmap0
);
if
((
CCEmap0
==
0xffff
)
||
((
format0_found
==
1
)
&&
(
format_c_found
==
1
)))
return
(
dci_cnt
);
...
...
@@ -4779,7 +4782,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
&
CCEmap0
,
&
CCEmap1
,
&
CCEmap2
);
printf
(
"[dci]23 dci_cnt %d, CCEmap0 %x
\n
"
,
dci_cnt
,
CCEmap0
);
if
((
CCEmap0
==
0xffff
)
||
((
format0_found
==
1
)
&&
(
format_c_found
==
1
)))
return
(
dci_cnt
);
...
...
@@ -4814,7 +4817,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
&
CCEmap0
,
&
CCEmap1
,
&
CCEmap2
);
printf
(
"[dci]24 dci_cnt %d, CCEmap0 %x
\n
"
,
dci_cnt
,
CCEmap0
);
if
((
CCEmap0
==
0xffff
)
||
((
format0_found
==
1
)
&&
(
format_c_found
==
1
)))
return
(
dci_cnt
);
...
...
openair1/PHY/LTE_TRANSPORT/prach.c
View file @
2e29a27c
This diff is collapsed.
Click to expand it.
openair1/PHY/TOOLS/signal_energy.c
View file @
2e29a27c
...
...
@@ -125,7 +125,7 @@ int32_t signal_energy_prach(int32_t *input,uint32_t length)
mm0
=
_mm_setzero_si64
();
//pxor(mm0,mm0);
mm3
=
_mm_setzero_si64
();
//pxor(mm3,mm3);
for
(
i
=
0
;
i
<
length
;
i
+=
2
)
{
for
(
i
=
0
;
i
<
2
*
length
;
i
+=
2
)
{
mm1
=
in
[
i
];
mm2
=
mm1
;
...
...
@@ -140,7 +140,7 @@ int32_t signal_energy_prach(int32_t *input,uint32_t length)
mm0
=
_m_psrlqi
(
mm0
,
32
);
mm0
=
_m_paddd
(
mm0
,
mm1
);
temp
=
_m_to_int
(
mm0
);
temp
/=
(
length
/
2
);
temp
/=
(
length
);
temp
<<=
shift
;
// this is the average of x^2
// now remove the DC component
...
...
@@ -150,7 +150,7 @@ int32_t signal_energy_prach(int32_t *input,uint32_t length)
mm2
=
_m_paddw
(
mm2
,
mm3
);
mm2
=
_m_pmaddwd
(
mm2
,
mm2
);
temp2
=
_m_to_int
(
mm2
);
temp2
/=
(
length
*
length
/
4
);
temp2
/=
(
length
*
length
);
// temp2<<=(2*shift_DC);
temp
-=
temp2
;
...
...
openair1/SCHED/phy_procedures_lte_eNb.c
View file @
2e29a27c
...
...
@@ -2023,6 +2023,8 @@ void prach_procedures(PHY_VARS_eNB *eNB) {
preamble_delay_list
,
frame
,
0
);
printf
(
"[prach] ook
\n
"
);
write_output
(
"prach_rxF_comp1.m"
,
"prach_rxF_comp1"
,
eNB
->
prach_vars
.
prachF
,
1024
,
1
,
1
);
}
}
else
{
for
(
UE_id
=
0
;
UE_id
<
NB_UE_INST
;
UE_id
++
)
{
...
...
openair1/SCHED/phy_procedures_lte_ue.c
View file @
2e29a27c
...
...
@@ -3108,6 +3108,7 @@ int ue_pdcch_procedures(uint8_t eNB_id,PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint
if
(
abstraction_flag
==
0
)
{
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_RX_PDCCH
,
VCD_FUNCTION_IN
);
printf
(
"[phy_procedures_lte_ue]before is %s
\n
"
,
"ok"
);
rx_pdcch
(
ue
,
proc
->
frame_rx
,
subframe_rx
,
...
...
@@ -3115,7 +3116,8 @@ int ue_pdcch_procedures(uint8_t eNB_id,PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint
(
ue
->
frame_parms
.
mode1_flag
==
1
)
?
SISO
:
ALAMOUTI
,
ue
->
high_speed_flag
,
ue
->
is_secondary_ue
);
printf
(
"[phy_procedures_lte_ue]after is %s
\n
"
,
"ok"
);
printf
(
"[phy_procedures_lte_ue] ue->prach_resources[%d] %d
\n
"
,
eNB_id
,
ue
->
prach_resources
[
eNB_id
]);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_RX_PDCCH
,
VCD_FUNCTION_OUT
);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_DCI_DECODING
,
VCD_FUNCTION_IN
);
...
...
@@ -3225,9 +3227,7 @@ int ue_pdcch_procedures(uint8_t eNB_id,PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint
#endif
for
(
i
=
0
;
i
<
dci_cnt
;
i
++
)
{
printf
(
"[phy_procedures_lte_ue] rnti[%d] %x, crnti %x
\n
"
,
i
,
dci_alloc_rx
[
i
].
rnti
,
ue
->
pdcch_vars
[
ue
->
current_thread_id
[
subframe_rx
]][
eNB_id
]
->
crnti
);
if
((
ue
->
UE_mode
[
eNB_id
]
>
PRACH
)
&&
(
dci_alloc_rx
[
i
].
rnti
==
ue
->
pdcch_vars
[
ue
->
current_thread_id
[
subframe_rx
]][
eNB_id
]
->
crnti
)
&&
(
dci_alloc_rx
[
i
].
format
!=
format0
))
{
...
...
@@ -3241,7 +3241,6 @@ int ue_pdcch_procedures(uint8_t eNB_id,PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint
get_nCCE
(
3
,
&
ue
->
frame_parms
,
get_mi
(
&
ue
->
frame_parms
,
0
)));
//dump_dci(&ue->frame_parms, &dci_alloc_rx[i]);
if
((
ue
->
UE_mode
[
eNB_id
]
>
PRACH
)
&&
(
generate_ue_dlsch_params_from_dci
(
frame_rx
,
subframe_rx
,
...
...
@@ -3367,14 +3366,13 @@ int ue_pdcch_procedures(uint8_t eNB_id,PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint
}
}
else
if
((
ue
->
prach_resources
[
eNB_id
])
&&
(
dci_alloc_rx
[
i
].
rnti
==
ue
->
prach_resources
[
eNB_id
]
->
ra_RNTI
)
&&
(
dci_alloc_rx
[
i
].
format
==
format1A
))
{
#ifdef DEBUG_PHY_PROC
LOG_D
(
PHY
,
"[UE %d][RAPROC] subframe %d: Found RA rnti %x, format 1A, dci_cnt %d
\n
"
,
ue
->
Mod_id
,
subframe_rx
,
dci_alloc_rx
[
i
].
rnti
,
i
);
printf
(
"[UE %d][RAPROC] ue->prach_resources[eNB_id] %d, ue->prach_resources[eNB_id]->ra_RNTI %d
\n
"
,
ue
->
Mod_id
,
ue
->
prach_resources
[
eNB_id
],
ue
->
prach_resources
[
eNB_id
]
->
ra_RNTI
);
//if (((frame_rx%100) == 0) || (frame_rx < 20))
//dump_dci(&ue->frame_parms, &dci_alloc_rx[i]);
//mac_xface->macphy_exit("so far so good...\n");
...
...
@@ -3413,6 +3411,8 @@ int ue_pdcch_procedures(uint8_t eNB_id,PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint
#endif
ue
->
ulsch_no_allocation_counter
[
eNB_id
]
=
0
;
//dump_dci(&ue->frame_parms,&dci_alloc_rx[i]);
if
((
ue
->
UE_mode
[
eNB_id
]
>
PRACH
)
&&
...
...
@@ -3496,6 +3496,7 @@ int ue_pdcch_procedures(uint8_t eNB_id,PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint
}
}
#if UE_TIMING_TRACE
stop_meas
(
&
ue
->
dlsch_rx_pdcch_stats
);
#endif
...
...
openair1/SIMULATION/RF/adc.c
View file @
2e29a27c
...
...
@@ -119,7 +119,7 @@ void adc_prach(double *r_re[2],
for
(
aa
=
0
;
aa
<
nb_rx_antennas
;
aa
++
)
{
((
short
*
)
output
)[((
i
+
output_offset
)
<<
1
)]
=
(
short
)(
r_re
[
aa
][
i
+
input_offset
]
*
gain
);
((
short
*
)
output
)[
1
+
((
i
+
output_offset
)
<<
1
)]
=
(
short
)(
r_im
[
aa
][
i
+
input_offset
]
*
gain
);
printf
(
"[adc_prach]i %d output (%d,%d)
\n
"
,
i
,((
short
*
)
output
)[((
i
+
output_offset
)
<<
1
)],((
short
*
)
output
)[
1
+
((
i
+
output_offset
)
<<
1
)]);
if
((
r_re
[
aa
][
i
+
input_offset
]
*
gain
)
>
30000
)
{
//("Adc outputs %d %e %d \n",i,((short *)output[0])[((i+output_offset)<<1)], ((i+output_offset)<<1) );
}
...
...
openair1/SIMULATION/RF/dac.c
View file @
2e29a27c
...
...
@@ -148,7 +148,7 @@ double dac_fixed_gain_prach(double *s_re[2],
amp1
=
0
;
for
(
aa
=
0
;
aa
<
nb_tx_antennas
;
aa
++
)
{
amp1
+=
sqrt
((
double
)
signal_energy_prach
((
int32_t
*
)
&
input
[
input_offset_meas
],
length_meas
*
2
)
/
NB_RE
);
amp1
+=
sqrt
((
double
)
signal_energy_prach
((
int32_t
*
)
&
input
[
input_offset_meas
],
length_meas
)
/
NB_RE
);
}
amp1
/=
nb_tx_antennas
;
...
...
openair1/SIMULATION/TOOLS/multipath_channel.c
View file @
2e29a27c
...
...
@@ -383,31 +383,21 @@ void multipath_channel_prach(channel_desc_t *desc,
random_channel
(
desc
,
0
);
//Find a(l)
freq_channel_prach
(
desc
,
nb_rb
,
n_samples
,
prach_fmt
,
n_ra_prb
);
//Find desc->chF_prach
}
for
(
l
=
0
;
l
<
symbols_per_tti
;
l
++
){
//0-13 normal cyclic prefix
k
=
(
12
*
n_ra_prb
)
-
6
*
fp
->
N_RB_UL
;
if
(
k
<
0
)
k
+=
fp
->
ofdm_symbol_size
;
k
*=
12
;
k
+=
13
;
k
*=
2
;
for
(
f
=
0
;
f
<
prach_samples
;
f
++
)
{
if
(
k
>=
((
prach_fmt
<
4
)
?
12
:
2
)
*
ofdm_symbol_size
)
k
=
0
;
rx_tmp
.
x
=
0
;
rx_tmp
.
y
=
0
;
for
(
ii
=
0
;
ii
<
desc
->
nb_rx
;
ii
++
)
{
for
(
j
=
0
;
j
<
desc
->
nb_tx
;
j
++
)
{
//RX_RE(k) = TX_RE(k).chF(k).x - TX_IM(k).chF(k).y
rx_tmp
.
x
+=
(
(
tx_sig_re
[
ii
][
k
+
l
*
ofdm_symbol_size
*
12
]
*
desc
->
chF_prach
[
ii
+
(
j
*
desc
->
nb_rx
)][
f
].
x
)
-
(
tx_sig_im
[
ii
][
k
+
l
*
ofdm_symbol_size
*
12
]
*
desc
->
chF_prach
[
ii
+
(
j
*
desc
->
nb_rx
)][
f
].
y
)
);
rx_tmp
.
x
+=
(
tx_sig_re
[
ii
][
f
]
*
desc
->
chF_prach
[
ii
+
(
j
*
desc
->
nb_rx
)][
f
+
(
prach_fmt
<
4
)
?
13
:
3
].
x
)
-
(
tx_sig_im
[
ii
][
f
]
*
desc
->
chF_prach
[
ii
+
(
j
*
desc
->
nb_rx
)][
f
+
(
prach_fmt
<
4
)
?
13
:
3
].
y
);
//RX_IM(k) = TX_IM(k).chF(k).x + TX_RE(k).chF(k).y
rx_tmp
.
y
+=
(
(
tx_sig_im
[
ii
][
k
+
l
*
ofdm_symbol_size
*
12
]
*
desc
->
chF_prach
[
ii
+
(
j
*
desc
->
nb_rx
)][
f
].
x
)
+
(
tx_sig_re
[
ii
][
k
+
l
*
ofdm_symbol_size
*
12
]
*
desc
->
chF_prach
[
ii
+
(
j
*
desc
->
nb_rx
)][
f
].
y
)
);
rx_tmp
.
y
+=
(
tx_sig_im
[
ii
][
f
]
*
desc
->
chF_prach
[
ii
+
(
j
*
desc
->
nb_rx
)][
f
+
(
prach_fmt
<
4
)
?
13
:
3
].
x
)
+
(
tx_sig_re
[
ii
][
f
]
*
desc
->
chF_prach
[
ii
+
(
j
*
desc
->
nb_rx
)][
f
+
(
prach_fmt
<
4
)
?
13
:
3
].
y
);
}
// j
//printf("[multipath prach] k: %d\n",k/2);
rx_sig_re
[
ii
][(
k
++
)
+
l
*
ofdm_symbol_size
*
12
]
=
rx_tmp
.
x
*
path_loss
;
rx_sig_im
[
ii
][(
k
++
)
+
l
*
ofdm_symbol_size
*
12
]
=
rx_tmp
.
y
*
path_loss
;
rx_sig_re
[
ii
][
f
]
=
rx_tmp
.
x
*
path_loss
;
rx_sig_im
[
ii
][
f
]
=
rx_tmp
.
y
*
path_loss
;
}
// ii
}
// f
}
//l
}
targets/SIMU/USER/channel_sim.c
View file @
2e29a27c
...
...
@@ -1106,7 +1106,7 @@ void do_UL_prach(channel_desc_t *UE2eNB[NUMBER_OF_UE_MAX][NUMBER_OF_eNB_MAX][MAX
tx_prachF
=
PHY_vars_UE_g
[
UE_id
][
CC_id
]
->
prach_vars
[
eNB_id
]
->
prachF
;
//write_output("txprachF.m","prach_txF", PHY_vars_UE_g[0][0]->prach_vars[0]->prachF,frame_parms->ofdm_symbol_size*frame_parms->symbols_per_tti*12,1,1);
sf_offset
=
subframe
*
frame_parms
->
ofdm_symbol_size
*
frame_parms
->
symbols_per_tti
*
12
;
//
sf_offset = subframe*frame_parms->ofdm_symbol_size*frame_parms->symbols_per_tti*12;
//for (int idx=0;idx<10;idx++) printf("dumping DL raw subframe %d: txdataF[%d] = (%d,%d)\n", subframe, idx, ((short*)&txdataF[0][sf_offset+idx])[0], ((short*)&txdataF[0][sf_offset+idx])[1]);
pointer_firstvalue_PRACH
=
((
12
*
n_ra_prb
)
-
6
*
PHY_vars_UE_g
[
UE_id
][
CC_id
]
->
frame_parms
.
N_RB_UL
<
0
)
?
(((
12
*
n_ra_prb
)
-
6
*
PHY_vars_UE_g
[
UE_id
][
CC_id
]
->
frame_parms
.
N_RB_UL
+
PHY_vars_UE_g
[
UE_id
][
CC_id
]
->
frame_parms
.
ofdm_symbol_size
)
*
12
+
13
)
*
2
:
(((
12
*
n_ra_prb
)
-
6
*
PHY_vars_UE_g
[
UE_id
][
CC_id
]
->
frame_parms
.
N_RB_UL
)
*
12
+
13
)
*
2
;
...
...
@@ -1143,10 +1143,14 @@ void do_UL_prach(channel_desc_t *UE2eNB[NUMBER_OF_UE_MAX][NUMBER_OF_eNB_MAX][MAX
PHY_vars_UE_g
[
UE_id
][
CC_id
]
->
tx_power_dBm
[
subframe
],
PHY_vars_UE_g
[
UE_id
][
CC_id
]
->
tx_total_RE
[
subframe
],
subframe
,
sf_offset
);
for
(
int
idx
=
0
;
idx
<
10
;
idx
++
)
printf
(
"dumping raw PRACH UL tx subframe (input) %d: s_f[%d] = (%f,%f)
\n
"
,
subframe
,
idx
,
s_re_f_prach
[
0
][
idx
],
s_im_f_prach
[
0
][
idx
]);
// write_output("s_re_f_prach.m","s_re_f_prach_txF", s_re_f_prach,frame_parms->ofdm_symbol_size*12,1,1);
multipath_channel_prach
(
UE2eNB
[
UE_id
][
eNB_id
][
CC_id
],
s_re_f_prach
,
s_im_f_prach
,
r_re0_f_prach
,
r_im0_f_prach
,
frame_parms
->
ofdm_symbol_size
*
frame_parms
->
symbols_per_tti
*
12
,
hold_channel
,
eNB_id
,
UE_id
,
CC_id
,
subframe
&
0x1
,
subframe
);
for
(
int
idx
=
0
;
idx
<
10
;
idx
++
)
printf
(
"dumping raw PRACH UL tx subframe (input) %d: s_f[%d] = (%f,%f)
\n
"
,
subframe
,
idx
,
s_re_f_prach
[
0
][
idx
],
s_im_f_prach
[
0
][
idx
]);
for
(
int
idx
=
829
;
idx
<
839
;
idx
++
)
printf
(
"dumping raw PRACH UL tx subframe (input) %d: s_f[%d] = (%f,%f)
\n
"
,
subframe
,
idx
,
s_re_f_prach
[
0
][
idx
],
s_im_f_prach
[
0
][
idx
]);
for
(
int
idx
=
0
;
idx
<
10
;
idx
++
)
printf
(
"dumping raw PRACH UL tx subframe (output) %d: r_f[%d] = (%f,%f)
\n
"
,
subframe
,
idx
,
r_re0_f_prach
[
0
][
idx
],
r_im0_f_prach
[
0
][
idx
]);
for
(
int
idx
=
829
;
idx
<
839
;
idx
++
)
printf
(
"dumping raw PRACH UL tx subframe (output) %d: r_f[%d] = (%f,%f)
\n
"
,
subframe
,
idx
,
r_re0_f_prach
[
0
][
idx
],
r_im0_f_prach
[
0
][
idx
]);
//write_output("txprachF.m","prach_txF", PHY_vars_UE_g[0][0]->prach_vars[0]->prachF,frame_parms->ofdm_symbol_size*frame_parms->symbols_per_tti,1,1);
rx_pwr
=
signal_energy_fp2
(
UE2eNB
[
UE_id
][
eNB_id
][
CC_id
]
->
chF
[
0
],(
12
*
frame_parms
->
N_RB_DL
+
1
))
*
(
12
*
frame_parms
->
N_RB_DL
+
1
);
LOG_D
(
OCM
,
"[SIM][UL] subframe %d Channel UE %d => eNB %d : %f dB (hold %d,length %d, PL %f)
\n
"
,
subframe
,
UE_id
,
eNB_id
,
10
*
log10
(
rx_pwr
),
...
...
@@ -1190,6 +1194,7 @@ void do_UL_prach(channel_desc_t *UE2eNB[NUMBER_OF_UE_MAX][NUMBER_OF_eNB_MAX][MAX
1e3
/
UE2eNB
[
0
][
eNB_id
][
CC_id
]
->
sampling_rate
,
// sampling time (ns)
(
double
)
PHY_vars_eNB_g
[
eNB_id
][
CC_id
]
->
rx_total_gain_dB
-
66
.
227
);
// rx_gain (dB) (66.227 = 20*log10(pow2(11)) = gain from the adc that will be applied later)
#ifdef DEBUG_SIM
rx_pwr
=
signal_energy_fp
(
r_re_p_f_prach
,
r_im_p_f_prach
,
nb_antennas_rx
,
frame_parms
->
ofdm_symbol_size
*
frame_parms
->
symbols_per_tti
*
12
,
0
)
*
(
double
)
frame_parms
->
ofdm_symbol_size
/
(
12
.
0
*
frame_parms
->
N_RB_DL
);
...
...
@@ -1197,16 +1202,16 @@ void do_UL_prach(channel_desc_t *UE2eNB[NUMBER_OF_UE_MAX][NUMBER_OF_eNB_MAX][MAX
#endif
rx_prachF
=
PHY_vars_eNB_g
[
eNB_id
][
CC_id
]
->
prach_vars
.
prachF
;
sf_offset
=
subframe
*
frame_parms
->
ofdm_symbol_size
*
frame_parms
->
symbols_per_tti
*
12
;
//
sf_offset = subframe*frame_parms->ofdm_symbol_size*frame_parms->symbols_per_tti*12;
adc_prach
(
r_re_p_f_prach
,
r_im_p_f_prach
,
0
,
sf_offset
,
0
,
(
unsigned
int
*
)
rx_prachF
,
nb_antennas_rx
,
subframe
*
frame_parms
->
ofdm_symbol_size
*
frame_parms
->
symbols_per_tti
*
12
,
(
prach_fmt
<
4
)
?
839
:
139
,
12
);
write_output
(
"rxprachF.m"
,
"prach_rxF"
,
PHY_vars_eNB_g
[
eNB_id
][
CC_id
]
->
prach_vars
.
prachF
,
12
*
frame_parms
->
ofdm_symbol_size
*
frame_parms
->
symbols_per_tti
,
1
,
16
);
write_output
(
"rxprachF.m"
,
"prach_rxF"
,
PHY_vars_eNB_g
[
eNB_id
][
CC_id
]
->
prach_vars
.
prachF
,
4
*
frame_parms
->
ofdm_symbol_size
*
frame_parms
->
symbols_per_tti
,
1
,
16
);
#ifdef DEBUG_SIM
//rx_pwr2 = signal_energy(rxdataF[0]+sf_offset,subframe*frame_parms->ofdm_symbol_size*frame_parms->symbols_per_tti)*(double)frame_parms->ofdm_symbol_size/(12.0*frame_parms->N_RB_DL);
...
...
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