Sisällysluettelo:

Tietokoneen rakentaminen elektroniikan perustaidolla: 9 vaihetta (kuvilla)
Tietokoneen rakentaminen elektroniikan perustaidolla: 9 vaihetta (kuvilla)

Video: Tietokoneen rakentaminen elektroniikan perustaidolla: 9 vaihetta (kuvilla)

Video: Tietokoneen rakentaminen elektroniikan perustaidolla: 9 vaihetta (kuvilla)
Video: Tietokoneen rakennus, osa 1/18: johdanto 2024, Heinäkuu
Anonim
Luo tietokone, jolla on perustiedot elektroniikasta
Luo tietokone, jolla on perustiedot elektroniikasta

Oletko koskaan halunnut teeskennellä, että olet todella fiksu ja rakentaa oma tietokone tyhjästä? Etkö tiedä mitään siitä, mitä tarvitaan pelkän minimitietokoneen tekemiseen? No, se on helppoa, jos tiedät tarpeeksi elektroniikasta heittääksesi joitakin IC: itä oikein. Tässä ohjeessa oletetaan, että olet hyvä siinä osassa, sekä muutamia muita asioita. Ja jos ei, sen ei pitäisi silti olla liian vaikeaa seurata, jos tiedät miten leipälaudat/prototyypit tehdään. Tämän ohjeen tarkoitus on saada sinulle toimiva "tietokone" tietämättä paljon niiden toiminnasta. Käsittelen johdotusta ja ohjelmoinnin perusteita sekä annan sinulle erittäin lyhyen ohjelman. Aloitetaan siis.

Vaihe 1: Osat ja tavarat

Osat ja tavarat
Osat ja tavarat
Osat ja tavarat
Osat ja tavarat

"Tietokone" vaatii: virtaa, tuloa, käsittelyä, muistia ja lähtöä. Teknisesti meillä on kaikki nämä asiat. Käsittelen näitä asioita tässä järjestyksessä.

Virtaa varten tarvitset 5 voltin (tässä merkitty 5 V: n) lähteen. On suositeltavaa, että se on säännelty lähde, jotta et paista vahingossa piirisi osia. Syöttömme ovat painikkeet. Käsittely on itsestään selvää; käytämme prosessoria. Muisti koostuu vain ROM -levyistä. Suorittimen sisäiset yleiskäyttörekisterit riittävät käytettäväksi RAM -muistina. Lähtö on LED.

1 LM7805C - 5V -säädin

1 ZYLOG Z80 - Suoritin

1 AT28C64B - EEPROM

1 74LS273 - Octal D Flip -Flop

1 74HC374E - Octal D Flip -Flop

3 CD4001BE - Quad NOR -portti

1 NE555 - Kellogeneraattori

2 1 K ohmin vastus

1 10 K ohmin vastus

1 10 K ohmin vastusverkko; 8 Bussed TAI 8 10K lisävastukset

1 1uF kondensaattori

1 100uF kondensaattori

1 Painike

1 3x4 -näppäinmatriisi TAI 8 lisäpainiketta

8 LED - Värivalinnalla ei ole väliä

8330 ohmin vastukset tai vastusverkko

1 Todella iso leipälauta tai useita pieniä

Paljon ja paljon lankaa

Minun kaavamaisessa minulla on asennettu SRAM -tikku. Sinun ei tarvitse edes huolehtia siitä. Lisäsin sen vain kaavioon heijastamaan tarkasti todellista piiriäni ja lisäsin sen piiriin tulevaa käyttöä varten. Kaavioon lisätään myös quad OR -portti (74LS36). Kahden käyttämättömän portin tulot on sidottu VCC: hen ja niiden lähdöt jätetään kellumaan (ei piirretty). Myöskään ei piirretty tai lueteltu yllä on kaksi kondensaattoria virtapiirissä.

Syön säädettyä 12 V: n 5 V: n säätimeen koko leipälevyn syöttämiseksi. Se on melko lämmin, joten liitin jäähdytyselementin jäähtymään. Jos käytät säätimen syöttämiseen alle 12V (käytä vähintään 7V), sen pitäisi toimia kylmempänä.

Z80 on paikka, jossa taika tapahtuu. Se ottaa ROM -muistiin tallennetut ohjeet ja suorittaa ne. EEPROM tallentaa ohjelmamme prosessorin suoritettavaksi.

Oktaali flip-flop, joka on tulostuslaitteemme, joka lukitsee dataväylän tiedot omaan lähtöönsä. Tämän avulla voimme muuttaa väylän sisältöä, mikä on erittäin tärkeä vaihe, joka suoritetaan useita kertoja käskyä kohti muuttamatta käyttäjän/katsojan näkemää. Flip-flop ei voi ohjata lähtövalolamppujen sytyttämiseen tarvittavaa virtaa, joten ne syötetään kahteen neljään NOR-porttipiiriin, jotka puskuroivat 8 datalinjaa LEDien ohjaamiseksi. Koska niiden porttien lähtö on käänteinen, meidän on myös kytkettävä LEDit käännettäväksi, mutta tulemme siihen, kun tulemme siihen. Toista NOR -sirua käytetään loogiseen dekoodaukseen, mutta vain kolme porttia.

Syöttöön käytetty oktaalinen kiikari on pohjimmiltaan sama asia. Lähdön flip-flops pitää tehonsa joko korkeana tai matalana, joten sitä ei voida käyttää väylän ajamiseen; se säilyttäisi tietoja bussissa. Sisääntulossa käytetty flip-flop korvaa /RESET-nastan /EN: llä, joka erottaa enemmän tai vähemmän sirun lähdöt (ja siitä), joten se ei säilytä dataa (kolmen tilan lähdöt).

Vaihe 2: Virta-, kello- ja nollauspiirien kytkentä

Virta-, kello- ja nollauspiirien johdotus
Virta-, kello- ja nollauspiirien johdotus
Virta-, kello- ja nollauspiirien johdotus
Virta-, kello- ja nollauspiirien johdotus
Virta-, kello- ja nollauspiirien johdotus
Virta-, kello- ja nollauspiirien johdotus

HUOMAUTUS: Johdotkaa kaikki osat sähköjohdot ensin. Kaikista unohdettavista johdotuksista siruilla on paljon vähemmän todennäköisyyttä selviytyä unohdetuista virtaliitännöistä.

Virtapiiri on yksinkertaisin johdinpiiri, jota seuraa vastaavasti nollaus- ja kellopiirit. Kuvassa 12 V: n tulo on oikeassa reunassa olevassa jatkojohdossa. Ruskea lanka, joka piilottaa keltaisen alla, syöttää 12 V: n säätimeen. Säätimen lähtö syöttää kaikki muut leipälevyn jatkojohdot ja kaikilla jatkojohdoilla on yhteinen perusta, koska elektroniikka toimii näin.

Prosessori vaatii kellopiirin toimiakseen. Ilman sitä se vain istuu siinä alustetussa tilassaan ja ei tee mitään. Kello käyttää prosessorin sisäisiä siirtorekistereitä, jotta se voi tuottaa signaaleja tehdäkseen asioita. Mikä tahansa kellotulo toimii, jopa yksinkertainen vastus ja painike. Mutta käskyjen suorittaminen kestää useita kellojaksoja. Käsky kirjoittaa ulostuloon kestää itsessään 12 sykliä. Et luultavasti halua istua siellä ja painaa painiketta yli 100 kertaa saadaksesi vain yhden silmukan koodista (todelliset luvut ovat ohjeiden lopussa). Sitä varten NE555 on tarkoitettu. Se tekee vaihdon puolestasi ja se tekee sen (suhteellisen) nopeasti.

Ennen kuin alat johdottaa mitään, sinun kannattaa ehkä mennä eteenpäin ja selvittää, miten haluat komponenttien asentavan taululle. Kellopiirini on aika lailla levyn alareunassa, joten se olisi poissa muiden komponenttien tieltä. Oletamme, että tiedät kuinka peruskello tehdään ajastimella. Jos et tee niin, etsi "555 Astable" ja seuraa opetusohjelmaa. Käytä 1K -vastusta siirtyäksesi 5V -kiskon ja ajastimen (R1) nastan 7 ja 10K -nastan 7 ja nastan 2 (R2) väliin. Muista sitoa nollaustappi, nasta 4, 5V -kiskoon, jotta ajastin voi toimia. Laitoin LEDin minun ulostuloni, jotta voisin varmistaa, että kello todella toimi, mutta sitä ei tarvita.

