Skip to content

A collection of VME-based hardware and software for modular computers

License

Notifications You must be signed in to change notification settings

transistorfet/retroverse

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

54 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

RetroVerse

Started August 06, 2023

A series of computer cards using the VME bus as a common backplane, in the style of modular computer equipment, laboratory test equipment, and industrial controls systems.

I've always liked the VME bus for its adaptability. It's an asynchronous bus with dynamic sizing, so it can support both controllers and peripherals that require different signaling speeds and bus widths to communicate, without requiring a specialized bus interface chip. It supports multiple controllers without the need for a special slot on the backplane, because it uses daisy chained priority bus arbitration. It's based on the Eurocard standard form factor (VME stands for Versa Module Eurocard), and uses standard and readily available DIN41612 connectors, comes in a 3U variant, and it's possible to still buy equipment that conforms to the standard, namely card cases and power supplies. The 3U Eurocard standard, which uses 160x100mm boards, is also fairly affordable for PCB printing, and it's possible to make 100x100mm cards, which can be printed for as low as $2. The bus is perhaps slow by modern standards, but for CPUs that are below 100MHz, it's the perfect bus to build 16-bit and 32-bit retro computers around.

The project name comes from retro computers (newly designed computers based on old CPUs and parts), and the V in VME which stands for Versa.

I have ordered an off-the-shelf desktop card case from Schroff via Digikey, on backorder, a used Schroff 3U 11-slot backplane from eBay, and I plan to adapt an affordable MeanWell power supply to power it. I'm hoping to be able to install multiple CPU cards into the same system to make a simple multiprocessor machine. I've already made a generic card using a microcontroller wired to the bus, that I intended to use as a bus analyzer called BigBoy, but it's a bit too slow for that so I'll try instead to use it as a generic peripheral. I've also made a CPU card with a MC68030, onboard RAM, Flash, and serial ports, and a small 16-bit memory card with up to 4MB of static RAM, a board for handling the bus arbitration and interrupt signals on the bus (separate instead of as part of the CPU card because it will be a multiprocessor system), and I've built Tom's CompactFlash card from COMET to use as the main storage drive for the system.

I had originally intended to design and build my own backplane using 4-row connectors with some of the P2 connector's signals on an extended P1, but I abandoned that idea in the interest of interoperability and ended up buying a used 11-slot Schroff backplane from eBay. Tom Storey has designed a 3-slot and 8-slot backplane as part of COMET which is a good choice for those who wish to build their own.

I also intend to eventually make a 68010 version using only DIP chips and hopefully all hardwired logic, so that there's no need for specialized PLD programmers. I might also make cards with other CPUs. It should be possible for the system to support different CPUs in the same system at the same time, running their own code. My larger hope is for the VME bus to be used more broadly in the hobbyist retro computer community as a common means of constructing systems.

Why VMEbus?

  • it uses the eurocard form factor, and equipment such as cases can still be bought new or used

  • it's asynchronous, so it can support devices operating at different speeds

  • it supports dynamic bus sizing for 8-bit, 16-bit, and multiplexed 32-bit operations in 3U

  • in the 6U form factor, it can also support full 32-bit or multiplexed 64-bit operations

  • the DIN41612 connectors it uses are still widely available with solder tails

  • supports cheap 3U board sizes of 100mm x 160mm or 100mm x 100mm

  • also supports 6U board sizes for bigger and more complex devices

