YACC1 Sequencer Control Signals

A list of control signals the sequencer needs to drive (work in progress).

For each general purpose register

  • Load Register
  • Enable Register Output

X  4 general purpose registers = 8 signals

 

Program Counter

  • Output Address – Connect PC to address bus
  • Increment PC – Increment the current value of the PC by 1
  • Load PC – Load the current value on the data bus into the program counter (jump instruction)

= 3 signals

 

Index Register (used for Register based memory access)

 

Memory Control

 

I/O Control

 

ALU Control

 

 

 

YACC1 – Instruction Set

This is a total guess

Bit 7 = 1 

These are the 8 two register instructions where:

Bit[6:4] are instruction code

Bit[3:2] are destination register, Bit[1:0] are source register

MOV Rx Ry    1000 xx yy  Cop

ADD Rx Ry     1001 xx yy

SUB Rx Ry      1010 xx yy

1011 xx yy

1100 xx yy

1101 xx yy

1110 xx yy

1111 xx yy

 

Bit 7 = 0, Bit 6 = 1

These are the 16 one register operations where:

Bits[5:2] are the the instruction code

Bits[1:0]are the register

 

Bit 7 = 0, Bit 6 =  0

These are the 64 no register operations where:

Bits[5:0] are the instruction code

 

**** This might be further divided into one and two byte instructions

YACC 1 Instruction Set

Complete list of YACC1 Instructions
InstructionHexDescriptionOperandsImplemented
MOV Rd Rs1000 XX YYCopy contents of Rs (source) to Rd (destination)XX,YY = Register Number
00 - Register 0
01 - Register 1
10 - Register 2
11 - Register 3
No
Add Rd Rs1001 XX YYAdd contents of Rs to Rdno
Sub Rd Rs1010 XX YY
no
AND Rd Rs1011no
OR Rd Rs1100no
XOR Rd Rs1101no
NAND Rd Rs1110no
NOR Rd Rs1111no
no

YACC1 (Yet Another Custom CPU) Version 1

I have been thinking about a custom CPU project for a very very very long time, something like the past 40 years to be exact. The idea started when I first started dabbling with TTL chips. Back then I had no idea how to proceed, i knew some sort of instruction decoder, sequencer, ALU were needed but not long after first dreaming about the idea of building a CPU the RCA 1802 showed up and that stole all my attention. I will leave out the details but I have never stopped thinking about a custom CPU project and every once in a while when a new website pops up dedicated to a new custom CPU (I have a small list here) I once again would get the bug.

Time to take another run at it.

Criteria

This is an MVP (Yes I am dreaming about future projects but lets see how this goes)

Open, all designs will be available for anyone to use

Simple, Simple, Simple, therefore 8 bits for data and addressing (yep only 256 x 8 memory)

Must fit on one PCB, all through hole.

Minimal magic, basic TTL chips, no FPGAs and possibly even nothing as fancy as a ALU chip (although single PCB trumps this requirement)

Does not need to to be compatible with anything past, present, or future

Function is more important than optimization

Test ideas but avoid “kitchen sink” phenomenon