MU-MIMO System¶
Overview¶
The MuMimoSystem class represents the complete MU-MIMO downlink digital communication system. It acts as the central coordinator between the three core components:
A
BaseStation(BS) — responsible for bit allocation, mapping and precoding.A
Channel— responsible for propagating signals and control messages between the BS and the UTs.A set of
UserTerminal(UT) instances — each responsible for combining, equalizing, detecting and demapping the received signal.
The system is driven by the SimulationRunner, which calls the three methods of this class in the following order for each channel realization:
reset() → configure() → communicate()
System Phases¶
Reset¶
mu_mimo_system.reset(csi)
Clears the state of all components and prepares the system for a new channel realization. Concretely:
The BS state (
state) is cleared.Each UT state (
state) is cleared.The channel state is reset: the SNR is set (or defaults to \(\infty\)) and a new channel matrix \(\mathbf{H}\) is generated by the channel model if not provided.
Configuration¶
mu_mimo_system.configure()
Exchanges control messages between the BS and the UTs to determine bit allocation, precoding matrix and combining matrix for the current channel realization. It proceeds in three phases:
Data Transmission¶
tx_bits_list, rx_bits_list = mu_mimo_system.communicate(M)
A simulation of the complete data transmission for \(M\) symbol vectors. It consists of three steps:
The method returns the transmitted and reconstructed bitstreams for all UTs, which are used by the SimulationRunner to compute the performance metrics (BER, IBR, …).
Documentation¶
- class MuMimoSystem(system_config: SystemConfig)[source]¶
Represents a MU-MIMO downlink digital communication system.
- reset(cs: ChannelState) ChannelState[source]¶
Resets the MU-MIMO system.
After resetting, the system is ready for configuration. For more datail on the reset phase, we refer to the reset_state() methods of the BS, UTs and channel.
- Parameters:
cs (ChannelState) – The channel state to reset to.
- configure() None[source]¶
Configuration the MU-MIMO system.
Make sure the system has been reset first. After configuration, the system is ready for communication. For more datails on the configuration phase, we refer to the receive, propagate and transmit methods of the pilot signals, feedback messages and feedforward messages of the BS, UTs and channel.
- Returns:
capacity – The capacity of each stream of each UT for the current channel realization, SNR value and system configurations.
- Return type:
RealArray, shape (K, Nr)
- communicate(M: int) tuple[list[list[ndarray[tuple[Any, ...], dtype[integer]]]], list[list[ndarray[tuple[Any, ...], dtype[integer]]]]][source]¶
Communication of the MU-MIMO system.
Make sure the system has been configured first. After communication, performance evaluation can be performed. For more datails on the communication phase, we refer to the transmit method of the BS, the propagate method of the channel and the receive method of the UTs.
- Parameters:
M (int) – The number of symbol vector transmissions for this channel realization and SNR.
- Returns:
tx_bits_list (list[list[BitArray]], shape (K, Ns_k, ibr_k_s * M)) – The list of bitstreams for each UT k and each data stream s that were transmitted by the BS.
rx_bits_list (list[list[BitArray]], shape (K, Ns_k, ibr_k_s * M)) – The list of bitstreams for each UT k and each data stream s that were received by the UTs.