Why Not VMEBus?

  • it can be a bit more complicated to interface to for simple 8-bit systems

  • it's slower than newer buses like CompactPCI

  • when using passive termination instead of active termination, it can draw a lot of current (2A+) with no cards

  • each signal can draw a fair amount of current, which may be out of range for some logic chips (the standard requires that each pin can sink 48mA or more but typically it's <25mA in smaller and slower systems)

About VMEbus

Other VME Projects

VMEbus prototyping card PCB:

Proto Boards, Blanking Plates, Plate Adapters, ECB backplanes:

COMET backplane, prototyping card, and single board computer:

[If you know of any other hobbyist VME components or projects that others can build, please get in contact with me. I'd love to add them to this list]

Single-CPU System

This is generally where I'm at, as of January 2025. I have a simple single-CPU system with SystemBoard, k30p-VME, Tom Storey's CF Card, and MemBird Woodcock (although it's not used by the software atm). It can boot Gloworm, using the CF card as the ATA device, and the FTDIs on k30p as the TTY and network SLIP connection. I can ping it from my computer over SLIP, and run applications off the CF card.

alt text alt text

Desktop Case

I bought a brand new Schroff PropacPro 3U 63HP 266mm deep Unshielded Complete Desktop case. I initially requested a quote from Schroff, but unsurprisingly they sent me back a list of authorized redistributors instead. It turned out that Digikey did actually have the cases available for backorder but the listing was uncategorized, so you had to search specifically for the part number to find it.

Backplane

I bought a Schroff 23000-041 11-Slot backplane, used from eBay. Luckily it has automatic daisy-chaining, so when a slot doesn't have a card in it, the daisy-chained signals are shorted in order to bypass that slot. It also has active termination, which I have enabled with the jumpers, so it takes only 10mA or so of 5V power without any cards connected.

alt text

k30p-VME

A CPU card with a Motorola 68030 CPU, and an ATF1508AS CPLD for the control logic. It has 2MB of static RAM onboard, 512KB of Flash, a MC68681 dual serial port controller, with space for two onboard FTDIs, and some push-button and LEDs that can be controlled by the serial controller. The CPLD can control the onboard transceivers to make a VME request from the CPU, based on the address that the CPU is requesting. I've tested it with 8-bit and 16-bit cycles, but I've designed it with the transceivers that are required to make an A40/MD32 bus access, and hope to implement it soon using BigBoy as the test peripheral.

While building the first revision, I found a number of issues. The transceivers don't turn off when the CPLD is being programmed, or when it's unprogrammed, and that means they write into each other, and can damage each other. I reworked in some pull-up resistors for the /OE signals to disable the transceivers when the CPLD outputs are low or tri-stated. I also originally had the FTDI powered by the board, which meant it would disconnect from the computer every time the board was power cycled, which was quite problematic when testing. I tried to rework it so that it was powered by the USB bus, but at first that didn't work. After replacing the chip with an external FTDI, I tried reworking it again and found that the USB-C cable only works in one orientation because I don't have the main differential pair from each side of the USB-C connector jumped together. The full errata is here: k30p-VME-rev1-errata

alt text alt text alt text

MemBird Woodcock

A memory card with up to 4MB of either Static RAM or Pseudo-static RAM powered by either 5V or 3.3V, which can be selected by a soldered jumper and by using different chips (memory and transceiver chips in particular). It can only respond to A24 cycles, and only 8-bit or 16-bit accesses, but that should serve well enough as common memory for when I have multiple CPU cards. In future I will make another MemBird board with an FPGA and SDRAM to allow for 128MB+ of memory, but until then, this will suffice.

The building of this board went really smoothly. Soldering went better than normal for SMT parts. I was using ChipQuik NoClean Liquid flux, which worked well. I only had one chip that was visibly unconnected on closer inspection, and I didn't find any unintended bridges. The board was behaving strangely when I first tested it before I cleaned the flux off, but once I cleaned it and let it dry overnight, it worked perfectly.

It's named after the American Woodcock, a small bird that moves along with a slow rhythmic walk, since this card only has a small amount of memory, and will be slower to access, being only 16-bits.

alt text alt text

SystemboardSMT

A system board with an ATF1508AS in the centre, and a clock, and that's about it. It's primary function is to handle the bus arbitration logic, but I can also use it as a dummy 8-bit peripheral for testing.

I designed and built this board second, before the k30p and MemBird Woodcock, because it was simple and would act as a test for the ATF1508, which I hadn't used before (other than in the devkit I bought from Atmel). The initial logic for the bus arbitration state machine turned out to be very wrong, and that was causing problems for the k30p, which was hanging indefinitely. I thought it was the k30p's logic, but it turned out it wasn't receiving the bus grant from this card.

alt text alt text

BigBoy

This was the first card I made and I intended to use it as a bus analyzer among other things, but it's a bit too slow to catch most cycles, so I think I'll need an FPGA card instead for that function, but it can work as a slow peripheral. It has an STM32H743 microcontroller in a 208 pin QFP package in the centre with the 5V tolerant I/O connected directly to the VME bus for the control signals, and through transceivers for the data and address signals. On the board is also a 100BaseT ethernet interface, a full speed USB port (so 12Mbps I assume is the fastest), a microSD card slot (where I accidentally put the footprint on backwards), and a few headers for external FTDIs, I2C, and SPI device.

It's called BigBoy because it has the big boy microcontroller in the largest TQPF package available, with a big 4-row DIN41612 connector which was an idea to add an extra row to P1 for the upper data and address signals of a 32-bit system, which is optional (the 4-row connector can be plugged into a 3-row or 4-row backplane). I've mostly abandoned this idea in favour of sticking to the standard, and using the A40/MD32 cycle on a 3U system, or perhaps eventually making a 6U system and cards if I want full-sized, higher speed, 32- or 64-bit systems in the future, all while maintaining interoperability with existing used backplanes. The logo is of Bronson the Cat who is such a big boy

alt text alt text alt text