Skip to content
LIBRARY
Examples.Modulation.md

Examples.Modulation

Demonstrates amplitude modulation (AM) and frequency modulation (FM) using the variable-frequency/amplitude sine and cosine sources.

Mirrors Modelica.Blocks.Examples.Modulation. The carrier frequency is 100 Hz and the message (modulating) frequency is 2 Hz:

  • sine.y is the unmodulated 100 Hz carrier reference, sin(2π·100·t).

  • sinAM.y / cosAM.y are amplitude modulated with a constant 100 Hz carrier and a time-varying amplitude 1 + 0.5·sin(2π·2·t).

  • sinFM.y / cosFM.y are frequency modulated with a constant amplitude of 1 and an instantaneous frequency 100 + 50·sin(2π·2·t).

The SineVariableFrequencyAndAmplitude / CosineVariableFrequencyAndAmplitude blocks always read both amplitude and frequency from input ports, so the constant carrier frequency (AM) and constant carrier amplitude (FM) are supplied by Constant sources.

Usage

BlockComponents.Examples.Modulation()

Behavior

Source

dyad
"""
Demonstrates amplitude modulation (AM) and frequency modulation (FM) using the
variable-frequency/amplitude sine and cosine sources.

Mirrors `Modelica.Blocks.Examples.Modulation`. The carrier frequency is 100 Hz and
the message (modulating) frequency is 2 Hz:

- `sine.y` is the unmodulated 100 Hz carrier reference,
  `sin(2π·100·t)`.
- `sinAM.y` / `cosAM.y` are amplitude modulated with a constant 100 Hz carrier and a
  time-varying amplitude `1 + 0.5·sin(2π·2·t)`.
- `sinFM.y` / `cosFM.y` are frequency modulated with a constant amplitude of 1 and an
  instantaneous frequency `100 + 50·sin(2π·2·t)`.

The `SineVariableFrequencyAndAmplitude` / `CosineVariableFrequencyAndAmplitude`
blocks always read both `amplitude` and `frequency` from input ports, so the constant
carrier frequency (AM) and constant carrier amplitude (FM) are supplied by `Constant`
sources.
"""
example component Modulation
  "Unmodulated 100 Hz carrier reference"
  sine = BlockComponents.Sources.Sine(amplitude = 1, frequency = 100) {
    "Dyad": {
      "placement": {
        "diagram": {"iconName": "default", "x1": 350, "y1": 30, "x2": 450, "y2": 130, "rot": 0}
      },
      "tags": []
    }
  }
  "AM amplitude signal: 1 + 0.5*sin(2π*2*t)"
  am_amplitude = BlockComponents.Sources.Sine(amplitude = 0.5, frequency = 2, offset = 1) {
    "Dyad": {
      "placement": {
        "diagram": {"iconName": "default", "x1": 390, "y1": 610, "x2": 490, "y2": 710, "rot": 0}
      },
      "tags": []
    }
  }
  "Constant 100 Hz carrier frequency for the AM blocks"
  carrier_frequency = BlockComponents.Sources.Constant(k = 100) {
    "Dyad": {
      "placement": {
        "diagram": {"iconName": "default", "x1": 390, "y1": 820, "x2": 490, "y2": 920, "rot": 0}
      },
      "tags": []
    }
  }
  "Constant unit carrier amplitude for the FM blocks"
  carrier_amplitude = BlockComponents.Sources.Constant(k = 1) {
    "Dyad": {
      "placement": {
        "diagram": {"iconName": "default", "x1": 360, "y1": 210, "x2": 460, "y2": 310, "rot": 0}
      },
      "tags": []
    }
  }
  "FM frequency signal: 100 + 50*sin(2π*2*t)"
  fm_frequency = BlockComponents.Sources.Sine(amplitude = 50, frequency = 2, offset = 100) {
    "Dyad": {
      "placement": {
        "diagram": {"iconName": "default", "x1": 370, "y1": 370, "x2": 470, "y2": 470, "rot": 0}
      },
      "tags": []
    }
  }
  "Amplitude-modulated sine"
  sinAM = BlockComponents.Sources.SineVariableFrequencyAndAmplitude() {
    "Dyad": {
      "placement": {
        "diagram": {"iconName": "default", "x1": 700, "y1": 610, "x2": 800, "y2": 710, "rot": 0}
      },
      "tags": []
    }
  }
  "Amplitude-modulated cosine"
  cosAM = BlockComponents.Sources.CosineVariableFrequencyAndAmplitude() {
    "Dyad": {
      "placement": {
        "diagram": {"iconName": "default", "x1": 700, "y1": 830, "x2": 800, "y2": 930, "rot": 0}
      },
      "tags": []
    }
  }
  "Frequency-modulated sine"
  sinFM = BlockComponents.Sources.SineVariableFrequencyAndAmplitude() {
    "Dyad": {
      "placement": {
        "diagram": {"iconName": "default", "x1": 690, "y1": 360, "x2": 790, "y2": 460, "rot": 0}
      },
      "tags": []
    }
  }
  "Frequency-modulated cosine"
  cosFM = BlockComponents.Sources.CosineVariableFrequencyAndAmplitude() {
    "Dyad": {
      "placement": {
        "diagram": {"iconName": "default", "x1": 680, "y1": 200, "x2": 780, "y2": 300, "rot": 0}
      },
      "tags": []
    }
  }
relations
  connect(am_amplitude.y, sinAM.amplitude) {
    "Dyad": {
      "edges": [{"S": 1, "M": [{"x": 610, "y": 660}, {"x": 610, "y": 632}], "E": 2}],
      "renderStyle": "standard"
    }
  }
  connect(am_amplitude.y, cosAM.amplitude) {
    "Dyad": {
      "edges": [{"S": 1, "M": [{"x": 610, "y": 660}, {"x": 610, "y": 854}], "E": 2}],
      "renderStyle": "standard"
    }
  }
  connect(carrier_frequency.y, sinAM.frequency) {
    "Dyad": {
      "edges": [{"S": 1, "M": [{"x": 560, "y": 870}, {"x": 560, "y": 683}], "E": 2}],
      "renderStyle": "standard"
    }
  }
  connect(carrier_frequency.y, cosAM.frequency) {
    "Dyad": {
      "edges": [{"S": 1, "M": [{"x": 560, "y": 870}, {"x": 560, "y": 903}], "E": 2}],
      "renderStyle": "standard"
    }
  }
  connect(fm_frequency.y, sinFM.frequency) {
    "Dyad": {
      "edges": [{"S": 1, "M": [{"x": 530, "y": 420}, {"x": 530, "y": 433}], "E": 2}],
      "renderStyle": "standard"
    }
  }
  connect(fm_frequency.y, cosFM.frequency) {
    "Dyad": {
      "edges": [{"S": 1, "M": [{"x": 530, "y": 420}, {"x": 530, "y": 273}], "E": 2}],
      "renderStyle": "standard"
    }
  }
  connect(sinFM.amplitude, carrier_amplitude.y) {
    "Dyad": {
      "edges": [{"S": 1, "M": [{"x": 565, "y": 382}, {"x": 565, "y": 260}], "E": 2}],
      "renderStyle": "standard"
    }
  }
  connect(cosFM.amplitude, carrier_amplitude.y) {
    "Dyad": {
      "edges": [{"S": 1, "M": [{"x": 565, "y": 224}, {"x": 565, "y": 260}], "E": 2}],
      "renderStyle": "standard"
    }
  }
