This example is interactive. Click the play button on any cell to execute it, or run all cells in sequence.

Transmission Line Pulse Propagation

Simulation of pulse propagation through a lossy transmission line using the TransmissionLine block. We observe the propagation delay and attenuation of a Gaussian pulse traveling through the line.

Transmission Line Model

The TransmissionLine block models wave propagation in the scattering domain:

MATHDISPLAY0ENDMATH MATHDISPLAY1ENDMATH

where MATHINLINE2ENDMATH is the propagation delay, MATHINLINE3ENDMATH is the phase velocity, and MATHINLINE4ENDMATH is the voltage transmission coefficient.

Python
Loading...

System Setup

We send a Gaussian pulse into port 1 of a transmission line and observe the delayed output at port 2. The line has a relative permittivity of 4 (typical for FR-4 PCB material).

Python
Loading...
Phase velocity: 1.50e+08 m/s
Propagation delay: 2.00 ns
Python
Loading...
10:58:24 - INFO - LOGGING (log: True)
10:58:24 - INFO - BLOCKS (total: 3, dynamic: 0, static: 3, eventful: 0)
10:58:24 - INFO - GRAPH (nodes: 3, edges: 3, alg. depth: 1, loop depth: 0, runtime: 0.051ms)
10:58:24 - INFO - STARTING -> TRANSIENT (Duration: 0.00s)
10:58:24 - INFO - --------------------   1% | 0.0s<0.1s | 17699.0 it/s
10:58:24 - INFO - ####----------------  20% | 0.0s<0.0s | 20780.3 it/s
10:58:24 - INFO - ########------------  40% | 0.0s<0.0s | 22199.4 it/s
10:58:24 - INFO - ############--------  60% | 0.1s<0.0s | 23126.4 it/s
10:58:24 - INFO - ################----  80% | 0.1s<0.0s | 22213.5 it/s
10:58:24 - INFO - #################### 100% | 0.1s<--:-- | 19655.8 it/s
10:58:24 - INFO - FINISHED -> TRANSIENT (total steps: 1001, successful: 1001, runtime: 76.68 ms)

Lossless Propagation

The output pulse is a delayed copy of the input with the same amplitude. The delay matches the expected propagation time.

Python
Loading...
Output

Effect of Attenuation

Now let's compare different attenuation values to see how losses affect the transmitted pulse. We run separate simulations for each attenuation level and overlay the results.

Python
Loading...
10:58:24 - INFO - LOGGING (log: True)
10:58:24 - INFO - BLOCKS (total: 3, dynamic: 0, static: 3, eventful: 0)
10:58:24 - INFO - GRAPH (nodes: 3, edges: 2, alg. depth: 1, loop depth: 0, runtime: 0.042ms)
10:58:24 - INFO - STARTING -> TRANSIENT (Duration: 0.00s)
10:58:24 - INFO - --------------------   1% | 0.0s<0.0s | 24823.6 it/s
10:58:24 - INFO - ####----------------  20% | 0.0s<0.0s | 24297.0 it/s
10:58:24 - INFO - ########------------  40% | 0.0s<0.0s | 20608.0 it/s
10:58:24 - INFO - ############--------  60% | 0.0s<0.0s | 21753.3 it/s
10:58:24 - INFO - ################----  80% | 0.1s<0.0s | 21234.4 it/s
10:58:24 - INFO - #################### 100% | 0.1s<--:-- | 20686.4 it/s
10:58:24 - INFO - FINISHED -> TRANSIENT (total steps: 1001, successful: 1001, runtime: 82.75 ms)
10:58:24 - INFO - LOGGING (log: True)
10:58:24 - INFO - BLOCKS (total: 3, dynamic: 0, static: 3, eventful: 0)
10:58:24 - INFO - GRAPH (nodes: 3, edges: 2, alg. depth: 1, loop depth: 0, runtime: 0.028ms)
10:58:24 - INFO - STARTING -> TRANSIENT (Duration: 0.00s)
10:58:24 - INFO - --------------------   1% | 0.0s<0.0s | 23282.2 it/s
10:58:24 - INFO - ####----------------  20% | 0.0s<0.0s | 23542.1 it/s
10:58:24 - INFO - ########------------  40% | 0.0s<0.0s | 19380.1 it/s
10:58:24 - INFO - ############--------  60% | 0.0s<0.0s | 21867.0 it/s
10:58:24 - INFO - ################----  80% | 0.1s<0.0s | 20644.1 it/s
10:58:24 - INFO - #################### 100% | 0.1s<--:-- | 13537.4 it/s
10:58:24 - INFO - FINISHED -> TRANSIENT (total steps: 1001, successful: 1001, runtime: 77.96 ms)
10:58:24 - INFO - LOGGING (log: True)
10:58:24 - INFO - BLOCKS (total: 3, dynamic: 0, static: 3, eventful: 0)
10:58:24 - INFO - GRAPH (nodes: 3, edges: 2, alg. depth: 1, loop depth: 0, runtime: 0.031ms)
10:58:24 - INFO - STARTING -> TRANSIENT (Duration: 0.00s)
10:58:24 - INFO - --------------------   1% | 0.0s<0.0s | 23721.2 it/s
10:58:24 - INFO - ####----------------  20% | 0.0s<0.0s | 23628.3 it/s
10:58:24 - INFO - ########------------  40% | 0.0s<0.0s | 22069.3 it/s
10:58:24 - INFO - ############--------  60% | 0.0s<0.0s | 19707.3 it/s
10:58:24 - INFO - ################----  80% | 0.1s<0.0s | 21407.7 it/s
10:58:24 - INFO - #################### 100% | 0.1s<--:-- | 18866.4 it/s
10:58:24 - INFO - FINISHED -> TRANSIENT (total steps: 1001, successful: 1001, runtime: 76.83 ms)
10:58:24 - INFO - LOGGING (log: True)
10:58:24 - INFO - BLOCKS (total: 3, dynamic: 0, static: 3, eventful: 0)
10:58:24 - INFO - GRAPH (nodes: 3, edges: 2, alg. depth: 1, loop depth: 0, runtime: 0.023ms)
10:58:24 - INFO - STARTING -> TRANSIENT (Duration: 0.00s)
10:58:24 - INFO - --------------------   1% | 0.0s<0.0s | 23823.3 it/s
10:58:24 - INFO - ####----------------  20% | 0.0s<0.0s | 24342.7 it/s
10:58:24 - INFO - ########------------  40% | 0.0s<0.0s | 21119.7 it/s
10:58:24 - INFO - ############--------  60% | 0.0s<0.0s | 19744.3 it/s
10:58:24 - INFO - ################----  80% | 0.1s<0.0s | 21177.3 it/s
10:58:24 - INFO - #################### 100% | 0.1s<--:-- | 21930.8 it/s
10:58:24 - INFO - FINISHED -> TRANSIENT (total steps: 1001, successful: 1001, runtime: 78.12 ms)
Output