Be Mindful of 5G ARFCN Values #1001
Closed
rcbarke
started this conversation in
Ideas & Suggestions
Replies: 1 comment 6 replies
-
Hi Ryan, |
Beta Was this translation helpful? Give feedback.
6 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
EDIT: Please see the bottom of this thread. In my initial post was correct that the ARFCN expressed in the sample config files (368500) is not consistent with a 1805MHz downlink frequency, however, I was incorrect as to why the calculations were off. The root cause was due desynchronized configuration files in a complex software architecture.
Hello all,
I am copying an email thread sent to my team below for reference. We have found that ARFCN values within the sample srsRAN configuration files are incorrect in some cases. My postulation based on prior experience is below. Note that ARFCN does not seem to impact the simulation within the srsRAN framework itself, and seems to function as a simple text descriptor. However, it is crucial for channel modeling or channel estimation when using srsRAN with GNU Radio. Note that 4G EARFCN and 5G ARFCN are not on the same scale as explained below. Be mindful when re-using the values from the configuration files in advanced calculations.
Re: Final PHY Layer Configurations
I believe the reason WHY the ARFCN descriptor in srsRAN is incorrect is because they renamed the 4G EARFCN values to 5G ARFCNs in R15 when 5G launched.
I believe this to be the case because n3's EARFCN is three orders of magnitude (60dB offset) from its ARFCN. Thus, the incorrect formula in the original note provides an f_dl = 1.8 kHz instead of 1.8GHz.
I've seen this mistake in industry before, it's easy to make, however 4G EARFCN and 5G ARFCN are on two completely different scales.
Best,
Ryan
From: Ryan Barker [email protected]
Sent: Thursday, January 2, 2025 12:39 PM
To: Tolunay Seyfi [email protected]
Cc: alireze [email protected]; Fatemeh Afghah [email protected]
Subject: Fw: Final PHY Layer Configurations
Hi Team,
I propose, as aligned with our call today:
Path Loss
srsRAN contains the following cell_cfg parameters: dl_arfcn, band, channel_bandwidth_MHz, common_scs, plmn, tac.
However, the ARFCN value is wrong and a plain text descriptor. It does not impact RF propegation. That is, srsRAN is still broadcasting 1805MHz (1.8 GHz) during simulation.
When we designed the path loss formula for the agent, we used the ARFCN value:
f_dl = ARFCN_DL – ARFCN_REF # Should be 1805 MHz for our settings
path_loss = 20log10(d_km) + 20log10(f_dl_mhz) + 20log10(4*pi/c)
Also, the distance values in the RL Agent are expressed in meters, not km. This conversion is a 60 dB shift in the distance term. This was not considered in our initial path loss formula; I found this discrepancy in the source code after the model was trained. We will correct and retrain.
We reduced the final 2 terms and put the formula in the RL agent, with both the f_dl_wrong_ARFCN, we get:
path_loss_trained = 20 * math.log10(d_m) - 82.25
The f_dl_actual =1805 (MHz), thus the correct formula is:
path_loss_correct = 20log10(d_m) + 37.58
Thus, the formula we used during model training is incorrect by a 120dB offset (60dB due to distance, 60dB due to f_dl).
Channel Modeling
Attached you will find the current gnuradio configuration. The email below summarizes the channel modeling configuration.
To calculate the frequency offset for the doppler shift, see the below formulas:
Version 1 (configurable carrier frequency and sampling rate):
def f(v, f_carrier=1.805e9, f_sampling=11.52e6, c=3e8):
"""
Calculate the GNU Radio frequency offset for a given velocity.
Example usage:
velocity = 96 # m/s, e.g., ~345 km/h
frequency_offset = f(velocity)
print(f"Frequency Offset for {velocity} m/s: {frequency_offset:.6g}")
Version 2 (Simplified for our settings - n3 1805 DL, 11.52e6 MSCS):
def freq_offset(v):
"""
Returns the GNURadio frequency offset (dimensionless) for a velocity v (m/s)
given:
- f_carrier = 1.805 GHz
- f_sampling = 11.52 MHz
- c = 3e8 m/s
"""
K = 5.22e-7 # Derived constant for n3 band (1805 MHz) & 11.52 MHz sampling
return K * v
Example usage:
velocity = 96 # m/s
offset = freq_offset(velocity)
print(f"Frequency offset for {velocity} m/s is approximately {offset:.5g}")
Example: For v=96m/s (∼345km/h) [This is the upper limit of srsRAN with constant velocity]
foffset=5.22×10−7×96≈5.0×10−5
srsRAN PHY Upper Bound Limitations
Taps: [0.85+0.25j, 0.4-0.1j, 0.2+0.1j] (reduced in our config to improve QoS)
Noise Voltage: 0.01 (used in our config)
Frequency Offset: 0.00005 (96 m/s, assumes constant velocity through the entire simulation, reduced to 0.00000584 (40 kmph / 25mph) in our config)
Epsilon: 1.0
Best,
Ryan Barker
Graduate Researcher
IS-WiN Laboratory
M.S. Computer Engineering, Intelligent Systems, Class of 2026
B.S. Computer Engineering, Communication Systems & Networks, Class of 2016
Beta Was this translation helpful? Give feedback.
All reactions