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
8f758785
Commit
8f758785
authored
8 years ago
by
gabrielC
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Correction for dlsch dual buffer
parent
666ae5d0
develop
1
128-ues
256_QAM_demod
2cw_fairRRscd
340-fix-beamforming-for-multiple-antenna
375-syrtem-sdr-platform
383-ulsch-scheduler-optimization
387-fraunhofer-iis-transmission-mode-4
401-bug-related-to-nr-pucch-format-2-generator
408-reworked
408-ue-main-threads
445-LDPC-implementation-on-GPU
459-pusch-based-ta-updates
464-ru_beamforming_in_gpu
464-ru_beamforming_in_gpu-CPUsubfunction
472-add-pusch-dmrs-modes
481-ldpc-decoder-on-gpu
5g_fapi_scf
LTE-sidelink
LTE_TRX_on_single_port
NCTU_CS_ISIP
NCTU_CS_ISIP_CPU
NCTU_CS_ISIP_GPU
NCTU_OpinConnect_LDPC
NR-PHY-MAC-IF-multi-UE
NR_10MHz
NR_CSI_reporting
NR_DCI_01
NR_DL_sched_fixes
NR_DL_scheduler
NR_FAPI_beamindex_SSB_RO
NR_FR2_RA
NR_FR2_RRC_SSB
NR_MAC_CE_GlobalEdge
NR_MAC_Multi_Rach_GlobalEdge
NR_MAC_SSB_RO_GlobalEdge
NR_MAC_SSB_RO_UE_IDCC
NR_MAC_SSB_RO_merge
NR_MAC_TCI_UCI_GlobalEdge
NR_NGAP
NR_PDCP_noS1
NR_PUCCH_MultiUE
NR_RA_updates
NR_RRCConfiguragion_FR2
NR_RRCConfiguration
NR_RRCConfiguration_FR2
NR_RRCConfiguration_S1U
NR_RRCConfiguration_merge_develop
NR_RRCConfiguration_sync_source
NR_RRCConfiguration_trx_thread
NR_RRC_CP_bugfix
NR_RRC_PDCP
NR_RRC_PRACH_procedures
NR_RRC_PRACH_procedures_todevelop
NR_RRC_PUSCH
NR_RRC_TA
NR_RRC_X2AP_AMBR_Change_Global_edge
NR_RRC_X2AP_RemoveHardcodings_GlobalEdge
NR_RRC_config_simplified
NR_RRC_harq
NR_RRC_harq_b
NR_RRC_harq_hacks
NR_RRC_harq_newdcipdu
NR_SA_NGAP_RRC
NR_SA_NGAP_RRC_wk42
NR_SA_itti_sim_wk48
NR_SCHED
NR_SRB_Config
NR_TRX_on_single_port
NR_TRX_on_single_port2
NR_UE_MAC_scheduler
NR_UE_RA_fixes
NR_UE_UL_DCI_improvements
NR_UE_enable_parallelization
NR_UE_stability_fixes
NR_UL_FAPI_programming
NR_UL_scheduler
NR_UL_scheduler_rebased
NR_UL_scheduling
NR_beamforming_test
NR_gNB_SCF_Indication
NR_ipaccess_testing
NR_mac_uci_functions_rework
NR_msg2_phytest
NR_scheduling_CSIRS
NR_scheduling_request
NR_test_S1U_RRC_PRACH_procedures
NR_ue_dlsch_dmrs_cdm
New-Merge-sidelink-develop
OpInConnect_ISIP
PUSCH_TA_update
PerfumeOldTdd
RA_CI_test
UE_DL_DCI_hotfix
UpdateRANRemoteUEReport
add_iris_hw
addoptions_nr_USRPdevice
bch-fixes-bitmap
benetel_5g_prach_fix
benetel_phase_rotation
benetel_phase_rotation_old
block_mmse_receiver_with_whitenning
bugfix-find-uci
bugfix-minor-remove-wrong-log
bugfix-nr-bands
bugfix-nr-ldpc-post-processing
bugfix-nr-ldpc-size-typo
bugfix-nr-pdcp-sn-size
bugfix-nr-rate-matching-assertion
cce_indexing_fix
cce_indexing_fix2
ci-deploy-docker-compose
ci-rd-july-improvements
ci-ul-iperf-from-trf-container
ci-yacine
clean-5G-scope-round2
cleanup_softmodem_main
constant_power
debug_branch_init_sync
develop-FeMBMS
develop-aarch64build
develop-ci
develop-ci-fju
develop-large-scale-emulations
develop-m2ap
develop-multi-RRUs
develop-nb-iot
develop-nb-iot-RRC
develop-nb-iot-merge
develop-nb-iot-merge-w-conflicts
develop-nb-iot-ntust
develop-nr
develop-nr-adding-2018-09-asn1
develop-nr-fr2
develop-nr-fr2-rework
develop-nr_cppcheck
develop-oriecpriupdates
develop-sib1
develop-sidekiq
develop-vco3
develop_ci
develop_inria_ci_deployment
develop_inria_ci_deployment_gp
develop_inria_ci_deployment_gp_b4merge
develop_integration_2019_w44
develop_integration_2020_w15
develop_integration_2020_w19
develop_integration_w08
develop_jenkins_replay
dfts_alternatives
dlsch-all-dlslots
dlsch_encode_mthread
dlsch_parallel
dlsim-autotests
documentation
docupdate_tools
dongzhanyi-zte-0001
dongzhanyi-zte-develop
dongzhanyi-zte-develop2
dreibh/apt-auth-fix
dreibh/device-load-fix
dreibh/device-load-fix-develop-branch
dreibh/doxygen-fix
dual-connectivity
dummy
edrx
extend_sharedlibusage
extend_sharedlibusage2
fapi_for_dmrs_and_ptrs
feat-mac-sock
feature-230-tm3_scheduler
feature-247-tm89
feature-247-tm89-fixes
feature-247-tm89-rebased
feature-278-physical-layer-GPU-version
feature-309-phy_procedures_eNB_TX_split_to_multi_threading
feature-368-channel-simulator
feature-4g-sched
feature-68-enb-agent
feature-flexran-cm-s1ap
feature-nr-4g-nfapi-modifications
feature-pdcp-task
feature-send-rrc-message-for-wireshark-logging
feature-support-clang-format
feature/make-s1-mme-port-configurable
feature/make-s1-mme-port-configurable-with-astyle-fixes
feature_tm3
fembms-enb-ue
finalize-oaicn-integration
firas
fix-ci-tun
fix-clock-source
fix-dirty-ue-same-machine
fix-itti
fix-itti-segv
fix-l2-sim
fix-limeSDR-compile
fix-segfault-flexran-isolated
fix-softmodem-restart
fix-warnings
fix_do_ra_data
fix_pdsch_low_prb
fix_rfsim_mimo
fix_rrc_x2_ticking
fixes-mac-sched-nfapi
fixes-mac-sched-tun
fixes-tun
flexran-apps
flexran-improvements
flexran-repair-mme-mgmt
flexran-report-split
fr2-hw-test
fujitsu_lte_contribution
fujitsu_lte_contribution-128
gNB-nrUE-USRP
gNB_mwc18_integration
generate_push_ptrs
harq-hotfix
hotfix-minor-remove-nr-rlc-cppcheck-error
hotfix-nr-rlc-tick
hotfix-ocp-executable
hotfix-ue-musim-compilation
hotfix_usrp_lib
improve_build_nr_lte_merge
improve_nr_modulation
improve_ue_stability
initial-nfapi-PNF-fixes
integration-develop-nr-2019w45
integration_2020_wk40
integration_2020_wk41
integration_2020_wk42_2
integration_2020_wk45
integration_2020_wk45_2
integration_2020_wk46
integration_2020_wk46_2
integration_2020_wk47
integration_2020_wk48
integration_2020_wk48_2
integration_2020_wk49
integration_2020_wk50
integration_2020_wk50_1
inter-RRU
inter-RRU-final
inter-RRU-nr
inter-RRU-oairu
inter-rru-UE
interoperability-test
isip-turbo-decoder-dynamic
isip-turbo-decoder-parallel
isip_nr
issue271_simulator
issue392-simplify-s1-nos1step2_01
issue416_nfapicleanup
issue_345_l2_fapi_simulator
l2-fixes
large_scale_simulations
ldpc-dec-layering
ldpc-decoder-codegen
ldpc-decoder-codegen2
ldpc-decoder-improvements
ldpc-offload
ldpc_short_codeword_fixes
load_gnb
lte-m-ue_type
lte_uplink_improvement
mac-fixes-wk45_2
mac-monitoring
main_python
master
mbms-fix-develop-nr
merging-2019-w51-to-develop-nr
mex_mmse_receiver
mobipass-hack
modify_fairRRscd_parallel
mosaic5g-oai-ran
mosaic5g-oai-sim
mu_allocate
multi-L1
multi-RRUs
new_nos1
new_pdcp
new_rlc
new_rlc_2020
new_rlc_in_mbms
nfapi-L2-emulator
nfapi-bugfix
nfapi_improvement
nfapi_nr_develop
ngap-dlul
ngap-support
ngap-w48-merge2
ngap-wf
ngap-wf-1120
ngap-wf-1120-srb
ngap-wf-1120-srb-gtp
ngap-wf-1120-srb-gtp-hs
ngap-wf-1120-srb-gtp-hs1
ngap-wf-1120-srb-gtp-hs2
ngap-wf-1203-yunsdr
ngap-wf-liuyu
ngap_lfq_1120
ngap_merge
noCore
nr-coreset-bug-fix
nr-dlsch-multi-thread
nr-dlsch-thread
nr-dual-connectivity
nr-interdigital-test
nr-ip-uplink-noS1
nr-mac-pdu-wireshark
nr-mac-remove-ue-list
nr-multiple-ssb
nr-pdcp
nr-pdsch-extraction-bugfix
nr-physim-update
nr-rlc-am-bugfix-w44
nr-rlc-bugfix-w44
nr-ssb-measurements
nr-timing-measurement
nr-timing-measurement-merge
nr-ue-buffer-status
nr-ue-slot-based
nr-uldci
nrUE
nrUE-hs
nrUE-upper-layer
nr_beamforming
nr_bsr
nr_ci_dlsim
nr_csi_newbranch
nr_dci_procedures
nr_demo_wsa2019
nr_dl_dmrs_type2
nr_dl_pf
nr_dl_pf2
nr_dl_ul_ptrs
nr_dlsch_parallel_measurements
nr_dlsim_plot
nr_fapi_for_push_tmp
nr_fdd_if_fix
nr_fix_easycppcheck
nr_flexible_NRBDL
nr_improve_build_procedures
nr_increase_tp
nr_mib_vsa_test
nr_pdcch_testing
nr_pdcch_updates
nr_pdsch_integration
nr_polar_decoder_improvement
nr_prach
nr_prach_fr2
nr_pucch
nr_pucch2
nr_segmentation_fixes
nr_sim_fix
nr_tdd_configuration
nr_ue_msg3
nr_ue_tti_cleanup
nr_vcd
nrue-multi-thread
nrue_msg2_reception
nsa-ue
nsa_remove_band_hardcodings
oai-sim
oai-ubuntu-docker
oai-ubuntu-docker-for-lmssdr
oai_ue_mwc18_integration
oairu
oc-docker-october-improvements
ocp_simulator
openxg/develop
pdcp-benchmark
pdsch-ch-est
polar8
preprocessor_refactor-2
ptrs_rrc_config
pucchsim-multiue
pusch-mthread-scaling-fix
ra-dl-ul
rau_rru_reciprocity_measurements
recode_itti_from_scratch
reduce_memory_footprint
release_v1_2_0_candidate
remove-ci-workaround
remove_nos1_hack_pdcp
remove_x2_gnb_hardcoding
repair-TA
revert-f5c94279
revert-itti
revert_memcpy
rh_ci_fix_autoterminate
rh_ci_fr1_update
rh_ci_oc
rh_ci_py
rh_ci_rfsim_ra
rh_doc_update_3
rh_fr1_newjenkins
rh_fr1_update
rh_gnb_compile_fix
rh_wk50_debug
rhel77-build
rlc-v2-bugfix-status-reporting
rlc-v2-tick
rlc_v2_coverity_fixes
rrc-enb-phy-testmode
rru-txwrite-modification
ru-parallel-beamforming
ru_rau_enhancement
ru_rau_enhancement-external-timing
runel
runel-reverse-test
s1_subnormal
s1ap-bugfix-rab_setup
schedule-si-fix
signal-delay
small-bugfixes-w40
smallcleanup
softmodem_cleanup
split73
tcri
test-x310-perf
testing_2symb_pdcch
testing_with_external_txdata
thread-pool
tools_5Gadapt
tp-ota-test
trx_thread_param
trx_write_thread
ue-csi
ue-fixes-ota
ue-updates-runel-test
ue_adjust_gain
ue_dlsch-multi-threading
ue_dlsch_decoding_ldpc_offload
ue_nfapi_mch
ues_test_tmp
uhd_priority_set_cleanup
ul_dl_dci_same_slot
ul_harq
ulsch_decode_mthread
ulsim_changes
update-to-2019-march-june-release
usrp_fix_adc_shift_and_pps_sync
usrp_gpio_test
workaround-rebased
workaround-restart-not-working
x2-endc-processing
x2-ho
x2-ka-test
x2_neighbor_6cells
x2_tdd
yihongzheng_srb
zzs
No related merge requests found
Changes
13
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
376 additions
and
337 deletions
+376
-337
openair1/PHY/LTE_TRANSPORT/dci_tools.c
openair1/PHY/LTE_TRANSPORT/dci_tools.c
+2
-2
openair1/PHY/LTE_TRANSPORT/dlsch_decoding.c
openair1/PHY/LTE_TRANSPORT/dlsch_decoding.c
+7
-7
openair1/PHY/LTE_TRANSPORT/dlsch_demodulation.c
openair1/PHY/LTE_TRANSPORT/dlsch_demodulation.c
+2
-1
openair1/PHY/TOOLS/lte_phy_scope.c
openair1/PHY/TOOLS/lte_phy_scope.c
+8
-8
openair1/PHY/TOOLS/lte_phy_scope_tm4.c
openair1/PHY/TOOLS/lte_phy_scope_tm4.c
+14
-14
openair1/SCHED/defs.h
openair1/SCHED/defs.h
+6
-0
openair1/SCHED/phy_procedures_lte_common.c
openair1/SCHED/phy_procedures_lte_common.c
+38
-7
openair1/SCHED/phy_procedures_lte_ue.c
openair1/SCHED/phy_procedures_lte_ue.c
+54
-54
openair1/SCHED/pucch_pc.c
openair1/SCHED/pucch_pc.c
+6
-5
openair1/SIMULATION/LTE_PHY/dlsim.c
openair1/SIMULATION/LTE_PHY/dlsim.c
+19
-19
openair1/SIMULATION/LTE_PHY/dlsim_tm4.c
openair1/SIMULATION/LTE_PHY/dlsim_tm4.c
+162
-162
openair1/SIMULATION/LTE_PHY/dlsim_tm7.c
openair1/SIMULATION/LTE_PHY/dlsim_tm7.c
+54
-54
openair1/SIMULATION/LTE_PHY/ulsim.c
openair1/SIMULATION/LTE_PHY/ulsim.c
+4
-4
No files found.
openair1/PHY/LTE_TRANSPORT/dci_tools.c
View file @
8f758785
...
...
@@ -7209,7 +7209,7 @@ int generate_ue_ulsch_params_from_dci(void *dci_pdu,
uint8_t
transmission_mode
=
ue
->
transmission_mode
[
eNB_id
];
ANFBmode_t
AckNackFBMode
;
LTE_UE_ULSCH_t
*
ulsch
=
ue
->
ulsch
[
eNB_id
];
LTE_UE_DLSCH_t
**
dlsch
=
ue
->
dlsch
[
subframe
&
0x1
][
0
];
LTE_UE_DLSCH_t
**
dlsch
=
ue
->
dlsch
[
subframe
_DL
(
&
ue
->
frame_parms
,
subframe
)
&
0x1
][
0
];
PHY_MEASUREMENTS
*
meas
=
&
ue
->
measurements
;
LTE_DL_FRAME_PARMS
*
frame_parms
=
&
ue
->
frame_parms
;
// uint32_t current_dlsch_cqi = ue->current_dlsch_cqi[eNB_id];
...
...
@@ -8015,7 +8015,7 @@ int generate_ue_ulsch_params_from_dci(void *dci_pdu,
if
(
frame_parms
->
frame_type
==
FDD
)
{
int
dl_subframe
=
(
subframe
<
4
)
?
(
subframe
+
6
)
:
(
subframe
-
4
);
if
(
ue
->
dlsch
[
dl_subframe
&
0x1
][
eNB_id
][
0
]
->
harq_ack
[
dl_subframe
].
send_harq_status
>
0
)
{
// we have downlink transmission
if
(
ue
->
dlsch
[
subframe_DL
(
&
ue
->
frame_parms
,
dl_subframe
)
&
0x1
][
eNB_id
][
0
]
->
harq_ack
[
dl_subframe
].
send_harq_status
>
0
)
{
// we have downlink transmission
ulsch
->
harq_processes
[
harq_pid
]
->
O_ACK
=
1
;
}
else
{
ulsch
->
harq_processes
[
harq_pid
]
->
O_ACK
=
0
;
...
...
This diff is collapsed.
Click to expand it.
openair1/PHY/LTE_TRANSPORT/dlsch_decoding.c
View file @
8f758785
...
...
@@ -641,8 +641,8 @@ uint32_t dlsch_decoding(PHY_VARS_UE *phy_vars_ue,
frame_rx_prev
=
frame_rx_prev
%
1024
;
if
(
err_flag
==
1
)
{
LOG_D
(
PHY
,
"[UE %d] DLSCH: Setting NAK for SFN/SF %d/%d (pid %d, round %d,
subframe
%d)
\n
"
,
phy_vars_ue
->
Mod_id
,
frame
_rx_prev
,
subframe_rx_prev
,
harq_pid
,
harq_process
->
round
,
subframe
);
LOG_D
(
PHY
,
"[UE %d] DLSCH: Setting NAK for SFN/SF %d/%d (pid %d, round %d,
TBS %d, mcs
%d)
\n
"
,
phy_vars_ue
->
Mod_id
,
frame
,
subframe
,
harq_pid
,
harq_process
->
round
,
harq_process
->
TBS
,
harq_process
->
mcs
);
dlsch
->
harq_ack
[
subframe
].
ack
=
0
;
dlsch
->
harq_ack
[
subframe
].
harq_id
=
harq_pid
;
...
...
@@ -670,8 +670,8 @@ uint32_t dlsch_decoding(PHY_VARS_UE *phy_vars_ue,
dlsch
->
harq_ack
[
subframe
].
ack
=
1
;
dlsch
->
harq_ack
[
subframe
].
harq_id
=
harq_pid
;
dlsch
->
harq_ack
[
subframe
].
send_harq_status
=
1
;
LOG_D
(
PHY
,
"[UE %d] DLSCH: Setting ACK for SFN/SF %d/%d (pid %d, pid status %d, round %d,
subframe
%d)
\n
"
,
phy_vars_ue
->
Mod_id
,
frame
_rx_prev
,
subframe_rx_prev
,
harq_pid
,
harq_process
->
status
,
harq_process
->
round
,
subframe
);
LOG_D
(
PHY
,
"[UE %d] DLSCH: Setting ACK for SFN/SF %d/%d (pid %d, pid status %d, round %d,
, TBS %d, mcs
%d)
\n
"
,
phy_vars_ue
->
Mod_id
,
frame
,
subframe
,
harq_pid
,
harq_process
->
status
,
harq_process
->
round
,
harq_process
->
TBS
,
harq_process
->
mcs
);
if
(
is_crnti
)
{
...
...
@@ -926,7 +926,7 @@ uint32_t dlsch_decoding_emul(PHY_VARS_UE *phy_vars_ue,
break
;
case
PDSCH
:
// TB0
dlsch_ue
=
phy_vars_ue
->
dlsch
[
subframe
&
0x1
][
eNB_id
][
0
];
dlsch_ue
=
phy_vars_ue
->
dlsch
[
subframe
_DL
(
&
phy_vars_ue
->
frame_parms
,
subframe
)
&
0x1
][
eNB_id
][
0
];
harq_pid
=
dlsch_ue
->
current_harq_pid
;
ue_id
=
(
uint32_t
)
find_ue
((
int16_t
)
phy_vars_ue
->
pdcch_vars
[
subframe
&
0x1
][(
uint32_t
)
eNB_id
]
->
crnti
,
PHY_vars_eNB_g
[
eNB_id2
][
CC_id
]);
DevAssert
(
ue_id
!=
(
uint32_t
)
-
1
);
...
...
@@ -972,7 +972,7 @@ uint32_t dlsch_decoding_emul(PHY_VARS_UE *phy_vars_ue,
break
;
case
PDSCH1
:
{
// TB1
dlsch_ue
=
phy_vars_ue
->
dlsch
[
subframe
&
0x1
][
eNB_id
][
1
];
dlsch_ue
=
phy_vars_ue
->
dlsch
[
subframe
_DL
(
&
phy_vars_ue
->
frame_parms
,
subframe
)
&
0x1
][
eNB_id
][
1
];
harq_pid
=
dlsch_ue
->
current_harq_pid
;
int8_t
UE_id
=
find_ue
(
phy_vars_ue
->
pdcch_vars
[
subframe
&
0x1
][
eNB_id
]
->
crnti
,
PHY_vars_eNB_g
[
eNB_id2
][
CC_id
]
);
DevAssert
(
UE_id
!=
-
1
);
...
...
@@ -1026,7 +1026,7 @@ uint32_t dlsch_decoding_emul(PHY_VARS_UE *phy_vars_ue,
break
;
default:
dlsch_ue
=
phy_vars_ue
->
dlsch
[
subframe
&
0x1
][
eNB_id
][
0
];
dlsch_ue
=
phy_vars_ue
->
dlsch
[
subframe
_DL
(
&
phy_vars_ue
->
frame_parms
,
subframe
)
&
0x1
][
eNB_id
][
0
];
LOG_E
(
PHY
,
"dlsch_decoding_emul: FATAL, unknown DLSCH_id %d
\n
"
,
dlsch_id
);
dlsch_ue
->
last_iteration_cnt
=
1
+
dlsch_ue
->
max_turbo_iterations
;
return
(
1
+
dlsch_ue
->
max_turbo_iterations
);
...
...
This diff is collapsed.
Click to expand it.
openair1/PHY/LTE_TRANSPORT/dlsch_demodulation.c
View file @
8f758785
...
...
@@ -31,6 +31,7 @@
*/
//#include "PHY/defs.h"
#include "PHY/extern.h"
#include "SCHED/defs.h"
#include "defs.h"
#include "extern.h"
#include "PHY/sse_intrin.h"
...
...
@@ -145,7 +146,7 @@ int rx_pdsch(PHY_VARS_UE *ue,
case
PDSCH
:
pdsch_vars
=
ue
->
pdsch_vars
[
subframe
&
0x1
];
dlsch
=
ue
->
dlsch
[
subframe
&
0x1
][
eNB_id
];
dlsch
=
ue
->
dlsch
[
subframe
_DL
(
&
ue
->
frame_parms
,
subframe
)
&
0x1
][
eNB_id
];
LOG_D
(
PHY
,
"AbsSubframe %d.%d / Sym %d harq_pid %d, harq status %d.%d
\n
"
,
frame
,
subframe
,
symbol
,
harq_pid
,
dlsch
[
0
]
->
harq_processes
[
harq_pid
]
->
status
,
...
...
This diff is collapsed.
Click to expand it.
openair1/PHY/TOOLS/lte_phy_scope.c
View file @
8f758785
...
...
@@ -514,16 +514,16 @@ void phy_scope_UE(FD_lte_phy_scope_ue *form,
int
beamforming_mode
=
phy_vars_ue
->
transmission_mode
[
eNB_id
]
>
6
?
phy_vars_ue
->
transmission_mode
[
eNB_id
]
:
0
;
if
(
phy_vars_ue
->
dlsch
[
subframe
&
0x1
][
eNB_id
][
0
]
!=
NULL
)
{
harq_pid
=
phy_vars_ue
->
dlsch
[
subframe
&
0x1
][
eNB_id
][
0
]
->
current_harq_pid
;
if
(
phy_vars_ue
->
dlsch
[
subframe
_DL
(
&
phy_vars_ue
->
frame_parms
,
subframe
)
&
0x1
][
eNB_id
][
0
]
!=
NULL
)
{
harq_pid
=
phy_vars_ue
->
dlsch
[
subframe
_DL
(
&
phy_vars_ue
->
frame_parms
,
subframe
)
&
0x1
][
eNB_id
][
0
]
->
current_harq_pid
;
if
(
harq_pid
>=
8
)
return
;
mcs
=
phy_vars_ue
->
dlsch
[
subframe
&
0x1
][
eNB_id
][
0
]
->
harq_processes
[
harq_pid
]
->
mcs
;
mcs
=
phy_vars_ue
->
dlsch
[
subframe
_DL
(
&
phy_vars_ue
->
frame_parms
,
subframe
)
&
0x1
][
eNB_id
][
0
]
->
harq_processes
[
harq_pid
]
->
mcs
;
// Button 0
if
(
!
phy_vars_ue
->
dlsch
[
subframe
&
0x1
][
eNB_id
][
0
]
->
harq_processes
[
harq_pid
]
->
dl_power_off
)
{
if
(
!
phy_vars_ue
->
dlsch
[
subframe
_DL
(
&
phy_vars_ue
->
frame_parms
,
subframe
)
&
0x1
][
eNB_id
][
0
]
->
harq_processes
[
harq_pid
]
->
dl_power_off
)
{
// we are in TM5
fl_show_object
(
form
->
button_0
);
}
...
...
@@ -534,12 +534,12 @@ void phy_scope_UE(FD_lte_phy_scope_ue *form,
}
// coded_bits_per_codeword = frame_parms->N_RB_DL*12*get_Qm(mcs)*(frame_parms->symbols_per_tti);
if
(
phy_vars_ue
->
dlsch
[
subframe
&
0x1
][
eNB_id
][
0
]
!=
NULL
)
{
if
(
phy_vars_ue
->
dlsch
[
subframe
_DL
(
&
phy_vars_ue
->
frame_parms
,
subframe
)
&
0x1
][
eNB_id
][
0
]
!=
NULL
)
{
coded_bits_per_codeword
=
get_G
(
frame_parms
,
phy_vars_ue
->
dlsch
[
subframe
&
0x1
][
eNB_id
][
0
]
->
harq_processes
[
harq_pid
]
->
nb_rb
,
phy_vars_ue
->
dlsch
[
subframe
&
0x1
][
eNB_id
][
0
]
->
harq_processes
[
harq_pid
]
->
rb_alloc_even
,
phy_vars_ue
->
dlsch
[
subframe
_DL
(
&
phy_vars_ue
->
frame_parms
,
subframe
)
&
0x1
][
eNB_id
][
0
]
->
harq_processes
[
harq_pid
]
->
nb_rb
,
phy_vars_ue
->
dlsch
[
subframe
_DL
(
&
phy_vars_ue
->
frame_parms
,
subframe
)
&
0x1
][
eNB_id
][
0
]
->
harq_processes
[
harq_pid
]
->
rb_alloc_even
,
get_Qm
(
mcs
),
phy_vars_ue
->
dlsch
[
subframe
&
0x1
][
eNB_id
][
0
]
->
harq_processes
[
harq_pid
]
->
Nl
,
phy_vars_ue
->
dlsch
[
subframe
_DL
(
&
phy_vars_ue
->
frame_parms
,
subframe
)
&
0x1
][
eNB_id
][
0
]
->
harq_processes
[
harq_pid
]
->
Nl
,
num_pdcch_symbols
,
frame
,
subframe
,
...
...
This diff is collapsed.
Click to expand it.
openair1/PHY/TOOLS/lte_phy_scope_tm4.c
View file @
8f758785
...
...
@@ -448,11 +448,11 @@ void phy_scope_UE(FD_lte_phy_scope_ue *form,
int
mcs1
=
0
;
unsigned
char
harq_pid
=
0
;
int
beamforming_mode
=
phy_vars_ue
->
transmission_mode
[
eNB_id
]
>
6
?
phy_vars_ue
->
transmission_mode
[
eNB_id
]
:
0
;
if
(
phy_vars_ue
->
dlsch
[
subframe
&
0x1
][
eNB_id
][
0
]
!=
NULL
)
{
harq_pid
=
phy_vars_ue
->
dlsch
[
subframe
&
0x1
][
eNB_id
][
0
]
->
current_harq_pid
;
if
(
phy_vars_ue
->
dlsch
[
subframe
_DL
(
&
phy_vars_ue
->
frame_parms
,
subframe
)
&
0x1
][
eNB_id
][
0
]
!=
NULL
)
{
harq_pid
=
phy_vars_ue
->
dlsch
[
subframe
_DL
(
&
phy_vars_ue
->
frame_parms
,
subframe
)
&
0x1
][
eNB_id
][
0
]
->
current_harq_pid
;
if
(
harq_pid
>=
8
)
return
;
mcs0
=
phy_vars_ue
->
dlsch
[
subframe
&
0x1
][
eNB_id
][
0
]
->
harq_processes
[
harq_pid
]
->
mcs
;
mcs0
=
phy_vars_ue
->
dlsch
[
subframe
_DL
(
&
phy_vars_ue
->
frame_parms
,
subframe
)
&
0x1
][
eNB_id
][
0
]
->
harq_processes
[
harq_pid
]
->
mcs
;
// Button 0
/*
if(!phy_vars_ue->dlsch_ue[eNB_id][0]->harq_processes[harq_pid]->dl_power_off) {
...
...
@@ -461,23 +461,23 @@ void phy_scope_UE(FD_lte_phy_scope_ue *form,
}
*/
}
if
(
phy_vars_ue
->
dlsch
[
subframe
&
0x1
][
eNB_id
][
1
]
!=
NULL
)
{
harq_pid
=
phy_vars_ue
->
dlsch
[
subframe
&
0x1
][
eNB_id
][
1
]
->
current_harq_pid
;
if
(
phy_vars_ue
->
dlsch
[
subframe
_DL
(
&
phy_vars_ue
->
frame_parms
,
subframe
)
&
0x1
][
eNB_id
][
1
]
!=
NULL
)
{
harq_pid
=
phy_vars_ue
->
dlsch
[
subframe
_DL
(
&
phy_vars_ue
->
frame_parms
,
subframe
)
&
0x1
][
eNB_id
][
1
]
->
current_harq_pid
;
if
(
harq_pid
>=
8
)
return
;
mcs1
=
phy_vars_ue
->
dlsch
[
subframe
&
0x1
][
eNB_id
][
1
]
->
harq_processes
[
harq_pid
]
->
mcs
;
mcs1
=
phy_vars_ue
->
dlsch
[
subframe
_DL
(
&
phy_vars_ue
->
frame_parms
,
subframe
)
&
0x1
][
eNB_id
][
1
]
->
harq_processes
[
harq_pid
]
->
mcs
;
}
if
(
phy_vars_ue
->
pdcch_vars
[
subframe
&
0x1
][
eNB_id
]
!=
NULL
)
{
num_pdcch_symbols
=
phy_vars_ue
->
pdcch_vars
[
subframe
&
0x1
][
eNB_id
]
->
num_pdcch_symbols
;
}
// coded_bits_per_codeword = frame_parms->N_RB_DL*12*get_Qm(mcs)*(frame_parms->symbols_per_tti);
if
(
phy_vars_ue
->
dlsch
[
subframe
&
0x1
][
eNB_id
][
0
]
!=
NULL
)
{
if
(
phy_vars_ue
->
dlsch
[
subframe
_DL
(
&
phy_vars_ue
->
frame_parms
,
subframe
)
&
0x1
][
eNB_id
][
0
]
!=
NULL
)
{
mod0
=
get_Qm
(
mcs0
);
coded_bits_per_codeword0
=
get_G
(
frame_parms
,
phy_vars_ue
->
dlsch
[
subframe
&
0x1
][
eNB_id
][
0
]
->
harq_processes
[
harq_pid
]
->
nb_rb
,
phy_vars_ue
->
dlsch
[
subframe
&
0x1
][
eNB_id
][
0
]
->
harq_processes
[
harq_pid
]
->
rb_alloc_even
,
phy_vars_ue
->
dlsch
[
subframe
_DL
(
&
phy_vars_ue
->
frame_parms
,
subframe
)
&
0x1
][
eNB_id
][
0
]
->
harq_processes
[
harq_pid
]
->
nb_rb
,
phy_vars_ue
->
dlsch
[
subframe
_DL
(
&
phy_vars_ue
->
frame_parms
,
subframe
)
&
0x1
][
eNB_id
][
0
]
->
harq_processes
[
harq_pid
]
->
rb_alloc_even
,
get_Qm
(
mcs0
),
phy_vars_ue
->
dlsch
[
subframe
&
0x1
][
eNB_id
][
0
]
->
harq_processes
[
harq_pid
]
->
Nl
,
phy_vars_ue
->
dlsch
[
subframe
_DL
(
&
phy_vars_ue
->
frame_parms
,
subframe
)
&
0x1
][
eNB_id
][
0
]
->
harq_processes
[
harq_pid
]
->
Nl
,
num_pdcch_symbols
,
frame
,
subframe
,
...
...
@@ -486,13 +486,13 @@ void phy_scope_UE(FD_lte_phy_scope_ue *form,
coded_bits_per_codeword0
=
0
;
//frame_parms->N_RB_DL*12*get_Qm(mcs)*(frame_parms->symbols_per_tti);
mod0
=
0
;
}
if
(
phy_vars_ue
->
dlsch
[
subframe
&
0x1
][
eNB_id
][
1
]
!=
NULL
)
{
if
(
phy_vars_ue
->
dlsch
[
subframe
_DL
(
&
phy_vars_ue
->
frame_parms
,
subframe
)
&
0x1
][
eNB_id
][
1
]
!=
NULL
)
{
mod1
=
get_Qm
(
mcs1
);
coded_bits_per_codeword1
=
get_G
(
frame_parms
,
phy_vars_ue
->
dlsch
[
subframe
&
0x1
][
eNB_id
][
1
]
->
harq_processes
[
harq_pid
]
->
nb_rb
,
phy_vars_ue
->
dlsch
[
subframe
&
0x1
][
eNB_id
][
1
]
->
harq_processes
[
harq_pid
]
->
rb_alloc_even
,
phy_vars_ue
->
dlsch
[
subframe
_DL
(
&
phy_vars_ue
->
frame_parms
,
subframe
)
&
0x1
][
eNB_id
][
1
]
->
harq_processes
[
harq_pid
]
->
nb_rb
,
phy_vars_ue
->
dlsch
[
subframe
_DL
(
&
phy_vars_ue
->
frame_parms
,
subframe
)
&
0x1
][
eNB_id
][
1
]
->
harq_processes
[
harq_pid
]
->
rb_alloc_even
,
get_Qm
(
mcs1
),
phy_vars_ue
->
dlsch
[
subframe
&
0x1
][
eNB_id
][
1
]
->
harq_processes
[
harq_pid
]
->
Nl
,
phy_vars_ue
->
dlsch
[
subframe
_DL
(
&
phy_vars_ue
->
frame_parms
,
subframe
)
&
0x1
][
eNB_id
][
1
]
->
harq_processes
[
harq_pid
]
->
Nl
,
num_pdcch_symbols
,
frame
,
subframe
,
...
...
This diff is collapsed.
Click to expand it.
openair1/SCHED/defs.h
View file @
8f758785
...
...
@@ -212,6 +212,12 @@ void prach_procedures(PHY_VARS_eNB *eNB);
lte_subframe_t
subframe_select
(
LTE_DL_FRAME_PARMS
*
frame_parms
,
uint8_t
subframe
);
/*!
* \brief Function that return the DL SFN, used for TDD where the DL is not always 4 SFN before UL
*/
uint8_t
subframe_DL
(
LTE_DL_FRAME_PARMS
*
frame_parms
,
uint8_t
current_sfn
);
/*! \brief Function to compute which type of DCIs to detect in the given subframe
@param frame_parms Pointer to DL frame parameter descriptor
@param subframe Subframe index
...
...
This diff is collapsed.
Click to expand it.
openair1/SCHED/phy_procedures_lte_common.c
View file @
8f758785
...
...
@@ -374,19 +374,19 @@ uint8_t get_reset_ack(LTE_DL_FRAME_PARMS *frame_parms,
}
// report ACK/NACK status
o_ACK
[
0
]
=
1
;
o_ACK
[
cw_idx
]
=
1
;
status
=
0
;
if
((
subframe_dl0
<
10
)
&&
(
harq_ack
[
subframe_dl0
].
send_harq_status
))
{
o_ACK
[
0
]
&=
harq_ack
[
subframe_dl0
].
ack
;
o_ACK
[
cw_idx
]
&=
harq_ack
[
subframe_dl0
].
ack
;
status
=
harq_ack
[
subframe_dl0
].
send_harq_status
;
}
if
((
subframe_dl1
<
10
)
&&
(
harq_ack
[
subframe_dl1
].
send_harq_status
))
{
o_ACK
[
0
]
&=
harq_ack
[
subframe_dl1
].
ack
;
o_ACK
[
cw_idx
]
&=
harq_ack
[
subframe_dl1
].
ack
;
status
=
harq_ack
[
subframe_dl1
].
send_harq_status
;
}
// report status = Nbundled
if
(
!
status
)
{
o_ACK
[
0
]
=
0
;
o_ACK
[
cw_idx
]
=
0
;
}
else
{
if
(
harq_ack
[
subframe_ul
].
vDAI_UL
<
0xff
)
{
status
=
harq_ack
[
subframe_ul
].
vDAI_UL
;
...
...
@@ -399,17 +399,17 @@ uint8_t get_reset_ack(LTE_DL_FRAME_PARMS *frame_parms,
subframe
,
subframe_ul
,
harq_ack
[
subframe_ul
].
vDAI_UL
,
status
,
subframe_dl0
,
harq_ack
[
subframe_dl0
].
ack
,
harq_ack
[
subframe_dl0
].
send_harq_status
,
harq_ack
[
subframe_dl0
].
vDAI_DL
,
subframe_dl1
,
harq_ack
[
subframe_dl1
].
ack
,
harq_ack
[
subframe_dl1
].
send_harq_status
,
harq_ack
[
subframe_dl1
].
vDAI_DL
,
o_ACK
[
0
],
status
);
o_ACK
[
cw_idx
],
status
);
}
else
if
(
subframe_dl0
<
10
)
{
LOG_D
(
PHY
,
"ul-sf#%d vDAI_UL[sf#%d]=%d Nbundled=%d: dlsf#%d ACK=%d status=%d vDAI_DL=%d, o_ACK[0]=%d status=%d
\n
"
,
subframe
,
subframe_ul
,
harq_ack
[
subframe_ul
].
vDAI_UL
,
status
,
subframe_dl0
,
harq_ack
[
subframe_dl0
].
ack
,
harq_ack
[
subframe_dl0
].
send_harq_status
,
harq_ack
[
subframe_dl0
].
vDAI_DL
,
o_ACK
[
0
],
status
);
o_ACK
[
cw_idx
],
status
);
}
else
if
(
subframe_dl1
<
10
)
{
LOG_D
(
PHY
,
"ul-sf#%d vDAI_UL[sf#%d]=%d Nbundled=%d: dlsf#%d ACK=%d status=%d vDAI_DL=%d, o_ACK[0]=%d status=%d
\n
"
,
subframe
,
subframe_ul
,
harq_ack
[
subframe_ul
].
vDAI_UL
,
status
,
subframe_dl1
,
harq_ack
[
subframe_dl1
].
ack
,
harq_ack
[
subframe_dl1
].
send_harq_status
,
harq_ack
[
subframe_dl1
].
vDAI_DL
,
o_ACK
[
0
],
status
);
o_ACK
[
cw_idx
],
status
);
}
}
...
...
@@ -604,6 +604,37 @@ lte_subframe_t subframe_select(LTE_DL_FRAME_PARMS *frame_parms,unsigned char sub
}
}
uint8_t
subframe_DL
(
LTE_DL_FRAME_PARMS
*
frame_parms
,
uint8_t
current_sfn
)
{
// if FDD return dummy value
if
(
frame_parms
->
frame_type
==
FDD
)
return
(
current_sfn
);
switch
(
frame_parms
->
tdd_config
)
{
case
1
:
switch
(
current_sfn
)
{
case
3
:
case
8
:
return
(
current_sfn
-
3
);
break
;
default:
return
(
current_sfn
);
break
;
}
case
3
:
return
(
current_sfn
);
break
;
default:
AssertFatal
(
0
,
"TDD config %d not coded"
,
frame_parms
->
tdd_config
);
}
}
dci_detect_mode_t
dci_detect_mode_select
(
LTE_DL_FRAME_PARMS
*
frame_parms
,
uint8_t
subframe
)
{
dci_detect_mode_t
ret
=
0
;
...
...
This diff is collapsed.
Click to expand it.
openair1/SCHED/phy_procedures_lte_ue.c
View file @
8f758785
This diff is collapsed.
Click to expand it.
openair1/SCHED/pucch_pc.c
View file @
8f758785
...
...
@@ -31,6 +31,7 @@
*/
#include "PHY/defs.h"
#include "SCHED/defs.h"
#include "PHY/LTE_TRANSPORT/proto.h"
#include "PHY/extern.h"
...
...
@@ -51,7 +52,7 @@ int16_t pucch_power_cntl(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t subframe,u
Po_PUCCH
=
get_PL
(
ue
->
Mod_id
,
ue
->
CC_id
,
eNB_id
)
+
ue
->
frame_parms
.
ul_power_control_config_common
.
p0_NominalPUCCH
+
ue
->
dlsch
[
proc
->
subframe_rx
&
0x1
][
eNB_id
][
0
]
->
g_pucch
;
ue
->
dlsch
[
subframe_DL
(
&
ue
->
frame_parms
,
proc
->
subframe_rx
)
&
0x1
][
eNB_id
][
0
]
->
g_pucch
;
switch
(
pucch_fmt
)
{
case
pucch_format1
:
...
...
@@ -90,19 +91,19 @@ int16_t pucch_power_cntl(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t subframe,u
if
(
pucch_fmt
!=
pucch_format1
)
{
LOG_D
(
PHY
,
"[UE %d][PDSCH %x] AbsSubframe %d.%d: Po_PUCCH %d dBm : Po_NOMINAL_PUCCH %d dBm, PL %d dB, g_pucch %d dB
\n
"
,
ue
->
Mod_id
,
ue
->
dlsch
[
proc
->
subframe_rx
&
0x1
][
eNB_id
][
0
]
->
rnti
,
proc
->
frame_tx
%
1024
,
subframe
,
ue
->
dlsch
[
subframe_DL
(
&
ue
->
frame_parms
,
proc
->
subframe_rx
)
&
0x1
][
eNB_id
][
0
]
->
rnti
,
proc
->
frame_tx
%
1024
,
subframe
,
Po_PUCCH
,
ue
->
frame_parms
.
ul_power_control_config_common
.
p0_NominalPUCCH
,
get_PL
(
ue
->
Mod_id
,
ue
->
CC_id
,
eNB_id
),
ue
->
dlsch
[
proc
->
subframe_rx
&
0x1
][
eNB_id
][
0
]
->
g_pucch
);
ue
->
dlsch
[
subframe_DL
(
&
ue
->
frame_parms
,
proc
->
subframe_rx
)
&
0x1
][
eNB_id
][
0
]
->
g_pucch
);
}
else
{
LOG_D
(
PHY
,
"[UE %d][SR %x] AbsSubframe %d.%d: Po_PUCCH %d dBm : Po_NOMINAL_PUCCH %d dBm, PL %d dB g_pucch %d dB
\n
"
,
ue
->
Mod_id
,
ue
->
dlsch
[
proc
->
subframe_rx
&
0x1
][
eNB_id
][
0
]
->
rnti
,
proc
->
frame_tx
%
1024
,
subframe
,
ue
->
dlsch
[
subframe_DL
(
&
ue
->
frame_parms
,
proc
->
subframe_rx
)
&
0x1
][
eNB_id
][
0
]
->
rnti
,
proc
->
frame_tx
%
1024
,
subframe
,
Po_PUCCH
,
ue
->
frame_parms
.
ul_power_control_config_common
.
p0_NominalPUCCH
,
get_PL
(
ue
->
Mod_id
,
ue
->
CC_id
,
eNB_id
),
ue
->
dlsch
[
proc
->
subframe_rx
&
0x1
][
eNB_id
][
0
]
->
g_pucch
);
ue
->
dlsch
[
subframe_DL
(
&
ue
->
frame_parms
,
proc
->
subframe_rx
)
&
0x1
][
eNB_id
][
0
]
->
g_pucch
);
}
return
(
Po_PUCCH
);
...
...
This diff is collapsed.
Click to expand it.
openair1/SIMULATION/LTE_PHY/dlsim.c
View file @
8f758785
...
...
@@ -2105,14 +2105,14 @@ int main(int argc, char **argv)
}
for
(
i
=
0
;
i
<
2
;
i
++
)
{
UE
->
dlsch
[
subframe
&
0x1
][
0
][
i
]
=
new_ue_dlsch
(
Kmimo
,
8
,
Nsoft
,
MAX_TURBO_ITERATIONS
,
N_RB_DL
,
0
);
UE
->
dlsch
[
subframe
_DL
(
&
UE
->
frame_parms
,
subframe
)
&
0x1
][
0
][
i
]
=
new_ue_dlsch
(
Kmimo
,
8
,
Nsoft
,
MAX_TURBO_ITERATIONS
,
N_RB_DL
,
0
);
if
(
!
UE
->
dlsch
[
subframe
&
0x1
][
0
][
i
])
{
if
(
!
UE
->
dlsch
[
subframe
_DL
(
&
UE
->
frame_parms
,
subframe
)
&
0x1
][
0
][
i
])
{
printf
(
"Can't get ue dlsch structures
\n
"
);
exit
(
-
1
);
}
UE
->
dlsch
[
subframe
&
0x1
][
0
][
i
]
->
rnti
=
n_rnti
;
UE
->
dlsch
[
subframe
_DL
(
&
UE
->
frame_parms
,
subframe
)
&
0x1
][
0
][
i
]
->
rnti
=
n_rnti
;
}
UE
->
dlsch_SI
[
0
]
=
new_ue_dlsch
(
1
,
1
,
Nsoft
,
MAX_TURBO_ITERATIONS
,
N_RB_DL
,
0
);
...
...
@@ -2500,7 +2500,7 @@ int main(int argc, char **argv)
if
(
n_frames
==
1
)
printf
(
"Running phy_procedures_UE_RX
\n
"
);
phy_procedures_UE_RX
(
UE
,
proc
,
0
,
0
,
normal_txrx
,
no_relay
,
NULL
);
if
(
UE
->
dlsch
[
subframe
&
0x1
][
0
][
0
]
->
active
==
0
)
{
if
(
UE
->
dlsch
[
subframe
_DL
(
&
UE
->
frame_parms
,
subframe
)
&
0x1
][
0
][
0
]
->
active
==
0
)
{
//printf("DCI not received\n");
dci_errors
[
round
]
++
;
UE
->
dlsch_errors
[
0
]
=
1
;
...
...
@@ -2558,7 +2558,7 @@ int main(int argc, char **argv)
//pdsch_vars
dump_dlsch2
(
UE
,
eNB_id
,
subframe
,
&
coded_bits_per_codeword
,
round
,
UE
->
dlsch
[
subframe
&
0x1
][
0
][
0
]
->
current_harq_pid
);
dump_dlsch2
(
UE
,
eNB_id
,
subframe
,
&
coded_bits_per_codeword
,
round
,
UE
->
dlsch
[
subframe
_DL
(
&
UE
->
frame_parms
,
subframe
)
&
0x1
][
0
][
0
]
->
current_harq_pid
);
write_output
(
"dlsch_e.m"
,
"e"
,
eNB
->
dlsch
[
0
][
0
]
->
harq_processes
[
0
]
->
e
,
coded_bits_per_codeword
,
1
,
4
);
...
...
@@ -2576,13 +2576,13 @@ int main(int argc, char **argv)
if
(
UE
->
dlsch_errors
[
0
]
==
0
)
{
avg_iter
+=
UE
->
dlsch
[
subframe
&
0x1
][
eNB_id
][
0
]
->
last_iteration_cnt
;
avg_iter
+=
UE
->
dlsch
[
subframe
_DL
(
&
UE
->
frame_parms
,
subframe
)
&
0x1
][
eNB_id
][
0
]
->
last_iteration_cnt
;
iter_trials
++
;
if
(
n_frames
==
1
)
printf
(
"No DLSCH errors found (round %d),uncoded ber %f
\n
"
,
round
,
uncoded_ber
);
UE
->
total_TBS
[
eNB_id
]
=
UE
->
total_TBS
[
eNB_id
]
+
UE
->
dlsch
[
subframe
&
0x1
][
eNB_id
][
0
]
->
harq_processes
[
UE
->
dlsch
[
subframe
&
0x1
][
eNB_id
][
0
]
->
current_harq_pid
]
->
TBS
;
UE
->
total_TBS
[
eNB_id
]
=
UE
->
total_TBS
[
eNB_id
]
+
UE
->
dlsch
[
subframe
_DL
(
&
UE
->
frame_parms
,
subframe
)
&
0x1
][
eNB_id
][
0
]
->
harq_processes
[
UE
->
dlsch
[
subframe_DL
(
&
UE
->
frame_parms
,
subframe
)
&
0x1
][
eNB_id
][
0
]
->
current_harq_pid
]
->
TBS
;
TB0_active
=
0
;
...
...
@@ -2590,25 +2590,25 @@ int main(int argc, char **argv)
else
{
errs
[
round
]
++
;
avg_iter
+=
UE
->
dlsch
[
subframe
&
0x1
][
eNB_id
][
0
]
->
last_iteration_cnt
-
1
;
avg_iter
+=
UE
->
dlsch
[
subframe
_DL
(
&
UE
->
frame_parms
,
subframe
)
&
0x1
][
eNB_id
][
0
]
->
last_iteration_cnt
-
1
;
iter_trials
++
;
if
(
n_frames
==
1
)
{
//if ((n_frames==1) || (SNR>=30)) {
printf
(
"DLSCH errors found (round %d), uncoded ber %f
\n
"
,
round
,
uncoded_ber
);
for
(
s
=
0
;
s
<
UE
->
dlsch
[
subframe
&
0x1
][
0
][
0
]
->
harq_processes
[
0
]
->
C
;
s
++
)
{
if
(
s
<
UE
->
dlsch
[
subframe
&
0x1
][
0
][
0
]
->
harq_processes
[
0
]
->
Cminus
)
Kr
=
UE
->
dlsch
[
subframe
&
0x1
][
0
][
0
]
->
harq_processes
[
0
]
->
Kminus
;
for
(
s
=
0
;
s
<
UE
->
dlsch
[
subframe
_DL
(
&
UE
->
frame_parms
,
subframe
)
&
0x1
][
0
][
0
]
->
harq_processes
[
0
]
->
C
;
s
++
)
{
if
(
s
<
UE
->
dlsch
[
subframe
_DL
(
&
UE
->
frame_parms
,
subframe
)
&
0x1
][
0
][
0
]
->
harq_processes
[
0
]
->
Cminus
)
Kr
=
UE
->
dlsch
[
subframe
_DL
(
&
UE
->
frame_parms
,
subframe
)
&
0x1
][
0
][
0
]
->
harq_processes
[
0
]
->
Kminus
;
else
Kr
=
UE
->
dlsch
[
subframe
&
0x1
][
0
][
0
]
->
harq_processes
[
0
]
->
Kplus
;
Kr
=
UE
->
dlsch
[
subframe
_DL
(
&
UE
->
frame_parms
,
subframe
)
&
0x1
][
0
][
0
]
->
harq_processes
[
0
]
->
Kplus
;
Kr_bytes
=
Kr
>>
3
;
printf
(
"Decoded_output (Segment %d):
\n
"
,
s
);
for
(
i
=
0
;
i
<
Kr_bytes
;
i
++
)
printf
(
"%d : %x (%x)
\n
"
,
i
,
UE
->
dlsch
[
subframe
&
0x1
][
0
][
0
]
->
harq_processes
[
0
]
->
c
[
s
][
i
],
UE
->
dlsch
[
subframe
&
0x1
][
0
][
0
]
->
harq_processes
[
0
]
->
c
[
s
][
i
]
^
eNB
->
dlsch
[
0
][
0
]
->
harq_processes
[
0
]
->
c
[
s
][
i
]);
printf
(
"%d : %x (%x)
\n
"
,
i
,
UE
->
dlsch
[
subframe
_DL
(
&
UE
->
frame_parms
,
subframe
)
&
0x1
][
0
][
0
]
->
harq_processes
[
0
]
->
c
[
s
][
i
],
UE
->
dlsch
[
subframe_DL
(
&
UE
->
frame_parms
,
subframe
)
&
0x1
][
0
][
0
]
->
harq_processes
[
0
]
->
c
[
s
][
i
]
^
eNB
->
dlsch
[
0
][
0
]
->
harq_processes
[
0
]
->
c
[
s
][
i
]);
}
sprintf
(
fname
,
"rxsig0_r%d.m"
,
round
);
...
...
@@ -2659,13 +2659,13 @@ int main(int argc, char **argv)
}
//pdsch_vars
dump_dlsch2
(
UE
,
eNB_id
,
subframe
,
&
coded_bits_per_codeword
,
round
,
UE
->
dlsch
[
subframe
&
0x1
][
0
][
0
]
->
current_harq_pid
);
dump_dlsch2
(
UE
,
eNB_id
,
subframe
,
&
coded_bits_per_codeword
,
round
,
UE
->
dlsch
[
subframe
_DL
(
&
UE
->
frame_parms
,
subframe
)
&
0x1
][
0
][
0
]
->
current_harq_pid
);
//write_output("dlsch_e.m","e",eNB->dlsch[0][0]->harq_processes[0]->e,coded_bits_per_codeword,1,4);
//write_output("dlsch_ber_bit.m","ber_bit",uncoded_ber_bit,coded_bits_per_codeword,1,0);
//write_output("dlsch_w.m","w",eNB->dlsch[0][0]->harq_processes[0]->w[0],3*(tbs+64),1,4);
//write_output("dlsch_w.m","w",UE->dlsch[subframe&0x1][0][0]->harq_processes[0]->w[0],3*(tbs+64),1,0);
//write_output("dlsch_w.m","w",UE->dlsch[subframe
_DL(&UE->frame_parms,subframe)
&0x1][0][0]->harq_processes[0]->w[0],3*(tbs+64),1,0);
//pdcch_vars
write_output
(
"pdcchF0_ext.m"
,
"pdcchF_ext"
,
UE
->
pdcch_vars
[
0
][
eNB_id
]
->
rxdataF_ext
[
0
],
2
*
3
*
UE
->
frame_parms
.
ofdm_symbol_size
,
1
,
1
);
write_output
(
"pdcch00_ch0_ext.m"
,
"pdcch00_ch0_ext"
,
UE
->
pdcch_vars
[
0
][
eNB_id
]
->
dl_ch_estimates_ext
[
0
],
300
*
3
,
1
,
1
);
...
...
@@ -2679,7 +2679,7 @@ int main(int argc, char **argv)
// printf("round %d errors %d/%d\n",round,errs[round],trials);
round
++
;
// UE->dlsch[subframe&0x1][0][0]->harq_processes[0]->round++;
// UE->dlsch[subframe
_DL(&UE->frame_parms,subframe)
&0x1][0][0]->harq_processes[0]->round++;
}
if
(
xforms
==
1
)
{
...
...
@@ -2869,7 +2869,7 @@ int main(int argc, char **argv)
//rate*effective_rate,
100
*
effective_rate
,
//rate,
//rate*get_Qm(UE->dlsch[subframe
&0x1][0][0]->harq_processes[UE->dlsch[subframe
&0x1][0][0]->current_harq_pid]->mcs),
//rate*get_Qm(UE->dlsch[subframe
_DL(&UE->frame_parms,subframe)&0x1][0][0]->harq_processes[UE->dlsch[subframe_DL(&UE->frame_parms,subframe)
&0x1][0][0]->current_harq_pid]->mcs),
(
1
.
0
*
(
round_trials
[
0
]
-
errs
[
0
])
+
2
.
0
*
(
round_trials
[
1
]
-
errs
[
1
])
+
3
.
0
*
(
round_trials
[
2
]
-
errs
[
2
])
+
4
.
0
*
(
round_trials
[
3
]
-
errs
[
3
]))
/
((
double
)
round_trials
[
0
])
/
(
double
)
eNB
->
dlsch
[
0
][
0
]
->
harq_processes
[
0
]
->
TBS
,
(
1
.
0
*
(
round_trials
[
0
]
-
errs
[
0
])
+
2
.
0
*
(
round_trials
[
1
]
-
errs
[
1
])
+
3
.
0
*
(
round_trials
[
2
]
-
errs
[
2
])
+
4
.
0
*
(
round_trials
[
3
]
-
errs
[
3
]))
/
((
double
)
round_trials
[
0
]));
...
...
@@ -2946,7 +2946,7 @@ int main(int argc, char **argv)
printf
(
"|__ DLSCH Rate Unmatching :%f us (%d trials)
\n
"
,
(
double
)
UE
->
dlsch_rate_unmatching_stats
.
diff
/
UE
->
dlsch_rate_unmatching_stats
.
trials
/
cpu_freq_GHz
/
1000
.
0
,
UE
->
dlsch_rate_unmatching_stats
.
trials
);
printf
(
"|__ DLSCH Turbo Decoding(%d bits) :%f us (%d trials)
\n
"
,
UE
->
dlsch
[
subframe
&
0x1
][
0
][
0
]
->
harq_processes
[
0
]
->
Cminus
?
UE
->
dlsch
[
subframe
&
0x1
][
0
][
0
]
->
harq_processes
[
0
]
->
Kminus
:
UE
->
dlsch
[
subframe
&
0x1
][
0
][
0
]
->
harq_processes
[
0
]
->
Kplus
,
UE
->
dlsch
[
subframe
_DL
(
&
UE
->
frame_parms
,
subframe
)
&
0x1
][
0
][
0
]
->
harq_processes
[
0
]
->
Cminus
?
UE
->
dlsch
[
subframe_DL
(
&
UE
->
frame_parms
,
subframe
)
&
0x1
][
0
][
0
]
->
harq_processes
[
0
]
->
Kminus
:
UE
->
dlsch
[
subframe_DL
(
&
UE
->
frame_parms
,
subframe
)
&
0x1
][
0
][
0
]
->
harq_processes
[
0
]
->
Kplus
,
(
double
)
UE
->
dlsch_turbo_decoding_stats
.
diff
/
UE
->
dlsch_turbo_decoding_stats
.
trials
/
cpu_freq_GHz
/
1000
.
0
,
UE
->
dlsch_turbo_decoding_stats
.
trials
);
printf
(
" |__ init %f us (cycles/iter %f, %d trials)
\n
"
,
(
double
)
UE
->
dlsch_tc_init_stats
.
diff
/
UE
->
dlsch_tc_init_stats
.
trials
/
cpu_freq_GHz
/
1000
.
0
,
...
...
@@ -3235,7 +3235,7 @@ int main(int argc, char **argv)
printf
(
"eNB %d
\n
"
,
i
);
free_eNB_dlsch
(
eNB
->
dlsch
[
0
][
i
]);
printf
(
"UE %d
\n
"
,
i
);
free_ue_dlsch
(
UE
->
dlsch
[
subframe
&
0x1
][
0
][
i
]);
free_ue_dlsch
(
UE
->
dlsch
[
subframe
_DL
(
&
UE
->
frame_parms
,
subframe
)
&
0x1
][
0
][
i
]);
}
...
...
This diff is collapsed.
Click to expand it.
openair1/SIMULATION/LTE_PHY/dlsim_tm4.c
View file @
8f758785
This diff is collapsed.
Click to expand it.
openair1/SIMULATION/LTE_PHY/dlsim_tm7.c
View file @
8f758785
This diff is collapsed.
Click to expand it.
openair1/SIMULATION/LTE_PHY/ulsim.c
View file @
8f758785
...
...
@@ -709,20 +709,20 @@ int main(int argc, char **argv)
// Create transport channel structures for 2 transport blocks (MIMO)
for
(
i
=
0
;
i
<
2
;
i
++
)
{
eNB
->
dlsch
[
0
][
i
]
=
new_eNB_dlsch
(
1
,
8
,
1827072
,
N_RB_DL
,
0
,
&
eNB
->
frame_parms
);
UE
->
dlsch
[
subframe
&
1
][
0
][
i
]
=
new_ue_dlsch
(
1
,
8
,
1827072
,
MAX_TURBO_ITERATIONS
,
N_RB_DL
,
0
);
UE
->
dlsch
[
subframe
_DL
(
&
UE
->
frame_parms
,
subframe
)
&
1
][
0
][
i
]
=
new_ue_dlsch
(
1
,
8
,
1827072
,
MAX_TURBO_ITERATIONS
,
N_RB_DL
,
0
);
if
(
!
eNB
->
dlsch
[
0
][
i
])
{
printf
(
"Can't get eNB dlsch structures
\n
"
);
exit
(
-
1
);
}
if
(
!
UE
->
dlsch
[
subframe
&
1
][
0
][
i
])
{
if
(
!
UE
->
dlsch
[
subframe
_DL
(
&
UE
->
frame_parms
,
subframe
)
&
1
][
0
][
i
])
{
printf
(
"Can't get ue dlsch structures
\n
"
);
exit
(
-
1
);
}
eNB
->
dlsch
[
0
][
i
]
->
rnti
=
14
;
UE
->
dlsch
[
subframe
&
1
][
0
][
i
]
->
rnti
=
14
;
UE
->
dlsch
[
subframe
_DL
(
&
UE
->
frame_parms
,
subframe
)
&
1
][
0
][
i
]
->
rnti
=
14
;
}
...
...
@@ -763,7 +763,7 @@ int main(int argc, char **argv)
init_ul_hopping
(
&
eNB
->
frame_parms
);
UE
->
dlsch
[
subframe
&
1
][
0
][
0
]
->
harq_ack
[
ul_subframe2pdcch_alloc_subframe
(
&
eNB
->
frame_parms
,
subframe
)].
send_harq_status
=
1
;
UE
->
dlsch
[
subframe
_DL
(
&
UE
->
frame_parms
,
subframe
)
&
1
][
0
][
0
]
->
harq_ack
[
ul_subframe2pdcch_alloc_subframe
(
&
eNB
->
frame_parms
,
subframe
)].
send_harq_status
=
1
;
UE
->
ulsch_Msg3_active
[
eNB_id
]
=
0
;
UE
->
ul_power_control_dedicated
[
eNB_id
].
accumulationEnabled
=
1
;
...
...
This diff is collapsed.
Click to expand it.
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