IdealOscillator

Package: inet.clock.oscillator

IdealOscillator

simple module

C++ definition

Ideal strictly periodic oscillator (no drift).

Summary


Provides a constant tick length L and implements the ~IOscillator mappings without generating per-tick events.

Semantics


  • Let o be the computation origin (o ≤ now), and L = tickLength (> 0 unless 0s is used; see below).
  • Tick instants (relative to origin): τ_k = k·L for k = 1,2,… (tick at origin is not counted).
  • Mapping functions: N(Δt) = floor(Δt / L) // ticks in (0, Δt], Δt ≥ 0 I(n) = n · L, with I(0) = 0 // minimal Δt for n ticks, n ≥ 0

<b>See also:</b> ~IOscillator

Inheritance diagram

The following diagram shows inheritance relationships for this type. Unresolved types are missing from the diagram.

Extends

Name Type Description
OscillatorBase simple module

Base module for oscillators.

Parameters

Name Type Default value Description
displayStringTextFormat string "%n"

Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information

emitNumTicksSignal bool false

Enables emitting a signal at each oscillator tick, can be useful for validating the behavior of the more efficient implementation without events

oscillatorTickEventSchedulingPriority int 0

Specifies the scheduling priority of the tick event

tickLength double 0s

Constant tick length L. If 0s, the simulation time precision is used; otherwise must be > 0.

Properties

Name Value Description
class IdealOscillator
display i=block/tunnel

Signals

Name Type Unit Description
numTicksChanged unsigned long
driftRateChanged double

Statistics

Name Title Source Record Unit Interpolation Mode Description
numTicksChanged number of ticks vector sample-hold
driftRateChanged Oscillator drift rate vector ppm sample-hold

Source code

//
// Ideal strictly periodic oscillator (no drift).
//
// Summary
// -------
// Provides a constant tick length L and implements the ~IOscillator mappings
// without generating per-tick events.
//
// Semantics
// ---------
// - Let o be the computation origin (o ≤ now), and L = tickLength (> 0 unless 0s is used; see below).
// - Tick instants (relative to origin): τ_k = k·L for k = 1,2,… (tick at origin is not counted).
// - Mapping functions:
//     N(Δt) = floor(Δt / L)            // ticks in (0, Δt], Δt ≥ 0
//     I(n)  = n · L, with I(0) = 0     // minimal Δt for n ticks, n ≥ 0
//
// @see ~IOscillator
//
simple IdealOscillator extends OscillatorBase like IOscillator
{
    parameters:
        double tickLength @unit(s) = default(0s); // Constant tick length L. If 0s, the simulation time precision is used; otherwise must be > 0.
        @class(IdealOscillator);
}
File: src/inet/clock/oscillator/IdealOscillator.ned