Posts

Memory Construction (Part 1 of 2)

Image
It's time to make a start on the construction of the memory unit and as mentioned in my last post this one is a bit more complex than 'boring old registers' and so I'll split it over two posts. Let's dive in with the easy part - soldering down the LEDs and backplane connectors:




For the lower memory card there are 16 LEDs for the 16-bit address bus and 8 LEDs for the 8-bit data bus. Both of these busses are 'local' to the memory unit and operate on +5V and ground as covered in my post on the memory unit design. Unfortunately I've messed up here a bit as I've merrily gone and soldered down the same LEDs I use on all the other cards ... the 12V ones. Although these LEDs will work with 5V they won't be as bright due to the internal resistor in each being rated for 12V operation. A bit of a silly mistake to make but it's done and I'm not so upset by it that it's worth changing them over ... I only realised when I tested the card and noti…

Program Counter Construction

Image
In my last couple of posts I've been slightly distracted by some 'miscellany' but now I return to form and crack on with constructing the program counter. The program counter is effectively two 8bit registers bolted together and wired out slightly differently using the address bus rather than data bus. As usual I'll start with soldering down the LEDs:
This should all be very familiar now and there's nothing unusual about these LEDs compared to previous cards. I'm just about at the point now where I've 'perfected' the way of soldering and wiring these up after many iterations on previous cards. Next up is backplane connectors and relay sockets:
Again, all very similar to previous cards. To be frank though I'm starting to find fitting the individual relay sockets a bit tedious which means it's time to rethink how I approach this. On the upcoming memory card I'll be tackling these in a slightly different way which will make construction a …

Miscellany Special: Backplane X, Cable Routing and Address Bus

Image
Continuing on with the theme from my last post ... here is another 'miscellany special' covering all the little 'side jobs' I've been doing on my relay computer alongside the primary work of constructing the Program Counter, Memory and Incrementer cards. There's three things worth covering (plus an additional minor mention) ... let's start with backplanes.

The computer is designed with four backplanes (W, X, Y and Z) each taking five cards. Each card of the computer is designed to fit in a specific backplane as each backplane offers a unique selection of busses and connections. Generally you can put a card designated for a given backplane in to any of the five backplane slots (position mainly being an aesthetic thing) however the W backplane is the notable exception having slots W1 - W2 - W1 - W2 - W1 taking two double cards (with W1 and W2 connectors) and one single card (W1 connectors).

Anyhoo, the computer might well be designed to have four backplanes …

Miscellany Special: Power Distribution

Image
Having somehow forgotten to take time off work I'm now playing 'annual leave catch up' which means lots of four day weeks but also, and more importantly for this blog, I'm getting time to crack on with construction of my relay computer. The current milestone I'm working towards is finishing off the Program Counter, Incrementer and Memory cards (which are all well under way now) so that I can load a simple program in to the computer and set it running without any further intervention.

Now, if there's one weak spot I possess (one of many I'm sure) it's a short attention span. There's a certain amount of repetitiveness in wire wrapping 'register based' cards like the Program Counter and Incrementer so it's always tempting to indulge in a little variety and pick off all those 'little jobs' that need doing on the computer. This post (and the one coming after it) sweeps up all those little changes that have been happening lately and at…

Control Design: Fetch and Increment

Image
The design of the computer's memory, incrementer and program counter are now complete but there's one last piece of the 'puzzle' required to get the computer running a program. The controller now needs updating to orchestrate the 'fetch and increment' cycle. This cycle retrieves the next instruction from memory (into the instruction register) and then increments the program counter to point at the next instruction in memory. In this post I'll cover the changes needed to the controller cards to implement this cycle.

The fetch/increment cycle consists of the following steps:
Select Program Counter on to Address Bus and whilst keeping selected:Read Memory on to Data Bus and whilst keeping read:Load Instruction RegisterLoad Increment Register (from incremented address bus value)Select Increment Register and whilst keeping selected:Load Program Counter Visualising these steps as a timing diagram we get the following:
As with the ALU, SETAB and MOV-8 instruction …