![]() |
IA_CoMP
Interference Alignment and Coordinated Multipoint
|
This is a class which defines the behaviour of the nodes as need for the implemementations described in the paper: "An Experimental Investigation of SIMO, MIMO, Interference-Alignment (IA) and Coordinated Multi-Point (CoMP)", by Per Zetterberg and Nima N Moghadam, presented at the 19th International Conference on Systems, Signals and Image Processing (IWSSIP) 2012. The IA2 class is descendant class of four_multi_node which is defined in the four_multi project. More...
#include <IA2_node.hpp>
Public Member Functions | |
IA2_node (uint32_t no_ant1, uint32_t no_ant2, uint32_t skip_ant, float start_gain, uint32_t node_ix, double frequency, bool use_same_antenna, std::vector< std::string > IP_addresses, bool simulate, int receiver_delay_samples, int seed, bool run_decoder, int scenario) | |
Constructor. | |
uint32_t | frame_ix (void) |
double | get_gain (void) |
Public Attributes | |
int | codec_ix |
int | modulation_order |
double | offset_time |
std::vector< OFDM2 > | ai |
uint32_t | num_streams_per_bs |
uint32_t | num_streams_per_ms |
uint32_t | num_antennas_in_system |
cmat | waveform_rx |
cvec | waveform_tx |
cvec | waveform_tx_temp |
vec | BERraw |
The raw bit error rates of the bursts. | |
vec | BER |
The bit error rate after LDPC decoding. | |
vec | EVM |
vec | SINR |
double | SINR_temp |
int | ber_i |
bvec | input |
bvec | transmitted |
bvec | message_hat |
bvec | decoded_bits |
bvec | transmitted_hat |
vec | soft_bit |
cmat | H [8][20] |
double | time_between_frames |
uint32_t | MIMO_active_tx_node_tx |
Only the node with index MIMO_active_tx_node_tx is transmitting, requires MIMO_all_active=false. | |
bool | MIMO_closed_loop |
Set false, because closed loop MIMO is not implemented. | |
bool | MIMO_all_active |
When set to true, all BS nodes are transmitting all the time. | |
Protected Member Functions | |
virtual frame_settings | node_init (void) |
virtual frame_settings | node_process (void) |
virtual void | end_of_run (void) |
void | calculate_beamformers (void) |
void | iteration (const cmat v_old, int subcarrier_ix_start, int subcarrier_ix_stop, int increment) |
void | normalize_columns (cmat &M) |
void | calculate_v (void) |
void | format_tx_symbols (uint32_t codec_ix, uint32_t modulation_order, int stream_ix) |
void | decode_rx_symbols (uint32_t codec_ix, uint32_t modulation_order, int stream_ix) |
Protected Attributes | |
double | scaling_tx_signal |
ivec | demodulation_position |
uint32_t | d_frame_ix |
uint32_t | d_no_frames |
uint32_t | scenario |
bool | do_calculate_beamformers |
double | d_gain_rx |
double | d_gain_tx |
double | d_frequency |
ivec | interleaver_sequence |
std::string | metric |
double | logmax_scale_factor |
bool | adaptive_stop |
ivec | gen |
BERC | berc |
ivec | nrof_used_iterations |
double | target_rx_base_band_rms_ampl |
ivec | reorder_all [10] |
uint32_t | num_links |
uint32_t | num_bs |
uint32_t | num_ms |
uint32_t | num_ant_ms |
uint32_t | num_ant_bs |
cmat | v [10] |
cmat | Vbig [10] |
cvec | symbols |
std::complex< int16_t > * | feedback_buffer |
std::complex< int16_t > * | feedback_buffer0 |
std::complex< int16_t > * | feedback_buffer1 |
std::complex< int16_t > * | feedback_buffer2 |
std::vector< uint32_t > | other_node_ixs |
std::vector< void * > | pointers_to_data |
std::vector< uint32_t > | num_bytess |
int | feedback_buffer_size |
int | feedback_buffer_size_tx |
ivec | antenna_pilot_position |
ivec | antenna_pilot_position_this_bs |
ivec | known_pos_all |
bool | is_bs |
uint32_t | shift_transmit_signal_samples |
uint32_t | replicas_start |
uint32_t | replicas_spacing |
ivec | replica_positions_this_bs |
ivec | replica_positions |
ivec | stream_ix_this_node |
imat | bs_to_stream_ix |
ivec | stream_ix_to_ms_ix |
int | d_seed |
uint32_t | num_streams |
AMC | amc |
int | word_length |
double | noise_variance_norm |
double | noise_variance |
bool | d_run_decoder |
uint64_t | temp_seed |
bool | use_old_rand |
Real_Timer | timer |
Static Protected Attributes | |
static const int | iterations = 5 |
static const uint32_t | block_length = 400 |
static const uint32_t | noise_estimation_start = 1000 |
static const uint32_t | noise_estimation_length = 800 |
static const uint32_t | constraint_length = 3 |
This is a class which defines the behaviour of the nodes as need for the implemementations described in the paper: "An Experimental Investigation of SIMO, MIMO, Interference-Alignment (IA) and Coordinated Multi-Point (CoMP)", by Per Zetterberg and Nima N Moghadam, presented at the 19th International Conference on Systems, Signals and Image Processing (IWSSIP) 2012. The IA2 class is descendant class of four_multi_node which is defined in the four_multi project.
Definition at line 50 of file IA2_node.hpp.
IA2_node::IA2_node | ( | uint32_t | no_ant1, |
uint32_t | no_ant2, | ||
uint32_t | skip_ant, | ||
float | start_gain, | ||
uint32_t | node_ix, | ||
double | frequency, | ||
bool | use_same_antenna, | ||
std::vector< std::string > | IP_addresses, | ||
bool | simulate, | ||
int | receiver_delay_samples, | ||
int | seed, | ||
bool | run_decoder, | ||
int | scenario | ||
) |
Constructor.
no_ant1 | Number of USRPs in node. |
no_ant2 | Set to zero except special cases. |
skip_ant | The USRPs are assumed to have 192.168.10*(1+skip_ant).2, 192.168.10*(2+skip_ant).2,.... |
start_gain | The gain applied to the received in the first frame on all USRPs (in fact, never changed). |
node_ix | Index of the node. Determines the node behaviour. For all schemes except CoMP: node_ix=0,1,2 = base-station, 3,4,5 mobile-station. For CoMP: node_ix=0 base-station, 1,2,3=mobile-station. |
frequency | The upconversion/downconversion frequency used in TX/RX. |
use_same_antenna. | If XCVR2450 is used, setting this value to true makes the J1 antenna connector be used for both TX and RX. Setting it to false makes J1 being used for RX and J2 for TX. |
node_ix | Each node needs a unique number. Use the range from 0 to number_of_nodes_in_system-1. |
IP_addresses | Set to the IP address of the back-bone of all nodes in the system. Use dummy string, e.g. "xxx", in nodes without backbone not used. |
simulate | Set this parameter to true if you are going to do simulations using the simulate functions or if the node is one of several to be used with the super_node class, otherwise set to false. When set to false, the node will not initialize any USRPs and no USRPs are needed. |
simulate | Set this parameter to true if you are going to do simulations using the simulate functions or if the node is one of several to be used with the super_node class, otherwise set to false. When set to false, the node will not initialize any USRPs and no USRPs are needed. |
received_delay_samples. | The number of samples of delay between the transmitter and receiver. We set to 6 for simulated data and 60 for real data. |
seed | Seeds the randomization of bits in order to avoid all users transmitting the same information, always. |
run_decoder. | If true then the LDPC decoder is run, see "only_raw_bits" of the four_multi user manual. |
scenario. | Determines the behaviour of the nodes =1 IA, 2=CoMP, 3=MIMO, 4=SIMO. For MIMO there are additional parameters (public members prefixed MIMO) determining the behaviour of the nodde. |
Definition at line 22 of file IA2_node.cpp.