← AXC-008

Circuit review & bench-test guide

AXC-008 — USB low-speed soft-host lab PMOD module

Design-stage — board not yet fabricated

Document purpose#

Component-level explanation and bench-test plan for axc-008-usb-ls, from generate_design.py, the module README.md, and the USB 2.0 low-speed signalling spec + USBLC6-2SC6 datasheet. Never fabricated; values are verification targets. This is the "USB in pure fabric" flagship — a resistors- and-ESD-only board; the entire serial interface engine lives in the FPGA.

1. What the board does#

Provides the physical layer for a bit-banged USB 1.1 low-speed (1.5 Mbit/s) host: a USB-A socket, D+/D− series resistors, host-side pull-downs, ESD protection, and an external 5 V VBUS. Everything else — NRZI, bit-stuffing, SYNC, packets, the SIE — is done in the FPGA. Enough to read a low-speed keyboard or mouse.

EXT 5V J3 ─> VBUS ─> J2 USB-A
J2 D+/D- ─> 68R series ─> PMOD 1 (D-) / 2 (D+) ; 15k pull-downs (host role)
U1 USBLC6-2SC6 ESD across D+/D-

2. Safety and scope boundaries#

4. Interfaces#

5. Component-by-component review#

6. Datasheet / spec summary (USB LS)#

7. Expected values before bench testing#

8. Manual review checklist#

9. Ordered bench-test procedure#

A. Unpowered: verify 68 Ω series, 15 kΩ pull-downs, USBLC6 across the pair, VBUS path; no rail short.

B. Power, no device: 3.3 V, then 5 V/200 mA into J3. Confirm VBUS = 5 V at J2; both D lines low (pull-downs).

C. Connect detect: plug in a known LS device (cheap keyboard/mouse). Confirm D− rises to ~3 V (device 1.5 kΩ pull-up wins) → idle "J"; the host can now sense attach. Confirm VBUS current is within limit.

D. Reset + signalling scope: have the FPGA drive SE0 (both low) for the reset time, release; scope D+/D− for the 1.5 Mbit NRZI idle and the device's response. Confirm edges are clean through the 68 Ω/USBLC6.

E. Enumeration: run the fabric SIE: reset → GET_DESCRIPTOR(device) → expect the 18-byte device descriptor; SET_ADDRESS; GET_DESCRIPTOR(config). Capture the descriptor bytes as the success criterion.

F. Report data: for a keyboard, poll the interrupt IN endpoint; press a key; confirm the HID report byte changes. (This is the "it actually works" moment.)

10. Troubleshooting map#

11. Bench record template#

Board: axc-008  VBUS: __ V  D lines idle low (no device): [ ]
Device attach: D- rises to __ V (idle J): [ ]
1.5Mbit NRZI on scope: [ ]
Device descriptor read (18 bytes): [ ]  HID report on keypress: [ ]
Notes:

12. Review conclusion#

The hardware is deliberately minimal — 68 Ω series, 15 kΩ host pull-downs, an ESD array, and VBUS. The pull-downs define the host role and the series resistors make the 1.5 Mbit edges survivable; the USBLC6 is non-optional given hot-plug ESD. Everything hard is in fabric. On the bench, the two proofs are attach-detect (D− rises via the device pull-up) and reading an 18-byte device descriptor. Keep VBUS at a 200 mA bench limit — the fuse is only a 0 Ω placeholder.