Skip to the content
PCBKitNew board
4 layers239.4 × 165.7 mmSpreadout, the printed circuit board in 3D

MC68030 based expandable computer design

Size
239.4 × 165.7 mm
Copper layers
4
Thickness
1.6 mm
Parts
199
Nets
441
Pads
2,107
Tracks, vias
7,565, 880
Pours
4
Routed
Yes
KiCad
KiCad 5 (file 20171130)
Created
16 Jun 2022
Updated
25 Jul 2026

Overview

Spreadout is an open-source printed circuit board by aslak3, from the aslak3/MAXI030 repository on GitHub, published under the GPL-2.0 licence. It is a 4-layer board of 239.4 × 165.7 mm with 199 parts on 441 nets, routed with 7,565 tracks and 880 vias.

It is built around the MC68030RC16C, 74HCT245 and 74HC245D, with the MAX238EWG+, RTL8019AS-LF and SR05S05 among its other parts. Its parts include 78 capacitors, 34 resistors, 34 ICs, 15 connectors and 4 diodes. It belongs with the fPGA and programmable logic boards and the FPGA and CPLD boards of this library.

Main components

10

README

README.md

MAXI030: a MC68030 based expandable computer

MAXI030 PCB

Features as currently implemented

The specification for MAXI030, a MC68030 based computer, is as follows:

  • A core "glue" that is wired to master the 32 bit busses
  • Glue is provided by an EPF10K130EQC240-1 FPGA
  • A 68030 coupled with a 68882
  • 512K x 16 flashes in the form of 2 x SST39SF040 in PLCC32
  • 2 x 72 pin SIMM slots with a controller implemented in the FPGA
  • A SC26C94 QUART with the following arrangements of the four serial ports:
    • Two on RJ45 at RS-232 levels following the standard Cisco pinnout
    • One for my Amiga 600 keyboard on an RJ11
    • And a TTL header for debug and the bring-up
  • Onboard 10Mbit/s Ethernet using a RTL8019AS
  • A PS/2 port for keyboard and mouse using a splitter cable
  • Four 16 bit wide by 16 MByte deep expansion slots compatible with cards like my video card which was implemented for my earlier MC68020 board
  • I2C bus with:
    • DS13057 RTC
    • LM75A temperature sensor
    • PCA9544APW four way expansion slot bus multiplexer allowing expansion cards to attach to the I2C bus
  • IDE with DMA signals routed to the FPGA, though they are currently not utilised
  • A P7805-2000-S 2A 5V potted switching regulator attached to a barrel jack

A schematic is included here, along with the KiCAD data files. Note that schematic symbols are included in the library cache. Whilst these boards were designed with KiCAD 4, the files in this repository are all KiCAD 6 format.

PCB design

The PCB is a 4 layer board. The requirements to make the board are quite heavy; 6 mil traces are used, with 6.5 mil clearances between them. 3 traces pass between 100mil spaced pins in multiple places. My boards were manufactured by JLCPCB with no issues.

Glue logic core

A major feature of this board is the EPF10K130EQC240 FPGA. This component is part of Altera's Flex 10KE family, which is a 3.3V/2.5V part descended from the Flex 10K line of 5V parts. These FPGAs are unfortunately obsolete, and difficult to get hold of; I sourced mine from UTSource.

The board uses mixed 3.3V and 5V signaling. The Flex 10KE series is "special" in that it is fully 5V tolerant without an inline resistor, unlike later Altera parts such as the early Cylcones which are 5V tolerant but need an inline resistor. The Flex 10KE also have outputs compatible with 5V TTL levels. My previous projects have made heavy use of the 5V Flex 10K parts, but I have found that as the board frequency has increased, these FPGAs have reached their limit. Consequently this board switched to the Flex 10KE, despite the complexities inherent in a mixed signal level board.

Beside getting hold of the actual part a challenge facing anyone building this board is obtaining a compatible Altera Quartus version since Intel have, in their wisdom, removed from their site the 9.0sp2 version; the last that supported the Flex 10K(E) series. It can still be obtained if you know where to look, however.

