I/O modules
AXO-001 — LED bar + traffic light PMOD module
Catalog #1 in the AruviX output line, level L1 (GPIO). The first-blinky board: the module a student plugs in before anything else.
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.
| Ref | Value | What it does on this board | Part number | Footprint |
|---|---|---|---|---|
D1 |
GREEN | Bar segment 0 (green 0603) | APT1608SGCKingbright Datasheet ↗ |
LED_0603_1608Metric |
D2 |
GREEN | Bar segment 1 (green 0603) | APT1608SGCKingbright Datasheet ↗ |
LED_0603_1608Metric |
D3 |
GREEN | Bar segment 2 (green 0603) | APT1608SGCKingbright Datasheet ↗ |
LED_0603_1608Metric |
D4 |
GREEN | Bar segment 3 (green 0603) | APT1608SGCKingbright Datasheet ↗ |
LED_0603_1608Metric |
D5 |
GREEN | Bar segment 4 (green 0603) | APT1608SGCKingbright Datasheet ↗ |
LED_0603_1608Metric |
D6 |
GREEN | Bar segment 5 (green 0603) | APT1608SGCKingbright Datasheet ↗ |
LED_0603_1608Metric |
D7 |
GREEN | Bar segment 6 (green 0603) | APT1608SGCKingbright Datasheet ↗ |
LED_0603_1608Metric |
D8 |
GREEN | Bar segment 7 (green 0603) | APT1608SGCKingbright Datasheet ↗ |
LED_0603_1608Metric |
D9 |
RED | Traffic red LED, parallel with bar segment 0 | APT1608SURCKKingbright Datasheet ↗ |
LED_0603_1608Metric |
D10 |
YELLOW | Traffic yellow LED, parallel with bar segment 1 | APT1608SYCKKingbright Datasheet ↗ |
LED_0603_1608Metric |
D11 |
GREEN | Traffic green LED, parallel with bar segment 2 | APT1608SGCKingbright Datasheet ↗ |
LED_0603_1608Metric |
J1 |
PMOD PLUG 2x6 | PMOD peripheral plug (Digilent spec 1.2) | not selected generic |
PinHeader_2x06_P2.54mm_Horizontal |
R1 |
330R | Ballast for bar segment 0 | RC0603FR-07330RLYageo Datasheet ↗ |
R_0603_1608Metric |
R2 |
330R | Ballast for bar segment 1 | RC0603FR-07330RLYageo Datasheet ↗ |
R_0603_1608Metric |
R3 |
330R | Ballast for bar segment 2 | RC0603FR-07330RLYageo Datasheet ↗ |
R_0603_1608Metric |
R4 |
330R | Ballast for bar segment 3 | RC0603FR-07330RLYageo Datasheet ↗ |
R_0603_1608Metric |
R5 |
330R | Ballast for bar segment 4 | RC0603FR-07330RLYageo Datasheet ↗ |
R_0603_1608Metric |
R6 |
330R | Ballast for bar segment 5 | RC0603FR-07330RLYageo Datasheet ↗ |
R_0603_1608Metric |
R7 |
330R | Ballast for bar segment 6 | RC0603FR-07330RLYageo Datasheet ↗ |
R_0603_1608Metric |
R8 |
330R | Ballast for bar segment 7 | RC0603FR-07330RLYageo Datasheet ↗ |
R_0603_1608Metric |
R9 |
330R | Ballast for traffic red LED (shares BAR0 with the bar) | RC0603FR-07330RLYageo Datasheet ↗ |
R_0603_1608Metric |
R10 |
330R | Ballast for traffic yellow LED (shares BAR1 with the bar) | RC0603FR-07330RLYageo Datasheet ↗ |
R_0603_1608Metric |
R11 |
330R | Ballast for traffic green LED (shares BAR2 with the bar) | RC0603FR-07330RLYageo Datasheet ↗ |
R_0603_1608Metric |
Signals#
Net labels used in the schematic, which are also the names the HDL top level should use.
3V3 BAR0 BAR0_A BAR1 BAR1_A BAR2 BAR2_A BAR3 BAR3_A BAR4 BAR4_A BAR5 BAR5_A BAR6 BAR6_A BAR7 BAR7_A GND TRAF_G_A TRAF_R_A TRAF_Y_A
Production status#
| Schematic ERC | 0 violations |
|---|---|
| PCB layout | complete |
| DRC | 0 violations |
| Fab package | exported (24 gerbers + drill + CPL + BOM) |
| Fabricated | no — design stage only |
Source: boards/io-modules/axo-001-led-bar
Catalog #1 in the AruviX output line (../README.md), level L1 (GPIO). The first-blinky board: the module a student plugs in before anything else.
Status: schematic generated, ERC clean (0/0), netlist reviewed. PCB layout not started. Not released.
What it teaches#
Driving outputs at all: first blinky, binary up/down counters on the 8-bit bar, PWM dimming, Knight Rider chasers — and a traffic-light state machine, all on one Type 1 PMOD.
Design decision: 8 pins, 11 LEDs, two lessons#
- The bar is 8 discrete 0603 green LEDs (Kingbright APT1608SGC), not a 10-segment bar-graph package: discrete 0603s use a stock KiCad footprint, are cheaper, and an 8-bit bar matches an 8-pin PMOD byte exactly.
- The 3 traffic LEDs — red APT1608SURCK, yellow APT1608SYCK, green APT1608SGC — are wired in parallel with bar segments 0-2, each through its own 330 Ω ballast resistor. PMOD pins 1-3 therefore drive the traffic head AND the bar LSBs at the same time. That sharing is documented on the schematic and is itself the lesson: one net, two loads, independent ballast so brightness stays per-LED.
- Every line is host-driven:
pin → 330 Ω → LED → GND(~3–5 mA per LED at 3.3 V; ≤ 2 LEDs per pin, well within an ECP5 I/O). No module-driven lines, so the sensor line's 100 Ω series-resistor rule does not apply beyond the ballast resistors. - 11 LEDs + 11 resistors total; no ICs, so no decoupling required.
| PMOD pin | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Net | BAR0 +TRAF_R | BAR1 +TRAF_Y | BAR2 +TRAF_G | BAR3 | GND | 3V3 | BAR4 | BAR5 | BAR6 | BAR7 | GND | 3V3 |
Regenerate#
python3 generate_design.py
Remaining for release#
- [ ] PCB layout (traffic head grouped and silkscreened R/Y/G), DRC, fab outputs
- [ ]
hdl/: blinky, counter, PWM dimmer, chaser, traffic-light FSM demos - [ ] BOM export and availability check, design-review checklist