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:
- 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:
Combining - apply the combining matrix G_k to the received signal y_k to obtain the scaled decision variables z_k_s
Equalization - apply the equalization coefficients C_eq_k to the scaled decision variables z_k_s to obtain the decision variables u_k_s
Detection - estimate the transmitted symbol streams a_k_s based on the decision variables u_k_s
Demapping - convert the estimated symbol streams a_k_s_hat to the corresponding estimated bit streams b_k_s_hat
Bit Deallocation - reconstruct the estimated bitstream from the estimated bit streams b_k_s_hat