Commit Graph
246 Commits
Author SHA1 Message Date
Laurent THOMAS e0ca70c36d replace a set of #define by a C bit array, remove duplicated extern global variable declaration 2025-01-09 15:28:25 +01:00
Robert Schmidt e0e1ca6583 Make SA the default mode, remove corresponding option 2024-11-12 13:55:49 +01:00
Robert Schmidt 25405d1720 Merge remote-tracking branch 'origin/NR_PBCHSIM_changes' into integration_2024_w44 (!3040)
Update pbchsim to work with other numerologies

NR PBCHSIM updated to work with 15Khz and 120Khz.
2024-11-01 11:58:13 +01:00
Robert Schmidt cf9854601c getopt() returns int
See getopt(3): returns int, so store it in an int variable.
I went through all occurrences, project-wide. All return values of
getopt() should be stored in ints now.
2024-10-24 19:22:06 +02:00
Raghavendra Dinavahi 586a4b76f8 Update pbchsim to work with other numerologies 2024-10-15 17:26:03 +02:00
francescomani 64ed4e9262 handling beams in PHY TX channels 2024-10-11 08:02:06 +02:00
Raghavendra Dinavahi 114ea60c42 removed nr_slot_fep_init_sync and used nr_slot_fep in UE 2024-09-25 09:50:34 +02:00
Raghavendra Dinavahi dfbedadd5f Use nr_slot_fep for sidelink, removed sl_nr_slot_fep 2024-09-18 17:17:19 +02:00
francescomani 1a04ebaa02 cleanup of gNB PHY procedures and removal of global PBCH structure 2024-08-29 15:36:16 +02:00
Robert Schmidt 82c0b441e5 Merge remote-tracking branch 'origin/simplify-faster-gold-sequences' into integration_2024_w30 2024-07-30 15:05:40 +02:00
Laurent THOMAS 0316431e27 Use gold cache for PBCH encoding&decoding 2024-07-30 14:48:36 +02:00
Bartosz Podrygajlo 48d68f7d90 Fix a bug where if BWP size is not exactly maximum BWP size for a bandwidth power control code asserts.
This assert and assumption is incorrect, according to 38.101-1 UE channel is defined only by the BWP size
and BWP size can be any value supported by the RRC parameters defining the BWP.
To determine the UE channel the smallest bandwidth supporting the BWP is selected. This is an assumption based
on references in the same document to UE channel bandwidth being equal to one of the values in set
 {5, 10, 15, 20, 25, 30, 35, 40, 50, 60, 70, 80, 90, 100}.
Also:
 - calculated P_CMIN during BWP setup since the parameter doesn't depend on DCI.
 - initiialize uniqCfg structure in test_nr_ue_power_procedures main function which enables LOG prints during tests
2024-07-26 11:15:49 +02:00
Romain Beurdouche 327b9a8b70 fix(phy_simulators): enable the use of option -O to pass a configuration file to configmodule in phy simulators 2024-06-25 10:38:09 +02:00
Romain Beurdouche edcd0019d2 fix(nr_pbchsim): replace option -O by option -c 2024-06-25 10:29:29 +02:00
Robert Schmidt 5b53f4ee0f Merge remote-tracking branch 'origin/NR_UE_cell_search' into integration_2024_w22 2024-06-03 21:35:51 +02:00
Sakthivel Velumani 7c146154f5 Prevent compiler warning
A particular GCC version (v13?) used by CI machines potentially has a
bug that issues a mismatch bound warning on function array arguments.
This commit should prevent it from happening.
2024-05-30 10:20:55 -04:00
Sakthivel Velumani 043da0c440 NR UE scan for SSB within current bandwidth
Till this commit, the UE gets the position of SSB in frequency from
command line and does the syncronization by locating the SSB in time. It
does this by generating a PSS time signal during initialization with the
SSB offset given via command line. Then PSS detection is done by
correlation.

In this commit, the UE computes a list of GSCN in the current NR band
that falls within the current bandwidth for the set center frequency.
For each GSCN in the list, the UE starts a thread and performs the
following:
1. Generate PSS time signal with SSB offset for current GSCN.
2. Detect PSS, SSS and decode PBCH (this step remains the same).
After all threads finishes, the results are collected.

For now, only the first detected PBCH is used to proceed further. So
this PBCH is indicated to MAC and UE exits initial sync.

