The question is, however, not trivial. In order to have meaningful simulation results, you need to receive enough bit errors (e.g. more than 1000). On the other hand, since of limited computation time, we would like to terminate the simulation as soon as possible. Therefore several mechanisms to determine the simulation time have been implemented in Simthetic. Please read this carefully to understand how many bits and modulation symbols actually are transmitted in one Simthetic simulation.
SNR_loop
determines the different SNRs at which a simulation is run. To get a nice BER curve, you need to have simulation results at more than one SNR value. Therefore in this section one defines a start value, an end value, and an increment for the SNR value. At each value in these iterations a complete simulation will be started until finished.Example:
start_value: 0 end_value: 10 increment: 2
This means the simulation will be run once at 0dB, a second time at 2dB, and so on at 4dB, 6dB, 8dB, and 10dB. Everything that is mentioned below will be run for six (6) times.
number_of_loops
specifies how often the simulation should be restarted at any given SNR point.Example:
number_of_loops: 3
This means that at each SNR value, the simulation will be run three (3) times. So together with the above example the simulation will already be run eighteen (3*6) times.
monitor
device that counts the bit errors has a mechanism to stop the simulation according to the received bit errors so far. This mechanism works in several steps. First of all, if a specified number max_bits
of received bits is reached, then the current simulation run is terminated. Secondly, if the specified number min_bit_errors
of received bit errors is reached, then the current simulation run is terminated as well (WATCH OUT! Don't use this option when refresh_loop
is greater than one, or you risk to obtain totally skewed results!). But this termination only happens if at least as much bits as specified by min_bits
have been received.
However, the actual number of bits is an integer multiple of the number of bits that are transmitted by the bit source device. I.e. if you specify an output_length
of 1018 bits at the bit source, then a termination "after 10 000 bits" will only turn into effect after actually transmitting 10*1018 = 10180 bits.
Example:
max_bits: 10000 min_bit_errors: 1000 min_bits: 5000
The simulation will terminate after at most 10000 bits. It will also transmit at least 5000 bits. If after transmitting 5000 bits more than 1000 bit errors have been received (which will happen at a BER higher than e.g. 2*10^-1) the simulation will stop even before transmitting 10000 bits (WATCH OUT! Don't use this option when refresh_loop
is greater than one, or you risk to obtain totally skewed results!). This means at a high (bad) BER this simulation will transmit 5000 bits whereas at a low (good) BER this simulation will transmit 10000 bits.
AGAIN WATCH OUT: If you set refresh_loop
to be greater than one, then using the min_bit_errors
option will skew your results. Don't do this. Rather set min_bit_errors
to be equally large as max_bits, so that each turn of refresh_loop
will transmit exactly the same number of bits at each realization, and the result is not skewed in the direction of the good channels.
output_length
parameter.