Here are the basic instructions (assembly language) that we will use: Note that this CPU will be programed with the clock instructions, but it could be programed with any other code to do a number of other things. We will also use a simple 1 unit (1 bit) memory address to act as a flag for the control unit, and name it DTD for personal reasons (stands for dedicated to Dani. Lastly, we will keep the hour variable in a Register, which is a term given for a special memory component used to hold data and operate on it. Therefore, we will implement a basic instruction set and write the clock code around these primitive instructions (the set of instructions to execute are known as an assembly language). We do not want to code the above statement directly into the CPU, since we want it to be general purpose CPU (otherwise we are just making a clock). If the check is true, then we will reset the variable back to 0. That is, we will increment a variable named Hours and check to see if its equal to 11 (we will use 0 base indexing for the hours, so 12 is represented as a 0). For this wall clock I will only concentrate on the hours to make things simple. To convert the number to decimal (the number system we are used to) you take the first digit to the left multiply that by 16 and add the right digit.Įxample: 32 in HEX = 3*16+2 = 50 in decimalĠ0 is 12, 05 is 5, 0A is 10, 0F is 15, 14 is 20, etc.įor a CPU to do any meaningful work, it needs to be told what to do. The numbers on the outside represent the minutes in HEX format. The minutes can also be read from the position of the ball and the lever (a bit hard to see in the video). In the video the clock goes through a full cycle, 0,1,2.11 and back to 0, so see if you can follow it. Here is a simple conversion from binary to decimal. So the above example translates to: 1 + 2 + 4 + nothing = 7 decimal To Transform from binary to decimal (the number system that humans are used to):Īdd 1 if the top dial is pointing to the left or nothing if its pointing to the rightĪdd 2 if the second dial is pointing to the left or nothing if its pointing to the rightĪdd 4 if the third dial is pointing to the left or nothing if its pointing to the rightĪdd 8 if the forth dial is pointing to the left or nothing if its pointing to the right Which is rewritten to: 0111 which is a binary representation of 7 decimal. If the clock has the flips-flops at this position: Then rewrite the number from left to right by rotating 90 degrees to the right, so that the left most digit is from the bottom and the right digit is from the top. Write down the digits from each of the 4 flip-flops, from top to bottom. If a lever is pointing to the right, then the digit is 0, if its on the left then its a 1. Note the position of the 4 flip-flops (the 4 upside-down red T levers). The time (hour) is read in binary () from the middle register (register A, look for the highlight in the video where register A is at). More details about the clock can be found here: Again, one of the motivations for this project was to get people to understand how a CPU (the heart of a computer) works. Even if you are not going to build the clock, going through the sections will help in the understanding of how the clock/CPU works (the build sections will go over the concepts of ALU,RAM,register,control unit and buses). However, there might be some needed background information that I will miss, so please do not hesitate to contact me about trying to explain the concepts in more details (I don't promise anything, but I will do my best). If I do use any terms, I will try to explain them simply. I am not going to go deep into the subject of computer science and will purposely try to avoid some terms, so to not confuse the novice reader. In the following sections I will attempt to explain how everything works as it is being built. However, I draw my inspiration from the following projects (and their derivatives): After looking around the web at various mechanical computers, I could not find something that represented all the components of CPU. The inspiration for this project came from trying to teach my son and daughter about how a computer works (in reality, I was always fascinated with mechanical computers and clocks, but I had to give a better excuse to my wife for buying a laser cutter specifically for this project). It executes a set of instructions which will emulate a simple wall clock. The Mechanical CPU Clock shows the basic building blocks of a CPU (ALU, buses,RAM,registers, and a Control Unit).
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |