TDL#
- class sionna.phy.channel.tr38901.TDL(model: str, delay_spread: float | None = None, carrier_frequency: float | None = None, num_sinusoids: int = 20, los_angle_of_arrival: float = np.float64(0.7953988301841436), min_speed: float = 0.0, max_speed: float | None = None, num_rx_ant: int = 1, num_tx_ant: int = 1, spatial_corr_mat: torch.Tensor | None = None, rx_corr_mat: torch.Tensor | None = None, tx_corr_mat: torch.Tensor | None = None, precision: str | None = None, device: str | None = None, spec_version: str = '19.2')[source]#
Bases:
sionna.phy.channel.channel_model.ChannelModelTapped delay line (TDL) channel model from the 3GPP [TR38901V1920] specification
The power delay profiles (PDPs) are normalized to have a total energy of one.
Two families of delay profiles are available. They differ in how the tap delays are obtained.
The scalable profiles
"A"to"E"from TR 38.901 tabulate tap delays that are normalized to an RMS delay spread of one. The delays used in the simulation are these normalized values multiplied bydelay_spread, so a single profile shape describes short and long delay spreads alike, anddelay_spreadis what represents the propagation scenario. Typical values are tabulated under Notes below.The fixed-delay profiles
"A10"to"D30"from Annex B.2.1 of [TS38101-4] tabulate absolute tap delays in nanoseconds and are defined for UE conformance and performance testing. Their RMS delay spread is part of the profile definition and is stated in nanoseconds by the model name, for example 30 ns for"A30". Since the tap delays are absolute, they are used as tabulated anddelay_spreadscales nothing. It can therefore be omitted for these profiles; a value that differs from the one of the profile is overridden at construction, with a message printed, and later assignments todelay_spreadare ignored. Reading the property returns the delay spread of the profile. These profiles are normally referenced together with a maximum Doppler frequency, as listed in the Doppler combination tables below.Note
The scalable TR 38.901 models apply from 0.5 GHz to 100 GHz and for system bandwidths of at most 2 GHz. These applicability limits are not enforced by this class.
Channel coefficients are generated using a sum-of-sinusoids model [SoS]. Channel aging is simulated in the event of mobility.
If a minimum speed and a maximum speed are specified such that the maximum speed is greater than the minimum speed, then speeds are randomly and uniformly sampled from the specified interval for each link and each batch example.
The TDL model only works for systems with a single transmitter and a single receiver. The transmitter and receiver can be equipped with multiple antennas. Spatial correlation is simulated through filtering by specified correlation matrices.
The
spatial_corr_matparameter can be used to specify an arbitrary spatial correlation matrix. In particular, it can be used to model correlated cross-polarized transmit and receive antennas as follows (see, e.g., Annex G.2.3.2.1 [TS38141-1]):\[\mathbf{R} = \mathbf{R}_{\text{rx}} \otimes \mathbf{\Gamma} \otimes \mathbf{R}_{\text{tx}}\]where \(\mathbf{R}\) is the spatial correlation matrix
spatial_corr_mat, \(\mathbf{R}_{\text{rx}}\) the spatial correlation matrix at the receiver with same polarization, \(\mathbf{R}_{\text{tx}}\) the spatial correlation matrix at the transmitter with same polarization, and \(\mathbf{\Gamma}\) the polarization correlation matrix. \(\mathbf{\Gamma}\) is 1x1 for single-polarized antennas, 2x2 when only the transmit or receive antennas are cross-polarized, and 4x4 when transmit and receive antennas are cross-polarized.It is also possible not to specify
spatial_corr_mat, but instead the correlation matrices at the receiver and transmitter, using therx_corr_matandtx_corr_matparameters, respectively. This can be useful when single polarized antennas are simulated, and it is also more computationally efficient. This is equivalent to settingspatial_corr_matto :\[\mathbf{R} = \mathbf{R}_{\text{rx}} \otimes \mathbf{R}_{\text{tx}}\]where \(\mathbf{R}_{\text{rx}}\) is the correlation matrix at the receiver
rx_corr_matand \(\mathbf{R}_{\text{tx}}\) the correlation matrix at the transmittertx_corr_mat.- Parameters:
model (str) – TDL model to use. Must be one of
"A","B","C","D","E","A10","A30","B100","C60","C300","D10", or"D30". The models"A"to"E"are the scalable TR 38.901 TDL profiles. The models"A10","A30","B100","C60","C300","D10", and"D30"are the fixed-delay Annex B.2.1 delay profiles from [TS38101-4].delay_spread (float | None) – RMS delay spread [s]. Required for the scalable profiles
"A"to"E", whose normalized tap delays it scales. The fixed-delay TS 38.101-4 models tabulate absolute tap delays, so this parameter can be omitted for them; it then takes the delay spread of the profile, which is10 nsfor"A10"and"D10",30 nsfor"A30"and"D30",60 nsfor"C60",100 nsfor"B100", and300 nsfor"C300". A value that differs from the one of the profile is discarded and a message is printed.carrier_frequency (float | None) – Carrier frequency [Hz]
num_sinusoids (int) – Number of sinusoids for the sum-of-sinusoids model. Defaults to 20.
los_angle_of_arrival (float) – Angle-of-arrival for LoS path [radian]. Only used with LoS models. Defaults to
arccos(0.7), placing the LoS Doppler peak at 0.7 times the maximum Doppler shift as specified by [TR38901V1920].min_speed (float) – Minimum speed [m/s]. Defaults to 0.0.
max_speed (float | None) – Maximum speed [m/s]. If set to None, then
max_speedtakes the same value asmin_speed.num_rx_ant (int) – Number of receive antennas. Defaults to 1.
num_tx_ant (int) – Number of transmit antennas. Defaults to 1.
spatial_corr_mat (torch.Tensor | None) – Spatial correlation matrix of shape [num_rx_ant*num_tx_ant, num_rx_ant*num_tx_ant]. If not set to None, then
rx_corr_matandtx_corr_matare ignored and this matrix is used for spatial correlation. If set to None andrx_corr_matandtx_corr_matare also set to None, then no correlation is applied.rx_corr_mat (torch.Tensor | None) – Spatial correlation matrix for the receiver of shape [num_rx_ant, num_rx_ant]. If set to None and
spatial_corr_matis also set to None, then no receive correlation is applied.tx_corr_mat (torch.Tensor | None) – Spatial correlation matrix for the transmitter of shape [num_tx_ant, num_tx_ant]. If set to None and
spatial_corr_matis also set to None, then no transmit correlation is applied.precision (str | None) – Precision used for internal calculations and outputs. If set to None,
precisionis used.device (str | None) – Device for computation (e.g., ‘cpu’, ‘cuda:0’). If None,
deviceis used.spec_version (str) – Version of the TR 38.901 parameter tables to use. Supported values are
"16.1"and"19.2". Defaults to"19.2". This selector applies only to the scalable TDL-A through TDL-E profiles, not to the fixed TS 38.101-4 profiles.
- Inputs:
batch_size – int. Batch size.
num_time_steps – int. Number of time steps.
sampling_frequency – float. Sampling frequency [Hz].
- Outputs:
a – [batch size, num_rx=1, num_rx_ant, num_tx=1, num_tx_ant, num_paths, num_time_steps], torch.complex. Path coefficients.
tau – [batch size, num_rx=1, num_tx=1, num_paths], torch.float. Path delays [s].
Examples
The following code snippet shows how to set up a TDL channel model and generate channel impulse responses:
import torch from sionna.phy.channel.tr38901 import TDL device = "cuda:0" if torch.cuda.is_available() else "cpu" channel_model = TDL(model="A", delay_spread=300e-9, carrier_frequency=3.5e9, min_speed=0.0, max_speed=3.0, num_rx_ant=2, num_tx_ant=1, device=device) h, tau = channel_model(batch_size=32, num_time_steps=14, sampling_frequency=30.72e6)
Available Model Options
modelSource
Delay handling
LoS component
"A"TR 38.901
Scaled by
delay_spreadNo
"B"TR 38.901
Scaled by
delay_spreadNo
"C"TR 38.901
Scaled by
delay_spreadNo
"D"TR 38.901
Scaled by
delay_spreadYes
"E"TR 38.901
Scaled by
delay_spreadYes
"A10"TS 38.101-4
Fixed, 10 ns RMS
No
"A30"TS 38.101-4
Fixed, 30 ns RMS
No
"B100"TS 38.101-4
Fixed, 100 ns RMS
No
"C60"TS 38.101-4
Fixed, 60 ns RMS
No
"C300"TS 38.101-4
Fixed, 300 ns RMS
No
"D10"TS 38.101-4
Fixed, 10 ns RMS
Yes
"D30"TS 38.101-4
Fixed, 30 ns RMS
Yes
The fixed-delay resources contain the profiles standardized by TS 38.101-4 V19.2.2. Their release and frequency-range availability is:
Table 1 Fixed-delay profile availability# Specification
FR1 profiles
FR2 profiles
Restriction
TS 38.101-4 V16.1
"A30","B100","C300""A30","C60"None
Added by TS 38.101-4 V19.2.2
"D30""D30","A10","D10""A10"and"D10"apply only for channel bandwidths greater than 200 MHzThe class has no channel-bandwidth argument and does not enforce these fixed-profile restrictions. Select a profile appropriate for the simulated frequency range and bandwidth.
TS 38.101-4 Doppler Combinations
Annex B.2.2 of TS 38.101-4 defines full propagation-condition names by combining a fixed delay profile with a maximum Doppler frequency. These full names are not passed to
modeldirectly. Instead, select the delay profile withmodeland setmin_speedandmax_speedto realize the desired Doppler frequency.Table 2 FR1 channel model parameters from TS 38.101-4 Table B.2.2-1# TS 38.101-4 name
model\(f_{\mathrm{D,max}}\)
TDLA30-5"A30"5 Hz
TDLA30-10"A30"10 Hz
TDLA30-20"A30"20 Hz
TDLA30-180"A30"180 Hz
TDLA30-195"A30"195 Hz
TDLA30-1400"A30"1400 Hz
TDLA30-2700"A30"2700 Hz
TDLB100-400"B100"400 Hz
TDLC300-100"C300"100 Hz
TDLC300-600"C300"600 Hz
TDLC300-1200"C300"1200 Hz
TDLD30-5"D30"5 Hz
Table 3 FR2 channel model parameters from TS 38.101-4 Table B.2.2-2# TS 38.101-4 name
model\(f_{\mathrm{D,max}}\)
TDLA30-35"A30"35 Hz
TDLA30-75"A30"75 Hz
TDLA30-300"A30"300 Hz
TDLC60-300"C60"300 Hz
TDLD30-75"D30"75 Hz
Notes
The scalable profiles do not define a delay spread of their own, so a value must be chosen for
delay_spread. Table 7.7.3-1 of [TR38901V1920] provides example scaling parameters for this purpose, reproduced below. They span the range of RMS delay spreads observed in measurements for the typical 5G evaluation scenarios.Model
Delay spread [ns]
Very short delay spread
\(10\)
Short delay spread
\(30\)
Nominal delay spread
\(100\)
Long delay spread
\(300\)
Very long delay spread
\(1000\)
Table 7.7.3-2, reproduced below, relates these values to scenarios and carrier frequencies, for information only. The short-delay profile is the median RMS delay spread of the LoS case, while the normal-delay and long-delay profiles are the median and the 90th percentile of the NLoS case. A TDL profile is not tied to a scenario: any of these delay spreads may occur in any scenario, but some values are more likely in some scenarios than in others. The table does not apply to the fixed-delay profiles, whose delay spread is part of the profile definition.
Delay spread [ns]
Frequency [GHz]
2
6
15
28
39
60
70
Indoor office
Short delay profile
20
16
16
16
16
16
16
Normal delay profile
39
30
24
20
18
16
16
Long delay profile
59
53
47
43
41
38
37
UMi Street-canyon
Short delay profile
65
45
37
32
30
27
26
Normal delay profile
129
93
76
66
61
55
53
Long delay profile
634
316
307
301
297
293
291
UMa
Short delay profile
93
93
85
80
78
75
74
Normal delay profile
363
363
302
266
249
228
221
Long delay profile
1148
1148
955
841
786
720
698
RMa / RMa O2I
Short delay profile
32
32
N/A
N/A
N/A
N/A
N/A
Normal delay profile
37
37
N/A
N/A
N/A
N/A
N/A
Long delay profile
153
153
N/A
N/A
N/A
N/A
N/A
UMi / UMa O2I
Normal delay profile
242
Long delay profile
616
Note
TS 38.101-4 model names combine a fixed delay profile with a maximum Doppler frequency, e.g.,
TDLA30-10. In this class,modelselects only the fixed delay profile, e.g.,model="A30". Themin_speedandmax_speedarguments are still used and determine the Doppler spread throughcarrier_frequency. To emulate a TS 38.101-4 model with maximum Doppler frequency \(f_\mathrm{D,max}\), usemax_speed = f_D_max*c/carrier_frequency, where \(c\) is the speed of light. Setmin_speedto the same value for a deterministic speed, or to a lower value to sample speeds uniformly over an interval.Attributes
- property delay_spread: torch.Tensor#
RMS delay spread [s]
- property delays: torch.Tensor#
Path delays [s]
- property k_factor: torch.Tensor#
K-factor in linear scale. Only available with LoS models.
- property mean_power_los: torch.Tensor#
LoS component power in linear scale. Only available with LoS models.
- property mean_powers: torch.Tensor#
Path powers in linear scale