Continuing the discussion from The UniBone Linux computer for UNIBUS where @elb links to a project using the Beaglebone with its PRU I/O helpers to interface with the 1MHz Unibus, and which in turn links back to @RichardP’s thread about using an ESP32 to emulate a realtime clock on the Amiga’s bus…
… I was reminded of a number of projects seen on Stardot which might be of interest. There are at least two challenges: interfacing modern ARM to a 5V system, and responding quickly enough to interface with a 1MHz or even 2MHz bus which has no stall capability:
- Electron Plus 1 ROM emulation and SD interface using an STM32F4 (using a cheap ARM dev board. Crucially “Most F407 pins are 5V tolerant”)
- Electron Plus 1 nINFC and nINFD timing (using a Teensy 3.1, DIL format ARM board, 5V tolerant inputs)
- PiTubeDirect uses simple level shifters and bare-metal code on a Raspberry Pi to connect to an Acorn BBC Micro’s Tube interface as a second processor. With bitbanging code running on the GPU it’s reliable on a 2MHz bus, when the GPU is used for video and the bitbanging is done by the ARM it’s reliable on a 1MHz bus.
- Raspberry Pi to 1MHz bus interface is a work-in-progress to connect a Pi to the Beeb’s 1MHz expansion bus, using the ARM for bit-banging and leaving the GPU free for video.
Not entirely unrelated, in Atom Video to HDMI Adapter @hoglet uses a 5V-tolerant CPLD to perform high speed data interfacing and voltage conversion for a Pi. A bit like the Beaglebone’s PRUs perhaps.
Also not unrelated, revaldinho has privately reported using a Teensy 3.5 to emulate a ROM expansion on an Amstrad CPC system - that’s more or less a 4MHz Z80 bus, but with the possibility of wait states. The Teensy pinout is not helpful - shifting and masking is necessary to bring the bits of a bus together. The 3.5 is 5V tolerant and - I think - a bit more capable than the 3.1.