Close
0%
0%

68020 minimal homebrew computer

Easy-to-build 68020 single-board computer - utilizing conventional components only and designed for simplicity and ease of understanding

Similar projects worth following

Introduction

In a drawer, I had an MC68EC020 lying around; it was ordered along with some 68K parts because it cost less than five bucks. Wouldn't it be wonderful to have your own 68020 system (like the good old Sun-3 system)? But a system that is completely transparent and easy to understand?

I designed and built a simple single-board computer with this chip, using only conventional ICs - no GAL/PAL or CPLD. It includes just the CPU, EEPROM, RAM, IO and some glue logic. 

Specifications

  • MC68EC020-FG25 (normal operation 8 to 25 MHz).
  • Selectable zero, one or two wait states.
  • 8 bits fixed bus size.
  • 512 KB RAM (AS6C4008-55.)
  • 64 KB EEPROM (W27C512-45.)
  • 16550 UART (addressable only in supervisor mode).
  • 100 Hz RC-oscillator (for task switching and simple timings).
  • Low power: 200 mA @25Mhz (=1 Watt).
  • Optional on board power supply (7805).
  • PCB size: only 10 x 10 cm.

    Peripherals

    • Software I2C for RTC xxx (untested yet).
    • Software SPI for SD-card (untested yet).
    • IDE/SD-card connector (untested yet).

    Adobe Portable Document Format - 681.95 kB - 12/28/2023 at 11:49

    Preview
    Download

    MC68EC020_SBC.kicad_sch

    KiCad EC020 schematic: CPU

    kicad_sch - 127.73 kB - 01/06/2024 at 18:38

    Download

    ROM_RAM.kicad_sch

    KiCad EC020 schematic: EEPROM & RAM

    kicad_sch - 55.42 kB - 01/06/2024 at 18:38

    Download

    UAR_IO.kicad_sch

    KiCad EC020 schematic: UART & IO

    kicad_sch - 154.09 kB - 01/06/2024 at 18:38

    Download

    MC68EC020_SBC.kicad_pcb

    KiCad EC020 PCB

    kicad_pcb - 1.14 MB - 01/06/2024 at 18:36

    Download

    View all 7 files

    • 1 × MC68EC020FG25 Microprocessors, Microcontrollers, DSPs / Microprocessors (MPUs)
    • 1 × AS6C4008 Memory ICs / Static RAM (SRAM)
    • 1 × W27C512 Memory ICs / EEPROMs
    • 1 × 74HC14 Electronic Components / Misc. Electronic Components
    • 1 × 74HCT139 Dual 2-Line To 4-Line Decoders/Demultiplexers

    View all 7 components

    • How it works

      Steven12/28/2023 at 13:05 0 comments

      Introduction
      In this log, I'll explain in detail how this single-board computer works.

      8 bits bus only

      The 68020/68030 have dynamic buses; this means that they are not fixed to 32 bits. A 68020 board can have 32 bits RAM, 16 bits ROM, and 8 bits IO. Of course, this flexible bus is great, but it also makes things complicated. The CPU asks for one, two, three(!), or four bytes, and the board responds with what it can deliver. The lines SIZE0 and SIZE1 determine what the CPU is asking for. The lines /DSACK0 and /DSACK1 determine what the board can deliver. It is clear that a lot of logic (PAL) is needed to decode that.

      Since my design needs to be as simple as possible, only a (fixed) 8-bit bus is needed. Therefore, SIZE0 and SIZE1 are not needed, and only /DSACK0 needs to be asserted (to zero). Since this also determines the wait states, this signal is coming from the wait state generator. /DSACK1 is always high.

      Optional power supply
      There is room for an optional power supply, using the good old 7805. It is capable of 1.5A, more than enough. It also has a 500 mA polyfuse to prevent damage during the device's construction. Perhaps it's better to use a 250 mA while testing. The diode (D3) prevents damage if the power is accidentally reversed. 

      Via a header/switch, it is possible to draw power from the USB serial interface or using the power supply. If you are using USB power, it is better to add the 470uF capacitor (C13). While using the LM7805 regulator, this is not necessary.


      Clock, reset and halt-circuit

      • The clock is provided by a crystal oscillator; the footprint is modified to accommodate both half-can and full-can oscillators. Place it on a (self-made) socket, and you can easily experiment with different clock speeds. The clock speed can range from 8 to 25 MHz in normal operation and up to 40 MHz for overclocking.
      • The reset circuit is somewhat simplified. A simple R/C combination generates the reset pulse, and the Schmitt trigger (74HC14) transforms it into a nice digital signal. The RESET-signal (U1A) is fed to the UART 16550. Officially, the CPU /RESET line is also an output, but it is only asserted when the processor executes the RESET instruction. I have never needed a software reset pulse. Therefore, I decided to treat the CPU /RESET-pin as input only (In theory, it can be damaged if /RESET is continuously asserted from the CPU).
      • The /HALT pin is held high with a 10K resistor.

      Address decoder
      The 74HCT139 is my favourite chip: for decoding ROM, RAM, IDE and UART, only half of the IC is needed. A0/A1 (pin 2/3)  from the decoder are connected to the address lines A19/A20 of the CPU, and the /Enable (pin 1) is connected to the /AS (address select). That's all to generate the active low chip select lines for ROM, RAM, IDE and UART:

      • /CS_ROM: 0x00.0000 - 0x00.FFFF (64KB EEPROM)
      • /CS_RAM: 0x08.0000 - 0x0E.FFFF (512KB RAM)
      • /CS_IDE:    0x10.0000 - 0x10.0007 (IDE/SD-card connector)
      • /CS_UART: 0x18.0000 - 0x18.0007 (UART)

      /READ and /WRITE
      The other half of the 74HCT139 is used for generating the /RD and /WR signals. These signals can also be generated with a simple inverter, but they are only active if /DS (pin 24) is asserted. Since there are no inverters left, this is a nice solution.

      RAM and EEPROM
      Now we have generated the base signals, connecting RAM and ROM is straightforward. The data lines D0-D7 from the RAM/EEPROM are connected to the datelines D24-D31 of the CPU. This needs some explanation: this design uses an 8-bit data bus. Since the 68000 family is big endian, the highest data lines from the CPU are used. D0-D23 are not connected.

      UART (CPU side)
      The connections to the 16550 UART to the CPU are as straightforward as the RAM. Some extra signals:

      • There is an additional chip select (CS1) on this chip; it is connected to the function code FC2 signal. FC2 is high if the processor is in supervisor state. In user mode, this signal is low, so user programs can't read...
      Read more »

    View project log

    • 1
      Order the components and PCB
      • First, obtain all the components. Both the CPU (MC68EC020FG25) and the EEPROM (W27C512) can be ordered from suppliers in China. When searching for the CPU, use its full name to locate it in the store.
      • The other components can be ordered from your preferred supplier.
      • Order the PCB; since it's only 10x10cm, it can be produced very cheaply.
      • The total cost will be between €50 and €100.
    • 2
      Soldering the CPU
      • Start by soldering the CPU; it can be done with a regular soldering iron. Refer to the internet for guidance on soldering this SMD component (SMD soldering tutorial). The trick is to use flux (and very little tin). For me, this was the first time I soldered an SMD, and it was successful.
      • Check for loose connections by using a small screwdriver to inspect each contact. 
      • Check visually for short circuits using a loupe, microscope, and/or your grandfather's glasses (+3).
      • Check for short circuits by using a multimeter and test A0 with A1, A1 with A2 etc. This can be done easily within the RAM-socket. Check also D24 and D25, etc.
    • 3
      Solder the first components
      • Create a custom socket for the X-tal oscillator from some female pinheads.
      • Solder the 74HC14.
      • Solder the optional power supply.
      • Solder the power LED/resistor.
      • Solder the power switch / header.
      • Solder the decoupling capacitors (100 nF) around the chips.
      • Solder the resistor array.

    View all 6 instructions

    Enjoy this project?

    Share

    Discussions

    j.ballantine wrote 01/06/2024 at 18:12 point

    Is a PCB board gerber file available or source?  The Instrucions say Order the PCB board, but the is no source or gerber file.

    Thanks

      Are you sure? yes | no

    Steven wrote 01/06/2024 at 18:48 point

    Hi, I am not ready with adding all the documentation on "Hackaday." I have added the KiCad and Gerber files. Please let me know if you have any questions.

      Are you sure? yes | no

    Steven wrote 01/04/2024 at 07:04 point

    Hi, when I find the time, I'll write about the design process. I started by examining all the 020 & 030 schematics (there are not many published on the internet). Indeed, the Tiny020 was checked out. I was particularly inspired by the design of Matt Smirnoff: 68K-nano.(https://github.com/74hc595/68k-nano)

      Are you sure? yes | no

    Peabody1929 wrote 01/02/2024 at 02:45 point

    Have you looked at the Tiny020 project here on Hackaday IO? 

      Are you sure? yes | no

    Similar Projects

    Does this project spark your interest?

    Become a member to follow this project and never miss any updates