QSIC – QBUS Storage Interface Card


The old disks for PDP-11s being somewhat difficult to find, Noel and Dave decided to build a card to interface with modern storage devices. The QSIC is a QBUS card to make SD cards and USB mass storage devices appear as traditional disks. It will consist of an FPGA and micro-controller on a dual-height QBUS card with a couple SD card sockets and a USB A socket.

Our plans are to emulate some number of traditional disks and their controllers (initially the RK11 and RP11) as well as invent a new disk controller (we're calling it the RQ11 or maybe we'll just extend the RP11) that better matches the storage devices we're actually using today for those people who are willing and able to write their own device drivers.

Additionally, it will have an interface to indicator panels for all the blinkenlights you could want. We ought to be able to handle at least four indicator panels if you have space to put them.


2015 Oct 10
We talked about the project all summer and now we're getting started. Have some Verilog code running under simulation and putting prototype hardware together to test it out. We expect to work on it over the winter and hope to have something running by spring of 2016.
2016 Feb 14
We have a wire-wrapped prototype board (with a second nearly ready to go) that is running simple QBUS slave cycles. Bus-mastering and interrupts are next, followed by interfacing to some sort of actual storage.
2016 Mar 5
We have DMA operations working in a simple fashion (only one transfer for each bus arbitration and not a hint of block mode) against an equally simple RK11 controller and a small amount of FPGA internal block RAM to make up a RAM disk.
2016 Mar 28
Added an indicator panel that monitors the QBUS; love those blinkenlights. A short video clip is here. If you know where to look, this clip shows a bug in the DMA implementation. The bug is fixed now but it tickles me that the indicator panel was useful so quickly and unexpectedly.
2017 Apr 26
This winter was time to work on interfacing to the storage medium itself and the SD cards were first up. Work went slower than anticipated, for some reason I was totally blocked on these things, and they're not quite working yet. Finally we switched over to a very simple micro-coded design and it started moving forward. We're getting through the SD card initialization sequence but don't yet have data transfers working.

The work on the QBUS protocol lead us to some interesting insights into how to implement bus arbitration. We decided to write that down in a paper that's available here.

2017 Dec 28
Got the SD card reading and writing blocks of data and wired it to the simple RK11 controller through asynchronous FIFOs. It's mostly working though there are a few bugs still to work out and there's lots of RK11 emulation that could be added.
2018 Jan 29
Turns out that Unix needs the ability to read and write partial blocks that the RK11 has and that I hadn't implemented. Now that that's working, we're able to boot v6 Unix off an SD card pretending to be an RK11/RK05.

You want to help?

Awesome! We'd love help. We want to get a prototype running first and we're busy working on that now using a wire-wrapped board and an FPGA module. Before too long, we'd like to transition to a circuit board of our own. If you have knowledge and experience with designing, manufacturing, and soldering up boards with BGA parts, we'd love to have your help with this.

The indicator panels will be a lot of fun but they'll need graphic design for the different inlays and manufacturing of the mechanical bits. We have ideas for most of it but not yet for fabricating the bezel. You want to take a crack at that?

In addition to the hardware, there's the software. We'll probably do only a handful of the possible disk controllers so if you have one that's particularly near and dear to your heart (or necessary to your operating system of choice), that's a good project. Or how about a 9-track tape controller? It's probably best to wait until we have at least something working before getting too far afield with hordes of different device controllers.


Beyond the QSIC, we're contemplating a Unibus board as well. Besides emulating disk controllers, it could act like the ENABLE board did in giving 18-bit Unibus machines access to 222 bytes of memory like a PDP-11/70. To do that, we'd probably just put the memory on the board too as that simplifies the design considerably and the smallest memory chip we can buy that matches the Artix7 FPGA we're looking at is 256MB.