# souvlakiboi/ov7670_camera architecture

> Architecture diagram of the GitHub repository souvlakiboi/ov7670_camera, 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/souvlakiboi/ov7670_camera
- Repository: https://github.com/souvlakiboi/ov7670_camera

## Overview

This is an FPGA camera-to-display design: it configures an OV7670 camera, captures its video into frame memory, and reads pixels for display output through an HDMI converter. The README documents the major stages and required Vivado IP, but no HDL excerpts were available, so internal module wiring and some control relationships are not asserted.

Main entry points: [`sources/hdl/cam_capture.v`](https://github.com/souvlakiboi/ov7670_camera/blob/main/sources/hdl/cam_capture.v) (Pixel capture), [`sources/hdl/vga_top.v`](https://github.com/souvlakiboi/ov7670_camera/blob/main/sources/hdl/vga_top.v) (Display subsystem), [`IP/RD_hdmi_ip2020.zip`](https://github.com/souvlakiboi/ov7670_camera/blob/main/IP/RD_hdmi_ip2020.zip) (VGA-to-HDMI IP), [`sources/hdl/top.v`](https://github.com/souvlakiboi/ov7670_camera/blob/main/sources/hdl/top.v) (Top-level design)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_integration["System integration"]
  node_top["Top-level design<br/>[top.v]"]
  node_clock_ip["Clock generator"]
end

subgraph group_camera["Camera control"]
  node_cam_top["Camera subsystem<br/>[cam_top.v]"]
  node_cam_init["Camera initializer<br/>[cam_init.v]"]
  node_cam_config["Camera configuration<br/>[cam_config.v]"]
  node_cam_rom["Register settings<br/>[cam_rom.v]"]
  node_sccb["SCCB controller<br/>[sccb_master.v]"]
end

subgraph group_video["Video capture"]
  node_capture["Pixel capture<br/>[cam_capture.v]"]
  node_frame_memory[("Frame memory")]
  node_debounce["Debounce logic<br/>[debounce.v]"]
end

subgraph group_display["Display output"]
  node_vga_top["Display subsystem<br/>[vga_top.v]"]
  node_vga_driver["VGA timing driver<br/>[vga_driver.v]"]
  node_hdmi_ip["VGA-to-HDMI IP<br/>[RD_hdmi_ip2020.zip]"]
end

node_board(("Urbana FPGA"))
node_camera_device(("OV7670 camera"))
node_monitor(("HDMI monitor"))

node_camera_device -->|"sends video"| node_capture
node_capture -->|"writes pixels"| node_frame_memory
node_frame_memory -->|"provides pixels"| node_vga_top
node_vga_top -->|"outputs video"| node_hdmi_ip
node_hdmi_ip -->|"sends HDMI"| node_monitor
node_board -->|"hosts design"| node_top

click node_top "https://github.com/souvlakiboi/ov7670_camera/blob/main/sources/hdl/top.v"
click node_cam_top "https://github.com/souvlakiboi/ov7670_camera/blob/main/sources/hdl/cam_top.v"
click node_cam_init "https://github.com/souvlakiboi/ov7670_camera/blob/main/sources/hdl/cam_init.v"
click node_cam_config "https://github.com/souvlakiboi/ov7670_camera/blob/main/sources/hdl/cam_config.v"
click node_cam_rom "https://github.com/souvlakiboi/ov7670_camera/blob/main/sources/hdl/cam_rom.v"
click node_sccb "https://github.com/souvlakiboi/ov7670_camera/blob/main/sources/hdl/sccb_master.v"
click node_capture "https://github.com/souvlakiboi/ov7670_camera/blob/main/sources/hdl/cam_capture.v"
click node_debounce "https://github.com/souvlakiboi/ov7670_camera/blob/main/sources/hdl/debounce.v"
click node_vga_top "https://github.com/souvlakiboi/ov7670_camera/blob/main/sources/hdl/vga_top.v"
click node_vga_driver "https://github.com/souvlakiboi/ov7670_camera/blob/main/sources/hdl/vga_driver.v"
click node_hdmi_ip "https://github.com/souvlakiboi/ov7670_camera/blob/main/IP/RD_hdmi_ip2020.zip"

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_top,node_clock_ip toneBlue
class node_cam_top,node_cam_init,node_cam_config,node_cam_rom,node_sccb toneAmber
class node_capture,node_frame_memory,node_debounce toneMint
class node_vga_top,node_vga_driver,node_hdmi_ip toneRose
class node_board,node_camera_device,node_monitor toneIndigo
```

## Components

### System integration

- [Top-level design](https://github.com/souvlakiboi/ov7670_camera/blob/main/sources/hdl/top.v): `sources/hdl/top.v`
- **Clock generator**

### Camera control

- [Camera subsystem](https://github.com/souvlakiboi/ov7670_camera/blob/main/sources/hdl/cam_top.v): `sources/hdl/cam_top.v`
- [Camera initializer](https://github.com/souvlakiboi/ov7670_camera/blob/main/sources/hdl/cam_init.v): `sources/hdl/cam_init.v`
- [Camera configuration](https://github.com/souvlakiboi/ov7670_camera/blob/main/sources/hdl/cam_config.v): `sources/hdl/cam_config.v`
- [Register settings](https://github.com/souvlakiboi/ov7670_camera/blob/main/sources/hdl/cam_rom.v): `sources/hdl/cam_rom.v`
- [SCCB controller](https://github.com/souvlakiboi/ov7670_camera/blob/main/sources/hdl/sccb_master.v): `sources/hdl/sccb_master.v`

### Video capture

- [Pixel capture](https://github.com/souvlakiboi/ov7670_camera/blob/main/sources/hdl/cam_capture.v): `sources/hdl/cam_capture.v`
- **Frame memory**
- [Debounce logic](https://github.com/souvlakiboi/ov7670_camera/blob/main/sources/hdl/debounce.v): `sources/hdl/debounce.v`

### Display output

- [Display subsystem](https://github.com/souvlakiboi/ov7670_camera/blob/main/sources/hdl/vga_top.v): `sources/hdl/vga_top.v`
- [VGA timing driver](https://github.com/souvlakiboi/ov7670_camera/blob/main/sources/hdl/vga_driver.v): `sources/hdl/vga_driver.v`
- [VGA-to-HDMI IP](https://github.com/souvlakiboi/ov7670_camera/blob/main/IP/RD_hdmi_ip2020.zip): `IP/RD_hdmi_ip2020.zip`

### Other components

- **Urbana FPGA**
- **OV7670 camera**
- **HDMI monitor**

## Connections

- OV7670 camera → Pixel capture: sends video
- Pixel capture → Frame memory: writes pixels
- Frame memory → Display subsystem: provides pixels
- Display subsystem → VGA-to-HDMI IP: outputs video
- VGA-to-HDMI IP → HDMI monitor: sends HDMI
- Urbana FPGA → Top-level design: hosts design
