Prosjekt: Makroprosessor, hva gjør vi?
Prosjekt: Makroprosessor, hva gjør vi?
6. februar 2021 23:50
Skrevet av Eirik Wittersø
Lest 793 ganger
Makroprosessor-prosjektet bygger en prosessor fra bunnen av. Spesifikt prosessoren MOS 6502. Hvorfor? Fordi det er kult. Og fordi blant en lærer mest ved å jobbe “hands on”. Prosessorer kan virke uforståelig kompliserte, men de er bygget opp av mange ganske enkle og forståelige komponenter. Derfor vil vi lage en fullstendig prosessor på gate-nivå, slik at alle som vil kan se hvordan hver minste komponent fungerer.
Hvorfor 6502?
MOS 6502 er blant de viktigste prosessorene noensinne. 6502 eller chipper basert på den var tilstede i Apple I & II, Commodore 64, BBC micro, NES, Atari 2600 og mange fler. Det betyr at det er mye programvare som vi kan kjøre på den. Ettersom den har vært så populær, har også mange tatt interesse i den tidligere, så det finnes mange gode ressurser som beskriver hvordan den virker. En av disse er Visual 6502,som nok er den kilden vi har brukt mest. De har tatt bilder av prosessoren i et mikroskop og brukt disse til å lage en simulasjon av funksjonaliteten i javascript, med mulighet til å lese statusen til alle interne ledninger på et hvilket som helst tidspunkt. Hvis du syns 6502 er interessant, kan det anbefales å leke seg litt med den.
En annen fordel med 6502 er at den er (etter dagens standarder) simpel. 6502 besto av 3510 transistorer og hadde en 8-bit arkitektur. Dette er akkurat lite nok til at det er saklig og legge ut hele på ett enkelt kretskort, men den er også komplisert nok til å kunne kjøre enkle spill etc.
Hva har vi gjort og veien videre?
Dette prosjektet har vart i et halvt år nå, og på den tiden er det en ting vi har gjort desidert mest av, lesing. Masse lesing. Og grubling. Ingen av oss visste mye om 6502 før dette prosjektet begynte, så første steg i prosjektet har vært å lese seg opp om alt mulig rart. Andre steg har vært å modellere prosessoren i Verilog. Verilog er et HDL(Hardware Description Language). Vi bruker det for å kunne teste at designet vi har laget fungerer før vi bygger det fysisk. Så langt er vi ferdige med ALU-en og noen registre(Grønt), og vi jobber aktivt med resten av registrene og bus-oppsettet (Gult). Den siste delen av prosessoren (Rødt) er kontrollogikken. Den har vi enda ikke full oversikt over hvordan fungerer, så vi kan ikke modellere den enda. For å få full oversikt, prøver vi å modifisere simulasjonen fra visual6502 slik at vi kan brutforce alle mulige kombinasjoner, og dermed vite hvordan hvordan koblingene internt i Decode Rom og Random Control Logic fungerer.
Parallellt med Verilog modelleringen har vi begynt så smått å tegne kretsdiagrammer og skrive lister for delene vi trenger. Planen videre er å bestille delene til hver komponent etter hvert som de blir modellert ferdig. De vil vi bruke til å teste designet og måle ytelsen før vi bestiller et kretskort for komponenten. Når alle komponentene blir sammensatt, vil vi forhåpentligvis ha en fungerende MOS 6502 med LEDs på alle datalinjer og mulighet til å kjøre en sykel om gangen. Hvis ytelsen til prosessoren vår er høy nok, vil vi også prøve å bruke den til å erstatte prosessoren i en Commodore 64 eller BBC micro for å kjøre f.eks. spill på den.
Men det er nok fortsatt lenge til. Makroprosessoren er fortsatt langt fra ferdig, med mange uforventede utfordringer i vente. Likevel gleder vi oss, og håper leserne er like spente som oss på å prøve den ut.
Til neste gang.
Eirik Wittersø
Leder Prosjekt:Makroprosessor