← AXA-009

Circuit review & bench-test guide

AXA-009 — WS2812 LED strip driver PMOD module

Design-stage — board not yet fabricated

Document purpose#

This document explains the axa-009-ws2812 PMOD module at component level and turns the design evidence into a practical manual-review and bench-test plan. It is based on the generated schematic (generate_design.py), the module README, and the actuator-line family rules in ../README.md.

This board is an unfabricated prototype design. Repository status is "schematic generated, ERC clean (0/0), netlist reviewed, PCB layout not started, not released." No board has been built, so there is no bench evidence of any kind: no timing capture, no thermal result, no connector current measurement. Every number below is a datasheet value or a design target to verify on the first article — none of it is proof that an assembled board works or is safe. Where a value depends on the unstarted PCB layout (trace widths, copper pours), this document says so explicitly.

1. What the board does#

The board is a single-channel WS2812/WS2812B addressable-LED strip driver in the AruviX actuator-module PMOD family (catalog #9, level L2). The host FPGA generates the 800 kHz single-wire WS2812 bit stream at 3.3 V on PMOD pin 1; one gate of a 74AHCT125 buffer, powered from the strip's 5 V rail, re-drives that stream at full 5 V logic levels. A 100 Ω series resistor damps the line at the strip connector. Strip power (5 V, potentially many amps) enters on a dedicated screw terminal and never flows through the PMOD connector — the same two-rail discipline every module in the actuator line follows.

The board contains no microcontroller, no regulator, and no protection devices: it is a level shifter with connectors. All intelligence (bit timing, frame latch, patterns) lives in the FPGA ws2812_tx HDL core (../../pmod-common/hdl/, not yet instantiated for this module per the README release checklist).

Functional block diagram#

PMOD host (3.3 V logic)                      external 5 V strip supply
        │                                             │
        v                                             v
   J1 PMOD plug                              J2 screw terminal 5V IN
   pin 1 DATA (3.3 V) ──┐                    1 V5_LED   2 GND
   pins 5/11 GND        │                        │
   pins 6/12 3V3        │        V5_LED ─────────┼──── C1 100n ── C2 10u ── C3 (DNP)
   (3V3 unused by U1)   │           │            │
                        v           v VCC(14)    │
                   U1 74AHCT125 gate 1           │
                   ~OE(1)=GND, A(2)=DATA         │
                        │ Y(3) = DOUT_BUF (5 V)  │
                        v                        │
                   R1 100R series damping        │
                        │                        │
                        v                        v
                   J3 strip terminal:  1 V5_LED  2 DOUT  3 GND
                        │
                        v
                   WS2812 strip (DIN of first LED)

   U1 gates 2-4: ~OE and inputs to GND, outputs drive low, left open.
   Grounds join on this module (PMOD GND = J2 GND = J3 GND).

2. Actuator-family safety and scope boundaries#

This module lives in the actuator line and inherits its safety discipline, adapted honestly: this board drives LED strips, not motors. Nothing here moves, pinches, or stores mechanical energy. The hazards are electrical and thermal, and they are real:

3. Power architecture and grounding#

The board has two rails and deliberately never connects them:

  1. 3V3 (PMOD pins 6/12). Present on the connector per the PMOD standard but unused by any component on this module — U1 is not powered from it. It exists only because the PMOD plug template carries it. Verify at review that nothing was accidentally netted to 3V3.
  2. V5_LED (J2 pin 1). The strip supply. It powers U1's VCC (pin 14), the decoupling network C1/C2 (and DNP C3), and passes through to J3 pin 1 for the strip. It never touches the PMOD connector — the one family rule that differs from the sensor line, applied here to LED power instead of motor power.

Grounds join on this module (PMOD GND pins 5/11, J2 pin 2, J3 pin 3 are one net). This is required: the WS2812 data signal is ground-referenced, so the FPGA, U1, and the strip must share a return. The consequence is that strip return current has a potential path through the PMOD ground pins if the external wiring is wrong. Correct wiring: the strip's heavy return current flows J3 GND → board → J2 GND → supply. The PMOD ground carries only logic-level currents. At layout time (not yet started) the J2–J3 ground copper must be sized for full strip current and the PMOD ground stitch kept out of that path.

Powering U1's VCC from V5_LED rather than 3V3 is a deliberate design choice with two effects: (a) the buffer output swings the full 5 V the strip wants, and (b) if the strip supply is absent, the buffer is dead and cannot drive data into an unpowered strip. Both must be confirmed on the bench.

4. Interfaces and pin maps#

ReferencePins/signalsIntended use
J1PMOD Type 1 GPIO, 12-pinHost connection; only pin 1 (DATA), 5/11 (GND) used; 6/12 (3V3) unused
J21 V5_LED, 2 GNDStrip supply input, Phoenix MKDS 1,5/2 5.08 mm screw terminal
J31 V5_LED, 2 DOUT, 3 GNDStrip connection, Phoenix MKDS 1,5/3 screw terminal
PMOD pin123456789101112
NetDATANCNCNCGND3V3NCNCNCNCGND3V3

No test points are defined in the current schematic. Until layout adds them, the practical probe points are: U1 pin 2 (DATA in), U1 pin 3 (DOUT_BUF), J3 pin 2 (DOUT after R1), U1 pin 14 (V5_LED), and J3 pin 3 (GND reference). Adding dedicated test points for these five nets is a recommended layout task.

5. Component-by-component review#

5.1 Level shifter and data path#

Ref.Part / datasheet summaryFunction and why neededIf absent/openIf shorted, wrong, or misassembled
U1TI SN74AHCT125PW, quad bus buffer, 3-state, TSSOP-14Gate 1 shifts 3.3 V DATA to 5 V. AHCT inputs are TTL-threshold (VIH = 2.0 V fixed, not a VCC ratio), so 3.3 V drives them with 1.3 V margin while VCC runs at 5 V; output then meets the WS2812B's 0.7 × VDD = 3.5 V VIH requirement, which a 3.3 V FPGA pin cannotNo 5 V data; strip dark or, if bodged with a direct 3.3 V wire, marginal first-LED operationWrong orientation swaps VCC/GND diagonally and can destroy the part at first power; HC instead of AHCT (CMOS 0.7 × VCC = 3.5 V threshold) will not switch reliably from 3.3 V; solder bridge on the fine 0.65 mm TSSOP pitch can short DATA to GND or OE
U1 gates 2–4Same package, units 2–4Unused gates parked per TI rule "all unused inputs must be held at VCC or GND": ~OE and A inputs tied to GND, outputs actively drive low, left unconnectedFloating CMOS inputs oscillate and burn ΔICC (datasheet notes up to 1.5 mA per input at TTL mid-levels)An unused output shorted to another net fights it with ±8 mA drive; verify no bridges on pins 4–13
R1100 Ω 0603, Yageo RC0603FR-07100RLSeries damping at the strip connector: with the strip lead's ~100 Ω-class impedance it kills reflections that would double edges at the first LED and corrupt pulse-width-coded bitsRinging/overshoot on long leads; possible bit errors and long-term first-LED input stressOpen = no data at all (strip dark, DOUT_BUF still toggling); wrong high value (10 k) plus 15 pF-class WS2812B input capacitance slows edges into the timing budget; short = loses damping only

5.2 Power entry, decoupling, and connectors#

Ref.Value / partPurposeWhat is lost if omittedImportant failure/review point
J1PMOD plug (pin header, family template footprint)Logic-only host connectionNo data sourceReversed/offset plug puts 3V3 or GND on DATA — survivable per ratings but nonfunctional; never route strip current through it
J2Phoenix MKDS 1,5/2-5,08 screw terminal, MPN marked "TBD" in schematic5 V strip-supply entryNo strip power; U1 also dead (VCC is V5_LED)Reversed supply wiring puts −5 V on U1 and any connected strip — there is no reverse-polarity protection on this board; the MKDS 1,5 series is nominally rated 13.5 A/1.5 mm² class per Phoenix data, but the exact MPN is unconfirmed ("TBD") — verify the ordered part's current rating against section 8 before any high-current test
J3Phoenix MKDS 1,5/3-5,08 screw terminal, MPN "TBD"Strip connection: V5_LED / DOUT / GNDNo strip interfaceMiswiring DOUT to the strip's 5 V input puts data drive into the supply pin; swapped V5/GND reverses the strip (WS2812B claims reverse-connect protection for the IC, but do not rely on it); same TBD rating caveat as J2
C1100 nF 16 V X7R 0603, Murata GRM188R71C104KA01DU1 VCC decoupling, the standard per-package HF bypassSupply bounce at U1 during 8 mA output edges; degraded output levels and edge qualityMust be placed at U1 pin 14 at layout; a short is a direct V5_LED–GND fault
C210 µF 25 V X5R 0805, Murata GRM21BR61E106KA73LLocal 5 V reservoir for the moduleMore droop/ringing at the module when strip current steps (all-white frame transitions are near-step loads)It is local support only — it cannot hold up a strip; a short is a V5_LED–GND fault
C31000 µF 10 V SMD electrolytic, 8×10 mm can, DNP, MPN "TBD"Placeholder pads for on-module bulkNothing in the core build — the README rule is to fit ≥470 µF external bulk at the strip head instead, because module-side bulk cannot fix drop along a long stripIf populated: polarity matters (electrolytic; reversed = venting risk), 10 V rating is fine for 5 V; populating it does not remove the strip-head bulk requirement
#FLG01–03Power flags (3V3, GND, V5_LED)Schematic-only ERC anchors; no physical partERC noise onlyNot fitted, nothing to review on the board

That is the complete bill: U1, R1, C1, C2, C3 (DNP), J1, J2, J3, and three schematic-only power flags. There is deliberately nothing else — no fuse, no reverse protection, no TVS. The review question is whether that is acceptable for a teaching module (see section 12).

6. Datasheet summary and design interpretation#

DeviceKey manufacturer facts used hereBoard-specific interpretation
SN74AHCT125 (TI SCLS264R, rev. Feb 2024)VCC 4.5–5.5 V recommended; VIH min 2.0 V, VIL max 0.8 V (TTL-fixed, not VCC-proportional); VOH min 3.94 V at −8 mA/VCC 4.5 V, 25 °C (4.4 V min at −50 µA); VOL max 0.44 V at 8 mA; tPLH/tPHL 1–6.5 ns at CL = 15 pF; input transition rate ≤ 20 ns/V; unused inputs must be tied to VCC or GND; inputs rated to 7 V independent of VCC3.3 V FPGA high clears VIH = 2.0 V by 1.3 V — this is exactly why AHCT (not HC/AHC) is the right family. At VCC = 5 V the output high comfortably exceeds the WS2812B's 3.5 V requirement. Nanosecond propagation delay is negligible against 400 ns pulse widths. The ≤ 20 ns/V input-edge rule means the FPGA must drive DATA with clean digital edges (it does). The 3.3 V-on-unpowered-input sequencing case is within the 7 V input rating
WS2812B (WorldSemi datasheet, Adafruit-hosted copy)VDD absolute max +3.5 to +5.3 V; input VI −0.5 to VDD + 0.5 V; VIH min 0.7 × VDD, VIL max 0.3 × VDD; T0H 0.4 µs ± 150 ns; T1H 0.8 µs ± 150 ns; T0L 0.85 µs ± 150 ns; T1L 0.45 µs ± 150 ns; TH + TL = 1.25 µs ± 600 ns; RES (latch) = low ≥ 50 µs; 800 kbps; GRB byte order, MSB first; per-channel LED drops 2.0–3.4 VAt VDD = 5 V, VIH min = 3.5 V: a 3.3 V FPGA output is below the datasheet minimum even before cable drop — direct drive is out-of-spec, which is this module's entire reason to exist. The ±150 ns pulse-width windows are the acceptance criteria for the first-LED timing capture (section 8). ≥ 50 µs low latches the frame. Note the datasheet quantifies per-color LED voltage but does not print a single per-pixel current limit; the industry budgeting figure of ~20 mA/color = 60 mA/pixel full white (used by the README and this guide) must be checked against the strip vendor's own rating for the actual strip used

Official references: SN74AHCT125 datasheet (TI, SCLS264R), SN74AHCT125 product page, WS2812B datasheet (WorldSemi, Adafruit-hosted PDF), Yageo RC-series chip resistors. WS2812B timing has shifted between WorldSemi datasheet revisions (later revisions print different T0H/T1H nominals, e.g. 220–380 ns-class windows for T0H); the values above are from the revision cited. Check the revision that matches the actual strip's pixels before declaring a timing measurement out of spec, and check exact Murata/Phoenix orderables (two are still "TBD") before procurement.

7. Why the level shifter is needed — the one calculation that matters#

Bench verification (procedure step C): scope U1 pin 3 / J3 pin 2 and confirm logic-high ≈ 5 V (≥ 4.4 V acceptance with the strip attached), logic-low ≤ 0.4 V, and clean monotonic edges after R1 with no double transitions.

8. Strip current arithmetic and power-injection rule#

Budget 60 mA per pixel at full white (industry figure; confirm per strip vendor, section 6):

Strip lengthArithmeticFull-white current5 V power
30 LEDs (1 m @ 30/m)30 × 60 mA1.8 A9 W
60 LEDs (1 m @ 60/m)60 × 60 mA3.6 A18 W
144 LEDs (1 m @ 144/m)144 × 60 mA8.64 A43 W

Compare against the board's ratings:

Power-injection rule (from the design itself): on-module bulk cannot save a long strip — fit ≥ 470 µF external bulk at the strip head, and re-inject 5 V every ~100 pixels on big strips. Strip flex-PCB copper drops volts over a meter at amps; the symptom is white fading to orange/red toward the far end. Injected 5 V feeds must come from the same supply (or supplies with commoned grounds and matched voltage), and every injection point still shares the single data ground.

9. Manual schematic and assembly review checklist#

10. Ordered bench-test procedure#

Stop at the first abnormal result. Record board serial, strip identity (vendor, pixel type, count), supply and scope IDs, and operator. First power uses a short strip (≤ 8 LEDs) or a single loose pixel, never the full-length strip.

Two host contexts are covered; steps note where they differ:

A. Unpowered inspection and resistance tests#

  1. No strip, no supplies connected. Complete the section 9 checklist under magnification; inspect the TSSOP-14 for bridges.
  2. Measure V5_LED-to-GND resistance both meter polarities. Expect high resistance with a capacitive charging tail (C2); investigate any hard short before power.
  3. Measure DATA-to-GND and DOUT-to-GND: no short; DOUT to DOUT_BUF should read ~100 Ω (through R1).
  4. Verify the intended strip separately: correct DIN end identified, no visible damage, vendor current rating noted.

B. First power, no strip#

  1. Context S first if equipment allows (fewer unknowns than a live FPGA). Set the 5 V supply to 5.00 V, current limit 100 mA. Do not connect J3 yet. Do not drive DATA yet.
  2. Apply 5 V to J2. Expect quiescent current well under 1 mA (AHCT ICC max 20 µA plus capacitor leakage). Tens of milliamps or the limit tripping means a fault — stop.
  3. Verify U1 pin 14 = 5 V, and DOUT_BUF/DOUT sit at a static logic level (DATA undriven floats only in context S — if so, expect possible indeterminate output and extra ICC; tie DATA low for this step).
  4. Sequencing check: with 5 V removed and DATA driven high at 3.3 V, confirm DOUT stays near 0 V and the 3.3 V source current is negligible — the buffer must not deliver data into an unpowered strip rail.
  5. Drive DATA with a 3.3 V 800 kHz square wave. Confirm DOUT toggles rail to rail at 5 V.

C. Level-shift verification (no strip or single pixel)#

  1. Scope DATA (U1 pin 2) and DOUT (J3 pin 2) together, GND clip at J3 pin 3, ×10 probes, ≥ 100 MHz bandwidth.
  2. Confirm DATA high ≥ 3.0 V at the pin (context P: an FPGA bank at 3.3 V; context S: generator into high-Z).
  3. Confirm DOUT: high ≥ 4.4 V unloaded (≈ 5 V expected), low ≤ 0.4 V, monotonic edges, no double transitions or > 0.5 V plateau steps after R1. Overshoot beyond ~5.5 V at a connected pixel would threaten the WS2812B VDD + 0.5 V input rating — record it.
  4. Record propagation skew DATA→DOUT (expect single-digit ns; anything in the hundreds of ns indicates probing or assembly error).

D. First-LED timing capture (short strip attached)#

  1. Power down. Connect the short strip to J3 (5 V/DOUT/GND). Raise the current limit to 0.5 A. Power up (5 V first, then start data — per section 2 sequencing).
  2. Drive a known pattern (e.g. alternating 0x00/0xFF frames) from the ws2812_tx core (context P) or a pre-programmed pattern source (context S).
  3. Probe the data line at the first LED's DIN pad, referenced to the strip's GND at the same end. Measure and log against the WS2812B datasheet windows:
ParameterDatasheet window (cited revision)Measured
T0H400 ns ± 150 ns (250–550 ns)
T1H800 ns ± 150 ns (650–950 ns)
T0L850 ns ± 150 ns (700–1000 ns)
T1L450 ns ± 150 ns (300–600 ns)
Bit period TH+TL1.25 µs ± 600 ns
RES (inter-frame low)≥ 50 µs

Measure at the WS2812B threshold levels (50% of 5 V is acceptable for pulse-width bookkeeping; note the method used). If the strip's pixels are a later WS2812B revision, pull that revision's windows before judging failure (section 6).

  1. Confirm the pattern renders correctly on all LEDs of the short strip and that the frame latches (LEDs hold state during the ≥ 50 µs reset gap).

E. Load, thermal, and long-strip tests#

  1. Step up strip length deliberately: 8 → 30 → 60 LEDs, resetting the supply current limit to the section 8 budget plus 20% each time.
  2. At full white, log supply current versus the 60 mA/LED prediction, voltage at J2, at J3, and at the strip's far end (color shift toward red/orange at the far end = copper drop, apply the injection rule).
  3. Feel-check then thermal-check J2, J3, and the J2–J3 copper after 10 minutes at full white. Screw-terminal temperature rise is the most likely first thermal finding.
  4. 144-LED-class strips: only with power injection installed, wiring ≥ 18 AWG, connector rating confirmed, and the board's (future) layout current limit documented. Do not exceed whichever is lowest.
  5. Re-verify first-LED timing (step D) at full load — supply droop and ground shift can move thresholds.

11. Expected values before bench testing#

QuantityDesign target / datasheet valueWhat to measure
V5_LED operating range4.5–5.5 V (AHCT VCC range; WS2812B abs max 5.3 V — keep ≤ 5.2 V)DMM at U1 pin 14 and strip head
Quiescent current, no strip, DATA low< 1 mA (ICC max 20 µA class)Supply readout at step B2
DATA high at U1 pin 2≥ 3.0 V (AHCT VIH min 2.0 V)Scope, step C2
DOUT high, unloaded≈ 5 V, ≥ 4.4 VScope, step C3
DOUT low≤ 0.4 VScope, step C3
U1 propagation delay1–6.5 ns at 15 pFScope skew, step C4
T0H/T1H/T0L/T1L at first LEDSection 10.D tableScope at first-LED DIN
Reset/latch gap≥ 50 µs low between framesScope, step D3
Full-white current, 30/60/144 LEDs1.8 A / 3.6 A / 8.64 A predictedSupply readout vs. prediction
Far-end strip voltage, full whiteUnknown until measured; < 4.5 V means inject powerDMM at strip far end
Connector temperature riseUnknown; no rating confirmed (MPN TBD)Thermal check, step E3

12. Troubleshooting map#

SymptomFirst measurementsLikely areas
Strip completely darkV5_LED at U1 pin 14, DOUT activity, strip 5 V at headJ2 wiring/supply, U1 unpowered, strip connected at wrong end (DOUT into strip's output end)
DOUT toggles, strip darkVoltage/continuity across R1, J3 pin 2 to first-LED DINR1 open, J3 screw not clamped, broken strip pad
DOUT stuck lowU1 pin 1 (~OE) level, DATA at pin 2~OE not grounded (bridge to VCC), DATA never arriving (wrong PMOD pin, FPGA constraint)
DOUT swings only ~3.3 VVerify probing point; U1 pin 14 voltageProbing DATA not DOUT; U1 VCC miswired to 3V3 (design violation); wrong logic family fitted
First LED white/garbage, rest followFirst-LED timing capture, DOUT edge qualityTiming out of window (HDL core), damaged first LED (prior hot-plug), reflections (R1 shorted/missing, very long lead)
Random flicker at high load onlyV5_LED droop and GND shift during full-white frames, far-end voltageSupply limit, undersized wiring, missing strip-head bulk, injection needed
Colors wrong/swappedByte order in HDL vs. GRB-MSB-first datasheet orderws2812_tx byte ordering, not hardware
First N LEDs correct, rest frozenData at pixel N/N+1 boundaryStrip damage mid-run; reshaping stops at broken pixel
Supply current-limits at power-upV5_LED-to-GND resistance unpoweredC1/C2 short, solder bridge, reversed C3 if populated, reversed J2 wiring
Hot screw terminalContact resistance (mV drop across terminal at load)Undersized/untinned-stranded wire, loose screw, connector rating exceeded

13. Bench record template#

FieldRecord
Board revision / serial
Assembly variant (C3 fitted?) and DNP audit
Host context (P: FPGA board ID / S: generator ID)
Strip vendor, pixel type/revision, LED count
5 V supply ID, set voltage, current limit
Scope/probes and calibration
Unpowered resistance results
Quiescent current, no strip
Unpowered-rail data-injection check (B4)
DOUT high/low levels and edge quality
First-LED T0H / T1H / T0L / T1L / RES measured
Full-white current vs. prediction, per strip length
Far-end voltage, injection decision
Thermal observations (connectors, copper)
Deviations, photos, raw-capture paths
Reviewer / date / disposition

14. Review conclusion#

The design is minimal and coherent: one correctly chosen part does the one job the board has. AHCT is the right family for a 3.3 V-to-5 V single-wire shift — the TTL 2.0 V input threshold accepts the FPGA, and the 5 V-supplied output clears the WS2812B's 0.7 × VDD = 3.5 V requirement that makes direct 3.3 V drive out-of-spec. Powering U1 from the strip rail is a good implicit interlock against driving data into an unpowered strip. Unused gates are parked per the datasheet rule, decoupling is sensible, and the family's two-rail discipline (strip power never through the PMOD) is respected.

The principal open risks, all unverified because nothing has been built: no PCB layout exists, so every current-carrying claim (traces, ground return routing, C1 placement) is unproven; both screw-terminal MPNs are "TBD" with unconfirmed current ratings against an 8.6 A worst case; the board has no fuse or reverse-polarity protection, so bench discipline is the only protection layer; WS2812B timing windows vary by datasheet revision and must be matched to the actual pixels; the ws2812_tx HDL integration, testbench, and demo are still on the release checklist; and the 60 mA/pixel budgeting figure is an industry convention, not a number printed in the cited datasheet. First-article testing must start current-limited, with a short strip, and stop at the first abnormal result.