Toinen vaihtoehto NE555: llä on asettaa se NOT -portiksi ja käyttää 1K -vastusta sitomaan lähtö takaisin tuloon. Yleensä on suositeltavaa käyttää kolmea ajastinta tähän, mutta huomasin, että vain yhden pitäisi toimia hyvin. Tiedä vain, että jos teet tämän, se värähtelee erittäin suurella nopeudella ja on erittäin vaikeaa, jopa mahdotonta sanoa, että lähtö -LEDit vilkkuvat. Tätä asetusta kutsutaan "rengasoskillaattoriksi".

Huomaa, että emme vielä yhdistä kelloa prosessoriin. Olemme vain valmistelemassa sitä. Huomaa myös kuvassa olevan kellon yläpuolella oleva logiikkapiiri. Se lisättiin myöhemmin ja se oli ainoa puoliksi kohtuullinen paikka sen sijoittamiseen. Sitä käytetään RAM/ROM -valintaan. Tämä ohje ohittaa RAM -muistin, joten sinulla ei ole tätä sirua pelilaudalla.

Johdamme nyt nollauspiirin. Ensin sinun on löydettävä paikka taulullesi sitä varten. Valitsin kellon vierestä. Lisää painike taululle. Sido 1K -vastuksen avulla napin toinen puoli 5V -kiskoon. RESET -nastamme ovat aktiivisia alhaalla, joten meidän on pidettävä niitä korkealla. Sitä varten vastus on. Tämä risteys on myös paikka, jossa nollaustapit yhdistyvät. Napin toinen puoli menee suoraan maahan. Jos haluat nollata virran, lisää 10uF-kondensaattori myös tähän risteykseen. Se pitää nollaustappien jännitteen riittävän pitkään alhaisena aktivoidaksesi palautuspiirin prosessorin ja kiikun sisällä.

Vaihe 3: Kytke Z80

Nyt päästään ytimeen. Langaamme peto, joka on Z80. Laitoin levylleni Z80: n yläosaan samalle levyn osalle kuin nollauspiiri. Johdata ensin sähkökiskot, kuten aiemmin todettiin. 5V menee nastalle 11 vasemmalla ja maa on yksi nasta alaspäin, mutta oikealla. Olet ehkä huomannut myös sirun parittoman leveyden. Tämä aiheuttaa sen, että sinulla on 3 avointa liitintä leipälaudan toisella puolella ja 2 toisella. Se tekee vain vähemmän käteväksi langata ylimääräisiä tavaroita, jos päätät tehdä niin.

Seuraavat nastanumerot-oletan, että osaat laskea nastat IC: llä-ovat käyttämättömiä tuloja ja ne on sidottava 5 V: n kiskoon: 16, 17, 24, 25.

Muistatko kellomme? Sen ulostulo menee nastaan 6 z80: ssa. Nollauspiiri kytketään nastaan 26. Ilman muita komponentteja piirilevyssä, tämä on niin pitkälle kuin voin saada sinut z80: n johdotuksella. Lisää johdotuksia siihen tehdään myöhemmin.

Koska olin jo rakentanut virtapiirin ennen kuin edes harkitsin tämän ohjeen kirjoittamista, pidän kiinni kuvasta seuraavaan vaiheeseen asti.

Vaihe 4: ROM -levyn kytkeminen

ROM -levyn kytkentä
ROM -levyn kytkentä

HUOMAUTUS: Haluat ehkä estää sen asettamisen taululle, jos se vaatii vielä ohjelmointia (lisää siitä myöhemmin).

ROM -levylle asetin sen Z80: n viereen oikealle ja syrjäytin myös yhden tapin alas leipälevylle. Tämä antoi minulle mahdollisuuden kytkeä osoiteväylän suoraan yli, mutta siitä lisää myöhemmin. AT28C64B on EEPROM, eli se voidaan ohjelmoida useita kertoja kytkemällä jotkin nastat pois ja päälle. Emme halua, että EEPROM ohjelmoi vahingossa itsensä uudelleen, kun se on piirissä. Joten kun olet kytkenyt virtakiskot, kytke johto 27 (/WE) 5V -kiskoon, jotta kirjoitusominaisuus poistetaan kokonaan käytöstä.

