Inhoudsopgave:

8-bits computer op een breadboard-overzicht: 3 stappen
8-bits computer op een breadboard-overzicht: 3 stappen

Video: 8-bits computer op een breadboard-overzicht: 3 stappen

Video: 8-bits computer op een breadboard-overzicht: 3 stappen
Video: De ondergang van GameMeneer 2024, Juli-
Anonim
8-bits computer op een breadboard Overzicht
8-bits computer op een breadboard Overzicht

Mijn doel voor dit project was om een beter begrip te krijgen van computerarchitectuur, hardwareontwerp en talen op assemblageniveau. Als junior aan de universiteit die computertechniek studeert, had ik onlangs cursussen over elektronica voltooid, laboratoria die me kennis lieten maken met assembleertaal en hardware-architectuur. Bij het ontvangen van een inleiding tot deze onderwerpen, wilde ik mijn begrip van de fijnere details in alle drie de cursussen vergroten, en wat is een betere manier om te leren dan aan een project te werken?

Mijn oorspronkelijke bedoeling was om deze 8-bits computer volledig in elkaar te zetten met behulp van de collegevideo's op het YouTube-kanaal van Ben Eater, die fantastisch werk leveren door het ontwerpproces op te splitsen in een solide mix van materiaal dat ik heb behandeld en aspecten die ik nog moest leren. Aangezien ik al een basiskennis had van combinatorisch ontwerp en elementaire elektronicalogica, wilde ik mezelf uitdagen door te proberen delen van de computer te ontwerpen en te bouwen volgens de ontwerpoverzichten, maar zonder de bouwinstructies te bekijken. Gedurende het hele project was het mijn doel om meer te leren en mijn begrip te verbeteren dan alleen iets nieuws te bouwen, dus tijdens elke stap van het project heb ik een beetje gelezen uit online artikelen en forums over de componentarchitectuur en de basisconventies die voor elke stap van het project werden gebruikt. van hen.

Stap 1: Onderzoek onderweg

Onderzoek onderweg
Onderzoek onderweg
Onderzoek onderweg
Onderzoek onderweg

Dit project heeft me echt veel meer laten lezen dan ik had verwacht. Een van mijn belangrijkste benaderingen van elk onderdeel was om een overzicht van een online forum of artikel te lezen, de lezingen van Eater's video's te bekijken en te proberen mijn eigen onderdeel te ontwerpen voordat ik het ging bouwen, testen en meestal moest schrappen voor een tijdje. meer geleide benadering van het kanaal van Eater. Een voorbeeld hiervan was toen ik de ALU-component van de pc aan het bouwen was. Terwijl ik de ontwerpvideo's bekeek, las ik artikelen over chipcomponenten met een hogere functionaliteit en trigger-ingangen die het mogelijk zouden maken om van instructietype te wisselen en inputs intern om te zetten in 2-complement. Voordat ik deze make-it-easier-chips kocht, heb ik echter de ontwerpbenadering besproken waar Ben Eater het over had in zijn video's, met het mengen van optellers en XOR-logische poorten om de functionaliteit in de ALU-module te vergroten zonder dat er duurdere chips nodig zijn. Hierdoor ging ik het gebruik van discrete logica en de toepasbaarheid ervan op computerontwerp waarderen, en leerde ik verschillende benaderingen voor het bouwen van componenten. Door chips van een lager niveau op het breadboard te combineren, leerde ik ook enkele belangrijke architecturale eigenschappen die in de ALU worden gebruikt, waardoor ik meer inzicht kreeg in deze uitvoeringscomponent op de pc.

Een ander belangrijk onderdeel waarover ik leerde, was het gebruik van transceivers, ook wel bekend als buffers. Voordat ik dieper op het project inging, dacht ik dat ik gewoon verschillende componenten zou activeren en deactiveren met behulp van besturingssignalen, maar ik ontdekte al snel in artikelen dat buffers moesten worden gebruikt om deze Von-Neuman-stijlarchitectuur goed te laten functioneren. Omdat de computer een gedeelde bus gebruikt om gegevens tussen de verschillende modules op de pc te verplaatsen, werd de synchronisatie van de cycli bepaald door de klok. Maar omdat ik opslag en ladingen liet plaatsvinden zonder de beschikbare gegevens op de bus te verstoren, ontdekte ik dat transceivers van vitaal belang waren om als poorten te fungeren, en een activeringssignaal nodig hadden om gegevens tijdig op de bus te laten stromen. leesbaarheid was niet zo moeilijk te begrijpen, omdat de draden altijd de waarden op de bus zouden bevatten, maar het gebruik van de juiste waarde betekende dat de registers de nieuwe waarde konden vasthouden.