Another small annoyance, related to the FPGA side of the board, is that two EPC2 configuration flashes are needed since this is a large, for the time, FPGA.

I have implemented the following functionality, all in VHDL:

  • Core glue, address decoding etc
  • A basic DRAM controller for one of the SIMM slots
  • Buzzer and LED driver
  • Simplistic interrupt routing (autovectored only for now)
  • An I2C master to operate the RTC and temperature sensor
  • A PS/2 controller for both PS/2 connections
  • An SPI output channel, and bi-directional UART, both for debugging

The code for this functionality resides in the MAXI030Core directory, where a more detailed description of the files used can be found.

As this is FPGA hardware, many other things could be implemented. In particular, the FPGA is wired to the full 32 bits of address and data, so a bus-mastering DMA controller could be constructed. This could be used for disk transfers, amongst other things, which would greatly speed up these operations. The interrupt handling is also basic at present, and vectored interrupts should probably be used.

It's worth pointing out, for completeness, that since the FPGA is attached to a 32 bit wide by 4GB address space it would theoretically be possible to use this board to replace the 68030 with some other custom softcore processor running inside the FPGA, with the 68030 disabled or simply not present. Perhaps a more interesting opportunity would be to implement a custom 68020+ style co-processor.

Expansion Cards

The following three cards have been created:

  1. TestSRAM - This is card is only really useful for the bringup. It has two 512KB SRAMs attached, along with pin headers attached to he expansion bus. It allows the system to be used without having a SIMM attached (and working).
  2. Printer+Sticks - This is a fairly simple card featuring a MC68230 and some latches. The board does not feature a DB25 connector, instead the printer must be attached through a "standard" 2x13 PC style adapter. The latches are attached to DB9 Atari-style joystick ports.
  3. Video+Sound - The most interesting card by far; this a VGA card implemented with a Cyclone II FPGA and some fast 16 bit SRAM to hold the video framebuffer. Also featured is an I2S DAC.

The TestxSRAM card (such as it is) has been shown to be error-free. The Printer+Joystick card has been exercised by attaching an old 9 pin dot matrix printer and printing text, though this was with the earlier MIDI020 68020 board. The Video+Sound board has been attached to MAXI030 and, though it has a few teaming troubles, it appears to work well. The sound portion of that card has not been explored at all however.

More documentation on these cards will be forthcoming. For now, each expansion card directory contains the schematic and PCB files in KiCAD format, plus a PDF of the schematic, the BOM, and the rendered gerbers used to produce the cards.

Machine-code monitor

Over the years I've extended my monitor to run on each 68K based board as I've produced them. The monitor is basic, but serviceable. It is in no way designed for software development; it's main purpose is to exercise the hardware. It has low-level (memory/IO operations) and high level functionality:

  • IDE identify, read and write sectors
  • PS/2 reading/writing
  • I2C reading/writing
  • And others

It is also used to start the Linux kernel.

The monitor source is held in its own repository.

Linux

A Linux port has been started and seems to work quite well. The following hardware has been shown to work, by making very small changes to existing drivers or creating new ones:

  • /dev/ttySC{0,1} UART ports - these map to Port A and Port B on the board
  • IDE - though neither interrupt mode or DMA is currently supported so it is rather slow
  • Ethernet - works well, though the transfers are on an 8 bit port
  • RTC and temperature sensor - an I2C bus driver has been produced which can talk to these peripherals
  • PS/2 - the driver implemented supports both ports
  • Framebuffer - a very slow and Work in Progress driver for the video card I've built

With a 32MHz can installed, a modern Linux kernel will boot in about 2.5 minutes. But see the Gotchas section below.

A fork of the Linux kernel from early 2022 has work done at the head of the lm/maxi030 branch with the changes I've made.

The userland I'm currently using is based on a very old Debian build, even though the kernel is almost the latest, since running the latest 68k Debian packages results in a very slow system. This is another thing to investigate.

