Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

The duration of a typical digital communications simulation

This page explains how long a Simthetic simulation is going to run (i.e. "how many bits are transmitted during the whole simulation".) that holds two loop controls, one 'SNR' loop control, and one 'refresh' loop control. Such combinations of loop controls is typical for a digital communications simulation system. To get an overview of the general, very flexible loop control mechanism of Simthetic, see Runtime control of a Simthetic simulation.

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.


The Simthetic parameter file has three relevant settings that determine the duration of a simulation. These concern the SNR values, the so-called "refresh loop", and the parameters of the bit error monitor.

SNR values

The section in the parameter file entitled 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.


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.

Refresh loop

The refresh loop is intended to have several independent simulation runs at each SNR value. The number that is given at the parameter number_of_loops specifies how often the simulation should be restarted at any given SNR point.


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.

Bit error monitor

Finally, the 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.


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.


To conclude: In the above example the simulation will transmit at least 3*6*5000 = 90 000 bits and at most 3*6*10000 = 180 000 bits, but both numbers have to be rounded to the next higher integer multiple of the bit source device's output_length parameter.
Generated on Mon Apr 24 21:19:19 2006 for simthetic by  doxygen 1.4.1