Indholdsfortegnelse:
- Trin 1: Dele og ting
- Trin 2: Tilslutning af strøm, ur og nulstilling af kredsløb
- Trin 3: Tilslutning af Z80
- Trin 4: Tilslutning af ROM'en
- Trin 5: Tilslutning af output
- Trin 6: Tilslutning af input
- Trin 7: Lim logik
- Trin 8: Programmering
- Trin 9: Test
Video: Byg en computer med grundlæggende forståelse for elektronik: 9 trin (med billeder)
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:29
Har du nogensinde ønsket at foregive, at du var virkelig smart og bygge din egen computer fra bunden? Ved du intet om, hvad der skal til for at lave en computer med et minimum? Det er let, hvis du ved nok om elektronik til at smide nogle IC'er korrekt sammen. Denne instruktive vil antage, at du er god til den del, plus et par andre ting. Og hvis ikke, burde det stadig ikke være for svært at følge med, hvis du ved, hvordan breadboarding/prototyping udføres. Formålet med denne instruktive er at få dig en fungerende "computer" uden at vide en masse om, hvordan de fungerer. Jeg vil dække ledninger og grundlæggende programmering samt give et meget kort program til dig. Så lad os komme i gang.
Trin 1: Dele og ting
En "computer" kræver: strøm, input, behandling, hukommelse og output. Teknisk set vil vi have alle disse ting. Jeg vil dække disse ting i den rækkefølge.
For at få strøm skal du bruge en 5 volt (herefter mærket som 5V) kilde. Det anbefales, at det er en reguleret kilde, så du ikke ved et uheld steker dele i dit kredsløb. Vores input vil være knapper. Behandlingen er selvforklarende; vi bruger en processor. Hukommelsen består kun af ROM. Processorens interne generelle registre vil være nok til at bruges som RAM. Output vil være lysdioder.
1 LM7805C - 5V regulator
1 ZYLOG Z80 - Processor
1 AT28C64B - EEPROM
1 74LS273 - Octal D Flip -Flop
1 74HC374E - Octal D Flip -Flop
3 CD4001BE - Quad NOR Gate
1 NE555 - Urgenerator
2 1K Ohm modstand
1 10K Ohm modstand
1 10K Ohm modstandsnetværk; 8 Bussede ELLER 8 Yderligere 10K modstande
1 1uF kondensator
1 100uF kondensator
1 Tryk på knappen
1 3x4 knapmatrix ELLER 8 ekstra trykknapper
8 LED - farvevalg betyder ikke noget
8 330 Ohm modstande eller modstandsnetværk
1 Virkelig stort brødbræt eller flere små
Masser og masser af Wire
I min skematiske har jeg installeret en pind SRAM. Du behøver ikke engang bekymre dig om det. Jeg tilføjede det kun til skematikken for nøjagtigt at afspejle mit faktiske kredsløb, og jeg tilføjede det til kredsløbet til fremtidig brug. Også tilføjet til skematikken er en quad OR -gate (74LS36). De to ubrugte portes input er knyttet til VCC, og deres output efterlades flydende (ikke tegnet). Der er heller ikke tegnet eller anført ovenfor to kondensatorer på strømkredsløbet.
Jeg fodrer reguleret 12V til 5V regulatoren for at fodre hele brødbrættet. Det bliver temmelig varmt, så jeg tilsluttede en kølelegeme for at afkøle den. Hvis du bruger mindre end 12V til at fodre regulatoren (brug mindst 7V), skal den køre køligere.
Z80 er, hvor magien sker. Det tager instruktioner gemt i ROM og udfører dem. EEPROM gemmer vores program, så processoren kan udføre.
Den oktale flip-flop, der er vores outputenhed, der låser dataene på databussen til sin egen output. Dette giver os mulighed for at ændre, hvad der er på bussen, hvilket er et meget vigtigt trin, der udføres flere gange pr. Instruktion, uden at ændre, hvad brugeren/seeren ser. Flip-flop kan ikke drive den strøm, der kræves for at tænde udgangs-LED'erne, så de føder ind i to af quad NOR-gate-chipsene, der virker til at buffer de 8 datalinjer for at drive LED'erne. Da output fra portene er omvendt, er vi også nødt til at koble LED'erne til at blive omvendt, men det kommer vi til, når vi kommer til det. Den anden NOR -chip bruges til logisk afkodning, men der bruges kun tre porte.
Den oktale flip-flop, der bruges til input, er i det væsentlige det samme. Output flip-flops holder deres output enten højt eller lavt, så det kan ikke bruges til at køre bussen; det ville indeholde data på bussen. Flip-flop, der bruges til input, erstatter /RESET-stiften med /EN, som mere eller mindre afbryder output fra (og fra) chippen, så den ikke gemmer data (tri-state-udgange).
Trin 2: Tilslutning af strøm, ur og nulstilling af kredsløb
BEMÆRK: For alle dele, forbind strømskinnerne først. Af alle ting at glemme at koble til, er det meget mindre sandsynligt, at chipsene overlever glemte strømforbindelser.
Strømkredsløbet er det mest enkle kredsløb til ledning, efterfulgt af henholdsvis nulstilling og urkredsløb. På billedet er 12V -indgangen på strømstikket yderst til højre. Den brune ledning, der gemmer en gul under den, føder 12V til regulatoren. Regulatorens output føder hver anden strømstik på brødbrættet, og hver strømstik deler en fælles grund, fordi det er sådan elektronik fungerer.
Processoren kræver et urkredsløb for at fungere. Uden den vil den bare sidde der i sin initialiserede tilstand og ikke gøre noget. Uret driver processorenes interne skiftregistre, så det kan generere signaler til at lave ting. Enhver urindgang vil gøre, selv en simpel modstand og trykknap. Men det tager mange urcyklusser at udføre instruktioner. Instruktionen om at skrive til output tager 12 cykler i sig selv. Du vil sandsynligvis ikke sidde der og trykke på en knap 100+ gange for at få kun en loop af koden (de faktiske tal er i slutningen af den instruerbare). Det er det, NE555 er til. Det gør skiftet for dig, og det gør det med en (relativt) hurtig hastighed.
Inden du begynder at tilslutte noget, kan du gå videre og finde ud af, hvordan du vil have dine komponenter lagt på tavlen. Mit urkredsløb er lidt lige placeret i bunden af brættet, så det ville være ude af vejen for andre komponenter. Vi antager, at du ved, hvordan du laver et grundlæggende ur med timeren. Hvis du ikke gør det, vil du slå "555 Astable" op og følge en vejledning. Brug 1K -modstanden til at gå mellem 5V -skinnen og pin 7 på timeren (R1) og 10K mellem pin 7 og pin 2 (R2). Sørg for at binde nulstillingstappen, pin 4, til 5V -skinnen, så timeren kan fungere. Jeg satte en LED på min udgang, så jeg kunne kontrollere, at uret faktisk fungerede, men det er ikke nødvendigt.
En anden mulighed med NE555 er at konfigurere den som en NOT -port og bruge en 1K -modstand til at binde output tilbage til input. Det anbefales normalt at bruge 3 timere til at gøre dette, men jeg fandt ud af, at bare 1 skulle fungere fint. Bare ved, at hvis du gør dette, vil det svinge med en meget høj hastighed, og det vil være meget svært, umuligt endda, at fortælle, at output -LED'erne blinker. Denne opsætning kaldes en "ringoscillator".
Bemærk, at vi ikke tilslutter uret til processoren endnu. Vi er simpelthen ved at gøre det klar. Bemærk også logikchippen lige over uret i billedet. Det blev tilføjet senere, og det var det eneste semi-rimelige sted, der var tilbage for at placere det. Det bruges til valg af RAM/ROM. Denne instruks ignorerer RAM, så du ikke vil have denne chip på dit bord.
Nu leder vi nulstillingskredsløbet. Først skal du finde et sted på dit bord til det. Jeg valgte lige ved siden af uret. Tilføj din knap til tavlen. Brug en 1K -modstand til at binde den ene side af knappen til 5V -skinnen. Vores RESET -ben er aktive lave, hvilket betyder, at vi skal holde dem højt. Det er det, modstanden er til. Dette kryds er også, hvor nulstillingstappene forbinder. Den anden side af knappen går lige til jorden. Hvis du vil nulstille tænding, skal du også tilføje 10uF-kondensatoren til dette kryds. Det vil holde spændingen på nulstillingstappene lav nok til at aktivere nulstillingskredsløbet i processoren og flip-flop.
Trin 3: Tilslutning af Z80
Nu kommer vi til det nitty-gritty. Vi vil føre dyret, der er Z80. På mit bord satte jeg Z80 øverst på den samme sektion af brættet som nulstillingskredsløbet. Som nævnt tidligere, forbind strømskinnerne først. 5V går til pin 11 til venstre og jorden er en pin ned, men til højre. Du har muligvis også bemærket chipens ulige bredde. Det får dig til at have 3 åbne stik på den ene side på brødbrættet og 2 på den anden. Det gør det kun mindre bekvemt at koble flere ting til, hvis du vælger at gøre det.
Følgende pin-numre-jeg går ud fra, at du ved, hvordan man tæller pins på en IC-er ubrugte input og skal være bundet til 5V-skinnen: 16, 17, 24, 25.
Kan du huske vores ur? Dens udgang går til pin 6 på z80. Nulstillingskredsløbet forbinder til pin 26. Uden at have de andre komponenter på tavlen, er det så vidt jeg kan få dig med ledningerne til selve z80. Flere ledninger til det vil blive udført i senere trin.
Fordi jeg allerede havde fået kredsløbet bygget, før jeg overhovedet overvejede at skrive dette instruerbart, vil jeg holde ud på billedet indtil næste trin.
Trin 4: Tilslutning af ROM'en
BEMÆRK: Det kan være en god idé at holde ud med at placere det på tavlen, hvis det stadig skal programmeres (mere om det senere).
Til ROM'en placerede jeg den ved siden af Z80 til højre og fortrængte den også en nål ned på brødbrættet. Dette tillod mig at koble adressebussen direkte over, men mere om det senere. AT28C64B er en EEPROM, hvilket betyder, at den kan programmeres flere gange ved at slukke og tænde nogle pins. Vi ønsker ikke, at vores EEPROM ved et uheld skal omprogrammere sig selv, når det er i kredsløbet. Så når du først har tilsluttet dine strømskinner, skal du tilslutte wire pin 27 (/WE) til 5V -skinnen for helt at deaktivere skrivefunktionen.
Mit program er så lille, jeg havde kun brug for de nederste 5 adresselinjer (A0-A4) tilsluttet, men jeg har alligevel tilsluttet A5, A6 og A7, så jeg kan skrive større programmer uden ekstra arbejde. De ekstra adresselinjer (A8-A12) er bundet direkte til jorden for at forhindre uønsket adgang til de højere adresser fra flydende input. Med de ubrugte adresseindgange bundet til jorden og skrivekontrollen knyttet til 5V, er ledningsføring resten ret ligetil. Find A0 på processoren, og led den til A0 på ROM'en. Find derefter A1 på processoren og led den til A1 på ROM'en. Gør dette, indtil du har tilsluttet alle adresserne sammen. På billedet er min adressebus til ROM udført i blå ledninger. Adressebussen, der går til RAM'en, udføres med røde ledninger. Disse ledninger blev alle forudskåret og fjernet, da de kom i et brødbræt -ledningssæt og var perfekte til denne ledning.
Når du har fået adresserne tilsluttet (dette kaldes adressebussen), gør du nøjagtig det samme for stifterne mærket D0, derefter D1, D2 osv. Gør dette for alle datastifterne (D0 - D7), og du har din databus kablet. Vi er næsten færdige med at tilslutte ROM'en. Find ROM'en /CE (chipaktivering) pin og led den til processorens pin 19, /MREQ (memory request), og find derefter ROM's /OE (output -aktivering) og led den til processor pin 21, /RD (læs). Vi er nu færdige. Alle disse er udført med jumperwires, fordi de skal gå til den anden side af processoren, og et brødbræt giver ikke plads nok til at bruge pæne ledninger på den måde.
Trin 5: Tilslutning af output
Fordi det var ubeboet, valgte jeg den sektion af tavlen til venstre for Z80 til output. Placer flip-flop der og tilslut dem power rails. Pin 1, /MR (reset) kan tilsluttes direkte til processorens reset -pin, men du kan lade den være bundet til 5V -skinnen. Hvis du gør dette, får det kun til at vise uønskede data indtil den første skrivning. Læg mærke til, hvordan chippen har et urindgang på pin 11. Denne input er underlig, fordi den aktiveres, når stiften går højt. Bemærk også, at denne pin IKKE er det samme ur, der driver processoren. Dette ur låser de data, der gøres gældende på databussen.
Kan du huske, hvordan vi tilsluttede D0 - D7 på ROM'en til de samme ben på processoren? Gør præcis det samme for denne chip. Dets D0 går til D0 på databussen og så videre. Stifterne, der begynder med et "Q", er output. Inden vi kabler dem, skal vi tilføje flere chips. Jeg brugte quad NOR -portene, fordi jeg har et rør af dem, og jeg havde allerede brug for en, men om enhver chip vil fungere, hvis du kabler den korrekt. Jeg kunne have bundet en input på alle porte til jorden og brugt de andre input som godt, input, men jeg valgte at koble begge input sammen for enkelthed.
Jeg placerede chipsene under flip-floppen for at gøre det lettere at koble direkte uden jumpere, men jeg var ved at løbe tør for ledning på dette tidspunkt, så det gjorde ikke rigtig noget i sidste ende. Q0, Q1….. Q7 på flip-flop går til input på de enkelte porte. Med 4 porte i hver pakke/chip havde jeg brug for 2 pakker og brugte alle porte. Hvis du finder en version af flip-flop, der kan drive lysdioderne uden at skulle bufferes som denne, er disse to chips ikke nødvendige. Hvis du bruger porte som en buffer, der ikke har inverterede udgange (AND/OR/XOR), kan du tilslutte LED'erne, som du ville forvente. Hvis du bruger de samme dele som mig og/eller output er omvendt, skal LED'erne forbindes som beskrevet nedenfor. Det første billede viser IC -delen af output.
Brug 330 Ohm modstande til at binde lysdioderne positive (anode) til 5V skinnen og forbinde den negative (katode) til portens udgang. Du kan se på det andet billede, at jeg brugte to modstandsbusser, hver med kun fem interne modstande. Tilslutning af LED'erne på denne måde får dem til at lyse, når output er slukket. Vi gør dette, fordi output er slukket, når input er tændt. Sørg helt for, at du holder styr på, hvilke porte dine output fra flip-flop-kontrollen er. Medmindre dine lysdioder bliver spredt, eller deres rækkefølge er meningsløs, kan tab af styr på dem forårsage forvirring senere, når du spørger dig selv, hvorfor output er forkert.
Trin 6: Tilslutning af input
Tag den 74HC374 flip-flop og placer den et sted. Min var et sted under Z80 mod bunden af brættet. Kan du huske sidste gang, da vi sluttede D0 til D0 og D1 til D1 og så videre? Denne gang forbinder vi Q0 til D0 og Q1 til D1 og så videre. Heldigvis behøver vi ikke tilføje bufferchips denne gang, haha. I stedet vil vi forbinde en 10K Ohm til hver "D" pin (D0-D7) og jord og derefter en knap til de samme ben og 5V skinnen. Eller du kan bruge en modstandsbus og reducere dit antal meget. En 3x4 knapmatrix (uden matrixudgang !!) hjælper også. Billedet viser hele inputkredsløbet sammen med limlogikken (den del er næste).
Trin 7: Lim logik
Vi har en sidste ting at koble. Det kaldes "limlogik", fordi det bruges til at afkode styresignaler for at få det hele til at fungere; det er det, der holder kredsløbet sammen. Når processoren ønsker at skrive data til output, går både /IORQ og /WR (henholdsvis 20 og 22) lavt, og de data, der sendes, gøres gældende på databussen. Urstiften på begge flip-flops er aktiv høj, hvilket betyder, at dataene låses, når stiften modtager et højt signal. Vi bruger en NOR -port og wire /IORQ til en indgang på porten og /WR til den anden indgang. Når begge er høje, hvilket betyder, at IO-kredsløbene ikke vælges, eller der ikke udføres en skriveoperation, forbliver output, der fodrer uret på flip-flop'en, lavt. Når begge input er lave, og kun når, går outputtet højt, og flip-floppen låser dataene.
Nu skal vi tilslutte input flip-flop. Vi kan tilslutte urpinden på nogenlunde samme måde som den foregående, men ved hjælp af /IORQ og /RD. Men i modsætning til den anden flip-flop har vi også en /OE-pin, der kun skal tages lavt, når /IORQ og /RD er lave. Vi kunne bruge en OR -port. Eller vi kunne bare tage det signal, vi allerede har til uret, og invertere det med en af de to inverterende porte, vi allerede har til rådighed. På tidspunktet for angivelsen af dette instruerbare, havde jeg ikke en OR -port tilgængelig, så jeg brugte en sidstnævnte mulighed. Brug af sidstnævnte mulighed betød, at jeg alligevel ikke behøvede at tilføje yderligere dele.
Trin 8: Programmering
Skulle din ledningsføring være korrekt og min forklaring klar, er der kun tilbage at få programmeret ROM'en. Der er et par måder at gøre dette på. Du kan tage den lette vej og bestille en ny chip ud af Digikey. Når du bestiller delen, har du mulighed for at uploade en HEX -fil, og de vil programmere den, før de sender den. Brug de HEX- eller OBJ -filer, der er knyttet til denne instruktive, og vent bare på, at den ankommer med posten. Mulighed 2 er at bygge en programmør med en Arduino eller noget. Jeg prøvede denne rute, og det kunne ikke kopiere bestemte data korrekt, og det tog mig uger at finde ud af det. Jeg endte med at gøre mulighed 3, hvilket er at programmere det i hånden og vende switches for at styre adressen og datalinjerne.
Når det er konverteret direkte til processorens OP -kode, hviler hele dette program i kun 17 bytes adresserum, så programmering i hånden var ikke så forfærdelig. Programmet indlæser i registret B for generelle formål værdien 00. Register B bruges til at gemme et resultat af den tidligere tilføjelse. Da A -registret er, hvor matematik sker, vil vi ikke bruge det til at gemme data.
Når vi taler om A -registret, udfører vi en IN -kommando, som læser input og gemmer de læste data i A. Derefter tilføjer vi indholdet af register B og sender resultatet.
Herefter kopieres register A til register B. Og så laver vi en række springkommandoer. Fordi alle spring peger på den nederste byte af adresselinjerne, og fordi den øvre byte i springinstruktionen er givet i det andet argument og er "00", kan vi tvinge hvert spring til at blive fulgt af en NOP. Vi gør dette for at give tid mellem at vise output og læseinput for at forhindre utilsigtet input. Hvert spring bruger ti urcyklusser, og hver NOP bruger fire. Hvis sløjfen tager for lang tid efter din smag, kan du øge urets hastighed, eller du kan omprogrammere den for at bruge et hop mindre.
Trin 9: Test
Hvis du har tilsluttet alt korrekt og din ROM er programmeret korrekt, er der et sidste trin at tage: tilslut det og se om det virker. Tryk på en knap, og vent et par sekunder. Det tager 81 urcyklusser for programmet at nå sit første loop, og hver loop tager 74 urcyklusser.
Hvis det ikke virker, skal du kontrollere, om der er shorts og ikke -tilsluttede stifter (åbner) og andre ledningsproblemer. Hvis du fravalgte nulstilling ved opstart, skal du foretage en manuel nulstilling, før processoren gør noget. Du kan også tilslutte lysdioder til adressebussen for at se, om de opfører sig. Jeg havde selv problemer med det, så jeg satte dem direkte på databussen i stedet. Dette gav mig mulighed for at se, hvad der blev kommunikeret mellem processoren og ROM'en uden at skulle bekymre mig om, om ROM'en blev læst korrekt, hvilket ville have krævet tidsdiagrammer, og jeg ville bare ikke involvere det. Det viser sig at have været et godt valg, fordi jeg endelig fangede de problematiske OP -koder, der blev gemt forkert.
Anbefalede:
Grundlæggende elektronik: 20 trin (med billeder)
Grundlæggende elektronik: Det er lettere at komme i gang med grundlæggende elektronik, end du måske tror. Denne instruktør vil forhåbentlig afmystificere det grundlæggende inden for elektronik, så alle med interesse i at bygge kredsløb kan ramme jorden. Dette er en hurtig oversigt over
Grundlæggende om elektronik: Diode: 6 trin (med billeder)
Electronics Basics: Diode: Hvis du ikke kan lide at læse, så se min video på Youtube! Jeg har gjort det lettere der. Også kæmpe tak til www.JLCPCB.com for sponsorering af dette projekt. Du kan kun bestille 2 -lagers PCB (10 cm*10 cm) for $ 2 fra deres websted. Bygget tid til 2 lag PCB i
Forståelse af IR -protokol for air conditoner -fjernbetjeninger: 9 trin (med billeder)
Forståelse af IR -protokol for Air Conditoners fjernbetjeninger: Jeg har lært om IR -protokoller i et godt stykke tid nu. Sådan sender og modtager du IR -signaler. På dette tidspunkt er det eneste, der er tilbage, IR -protokollen for AC -fjernbetjeninger. I modsætning til traditionelle fjernbetjeninger til næsten alle elektroniske enheder (siger et tv), hvor
Byg en menneskelig forbedringsenhed (grundlæggende TDCS -forsyning): 3 trin
Byg en Human Enhancement Device (Basic TDCS Supply): Denne instruktion blev citeret af en velrenommeret kilde (pdf -link)! Henvisning nr. 10 i avisen " Nye værktøjer til neuroenhancement - hvad med neuroetik? " (html link) Croat Med J. 2016 aug. 57 (4): 392 - 394. doi: 10.3325/cmj.2016.57.392
Kartoffelbatteri: Forståelse for kemisk og elektrisk energi: 13 trin (med billeder)
Kartoffelbatteri: Forståelse for kemisk og elektrisk energi: Vidste du, at du kan drive en lyspære med bare en eller to kartofler? Den kemiske energi mellem de to metaller omdannes til elektrisk energi og skaber et kredsløb ved hjælp af kartoflen! Dette skaber en lille elektrisk ladning, der kan