Mekaniska CPU-klockan
Den mekaniska CPU klocka visar de grundläggande byggstenarna i en CPU (ALU, bussar, RAM, register och en styrenhet). Det kör en uppsättning instruktioner som kommer att emulera en enkel väggklocka.
Inspirationen till projektet kom från försöker lära min son och dotter om hur en dator fungerar (i själva verket var jag alltid fascinerad av mekaniska datorer och tar tid, men jag var tvungen att ge en bättre ursäkt till min fru för att köpa en laserskärare specifikt för detta projekt). Efter att ha tittat runt på nätet på olika mekaniska datorer, kunde jag inte hitta något som representerade alla komponenter i CPU. Men hämtar jag min inspiration från följande projekt (och deras derivat):
Marmor att lägga maskin: www.youtube.com/watch?v=GcDshWmhF4A
DigicompII: http://digi-compii.com/
Boll logik: http://brain.wireos.com/?p=2207
I avsnitten nedan jag kommer att försöka förklara hur allt fungerar som det byggs. Jag tänker inte gå djupt in i ämnet datavetenskap och kommer att medvetet försöka undvika vissa termer, så för att inte förvirra nybörjare läsaren. Om jag använder några termer, ska jag försöka att förklara dem helt enkelt. Men det kan vara lite behövs bakgrund information som jag kommer att sakna, så tveka inte att kontakta mig om att försöka förklara begreppen i mer detaljer (jag inte lova någonting, men jag kommer göra mitt bästa). Även om du inte kommer att bygga klockan, gå igenom avsnitten kommer att bidra till förståelsen av hur klocka/CPU fungerar (i build avsnitt kommer att gå över begreppen ALU, RAM, register, styra enheten och bussar). Igen, ett av motiven för detta projekt var att få folk att förstå hur en CPU (hjärtat av en dator) fungerar.
Mer detaljer om klockan kan hittas här: http://www.liorelazary.com/index.php?option=com_content&view=article&id=46:mechanical-cpu-klocka & catid = 10:clocks & Itemid = 15
123D: http://www.123dapp.com/idw-3D-Model/Mechanical-CPU-Clock/604647
Läsa tiden (http://www.youtube.com/watch?v=iFKargQxN8k) :
Tid (timme) läses i binär (http://en.wikipedia.org/wiki/Binary_numeral_system) från mellersta registret (register A, leta efter höjdpunkten i videon där register A är på). Observera placeringen av 4 vippor (4 uppochner röd T spakarna). Om en hävstång pekar till höger, då siffran är 0, om dess till vänster är det en 1. Skriv ner siffrorna från varje 4 vippor, från toppen till botten. Sedan skriva numret från vänster till höger roterande 90 grader till höger, så att vänster mest siffran är från botten och den högra siffran är från toppen. Till exempel. Om klockan har flips-flops på denna position:
Flip-Flop 1 pekar vänster == 1
Flip-Flop 2 pekar vänster == 1
Flip-Flop 3 pekar vänster == 1
Flip-Flop 4 pekar rätt == 0
som är omskrivet till: 0111 som är en binär representation av 7 decimaler. Så tiden är klockan 7.
Att omvandla från binär till decimal (antal system som människor används till):
Lägg till 1 om övre ratten pekar till vänster eller ingenting om dess pekar till höger
Lägg till 2 om den andra ratten pekar till vänster eller ingenting om dess pekar till höger
lägga till 4 om tredje ratten pekar till vänster eller ingenting om dess pekar till höger
Lägg till 8 om den tillbaka ratten pekar åt vänster eller ingenting om dess pekar till höger
Så ovanstående exempel kan översättas till: 1 + 2 + 4 + ingenting = 7 decimal
Här är en enkel konvertering från binär till decimal. Så om register A har
0000 är 0 men dess 12 i målet klockan
0001 är 1
0010 är 2
0011 är 3
0100 är 4
0101 är 5
0110 är 6
0111 är 7
1000 är 8
1001 är 9
1010 är 10
1011 är 11
I videon går klockan igenom en fullständig cykel, 0,1, 2... 11 och tillbaka till 0, så se om du kan följa den.
Protokollet kan också läsas från bollen och spaken (lite svårt att se i videon) ställning. Siffrorna på utsidan representerar minuter i HEX-format. Att konvertera tal till ett decimalt (antal system som vi är vana vid) du ta den första siffran till vänster multiplicera det med 16 och lägga till den högra siffran.
Exempel: 32 i HEX = 3 * 16 + 2 = 50 i decimal
00 är 12, 05 är 5, 0A är 10, 0F är 15, 14 är 20, etc.