mirror of
https://gitlab.eurecom.fr/oai/openairinterface5g.git
synced 2026-07-13 04:30:28 +00:00
Introduce uplink multi-user MIMO (MU-MIMO) simulator
This commit introduces a dedicated simulation environment to validate the uplink MU-MIMO joint processing framework. It models a scenario where a single gNB serves multiple spatially multiplexed UEs sharing the exact same time and frequency resources. The simulator executes the complete physical layer baseband pipeline: - PUSCH data generation and LDPC encoding per UE - OFDM modulation (TX) - Signal propagation through a multi-path channel model - OFDM demodulation (RX) at the gNB - Joint PUSCH decoding, equalization, and spatial demultiplexing Performance metrics such as scrambling errors and BLER per UE is evaluated at the end of the simulation. Signed-off-by: Rakesh Mundlamuri <rakesh.mundlamuri@openairinterface.org>
This commit is contained in:
@@ -2031,6 +2031,19 @@ target_link_libraries(nr_srssim PRIVATE
|
||||
m pthread ITTI dl nr_ue_phy_meas physim_common softmodem_common
|
||||
)
|
||||
|
||||
add_executable(nr_ulsim_mu_mimo
|
||||
${OPENAIR1_DIR}/SIMULATION/NR_PHY/ulsim_mu_mimo.c
|
||||
${NFAPI_USER_DIR}/nfapi.c
|
||||
${NFAPI_USER_DIR}/gnb_ind_vars.c
|
||||
${PHY_INTERFACE_DIR}/queue_t.c
|
||||
)
|
||||
|
||||
target_link_libraries(nr_ulsim_mu_mimo PRIVATE
|
||||
-Wl,--start-group UTIL SIMU PHY_NR_COMMON PHY_NR PHY_NR_UE SCHED_NR_LIB SCHED_NR_UE_LIB MAC_UE_NR MAC_NR_COMMON CONFIG_LIB L2_NR -Wl,--end-group
|
||||
m pthread ${T_LIB} ITTI dl nr_ue_phy_meas physim_common softmodem_common NR_L2_UE
|
||||
)
|
||||
target_link_libraries(nr_ulsim_mu_mimo PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
|
||||
|
||||
if(ENABLE_CHANNEL_SIM_CUDA)
|
||||
if (TARGET oai_cuda_lib)
|
||||
target_link_libraries(nr_dlsim PRIVATE oai_cuda_lib)
|
||||
@@ -2088,7 +2101,7 @@ if (${T_TRACER})
|
||||
nr-uesoftmodem dlsim dlsim_tm4 dlsim_tm7
|
||||
ulsim pbchsim scansim mbmssim pdcchsim pucchsim prachsim
|
||||
syncsim nr_ulsim nr_dlsim nr_dlschsim nr_pbchsim nr_pucchsim
|
||||
nr_ulschsim ldpctest polartest smallblocktest nr_srssim
|
||||
nr_ulschsim ldpctest polartest smallblocktest nr_srssim nr_ulsim_mu_mimo
|
||||
#all "add_library" definitions
|
||||
ITTI lte_rrc nr_rrc s1ap x2ap m2ap m3ap f1ap
|
||||
params_libconfig
|
||||
|
||||
@@ -277,7 +277,7 @@ function main() {
|
||||
SIMUS_PHY=1
|
||||
CMAKE_CMD="$CMAKE_CMD -DENABLE_PHYSIM_TESTS=ON"
|
||||
# TODO: fix: dlsim_tm4 pucchsim prachsim pdcchsim pbchsim mbmssim
|
||||
TARGET_LIST="$TARGET_LIST dlsim ulsim ldpctest polartest smallblocktest nr_pbchsim nr_dlschsim nr_ulschsim nr_dlsim nr_ulsim nr_pucchsim nr_prachsim nr_psbchsim nr_srssim"
|
||||
TARGET_LIST="$TARGET_LIST dlsim ulsim ldpctest polartest smallblocktest nr_pbchsim nr_dlschsim nr_ulschsim nr_dlsim nr_ulsim nr_pucchsim nr_prachsim nr_psbchsim nr_srssim nr_ulsim_mu_mimo"
|
||||
echo_info "Will compile dlsim, ulsim, ..."
|
||||
shift;;
|
||||
-V | --vcd)
|
||||
|
||||
1535
openair1/SIMULATION/NR_PHY/ulsim_mu_mimo.c
Normal file
1535
openair1/SIMULATION/NR_PHY/ulsim_mu_mimo.c
Normal file
File diff suppressed because it is too large
Load Diff
@@ -222,7 +222,7 @@ if(PACKAGING_PHYSIM)
|
||||
--------------------------------------------------------
|
||||
Coding focused: polartest, smallblocktest, ldpctest
|
||||
Downlink PHY: nr_dlschsim, nr_psbchsim, nr_dlsim
|
||||
Uplink PHY: nr_pucchsim nr_prachsim nr_ulschsim nr_ulsim
|
||||
Uplink PHY: nr_pucchsim nr_prachsim nr_ulschsim nr_ulsim nr_ulsim_mu_mimo
|
||||
--------------------------------------------------------
|
||||
polartest: test polar codes which are used in 5G control channels, validates encoding, decoding and error correction performance*
|
||||
smallblocktest: generic test for small channel coding blocks, validates encoding and decoding for small transport blocks
|
||||
@@ -233,7 +233,8 @@ if(PACKAGING_PHYSIM)
|
||||
nr_dlsim: simulates NR downlink, including multiple downlink channels and measurements of BLER/throughput
|
||||
nr_prachsim: simulates the Physical Random Access Channel, including UE initial access, preamble detection and timing alignment
|
||||
nr_ulschsim: simulates the Uplink Shared Channel, including LDPC encoding, modulation, transmission and decoding
|
||||
nr_ulsim: simulates the NR uplink simulation, including PUCCH, PUSCH and PRACH")
|
||||
nr_ulsim: simulates the NR uplink simulation, including PUCCH, PUSCH and PRACH
|
||||
nr_ulsim_mu_mimo: simulates the NR uplink simulation with PUSCH multi user MIMO")
|
||||
|
||||
if(PACKAGING_RPM)
|
||||
set(CPACK_RPM_PACKAGE_OAI-PHYSIM_SUMMARY "OpenAirInterface PhySim package")
|
||||
@@ -254,7 +255,7 @@ if(PACKAGING_PHYSIM)
|
||||
install(FILES "${CMAKE_SOURCE_DIR}/doc/physical-simulators.md" DESTINATION share/doc/ COMPONENT oai-physim)
|
||||
|
||||
#Add the targets to the package
|
||||
install(TARGETS polartest smallblocktest ldpctest nr_dlschsim nr_psbchsim nr_pucchsim nr_dlsim nr_prachsim nr_ulschsim nr_ulsim
|
||||
install(TARGETS polartest smallblocktest ldpctest nr_dlschsim nr_psbchsim nr_pucchsim nr_dlsim nr_prachsim nr_ulschsim nr_ulsim nr_ulsim_mu_mimo
|
||||
COMPONENT oai-physim
|
||||
RUNTIME DESTINATION /usr/bin
|
||||
LIBRARY DESTINATION /usr/lib
|
||||
|
||||
Reference in New Issue
Block a user