Sadržaj:

Izgradite računar sa osnovnim razumijevanjem elektronike: 9 koraka (sa slikama)
Izgradite računar sa osnovnim razumijevanjem elektronike: 9 koraka (sa slikama)

Video: Izgradite računar sa osnovnim razumijevanjem elektronike: 9 koraka (sa slikama)

Video: Izgradite računar sa osnovnim razumijevanjem elektronike: 9 koraka (sa slikama)
Video: The Choice is Ours (2016) Official Full Version 2024, Juli
Anonim
Izgradite računar sa osnovnim razumijevanjem elektronike
Izgradite računar sa osnovnim razumijevanjem elektronike

Jeste li ikada poželjeli da se pretvarate da ste zaista pametni i da napravite svoj računar od nule? Zar ne znate ništa o tome šta je potrebno za izradu računara na minimumu? Pa, ako znate dovoljno o elektronici, lako je sastaviti neke IC -ove ispravno. Ova instrukcija će pretpostaviti da ste dobri u tom dijelu, plus nekoliko drugih stvari. A ako ne, ipak ne bi trebalo biti previše teško pratiti ako znate kako se radi maketa/izrada prototipa. Svrha ovog uputstva je da dobijete "kompjuter" koji radi bez da znate puno o tome kako oni rade. Pokriću ožičenje i osnove programiranja, kao i ponuditi vam vrlo kratak program. Pa počnimo.

Korak 1: Dijelovi i stvari

Dijelovi i stvari
Dijelovi i stvari
Delovi i stvari
Delovi i stvari

Za "računar" su potrebni: napajanje, ulaz, obrada, memorija i izlaz. Tehnički ćemo imati sve ove stvari. Pokriću ove stvari tim redosledom.

Za napajanje će vam trebati izvor od 5 volti (ovdje označen kao 5 V). Preporučuje se da to bude regulirani izvor kako ne biste slučajno pržili dijelove u svom krugu. Naš ulaz će biti dugmad. Obrada je jasna sama po sebi; koristimo procesor. Memorija će se sastojati samo od ROM -a. Interni registri opće namjene procesora bit će dovoljni za upotrebu kao RAM. Izlaz će biti LED diode.

1 LM7805C - 5V regulator

1 ZYLOG Z80 - Procesor

1 AT28C64B - EEPROM

1 74LS273 - Oktalni D japanka

1 74HC374E - Oktalni D japanka

3 CD4001BE - Quad NOR vrata

1 NE555 - Generator sata

2 1K ohmski otpornik

1 10K ohmski otpornik

1 10K ohmska mreža otpornika; 8 Sabirnica ILI 8 Dodatnih 10K otpornika

1 1uF kondenzator

1 100uF kondenzator

1 Pritisnite dugme

1 Matrica dugmeta 3x4 ILI 8 dodatnih tastera

8 LED - izbor boje nije bitan

8 Otpornici od 330 ohma ili mreža otpornika

1 Zaista velika ploča ili više malih

Puno i puno žice

U mojoj shemi imam instaliran štap SRAM -a. Ne morate se čak ni brinuti oko toga. Dodao sam ga samo na shemu kako bi točno odražavao moje stvarno kolo i dodao ga u kolo za buduću upotrebu. Šemi je takođe dodata četverostruka ILI kapija (74LS36). Ulazi dviju neiskorištenih kapija su vezani za VCC, a njihovi izlazi ostaju plutajući (nisu izvučeni). Također nisu nacrtana niti navedena gore dva kondenzatora na strujnom krugu.

Unosim reguliranih 12V u regulator 5V kako bih napajao cijelu ploču. Postaje prilično toplo, pa sam priključio hladnjak da se ohladi. Ako za napajanje regulatora koristite manje od 12 V (koristite najmanje 7 V), trebao bi raditi hladnije.

Z80 je mesto gde se događa čarolija. On uzima upute pohranjene u ROM -u i izvršava ih. EEPROM pohranjuje naš program za izvršavanje procesora.

Oktalni flip-flop koji je naš izlazni uređaj koji povezuje podatke na sabirnici podataka sa vlastitim izlazom. To nam omogućava da promijenimo ono što je na sabirnici, što je vrlo važan korak koji se radi više puta po instrukciji, bez mijenjanja onoga što korisnik/gledalac vidi. Flip-flop ne može pokretati struju potrebnu za osvjetljavanje izlaznih LED dioda, pa se napajaju u dva od četverostrukih NOR vratarskih čipova koji djeluju na tampovanje 8 podatkovnih linija za pogon LED dioda. S obzirom da su izlazi kapija obrnuti, moramo i LED diode povezati tako da budu obrnuti, ali do toga ćemo doći kada dođemo do toga. Drugi NOR čip koristi se za logičko dekodiranje, ali se koriste samo tri kapije.

