63 Commits
Author SHA1 Message Date
Bartosz Podrygajlo 6bd3545a78 RFsimulator C++ conversion
Convert rfsimulator C source code to C++ to access to STL.
2025-12-17 22:24:12 +01:00
Laurent THOMAS a1b4220a91 Exclusively use OAI_RNGSEED env variable everywhere
Hide normal table initialization of Ziggurat generator from outside to
force the usage of randominit() for RNG initialization. In this step,
remove the randominit() seed parameter and only rely on OAI_RNGSEED for
a consistent RNG initialization, as this parameter was used differently
("0" as fixed number or to force a random seed).

Now, only use OAI_RNGSEED env variable to force the usage of a fixed
seed.
2025-12-01 12:10:31 +01:00
Bartosz Podrygajlo 16f5299203 Taps client client for vrtsim
Added a libary that can connect to a channel emulator and provide taps
as they are generated.

 - Enable connection from vrtsim to channel emulation server
 - Depends on flatbuffers definition file from raytracing-channel-emulator
 - Depends on libanomsg-dev and flatbuffers-compiler (Ubuntu) or equivalent
 - Added a compile time option ENABLE_TAPS_CLIENT to prevent other users
   from being affected by additional dependencies
2025-08-20 15:57:30 +02:00
Thomas Schlichter d6585f3750 rfsimulator: enable and correct NTN LEO doppler simulation 2025-04-10 13:56:20 +00:00
Thomas Schlichter dd827c7bd8 refactor (co)sinus calculation out of phase_noise() into openair1/PHY/TOOLS/get_sin_cos.c 2025-04-10 12:37:19 +00:00
Thomas Schlichter 9e4df97d84 move function add_noise() to file openair1/SIMULATION/TOOLS/phase_noise.c 2025-04-10 12:36:30 +00:00
Bartosz Podrygajlo 5d3708ac3e Realtime channel emulation for shm_radio 2025-03-26 16:53:35 +01:00
Bartosz Podrygajlo 2fb541a68e Add option to use global noise power for all RX channels in RFSimulator
Added new command line option to channelmod: noise_power_dBFS. This options
allows the user to configure noise power in dBFS added instead of the per-channel
value.

This makes it so noise is not accumulated per channel reaching higher than expected
values.

The dBFS unit allows easy configuration. The gNB by default uses -36 dBFS setting.
To reach 3dB SNR one should set the noise_power_dBFS value to -39.

To configure using command line use --channelmod.noise_power_dBFS -50. Using this
setting the gNB and nrUE connect without issue.
2025-02-19 16:05:38 +01:00
Thomas Schlichter 6a8edaf317 rfsimulator: add delay and Doppler simulation for circular orbit and add according channel models SAT_LEO_TRANS and SAT_LEO_REGEN
Delay and Doppler computation is done as in Matlab function dopplerShiftCircularOrbit:
https://de.mathworks.com/help/satcom/ref/dopplershiftcircularorbit.html
2024-08-20 16:46:25 +02:00
Thomas Schlichter 68b07d542c rfsimulator: correctly set center frequency 2024-08-20 16:46:25 +02:00
Thomas Schlichter 5ac881b7c1 rfsimulator: add support to simulate a long propagation delay
Add the option `--rfsimulator.prop_delay` to specify the simulated receive-path (gNB: UL, UE: DL) propagation delay in ms.
This option can be used e.g. to simulate a simple GEO satellite channel by specifying `--rfsimulator.prop_delay 238.74` to both, the gNB and the UE.

