Skip to the content
PCBKitNew board
2 layers88 × 85 mmUnicomp LCD Board, the printed circuit board in 3D

Unicomp LCD Board

roberto314/Unicomp21

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

Size
88 × 85 mm
Copper layers
2
Thickness
1.6 mm
Parts
69
Nets
98
Pads
237
Tracks, vias
384, 2
Pours
1
Routed
Yes
KiCad
KiCad 7 (file 20221018)
Created
25 Jul 2023
Updated
15 May 2024

Overview

Unicomp LCD Board is an open-source printed circuit board by roberto314, from the roberto314/Unicomp2 repository on GitHub. It is a 2-layer board of 88 × 85 mm with 69 parts on 98 nets, routed with 384 tracks and 2 vias.

It is built around the BC327. Its parts include 33 connectors, 18 resistors, 7 ICs, 5 diodes and 3 capacitors. It belongs with the retro computing and games and lEDs and displays boards of this library.

Main components

1

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

69
QtyValueFootprintReferences
20.Connector_PinHeader_2.00mm:PinHeader_1x01_P2.00mm_VerticalJ3, J4, J10, J11, J12, J13, J14, J16, J17, J18, J19, J20, J21, J23, J24, J27 +4
81kResistor_SMD:R_1206_3216Metric_Pad1.30x1.75mm_HandSolderR6, R8, R9, R10, R11, R12, R13, R14
547kResistor_SMD:R_1206_3216Metric_Pad1.30x1.75mm_HandSolderR7, R15, R16, R17, R18
41k5Resistor_SMD:R_1206_3216Metric_Pad1.30x1.75mm_HandSolderR2, R3, R4, R5
3100nCapacitor_SMD:C_1206_3216Metric_Pad1.33x1.80mm_HandSolderC1, C2, C3
21N4148Diode_SMD:D_1206_3216Metric_Pad1.42x1.75mm_HandSolderD4, D5
2KBD_CLKConnector_PinHeader_2.00mm:PinHeader_1x01_P2.00mm_VerticalJ25, J26
2NHD-0420H1ZConnector_PinSocket_2.54mm:PinSocket_1x16_P2.54mm_VerticalU1, U7
2P57Connector_PinHeader_2.00mm:PinHeader_1x01_P2.00mm_VerticalJ7, J30
2~{RST}Connector_PinHeader_2.00mm:PinHeader_1x01_P2.00mm_VerticalJ28, J29
110kmy_own:ALPS_RK09RV2
11N4148Diode_THT:D_A-405_P10.16mm_HorizontalD1
11k5Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_HorizontalR1
14011Package_DIP:DIP-14_W7.62mm_Socket_LongPadsU2
14013Package_DIP:DIP-14_W7.62mm_Socket_LongPadsU5
14040Package_DIP:DIP-16_W7.62mm_Socket_LongPadsU6
14081Package_DIP:DIP-14_W7.62mm_Socket_LongPadsU3
1ALARMLED_THT:LED_D3.0mmD2
1BC327Package_TO_SOT_THT:TO-92_InlineQ1
1BUSConnector_PinHeader_2.54mm:PinHeader_2x20_P2.54mm_HorizontalJ1
1KeybConnector_PinHeader_2.54mm:PinHeader_1x07_P2.54mm_VerticalJ32
1LCD_EConnector_PinHeader_2.00mm:PinHeader_1x01_P2.00mm_VerticalJ22
1NMIConnector_PinHeader_2.00mm:PinHeader_1x01_P2.00mm_VerticalJ15
1ONButton_Switch_THT:SW_PUSH_6mmSW1
1READYConnector_PinHeader_2.00mm:PinHeader_1x01_P2.00mm_VerticalJ31
1Recom RMSR-0505Converter_DCDC:Converter_DCDC_TRACO_TMR-1-xxxx_Dual_THTU4
1~{ON}LED_THT:LED_D3.0mmD3
1~{RAMCE}Connector_PinHeader_2.00mm:PinHeader_1x01_P2.00mm_VerticalJ2
1~{STBY}Connector_PinHeader_2.00mm:PinHeader_1x01_P2.00mm_VerticalJ33

Questions

How big is the Unicomp LCD Board PCB?

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

What parts does the Unicomp LCD Board use?

69 parts, built around the BC327. 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 Unicomp LCD Board KiCad files?

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

Can I use the Unicomp LCD Board 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 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 mmMOS MultiParallel 2, the printed circuit board in 3D

    MOS MultiParallel 2

    roberto314/Unicomp2

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

    65 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 layers82.4 × 43.1 mm27C160 Adapter, the printed circuit board in 3D

    27C160 Adapter

    mafe72/27c160-tl866-adapter

    Adapter to program EPROMs with more than 40 Pins on the TL866 universal programmer.

    12 parts149GPL-3.0
  • 2 layers101.6 × 96.5 mm27C160 Adapter panel, the printed circuit board in 3D

    27C160 Adapter panel

    gaggi/27c160-tl866-adapter

    Adapter to program EPROMs with more than 40 Pins on the popular TL866 universal programmer

    20 parts46GPL-3.0
  • 2 layers148.8 × 132.2 mmUsbflashprog, the printed circuit board in 3D

    Usbflashprog

    robsonsmartins/usbflashprog

    A memory device programmer (Flash/EPROM/E2PROM) board and software, connected to PC by USB port.

    125 parts36
  • 2 layers83.8 × 72.4 mmVoice board, the printed circuit board in 3D

    Voice board

    Windfisch/analog-synth

    A low-cost semimodular analog synthesizer

    131 parts31GPL-3.0
  • 2 layers224.2 × 153.7 mmStand, the printed circuit board in 3D

    Stand

    radiolok/dekatronpc

    DekatronPC - vacuum tube and cold-cathode tube based computer

    196 parts17
  • 2 layers299.2 × 180 mm2layer, the printed circuit board in 3D

    2layer

    ceteras/CoBra

    A Z80 retro computer, ZX Spectrum compatible, can also run CP/M.

    369 parts11MIT
  • 2 layers213.6 × 127.5 mmZuendbox v3 32, the printed circuit board in 3D

    Zuendbox v3 32

    fixxl/el-fueradoro

    Open source ignition-system for audio-fireworks

    205 parts10
  • 2 layers25.4 × 35.6 mmAudio adapter, the printed circuit board in 3D

    Audio adapter

    number42net/sharp-pc1251

    The Sharp PC-1251 / TRS-80 PC1 audio connector lets you load and safe programs directly to a computer or phone.

    6 parts9