Oktalni flip-flop koji se koristi za unos je u osnovi ista stvar. Izlazni japanci drže svoj izlaz visoko ili nisko pa se ne mogu koristiti za vožnju sabirnice; držao bi podatke na magistrali. Flip-flop koji se koristi za unos zamjenjuje pin /RESET sa /EN, koji manje-više isključuje izlaze (i od) čipa tako da neće držati podatke (izlazi sa tri stanja).

Korak 2: Ožičenje krugova napajanja, sata i resetiranje

Ožičenje krugova napajanja, sata i resetiranja
Ožičenje krugova napajanja, sata i resetiranja
Ožičenje krugova napajanja, sata i resetiranja
Ožičenje krugova napajanja, sata i resetiranja
Ožičenje krugova napajanja, sata i resetiranja
Ožičenje krugova napajanja, sata i resetiranja

NAPOMENA: Za sve dijelove prvo spojite žice za napajanje. Od svih stvari koje treba zaboraviti spojiti, vjerojatnost je da će čipovi preživjeti zaboravljene priključke na napajanje.

Krug napajanja je najjednostavniji krug za ožičenje, a zatim slijede krugovi za resetiranje i takt. Na slici, ulaz od 12 V nalazi se na razvodniku krajnje desno. Smeđa žica, koja ispod sebe skriva žutu, dovodi 12V do regulatora. Izlaz regulatora napaja sve druge razvodnike na matičnoj ploči, a svaki razvodnik ima zajedničko uporište jer tako funkcionira elektronika.

Procesoru je za rad potreban taktni krug. Bez toga, on će samo sjediti u početnom stanju i neće ništa raditi. Sat upravlja procesorima internim registrima pomaka tako da može generirati signale za obavljanje poslova. Bilo koji ulaz za sat će poslužiti, čak i jednostavan otpornik i dugme. Ali za izvršavanje instrukcija potrebni su mnogi ciklusi takta. Uputstvo za pisanje na izlaz traje 12 ciklusa. Vjerovatno ne želite sjediti tamo i pritisnuti dugme 100+ puta da biste dobili samo jednu petlju koda (stvarni brojevi su na kraju uputstva). Za to služi NE555. On vrši prebacivanje umjesto vas i to radi (relativno) velikom brzinom.

Prije nego započnete ožičenje bilo čega, možda biste htjeli smisliti kako želite da vaše komponente budu postavljene na ploču. Moj satni krug je jednostavno postavljen na dno ploče kako ne bi bio na putu drugim komponentama. Pretpostavit ćemo da znate kako napraviti osnovni sat pomoću tajmera. Ako to ne učinite, htjet ćete potražiti "555 Astable" i slijediti vodič. Upotrijebite 1K otpornik za prolazak između 5V šine i pina 7 tajmera (R1) i 10K između pina 7 i pina 2 (R2). Priključite pin za resetiranje, pin 4 na 5V šinu kako bi tajmer mogao raditi. Stavio sam LED na svoj izlaz kako bih mogao provjeriti da li je sat zaista radio, ali nije potreban.

Druga mogućnost sa NE555 je da ga postavite kao NOT gate i upotrijebite 1K otpornik za vezanje izlaza natrag na ulaz. Obično se preporučuje korištenje 3 tajmera za to, ali otkrio sam da bi samo jedan trebao dobro funkcionirati. Samo znajte da će, ako to učinite, oscilirati velikom brzinom i bit će vrlo teško, čak nemoguće, reći da izlazna LED dioda treperi. Ova postavka naziva se "prstenasti oscilator".

Imajte na umu da još ne povezujemo sat sa procesorom. Jednostavno ga spremamo. Obratite pažnju i na logički čip neposredno iznad sata na slici. Dodano je kasnije i to je bilo jedino polurazumno mjesto koje je preostalo za njegovo postavljanje. Koristi se za odabir RAM -a/ROM -a. Ova instrukcija zanemaruje RAM pa ovaj čip nećete imati na ploči.