A script, which is a total hack, for generating an directory tree of Debian Linux is available in the linux directory. This script can generate both sid (current) and sarge (old) Debian images. It must be edited before use to set the DNS resolver, interface addressing, passwords, custom packages and other things. It makes use of multistrap and QEUMU's 68K support to do its thing.

As it currently stands, the Linux system is useable across the UART (via a login getty), and via the network. Both SSH and telnet are available, SSH being extremely slow as predicted. Console access, using the PS/2 port and my bitmap video card, is very much a work in progress, though I did have X running (very, very slowly) at one point.

The general process to get Linux running on MAXI030 is as follows, assuming the board is up and running with the monitor available via a UART port:

  1. At present the MAC address of the Linux host, which will supply the image, is hardcoded into the monitor program in ne2k.c in the ne2k_transmit subroutine; change it to your PCs MAC address. Note that the MAXI030 MAC address is hardcoded to 11:22:33:44:55:66
  2. Build a suitably patched kernel and convert it to a raw image
  3. Modify the eth-sender program as required, at a minimum the device name for the connected ethernet interface is hardcoded
  4. Run up the eth-sender program (it requires root), the kernel should be available in the same directory and called vmlinux.bin
  5. Partition a Compact Flash: two partitions using MBR, partition 1 for swap and 2 for the rootfs in ext3 (ext4 will work with a newer Debian userland)
  6. Modify the make-multistrap script as required
  7. Create the Debian directory structure and copy it into partition two on the Compact Flash
  8. Create a swap partition (mkswap) on partition one
  9. Plug in the Compact Flash and turn on MAXI030
  10. Transfer the kernel to MAXI030 with the linuxdl command
  11. Run the kernel with a monitor command like: linuxrun "console=ttySC0,38400 root=/dev/sda2"
  12. Wait for kernel to boot
  13. Login via the getty, test the network etc

Issues

The big issue I'm currently working on is board speed. With all the functionality enabled in the FPGA design, I'm currently not able to run the board at the maximum speed of the 68030 I have installed, 40MHz. Insteaed I must settle for running the board at 32MHz. In particular adding the FIFOs on the PS/2 controller results in an inoperable system at 40MHz. The FIFOs seem to be required when running in Linux since the kernel disables interrupts in some situations, which results in data loss.

The board also has a few very minor problems:

  • The switching regulator footprint matches the 1A SR10S05 and similar; the original 2A part fits but must hang off the board since its pinout is reversed. In use and with the video card inserted and a single SIMM attached I've rarely seen the current draw pass 500mA so I think a 1A regulator will be fine
  • The silk screen labels for UART Port A and Port B are the wrong way around
  • The labels for Enable/Disable on the MMU/cache jumpers are also backwards

Blog

The best place to learn about this board is undoubtably my blog, including these posts:

I've also made a short YouTube video, which discusses the board and demos the Linux port.

Parts

