# guido57/ebaz4205_sdr_spectrum architecture

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

- Interactive diagram: https://gitdiagram.com/guido57/ebaz4205_sdr_spectrum
- Repository: https://github.com/guido57/ebaz4205_sdr_spectrum

## Overview

The repository combines an EBAZ4205 SDR platform with separate FPGA/Linux support projects and Qt applications. Its central user workflow is viewing a 0–32 MHz spectrum and tuning HF AM/LSB/USB stations; a separate application decodes FT8. The README also identifies a Vitis color-bar/HDMI configuration utility and a framebuffer VNC server. Paths for several major subsystems are supported by the tree and README, but their runtime wiring is not shown in the sampled source, so uncertain connections are omitted.

Main entry points: [`qt5/myjtdx`](https://github.com/guido57/ebaz4205_sdr_spectrum/tree/main/qt5/myjtdx) (FT8 and weak-signal app), [`Vitis/Capture_RF/Capture_RF_lib/src`](https://github.com/guido57/ebaz4205_sdr_spectrum/tree/main/Vitis/Capture_RF/Capture_RF_lib/src) (RF capture), [`qt5/myjtdx/MessageClient.cpp`](https://github.com/guido57/ebaz4205_sdr_spectrum/blob/main/qt5/myjtdx/MessageClient.cpp) (UDP message client), [`Vitis/colorbars/EBAZ4205_SDR_HDMI_PS2/src`](https://github.com/guido57/ebaz4205_sdr_spectrum/tree/main/Vitis/colorbars/EBAZ4205_SDR_HDMI_PS2/src) (Video display drivers)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_sdr["SDR operation"]
  node_sdr_app["Spectrum and tuning UI"]
  node_rf_capture["RF capture"]
  node_fpga_dsp["FPGA signal processing"]
  node_ad9851["AD9851 control"]
end

subgraph group_digital["Digital modes"]
  node_jtdx["FT8 and weak-signal app"]
  node_wsprd["WSPR decoder<br/>[wsprd.c]"]
  node_udp_client["UDP message client<br/>[MessageClient.cpp]"]
  node_radio_control["Radio control API<br/>[rig.h]"]
end

subgraph group_platform["Board and display"]
  node_linux["PetaLinux system"]
  node_gpio_driver["GPIO driver<br/>[zgpio.c]"]
  node_colorbars["HDMI color-bar utility<br/>[display_demo.c]"]
  node_video_driver["Video display drivers"]
  node_vnc["Framebuffer VNC server"]
  node_framebuffer["Linux framebuffer"]
end

node_operator(("Radio operator"))
node_udp_server(("UDP message peer"))
node_hdmi["HDMI display"]

node_operator -->|"tunes and views"| node_sdr_app
node_operator -->|"runs decoder"| node_jtdx
node_rf_capture -.->|"captures for processing"| node_fpga_dsp
node_ad9851 -.->|"controls synthesis"| node_rf_capture
node_jtdx -.->|"decodes WSPR"| node_wsprd
node_jtdx -->|"sends and receives"| node_udp_client
node_udp_client -->|"exchanges datagrams"| node_udp_server
node_jtdx -.->|"uses rig interface"| node_radio_control
node_linux -->|"hosts driver"| node_gpio_driver
node_colorbars -->|"configures video"| node_video_driver
node_video_driver -->|"drives output"| node_hdmi
node_vnc -->|"reads pixels"| node_framebuffer

click node_sdr_app "https://github.com/guido57/ebaz4205_sdr_spectrum/tree/main/qt5/sdr-app"
click node_rf_capture "https://github.com/guido57/ebaz4205_sdr_spectrum/tree/main/Vitis/Capture_RF/Capture_RF_lib/src"
click node_fpga_dsp "https://github.com/guido57/ebaz4205_sdr_spectrum/tree/main/CIC_FIR_2C_"
click node_ad9851 "https://github.com/guido57/ebaz4205_sdr_spectrum/tree/main/AD9851_test"
click node_jtdx "https://github.com/guido57/ebaz4205_sdr_spectrum/tree/main/qt5/myjtdx"
click node_wsprd "https://github.com/guido57/ebaz4205_sdr_spectrum/blob/main/qt5/myjtdx/lib/wsprd/wsprd.c"
click node_udp_client "https://github.com/guido57/ebaz4205_sdr_spectrum/blob/main/qt5/myjtdx/MessageClient.cpp"
click node_radio_control "https://github.com/guido57/ebaz4205_sdr_spectrum/blob/main/qt5/myjtdx/hamlib-ebaz/include/hamlib/rig.h"
click node_linux "https://github.com/guido57/ebaz4205_sdr_spectrum/tree/main/PetaLinux"
click node_gpio_driver "https://github.com/guido57/ebaz4205_sdr_spectrum/blob/main/PetaLinux/project-spec/meta-user/recipes-modules/zgpio/files/zgpio.c"
click node_colorbars "https://github.com/guido57/ebaz4205_sdr_spectrum/blob/main/Vitis/colorbars/EBAZ4205_SDR_HDMI_PS2/src/display_demo.c"
click node_video_driver "https://github.com/guido57/ebaz4205_sdr_spectrum/tree/main/Vitis/colorbars/EBAZ4205_SDR_HDMI_PS2/src"
click node_vnc "https://github.com/guido57/ebaz4205_sdr_spectrum/blob/main/qt5/vncfb/framebuffer-vncserver.c"

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_sdr_app,node_rf_capture,node_fpga_dsp,node_ad9851 toneBlue
class node_jtdx,node_wsprd,node_udp_client,node_radio_control toneAmber
class node_linux,node_gpio_driver,node_colorbars,node_video_driver,node_vnc,node_framebuffer toneMint
class node_operator,node_udp_server,node_hdmi toneIndigo
```

## Components

### SDR operation

- [Spectrum and tuning UI](https://github.com/guido57/ebaz4205_sdr_spectrum/tree/main/qt5/sdr-app): `qt5/sdr-app`
- [RF capture](https://github.com/guido57/ebaz4205_sdr_spectrum/tree/main/Vitis/Capture_RF/Capture_RF_lib/src): `Vitis/Capture_RF/Capture_RF_lib/src`
- [FPGA signal processing](https://github.com/guido57/ebaz4205_sdr_spectrum/tree/main/CIC_FIR_2C_): `CIC_FIR_2C_`
- [AD9851 control](https://github.com/guido57/ebaz4205_sdr_spectrum/tree/main/AD9851_test): `AD9851_test`

### Digital modes

- [FT8 and weak-signal app](https://github.com/guido57/ebaz4205_sdr_spectrum/tree/main/qt5/myjtdx): `qt5/myjtdx`
- [WSPR decoder](https://github.com/guido57/ebaz4205_sdr_spectrum/blob/main/qt5/myjtdx/lib/wsprd/wsprd.c): `qt5/myjtdx/lib/wsprd/wsprd.c`
- [UDP message client](https://github.com/guido57/ebaz4205_sdr_spectrum/blob/main/qt5/myjtdx/MessageClient.cpp): `qt5/myjtdx/MessageClient.cpp`
- [Radio control API](https://github.com/guido57/ebaz4205_sdr_spectrum/blob/main/qt5/myjtdx/hamlib-ebaz/include/hamlib/rig.h): `qt5/myjtdx/hamlib-ebaz/include/hamlib/rig.h`

### Board and display

- [PetaLinux system](https://github.com/guido57/ebaz4205_sdr_spectrum/tree/main/PetaLinux): `PetaLinux`
- [GPIO driver](https://github.com/guido57/ebaz4205_sdr_spectrum/blob/main/PetaLinux/project-spec/meta-user/recipes-modules/zgpio/files/zgpio.c): `PetaLinux/project-spec/meta-user/recipes-modules/zgpio/files/zgpio.c`
- [HDMI color-bar utility](https://github.com/guido57/ebaz4205_sdr_spectrum/blob/main/Vitis/colorbars/EBAZ4205_SDR_HDMI_PS2/src/display_demo.c): `Vitis/colorbars/EBAZ4205_SDR_HDMI_PS2/src/display_demo.c`
- [Video display drivers](https://github.com/guido57/ebaz4205_sdr_spectrum/tree/main/Vitis/colorbars/EBAZ4205_SDR_HDMI_PS2/src): `Vitis/colorbars/EBAZ4205_SDR_HDMI_PS2/src`
- [Framebuffer VNC server](https://github.com/guido57/ebaz4205_sdr_spectrum/blob/main/qt5/vncfb/framebuffer-vncserver.c): `qt5/vncfb/framebuffer-vncserver.c`
- **Linux framebuffer**

### Other components

- **Radio operator**
- **UDP message peer**
- **HDMI display**

## Connections

- Radio operator → Spectrum and tuning UI: tunes and views
- Radio operator → FT8 and weak-signal app: runs decoder
- RF capture → FPGA signal processing: captures for processing
- AD9851 control → RF capture: controls synthesis
- FT8 and weak-signal app → WSPR decoder: decodes WSPR
- FT8 and weak-signal app → UDP message client: sends and receives
- UDP message client → UDP message peer: exchanges datagrams
- FT8 and weak-signal app → Radio control API: uses rig interface
- PetaLinux system → GPIO driver: hosts driver
- HDMI color-bar utility → Video display drivers: configures video
- Video display drivers → HDMI display: drives output
- Framebuffer VNC server → Linux framebuffer: reads pixels
