Skip to the content
PCBKitNew board
2 layers102.3 × 33.8 mmNand final, the printed circuit board in 3D

Nand final

IanFeldman/ssd1

2025 Cal Poly EE/CPE senior project aiming to create a usb memory device with nand flash ICs.

Size
102.3 × 33.8 mm
Copper layers
2
Thickness
1.6 mm
Parts
21
Nets
156
Pads
264
Tracks, vias
639, 127
Routed
Yes
KiCad
KiCad 8.0 (file 20240108)
Created
5 Feb 2025
Updated
11 Jun 2025

Overview

Nand final is an open-source printed circuit board by IanFeldman, from the IanFeldman/ssd repository on GitHub. It is a 2-layer board of 102.3 × 33.8 mm with 21 parts on 156 nets, routed with 639 tracks and 127 vias.

It is built around the ATMEGA32U2-AU and MT29F4G08ABADAWP-ITX:D TR. Its parts include 7 resistors, 6 ICs, 4 capacitors, 2 connectors and 1 crystal. It belongs with the AVR (ATmega, ATtiny) boards of this library.

Main components

2

README

README.md

ssd

2025 Cal Poly EE/CPE senior project exploring nonvolatile flash storage. Includes a prototype design using an 8051 and small NOR flash IC and the final design with a modern Atmel microcontroller and multiple high-density NAND flash ICs on a custom PCB.

nand-final

2Gib NAND flash memory board with virtual serial interface over USB. Supports default and RAID 1 configurations.

Firmware Build and Flash Instructions (Linux)

sh
# Install dependencies
sudo apt install gcc-avr avr-libc avrdude make

# Clone this repo
git clone https://github.com/IanFeldman/ssd.git
cd ssd/nand-final/firmware

# Burn fuses (first time only)
make fuses

# Compile and flash firmware using ISP
# (edit makefile as needed)
make [UART=1] [RAID=1] # Optionally enable UART debugging or RAID 1
make flash

UART debugging interferes with some NAND chip control lines. Enable it at your own risk.
RAID is performed across all 4 chips, so it decreases the address space fourfold.

Usage:

Plug PCB into PC USB port and open a terminal with:
screen /dev/[path-to-usb-device] -b 9600

Commands:

CommandUsageFunction
Help

help

Displays device info and a list of commands.
Read

read 0x[row] 0x[column] [size]

Reads [size] bytes from memory.
A device will not read across a page boundary.
Write

write 0x[row] 0x[column] 0x[data]

Writes a single byte [data] to memory.
Erase

erase 0x[row]

Erases a block from memory.

Note:

  • [row] is three bytes and represents a page address. Max value: 0x0FFFFF (0x040000 with RAID enabled).
  • [column] is two bytes and represents a page offset in bytes. Max value: 0x07FF.
  • [data] is one byte.
  • [size] is a decimal unsigned integer.

nor-prototype-2

Prototype breadboard 512kB flash memory storage device. Interface over UART at 9600 baud. Compile with SDCC and program with avrdude. See hardware schematic for hardware details.

Firmware Build and Flash Instructions (Linux)

sh
# Install dependencies
sudo apt install sdcc

# Clone this repo
git clone https://github.com/IanFeldman/ssd.git
cd ssd/nor-prototype-2/firmware

# Compile and flash firmware using ISP
make
./program.sh

Usage:

Connect a serial cable to RXD and TXD on the microcontroller. Open a terminal with:
screen /dev/[path-to-serial-cable] -b 9600

Commands:

  • Read an address r[address]
  • Erase an address e[address]
  • Program an address p[address][data]

Where:

  • [address] is 3 hex bytes
  • [data] is one hex byte

nor-prototype-1

Flash memory controller prototype.

Parts

21
QtyValueFootprintReferences
510kResistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR1, R2, R3, R4, R5
4MT29F4G08ABADAWP-ITX_DPackage_SO:TSOP-I-48_18.4x12mm_P0.5mmU2, U3, U5, U6
21.ufCapacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC1, C4
220pfCapacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC2, C3
222Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR6, R7
116MHzCrystal:Crystal_HC49-U_VerticalY1
1ATmega32U2-APackage_QFP:TQFP-32_7x7mm_P0.8mmU1
1Conn_01x02_PinConnector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJ2
1Conn_01x06_PinConnector_PinHeader_2.54mm:PinHeader_1x06_P2.54mm_VerticalJ1
1LM3940IMP-3.3_NOPBPackage_TO_SOT_SMD:SOT-223VR1
1~test:PCB_USB_connectorU4

Questions

How big is the Nand final PCB?

It measures 102.3 × 33.8 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Nand final use?

21 parts, built around the ATMEGA32U2-AU and MT29F4G08ABADAWP-ITX:D TR. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the Nand final KiCad files?

From the IanFeldman/ssd repository on GitHub, at the commit this page was made from: the board is nand-final/hardware/nand-final.kicad_pcb and its schematic nand-final/hardware/nand-final.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Nand final design in my own project?

Its repository states no licence, so its author keeps all rights: ask IanFeldman before reusing the design.

Similar boards

  • 2 layers168 × 109.2 mmPocketVoltex, the printed circuit board in 3D

    PocketVoltex

    mon/PocketVoltex

    A portable Cherry MX controller for KSM or SDVX

    51 parts155GPL-3.0
  • 2 layers194.3 × 79 mmQEZ, the printed circuit board in 3D

    QEZ

    str-dst/QEZ

    A seamless, gasketmounted QAZ-like 40% keyboard

    82 parts111
  • 2 layers57.2 × 38.9 mmCookpad pad, the printed circuit board in 3D

    Cookpad pad

    cookpad/cookpad-pad

    Cookpad Pad — A six keys macro pad made by Cookpad.

    32 parts76Apache-2.0
  • 2 layers120.1 × 52.3 mmRedone-3k v2, the printed circuit board in 3D

    Redone-3k v2

    kzrtn/unnamed-3k-v2

    A simple 3 key QMK hotswap keypad for osu!

    62 parts72
  • 2 layers23.7 × 30.5 mmCec2usb, the printed circuit board in 3D

    Cec2usb

    RedoXyde/cec2usb

    HDMI CEC to USB keyboard device

    40 parts50
  • 2 layers73 × 38.1 mmCroaky4, the printed circuit board in 3D

    Croaky4

    Selovert/Croaky4

    4-switch macropad based on Voyager4

    39 parts25
  • 2 layers190.5 × 83.2 mmEndeavour-2, the printed circuit board in 3D

    Endeavour-2

    ScatteredDrifter/Endeavour

    An 38 key orthogonal Keyboard with 3d printable case

    111 parts13CERN-OHL-P-2.0
  • 2 layers18.7 × 36.5 mmTMS6100, the printed circuit board in 3D

    TMS6100

    simoninns/TMS6100-Emulator

    TMS6100 speech PHROM (PHrase Read Only Memory) hardware emulator for use with the TMS5220 Voice Synthesis Processor in an Acorn BBC Microcomputer

    9 parts13GPL-3.0