I/O modules

AXO-017 — microSD card PMOD module

Catalog #17 in the AruviX output line, level L4 (SPI-mode SD, FAT, block driver). The storage keystone of the standalone-computer path.

Level L4 ERC clean DRC clean Fab package 12 components
3D render of the AXO-017 PCB
Rendered from the PCB layout. No physical board has been manufactured.

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 Card VDD high-frequency decoupling at the socket GRM188R71C104KA01D
Murata
C_0603_1608Metric
C2 10uF 10V X5R Bulk reservoir for card write-burst current (cards pulse tens of mA) GRM21BR61A106KE19L
Murata
C_0805_2012Metric
J1 PMOD PLUG 2x6 PMOD peripheral plug (Digilent spec 1.2) not selected
generic
PinHeader_2x06_P2.54mm_Horizontal
J2 microSD DM3AT Hirose DM3AT-SF-PEJM5 push-push microSD socket with detect switch DM3AT-SF-PEJM5
Hirose
Datasheet ↗
microSD_HC_Hirose_DM3AT-SF-PEJM5
R1 10k CMD pull-up (SD spec) RC0603FR-0710KL
Yageo
Datasheet ↗
R_0603_1608Metric
R2 10k DAT3/~CS pull-up (SD spec; also keeps the card deselected before FPGA config) RC0603FR-0710KL
Yageo
Datasheet ↗
R_0603_1608Metric
R3 10k DAT0/MISO pull-up (SD spec) RC0603FR-0710KL
Yageo
Datasheet ↗
R_0603_1608Metric
R4 10k DAT1 pull-up: unused in SPI mode but must idle high RC0603FR-0710KL
Yageo
Datasheet ↗
R_0603_1608Metric
R5 10k DAT2 pull-up: unused in SPI mode but must idle high RC0603FR-0710KL
Yageo
Datasheet ↗
R_0603_1608Metric
R6 10k Card-detect pull-up: switch to GND closes on insertion, so CD reads LOW = card present RC0603FR-0710KL
Yageo
Datasheet ↗
R_0603_1608Metric
R7 100R Series protection on the card-driven MISO line RC0603FR-07100RL
Yageo
Datasheet ↗
R_0603_1608Metric
R8 100R Series protection on the module-driven card-detect line 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 CD CS_N GND MISO MOSI SCK SD_CD SD_DAT0 SD_DAT1 SD_DAT2

Production status#

Schematic ERC0 violations
PCB layoutcomplete
DRC0 violations
Fab packageexported (24 gerbers + drill + CPL + BOM)
Fabricatedno — design stage only

Source: boards/io-modules/axo-017-microsd


Catalog #17 in the AruviX output line (../README.md), level L4 (SPI-mode SD, FAT, block driver). The storage keystone of the standalone-computer path.

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

What it teaches#

The full storage stack, bottom-up:

  1. SPI-mode init sequence — power up, ≥ 74 clocks with ~CS high at 100–400 kHz, CMD0 (idle) → CMD8 (voltage check, distinguishes SDv2) → ACMD41 loop until ready → CMD58 (OCR/CCS: SDSC vs SDHC addressing), then raise the clock (≤ 25 MHz) and read 512-byte blocks with CMD17.
  2. FAT lesson — MBR partition table, FAT16/32 boot sector, cluster chains, root directory; first in HDL with the sd_spi + fat_reader cores, reading a file by name with no CPU at all.
  3. AruviOS block driver — the same board then backs the OS: block device interface, filesystem mount, and finally loading programs from card on the CPU-you-wrote.

Design#

PMOD pin123456789101112
Net~CS (DAT3)MOSI (CMD)MISO (DAT0)SCK (CLK)GND3V3CD (low = card)NCNCNCGND3V3

Type 2A expanded SPI, card detect in the pin-7 interrupt slot.

Regenerate#

python3 generate_design.py

Remaining for release#