# amigapci/amigapci-mainboard architecture

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

- Interactive diagram: https://gitdiagram.com/amigapci/amigapci-mainboard
- Repository: https://github.com/amigapci/amigapci-mainboard

## Overview

AmigaPCI is a prototype OCS/ECS Amiga motherboard documented through hardware designs and FPGA releases, rather than a software application. The principal workflow is CPU/custom-chip and peripheral bus activity mediated by the board logic, with PCI devices able to DMA across PCI and Amiga address spaces. README documents additional independent interfaces and board functions; unsampled wiring is not inferred beyond those stated relationships.

Main entry points: [`Verilog/Release/Verilog/U110/U110_PCI_BRIDGE.v`](https://github.com/amigapci/amigapci-mainboard/blob/main/Verilog/Release/Verilog/U110/U110_PCI_BRIDGE.v) (PCI Bridge), [`KiCAD/AmigaPCI Mainboard-KiCAD REV 70/chip_memory.kicad_sch`](https://github.com/amigapci/amigapci-mainboard/blob/main/KiCAD/AmigaPCI%20Mainboard-KiCAD%20REV%2070/chip_memory.kicad_sch) (OCS/ECS Chips), [`KiCAD/AmigaPCI Mainboard-KiCAD REV 70/hid.kicad_sch`](https://github.com/amigapci/amigapci-mainboard/blob/main/KiCAD/AmigaPCI%20Mainboard-KiCAD%20REV%2070/hid.kicad_sch) (USB HID), [`KiCAD/AmigaPCI Mainboard-KiCAD REV 70/cpu.kicad_sch`](https://github.com/amigapci/amigapci-mainboard/blob/main/KiCAD/AmigaPCI%20Mainboard-KiCAD%20REV%2070/cpu.kicad_sch) (CPU Local Bus)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_cpu_bus["CPU And Amiga"]
  node_cpu["CPU Local Bus<br/>[cpu.kicad_sch]"]
  node_custom["OCS/ECS Chips"]
  node_chip_logic["Chip RAM Logic<br/>[U712_CHIP_RAM_SM.v]"]
  node_agnus["Agnus Timing<br/>[U712_AGNUS_CYCLE.v]"]
  node_amiga_dma[("Amiga Address Space")]
end

subgraph group_pci["PCI Expansion"]
  node_pci_slots["PCI Slots<br/>[pcibus.kicad_sch]"]
  node_pci_bridge["PCI Bridge<br/>[U110_PCI_BRIDGE.v]"]
  node_pci_logic["PCI Bus Logic"]
  node_pci_state["PCI State Machine"]
  node_fifo["Bridge FIFO<br/>[U109_FIFO.v]"]
end

subgraph group_io["Storage And I/O"]
  node_ata["Dual-Port ATA<br/>[U110_ATA.v]"]
  node_ide["IDE Interface<br/>[IDE.kicad_sch]"]
  node_floppy["Floppy Interface<br/>[floppy.kicad_sch]"]
  node_hid["USB HID<br/>[hid.kicad_sch]"]
  node_serial["Serial And Parallel<br/>[serial.kicad_sch]"]
  node_video["Video Output<br/>[video.kicad_sch]"]
  node_video_slot["Amiga Video Slot<br/>[video.kicad_sch]"]
  node_audio["Paula Audio<br/>[audio.kicad_sch]"]
  node_joystick["Joystick Ports<br/>[hid.kicad_sch]"]
end

subgraph group_board["Board Support"]
  node_stm32["STM32 Functions"]
  node_memory["Memory And ROM<br/>[memory.kicad_sch]"]
  node_power["Power And Clocks<br/>[power.kicad_sch]"]
end

node_pci_devices(("PCI Devices"))
node_cpu_card(("CPU Local Bus Card"))
node_usb(("USB Devices"))
node_storage_devices(("ATA Devices"))

node_pci_slots -->|"connects bus"| node_pci_logic
node_pci_logic -->|"interfaces"| node_pci_bridge
node_pci_bridge -->|"buffers transfers"| node_fifo
node_pci_bridge -->|"exchanges PCI data"| node_pci_devices
node_pci_devices -->|"DMA access"| node_pci_bridge
node_pci_bridge -->|"DMA access"| node_amiga_dma
node_cpu_card -->|"connects local bus"| node_cpu
node_cpu -->|"uses chipset"| node_custom
node_agnus -->|"coordinates cycles"| node_chip_logic
node_ata -->|"implements interface"| node_ide
node_storage_devices -->|"connects storage"| node_ide
node_hid -->|"accepts input"| node_usb
node_hid -->|"shares JOY1 input"| node_joystick
node_custom -->|"generates video"| node_video
node_custom -->|"generates audio"| node_audio
node_custom -->|"provides video bus"| node_video_slot
node_stm32 -->|"supports HID"| node_hid
node_stm32 -->|"monitors voltages"| node_power
node_memory -->|"supports system"| node_cpu

click node_cpu "https://github.com/amigapci/amigapci-mainboard/blob/main/KiCAD/AmigaPCI%20Mainboard-KiCAD%20REV%2070/cpu.kicad_sch"
click node_custom "https://github.com/amigapci/amigapci-mainboard/blob/main/KiCAD/AmigaPCI%20Mainboard-KiCAD%20REV%2070/chip_memory.kicad_sch"
click node_chip_logic "https://github.com/amigapci/amigapci-mainboard/blob/main/Verilog/Release/Verilog/U712/U712_CHIP_RAM_SM.v"
click node_agnus "https://github.com/amigapci/amigapci-mainboard/blob/main/Verilog/Release/Verilog/U712/U712_AGNUS_CYCLE.v"
click node_pci_slots "https://github.com/amigapci/amigapci-mainboard/blob/main/KiCAD/AmigaPCI%20Mainboard-KiCAD%20REV%2070/pcibus.kicad_sch"
click node_pci_bridge "https://github.com/amigapci/amigapci-mainboard/blob/main/Verilog/Release/Verilog/U110/U110_PCI_BRIDGE.v"
click node_pci_logic "https://github.com/amigapci/amigapci-mainboard/blob/main/KiCAD/AmigaPCI%20Mainboard-KiCAD%20REV%2070/pci_bus_logic.kicad_sch"
click node_pci_state "https://github.com/amigapci/amigapci-mainboard/blob/main/Verilog/Release/Verilog/U109/U109_PCI_STATE_MACHINE.v"
click node_fifo "https://github.com/amigapci/amigapci-mainboard/blob/main/Verilog/Release/Verilog/U109/U109_FIFO.v"
click node_ata "https://github.com/amigapci/amigapci-mainboard/blob/main/Verilog/Release/Verilog/U110/U110_ATA.v"
click node_ide "https://github.com/amigapci/amigapci-mainboard/blob/main/KiCAD/AmigaPCI%20Mainboard-KiCAD%20REV%2070/IDE.kicad_sch"
click node_floppy "https://github.com/amigapci/amigapci-mainboard/blob/main/KiCAD/AmigaPCI%20Mainboard-KiCAD%20REV%2070/floppy.kicad_sch"
click node_hid "https://github.com/amigapci/amigapci-mainboard/blob/main/KiCAD/AmigaPCI%20Mainboard-KiCAD%20REV%2070/hid.kicad_sch"
click node_serial "https://github.com/amigapci/amigapci-mainboard/blob/main/KiCAD/AmigaPCI%20Mainboard-KiCAD%20REV%2070/serial.kicad_sch"
click node_video "https://github.com/amigapci/amigapci-mainboard/blob/main/KiCAD/AmigaPCI%20Mainboard-KiCAD%20REV%2070/video.kicad_sch"
click node_video_slot "https://github.com/amigapci/amigapci-mainboard/blob/main/KiCAD/AmigaPCI%20Mainboard-KiCAD%20REV%2070/video.kicad_sch"
click node_audio "https://github.com/amigapci/amigapci-mainboard/blob/main/KiCAD/AmigaPCI%20Mainboard-KiCAD%20REV%2070/audio.kicad_sch"
click node_joystick "https://github.com/amigapci/amigapci-mainboard/blob/main/KiCAD/AmigaPCI%20Mainboard-KiCAD%20REV%2070/hid.kicad_sch"
click node_stm32 "https://github.com/amigapci/amigapci-mainboard/blob/main/KiCAD/AmigaPCI%20Mainboard-KiCAD%20REV%2070/bcontroller.kicad_sch"
click node_memory "https://github.com/amigapci/amigapci-mainboard/blob/main/KiCAD/AmigaPCI%20Mainboard-KiCAD%20REV%2070/memory.kicad_sch"
click node_power "https://github.com/amigapci/amigapci-mainboard/blob/main/KiCAD/AmigaPCI%20Mainboard-KiCAD%20REV%2070/power.kicad_sch"
click node_amiga_dma "https://github.com/amigapci/amigapci-mainboard/blob/main/KiCAD/AmigaPCI%20Mainboard-KiCAD%20REV%2070/motorola_bus_logic.kicad_sch"

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_cpu,node_custom,node_chip_logic,node_agnus,node_amiga_dma toneBlue
class node_pci_slots,node_pci_bridge,node_pci_logic,node_pci_state,node_fifo toneAmber
class node_ata,node_ide,node_floppy,node_hid,node_serial,node_video,node_video_slot,node_audio,node_joystick toneMint
class node_stm32,node_memory,node_power toneRose
class node_pci_devices,node_cpu_card,node_usb,node_storage_devices toneIndigo
```

## Components

### CPU And Amiga

- [CPU Local Bus](https://github.com/amigapci/amigapci-mainboard/blob/main/KiCAD/AmigaPCI%20Mainboard-KiCAD%20REV%2070/cpu.kicad_sch): `KiCAD/AmigaPCI Mainboard-KiCAD REV 70/cpu.kicad_sch`
- [OCS/ECS Chips](https://github.com/amigapci/amigapci-mainboard/blob/main/KiCAD/AmigaPCI%20Mainboard-KiCAD%20REV%2070/chip_memory.kicad_sch): `KiCAD/AmigaPCI Mainboard-KiCAD REV 70/chip_memory.kicad_sch`
- [Chip RAM Logic](https://github.com/amigapci/amigapci-mainboard/blob/main/Verilog/Release/Verilog/U712/U712_CHIP_RAM_SM.v): `Verilog/Release/Verilog/U712/U712_CHIP_RAM_SM.v`
- [Agnus Timing](https://github.com/amigapci/amigapci-mainboard/blob/main/Verilog/Release/Verilog/U712/U712_AGNUS_CYCLE.v): `Verilog/Release/Verilog/U712/U712_AGNUS_CYCLE.v`
- [Amiga Address Space](https://github.com/amigapci/amigapci-mainboard/blob/main/KiCAD/AmigaPCI%20Mainboard-KiCAD%20REV%2070/motorola_bus_logic.kicad_sch): `KiCAD/AmigaPCI Mainboard-KiCAD REV 70/motorola_bus_logic.kicad_sch`

### PCI Expansion

- [PCI Slots](https://github.com/amigapci/amigapci-mainboard/blob/main/KiCAD/AmigaPCI%20Mainboard-KiCAD%20REV%2070/pcibus.kicad_sch): `KiCAD/AmigaPCI Mainboard-KiCAD REV 70/pcibus.kicad_sch`
- [PCI Bridge](https://github.com/amigapci/amigapci-mainboard/blob/main/Verilog/Release/Verilog/U110/U110_PCI_BRIDGE.v): `Verilog/Release/Verilog/U110/U110_PCI_BRIDGE.v`
- [PCI Bus Logic](https://github.com/amigapci/amigapci-mainboard/blob/main/KiCAD/AmigaPCI%20Mainboard-KiCAD%20REV%2070/pci_bus_logic.kicad_sch): `KiCAD/AmigaPCI Mainboard-KiCAD REV 70/pci_bus_logic.kicad_sch`
- [PCI State Machine](https://github.com/amigapci/amigapci-mainboard/blob/main/Verilog/Release/Verilog/U109/U109_PCI_STATE_MACHINE.v): `Verilog/Release/Verilog/U109/U109_PCI_STATE_MACHINE.v`
- [Bridge FIFO](https://github.com/amigapci/amigapci-mainboard/blob/main/Verilog/Release/Verilog/U109/U109_FIFO.v): `Verilog/Release/Verilog/U109/U109_FIFO.v`

### Storage And I/O

- [Dual-Port ATA](https://github.com/amigapci/amigapci-mainboard/blob/main/Verilog/Release/Verilog/U110/U110_ATA.v): `Verilog/Release/Verilog/U110/U110_ATA.v`
- [IDE Interface](https://github.com/amigapci/amigapci-mainboard/blob/main/KiCAD/AmigaPCI%20Mainboard-KiCAD%20REV%2070/IDE.kicad_sch): `KiCAD/AmigaPCI Mainboard-KiCAD REV 70/IDE.kicad_sch`
- [Floppy Interface](https://github.com/amigapci/amigapci-mainboard/blob/main/KiCAD/AmigaPCI%20Mainboard-KiCAD%20REV%2070/floppy.kicad_sch): `KiCAD/AmigaPCI Mainboard-KiCAD REV 70/floppy.kicad_sch`
- [USB HID](https://github.com/amigapci/amigapci-mainboard/blob/main/KiCAD/AmigaPCI%20Mainboard-KiCAD%20REV%2070/hid.kicad_sch): `KiCAD/AmigaPCI Mainboard-KiCAD REV 70/hid.kicad_sch`
- [Serial And Parallel](https://github.com/amigapci/amigapci-mainboard/blob/main/KiCAD/AmigaPCI%20Mainboard-KiCAD%20REV%2070/serial.kicad_sch): `KiCAD/AmigaPCI Mainboard-KiCAD REV 70/serial.kicad_sch`
- [Video Output](https://github.com/amigapci/amigapci-mainboard/blob/main/KiCAD/AmigaPCI%20Mainboard-KiCAD%20REV%2070/video.kicad_sch): `KiCAD/AmigaPCI Mainboard-KiCAD REV 70/video.kicad_sch`
- [Amiga Video Slot](https://github.com/amigapci/amigapci-mainboard/blob/main/KiCAD/AmigaPCI%20Mainboard-KiCAD%20REV%2070/video.kicad_sch): `KiCAD/AmigaPCI Mainboard-KiCAD REV 70/video.kicad_sch`
- [Paula Audio](https://github.com/amigapci/amigapci-mainboard/blob/main/KiCAD/AmigaPCI%20Mainboard-KiCAD%20REV%2070/audio.kicad_sch): `KiCAD/AmigaPCI Mainboard-KiCAD REV 70/audio.kicad_sch`
- [Joystick Ports](https://github.com/amigapci/amigapci-mainboard/blob/main/KiCAD/AmigaPCI%20Mainboard-KiCAD%20REV%2070/hid.kicad_sch): `KiCAD/AmigaPCI Mainboard-KiCAD REV 70/hid.kicad_sch`

### Board Support

- [STM32 Functions](https://github.com/amigapci/amigapci-mainboard/blob/main/KiCAD/AmigaPCI%20Mainboard-KiCAD%20REV%2070/bcontroller.kicad_sch): `KiCAD/AmigaPCI Mainboard-KiCAD REV 70/bcontroller.kicad_sch`
- [Memory And ROM](https://github.com/amigapci/amigapci-mainboard/blob/main/KiCAD/AmigaPCI%20Mainboard-KiCAD%20REV%2070/memory.kicad_sch): `KiCAD/AmigaPCI Mainboard-KiCAD REV 70/memory.kicad_sch`
- [Power And Clocks](https://github.com/amigapci/amigapci-mainboard/blob/main/KiCAD/AmigaPCI%20Mainboard-KiCAD%20REV%2070/power.kicad_sch): `KiCAD/AmigaPCI Mainboard-KiCAD REV 70/power.kicad_sch`

### Other components

- **PCI Devices**
- **CPU Local Bus Card**
- **USB Devices**
- **ATA Devices**

## Connections

- PCI Slots → PCI Bus Logic: connects bus
- PCI Bus Logic → PCI Bridge: interfaces
- PCI Bridge → Bridge FIFO: buffers transfers
- PCI Bridge → PCI Devices: exchanges PCI data
- PCI Devices → PCI Bridge: DMA access
- PCI Bridge → Amiga Address Space: DMA access
- CPU Local Bus Card → CPU Local Bus: connects local bus
- CPU Local Bus → OCS/ECS Chips: uses chipset
- Agnus Timing → Chip RAM Logic: coordinates cycles
- Dual-Port ATA → IDE Interface: implements interface
- ATA Devices → IDE Interface: connects storage
- USB HID → USB Devices: accepts input
- USB HID → Joystick Ports: shares JOY1 input
- OCS/ECS Chips → Video Output: generates video
- OCS/ECS Chips → Paula Audio: generates audio
- OCS/ECS Chips → Amiga Video Slot: provides video bus
- STM32 Functions → USB HID: supports HID
- STM32 Functions → Power And Clocks: monitors voltages
- Memory And ROM → CPU Local Bus: supports system