Een laatste voordeel van het onderzoek tijdens dit project was het begrijpen van de specificatieverschillen tussen chips die vergelijkbaar waren. Vaak vond ik chips met dezelfde ID-waarden maar met verschillende descriptorletters zoals LS en HC. Wat ik leerde, was dat het niet alleen om het maken van labels ging, maar ook om timing- en stroomspecificaties van de chips. Gelukkig, aangezien mijn computer componenten met een redelijk laag niveau en een hoge tolerantie gebruikte, hoefde ik me geen zorgen te maken over het matchen van veel specificaties, maar bij het ontwerpen op een hoger niveau leerde ik dat zaken als kloksnelheid en stroomverbruik cruciaal zijn voor het succes of falen van elektronische ontwerp

Stap 2: ondervonden moeilijkheden

Vrij snel in het project was ik in staat om eenvoudige componenten te ontwerpen, zoals de timingklok voor het synchroniseren van processen en basisgeheugenarchitectuur, maar omdat ik naast een zwaar cursussemester onderdelen moest bestellen, was het moeilijk om buiten tijd aan het project toe te wijzen, waardoor ik weer op schema voor voltooiing. Na mijn eerste grote tegenslag omdat ik een week moest wachten op onderdelen, omzeilde ik verdere vertragingen door alle onderdelen te bestellen waarvan ik dacht dat ik ze nodig had om dit project te voltooien, wat handig bleek te zijn omdat ik geen vertragingen meer had tot het publiceren van dit. Nadat ik ook enkele basisbenaderingen voor debuggen had geleerd, begon ik een vergadering over het hoofd te zien, wat betekende dat ik terug moest gaan en video's opnieuw moest bekijken om mijn fouten op te vangen, wat meestal leidde tot het uit elkaar halen van het grootste deel van een bord. Dit had geen snelkoppeling. Ik heb de waarde geleerd van het controleren van je voortgang bij het bouwen van een elektronisch apparaat. Door gaandeweg elk bord te debuggen, kon ik ze met meer vertrouwen combineren, waarna het debuggen van gecombineerde boards veel gemakkelijker werd.

Stap 3: Prestaties en reflectie

Al met al heb ik momenteel de klok, opcode en programmateller, ALU-eenheid, rs rt- en rd-registers en het RAM-geheugen voltooid. Naast het feit dat ik de bus en randapparatuur moest voltooien om dit project te voltooien, heb ik een aanzienlijke hoeveelheid geleerd over computerarchitectuur, die ik hoop door te brengen naar mijn laatste jaar keuzevakken, het volgen van de cursus computerarchitectuur.

M5 bood me alle benodigde hulpmiddelen om aan mijn project te werken, en componenten waren zeer goed ingedeeld langs de onderdelenmuren, dus ik wist al heel vroeg welke onderdelen moesten worden besteld en wat niet meer nodig was. Als een andere student dit project op zich zou nemen, zou ik zeker opmerken dat dit project veel tijd kost als je alles probeert te begrijpen wat er op de computer gebeurt. HET IS NIET MOEILIJK, maar het vereist wel zorg als je wilt dat het goed functioneert. Ik raad je ten zeerste aan om de video-afspeellijst op het YouTube-kanaal van Ben Eater door te nemen om een idee te krijgen van alle onderdelen die je moet gebruiken, zodat je niet op tijd achterloopt als je niet van plan bent om je eigen aanpak te ontwerpen. Aangezien ik de meeste onderdelen heb gekocht, ben ik van plan dit mee te nemen om in mijn eigen tijd te voltooien, maar het zou cool zijn om dit door te geven zodat een andere student het kan voltooien, wat zou betekenen dat er licht wordt blootgesteld aan het ontwerp van de resterende onderdelen, maar een grote focus op assembler, waar ik gelukkig aan heb mogen werken tijdens andere lessen

Aanbevolen: