• Please review our updated Terms and Rules here

Verilog PDP-8/I and TC08/TU55 boots OS/8!

antiquekid3

Veteran Member
Joined
Nov 10, 2009
Messages
594
Location
Alabama
Over the last month or so, I've been converting Flip-Chip modules from schematics to Verilog, mostly by hand. With much help from Vince Slyngstad, we converted his wonderful, digitized PDP-8/I drawings to a Verilog netlist that instantiates all of my modules. After many hours of debugging, and even uncovering the very rare error in Vince's schematics, the PDP-8/I model came to life and executed a variety of MAINDECs--correctly, even!

But, I couldn't stop there. It's not a real PDP-8 unless it can boot OS/8, so for that, I turned to modeling the TC08 and a TU55. The TC08 was developed in the same way as the PDP-8/I: Vince's schematics plus custom Flip-Chip Verilog models. The TU55 is just an approximation of one at this point, but it's close enough to work. I'll work on adding write support and increasing the fidelity of the transport model soon.

The goal of this project was not to create a Verilog PDP-8 with peripherals. That already exists. Actually, many implementations already exist. The goal of this project was to preserve the original implementation at the Flip-Chip level. I believe the success of this so far proves that this is a viable technique for bringing life to other PDP machines--and other computers as well. Someday, I hope to have a library of Flip-Chip (and System) modules, along with models of certain logic chip families used on the later integrated modules, such that the only thing required to bring up a new computer is the backplane netlist, derived from digitized schematics or otherwise. This can also be a great debugging technique, since nearly every backplane connection is available for viewing with GTKWave, which can then be compared to any oscilloscope or logic analyzer traces. This also provides a test platform for testing new peripherals and such, by providing a logically-accurate Negibus and Posibus.

There are some limitations in this approach, namely the core memory components have all vanished and have been replaced with a simple memory module instead.

Without further ado: https://github.com/drovak/verilogpdp

I still haven't targeted an FPGA yet, but that is in the works. Right now, it simulates (very slowly) with Verilator. You'll get to the dot prompt after a few minutes, and if you're patient enough, you'll eventually get a directory listing after typing "DIR". Better plan to get breakfast, lunch, or dinner while you wait, as it takes about an hour to get there on my computer.

If anyone wishes to contribute Flip-Chip Verilog models for other PDPs or peripherals, that would be excellent. If anyone wants to target an FPGA development board, please feel free to send over the project directory and I'll try to incorporate that as well.

Enjoy,

Kyle
 
I am doing my best to approximate the speed up and slow down times of the transport, so when the transport is below a certain speed, the read head outputs (differential) are zero. This condition is detected by each G888 to output some frequency, as if it were seeing no signal and oscillating. Above a certain speed, the tracks are passed through as a normal differential signal. This seems to make everything happy, though I will admit, I have not exercised (or exorcised) the TC08+TU55 to the extent of the main PDP-8/I.
 
Well done Kyle and Vince and thanks for sharing the code!

Paul Koning over at cctalk used the same approach with a CDC 6400 mainframe simulation. He converted the "cordwood" modules to VHDL and then used the wiring lists to create the connections between the instantiated modules which make up the mainframe. He runs the simulation under GHDL. It helped clarify some obscure detail which the otherwise excellent CDC 6000 series manuals did not go into and consequently improved my Desktop CYBER emulator. IIRC Paul did not go as far as implementing any peripherals and their controllers.

Best regards
Tom Hunter
 
Thanks, Tom! Is Paul's 6400 simulation available somewhere? A cursory search didn't turn up much of anything. Having a cycle- and module-accurate 6400 that fits in your pocket would be pretty dang cool!

As of last night, I got basic write support working for the TU55, so this is getting closer to being a usable system. The next challenges will be porting it to a specific FPGA platform, and how to handle file I/O to an SD card or such.

The .tu56 format is a sequence of 129 12-bit-word blocks, fit into 16-bit words, with the top nibble unused. This leaves out all block number, parity, and mark track information that the TC08 needs to find the correct block and confirm parity. As a result, I unpack the .tu56 format into something that looks like a linear tape with four tracks: three data tracks and one mark track. This inflates the size of the tape quite a bit, but it simplifies a lot of logic in the TU55 model. Given that SD cards are large enough these days, I will probably keep things as simple as possible by using the unpacked format for this model when implemented onto an FPGA development board. Later, if I'm feeling ambitious, I may add the packing/unpacking feature directly into the TU55 model.
 
Thanks, Tom! Is Paul's 6400 simulation available somewhere? A cursory search didn't turn up much of anything. Having a cycle- and module-accurate 6400 that fits in your pocket would be pretty dang cool!

Hi Kyle,

Paul Koning's VHDL repository is under Subversion: svn://akdesign.dyndns.org/dtcyber/trunk/vhdl

The C source for my Desktop CYBER software which emulates the CDC 6400 and CDC CYBER models 73, 173, 175 and 170/865 mainframe and a range of peripherals is available from http://www.control-data.info/

Best regards
Tom Hunter
 
Back
Top