Sadržaj:

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

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

Video: Izgradite računalo sa osnovnim razumijevanjem elektronike: 9 koraka (sa slikama)
Video: Сводные таблицы Excel: от нуля до эксперта за полчаса + информационные панели! Часть 1 2024, Srpanj
Anonim
Izgradite računalo sa osnovnim razumijevanjem elektronike
Izgradite računalo sa osnovnim razumijevanjem elektronike

Jeste li se ikada htjeli pretvarati da ste stvarno pametni i izgraditi vlastito računalo od nule? Ne znate ništa o tome što je potrebno za izradu računala na minimumu? Pa, lako je ako znate dovoljno o elektronici spojiti 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 nabaviti vam "računalo" koje radi bez da znate puno o tome kako oni rade. Pokriti ću ožičenje i osnove programiranja, kao i ponuditi vam vrlo kratak program. Pa krenimo.

Korak 1: Dijelovi i stvari

Dijelovi i stvari
Dijelovi i stvari
Dijelovi i stvari
Dijelovi i stvari

"Računalo" zahtijeva: napajanje, ulaz, obradu, memoriju i izlaz. Tehnički ćemo imati sve ove stvari. Pokriti ću te stvari tim redoslijedom.

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 bit će gumbi. Obrada je sama po sebi razumljiva; koristimo procesor. Memorija će se sastojati samo od ROM -a. Unutarnji registri opće namjene procesora bit će dovoljni za korištenje 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 gumb

1 Matrica gumba 3x4 ILI 8 dodatnih tipki

8 LED - izbor boje nije bitan

8 330 ohmskih otpornika ili otporničke mreže

1 Zaista velika ploča ili više malih

Puno i puno žice

U mojoj shemi imam instaliran štap SRAM -a. Ne morate se ni brinuti oko toga. Dodao sam ga samo shemi kako bi točno odražavao moj stvarni krug i dodao ga u krug za buduću upotrebu. Shemi je također dodana četverostruka vrata ILI (74LS36). Ulazi dvaju neiskorištenih vrata vezani su za VCC, a njihovi izlazi ostaju plutajući (nisu izvučeni). Također nisu nacrtana niti gore navedena dva kondenzatora u strujnom krugu.

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

Z80 je mjesto gdje 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 hvata podatke na podatkovnoj sabirnici za vlastiti izlaz. To nam omogućuje 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/gledatelj 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 međuspremnik 8 podatkovnih linija za pogon LED dioda. Budući da su izlazi vrata obrnuti, također moramo povezati LED diode da budu obrnuti, ali do toga ćemo doći kad dođemo do toga. Drugi NOR čip koristi se za logičko dekodiranje, ali se koriste samo tri vrata.

