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.yis the unmodulated 100 Hz carrier reference,sin(2π·100·t).sinAM.y/cosAM.yare amplitude modulated with a constant 100 Hz carrier and a time-varying amplitude1 + 0.5·sin(2π·2·t).sinFM.y/cosFM.yare frequency modulated with a constant amplitude of 1 and an instantaneous frequency100 + 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 ​
"""
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"]}
}
}
}
endFlattened Source
"""
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"]}
}
}
}
endTest Cases ​
Test Case case1 ​
Related ​
Examples
Experiments
Analyses