# johnathan-convertino-afrl/open1553 architecture

> Architecture diagram of the GitHub repository johnathan-convertino-afrl/open1553, 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/johnathan-convertino-afrl/open1553
- Repository: https://github.com/johnathan-convertino-afrl/open1553

## Overview

open1553 is a collection of FPGA-based MIL-STD-1553 interface designs for the PMOD1553 device, with UART and AXI-stream FIFO host paths. The documented workflow carries 1553 command/status and data words through an FPGA project and the PMOD electrical interface; host applications exchange the documented ASCII representation or file data. The tree identifies protocol utilities and target projects, but sampled source does not show their instantiations or the complete FPGA datapath, so those internal connections are intentionally limited.

Main entry points: [`hardware/pmod`](https://github.com/johnathan-convertino-afrl/open1553/tree/master/hardware/pmod) (PMOD1553 interface), [`HDL/projects/fifo_pmod1553`](https://github.com/johnathan-convertino-afrl/open1553/tree/master/HDL/projects/fifo_pmod1553) (FIFO projects), [`apps/python/uart1553_server.py`](https://github.com/johnathan-convertino-afrl/open1553/blob/master/apps/python/uart1553_server.py) (UART file server), [`HDL/projects/uart_pmod1553`](https://github.com/johnathan-convertino-afrl/open1553/tree/master/HDL/projects/uart_pmod1553) (UART projects)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_projects["FPGA targets"]
  node_uarttargets["UART projects"]
  node_fifotargets["FIFO projects"]
  node_fmctarget["FMC project"]
  node_uartboard["UART board targets"]
  node_fifoboard["FIFO board targets"]
end

subgraph group_hdl["1553 HDL"]
  node_uartcore["UART 1553 core"]
  node_decoder["1553 decoders"]
  node_encoder["1553 encoders"]
  node_stringdecoder["String decoder"]
  node_stringencoder["String encoder"]
  node_fifoip["AXIS FIFO IP"]
end

subgraph group_host["Host software"]
  node_uartapp["UART file server<br/>[uart1553_server.py]"]
  node_fifoapp["FIFO file client<br/>[fifo1553_client.py]"]
  node_driver["AXIS FIFO driver<br/>[axis-fifo.c]"]
end

subgraph group_hardware["Physical interface"]
  node_pmod["PMOD1553 interface"]
end

node_operator(("Host operator"))
node_bus(("1553 bus"))

node_operator -->|"supplies file"| node_uartapp
node_uartapp -->|"serial messages"| node_uarttargets
node_uarttargets -->|"implements interface"| node_uartcore
node_uartcore -->|"drives interface"| node_pmod
node_pmod -->|"transmits and receives"| node_bus
node_bus -->|"1553 signals"| node_pmod
node_operator -->|"starts transfer"| node_fifoapp
node_fifoapp -->|"reads and writes"| node_driver
node_driver -->|"controls FIFO"| node_fifoip
node_fifotargets -->|"uses FIFO path"| node_fifoip
node_fifotargets -->|"interfaces to device"| node_pmod
node_fmctarget -->|"uses FIFO path"| node_fifoip
node_fmctarget -->|"interfaces to device"| node_pmod
node_decoder -.->|"decodes streams"| node_stringdecoder
node_stringencoder -.->|"encodes streams"| node_encoder
node_uartapp -->|"ASCII protocol"| node_uarttargets
node_fifotargets -.->|"1553 receive"| node_decoder
node_fifotargets -.->|"1553 transmit"| node_encoder

click node_uartapp "https://github.com/johnathan-convertino-afrl/open1553/blob/master/apps/python/uart1553_server.py"
click node_fifoapp "https://github.com/johnathan-convertino-afrl/open1553/blob/master/apps/python/fifo1553_client.py"
click node_driver "https://github.com/johnathan-convertino-afrl/open1553/blob/master/linux/axisfifo/axis-fifo.c"
click node_uarttargets "https://github.com/johnathan-convertino-afrl/open1553/tree/master/HDL/projects/uart_pmod1553"
click node_fifotargets "https://github.com/johnathan-convertino-afrl/open1553/tree/master/HDL/projects/fifo_pmod1553"
click node_fmctarget "https://github.com/johnathan-convertino-afrl/open1553/tree/master/HDL/projects/fmc1553"
click node_uartcore "https://github.com/johnathan-convertino-afrl/open1553/tree/master/HDL/library/util_uart_1553_core/src"
click node_decoder "https://github.com/johnathan-convertino-afrl/open1553/tree/master/HDL/library/util_axis_1553_decoder/src"
click node_encoder "https://github.com/johnathan-convertino-afrl/open1553/tree/master/HDL/library/util_axis_1553_encoder/src"
click node_stringdecoder "https://github.com/johnathan-convertino-afrl/open1553/tree/master/HDL/library/util_axis_1553_string_decoder/src"
click node_stringencoder "https://github.com/johnathan-convertino-afrl/open1553/tree/master/HDL/library/util_axis_1553_string_encoder/src"
click node_fifoip "https://github.com/johnathan-convertino-afrl/open1553/tree/master/HDL/library"
click node_uartboard "https://github.com/johnathan-convertino-afrl/open1553/tree/master/HDL/projects/uart_pmod1553"
click node_fifoboard "https://github.com/johnathan-convertino-afrl/open1553/tree/master/HDL/projects/fifo_pmod1553"
click node_pmod "https://github.com/johnathan-convertino-afrl/open1553/tree/master/hardware/pmod"

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_uarttargets,node_fifotargets,node_fmctarget,node_uartboard,node_fifoboard toneBlue
class node_uartcore,node_decoder,node_encoder,node_stringdecoder,node_stringencoder,node_fifoip toneAmber
class node_uartapp,node_fifoapp,node_driver toneMint
class node_pmod toneRose
class node_operator,node_bus toneIndigo
```

## Components

### FPGA targets

- [UART projects](https://github.com/johnathan-convertino-afrl/open1553/tree/master/HDL/projects/uart_pmod1553): `HDL/projects/uart_pmod1553`
- [FIFO projects](https://github.com/johnathan-convertino-afrl/open1553/tree/master/HDL/projects/fifo_pmod1553): `HDL/projects/fifo_pmod1553`
- [FMC project](https://github.com/johnathan-convertino-afrl/open1553/tree/master/HDL/projects/fmc1553): `HDL/projects/fmc1553`
- [UART board targets](https://github.com/johnathan-convertino-afrl/open1553/tree/master/HDL/projects/uart_pmod1553): `HDL/projects/uart_pmod1553`
- [FIFO board targets](https://github.com/johnathan-convertino-afrl/open1553/tree/master/HDL/projects/fifo_pmod1553): `HDL/projects/fifo_pmod1553`

### 1553 HDL

- [UART 1553 core](https://github.com/johnathan-convertino-afrl/open1553/tree/master/HDL/library/util_uart_1553_core/src): `HDL/library/util_uart_1553_core/src`
- [1553 decoders](https://github.com/johnathan-convertino-afrl/open1553/tree/master/HDL/library/util_axis_1553_decoder/src): `HDL/library/util_axis_1553_decoder/src`
- [1553 encoders](https://github.com/johnathan-convertino-afrl/open1553/tree/master/HDL/library/util_axis_1553_encoder/src): `HDL/library/util_axis_1553_encoder/src`
- [String decoder](https://github.com/johnathan-convertino-afrl/open1553/tree/master/HDL/library/util_axis_1553_string_decoder/src): `HDL/library/util_axis_1553_string_decoder/src`
- [String encoder](https://github.com/johnathan-convertino-afrl/open1553/tree/master/HDL/library/util_axis_1553_string_encoder/src): `HDL/library/util_axis_1553_string_encoder/src`
- [AXIS FIFO IP](https://github.com/johnathan-convertino-afrl/open1553/tree/master/HDL/library): `HDL/library`

### Host software

- [UART file server](https://github.com/johnathan-convertino-afrl/open1553/blob/master/apps/python/uart1553_server.py): `apps/python/uart1553_server.py`
- [FIFO file client](https://github.com/johnathan-convertino-afrl/open1553/blob/master/apps/python/fifo1553_client.py): `apps/python/fifo1553_client.py`
- [AXIS FIFO driver](https://github.com/johnathan-convertino-afrl/open1553/blob/master/linux/axisfifo/axis-fifo.c): `linux/axisfifo/axis-fifo.c`

### Physical interface

- [PMOD1553 interface](https://github.com/johnathan-convertino-afrl/open1553/tree/master/hardware/pmod): `hardware/pmod`

### Other components

- **Host operator**
- **1553 bus**

## Connections

- Host operator → UART file server: supplies file
- UART file server → UART projects: serial messages
- UART projects → UART 1553 core: implements interface
- UART 1553 core → PMOD1553 interface: drives interface
- PMOD1553 interface → 1553 bus: transmits and receives
- 1553 bus → PMOD1553 interface: 1553 signals
- Host operator → FIFO file client: starts transfer
- FIFO file client → AXIS FIFO driver: reads and writes
- AXIS FIFO driver → AXIS FIFO IP: controls FIFO
- FIFO projects → AXIS FIFO IP: uses FIFO path
- FIFO projects → PMOD1553 interface: interfaces to device
- FMC project → AXIS FIFO IP: uses FIFO path
- FMC project → PMOD1553 interface: interfaces to device
- 1553 decoders → String decoder: decodes streams
- String encoder → 1553 encoders: encodes streams
- UART file server → UART projects: ASCII protocol
- FIFO projects → 1553 decoders: 1553 receive
- FIFO projects → 1553 encoders: 1553 transmit
