Time Domain#

The model of the channel in the time domain assumes pulse shaping and receive filtering are performed using a conventional sinc filter (see, e.g., [Tse]). Using sinc for transmit and receive filtering, the discrete-time domain received signal at time step \(b\) is

\[y_{v, l, b} = \sum_{u=0}^{N_{T}-1}\sum_{k=0}^{N_{TA}-1} \sum_{\ell = L_{\text{min}}}^{L_{\text{max}}} \bar{h}_{u, k, v, l, b, \ell} x_{u, k, b-\ell} + w_{v, l, b}\]

where \(x_{u, k, b}\) is the baseband symbol transmitted by transmitter \(u\) on antenna \(k\) and at time step \(b\), \(w_{v, l, b} \sim \mathcal{CN}\left(0,N_0\right)\) the additive white Gaussian noise, and \(\bar{h}_{u, k, v, l, b, \ell}\) the channel filter tap at time step \(b\) and for time-lag \(\ell\), which is given by

\[\bar{h}_{u, k, v, l, b, \ell} = \sum_{m=0}^{M-1} a_{u, k, v, l, m}\left(\frac{b}{W}\right) \text{sinc}\left( \ell - W\tau_{u, v, m} \right).\]

Note

The two parameters \(L_{\text{min}}\) and \(L_{\text{max}}\) control the smallest and largest time-lag for the discrete-time channel model, respectively. They are set when instantiating TimeChannel, GenerateTimeChannel, and when calling the utility function cir_to_time_channel(). Because the sinc filter is neither time-limited nor causal, the discrete-time channel model is not causal. Therefore, ideally, one would set \(L_{\text{min}} = -\infty\) and \(L_{\text{max}} = +\infty\). In practice, however, these two parameters need to be set to reasonable finite values. Values for these two parameters can be computed using the time_lag_discrete_time_channel() utility function from a given bandwidth and maximum delay spread. This function returns \(-6\) for \(L_{\text{min}}\). \(L_{\text{max}}\) is computed from the specified bandwidth and maximum delay spread, which default value is \(3 \mu s\). These values for \(L_{\text{min}}\) and the maximum delay spread were found to be valid for all the models available in Sionna when an RMS delay spread of 100ns is assumed.

TimeChannel(channel_model, bandwidth, ...[, ...])

Generates channel responses and applies them to channel inputs in the time domain

GenerateTimeChannel(channel_model, ...[, ...])

Generate channel responses in the time domain

ApplyTimeChannel(num_time_samples, l_tot[, ...])

Apply time domain channel responses h_time to channel inputs x, by filtering the channel inputs with time-variant channel responses.

cir_to_time_channel(bandwidth, a, tau, ...)

Compute the channel taps forming the discrete complex-baseband representation of the channel from the channel impulse response (a, tau)

time_to_ofdm_channel(h_t, rg, l_min)

Compute the channel frequency response from the discrete complex-baseband channel impulse response