User Terminal (Detailed Documentation)

This page provides the complete documentation of the user terminal class.

class UserTerminal(ut_id: int, Nr: int, configs: UserTerminalConfig)[source]

Represents a user terminal (UT) in a MU-MIMO downlink system.

__init__(ut_id: int, Nr: int, configs: UserTerminalConfig)[source]

Initialize a user terminal.

Parameters:
  • ut_id (int) – The ID of the UT, which is used to identify the UT in the system.

  • Nr (int) – The number of receive antennas at the UT. This is equal for all UTs in the system.

  • configs (UserTerminalConfig) – The configuration of the processing components (combiner, detector, demapper and bit deallocator) in the UT.

reset_state() None[source]

Reset the state of the user terminal.

It clears the channel matrix H_k, the combining matrix G_k, the equalization coefficients C_eq_k, the information bit rates ibr_k and the number of data streams Ns_k for the previous channel realization and SNR.

receive_pilots(rx_pilots_msg: ReceivePilotMessage) None[source]

Receive and process the pilot message from the BS.

Normally, the pilot signals are used to estimate the current channel matrix H_k. We do not consider channel estimation in this framework, so we directly retrieve the channel matrix H_k from the received pilot message.

In case of non-coordinated beamforming, a suboptimal combining matrix G_k is computed based on the current channel. The state of the UT is updated to the current channel realization.

Parameters:

rx_pilots_msg (ReceivePilotMessage) – The pilot message received by the UT.

transmit_feedback() TransmitFeedbackMessage[source]

Transmit the feedback message from the UT through the channel.

The feedback message contains the effective channel matrix for this UT and the UT ID. In case of non-coordinated beamforming, the effective channel matrix is equal to the product of the combining matrix G_k and the channel matrix H_k. In case of coordinated beamforming, the effective channel matrix is equal to the channel matrix H_k.

Returns:

tx_fb_msg – The feedback message transmitted by the UT.

Return type:

TransmitFeedbackMessage

receive_feedforward(rx_ff_msg: ReceiveFeedforwardMessage) None[source]

Receive and process the feedforward message from the BS.

The feedforward message contains the constellation type c_type_k, the power allocation P_k, the information bit rates ibr_k, and the number of data streams Ns_k of this UT, for the current channel realization and SNR. In case of coordinated beamforming, it also contains the combining matrix G_k for this UT.

Parameters:

rx_ff_msg (ReceiveFeedforwardMessage) – The feedforward message received by the UT.

receive(y_k: ndarray[tuple[Any, ...], dtype[complexfloating]]) list[ndarray[tuple[Any, ...], dtype[integer]]][source]

Simulate the receive processing chain of the UT on the received signal y_k to obtain the estimated bitstreams b_k_s_hat.

The processing chain consists of the following steps:

  1. Combining - apply the combining matrix G_k to the received signal y_k to obtain the scaled decision variables z_k_s

  2. Equalization - apply the equalization coefficients C_eq_k to the scaled decision variables z_k_s to obtain the decision variables u_k_s

  3. Detection - estimate the transmitted symbol streams a_k_s based on the decision variables u_k_s

  4. Demapping - convert the estimated symbol streams a_k_s_hat to the corresponding estimated bit streams b_k_s_hat

  5. Bit Deallocation - reconstruct the estimated bitstream from the estimated bit streams b_k_s_hat

Parameters:

y_k (ComplexArray, shape (Nr, M)) – The received signal at this UT.

Returns:

rx_bits_list – The list of estimated bitstreams for each data stream s of this UT.

Return type:

list[BitArray], shape (Ns_k, ibr_k_s * M)