Skip to the content
PCBKitNew board
2 layers100 × 100 mmMOS MultiParallel 2, the printed circuit board in 3D

MOS MultiParallel 2

roberto314/Unicomp21

A modular 8-bit Computer able to recreate (nearly) every Retro computer of the late 70s to mid 80s.

Size
100 × 100 mm
Copper layers
2
Thickness
1.6 mm
Parts
65
Nets
172
Pads
586
Tracks, vias
1,861, 99
Pours
1
Routed
Yes
KiCad
KiCad 7 (file 20221018)
Created
25 Jul 2023
Updated
15 May 2024

Overview

MOS MultiParallel 2 is an open-source printed circuit board by roberto314, from the roberto314/Unicomp2 repository on GitHub. It is a 2-layer board of 100 × 100 mm with 65 parts on 172 nets, routed with 1,861 tracks and 99 vias.

It is built around the 74AHC1G08GW, 74AHC1G14GV and 74HC14, with the 74LVC595AD and SN74LVCC4245ANSR among its other parts. Its parts include 27 connectors, 10 ICs, 6 capacitors and 5 resistors. It belongs with the retro computing and games boards and the AVR (ATmega, ATtiny) boards of this library.

Main components

5

README

README.md

UNICOMP

A modular 8-bit Computer able to recreate (nearly) every microcomputer of the mid 70s to early 80s in Hardware without FPGAs (although an FPGA can be added). Can also be used as a teaching tool for:

  • VHDL or Verilog
  • C
  • RTOS (STM32F401 runs ChibiOS Link: https://www.chibios.org)
  • Python
  • bash and linux in general (Olimex board runs linux with fbterm and tmux)
  • Harwaredesign
  • Timing of CPUs
  • maybe Assembler
  • SPI and I2C Interfaces
  • CPLDs and FPGAs

It is different from other designs because of these points:

  • it uses a 3.3V only Bus,
  • it uses fast RAM for chipselect with two byte resolution over the whole 1MB range,
  • it uses one SRAM for RAM and ROM replacement (can be write writeprotected) with 512kB (1MB possible),
  • it uses a clock generator chip (DS1085) - no more crystals to change,
  • it is configureable via STM32 (RAM and ROM content, Clock frequency, chip select lines),
  • it can program the CPLDs (only XC9572 and XC9536 tested) from the olimex board - no external programmer and no cables to connect,
  • Board size is 100mm x 100mm - no backplane (like the PC/104 standard. Link: https://en.wikipedia.org/wiki/PC/104).
  • and maybe most convenient: it can change RAM and ROM content on the fly without crashing the CPU. For example starting the Apple I, going into Basic and uploading the program in about half a second is really nice.

Version 2.00

Unicomp plus Logic Analyzer: Unicomp plus Logic analyzer

Unicomp modules

  • Input board:

    • a simple board to connect the signals to a linux SBC like a Raspberry Pi or an Olimex A20
    • also generates the main clock with a DS1085 chip (in v2 this will be moved to the RAMROM board).
    • no CPLD
  • CPU board:

    • can be any 8-bit CPU (6502, 6802, 6809, 68008, 6803, 8051,...)
    • a CPLD (XC9572) for clock generation and glue logic

6502 Board: 6502 Board

  • Multi Serial boaŕd:
    • suggested chip select #0
    • two chip selects on board (second one not connected, but broken out)
    • can be used with the following serial interface chips: MC6850, MOS6551, MOS6552 or pin compatible
    • SRAM for address decoding

Multi Serial Board: Multi Serial Board

  • Multi Parallel boaŕd:

    • suggested chip select #1
    • two chip selects on board
    • can be used with the following parallel interface chips: MC6820, MC6821, MOS6520, MOS6521, MOS6522, MOS6526, MOS8520, MOS6532 in the first slot
    • the first slot can additionally mimic a MOS6530
    • the second slot can accommodate a MOS6522 or pin compatible
    • SRAM for address decoding
  • RAMROM board:

    • chip select fixed at #14 (for chipselect RAM) and #15 (rom content)
    • 512k of SRAM plus an extra RAM for address decoding
    • a STM32F401 'blackpill' board to fill the SRAMs with data over USB port from the SBC
    • USB shell on the STM32 to change ROM content on the fly
    • also configures the Address Range of all peripheral modules
  • Prototype board:

    • empty board for prototyping
    • no CPLD
    • SRAM for address decoding
  • MAX-II (EPM240) board:

    • CPLD plus Buffers
  • self made module:

    • chip select can be any non-used line in the Range from 0 to 13.
    • size is 100mm x 100mm
    • there is the prototype board in the repository for the position of the connectors and also the labels (pinout)

Configuration RAM

The configuration is done with 128kx8 fast ram on the peripheral boards. These will be configured from the STM32F401. One bit is for one Output (of which there are two) and for two addresses (resolution for chipselect is 2 bytes). The cs = 15 is for writing the main RAM, cs = 14 is the chip select for the RAMROM board. The rest is free. With two chip select lines per board these are 28 lines. One byte in the mapping ram has the following format:

76543210Bits
7,65,43,21,07,65,43,21,0Address
/CS0/CS0/CS0/CS0/CS1/CS1/CS1/CS1Peripheral
/CS/CS/CS/CSWPWPWPWPRAMROM

So 128k are good for 128kx8 Bytes of Addressspace (=1MByte) The data gets transferred to the STM32 in compact form. Only the Start address, the chipselect and the bitmask (which is Low-active) for every addresses where someting changes are transferred. A 0xFE for a bitmask means Peripheral chipselect /CS1 is active for two addresses. If the board is the RAMROM board the low nibble is Writeprotect (Hi-active).

A simple configuration block looks líke this:

text
(RAM: 0-9FFF, ACIA0: A000-A001, ACIA1: A010-A011, ROM: C000-FFFF)

00 00 00 0E 00  :  RAM
00 A0 00 00 EF  :  ACIA0
00 A0 02 FF FF  :  HOLE
00 A0 10 00 FE  :  ACIA1
00 A0 12 FF FF  :  HOLE
00 C0 00 0E 0F  :  ROM
01 00 00 FF FF  :  END
00 00 00        :  noting further

Working Recreations of old computers

Nameprim. IOchips usedosweblink
Grant Searle 6502 boardserialMOS6502, MC6850OSI BasicLink: http://searle.x10host.com/6502/Simple6502.html
Daryl Rictor 6502 boardserialMOS6502, R6551SBC-2 (monitor only)Link: https://sbc.rictor.org/info2.html
Daryl Rictor 6502 boardserialMOS6502, MC6850SBC-2 (monitor only)Link: https://sbc.rictor.org/info2.html
SYM1serialMOS6502, UM6532SYM1 ( +BASIC +RAE)Link: http://retro.hansotten.nl/6502-sbc/synertek-sym-ktm/sym-1/
KIM1serialMOS6502, UM6532KIM1Link: http://retro.hansotten.nl/6502-sbc/kim-1-manuals-and-software/
Apple IserialMOS6502, MĆ6821 (plus Arduino)Wozmon + BASICLink: http://retro.hansotten.nl/6502-sbc/apple-1/
Motorola MEK D2serialMC6802, MĆ6850newbug, xswtbug, mondebLink: https://www.retrotechnology.com/restore/smithbug.html
Motorola MEK D1serialMC6802, MĆ6821 (plus Arduino)MikbugLink: https://www.retrotechnology.com/restore/smithbug.html
Heathkit ET3400serialMC6802, MĆ6850MITS BASIC, TSC MicroBASIC,...Link: https://github.com/jefftranter
SWTPC 6800serialMC6802, MĆ6821 (plus Arduino)MikbugLink: https://deramp.com/swtpc.com/
SWTPC 6800serialMC6802, MĆ6850SWTBUG, SWTBUGA, Mondeb, xSWTBUGLink: https://deramp.com/swtpc.com/
DREAM 6800BAS (Video)MC6802, MAX-IIDREAM operating System (Chip8)Link: http://www.mjbauer.biz/DREAM6800.htm
HD6303 Board (Eric Klaus)serialHD6303Monitor +BASICLink: https://sites.google.com/site/ericmklaus/projects-1/hd6303cpuboard
MC3 ComputerserialHD6303MonitorLink: https://www.waveguide.se/?article=mc3-a-diy-8-bit-computer
Psion Organizer ILCDHD6303Psion OSLink: https://www.jaapsch.net/psion/index.htm

linux single board computer (SBC)

I uses an olimex A20 SBC (olinuxino A20) which has a lot of peripherals (4x UART, 2x SPI, 2x I2C, a lot of GPIOs, SATA, 2x SDCARD, VGA, HDMI, LAN,...) and it is open hardware. The board is connected with three 40 pin cables (like old IDE cables) plus two 10 pin cables to the input board.

To access all the peripherals i use python with the pyA20 library here: https://pypi.org/project/pyA20/
The debian image (bullseye minimal) can be found at: http://images.olimex.com/release/a20/
To configure the image after downloading there are helper scripts in the unicomp folder under: olimex Board/config I use fbterm and tmux for a nice terminal output. Here are some pictures:
tmux main window: tmux main window

tmux serial window: tmux uart window

python helper scripts

-- all scripts have to be executed with sudo bacause of direct hardware access!

  • set_reset.py [0,1,xx]

    • sets the reset line high or low (low = active)
    • if value is anything other than 0 or 1 then a reset of approx. 10mS will be performed.
  • UC_check_jtag.sh

    • looks for devices (CPLDs) in the JTAG chain.
  • UC_write_cpld.sh [0..?] [.jed file]

    • writes the .jed file to the selected devices
    • Example: sudo UC_write_cpld 0 filename.jed - writes .jed file to cpld zero
  • Prepare new SD-Card:

    • copy image to sd-card: sudo dd if=A20-OLinuXino-bullseye-minimal-20230515-130040.img of=/dev/sdb bs=1k status=progress
    • start olimex and login with 'olimex/olimex'
    • change password with: 'sudo passwd olimex' to something shorter like 'olim'
    • alternatively: delete passwird: 'sudo passwd -d olimex'
    • make update: 'sudo apt update && sudo apt upgrade'
    • install minimal components: 'sudo apt install git mc'
    • clone github repository: 'git clone https://github.com/roberto314/Unicomp2.git'
    • open midnight commander: 'mc'
    • navigate into Unicomp2/olimex_board/config
    • Run script: 'install_software.sh'
    • Run script: 'copy_files.sh'
    • restart

CPLD programming

  • compiling the vhdl (or verilog) code must be done on a computer with the Xilinx ISE 14.7 toolchain installed. Link: https://www.xilinx.com/support/download/index.html/content/xilinx/en/downloadNav/vivado-design-tools/archive-ise.html

  • compiling itself can be done inside ISE or with the supplied makefile (look inside the bord directory in cpld firmware)

  • a simple make will compile the firmware and a make transfer will transfer the file to the sbc (if you changed the ip address to your address inside the makefile and the path inside project.cfg)

  • on the sbc in the work folder one can find the .jed file. For programming type: UC_write_cpld [JTAG-position] [filename.jed]

Used Software and OS

Used Hardware

  • Oscilloscope: Rigol DS1054Z (4 channel)
  • Logic Analyzer: Hantek 4032L (32 channel)

Parts

65
QtyValueFootprintReferences
12.Connector_PinHeader_2.00mm:PinHeader_1x01_P2.00mm_VerticalJ5, J6, J7, J8, J13, J14, J15, J16, J25, J28, J29, J30
6.Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalJP1, JP2, JP3, JP4, JP5, JP6
5100nCapacitor_SMD:C_1206_3216MetricC1, C2, C3, C5, C6
41kResistor_SMD:R_1206_3216Metric_Pad1.30x1.75mm_HandSolderR1, R2, R3, R4
4BUSConnector_PinSocket_2.54mm:PinSocket_2x20_P2.54mm_VerticalJ1, J2, J3, J4
4Conn_01x01Connector_PinHeader_2.00mm:PinHeader_1x01_P2.00mm_VerticalJ9, J12, J17, J18
4MountingHoleMountingHole:MountingHole_3.2mm_M3H1, H2, H3, H4
2.Connector_PinHeader_2.54mm:PinHeader_1x06_P2.54mm_VerticalJ10, J11
2CSJumper:SolderJumper-2_P1.3mm_Bridged_RoundedPad1.0x1.5mmJP7, JP12
2Conn_01x12Connector_PinHeader_2.54mm:PinHeader_1x12_P2.54mm_VerticalJ20, J21
2W65C22NxPPackage_DIP:DIP-40_W15.24mm_Socket_LongPadsU4, U11
1.Connector_PinHeader_2.54mm:PinHeader_2x05_P2.54mm_VerticalJ27
1.Jumper:SolderJumper-2_P1.3mm_Open_RoundedPad1.0x1.5mmJP11
1.Conn_01x01Connector_PinHeader_2.00mm:PinHeader_1x01_P2.00mm_VerticalJ26
110kResistor_SMD:R_1206_3216Metric_Pad1.30x1.75mm_HandSolderR5
110nCapacitor_SMD:C_1206_3216MetricC4
16532Package_DIP:DIP-40_W15.24mm_Socket_LongPadsU3
16532/6530Jumper:SolderJumper-3_P1.3mm_Bridged12_Pad1.0x1.5mm_NumberLabelsJP10
174AHC1G08Package_TO_SOT_SMD:SOT-23-5_HandSolderingU9
174AHC1G14Package_TO_SOT_SMD:SOT-23-5U8
174HC14Package_DIP:DIP-14_W7.62mm_SocketU2
174LVC253Package_SO:SO-16_3.9x9.9mm_P1.27mmU6
174LVC595Package_SO:SO-16_3.9x9.9mm_P1.27mmU7
1Arduino_Nano_v3.xModule:Arduino_NanoA1
1Conn_02x22_Odd_EvenConnector_PinHeader_2.54mm:PinHeader_2x22_P2.54mm_VerticalJ31
1IS63WV1288DBLL-10xLIPackage_SO:TSOP-II-32_21.0x10.2mm_P1.27mmU5
1PH2Jumper:SolderJumper-2_P1.3mm_Bridged_RoundedPad1.0x1.5mmJP9
1R/WJumper:SolderJumper-2_P1.3mm_Bridged_RoundedPad1.0x1.5mmJP8
1SN74LVCC4245ANSRPackage_SO:SO-24_5.3x15mm_P1.27mmU1

Questions

How big is the MOS MultiParallel 2 PCB?

It measures 100 × 100 mm and has 2 copper layers, 1.6 mm thick.

What parts does the MOS MultiParallel 2 use?

65 parts, built around the 74AHC1G08GW, 74AHC1G14GV, 74HC14 and 74LVC595AD. 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 MOS MultiParallel 2 KiCad files?

From the roberto314/Unicomp2 repository on GitHub, at the commit this page was made from: the board is MultiParallel v2/schematic/MOS_MultiParallel_2/MOS_MultiParallel_2.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.

Can I use the MOS MultiParallel 2 design in my own project?

Its repository states no licence, so its author keeps all rights: ask roberto314 before reusing the design.

More from roberto314/Unicomp2

12
  • 2 layers100 × 100 mmCPU 6809 board, the printed circuit board in 3D

    CPU 6809 board

    roberto314/Unicomp2

    A modular 8-bit Computer able to recreate (nearly) every Retro computer of the late 70s to mid 80s.

    78 parts1
  • 2 layers100 × 100 mmCPU6502 6802, the printed circuit board in 3D

    CPU6502 6802

    roberto314/Unicomp2

    A modular 8-bit Computer able to recreate (nearly) every Retro computer of the late 70s to mid 80s.

    69 parts1
  • 2 layers88 × 85 mmUnicomp LCD Board, the printed circuit board in 3D

    Unicomp LCD Board

    roberto314/Unicomp2

    A modular 8-bit Computer able to recreate (nearly) every Retro computer of the late 70s to mid 80s.

    69 parts1
  • 2 layers100 × 100 mmZ80 schematics, the printed circuit board in 3D

    Z80 schematics

    roberto314/Unicomp2

    A modular 8-bit Computer able to recreate (nearly) every Retro computer of the late 70s to mid 80s.

    66 parts1
  • 2 layers100 × 100 mmEmpty CPU board w CPLD, the printed circuit board in 3D

    Empty CPU board w CPLD

    roberto314/Unicomp2

    A modular 8-bit Computer able to recreate (nearly) every Retro computer of the late 70s to mid 80s.

    58 parts1
  • 2 layers100 × 100 mmRAMROM 512k board, the printed circuit board in 3D

    RAMROM 512k board

    roberto314/Unicomp2

    A modular 8-bit Computer able to recreate (nearly) every Retro computer of the late 70s to mid 80s.

    58 parts1
  • 2 layers100 × 100 mmCpld board max2, the printed circuit board in 3D

    Cpld board max2

    roberto314/Unicomp2

    A modular 8-bit Computer able to recreate (nearly) every Retro computer of the late 70s to mid 80s.

    56 parts1
  • 2 layers100 × 100 mmUC2 synertek KTM2, the printed circuit board in 3D

    UC2 synertek KTM2

    roberto314/Unicomp2

    A modular 8-bit Computer able to recreate (nearly) every Retro computer of the late 70s to mid 80s.

    52 parts1
  • 2 layers100 × 100 mmMOS MultiSerial ram, the printed circuit board in 3D

    MOS MultiSerial ram

    roberto314/Unicomp2

    A modular 8-bit Computer able to recreate (nearly) every Retro computer of the late 70s to mid 80s.

    50 parts1
  • 2 layers100 × 100 mmRAMROM 128k board, the printed circuit board in 3D

    RAMROM 128k board

    roberto314/Unicomp2

    A modular 8-bit Computer able to recreate (nearly) every Retro computer of the late 70s to mid 80s.

    46 parts1
  • 2 layers100 × 100 mmRAMROM CPLD board, the printed circuit board in 3D

    RAMROM CPLD board

    roberto314/Unicomp2

    A modular 8-bit Computer able to recreate (nearly) every Retro computer of the late 70s to mid 80s.

    46 parts1
  • 2 layers100 × 100 mmRAMROM 512k board, the printed circuit board in 3D

    RAMROM 512k board

    roberto314/Unicomp2

    A modular 8-bit Computer able to recreate (nearly) every Retro computer of the late 70s to mid 80s.

    46 parts1

Similar boards

  • 2 layers100 × 100 mmMOT Serial v11, the printed circuit board in 3D

    MOT Serial v11

    roberto314/Unicomp3

    A modular 8-bit Computer able to recreate (nearly) every Retro computer of the late 70s to mid 80s.

    68 partsBSD-2-Clause
  • 2 layers171.7 × 97.4 mmHhkb split right, the printed circuit board in 3D

    Hhkb split right

    ms0216/hhkb-split

    HHKB Professional HYBRID Type-S の使い勝手を再現する完全分割型キーボード(ZMK / XIAO nRF52840 / build123d による寸法駆動CAD)

    83 parts1
  • 4 layers52 × 46 mmRouted final, the printed circuit board in 3D

    Routed final

    MLeggiero/taxelscan

    TaxelScan reads a 16 × 32 pressure surface (512 taxels) at 80 frames per second by default and has been measured at 200 fps.

    27 partsMIT
  • 2 layers91.4 × 73.7 mmSmdPracticeBoard, the printed circuit board in 3D

    SmdPracticeBoard

    perriestudios/SMD-Soldering-PCB

    A PCB I designed as a TA for EE 201 at UW over the Winter 2024

    34 parts1
  • 4 layers181.5 × 182.3 mmStencil, the printed circuit board in 3D

    Stencil

    jerry-kerenzikov/ytterbium

    Project files for Ytterbium modular CPU platform and Yprog programming tool

    421 partsCERN-OHL-S-2.0
  • 2 layers50.2 × 69.8 mmZx50 Clock Mezzanine, the printed circuit board in 3D

    Zx50 Clock Mezzanine

    mmosko/Zx50

    This is the primary CPU board for the Zx50 8-slot passive backplane system. It hosts the Z80 microprocessor (running at 5 MHz to 10 MHz) and acts as the master controller for the primary bus.

    22 parts
  • 6 layers64 × 90 mmUrti mainboard, the printed circuit board in 3D

    Urti mainboard

    greatscottgadgets/urti-mainboard

    Mainboard of URTI, the Universal Radio Test Instrument

    468 parts29CERN-OHL-P-2.0
  • 2 layers68.3 × 57.7 mmSdmux4, the printed circuit board in 3D

    Sdmux4

    hnz1102/sdcdmux-emmc

    SD CARD and eMMC Device Multiplexer with Infrared Remote Controller

    115 parts16MIT