CONTENTS

Home
Updates
Software
Electronics
Music
Resume
Contact


YouTube
BlueSky
GitHub
LinkedIn

HTTPS VERSION


PDP-11 in an FPGA

June 7, 2025

Introduction

A friend of mine sent me a link to a project called run-ancient-unix which has images for Unix for PDP-11. This made me curious about the PDP-11 instruction set. I then added it to naken_asm and started working on the Verilog. Since this instruction set was very similar to MSP430, pretty much copied the MSP430 FPGA project from earlier and made changes to decode PDP-11.

This project is still being developed, so this page will pretty short.

Currently the only peripherals are SPI, but I plan to possibly add UART and SD card support to attempt to run one of the Unix images.

Related Projects @mikekohn.net

FPGA: FPGA VGA, Nexys2, Glow In The Dark Memory, Intel 8008, F100-L, RISC-V, x86 / 68000, MIPS, MSP430, PowerPC, W65C832, Apollo 11, PDP-11

Source Code

git clone https://github.com/mikeakohn/pdp11_fpga.git

Features

The project is setup to work on an IceFUN board but I might break this out into something bigger and get it working on a different chip.

The supported peripherals are IO, Button input, speaker tone generator, and SPI. The memory map has two 4k RAM segments and a 4k ROM segement at the top of the 16 bit addressable memory.

* Bank 0: 0x0000 ROM (4096 bytes) (writable) * Bank 1: 0x4000 Peripherals * Bank 2: 0x8000 RAM (4096 bytes) * Bank 3: 0xf000 RAM (4096 bytes) * 0x4000: input from push button * 0x4002: SPI TX buffer * 0x4004: SPI RX buffer * 0x4006: SPI control: bit 1: start strobe, bit 0: busy * 0x4010: ioport_A output (in my test case only 1 pin is connected) * 0x4014: ioport_B output (3 pins)

There are some sample test programs in the repo which can be assembled with naken_asm.

One of the samples is lcd.asm which was ported directly from the MSP430 FPGA project samples. By comparison, the PDP-11 mandelbrot takes 26 seconds mandelbrot while the MSP430 one generates in 24 seconds.

Copyright 1997-2025 - Michael Kohn