metadata {
  "Dyad": {
    "icons": {"default": "dyad://BlockComponents/Example.svg"},
    "tests": {
      "case1": {"stop": 1, "signals": ["sine.y", "sinAM.y", "cosAM.y", "sinFM.y", "cosFM.y"]}
    }
  }
}
end
Flattened Source
dyad
"""
Demonstrates amplitude modulation (AM) and frequency modulation (FM) using the
variable-frequency/amplitude sine and cosine sources.

Mirrors `Modelica.Blocks.Examples.Modulation`. The carrier frequency is 100 Hz and
the message (modulating) frequency is 2 Hz:

- `sine.y` is the unmodulated 100 Hz carrier reference,
  `sin(2π·100·t)`.
- `sinAM.y` / `cosAM.y` are amplitude modulated with a constant 100 Hz carrier and a
  time-varying amplitude `1 + 0.5·sin(2π·2·t)`.
- `sinFM.y` / `cosFM.y` are frequency modulated with a constant amplitude of 1 and an
  instantaneous frequency `100 + 50·sin(2π·2·t)`.

The `SineVariableFrequencyAndAmplitude` / `CosineVariableFrequencyAndAmplitude`
blocks always read both `amplitude` and `frequency` from input ports, so the constant
carrier frequency (AM) and constant carrier amplitude (FM) are supplied by `Constant`
sources.
"""
example component Modulation
  "Unmodulated 100 Hz carrier reference"
  sine = BlockComponents.Sources.Sine(amplitude = 1, frequency = 100) {
    "Dyad": {
      "placement": {
        "diagram": {"iconName": "default", "x1": 350, "y1": 30, "x2": 450, "y2": 130, "rot": 0}
      },
      "tags": []
    }
  }
  "AM amplitude signal: 1 + 0.5*sin(2π*2*t)"
  am_amplitude = BlockComponents.Sources.Sine(amplitude = 0.5, frequency = 2, offset = 1) {
    "Dyad": {
      "placement": {
        "diagram": {"iconName": "default", "x1": 390, "y1": 610, "x2": 490, "y2": 710, "rot": 0}
      },
      "tags": []
    }
  }
  "Constant 100 Hz carrier frequency for the AM blocks"
  carrier_frequency = BlockComponents.Sources.Constant(k = 100) {
    "Dyad": {
      "placement": {
        "diagram": {"iconName": "default", "x1": 390, "y1": 820, "x2": 490, "y2": 920, "rot": 0}
      },
      "tags": []
    }
  }
  "Constant unit carrier amplitude for the FM blocks"
  carrier_amplitude = BlockComponents.Sources.Constant(k = 1) {
    "Dyad": {
      "placement": {
        "diagram": {"iconName": "default", "x1": 360, "y1": 210, "x2": 460, "y2": 310, "rot": 0}
      },
      "tags": []
    }
  }
  "FM frequency signal: 100 + 50*sin(2π*2*t)"
  fm_frequency = BlockComponents.Sources.Sine(amplitude = 50, frequency = 2, offset = 100) {
    "Dyad": {
      "placement": {
        "diagram": {"iconName": "default", "x1": 370, "y1": 370, "x2": 470, "y2": 470, "rot": 0}
      },
      "tags": []
    }
  }
  "Amplitude-modulated sine"
  sinAM = BlockComponents.Sources.SineVariableFrequencyAndAmplitude() {
    "Dyad": {
      "placement": {
        "diagram": {"iconName": "default", "x1": 700, "y1": 610, "x2": 800, "y2": 710, "rot": 0}
      },
      "tags": []
    }
  }
  "Amplitude-modulated cosine"
  cosAM = BlockComponents.Sources.CosineVariableFrequencyAndAmplitude() {
    "Dyad": {
      "placement": {
        "diagram": {"iconName": "default", "x1": 700, "y1": 830, "x2": 800, "y2": 930, "rot": 0}
      },
      "tags": []
    }
  }
  "Frequency-modulated sine"
  sinFM = BlockComponents.Sources.SineVariableFrequencyAndAmplitude() {
    "Dyad": {
      "placement": {
        "diagram": {"iconName": "default", "x1": 690, "y1": 360, "x2": 790, "y2": 460, "rot": 0}
      },
      "tags": []
    }
  }
  "Frequency-modulated cosine"
  cosFM = BlockComponents.Sources.CosineVariableFrequencyAndAmplitude() {
    "Dyad": {
      "placement": {
        "diagram": {"iconName": "default", "x1": 680, "y1": 200, "x2": 780, "y2": 300, "rot": 0}
      },
      "tags": []
    }
  }
relations
  connect(am_amplitude.y, sinAM.amplitude) {
    "Dyad": {
      "edges": [{"S": 1, "M": [{"x": 610, "y": 660}, {"x": 610, "y": 632}], "E": 2}],
      "renderStyle": "standard"
    }
  }
  connect(am_amplitude.y, cosAM.amplitude) {
    "Dyad": {
      "edges": [{"S": 1, "M": [{"x": 610, "y": 660}, {"x": 610, "y": 854}], "E": 2}],
      "renderStyle": "standard"
    }
  }
  connect(carrier_frequency.y, sinAM.frequency) {
    "Dyad": {
      "edges": [{"S": 1, "M": [{"x": 560, "y": 870}, {"x": 560, "y": 683}], "E": 2}],
      "renderStyle": "standard"
    }
  }
  connect(carrier_frequency.y, cosAM.frequency) {
    "Dyad": {
      "edges": [{"S": 1, "M": [{"x": 560, "y": 870}, {"x": 560, "y": 903}], "E": 2}],
      "renderStyle": "standard"
    }
  }
  connect(fm_frequency.y, sinFM.frequency) {
    "Dyad": {
      "edges": [{"S": 1, "M": [{"x": 530, "y": 420}, {"x": 530, "y": 433}], "E": 2}],
      "renderStyle": "standard"
    }
  }
  connect(fm_frequency.y, cosFM.frequency) {
    "Dyad": {
      "edges": [{"S": 1, "M": [{"x": 530, "y": 420}, {"x": 530, "y": 273}], "E": 2}],
      "renderStyle": "standard"
    }
  }
  connect(sinFM.amplitude, carrier_amplitude.y) {
    "Dyad": {
      "edges": [{"S": 1, "M": [{"x": 565, "y": 382}, {"x": 565, "y": 260}], "E": 2}],
      "renderStyle": "standard"
    }
  }
  connect(cosFM.amplitude, carrier_amplitude.y) {
    "Dyad": {
      "edges": [{"S": 1, "M": [{"x": 565, "y": 224}, {"x": 565, "y": 260}], "E": 2}],
      "renderStyle": "standard"
    }
  }
metadata {
  "Dyad": {
    "icons": {"default": "dyad://BlockComponents/Example.svg"},
    "tests": {
      "case1": {"stop": 1, "signals": ["sine.y", "sinAM.y", "cosAM.y", "sinFM.y", "cosFM.y"]}
    }
  }
}
end


Test Cases

Test Case case1

  • Examples

  • Experiments

  • Analyses