Ohjelmani on niin pieni, että tarvitsin vain alemmat 5 osoiteriviä (A0-A4) kytkettyinä, mutta johdotin A5, A6 ja A7 joka tapauksessa, jotta voin kirjoittaa suurempia ohjelmia ilman ylimääräistä työtä. Ylimääräiset osoiterivit (A8-A12) on sidottu suoraan maahan, jotta estetään ei-toivottu pääsy korkeampiin osoitteisiin kelluvista tuloista. Kun käyttämättömät osoitetulot on sidottu maahan ja kirjoitusohjaus on kytketty 5 V: iin, loput johdotetaan melko yksinkertaisesti. Etsi A0 suorittimesta ja kytke se A0 -asemaan ROM -levyllä. Etsi sitten suorittimesta A1 ja kytke se ROM -levyn A1 -liitäntään. Tee tämä, kunnes olet yhdistänyt kaikki osoitteet yhteen. Kuvassa osoiteväylä ROM -levylle tehdään sinisellä johdolla. RAM -muistiin menevä osoiteväylä on kytketty punaisella johdolla. Nämä johdot olivat kaikki valmiiksi leikattuja ja kuorittuja, koska ne tulivat leipälevyn johdotussarjassa ja sopivat täydellisesti tähän johdotukseen.

Kun olet yhdistänyt osoitteet (tätä kutsutaan osoiteväyläksi), tee täsmälleen sama asia nastoille, joissa on merkintä D0, sitten D1, D2 jne. Tee tämä kaikille datanastakoille (D0 - D7) ja saat dataväylä langallisena. Olemme melkein valmiit kytkemään ROM -levyn. Etsi ROM -levyn /CE (sirun käyttöönotto) -nasta ja kytke se prosessorin nastaan 19, /MREQ (muistipyyntö) ja etsi sitten ROM /OE (ulostulon käyttöönotto) ja kytke se suorittimen nastaan 21, /RD (lue). Olemme nyt valmiita. Kaikki nämä tehdään hyppyjohdoilla, koska niiden on siirryttävä suorittimen toiselle puolelle, eikä leipälauta tarjoa tarpeeksi tilaa tällaisten siistien johdotusten käyttämiseen.

Vaihe 5: Lähdön kytkentä

Lähdön kytkentä
Lähdön kytkentä
Lähdön kytkentä
Lähdön kytkentä

Koska se oli asumaton, valitsin Z80: n vasemmalla puolella olevan levyn osan lähtöön. Aseta flip-flop siihen ja liitä ne virtakiskoihin. Nasta 1, /MR (nollaus) voi muodostaa yhteyden suoraan suorittimen nollaustappiin, mutta voit jättää sen sidottuna 5 V: n kiskoon. Tämä aiheuttaa vain roskatietojen näyttämisen ensimmäiseen kirjoitukseen asti. Huomaa, kuinka sirussa on kellotulo nastassa 11. Tämä tulo on outo, koska se aktivoituu, kun nasta nousee korkealle. Huomaa myös, että tämä nasta EI ole sama kello, joka käyttää prosessoria. Tämä kello lukitsee dataväylän väitetyt tiedot.

Muistatko kuinka yhdistimme levyn D0 - D7 samoihin nastoihin suorittimessa? Tee täsmälleen sama tälle sirulle. Sen D0 siirtyy D0 -väylään ja niin edelleen. "Q" -merkillä alkavat nastat ovat lähtöjä. Ennen kuin johdotamme ne, meidän on lisättävä lisää pelimerkkejä. Käytin quad NOR -portteja, koska minulla on putki ja tarvitsin jo yhden, mutta melkein mikä tahansa siru toimii, jos kytket sen oikein. Olisin voinut kytkeä yhden tulon kaikkiin portteihin maahan ja käyttää muita tuloja, hyvin, tuloina, mutta päätin kytkeä molemmat tulot yhteen yksinkertaisuuden vuoksi.

