# puspenduph/simulink-optical-transmitters architecture

> Architecture diagram of the GitHub repository puspenduph/simulink-optical-transmitters, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-25). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/puspenduph/simulink-optical-transmitters
- Repository: https://github.com/puspenduph/simulink-optical-transmitters

## Overview

This repository provides three masked Simulink optical-transmitter models: an LED, a Fabry–Perot laser, and a quantum-well laser. The main workflow is to open and simulate a device model in MATLAB/Simulink; its initialization script prepares physical parameters and coefficients at compile time, and the model computes the device’s optical response. The LED and FP models use small-signal transfer functions, while the QW model integrates coupled rate equations and supports multiple documented test cases. Relationships reflect README documentation; model internals were not sampled.

Main entry points: [`LED/led_res.slx`](https://github.com/puspenduph/simulink-optical-transmitters/blob/main/LED/led_res.slx) (LED subsystem), [`FP Laser/laser_res.slx`](https://github.com/puspenduph/simulink-optical-transmitters/blob/main/FP%20Laser/laser_res.slx) (FP laser subsystem), [`QW Laser/qw_laser_response.slx`](https://github.com/puspenduph/simulink-optical-transmitters/blob/main/QW%20Laser/qw_laser_response.slx) (QW laser subsystem), [`LED/led_mask_init.m`](https://github.com/puspenduph/simulink-optical-transmitters/blob/main/LED/led_mask_init.m) (LED initialization)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_led["LED model"]
  node_ledmodel["LED subsystem<br/>[led_res.slx]"]
  node_ledinit["LED initialization<br/>[led_mask_init.m]"]
end

subgraph group_fp["FP laser model"]
  node_fpmodel["FP laser subsystem<br/>[laser_res.slx]"]
  node_fpinit["FP initialization<br/>[laser_tf_init.m]"]
end

subgraph group_qw["QW laser model"]
  node_qwmodel["QW laser subsystem"]
  node_qwinit["Rate-equation initialization"]
end

node_user(("Engineer"))
node_simulink["MATLAB / Simulink"]

node_user -->|"runs simulations"| node_simulink
node_simulink -->|"executes model"| node_ledmodel
node_simulink -->|"executes model"| node_fpmodel
node_simulink -->|"executes model"| node_qwmodel
node_ledmodel -->|"runs at compile"| node_ledinit
node_ledinit -->|"sets coefficients"| node_ledmodel
node_fpmodel -->|"runs at compile"| node_fpinit
node_fpinit -->|"sets coefficients"| node_fpmodel
node_qwmodel -->|"runs at compile"| node_qwinit
node_qwinit -->|"sets parameters"| node_qwmodel

click node_ledmodel "https://github.com/puspenduph/simulink-optical-transmitters/blob/main/LED/led_res.slx"
click node_ledinit "https://github.com/puspenduph/simulink-optical-transmitters/blob/main/LED/led_mask_init.m"
click node_fpmodel "https://github.com/puspenduph/simulink-optical-transmitters/blob/main/FP%20Laser/laser_res.slx"
click node_fpinit "https://github.com/puspenduph/simulink-optical-transmitters/blob/main/FP%20Laser/laser_tf_init.m"
click node_qwmodel "https://github.com/puspenduph/simulink-optical-transmitters/blob/main/QW%20Laser/qw_laser_response.slx"
click node_qwinit "https://github.com/puspenduph/simulink-optical-transmitters/blob/main/QW%20Laser/rate_equations_init.m"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_ledmodel,node_ledinit toneBlue
class node_fpmodel,node_fpinit toneAmber
class node_qwmodel,node_qwinit toneMint
class node_user,node_simulink toneIndigo
```

## Components

### LED model

- [LED subsystem](https://github.com/puspenduph/simulink-optical-transmitters/blob/main/LED/led_res.slx): `LED/led_res.slx`
- [LED initialization](https://github.com/puspenduph/simulink-optical-transmitters/blob/main/LED/led_mask_init.m): `LED/led_mask_init.m`

### FP laser model

- [FP laser subsystem](https://github.com/puspenduph/simulink-optical-transmitters/blob/main/FP%20Laser/laser_res.slx): `FP Laser/laser_res.slx`
- [FP initialization](https://github.com/puspenduph/simulink-optical-transmitters/blob/main/FP%20Laser/laser_tf_init.m): `FP Laser/laser_tf_init.m`

### QW laser model

- [QW laser subsystem](https://github.com/puspenduph/simulink-optical-transmitters/blob/main/QW%20Laser/qw_laser_response.slx): `QW Laser/qw_laser_response.slx`
- [Rate-equation initialization](https://github.com/puspenduph/simulink-optical-transmitters/blob/main/QW%20Laser/rate_equations_init.m): `QW Laser/rate_equations_init.m`

### Other components

- **Engineer**
- **MATLAB / Simulink**

## Connections

- Engineer → MATLAB / Simulink: runs simulations
- MATLAB / Simulink → LED subsystem: executes model
- MATLAB / Simulink → FP laser subsystem: executes model
- MATLAB / Simulink → QW laser subsystem: executes model
- LED subsystem → LED initialization: runs at compile
- LED initialization → LED subsystem: sets coefficients
- FP laser subsystem → FP initialization: runs at compile
- FP initialization → FP laser subsystem: sets coefficients
- QW laser subsystem → Rate-equation initialization: runs at compile
- Rate-equation initialization → QW laser subsystem: sets parameters
