

Register
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
274LS245SC
-0℃~+70℃ 12ns@5V,45pF 15mA 24mA 4.75V~5.25V 74LS 8 Bidirectional Output enable Schmitt trigger Tri-State - Buffers, Drivers, Receivers, Transceivers ROHSTexas InstrumentsBuffers, Drivers, Receivers, Transceivers74LS173SC
CDIP-160℃~+70℃ 10ns 10ns 28mA 30MHz 4 4.75V~5.25V 40ns@5V,15pF 74LS Series Asynchronous D-Type Reset Rising Edge Tri-State CDIP-16 Flip FlopsTexas InstrumentsFlip Flops
README
README.mdThe 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
- Registers
- Instruction Register
- Program Counter
- ALU
- Control Unit
- Memory Registers
- Condition Logic
- Shift Control
- Gallery
Instruction set
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 -> PCfor more simulated instructions see: Simulated Instructions
Registers
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 : GPMemory
the memory ranges from 0x0000 to 0xFFFF.
the memory is mapped in the following way:
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
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

Parts
84| Qty | Value | Footprint | References |
|---|---|---|---|
| 20 | TestPoint | TestPoint:TestPoint_Pad_D1.0mm | TP1, TP2, TP3, TP4, TP5, TP10, TP11, TP12, TP13, TP14, TP15, TP16, TP17, TP18, TP19, TP20 +4 |
| 16 | 1k | Resistor_SMD:R_1206_3216Metric_Pad1.30x1.75mm_HandSolder | R0, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15 |
| 16 | LED | LED_THT:LED_Rectangular_W3.0mm_H2.0mm | D0, D1, D2, D3, D4, D5, D6, D7, D8, D9, D10, D11, D12, D13, D14, D15 |
| 8 | 10n | Capacitor_SMD:C_1206_3216Metric_Pad1.33x1.80mm_HandSolder | C1, C2, C3, C4, C5, C7, C8, C9 |
| 4 | 74LS173 | Package_DIP:DIP-16_W7.62mm_Socket_LongPads | U1, U2, U4, U5 |
| 4 | 74LS245 | Package_DIP:DIP-20_W7.62mm_Socket_LongPads | U3, U6, U7, U8 |
| 4 | Conn_01x02_Pin | elad_jst:JST_XH_S2B-XH-A-1_1x02_P2.50mm_Horizontal_fixed | J1, J2, J3, J10 |
| 4 | Conn_01x04_Pin | Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_Vertical | J6, J7, J8, J9 |
| 4 | MountingHole_Pad | MountingHole:MountingHole_2.2mm_M2_DIN965_Pad | H1, H2, H3, H4 |
| 2 | Conn_01x08_Pin | Connector_JST:JST_XH_S8B-XH-A-1_1x08_P2.50mm_Horizontal | J4, J5 |
| 1 | 1uF | Capacitor_THT:C_Radial_D6.3mm_H11.0mm_P2.50mm | C6 |
| 1 | SW_SPDT | Button_Switch_THT:SW_Slide_SPDT_Angled_CK_OS102011MA1Q | SW2 |
More from Shmerlard/SH8
9- 2 layers100 × 100 mm

- 2 layers100 × 100 mm

- 2 layers100 × 100 mm

- 2 layers100 × 100 mm

- 2 layers100 × 100 mm

- 2 layers100 × 100 mm

- 2 layers100 × 100 mm

- 2 layers100 × 100 mm

- 2 layers100 × 100 mm

Similar boards
- 2 layers370.8 × 298.5 mm

8 Bit Computer
The-Invent0r/8-bit-Computer-PCB
These are the KiCAD files for my 8-Bit Computer.
323 parts142 - 2 layers

- 2 layers624.6 × 303.9 mm

SPU2
rraider/Seminarkurs2021
Entwicklung eines turingvollständigen, primitiven Microcontroller in der Software Digital
736 parts7MIT - 4 layers304.5 × 217.2 mm

Latest Full Backplane
Trilobyte-CPU/8-bit-computer
A DIY 8-bit computer built mostly with discrete logic chips
478 parts2 - 2 layers95.9 × 90.2 mm

- 4 layers388.6 × 212.1 mm

- 2 layers

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 mm

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.