Skip to the content
2 layers100 × 100 mmRegister, the printed circuit board in 3D

a custom 16bit cpu

Size
100 × 100 mm
Copper layers
2
Thickness
1.6 mm
Parts
84
Nets
71
Pads
295
Tracks, vias
710, 42
Pours
1
Routed
Yes
KiCad
KiCad 8.0 (file 20240108)
Created
9 Jun 2024
Updated
20 Oct 2024

Overview

Register is an open-source printed circuit board by Shmerlard, from the Shmerlard/SH8 repository on GitHub. It is a 2-layer board of 100 × 100 mm with 84 parts on 71 nets, routed with 710 tracks and 42 vias.

It is built around the 74LS245SC and 74LS173SC. Its parts include 16 resistors, 16 diodes, 10 connectors, 9 capacitors and 8 ICs.

Main components

2

README

README.md

The shmerlard 16

hi, my name is elad and Im an electrical engineering student in Ben gurion university. I designed a small 16bit cpu, with a mix of jdh8, src, msp430 and the Hack computer. this is still a work in progress, but so far it works.

I used logisim for the logic design, draw.io for the diagrams. in order to see the working cpu in logisim: you need to build version 3.9.0 from source here, then just open the .circ file.

Specs

  • a common 16-bit data and address bus
  • a total of 128kB of usable memory
  • 6 GP register (up to 14 available)
  • modular design for easy troubleshooting
  • port for outside connections

Contents

  1. Registers
  2. Instruction Register
  3. Program Counter
  4. ALU
  5. Control Unit
  6. Memory Registers
  7. Condition Logic
  8. Shift Control
  9. Gallery

Instruction set

text
0x00:  NOP
0x01:  MOV  Ra/#, Rb       | Ra/# -> Rb
0x02:  ST   Ra/#, Rb/#     | Ra/# -> M[Rb]/
0x03:  PUSH Ra/#           | Ra/# -> @SP; SP--
0x04:  POP  Ra             | SP++; @SP -> Ra
0x05:  ADD  Ra/#, Rb       | Ra/# + Rb -> Rb
0x06:  ADDC Ra/#, Rb       | Ra/# + Rb + c -> Rb
0x07:  SUB  Ra/#, Rb       | Rb - Ra/# -> Rb
0x08:  CMP  Ra/#, Rb       | Rb - Ra/#
0x09:  SHR  Ra/#, Rb       | SHR Rb (Ra/# times) -> Rb
0x0A:  SHL
0x0B:  RRC  Ra/#, Rb       | RRC Rb (Ra/# times) -> Rb
0x0C:  RLC
0x0D:  AND  Ra/#, Rb       | Ra/# AND Rb -> Rb
0x0E:  OR   Ra/#, Rb       | Ra/# OR  Rb -> Rb
0x0F:  XOR  Ra/#, Rb       | Ra/# XOR Rb -> Rb
0x10:  NOT
0x11:  CALL DST            | PC -> @SP; DST -> PC; SP-- -> SP;
0x12:  RET
0x13:  JMP  DST            | DST -> PC

for more simulated instructions see: Simulated Instructions

Registers

text
0: SP/REG0  : STACK pointer    
1: SR/REG1  : Status register
2: REG2     : GP Input
3: REG3     : GP Output
4: REG3     : GP
5: REG4     : GP
6: REG5     : GP
7: REG6     : GP

Memory

the memory ranges from 0x0000 to 0xFFFF. the memory is mapped in the following way:

text
0x0000 - 0x7FFF: GP ROM              (32KiB    ROM)
0x8000 - 0xBFFF: GP RAM              (16KiB    RAM) 
0xC000 - 0xCFFF: VRAM                (4KiB    RAM) #CURRENTLY NOT IN USE#
0xD000 - 0xFFFF: NOT IN USE          (12KiB UNUSED)

Instruction format

The instruction register is a 16-bit register

text
the format is XXXX-XUMM-SSSS-DDDD
X = the opcode of the instruction
U = Currently not in use
M = indicates the addressing mode
S = indicates the source register
D = indicates the destination register

(see addressing modes) for more info

Full diagram

for the full gallery go to Gallery

text

Parts