199
QtyValueFootprintReferences
610.1uCapacitor_SMD:C_1206_3216MetricC1, C2, C15, C16, C17, C18, C19, C20, C21, C22, C23, C24, C25, C26, C27, C28 +45
154.7KResistor_SMD:R_1206_3216MetricR1, R4, R5, R6, R8, R9, R10, R11, R13, R14, R15, R16, R28, R29, R34
111KResistor_SMD:R_1206_3216MetricR2, R3, R7, R12, R20, R22, R23, R24, R25, R26, R27
1074HCT245SOs:SO-20_5.3x12.6mm_P1.27mmU7, U8, U24, U25, U26, U27, U28, U29, U30, U31
9MountingHole_PadMountingHole:MountingHole_3.2mm_M3_PadH1, H2, H3, H4, H5, H6, H7, H8, H9
833Resistor_SMD:R_Cat16-8RN1, RN2, RN3, RN10, RN11, RN12, RN13, RN14
510KResistor_SMD:R_Cat16-8RN5, RN6, RN7, RN8, RN9
41.0uCapacitor_Tantalum_SMD:CP_EIA-3216-18_Kemet-AC11, C12, C13, C14
4120Resistor_SMD:R_1206_3216MetricR30, R31, R32, R33
422pCapacitor_SMD:C_1206_3216MetricC9, C10, C57, C58
474HC245SOs:SO-20_5.3x12.6mm_P1.27mmU11, U12, U13, U14
4DIN_41612_3x32_MIDI020_EXPaslakfp:DIN41612_C_2x32_Female_Vertical_THTJ7, J8, J9, J10
310uCapacitor_Tantalum_SMD:CP_EIA-3216-10_Kemet-IC36, C37, C39
210nCapacitor_SMD:C_1206_3216MetricC59, C60
24.7KResistor_SMD:R_Cat16-8RN4, RN15
2Conn_01x03Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalJ3, J4
2EPC2Package_LCC:PLCC-20U1, U34
2SIM72Pinaslakfp:SIMM72PinsU9, U10
2SST39SF040-PC32Package_LCC_local:PLCC-32_THT-SocketU19, U20
110KResistor_SMD:R_1206_3216MetricR19
110uCapacitor_SMD:CP_Elec_5x5.7C42
11MResistor_SMD:R_1206_3216MetricR18
1200Resistor_SMD:R_1206_3216MetricR21
120MCrystal:Crystal_SMD_HC49-SDY3
1220uCapacitor_SMD:CP_Elec_6.3x7.7C41
127KResistor_SMD:R_1206_3216MetricR17
12V5TestPoint:TestPoint_Loop_D1.80mm_Drill1.0mm_BeadedTP2
132.768Crystal:Crystal_SMD_EuroQuartz_EQ161-2Pin_3.2x1.5mmY2
13V3TestPoint:TestPoint_Loop_D1.80mm_Drill1.0mm_BeadedTP1
1470uCapacitor_SMD:CP_Elec_6.3x7.7C40
147uCapacitor_Tantalum_SMD:CP_EIA-7343-15_Kemet-WC34
15VTestPoint:TestPoint_Loop_D1.80mm_Drill1.0mm_BeadedTP3
168882Package_LCC:PLCC-68_THT-SocketU5
17.3728MCrystal:Crystal_SMD_HC49-SDY1
174LS03Package_SO:SOIC-14_3.9x8.7mm_P1.27mmU6
174LS21Package_SO:SOIC-14_3.9x8.7mm_P1.27mmU32
1AZ1117-2.5Package_TO_SOT_SMD:SOT-223-3_TabPin2U22
1AZ1117-3.3Package_TO_SOT_SMD:SOT-223-3_TabPin2U21
1BUZZERBuzzer_Beeper:Buzzer_15x7.5RM7.6SP1
1Battery_CellBattery:BatteryHolder_Keystone_3000_1x12mmBT1
1CONN_02X20_IDEConnector_IDC:IDC-Header_2x20_P2.54mm_VerticalP2
1CORELEDLED_SMD:LED_1210_3225MetricD1
1Conn_01x06Connector_PinHeader_2.54mm:PinHeader_1x06_P2.54mm_VerticalJ12
1DS1307Z+Package_SO:SOIC-8_3.9x4.9mm_P1.27mmU18
1DUALRJ45_RS232local:DUALRJ45J2
1EPF10K130EQC240Package_QFP:PQFP-240_32.1x32.1mm_P0.5mmU35
1IDELEDLED_SMD:LED_1210_3225MetricD2
1JTAGConnector_IDC:IDC-Header_2x05_P2.54mm_VerticalP3
1LEDLED_SMD:LED_1210_3225MetricD4
1LM75APackage_SO:SO-8_3.9x4.9mm_P1.27mmU16
1MAX238Package_SO:SOIC-24W_7.5x15.4mm_P1.27mmU3
1MC68030RCkiss68030:PGA128U4
1MPUOSCOscillator:Oscillator_SMD_SeikoEpson_SG8002CA-4Pin_7.0x5.0mmX1
1Mini-DIN-6aslakfp:Connector_Mini-DIN_Female_6Pin_2rowsJ6
1PCA9544APWPackage_SO:TSSOP-20_4.4x6.5mm_P0.65mmU17
1POWERLEDLED_SMD:LED_1210_3225MetricD3
1POWERLJACKConnector_BarrelJack:BarrelJack_HorizontalCON1
1RESETBUTTONButton_Switch_SMD:SW_Push_1P1T_NO_CK_KSC6xxJSW1
1RJ10_KEYBOARDaslakfp:RJ10J1
1RJ45_Amphenol_RJMG1BD3B8K1ANRConnector_RJ:RJ45_Amphenol_RJMG1BD3B8K1ANRJ11
1RTL8019ASaslakfp:RTL8019ASU33
1SC26C94Package_LCC:PLCC-52U2
1SR05S05Converter_DCDC:Converter_DCDC_RECOM_R-78E-0.5_THTU23
1TTL_SERIALConnector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalP1