Sada povezujemo krug za resetiranje. Prvo morate pronaći mjesto na svojoj ploči za to. Izabrao sam odmah pored sata. Dodajte svoje dugme na ploču. Upotrijebite 1K otpornik da biste jednu stranu dugmeta vezali za 5V šinu. Naše RESET iglice su aktivne nisko, što znači da ih moramo držati visoko. Za to služi otpornik. Na ovom spoju se spajaju igle za resetiranje. Druga strana dugmeta ide ravno u zemlju. Ako želite resetiranje pri uključivanju, dodajte kondenzator od 10uF i ovom spoju. Održavat će napon na pinovima za resetiranje dovoljno niskim da aktivira sklop za resetiranje unutar procesora i flip-flopa.

Korak 3: Ožičenje Z80

Sada dolazimo do gnjida. Žicu ćemo povezati sa Z80. Na ploču sam stavio Z80 na vrh na isti dio ploče kao i sklop za resetiranje. Kao što je ranije rečeno, prvo ožičite strujne šine. 5V ide na pin 11 s lijeve strane, a uzemljenje je jedan pin dolje, ali s desne strane. Možda ste primijetili i čudnu širinu čipa. To će uzrokovati da imate 3 otvorena konektora s jedne strane na matičnoj ploči i 2 s druge strane. Samo čini manje zgodnim slanje dodatnih stvari ako to odlučite.

Sljedeći brojevi pinova-pretpostavljam da znate računati pinove na IC-u-su neiskorišteni ulazi i moraju biti vezani za 5V šinu: 16, 17, 24, 25.

Sjećate li se našeg sata? Njegov izlaz ide na pin 6 na z80. Krug za resetiranje spaja se na pin 26. Bez ostalih komponenti na ploči, ovo je koliko mogu sa samo ožičenjem z80. Dodatno ožičenje bit će izvedeno u kasnijim koracima.

Budući da sam već bio izgradio kolo prije nego što sam uopće razmišljao o pisanju ovog uputstva, zadržat ću sliku do sljedećeg koraka.

Korak 4: Ožičenje ROM -a

Ožičenje ROM -a
Ožičenje ROM -a

NAPOMENA: Možda ćete htjeti odgoditi postavljanje na ploču ako je potrebno programirati (o tome kasnije).

Što se tiče ROM -a, postavio sam ga pored Z80 s desne strane i pomaknuo ga jednom iglom prema dolje. To mi je omogućilo da direktno povežem sabirnicu adresa, ali o tome kasnije. AT28C64B je EEPROM, što znači da se može programirati više puta isključivanjem i uključivanjem nekih pinova. Ne želimo da se naš EEPROM slučajno reprogramira kada je u krugu. Dakle, nakon što spojite svoje tračnice za napajanje, spojite žicu 27 (/WE) na 5V šinu kako biste potpuno onemogućili funkciju pisanja.

Moj program je tako mali, trebalo mi je samo povezanih donjih 5 adresa (A0-A4), ali svejedno sam spojio A5, A6 i A7 tako da mogu pisati veće programe bez dodatnog rada. Dodatne adresne linije (A8-A12) vezane su direktno za tlo kako bi se spriječio neželjeni pristup višim adresama s plutajućih ulaza. Uz neiskorištene ulaze adrese vezane za masu i kontrolu pisanja vezanu na 5V, ostatak ožičenja je prilično jednostavan. Pronađite A0 na procesoru i povežite ga s A0 na ROM -u. Zatim pronađite A1 na procesoru i povežite ga s A1 na ROM -u. Učinite to dok ne povežete sve adrese zajedno. Na slici je moja adresa sabirnice do ROM -a izvedena plavim ožičenjem. Sabirnica adresa koja ide do RAM -a izvedena je crvenim ožičenjem. Sve su ove žice unaprijed izrezane i ogoljene jer su dolazile u kompletu za ožičenje i bile su savršene za ovo ožičenje.

Nakon što povežete adrese (to se naziva sabirnica adresa), učinite potpuno isto za pinove označene D0, zatim D1, D2 itd. Učinite to za sve pinove podataka (D0 - D7) i imate svoj sabirnica podataka ožičena. Skoro smo završili s povezivanjem ROM -a. Pronađite pin /CE (omogućavanje čipa) ROM -a i spojite ga na iglu procesora 19, /MREQ (zahtjev za memorijom), a zatim pronađite ROM /OE (izlaz za omogućavanje) i povežite ga na iglu procesora 21, /RD (čitanje). Sada smo završili. Sve se to radi pomoću kratkospojnih žica jer moraju otići na drugu stranu procesora, a oplata ne nudi dovoljno prostora za korištenje takvog urednog ožičenja.

Korak 5: Ožičenje izlaza