Laitoin pelimerkit flip-flopin alle helpottaaksesi johdotusta suoraan ilman puseroita, mutta johto oli vähissä tässä vaiheessa, joten sillä ei ollut oikeastaan väliä. Flip-flopin Q0, Q1….. Q7 menee yksittäisten porttien tuloihin. Jokaisessa paketissa/sirussa oli 4 porttia, joten tarvitsin 2 pakettia ja käytin kaikkia portteja. Jos löydät flip-flopin version, joka voi ajaa LED-valoja ilman puskurointia, näitä kahta sirua ei tarvita. Jos käytät puskuria, jossa ei ole käänteisiä lähtöjä (AND/OR/XOR), voit kytkeä LEDit odotetulla tavalla. Jos käytät samoja osia kuin minä ja/tai lähdöt ovat käänteisiä, LEDit on kytkettävä alla kuvatulla tavalla. Ensimmäinen kuva näyttää lähdön IC -osan.

Käytä 330 ohmin vastuksia sitoaksesi positiiviset LED -valot (anodi) 5 V: n kiskoon ja liitä negatiivinen (katodi) porttien ulostuloon. Toisessa kuvassa näkyy, että käytin kahta vastusväylää, joissa kussakin oli vain viisi sisäistä vastusta. Kun kytket tällaiset LEDit, ne syttyvät, kun lähtö on pois päältä. Teemme tämän, koska lähtö on pois päältä, kun tulo on päällä. Varmista ehdottomasti, että seuraat, mitkä portit ulostuloistasi ovat flip-flop-ohjaimella. Ellei LED -valot ole hajallaan tai niiden järjestys on merkityksetön, niiden jäljittäminen voi aiheuttaa hämmennystä myöhemmin, kun kysyt itseltäsi, miksi lähtö on väärä.

Vaihe 6: Tulon kytkentä

Tulon johdotus
Tulon johdotus

Ota se 74HC374-flip-flop ja aseta se jonnekin. Omani oli jossain Z80: n alapuolella levyn pohjaa kohti. Muistatko viimeisen kerran, kun yhdistimme D0 - D0 ja D1 - D1 ja niin edelleen? Tällä kertaa yhdistämme Q0 - D0 ja Q1 - D1 ja niin edelleen. Onneksi meidän ei tarvitse lisätä puskurimerkkejä tällä kertaa, haha. Sen sijaan aiomme liittää 10K ohmia jokaiseen "D" -nastaan (D0-D7) ja maahan ja sitten painikkeen samoihin nastoihin ja 5V-kiskoon. Tai voit käyttää vastusväylää ja vähentää osien määrää paljon. Myös 3x4 -näppäinmatriisi (ilman matriisitulostusta !!) auttaa. Kuvassa näkyy koko tulopiiri yhdessä liimalogiikan kanssa (tämä osa on seuraava).

Vaihe 7: Liimalogiikka

Meillä on viimeinen lanka. Sitä kutsutaan "liimalogiikaksi", koska sitä käytetään ohjaussignaalien purkamiseen, jotta kaikki toimisi; se pitää piirin koossa. Kun prosessori haluaa kirjoittaa dataa lähtöön, sekä /IORQ että /WR (20 ja 22 vastaavasti) menevät matalalle ja lähetettävä data väitetään tietoväylälle. Kellotappi molemmissa varvastossuissa on aktiivinen korkealla, mikä tarkoittaa, että data lukitaan, kun nasta vastaanottaa korkean signaalin. Käytämme NOR -porttia ja johtoa /IORQ: ta portin yhteen tuloon ja /WR: tä toiseen tuloon. Kun jompikumpi on korkea, eli IO-piirejä ei ole valittu tai kirjoitusoperaatiota ei suoriteta, läppäkellon kelloa syöttävä lähtö pysyy alhaisena. Kun molemmat tulot ovat alhaiset, ja vain silloin, kun ulostulo menee korkealle ja flip-flop lukitsee tiedot.

Nyt meidän on johdotettava tulon flip-flop. Voimme kytkeä kellotaulun johdotukseen paljon samalla tavalla kuin edellinen, mutta käyttämällä /IORQ ja /RD. Mutta toisin kuin toisessa flip-flopissa, meillä on myös /OE-tappi, joka on otettava alhaiseksi vain, kun /IORQ ja /RD ovat alhaiset. Voisimme käyttää TAI -porttia. Tai voisimme vain ottaa kellon kellosignaalin ja kääntää sen jollakin kahdesta käytettävissä olevasta kääntöportista. Tämän ohjeen toteamisen aikaan minulla ei ollut käytettävissä OR -porttia, joten käytin yhtä jälkimmäistä vaihtoehtoa. Jälkimmäisen vaihtoehdon käyttäminen tarkoitti, että minun ei tarvinnut lisätä lisäosia joka tapauksessa.

