UE14500 Processor - Nakazoto/UEVTC GitHub Wiki

UE14500 Processor

The UE14500 is named after the Motorola MC14500 1-bit ICU. The MC14500 was primarily intended for industrial applications and to replace old relay ladder logic state machine systems. However, the architecture was strikingly similar to some other processors of the time period, albeit greatly pared down. As such, I felt it was an excellent candidate for the vacuum tube processor. However, there have been some changes to the architecture, most notably, we have upgraded the Logic Unit to a full-fledged Arithmetic Logic Unit.

Architecture

The UE14500 uses a 1-bit data bus and a 4-bit instruction for 16 OpCodes. The basic architecture is centered around the idea of data being stored in an accumulating Result Register (RR). The Arithmetic Logic Unit (ALU) will perform operations using the value stored in RR and the value currently asserted to the Data Bus. It will then store the result of the operation back into RR.

Additionally, input into the processor can be gated through the Input Enable Register (IEN). During an STO or STOC operation, the processor will assert to the data bus as well as assert the Write pin. The Write pin can be gated through the Output Enable Register (OEN). Through the use of IEN and OEN, input and output can be effectively gated based upon conditional input, allowing instructions to be skipped.

Here is an architecture diagram for the UE14500 processor.

Instructions

The instruction set has been modified from the MC14500 to reflect the new ALU operations as well as some minor changes for future Input and Output control. The processor is a true RISC design, executing one instruction per clock cycle.

Hex Binary OpCode Operation
0 0000 NOP0 No change in registers. RR -> RR, FLG0 ^
1 0001 LD Load Result Register. Data -> RR
2 0010 ADD Add RR and Data. Data + RR -> RR
3 0011 SUB Subtract RR and Data. Data - RR -> RR
4 0100 ONE Force One into RR. 1 -> RR, 0 -> CAR
5 0101 NAND NAND Data and RR. Q(RR・Data) -> RR
6 0110 OR OR Data and RR. RR or Data -> RR
7 0111 XOR XOR Data and RR. If RR != Data, 1 -> RR
8 1000 STO Store. RR -> Data, WRT ^
9 1001 STOC Store complement. QRR -> Data, WRT ^
A 1010 IEN Input Enable Register. Data -> IEN
B 1011 OEN Output Enable Register. Data -> OEN
C 1100 IOC Input Output Control. IOC ^
D 1101 RTN Return from subroutine. RTN ^, Skip next instruction
E 1110 SKZ Skip if Zero. IF RR = 0, Skip next instruction
F 1111 NOPF No change in registers. RR -> RR, FLGF ^

Processor Logic

The entire processor was first simulated in Logisim. The Logisim logic gate level version of the processor then became the blueprint for the actual build itself.

The Logisim file itself is available for download by clicking this link.

Below is an image of the above Logisim file.

Right click and "Save As..." or "Open Image in New Tab" for full resolution.

PCB Layout

The entire PCBs were designed using DesignSparkPCB and trying to adhered to a maximum board size of 150mm x 100mm as that was the size of the single sided PCBs that were purchased for this build. The benefit of using multiple, smaller boards is that the build could be changed or updated during various stages. The downside is additional complexity as well as an imperfect solution for the connectors between boards.

Here is a view of the entire PCB layout for the Processor.

Right click and "Save As..." or "Open Image in New Tab" for full resolution.