Hardware ISP Log 2014/15


Part 1: EEPROM Programmer


Part 2: The Computer Design

March 27, 2015:

So far, there are four operational chips installed: a 555 timer to provide a clock tick, a program counter to cycle through instructions, a 64bit RAM chip to store variable used in the program, and a register to load addresses to RAM asynchronously. To the right you can see the circuitry completed, thus far. What has been installed seems to work, but more planning is required to finish the build.
Note: there is wierd interference taking place when writting to the RAM chip. After cuting power to the system you'd expect the RAM to be reset, however when provide power again the RAM chip still has numbers stored in it.



May 9, 2015:

Before continuing with the build it is important to understand the design and to have a plan for how the building process will work.

Let's start with the design. This computer will have the ability to store and load 4-bit numbers, and will have basic functions it can use to manipulate these numbers. The EEPROM, which was talked about earlier, will be programmed with those functions, and another will store the program that will be exicuted by the computer. Mentioned in the progress of March 27, the computer has something called a program counter. The purpose of the programcounter, PC, is to count through each step in a program. This chip will count through the addresses in the program EEPROM. As the PC counts through the steps the program EEPROM outputs different codes telling the operation EEPROM what to do. The operation EEPROM listens to the codes being sent to is and then sends signals to other chips in the computer telling them when to activate and what they should do when they activate.

Those are the chips that do the most work in the computer. You can see a diagram of the program to the side (the parts mentioned are highlighted). The next part of this explanation will focus on the other chips controlled by the operation EEPROM.





May 15, 2015:

The next important parts in the computer circuit are the small chips controlled by the control EEPROM.

Let's start with the specialized chips. The first is the RAM chip, it is responsible for holding numbers that can be accessed and used by the computer during operation. To store a number in the RAM chip the computer sends the chip a specific address and a value for it to store at that address. These values aren't stored permanently, this is where RAM differs from the EEPROM. While the EEPROM can keep the values stored in its addresses after power is cut off, RAM loses these values when power is cut from the chip.
The second specialized chip is the ALU, arithmetic logic unit. All calculations are done by the ALU. Many of the control lines from the control EEPROM are connected to the ALU to select the arithmatic function for the chip to preform. After putting a/some number(s) through the ALU they are typically stored into RAM (check the diagram to the right).

Those are the chips that do the most work in the computer. You can see a diagram of the program to the side (the parts mentioned are highlighted). The next part of this explanation will focus on the other chips controlled by the operation EEPROM.





May 17, 2015:

The final parts are the registers. While these are not as well known as the previously mentioned parts, they play a crucial role in th exicution of programs.

Registers are used to store small pieces of data. To the right you can see the registers outlined in red. The reason this is useful is because, getting data from a register is much quicker than getting it from memory. On the left side of the diagram is an address register. This is used when the computer wants to fetch a number from RAM. The register is sent an address, of course, and one bit to specify whether or not the computer is doing a read or write operation. In this case the address register is included in the design because it's faster than getting the value from memory, but also because of timing in the processor.

Because of how the Computer is designed, if I want to write a value to RAM I first need to load said value through the ALU and into an accumulator, another register. If there is no address register, then there won't be anything going to the address specified in RAM. The value that I want to put in RAM isn't even in the accumulator yet. So for that reason, the address register exists and is a crucial part in the operation of computers.

The next part to mention is the accumulator. As said before it is connected between the ALU and RAM chips. All calculations made by the computer are passed through the accumulator. There are two options for data that passes through the register: the first is being loaded into RAM, as previously explained, and the second in the be passed around and back into the ALU. I would use the first option if my program EEPROM passes a value as a address in RAM. If you evere want to do calculations with more than one number, which is most of the time, you have to use option two. To do this you pass the first number through the ALU into the accumulator where it is stored. Then on the next clock tick you pass the second number to one bus, and the number in the accumulator gets passed back up through another bus. At that point the two numbers would be fed into the ALU successfully, waiting for a command to be passed from the control EEPROM to the ALU.

May 18, 2015:

Here is what the instruction set of the completed computer will look like:
http://www.ttlcpu.com/articles/instruction-set
Credit to Andrew Wasson for his work. His page has been very helpful for my research into the design of this computer.