Malvineous wrote:
Unfortunately the RPi's GPIOs aren't fast enough to interface with the ISA bus, and there are nowhere near enough of them either. Even using DMA there wouldn't be enough CPU time left to do anything interesting. So you'd have to use an FPGA or other processor with 80+ GPIOs in order to do the interfacing.
But it would be sweet to be able to implement hardware devices in software, in C, Python, etc. and have them "work" on a real vintage PC!
This, exactly. You’d need 28 GPIO just for the address and data pins on an 8-bit ISA bus. Then there’s the IRQ, DMA, R/W, etc. signals. If you did bare metal programming on the Pi, taking advantage of DMA, you *might* get 8MHz out of the GPIO, but at that point you may as well use a simple Cortex-M MCU (the whole point of using the Pi is having access to Linux and high level languages).
That said, this might be doable with a BeagleBone Black. It has many more GPIO than the Pi (over 40 are brought out on the BBB board itself and you could get access to 60+ by using one of the processor modules, which is essentially the TI ARM Processor, DDR RAM, PMIC and optionally WiFi module, all on a tiny LGA Mount PCB.
So, why could a BeagleBone do it when the Pi couldn’t? It has a trick up it’s sleeve. Well, two, actually. The TI ARM Processor has two custom, high speed independent MCUs designed for real time control. You can program them and transfer data back and forth between them and Linux running on the main CPU. They’re called PRUs or Programmable Real-time Units. Between those and the large number of GPIO, it might be do able.
The idea of hooking a BBB to an ISA card is something I’ve been thinking about for awhile. I plan to hand-wire a prototype and see if it’s truly feasible once I’m done with my current project.
Speaking of which, my current project is actually along similar lines, only quite a bit further along in the pipeline. This project is essentially a Cypress PSoC 5LP on an ISA card. The PSoC is a neat chip that combines tons of analog peripherals (DACs, ADCs, op-amps, etc.), CPLD like functionality and an ARM Cortex-M4 MCU. Any function can be routed to any pin via the flexible internal routing fabric and there are very few fixed digital peripherals (if you need two I2C ports and a serial port it uses the programmable logic blocks to create them).
The idea is to use the PSoC to do everything from simulate option EEPROMs (which would be stored and read from an onboard flash chip or SDcard), add virtual floppy drives (like a Gotek or similar device), be able to emulate pretty much any ISA sound card you could imagine (with the sound going out over I2S to a codec chip *or* using the built-in DACs for direct audio output), simulate a modem/PPP connection (which would connect to the network via a inexpensive WiFi module) and pretty much anything else you could think of that would fit into a MCU of that size. The current design of the ISA/PSoC board has three sets of headers where you can connect the afformentioned options (if you wanted to use it for modem/PPP access you’d pop on a small board that contains the WiFi module; if you want ROM or floppy emulation you would pop on an SD or flash board, etc).
Anyway, once the first set of prototype boards gets in from China I’ll make a thread on the project.
Any sufficiently advanced technology is indistinguishable from magic. (E.g., Cheez Whiz, RF, Hot Dogs)