This is part of the work developed by Fraunhofer IIS within the ESA-funded project 5G-GOA (https://connectivity.esa.int/projects/5ggoa).
2024-05-07 20:46:37 +02:00
Guido Casati 563109a88f Cleanup of unused and outdated legacy RFSIM code
- deleted:    ../../../executables/rfsim.c
- removed unused command line options to set SINR and SNR
- removed unused functions to get SINR and SNR
- removed unused RFSIM struct members
2024-02-20 15:06:59 +01:00
Laurent THOMAS bba9aac079 fix most of doxygen warnings and errors 2023-10-26 16:47:19 +02:00
rmagueta 28438ab5c4 Add ptrs_bit_map input in add_noise() function 2023-09-04 18:37:01 +01:00
Robert Schmidt ff4c48f952 Align all configuration structs, and guard them to not be formatted with clang-format 2023-03-09 19:01:47 +01:00
francescomani 2385bc364a fixing most warning when compiling nr-softmodem 2023-03-09 19:01:46 +01:00
laurent b74ba0fb92 cleaning only 2023-01-19 14:52:39 +01:00
Robert Schmidt 8cacbb884c Address review comments 2022-12-19 16:23:40 +01:00
Robert Schmidt fb6f9d3bf0 Read /dev/urandom to init RNG for uniformrandom and gaussZiggurat 2022-12-19 15:57:09 +01:00
Roberto Louro Magueta 2b40675b3a Apply Doppler Effect 2022-11-25 11:03:45 +00:00
Roberto Louro Magueta 9b04af1b52 Put the center_freq and maxDoppler as input of new_channel_desc_scm() function 2022-11-25 11:03:45 +00:00
Roberto Louro Magueta e44a99b3c1 Implementation of get_cexp_doppler() function to compute the Doppler Effect 2022-11-25 10:56:52 +00:00
Roberto Louro Magueta 255ad24410 Replace gaussdouble() by gaussZiggurat() in random_channel() and add_noise() 2022-11-09 18:58:09 +00:00
Roberto Louro Magueta 6b83d9e0f1 Compute normalization channel factor 2022-10-27 17:18:38 +01:00
Roberto Louro Magueta abb6fadd19 Implementation of function add_noise() 2022-10-27 17:18:38 +01:00
Roberto Louro Magueta 6f51b930c1 Put the correlation level (low, medium or high) as input of new_channel_desc_scm() 2022-10-27 17:07:25 +01:00
Roberto Louro Magueta 3d966b09e8 TDL channel model implementation for low, medium and high correlation scenarios 2022-10-27 17:07:25 +01:00
laurent 65b399fcd7 fix bugs in config module and config usage
fix bug from this MR

fix bug from this MR

stupid-mistake
2022-08-16 09:22:15 +02:00
Robert Schmidt b4dbf46dde Provide term_freq_channel() to free memory in abstraction.c 2022-02-21 13:35:36 +01:00
Eurecom c834f40186 Merge remote-tracking branch 'origin/develop' into bandwidth-testing
Conflicts:
	executables/nr-uesoftmodem.c
	executables/nr-uesoftmodem.h
	executables/softmodem-common.h
	openair1/PHY/MODULATION/slot_fep_nr.c
	openair1/PHY/NR_ESTIMATION/nr_ul_channel_estimation.c
	openair1/PHY/NR_TRANSPORT/pucch_rx.c
	openair1/SCHED_NR/fapi_nr_l1.c
	openair1/SCHED_NR_UE/phy_procedures_nr_ue.c
	openair1/SIMULATION/TOOLS/abstraction.c
	openair1/SIMULATION/TOOLS/random_channel.c
	openair2/LAYER2/NR_MAC_UE/mac_proto.h
	openair2/LAYER2/NR_MAC_UE/nr_ue_dci_configuration.c
	openair2/LAYER2/NR_MAC_UE/nr_ue_scheduler.c
	openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_RA.c
	openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c
2021-09-05 15:37:11 +02:00
Raymond Knopp 8a9194300f commit before merge 2021-08-09 10:55:55 +02:00
Rodolphe BERTOLINI 387223eea6 removed duplicate structure, changed 'x' to 'r' and 'y' to 'i' 2021-08-09 09:59:38 +02:00
Raymond Knopp d88ce5b9bf Merge remote-tracking branch 'origin/develop' into oairu 2021-04-27 11:58:31 +02:00
hardy 246afc7ccb Merge remote-tracking branch 'origin/sim-channels' into integration_2020_wk15 2021-04-14 14:37:09 +02:00
Laurent OpenCells c0ef3e6f88 fix gcc reported issues 2021-04-03 23:37:58 +02:00
Laurent THOMAS 0827488303 noise power 2021-03-17 19:34:27 +01:00
frtabu 1f0e82664f enhance channel model configuration 2021-03-10 02:33:31 +01:00
Laurent THOMAS 3b1b74cfd2 starting 2021-03-04 13:22:14 +01:00
Raymond Knopp d06018d1e3 Merge branch 'four_antenna_eNB' into oairu 2021-02-07 17:46:23 +01:00
Raymond Knopp 78f14bc9a4 fixed build for oairu executable. tested with sirius/phoenix 2021-01-28 21:53:24 +01:00
Raymond Knopp f04846cf4f 2 and 4 antenna testing with ulsim functional. >=3 dB gains from 2 to 4 antennas on SCM channels 2021-01-26 13:25:07 +01:00
Parminder Singh 741a5b98e7 Added sin cos table implementation for dlsim
- Sin and Cos values are obtained from a table with a resolution of
  100.
- dlsim is updated to use this table for phase noise.
2020-11-03 11:26:37 +01:00
Thomas Schlichter 73f5851690 Merge remote-tracking branch 'develop'
Conflicts:
	openair1/PHY/NR_TRANSPORT/nr_ulsch_demodulation.c
	openair1/PHY/NR_TRANSPORT/pucch_rx.c
	openair1/SIMULATION/NR_PHY/ulsim.c
2020-09-08 12:01:37 +02:00
Parminder Singh 92fc259592 Merge remote-tracking branch 'origin/develop' into fhg_shp_phase_noise_est 2020-09-01 12:55:50 +02:00
Parminder Singh b288eafd1e Common Phase error estimation and compensation in uplink.
FEATURE STATEMENT:
- Introduce linear phase error noise model in Uplink at UE
- Perform common phase error (CPE) estimation and compensation at gNB

SOLUTION:
- A linear phase shift model is introduced in simulation.
- PTRS symbols are used to perform estimation of CPE from DMRS compensated signal
- The estimated values are interpolated in time domain and signal is compensated for the CPE.
- PTRS processing is done in Frequency Domain for each symbol in a slot and
  LLR's are calculated for each symbol accordingly.

IMPLEMENTATION:
* sim.h/channle_sim.c
- Linear Phase Noise Generation model definition.
* nr_ul_channel_estimation.c/nr_ul_estimation.h
- CPE estimation from PTRS and DMRS compensated signal.
* nr_dmrs_rx.c/nr_refsig.h
- Regenerate PTRS symbols at gNB.
* nr_ulsch_demodulation.c
- Removed old PTRS processing code and move to a common PTRS processing function
* defs_gNB.h/init.c
- New PTRS variables definition and initialization
* nr_ulsch_ue.c
- Corrected PTRS parameter to get new PTRS symbols for each OFDM symbol

TESTING
* ulsim.c
- Added Phase noise, Enable PTRS signal and verified the output.

VERIFICATION
- The LLR are rotated back with estimated CPE and no error is observed in scrambling/decoding
2020-08-27 11:55:06 +02:00
Francesco Mani fd003dd786 Merge remote-tracking branch 'origin/develop' into NR_UL_scheduling 2020-08-20 12:37:21 +02:00
Raymond Knopp 49a14c4f9f fixes for TDL channel models in nr_ulsim 2020-08-13 09:43:50 +02:00
Raymond Knopp 13d1be0782 added TDL channel models and use them in nr_ulsim 2020-08-12 16:23:14 +02:00
frtabu d4bd2cdc63 implement modifying channel model algo while running, complete function freeing a model 2020-07-29 20:27:04 +02:00
frtabu 7eb2ab66c5 add telnet commands to show and modify channel simulation parameters 2020-07-28 01:33:16 +02:00