84
QtyValueFootprintReferences
20TestPointTestPoint:TestPoint_Pad_D1.0mmTP1, TP2, TP3, TP4, TP5, TP10, TP11, TP12, TP13, TP14, TP15, TP16, TP17, TP18, TP19, TP20 +4
161kResistor_SMD:R_1206_3216Metric_Pad1.30x1.75mm_HandSolderR0, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15
16LEDLED_THT:LED_Rectangular_W3.0mm_H2.0mmD0, D1, D2, D3, D4, D5, D6, D7, D8, D9, D10, D11, D12, D13, D14, D15
810nCapacitor_SMD:C_1206_3216Metric_Pad1.33x1.80mm_HandSolderC1, C2, C3, C4, C5, C7, C8, C9
474LS173Package_DIP:DIP-16_W7.62mm_Socket_LongPadsU1, U2, U4, U5
474LS245Package_DIP:DIP-20_W7.62mm_Socket_LongPadsU3, U6, U7, U8
4Conn_01x02_Pinelad_jst:JST_XH_S2B-XH-A-1_1x02_P2.50mm_Horizontal_fixedJ1, J2, J3, J10
4Conn_01x04_PinConnector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_VerticalJ6, J7, J8, J9
4MountingHole_PadMountingHole:MountingHole_2.2mm_M2_DIN965_PadH1, H2, H3, H4
2Conn_01x08_PinConnector_JST:JST_XH_S8B-XH-A-1_1x08_P2.50mm_HorizontalJ4, J5
11uFCapacitor_THT:C_Radial_D6.3mm_H11.0mm_P2.50mmC6
1SW_SPDTButton_Switch_THT:SW_Slide_SPDT_Angled_CK_OS102011MA1QSW2

More from Shmerlard/SH8

9
  • 2 layers100 × 100 mmALU FLAGS CALC, the printed circuit board in 3D

    ALU FLAGS CALC

    Shmerlard/SH8

    a custom 16bit cpu

    52 parts18
  • 2 layers100 × 100 mmStatus Register, the printed circuit board in 3D

    Status Register

    Shmerlard/SH8

    a custom 16bit cpu

    44 parts18
  • 2 layers100 × 100 mmProgram Counter, the printed circuit board in 3D

    Program Counter

    Shmerlard/SH8

    a custom 16bit cpu

    34 parts18
  • 2 layers100 × 100 mmALU Extra, the printed circuit board in 3D

    ALU Extra

    Shmerlard/SH8

    a custom 16bit cpu

    25 parts18
  • 2 layers100 × 100 mmALU Shifter, the printed circuit board in 3D

    ALU Shifter

    Shmerlard/SH8

    a custom 16bit cpu

    19 parts18
  • 2 layers100 × 100 mmALU Main, the printed circuit board in 3D

    ALU Main

    Shmerlard/SH8

    a custom 16bit cpu

    18 parts18

Similar boards

  • 2 layers370.8 × 298.5 mm8 Bit Computer, the printed circuit board in 3D

    8 Bit Computer

    The-Invent0r/8-bit-Computer-PCB

    These are the KiCAD files for my 8-Bit Computer.

    323 parts142
  • 2 layersSap be, the printed circuit board in 3D

    Sap be

    kyllikki/eda-designs

    EDA designs

    148 parts32MIT
  • 2 layers624.6 × 303.9 mmSPU2, the printed circuit board in 3D

    SPU2

    rraider/Seminarkurs2021

    Entwicklung eines turingvollständigen, primitiven Microcontroller in der Software Digital

    736 parts7MIT
  • 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
  • 4 layers388.6 × 212.1 mm8bit computer, the printed circuit board in 3D

    8bit computer

    CCYD/8bbbc

    8-Bit Breadboard Computer based on Ben Eater's design.

    298 parts
  • 2 layersALU alone, the printed circuit board in 3D

    ALU alone

    ChargeInMotion/8bit-breadboard-computer

    Faithful recreation of Ben Eater's 8-bit SAP-1 breadboard computer — final-year team project, breadboard to PCB.

    30 partsMIT
  • 6 layers414 × 187.5 mm8-Bit PC, the printed circuit board in 3D

    8-Bit PC

    dragonruler1000/8-bit_computer

    331 partsMIT

Questions

How big is the Register PCB?

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

What parts does the Register use?

84 parts, built around the 74LS245SC and 74LS173SC. 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 Register KiCad files?

From the Shmerlard/SH8 repository on GitHub, at the commit this page was made from: the board is KiCad/Register_File/GP_Register/Register.kicad_pcb and its schematic KiCad/ALU/ALU_Extra/ALU_Extra.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Register design in my own project?

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