Ožičenje izlaza
Ožičenje izlaza
Ožičenje izlaza
Ožičenje izlaza

Budući da je bio nenaseljen, za izlaz sam odabrao dio ploče lijevo od Z80. Postavite japanku i spojite ih na strujne vodilice. Pin 1, /MR (reset) može se spojiti direktno na reset pin procesora, ali možete ga ostaviti vezanog za 5V šinu. Ako to učinite, samo će prikazati neželjene podatke do prvog pisanja. Obratite pažnju na to kako čip ima satni ulaz na pinu 11. Ovaj ulaz je čudan po tome što se aktivira kada pin pređe visoko. Takođe imajte na umu da ovaj pin NIJE isti sat koji pokreće procesor. Ovaj sat zaključava podatke utvrđene na sabirnici podataka.

Sjećate li se kako smo povezali D0 - D7 na ROM -u na iste pinove na procesoru? Učinite potpuno isto za ovaj čip. Njegov D0 ide na D0 na sabirnici podataka itd. Igle koje počinju sa "Q" su izlazi. Prije nego što ih spojimo, moramo dodati još čipova. Koristio sam quad NOR kapije jer ih imam cijev i već mi je trebala, ali bilo koji čip će uspjeti ako ga pravilno povežete. Mogao sam vezati jedan ulaz na svim vratima za uzemljenje i koristiti druge ulaze kao, dobro, ulaze, ali odlučio sam spojiti oba ulaza radi jednostavnosti.

Stavio sam žetone ispod flip-flopa kako bih olakšao direktno povezivanje bez kratkospojnika, ali u ovom trenutku mi je ponestalo žice pa na kraju nije bilo važno. Q0, Q1 ….. Q7 na japanci idu do ulaza na pojedinačnim vratima. Sa 4 kapije u svakom paketu/čipu, trebala su mi 2 paketa i koristio sam sve kapije. Ako pronađete verziju japanke koja može pokretati LED diode bez potrebe za ovakvim međuspremnikom, ova dva čipa nisu potrebna. Ako koristite kapije kao međuspremnik koji nemaju obrnute izlaze (AND/OR/XOR), tada možete spojiti LED diode kako biste očekivali. Ako koristite iste dijelove kao ja i/ili su izlazi obrnuti, LED diode treba ožičiti kako je dolje opisano. Prva slika prikazuje IC dio izlaza.

Upotrijebite otpornike od 330 ohma da biste vezali pozitivne LED diode (anodu) na 5V šinu i spojili negativnu (katodu) na izlaz vrata. Na drugoj slici možete vidjeti da sam koristio dvije sabirnice otpornika, svaka sa samo pet unutarnjih otpornika. Ovako ožičenje LED dioda će ih upaliti kada je izlaz isključen. To činimo jer je izlaz isključen kada je ulaz uključen. Potrudite se da vodite računa o tome koja vrata izlaze iz flip-flop kontrole. Osim ako vaše LED diode neće biti razbacane ili njihov redoslijed nema smisla, njihovo gubljenje može kasnije izazvati zabunu kada se pitate zašto je izlaz pogrešan.

Korak 6: Ožičenje ulaza

Ožičenje ulaza
Ožičenje ulaza

Uzmite taj japanku 74HC374 i postavite je negdje. Moj je bio negdje ispod Z80 prema dnu ploče. Sjećate li se zadnji put kada smo spojili D0 na D0 i D1 na D1 i tako dalje? Ovaj put povezujemo Q0 na D0 i Q1 na D1 itd. Srećom, ovaj put ne moramo dodavati nikakve bafer čipove, haha. Umjesto toga, povezat ćemo 10K Ohm na svaki "D" pin (D0-D7) i masu, a zatim dugme na iste pinove i 5V šinu. Ili možete upotrijebiti otporničku sabirnicu i znatno smanjiti broj dijelova. Pomoći će i matrica dugmeta 3x4 (bez matričnog izlaza !!). Slika prikazuje cjelokupni ulazni krug zajedno s logikom ljepila (taj dio je sljedeći).

Korak 7: Ljepilo logike

Imamo još jednu stvar za žicu. Zove se "logika lepljenja" jer se koristi za dekodiranje kontrolnih signala kako bi sve funkcionisalo; to je ono što drži kolo na okupu. Kada procesor želi upisati podatke na izlaz, oba /IORQ i /WR (20 i 22 respektivno) padaju i podaci koji se šalju potvrđuju se na sabirnici podataka. Pin sata na oba japanke je aktivan visoko, što znači da se podaci zaključavaju kada pin primi visoki signal. Koristimo NOR vrata i žicu /IORQ na jedan ulaz kapije, a /WR na drugi ulaz. Kad je jedno od visokih vrijednosti, što znači da se IO krugovi ne odabiru ili se ne izvodi operacija pisanja, izlaz koji napaja sat flip-flopa ostaje nizak. Kada su oba ulaza niska, i samo kada, izlaz ide visoko, a japanka zaključava podatke.