Future work: The cell search can be standalone feature where the UE
could scan for SSB in the entire NR band. This would require changing
radio's frequency on the fly as the UE's bandwidth would not cover an
entire NR band. The cell detection can futher be imporved by looking
for SIB1 for each decoded PBCH.
2024-05-30 10:20:45 -04:00
Romain Beurdouche 08dbc5bf08 fix(phy simulators): fix cmdline configmodule for NR_PHY simulators 2024-05-15 14:05:03 +02:00
Jaroslava Fiedlerova cc0ba68082 Merge remote-tracking branch 'origin/NR_harmonize_frequency_range' into integration_2024_w17 2024-04-26 15:56:06 +02:00
Jaroslava Fiedlerova c4b1966fc5 Merge remote-tracking branch 'origin/NR_bw_index_fix' into integration_2024_w17 2024-04-26 15:46:50 +02:00
francescomani efeb538490 harmonize usage of frequency range structures 2024-04-23 12:20:42 +02:00
Robert Schmidt 9a2e080f77 Apply clang-format 2024-04-13 08:54:15 +02:00
Raghavendra Dinavahi 94b23d1eb0 PSBCH RX TX and SLSS search procedures
- RX/TX Phy processing accg to 38.211, 38.212 Rel16
	- PSBCH simulator used to validate TX/RX phy processing
	- PSBCH SLSS Search procedures
	- PSBCH SIM also tests SLSS SEARCH
2024-04-12 16:07:00 +02:00
francescomani a0c5a3604a fix incorrect bw index evaluation for UE capabilities 2024-04-10 14:06:41 +02:00
Jaroslava Fiedlerova c92650003f Merge remote-tracking branch 'origin/NR_4_layers_MIMO' into integration_2024_w13 2024-03-29 16:06:14 +01:00
francescomani 8f858af876 improvements for 4-layer MIMO at gNB 2024-03-21 18:22:25 +01:00
francescomani ee3dcc5c77 replacing cell_notdetected with cell_detected in initial_sync structure 2024-03-19 09:59:07 +01:00
francescomani 37d3e5bb58 get SSB ARFCN at RRC UE (needed to update k_gnb key according to 33.501) 2024-03-13 17:59:11 +01:00
Laurent THOMAS c5e4bea6b9 make explicit return of the clock drift to shift the corresponding number of samples
remove corresponding global variables
2024-03-07 15:28:22 +01:00
Laurent THOMAS 948188b200 basic C cleaning of dci decoding 2024-02-27 10:04:45 +01:00
Laurent THOMAS b5e169ec07 add const or other simple C code improvement 2024-01-09 16:15:14 +01:00
Laurent THOMAS f50d5f5a9b make multiple config instead of one implicit global 2023-11-10 10:23:11 +01:00
Laurent THOMAS e74b9a5c29 remove a frame param useless attribute 2023-08-30 15:27:33 +02:00
francescomani 44bc3e7cce taking sib1 detection out of initial sync 2023-07-27 11:11:09 +02:00
Robert Schmidt c1e8acb2e2 Repair build when T tracer build disabled 2023-07-13 10:28:38 +02:00
francescomani 1c3058e2d2 use of apply_rotation functions also at UE 2023-06-20 10:39:13 +02:00
Robert Schmidt 555a54f85e Add Sidelink (SL) carrier frequency
1. Adding a "SL" frequency for Sidelink mode. The
   importance of this variable is to ensure that
   when we are in mode 1 (UE+UE+gNB), that the slot
   configuration and frequencies do not overlap. This
   SL frequency is important for rotation and allows
   us to utilize the OFDM modulation and demodulation
   functions that already exist in OAI.
2. Adding sl_mode to the command line for proper UE
   deployment when in SL mode. sl_mode can be set to 0,
   1, or 2. sl_mode 0 indicates no-Sidelink at all,
   mode 1 is gNB, UE, and UE (3GPP defines mode numbers).
   sl_mode 2 indicated UE to UE communications with no
   gNB at all.
3. New functions for calculating the carrier frequency
   for SL mode.
2023-06-16 11:11:44 +02:00
Melissa Elkadi 2dfc36dc32 Converting OFDM mod/de-mod functions to use c16_ts instead of int16_ts 2023-05-10 09:10:12 -07:00
francescomani 87d9517738 avoid duplicated function in nr_common for supported bandwidth 2023-04-20 18:16:37 +02:00
Robert Schmidt 19d3014150 Merge remote-tracking branch 'origin/bugfix-phy-mac-interface' into integration_2023_w14 2023-04-05 19:30:30 +02:00
Cedric Roux 733c7e5e89 bugfix: change memory management of interface between PHY and MAC scheduler
This commit fixes a bug caused by global variables in the gNB_MAC_INST
structure used to transfer MAC scheduler's results to the PHY layer.

When using several threads in the PHY layer, it may happen that the
MAC scheduler is called a second time by the second PHY thread for the
next slot before the content of the global variables in the gNB_MAC_INST
structure used to store the result of the MAC scheduler for the current
slot have been consumed by the first thread, leading to unpredictable
results (all of them certainly wrong).

The solution is to introduce a small memory management module for the
interface between the PHY threads and the MAC scheduler. The MAC
scheduler now fills the data structures passed to it, and not a
global variable anymore. The PHY layer manages the structures and
ensures that no data is overwritten before being fully consumed by
the various threads of the PHY layer.

Some care has to be taken because several PHY threads will access the
same structures at the same time for a given slot (in read mode, so
it's okay). A mechanism of reference counting has thus been introduced.

Only one CC is supported. This restriction should not be too hard
to remove if/when needed. (The code before this commit does not seem
to work for more than one CC anyway.)
2023-04-05 16:39:12 +02:00
francescomani ebd70a3915 Merge remote-tracking branch 'origin/NR_pbch_errors_at_MAC' into integration_2023_w14 2023-04-04 19:35:23 +02:00
Sakthivel Velumani 15c12caa37 Contains MAC changes to run || DLSCH
DL config as array in MAC
Run RX slot processing in Tpool thread
Fixed race in phy config
Changed mac_IF_mutex
Proc Tx: Lets wait for Proc Rx to get ACK/NACK
-(only on slots that carry ACK/NACK)
Fix problem with rfsim
Separated PDCCH and PDSCH decoding functions. Run PDCCH decoding in main UE_thread.
Fixed race in MAC dci config struct
needed for parallel processing of slots
Moved DLSCH transport block buffer to stack
rx_ind as static allocation
L2sim: Fixed calling of MAC sched in wrong slot
Fix DCI extract bug for RA procedure
2023-04-03 10:24:24 -04:00
francescomani 5c333cca65 move radio link failure detection on pbch at MAC 2023-04-02 09:48:09 +02:00
Melissa Elkadi 4dd579e042 int32_t to c16_t conversion
This commit includes changes to the function
footprints for vaiours NR UE and gNB functions.
It does not updated the LTE code. For functions
shared by both LTE and 5G, we maintained the original
LTE footprint and argument structure.

Several of the simulators that use these functions
have been updated as well. The specific usage of these
functions which index into the int32_t buffers and
treat the first int16_t and the real and the second
as the complex should be modified in the near future.
2023-03-15 12:45:39 -07:00
Robert Schmidt e90ef3bc68 Split phy_init.h into two files (for LTE/NR) 2023-03-06 20:05:38 +01:00
Robert Schmidt 8a15fb7c63 RC: forward declarations and link physims better
The simulators have been changed: due to linker errors that would arise
otherwise, a lot of functions are defined in them to avoid such errors.
Some functions are also defined in header files; in this commit, we
define most functoins in nr_dummy_functions.c, which is compiled in, not
by including the C file, but by adding it to the target in
CMakeLists.txt

- nr_dlsim+nr_ulsim need NR_IF_Module_init(), so it cannot be in
  nr_dummy_functions, but the others need it
- Link correcr NR_IF_Module_init() into these simulators, and reduce
  overall link list
- Correctly link remaining simulators
2023-03-06 20:04:38 +01:00
Robert Schmidt 3c73b3aadf Merge remote-tracking branch 'origin/NR_refactor_PHY_vector_sizes' into integration_2022_wk06 2023-02-09 19:22:57 +01:00
francescomani 358772429e fix asan failures 2023-01-23 11:31:01 +01:00
Roberto Louro Magueta 13bbd326d1 Fix mismatched bounds in functions in .h and .c 2023-01-21 12:41:15 +00:00