Vaihe 8: Ohjelmointi

Jos johdotus on oikein ja selitykseni on selkeä, jäljellä on vain ROM -levyn ohjelmointi. Tässä on muutamia tapoja edetä. Voit valita helpomman tavan ja tilata uuden sirun Digikeysta. Kun tilaat osaa, sinulla on mahdollisuus ladata HEX -tiedosto ja he ohjelmoivat sen ennen lähettämistä. Käytä tähän ohjeeseen liitettyjä HEX- tai OBJ -tiedostoja ja odota, että se saapuu postitse. Vaihtoehto 2 on rakentaa ohjelmoija Arduinolla tai jotain. Kokeilin tätä reititystä, mutta se ei kopioinut tiettyjä tietoja oikein, ja kesti viikkoja selvittää se. Päätin tehdä vaihtoehdon 3, joka on ohjelmoida se käsin ja kääntää kytkimiä osoitteen ja tietolinjojen ohjaamiseksi.

Kun tämä ohjelma on muunnettu suoraan suorittimen OP -koodiksi, se lepää vain 17 tavua osoitetilaa, joten käsin ohjelmointi ei ollut liian kamalaa. Ohjelma lataa yleiskäyttörekisteriin B arvon 00. Rekisteriä B käytetään edellisen lisäyksen tuloksen tallentamiseen. Koska matematiikka tapahtuu A -rekisterissä, emme käytä sitä tietojen tallentamiseen.

A -rekisteristä puheen ollen suoritamme IN -komennon, joka lukee syötteen ja tallennamme lukutiedot A: han. Sitten lisäämme rekisterin B sisällön ja tulostamme tuloksen.

Tämän jälkeen rekisteri A kopioidaan rekisteriin B. Ja sitten teemme sarjan hyppykomentoja. Koska kaikki hyppyt osoittavat osoiterivien alempaan tavuun ja koska hyppyohjeen ylempi tavu on annettu toisessa argumentissa ja on "00", voimme pakottaa jokaisen hyppyn seuraamaan NOP. Teemme tämän antaaksemme aikaa ulostulon näyttämisen ja tulon lukemisen välillä vahingossa tapahtuvan syöttämisen estämiseksi. Jokainen hyppy käyttää kymmenen kellojaksoa ja jokainen NOP neljää. Jos silmukka kestää liian kauan mielesi mukaan, voit lisätä kellon nopeutta tai ohjelmoida sen uudelleen yhdellä hyppyllä vähemmän.

Vaihe 9: Testaus

Jos olet kytkenyt kaiken oikein ja ROM on ohjelmoitu oikein, sinun on tehtävä viimeinen vaihe: kytke se ja katso, toimiiko se. Paina painiketta ja odota muutama sekunti. Ohjelma kestää 81 kellojaksoa, ennen kuin ohjelma saavuttaa ensimmäisen silmukkansa, ja jokainen silmukka kestää 74 kellojaksoa.

Jos se ei toimi, tarkista, onko oikosulkuja ja kytkettyjä nastoja (avautuu) ja muita johdotusongelmia. Jos olet jättänyt virrankatkaisun pois päältä, sinun on suoritettava manuaalinen nollaus ennen kuin suoritin tekee mitään. Voit myös liittää LED -valoja osoiteväylään nähdäksesi, toimivatko ne. Itselläni oli ongelmia sen kanssa, joten kiinnitin ne suoraan dataväylään. Tämä antoi minulle mahdollisuuden nähdä, mitä prosessorin ja ROM -levyn välillä välitettiin ilman tarvetta huolehtia siitä, luettiinko ROM oikein, mikä olisi vaatinut ajoituskaavioita, enkä vain halunnut ottaa sitä mukaan. Osoittautui hyväksi valinnaksi, koska sain vihdoin ongelmalliset OP -koodit, jotka oli tallennettu väärin.

Suositeltava: