Quickstart - ND-120 on the Sipeed Tang Nano 20K¶
Run the 1988 Norsk Data ND-120 on this board from a ready-built bitstream - no FPGA toolchain needed. One small open-source tool flashes the board once; after that it boots the ND-120 at every power-on with no PC attached.
What you need:
- Sipeed Tang Nano 20K
- A USB-C cable (powers the board, carries programming AND the serial console - the board shows up as two serial ports)
- A microSD card, FAT32, for the Winchester disc image
- A serial terminal program (picocom, PuTTY, TeraTerm, ...)
- A bitstream from the GitHub Release (the filename tells you the CPU
clock; the console is 115200 on every release file):
nd120_tang20k_fast20_20MHz_115200.fs- fast build (20.25 MHz CPU, timing-clean, boots SINTRAN in ~40 s)nd120_tang20k_slow_6.75MHz_115200.fs- safe build (6.75 MHz CPU, the long-validated speed)
Unlike the Nexys 4 DDR, this board cannot load its bitstream from the SD card - the SD slot is wired to the FPGA fabric (the ND-120 uses it for the disc), not to the configuration controller. Flashing the onboard SPI flash once gives the same convenience: the board configures itself at every power-on.
1. Install openFPGALoader¶
Open source, small, no licence:
- Debian/Ubuntu/WSL:
sudo apt install openfpgaloader - macOS:
brew install openfpgaloader - Windows: ships in the OSS CAD Suite
(github.com/YosysHQ/oss-cad-suite-build), or use Sipeed's documented
tools; the Gowin Programmer GUI also flashes
.fsfiles if you have Gowin EDA installed.
2. Flash the bitstream¶
The -f writes the onboard SPI flash: the ND-120 now starts at every
power-on, no PC needed. (Without -f it loads volatile SRAM instead -
gone at power-off - useful for trying the other bitstream quickly.)
WSL note: the board must be attached to WSL first
(usbipd attach --wsl --busid <id> on the Windows side; in this repo
Verilog/fpga/tang-nano-20k/usb-attach.sh does it).
3. Disc image¶
Copy a Winchester disc image onto the FAT32 microSD (root directory) and
insert it. The image is not part of the release - it contains
SINTRAN III, which is not this project's to distribute. The ND software
preservation community keeps images; ndtool builds and inspects them.
4. Console and boot¶
The board exposes TWO serial ports over the one USB cable; the console
is the SECOND one (on Linux typically /dev/ttyUSB1). Settings:
115200 baud, 7 data bits, EVEN parity, 1 stop bit, no flow control.
(Bitstreams older than 26-AUG-2026 used 9600.)
- Press ENTER - the machine's OPCOM console answers. That is the no-disc smoke test: bitstream and console proven.
- Type
20500&to boot the operating system. SINTRAN III RUNNINGand the Watchdog banner follow (~40 s on the fast build); log in and enjoy 1988.
Troubleshooting¶
| Symptom | Cause |
|---|---|
Terminal shows ?-garbage |
8N1 framing - set 7 data bits, EVEN parity, 1 stop bit |
| Nothing on the terminal | Wrong port (use the second one) or wrong baud (release = 115200; pre-26-AUG builds = 9600) |
OPCOM answers, 20500& prints nothing |
No disc image in the card's FAT root, or card not FAT32 |
| openFPGALoader does not see the board | WSL: board not usbipd-attached; any OS: cable is power-only |
| Board reverts to old design after power-cycle | Flashed without -f (volatile SRAM load) - repeat with -f |