Stap 14: Wilkes
NOP: Geen operatie. (0000)
LDA: Laad de accu met de waarde op dit adres. (0001)
Toevoegen: De waarde op het opgegeven adres toevoegen aan de waarde in de accumulator. (0010)
SUB: Aftrekken van de waarde op het opgegeven adres van de waarde in de accumulator. (0011)
STO: Opslaan van de accumulator inhoud op het opgegeven adres. (0100)
OUT: Opslaan van de accumulator inhoud in het register van de uitvoer, zodat de operator kunt zien. (0101)
JMP: Ga naar een bepaalde instructie in het geheugen op het opgegeven adres. (0110)
HLT: Stoppen de werking van de computer. (0111)
Om te bepalen welke controle moeten woorden worden verstuurd voor elk OP die je moet weten wat stukjes moeten actief tijdens elke T-staat. Voor mijn computer heb ik de bits georganiseerd als volgt (een onderstreping geeft een actieve-low bit):
CE-CO J MI RO II IO OI BI EO SU AI AO RI HLT X
CE - graaf inschakelen (maakt het programma-item klok input)
CO - klok uit inschakelen
J - jump inschakelen
MI - MAR Input
RO - programmageheugen uit
II - instructie register in
IO - instructie register uit
OI - Output registreren in
BI - B register in
EO - ALU uitvoer inschakelen
SU - aftrekken
AI - Accumulator in
AO - Accumulator uitvoer inschakelen
RI - programmageheugen in
HLT - Halt
X - niet gebruikt
Hier zijn wat stukjes moet actief voor elke T-staat voor een bepaalde instructie, alsmede het adres waarnaar zij in het besturingselement ROM worden moeten:
Ophalen:
0: CO, MI - het instructieregister uitgangen in de MAR
1: CE - de teller is ingeschakeld voor de volgende klok pulse
2: RO, II - de geadresseerde byte is output van de RAM in het instructie-register
NOP:
3: X
4: X
5: X
LDA:
6: IO, MI - het adres in het register van de instructie wordt overgebracht naar de MAR (laagste vier stukjes)
7: RO, AI - de geadresseerde byte is output uit het geheugen in de accumulator
8: X
TOEVOEGEN:
9: IO, MI - het adres in het register van de instructie wordt overgebracht naar de MAR (laagste vier stukjes)
10: RO, BI - de geadresseerde byte is output uit het geheugen in de accumulator
11: EO, AI - de som van de buffertank en het B-register in de accu wordt geladen
SUB:
12: IO, MI - het adres in het register van de instructie wordt overgebracht naar de MAR (laagste vier stukjes)
13: RO, BI - de geadresseerde byte is output uit het geheugen in de accumulator
14: AI, SU, EO - het verschil van de buffertank en het B-register in de accu wordt geladen
STO:
15: IO, MI - het adres in het register van de instructie wordt overgebracht naar de MAR (laagste vier stukjes)
16: AO, RO, RI - de accumulator uitgangen in het programmageheugen op de geadresseerde locatie (RO en RI hebben om actief te zijn voor een schrijven op de chip die ik gebruikte)
17: X
UIT:
18: OI, AO - de accumulator uitgangen in het register van de uitvoer
19: X
20: X
JMP:
21: J, IO - het register van de instructie laadt het programma-item met de laagste vier stukjes
22: X
23: X
HLT:
24: HLT - een halt toe te roepen-signaal wordt verzonden naar de klok
25: X
26: X
Uw OP-ROM bevat veelvouden van drie op elke locatie in het geheugen. Dit is natuurlijk omdat elke cyclus drie staten van de uitvoering duurt. Daarom zullen de geadresseerde gegevens voor uw OP-ROM:
0 - 3
1 - 6
2 - 9
3 - 12
4 - 15
5 - 18
6 - 21
7 - 24
Om uw keuze van chip program hebt u vele verschillende opties. Je zou kunnen kopen een EEPROM en EPROM programmeur, maar ze meestal een aanzienlijke hoeveelheid geld kosten. Ik bouwde een breadboard programmeur voor mijn ROM die wordt beheerd door de draden bewegen en de controle van het schrijven en lezen inschakelen pinnen door drukknoppen. Later ik het proces vereenvoudigd en een Arduino-programmeur specifiek ontworpen voor mijn NVRAM. Ik zal de programmacode koppelen als het kan eenvoudig worden aangepast naar programma bijna elke parallelle geheugen chip die u zou gebruiken voor dit project.