I/O modules

AXO-007 — VGA output dual-PMOD module

Catalog #7 in the AruviX output line, level L4. The classic FPGA rite of passage: video timing from scratch, then a character generator, then a framebuffer — a keystone of the standalone-computer goal.

Level L4 ERC clean No layout No fab package 18 components

Circuit review & bench-test guide →

Components#

Every placed component, with the reason it is on the board. Extracted directly from the schematic, so this cannot drift from the design.

RefValueWhat it does on this boardPart numberFootprint
C1 100nF 16V X7R Rail decoupling at the connector GRM188R71C104KA01D
Murata
C_0603_1608Metric
J1 PMOD A: RED/GREEN PMOD peripheral plug (Digilent spec 1.2) not selected
generic
PinHeader_2x06_P2.54mm_Horizontal
J2 VGA DE-15 SOCKET High-density DSUB-15 female socket, right angle (VGA) L77HDE15SD1CH4F
Amphenol CS
DSUB-15-HD_Socket_Horizontal_P2.29x2.54mm_EdgePinOffset8.35mm_Housed_MountingHolesOffset10.89mm
J3 PMOD B: BLUE/SYNC PMOD peripheral plug (Digilent spec 1.2) not selected
generic
PinHeader_2x06_P2.54mm_Horizontal
R1 511R RED DAC bit 3 (MSB) RC0603FR-07511RL
Yageo
Datasheet ↗
R_0603_1608Metric
R2 1.02k RED DAC bit 2 (2^2) RC0603FR-071K02L
Yageo
Datasheet ↗
R_0603_1608Metric
R3 2.05k RED DAC bit 1 (2^1) RC0603FR-072K05L
Yageo
Datasheet ↗
R_0603_1608Metric
R4 4.12k RED DAC bit 0 (2^0) RC0603FR-074K12L
Yageo
Datasheet ↗
R_0603_1608Metric
R5 511R GREEN DAC bit 3 (MSB) RC0603FR-07511RL
Yageo
Datasheet ↗
R_0603_1608Metric
R6 1.02k GREEN DAC bit 2 (2^2) RC0603FR-071K02L
Yageo
Datasheet ↗
R_0603_1608Metric
R7 2.05k GREEN DAC bit 1 (2^1) RC0603FR-072K05L
Yageo
Datasheet ↗
R_0603_1608Metric
R8 4.12k GREEN DAC bit 0 (2^0) RC0603FR-074K12L
Yageo
Datasheet ↗
R_0603_1608Metric
R9 511R BLUE DAC bit 3 (MSB) RC0603FR-07511RL
Yageo
Datasheet ↗
R_0603_1608Metric
R10 1.02k BLUE DAC bit 2 (2^2) RC0603FR-071K02L
Yageo
Datasheet ↗
R_0603_1608Metric
R11 2.05k BLUE DAC bit 1 (2^1) RC0603FR-072K05L
Yageo
Datasheet ↗
R_0603_1608Metric
R12 4.12k BLUE DAC bit 0 (2^0) RC0603FR-074K12L
Yageo
Datasheet ↗
R_0603_1608Metric
R13 100R HSYNC series resistor (edge-rate/short protection into the cable) RC0603FR-07100RL
Yageo
Datasheet ↗
R_0603_1608Metric
R14 100R VSYNC series resistor RC0603FR-07100RL
Yageo
Datasheet ↗
R_0603_1608Metric

Signals#

Net labels used in the schematic, which are also the names the HDL top level should use.

3V3 BLU0 BLU1 BLU2 BLU3 GND GRN0 GRN1 GRN2 GRN3 HS HS_OUT RED0 RED1 RED2 RED3 VGA_B VGA_G VGA_R VS VS_OUT

Production status#

Schematic ERC0 violations
PCB layoutnot started
DRCnot run
Fab packagenot exported
Fabricatedno — design stage only

Source: boards/io-modules/axo-007-vga


Catalog #7 in the AruviX output line (../README.md), level L4. The classic FPGA rite of passage: video timing from scratch, then a character generator, then a framebuffer — a keystone of the standalone-computer goal.

Status: schematic generated, ERC clean (0/0), netlist reviewed. PCB layout not started. Not released.

What it teaches#

Video timing generation (vga_timing HDL core — parameterized mode generator): 640×480@60 wants 25.175 MHz, and the ECP5's 25 MHz oscillator is inside stock monitor tolerance. Progression: color bars → character generator (chargen font ROM terminal) → framebuffer. With 4:4:4 color: 4096 colors, Pong/breakout with the joystick module (axo-013).

DAC design and the math#

Each color is a 4-bit binary-weighted resistor DAC driven by 3.3 V CMOS outputs, summing into the monitor's 75 Ω termination:

Note: the catalog line suggested "E96 512R"; 512 Ω is not an E96 value — the E96 value is 511 Ω (Yageo RC0603FR-07511RL), a 0.2 % deviation, absorbed in the 1 % tolerance budget.

HS/VS are 3.3 V CMOS through 100 Ω series resistors; monitors accept 3.3 V sync levels.

Connector and ESD#

PMOD pin map (dual socket, 0.9" centers — same constraint as axs-050)#

J1 (PMOD A)123456789101112
NetRED3RED2RED1RED0GND3V3GRN3GRN2GRN1GRN0GND3V3
J3 (PMOD B)123456789101112
NetBLU3BLU2BLU1BLU0GND3V3HSVSNCNCGND3V3

Regenerate#

python3 generate_design.py

Remaining for release#