Oktalni japanka koji se koristi za unos je u biti ista stvar. Izlazni japanci drže svoj izlaz visoko ili nisko pa se ne mogu koristiti za upravljanje autobusom; držao bi podatke na sabirnici. Flip-flop koji se koristi za unos zamjenjuje pin /RESET sa /EN, koji manje-više odvaja izlaze (i od) čipa tako da neće držati podatke (izlazi s 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 svega što treba zaboraviti ožičiti, čipovi će imati mnogo manju vjerojatnost da prežive zaboravljene priključke napajanja.

Krug napajanja najjednostavniji je 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 svaki drugi razvodnik napajanja na ploči i svaki razvodnik ima zajedničko uporište jer tako funkcionira elektronika.

Procesoru je za rad potreban taktni krug. Bez toga, samo će sjediti u početnom stanju i neće ništa učiniti. Sat upravlja procesorima s unutarnjim registrima pomaka tako da može generirati signale za obavljanje poslova. Bilo koji ulaz sata će poslužiti, čak i jednostavan otpornik i gumb. No za izvršavanje uputa potrebni su mnogi ciklusi takta. Uputa za pisanje na izlaz traje 12 ciklusa. Vjerojatno ne želite sjediti tamo i pritisnuti gumb više od 100 puta da biste dobili samo jednu petlju koda (stvarni se brojevi nalaze na kraju instrukcije). Za to služi NE555. Prebacivanje vrši umjesto vas i to (relativno) velikom brzinom.

Prije nego što počnete ožičavati bilo što, možda biste htjeli smisliti kako želite da vaše komponente budu postavljene na ploču. Moj satni krug je jednostavno stavljen na dno ploče kako ne bi bio na putu drugim komponentama. Pretpostavit ćemo da znate izraditi osnovni sat pomoću mjerača vremena. Ako to ne učinite, htjet ćete potražiti "555 Astable" i slijediti vodič. Upotrijebite 1K otpornik da biste prošli između 5V šine i pina 7 timera (R1) i 10K između pina 7 i pina 2 (R2). Priključite pin za resetiranje, pin 4 na tračnicu od 5 V kako bi mjerač vremena mogao funkcionirati. Stavio sam LED na svoj izlaz kako bih mogao provjeriti radi li sat stvarno, ali nije potreban.

Druga mogućnost s NE555 je postaviti ga kao NE vrata i upotrijebiti 1K otpornik za vezanje izlaza natrag na ulaz. Obično se preporučuje korištenje 3 timera 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 s procesorom. Jednostavno ga spremamo. Također imajte na umu logički čip tik 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. Odabrao sam odmah pored sata. Dodajte svoj gumb na ploču. Upotrijebite 1K otpornik kako biste jednu stranu gumba vezali za 5V tračnicu. 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 i pinovi za resetiranje. Druga strana gumba ide ravno na tlo. Ako želite resetiranje pri uključivanju, dodajte kondenzator od 10uF i ovom spoju. Držat će napon na pinovima za poništavanje dovoljno niskim da aktivira sklop za poništavanje unutar procesora i japanke.

Korak 3: Ožičenje Z80

Sada dolazimo do gnjida. Ožičit ćemo zvijer Z80. Na ploču sam stavio Z80 na vrh na isti dio ploče kao i sklop za resetiranje. Kao što je prethodno rečeno, prvo ožičite strujne vodilice. 5V ide na pin 11 s lijeve strane, a uzemljenje je jedan pin dolje, ali s desne strane. Možda ste primijetili i neparnu širinu čipa. To će uzrokovati da imate 3 otvorena priključka s jedne strane na ploči i 2 s druge strane. To samo čini manje prikladnim povezivanje 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 na 5V vodilicu: 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 dobiti sa ožičenjem samog z80. Dodatno ožičenje bit će izvedeno u kasnijim koracima.

Budući da sam već bio izgradio sklop 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 stvarno stavljanje na ploču ako ga i dalje treba programirati (o tome kasnije).

Što se tiče ROM -a, stavio sam ga pored Z80 s desne strane i također ga pomaknuo jednom iglom prema dolje. To mi je omogućilo izravno povezivanje sabirnice 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 vodilicu kako biste potpuno onemogućili funkciju pisanja.

Moj je program tako mali, trebalo mi je samo povezanih donjih 5 adresnih redaka (A0-A4), ali svejedno sam spojio A5, A6 i A7 tako da mogu pisati veće programe bez dodatnog rada. Dodatni adresni redovi (A8-A12) vezani su izravno za tlo kako bi se spriječio neželjeni pristup višim adresama s plutajućih ulaza. S neiskorištenim adresnim ulazima vezanim za masu i kontrolom upisivanja 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 bile prethodno 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 podatkovne pinove (D0 - D7) i imate svoj podatkovna sabirnica ožičena. Skoro smo završili s povezivanjem ROM -a. Pronađite ROM /CE (čip omogućujući) pin i povežite ga s procesorom 19, /MREQ (zahtjev za memorijom), a zatim pronađite ROM /OE (izlaz omogućuje) i povežite ga s iglom procesora 21, /RD (čitanje). Sada smo gotovi. Sve se to radi pomoću kratkospojnih žica jer moraju otići na drugu stranu procesora, a oplata ne nudi dovoljno prostora za takvo uredno ožičenje.

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. Stavite japanku i spojite ih na strujne vodilice. Pin 1, /MR (reset) može se spojiti izravno na reset pin procesora, ali ga možete ostaviti vezan za 5V šinu. Time ćete samo 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 kad pin ide visoko. Također imajte na umu da ovaj pin NIJE isti sat koji pokreće procesor. Ovaj sat zaključava podatke utvrđene na podatkovnoj sabirnici.

Sjećate li se kako smo spojili D0 - D7 na ROM -u na iste pinove na procesoru? Učinite potpuno isto za ovaj čip. Njegov D0 ide na D0 na podatkovnoj sabirnici i tako dalje. Igle koje počinju s "Q" su izlazi. Prije nego što ih spojimo, moramo dodati još čipova. Koristio sam quad NOR vrata jer ih imam cijev i već sam ih trebao, 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 japanke kako bih olakšao izravno 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. S 4 kapije u svakom paketu/čipu, trebala su mi 2 paketa i koristio sam sva vrata. Ako pronađete verziju japanke koja može pokretati LED diode bez potrebe za ovakvim međuspremnikom, ova dva čipa nisu potrebna. Ako vrata koristite kao međuspremnik koji nema obrnute izlaze (I/ILI/XOR), tada možete spojiti LED diode kako biste očekivali. Ako koristite iste dijelove kao ja i/ili su izlazi obrnuti, LED diode trebaju biti ožičene kako je dolje opisano. Prva slika prikazuje IC dio izlaza.

Upotrijebite otpornike od 330 Ohma da biste vezali pozitivne LED diode (anodu) na 5V tračnicu 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 kad 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 budu raspršene 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 japanku 74HC374 i postavite je negdje. Moj je bio negdje ispod Z80 prema dnu ploče. Sjećate li se prošli put kada smo spojili D0 na D0 i D1 na D1 i tako dalje? Ovaj put povezujemo Q0 na D0 i Q1 na D1 i tako dalje. Srećom ovaj put ne moramo dodavati nikakve međuspremnike, haha. Umjesto toga, spojit ćemo 10K Ohm na svaki "D" pin (D0-D7) i masu, a zatim gumb na iste pinove i 5V tračnicu. Ili možete upotrijebiti sabirnički otpornik i znatno smanjiti broj dijelova. Pomoći će i matrica gumba 3x4 (bez matričnog izlaza !!). Slika prikazuje cjelokupni ulazni krug zajedno s logikom ljepila (taj dio je sljedeći).

Korak 7: Logika ljepila

Imamo još jedno posljednje. Zove se "logika ljepila" jer se koristi za dekodiranje kontrolnih signala kako bi sve funkcioniralo; to je ono što drži krug 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 podatkovnoj sabirnici. Pin sata na oba japanke aktivni su visoko, što znači da su podaci zaključani kada pin primi visoki signal. Koristimo vrata NOR i žicu /IORQ na jedan ulaz vrata, 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. Kad 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 spojiti na isti način kao i prethodni, ali koristeći /IORQ i /RD. No, za razliku od ostalih japanki, imamo i /OE pin koji treba spustiti samo kada su /IORQ i /RD niski. Dobro bi nam došla vrata ILI. Ili bismo jednostavno mogli uzeti signal koji već imamo za sat i preokrenuti ga s jednim od dvaju obrnutih vrata koja već imamo na raspolaganju. U vrijeme navođenja ovog uputstva nisam imao na raspolaganju ulaz ILI, pa sam upotrijebio jednu drugu opciju. Korištenje potonje 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 za to. Mogli biste krenuti jednostavnim putem i naručiti novi čip s Digikeyja. Kada naručujete dio, imat ćete mogućnost učitavanja HEX datoteke, a oni će je programirati prije nego što je pošalju. Upotrijebite HEX ili OBJ datoteke priložene ovom uputstvu i samo pričekajte da stigne 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 trebali su mi tjedni da to shvatim. Na kraju sam napravio opciju 3, a to je da je programiram ručno i prebacim prekidače za kontrolu adresa i podatkovnih linija.

Nakon što se izravno pretvori u OP kod procesora, cijeli ovaj program počiva na samo 17 bajtova adresnog prostora, pa 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 ulaz i pohranjuje pročitane podatke u A. Zatim dodajemo sadržaj registra B i izlazimo rezultat.

Nakon toga se registar A kopira u registar B. Zatim radimo niz naredbi za skok. Budući da svi skokovi upućuju na donji bajt adresnih redaka i zato što je gornji bajt instrukcije za preskakanje dan 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 predugo traje, možete povećati brzinu takta ili je reprogramirati tako da iskoristi jedan skok manje.

Korak 9: Testiranje

Ako ste sve pravilno ožičili i vaš je ROM pravilno programiran, morate poduzeti još jedan posljednji korak: priključite ga i provjerite radi li. Pritisnite gumb i prič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 se) i drugih problema s ožičenjem. Ako ste isključili resetiranje pri uključivanju, morat ćete izvršiti ručno resetiranje prije nego što procesor učini bilo što. Također možete priključiti LED diode na sabirnicu adresa da biste vidjeli ponašaju li se. I sam sam imao problema s tim, pa sam ih umjesto toga zalijepio izravno na podatkovnu sabirnicu. To mi je omogućilo da vidim što se komunicira između procesora i ROM -a bez brige o tome čita li se ROM 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čeni: