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_loopdetermines 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.
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_loopsspecifies how often the simulation should be restarted at any given SNR point.
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.
monitordevice 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_bitsof received bits is reached, then the current simulation run is terminated. Secondly, if the specified number
min_bit_errorsof received bit errors is reached, then the current simulation run is terminated as well (WATCH OUT! Don't use this option when
refresh_loopis 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_bitshave 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.
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.