Due to unforeseen circumstances, I have a shift in focus for the RetroChallenge project. While I may yet do some vector graphics work as previously intended, for the first half of the RetroChallenge I’ve been busy writing VHDL code to implement an IEEE-488 interface (a.k.a. GPIB or HP-IB) in an FPGA, which I eventually intend to use to build modern peripherals for use with the HP 9830A, HP 87XM, HP 9000 Series 300, Commodore PET, CBM 8032, and SuperPET computers. I’ve already tweeted a little about the development of the GPIB core, but since it wasn’t originally intended to be my RetroChallenge project, I didn’t use the #retrochallenge hash tag for those tweets.
I’ve just put the work-in-progress VHDL code, including synthesizable RTL as well as testbench and stimulus files, in a github repository. The code is all licensed under the terms of the Free Software Foundation General Public License (GPL) version 3. I’m willing to negotiate non-GPL licenses on a case-by-case basis, though it seems unlikely that there’s a commercial market for it at this late date.
I’ve implemented all of the IEEE-488 interface functions from the 2003 edition of the standard except the SHE and AHE functions, which would support non-interlocked transfers at up to 8 MB/s. I don’t have any test instruments or computer peripherals that support that capability, so I don’t have any real hardware I could test against if I did implement it.
Thus far I’ve partially tested the Source Handshake (SH) and Acceptor Handshake (AH) functions. A minimum useful GPIB device also needs the Talker (T) and/or Listener (L) functions, so I intend to test those in simulation next.
A friend is making a daughterboard for one of the Artix-7 FPGA boards he makes, which will have the SN75160 and SN75162 buffers (necessary to meet the IEEE-488 electrical specifications), the IEEE-488 connector, and a few SD card slots. Depending on how soon that’s ready, I may kludge up the buffers and IEEE-488 connector on perfboard. Once I have hardware, I’ll start testing the core against a real computer, probably the HP 87XM or 9000 series 300.