Questions

How big is the Spreadout PCB?

It measures 239.4 × 165.7 mm and has 4 copper layers, 1.6 mm thick.

What parts does the Spreadout use?

199 parts, built around the MC68030RC16C, 74HCT245, 74HC245D and MAX238EWG+. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the Spreadout KiCad files?

From the aslak3/MAXI030 repository on GitHub, at the commit this page was made from: the board is spreadout.kicad_pcb and its schematic Ethernet.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Spreadout design in my own project?

Its repository publishes it under the GPL-2.0 licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).

More from aslak3/MAXI030

4
  • 4 layers239.4 × 165.7 mmMAXI030, the printed circuit board in 3D

    MAXI030

    aslak3/MAXI030

    MC68030 based expandable computer design

    222 parts38GPL-2.0
  • 4 layers98.6 × 92.1 mmVideo+Sound, the printed circuit board in 3D

    Video+Sound

    aslak3/MAXI030

    MC68030 based expandable computer design

    102 parts38GPL-2.0
  • 4 layers98.6 × 80 mmPrinter+Sticks, the printed circuit board in 3D

    Printer+Sticks

    aslak3/MAXI030

    MC68030 based expandable computer design

    26 parts38GPL-2.0
  • 2 layers98.6 × 54.9 mmTestSRAM, the printed circuit board in 3D

    TestSRAM

    aslak3/MAXI030

    MC68030 based expandable computer design

    15 parts38GPL-2.0

Similar boards

  • 6 layers304.8 × 243.8 mmM68k hbc, the printed circuit board in 3D

    M68k hbc

    ehbc-project/ehbc-proto1-board

    KiCad board designs for EHBC

    72 parts
  • 4 layers215 × 150 mmMackerel-30-proto, the printed circuit board in 3D

    Mackerel-30-proto

    crmaykish/mackerel-68k

    A series of single-board Motorola 68k computers with support for modern Linux

    133 parts96MIT
  • 2 layers54 × 47.5 mmPlus4Serial, the printed circuit board in 3D

    Plus4Serial

    SukkoPera/Plus4Serial

    RS-232 Serial Port Adapter for the Commodore Plus/4

    13 parts6
  • 4 layersSaturn, the printed circuit board in 3D

    Saturn

    johangroth/Saturn

    An SBC based on WDC 65C816.

    67 parts2MIT
  • 4 layers160 × 100 mmK30p VME, the printed circuit board in 3D

    K30p VME

    transistorfet/retroverse

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

    133 parts17
  • 6 layers108.1 × 136.5 mmVersion current, the printed circuit board in 3D

    Version current

    oomlout/oomlout_oomp_project_src

    186 parts
  • 2 layers190 × 125 mm68hc11, the printed circuit board in 3D

    68hc11

    mggates39/68hc11_SBC

    Building a Single Board Computer around the MC68HC11. It will include my first attempt with KiCad designing a PCB

    58 parts4GPL-3.0
  • 4 layers304.5 × 217.2 mmLatest Full Backplane, the printed circuit board in 3D

    Latest Full Backplane

    Trilobyte-CPU/8-bit-computer

    A DIY 8-bit computer built mostly with discrete logic chips

    478 parts2