Sada moramo ožičiti ulazni flip-flop. Pin sata možemo povezati na isti način kao i prethodni, ali koristeći /IORQ i /RD. Ali za razliku od drugih japanki, imamo i /OE pin koji treba spustiti samo kada su /IORQ i /RD niski. Dobro bi nam došla kapija ILI. Ili bismo jednostavno mogli uzeti signal koji već imamo za sat i obrnuti ga s jednom od dvije obrnute kapije koje već imamo na raspolaganju. U vrijeme navođenja ovog uputstva nisam imao na raspolaganju ulaz ILI, pa sam upotrijebio jednu drugu opciju. Korištenje posljednje opcije značilo je da ionako ne moram dodavati dodatne dijelove.

Korak 8: Programiranje

Ako je vaše ožičenje ispravno i moje objašnjenje jasno, preostaje samo programiranje ROM -a. Postoji nekoliko načina da se to učini. Mogli biste krenuti lakim putem i naručiti novi čip od Digikey -a. Kada naručujete dio, imat ćete mogućnost učitavanja HEX datoteke i oni će je programirati prije nego što je pošalju. Koristite HEX ili OBJ datoteke priložene ovom uputstvu i samo pričekajte da stignu poštom. Opcija 2 je izgraditi programera s Arduinom ili slično. Pokušao sam s tom rutom i nije uspio ispravno kopirati određene podatke i trebalo mi je nekoliko sedmica da to shvatim. Na kraju sam napravio opciju 3, a to je da je ručno programiram i preklopnim prekidačima kontroliram adresu i linije podataka.

Nakon što se pretvori izravno u OP kod procesora, cijeli ovaj program počiva na samo 17 bajtova adresnog prostora, tako da ručno programiranje nije bilo previše strašno. Program učitava u registar opće namjene B vrijednost 00. Registar B se koristi za spremanje rezultata prethodnog dodavanja. Budući da je registar A mjesto gdje se matematika događa, nećemo ga koristiti za pohranu podataka.

Govoreći o registru A, izvršavamo naredbu IN koja čita unos i pohranjuje pročitane podatke u A. Zatim dodajemo sadržaj registra B i ispisujemo rezultat.

Nakon toga se registar A kopira u registar B. Zatim radimo niz naredbi za preskakanje. Budući da svi skokovi upućuju na donji bajt adresa, i zato što je gornji bajt instrukcije za preskakanje dat u drugom argumentu i iznosi "00", možemo prisiliti svaki skok da slijedi NOP. To činimo kako bismo dali vrijeme između prikaza izlaza i čitanja unosa kako bismo spriječili slučajni unos. Svaki skok koristi deset ciklusa takta, a svaki NOP koristi četiri. Ako vam petlja traje predugo po vašem ukusu, možete povećati brzinu takta ili je možete reprogramirati za jedan skok manje.

Korak 9: Testiranje

Ako ste sve pravilno ožičili i vaš ROM je pravilno programiran, preostaje vam još jedan posljednji korak: priključite ga i provjerite radi li. Pritisnite dugme i sačekajte nekoliko sekundi. Programu je potreban 81 ciklus takta da dosegne svoju prvu petlju, a svakoj petlji 74 ciklusa takta.

Ako ne radi, provjerite ima li kratkih hlača i nepovezanih iglica (otvara) i drugih problema s ožičenjem. Ako ste isključili resetiranje pri uključivanju, morat ćete izvršiti ručno resetiranje prije nego procesor učini bilo što. Takođe možete priključiti LED diode na sabirnicu adresa da vidite da li se ponašaju. I sam sam imao problema s tim, pa sam ih umjesto toga zalijepio izravno na podatkovnu sabirnicu. To mi je omogućilo da vidim šta se komunicira između procesora i ROM -a bez brige o tome da li se ROM čita ispravno, što bi zahtijevalo vremenske dijagrame, a ja jednostavno nisam htio o tome govoriti. Ispostavilo se da je to bio dobar izbor jer sam napokon uhvatio problematične OP kodove koji su pogrešno pohranjeni.

Preporučuje se: