INHOUDSOPGAWE:

Bou 'n rekenaar met basiese kennis van elektronika: 9 stappe (met foto's)
Bou 'n rekenaar met basiese kennis van elektronika: 9 stappe (met foto's)

Video: Bou 'n rekenaar met basiese kennis van elektronika: 9 stappe (met foto's)

Video: Bou 'n rekenaar met basiese kennis van elektronika: 9 stappe (met foto's)
Video: Хитрости МАСТЕРОВ и секретные приспособления!!! А ты и не знаешь!!! 2024, November
Anonim
Bou 'n rekenaar met basiese kennis van elektronika
Bou 'n rekenaar met basiese kennis van elektronika

Wou u al ooit voorgee dat u regtig slim is en u eie rekenaar van nuuts af bou? Weet u niks wat nodig is om 'n minimum rekenaar te maak nie? Dit is maklik as u genoeg van elektronika weet om 'n paar IC's korrek bymekaar te maak. Hierdie instruksies sal aanvaar dat u goed is in die deel, plus 'n paar ander dinge. En as dit nie die geval is nie, behoort dit steeds nie te moeilik te wees om te volg as u weet hoe broodplankry/prototipering gedoen word nie. Die doel van hierdie instruksies is om u 'n werkende 'rekenaar' te kry sonder om veel te weet oor hoe dit werk. Ek behandel bedrading en basiese beginsels van programmering, en bied 'n baie kort program vir u. So laat ons begin.

Stap 1: Onderdele en goed

Onderdele en goed
Onderdele en goed
Onderdele en goed
Onderdele en goed

'N' Rekenaar 'vereis: krag, invoer, verwerking, geheue en uitset. Tegnies sal ons al hierdie dinge hê. Ek sal hierdie dinge in daardie volgorde behandel.

Vir krag benodig u 'n 5 volt (hierna aangedui as 5V) bron. Dit word aanbeveel dat dit 'n gereguleerde bron is, sodat u nie per ongeluk dele in u kring braai nie. Ons insette sal knoppies wees. Verwerking is vanselfsprekend; ons gebruik 'n verwerker. Geheue sal slegs uit ROM bestaan. Die verwerker se interne registers vir algemene doeleindes is voldoende om as RAM te gebruik. Uitset sal LED's wees.

1 LM7805C - 5V Reguleerder

1 ZYLOG Z80 - verwerker

1 AT28C64B - EEPROM

1 74LS273 - Octal D Flip -Flop

1 74HC374E - Octal D Flip -Flop

3 CD4001BE - Quad NOR -hek

1 NE555 - Klokgenerator

2 1K Ohm weerstand

1 10K Ohm weerstand

1 10K Ohm Weerstandsnetwerk; 8 Bussed OF 8 Bykomende 10K weerstande

1 1uF kondensator

1 100uF kondensator

1 Drukknoppie

1 3x4 knoppie matriks OF 8 bykomende drukknoppies

8 LED - kleurkeuse maak nie saak nie

8 330 Ohm weerstande of weerstandsnetwerk

1 Regtig groot broodbord of veelvuldige kleintjies

Baie en baie draad

In my skema het ek 'n stok SRAM geïnstalleer. U hoef nie eers daaroor bekommerd te wees nie. Ek het dit net by die skema gevoeg om my werklike stroombaan akkuraat te weerspieël, en ek het dit by die kring gevoeg vir toekomstige gebruik. 'N Vier -OF -hek (74LS36) word ook by die skematika gevoeg. Die insette van die twee ongebruikte hekke word aan VCC gekoppel en hul uitsette bly dryf (nie getrek nie). Twee kondensators op die kragbaan is ook nie hierbo geteken of gelys nie.

Ek voer gereguleerde 12V in die 5V -reguleerder om die hele broodbord te voed. Dit word taamlik warm, en ek het 'n hittebak aangebring om dit af te koel. As u minder as 12V gebruik om die reguleerder te voed (gebruik ten minste 7V), moet dit koeler wees.

Die Z80 is waar die magie gebeur. Dit neem instruksies gestoor in ROM en voer dit uit. Die EEPROM stoor ons program sodat die verwerker dit kan uitvoer.

Die oktale flip-flop wat ons uitsetapparaat is wat die data op die databus tot sy eie uitset sluit. Dit stel ons in staat om te verander wat op die bus is, wat 'n baie belangrike stap is wat verskeie kere per instruksie gedoen word, sonder om te verander wat die gebruiker/kyker sien. Die flip-flop kan nie die benodigde stroom dryf om die uitvoer-LED's aan te steek nie, sodat hulle in twee van die vier NOR-hekskyfies ingevoer word, wat die agt data lyne buffer om die LED's aan te dryf. Aangesien die uitvoer van die hekke omgekeerd is, moet ons ook die LED's omdraai om omgekeer te word, maar ons sal daarby kom as ons daarby kom. Die ander NOR -chip word gebruik vir logiese dekodering, maar slegs drie hekke word gebruik.

Die oktale flip-flop wat vir invoer gebruik word, is in wese dieselfde. Die uitset-flip-flops hou hul uitset hoog of laag, sodat dit nie gebruik kan word om die bus te bestuur nie; dit sal data op die bus hou. Die flip-flop wat vir invoer gebruik word, vervang die /RESET-pen met /EN, wat die uitsette van (en van) die chip min of meer ontkoppel, sodat dit nie data (tri-state-uitsette) kan hou nie.

Stap 2: Bedrading van die krag-, klok- en herstellingskringe

Bedrading van die krag-, klok- en terugstellingskringe
Bedrading van die krag-, klok- en terugstellingskringe
Bedrading van die krag-, klok- en terugstellingskringe
Bedrading van die krag-, klok- en terugstellingskringe
Bedrading van die krag-, klok- en terugstellingskringe
Bedrading van die krag-, klok- en terugstellingskringe

OPMERKING: Dra by die kragrails eers vir alle dele. Van alle dinge wat u moet vergeet om oor te dra, sal die skyfies baie minder geneig wees om die vergete kragverbindings te oorleef.

Die kragkring is die eenvoudigste stroombaan, gevolg deur onderskeidelik die reset- en klokbane. Op die foto is die 12V -ingang op die kragstrook heel regs. Die bruin draad, wat 'n geel een daaronder wegsteek, voer die 12V aan die reguleerder. Die uitset van die reguleerder voed elke ander kragstrook op die broodbord en elke kragstrook deel 'n gemeenskaplike grond, want dit is hoe elektronika werk.

Die verwerker benodig 'n klokbaan om te werk. Daarsonder sal dit net daar sit in sy geïnitialiseerde toestand en niks doen nie. Die klok werk die interne skofregisters van die verwerkers, sodat dit die seine kan genereer om dinge te doen. Elke ingang van die klok is voldoende, selfs 'n eenvoudige weerstand en drukknop. Maar dit neem baie kloksiklusse om instruksies uit te voer. Die instruksie om na die uitset te skryf, neem op sigself 12 siklusse. U wil waarskynlik nie meer as 100 keer 'n knoppie daar sit om net een lus van die kode te kry nie (werklike getalle is aan die einde van die instruksies). Daarvoor is die NE555 bedoel. Dit skakel vir u om, en dit doen dit teen 'n (relatief) vinnige koers.

Voordat u begin met die bedrading van iets, kan u eers besluit hoe u u komponente op die bord wil lê. My horlosiekring is 'n bietjie aan die onderkant van die bord geplaas, sodat dit nie uit die weg kan kom van ander komponente nie. Ons neem aan dat u weet hoe u 'n basiese klok met die timer kan maak. As u dit nie doen nie, wil u '555 Astable' opsoek en 'n handleiding volg. Gebruik die 1K -weerstand om tussen die 5V -spoor en pen 7 van die timer (R1) en die 10K tussen pen 7 en pen 2 (R2) te gaan. Maak seker dat u die resetpen, pen 4, aan die 5V -reling vasmaak sodat die timer kan funksioneer. Ek het 'n LED op die uitset van my geplaas, sodat ek kon verifieer dat die klok werk, maar dit is nie nodig nie.

'N Ander opsie met die NE555 is om dit as 'n NOT -hek op te stel en 'n 1K -weerstand te gebruik om die uitset aan die ingang vas te maak. Dit word gewoonlik aanbeveel om 3 timers te gebruik om dit te doen, maar ek het gevind dat net 1 goed moet werk. Weet net dat as u dit doen, dit teen 'n baie hoë snelheid sal ossilleer, en dit sal baie moeilik, selfs onmoontlik, wees om te sien dat die uitvoer -LED's flikker. Hierdie opstelling word 'n "ring ossillator" genoem.

Let daarop dat ons nog nie die horlosie aan die verwerker koppel nie. Ons maak dit eenvoudig gereed. Let ook op die logika -chip net bokant die horlosie in die prent. Dit is later bygevoeg en dit was die enigste semi-redelike plek om dit te plaas. Dit word gebruik vir die keuse van RAM/ROM. Hierdie instruksies ignoreer RAM, sodat u nie hierdie chip op u bord sal hê nie.

Nou dra ons die reset -kring. Eerstens moet u 'n plek op u bord vind. Ek het reg langs die klok gekies. Voeg u knoppie by die bord. Gebruik 'n 1K -weerstand om die een kant van die knoppie aan die 5V -reling vas te maak. Ons RESET -penne is aktief laag, wat beteken dat ons dit hoog moet hou. Dit is waarvoor die weerstand bedoel is. Hierdie aansluiting is ook waar die reset -penne aansluit. Die ander kant van die knoppie gaan reguit grond toe. As u weer wil aanskakel, voeg die 10uF-kondensator ook by hierdie aansluiting. Dit sal die spanning op die reset-penne lank genoeg laag hou om die reset-stroombane binne die verwerker en flip-flop te aktiveer.

Stap 3: Bedrading van die Z80

Nou kom ons by die nitty-gritty. Ons sal die dier wat die Z80 is, bedraad. Op my bord sit ek die Z80 bo op dieselfde bord as die reset -kring. Soos voorheen genoem, dra die kragrails eers aan. 5V gaan na pen 11 aan die linkerkant en die grond is een pen onder, maar aan die regterkant. U het moontlik ook die vreemde breedte van die chip opgemerk. Dit sal veroorsaak dat u 3 oop verbindings aan die een kant op die broodbord en 2 aan die ander kant het. Dit maak dit net minder gerieflik om bykomende goed aan te trek as u dit wil doen.

Die volgende pennommers-ek neem aan dat u weet hoe om penne op 'n IC te tel-is ongebruikte insette en moet aan die 5V-rail vasgemaak word: 16, 17, 24, 25.

Onthou ons ons horlosie? Die uitgang daarvan gaan na pen 6 op die z80. Die reset -kring skakel met pen 26. Sonder om die ander komponente op die bord te hê, is dit so ver as wat ek u kan kry met die bedrading van die z80 self. Meer bedrading daaraan sal in latere stappe gedoen word.

Omdat ek die kring reeds laat bou het, voordat ek dit eers oorweeg het om dit op te skryf, sal ek die prentjie tot die volgende stap kan aanhou.

Stap 4: Bedrading van die ROM

Bedrading van die ROM
Bedrading van die ROM

OPMERKING: as u nog steeds geprogrammeer wil hê, moet u dit ophou om dit werklik op die bord te plaas (meer hieroor later).

Vir die ROM het ek dit langs die Z80 aan die regterkant geplaas en dit ook met 'n pen op die broodbord verplaas. Dit het my in staat gestel om die adresbus direk oor te skakel, maar later meer hieroor. Die AT28C64B is 'n EEPROM, wat beteken dat dit verskeie kere geprogrammeer kan word deur 'n paar penne aan en uit te skakel. Ons wil nie hê ons EEPROM moet homself per ongeluk herprogrammeer as dit in die kring is nie. Dus, sodra u u relings aangeskakel het, maak u pen 27 (/WE) aan die 5V -spoor vas om die skryffunksie heeltemal uit te skakel.

My program is so klein, ek het net die onderste 5 adreslyne (A0-A4) nodig gehad, maar ek het in elk geval A5, A6 en A7 bedraad, sodat ek groter programme kan skryf sonder ekstra werk. Die bykomende adreslyne (A8-A12) word direk aan die grond vasgemaak om te voorkom dat ongewenste toegang tot die hoër adresse dryf. As die ongebruikte adresinvoer aan die grond gekoppel is en die skryfbeheer aan 5V gekoppel is, is die bedrading van die res redelik eenvoudig. Soek A0 op die verwerker en dra dit na A0 op die ROM. Soek dan A1 op die verwerker en dra dit na A1 op die ROM. Doen dit totdat u al die adresse saamgebind het. In die prentjie word my adresbus na die ROM in blou bedrading gedoen. Die adresbus wat na die RAM gaan, word in rooi bedrading gedoen. Hierdie drade is almal vooraf gesny en gestroop, aangesien dit in 'n broodbordbedradingskit gekom het en perfek was vir hierdie bedrading.

Nadat u die adresse bedraad het (dit word die adresbus genoem), doen u presies dieselfde vir die penne met die etiket D0, dan D1, D2, ens. Doen dit vir al die datapennetjies (D0 - D7) en u het u databus bedraad. Ons is amper klaar met die bedrading van die ROM. Vind die ROM's /CE (chip enable) pen en dra dit na die verwerkers pen 19, /MREQ (geheueversoek) en vind dan die ROM's /OE (output enable) en dra dit na verwerker pen 21, /RD (lees). Ons is nou klaar. Al hierdie dinge word met springdrade gedoen, want dit moet na die ander kant van die verwerker gaan en 'n broodbord bied nie genoeg ruimte om netjiese bedrading te gebruik nie.

Stap 5: Bedrading van die uitset

Bedrading van die uitset
Bedrading van die uitset
Bedrading van die uitset
Bedrading van die uitset

Omdat dit onbevolk was, het ek die bord aan die linkerkant van die Z80 gekies vir die uitset. Plaas die flip-flop daar en verbind hulle met die relings. Pin 1, /MR (reset) kan direk aan die reset -pen van die verwerker gekoppel word, maar u kan dit aan die 5V -spoor vasmaak. As u dit doen, sal dit slegs rommeldata wys tot die eerste skrywe. Let op hoe die chip 'n klokinvoer op pen 11 het. Hierdie insette is vreemd omdat dit geaktiveer word wanneer die pen hoog word. Let ook daarop dat hierdie pen NIE dieselfde horlosie is as die verwerker nie. Hierdie klok sluit die gegewens op die databus vas.

Onthou u hoe ons D0 - D7 op die ROM met dieselfde penne op die verwerker verbind het? Doen presies dieselfde vir hierdie chip. Sy D0 gaan na D0 op die databus en so aan. Die penne wat met 'n "Q" begin, is uitsette. Voordat ons dit bedraad, moet ons meer skyfies byvoeg. Ek het die vier NOR -hekke gebruik, want ek het 'n buis daarvan en ek het dit alreeds nodig gehad, maar enige chip sal werk as jy dit korrek bedraad. Ek kon een ingang op alle hekke aan die grond vasgemaak het en die ander insette as insette gebruik het, maar ek het gekies om beide insette vir eenvoud te verbind.

Ek het die skyfies onder die flip-flop geplaas om dit makliker te maak om direk sonder springers te dra, maar ek het op hierdie stadium te min draad gehad, sodat dit uiteindelik nie saak gemaak het nie. Die Q0, Q1 ….. Q7 op die flip-flop gaan na die insette van die individuele hekke. Met 4 hekke in elke pakket/chip, het ek 2 pakkies nodig gehad en alle hekke gebruik. As u 'n weergawe van die flip-flop vind wat die LED's kan dryf sonder om so gebuffer te hoef te word, is hierdie twee skyfies nie nodig nie. As u hekke as buffer gebruik wat nie omgekeerde uitsette het nie (EN/OF/XOR), kan u die LED's bedraad soos u sou verwag. As u dieselfde dele as ek gebruik en/of die uitsette is omgekeerd, moet die LED's bedraad word soos hieronder beskryf. Die eerste beeld toon die IC -gedeelte van die uitset.

Gebruik die 330 Ohm -weerstande om die LED's positief (anode) aan die 5V -spoor te koppel en die negatiewe (katode) aan die uitset van die hekke te koppel. U kan in die tweede prent sien dat ek twee weerstandbusse gebruik het, elk met slegs vyf interne weerstande. As die LED's so bedraad word, sal hulle brand as die uitset af is. Ons doen dit omdat die uitset af is wanneer die insette aan is. Maak absoluut seker dat u tred hou met watter poorte u uitsette van die flip-flop-beheer is. Tensy u LED's verstrooi is of die volgorde daarvan betekenisloos is, kan dit later verwarring veroorsaak as u uself afvra waarom die uitset verkeerd is.

Stap 6: Bedrading van die invoer

Bedrading van die inset
Bedrading van die inset

Neem die 74HC374 flip-flop en plaas dit êrens. Myne was iewers onder die Z80 onderaan die bord. Onthou jy die vorige keer toe ons D0 met D0 en D1 met D1 en so aan gekoppel het? Hierdie keer verbind ons Q0 met D0 en Q1 met D1 en so aan. Gelukkig hoef ons hierdie keer geen bufferskyfies by te voeg nie, haha. In plaas daarvan gaan ons 'n 10K Ohm aan elke "D" -pen (D0-D7) koppel, en dan 'n knoppie aan dieselfde penne en die 5V-spoor. Of u kan 'n weerstandsbus gebruik en u onderdele baie verminder. 'N Matriks van 3 x 4 knoppies (sonder 'n gematrikuleerde uitset !!) sal ook help. Die prent toon die geheel van die ingangskring saam met die gomlogika (die volgende gedeelte).

Stap 7: Plak logika

Ons het nog 'n laaste ding om oor te dra. Dit word 'gomlogika' genoem, omdat dit gebruik word om beheerseine te dekodeer om alles te laat werk; dit is wat die kring bymekaar hou. As die verwerker data na die uitvoer wil skryf, word beide /IORQ en /WR (20 en 22 onderskeidelik) laag en word die data wat gestuur word op die databus bevestig. Die klokpen op beide flip-flops is aktief hoog, wat beteken dat die data geblokkeer word wanneer die pen 'n hoë sein ontvang. Ons gebruik 'n NOR -hek en draad /IORQ na die een ingang van die hek en /WR na die ander ingang. As die een hoog is, wat beteken dat die IO-kringe nie gekies word of 'n skryfbewerking nie uitgevoer word nie, bly die uitset wat die horlosie van die flip-flop voed. As beide insette laag is, en slegs wanneer, word die uitset hoog en die flip-flop sluit die data vas.

Nou moet ons die invoer-flip-flop bedraad. Ons kan die klokpen op dieselfde manier as die vorige dra, maar met behulp van /IORQ en /RD. Maar anders as die ander flip-flop, het ons ook 'n /OE-pen wat slegs laag moet word as /IORQ en /RD laag is. Ons kan 'n OF -hek gebruik. Of ons kan net die sein wat ons reeds vir die klok het, vat en dit omkeer met een van die twee omkeerhekke wat ons reeds beskikbaar het. Ten tyde van die verklaring van hierdie instruksies, het ek nie 'n OF -hek beskikbaar nie, en ek het laasgenoemde opsie gebruik. Deur laasgenoemde opsie te gebruik, hoef ek in elk geval geen ekstra dele by te voeg nie.

Stap 8: Programmering

As u bedrading korrek is en my verduideliking duidelik is, hoef u net die ROM te programmeer. Daar is 'n paar maniere om dit te doen. U kan die maklike pad neem en 'n nuwe chip uit Digikey bestel. As u die onderdeel bestel, het u die opsie om 'n HEX -lêer op te laai en hulle sal dit programmeer voordat hulle dit stuur. Gebruik die HEX- of OBJ -lêers wat by hierdie instruksies aangeheg is, en wag totdat dit in die pos kom. Opsie 2 is om 'n programmeerder te bou met 'n Arduino of iets. Ek het die roete probeer, en dit kon nie sekere data korrek kopieer nie, en dit het my weke geneem om dit uit te vind. Uiteindelik het ek opsie 3 gedoen, naamlik om dit met die hand te programmeer en skakelaars om die adres- en datalyne te beheer.

Sodra dit direk omgeskakel is na die OP -kode van die verwerker, rus hierdie hele program in slegs 17 grepe adresruimte, so die programmering met die hand was nie te aaklig nie. Die program laai die waarde van 00 in register B vir algemene doeleindes. Register B word gebruik om 'n resultaat van die vorige optelling te stoor. Aangesien die A -register waar wiskunde gebeur, sal ons dit nie gebruik om data te stoor nie.

As ons van die A -register praat, voer ons 'n IN -opdrag uit, wat die invoer lees, en stoor die geleesde data in A. Dan voeg ons die inhoud van register B by en lewer die resultaat.

Daarna word register A in register B. gekopieer. Dan doen ons 'n reeks springopdragte. Omdat al die spronge na die onderste byte van die adreslyne wys, en omdat die boonste byte van die springinstruksie in die tweede argument gegee word en '00' is, kan ons elke sprong dwing om gevolg te word deur 'n NOP. Ons doen dit om tyd te gee tussen die vertoon van die uitset en die leesinvoer om toevallige invoer te voorkom. Elke sprong gebruik tien kloksiklusse en elke NOP gebruik vier. As die lus te lank neem na u smaak, kan u die kloksnelheid verhoog, of u kan dit herprogrammeer om een sprong minder te gebruik.

Stap 9: Toets

As u alles korrek bedraad het en u ROM korrek geprogrammeer is, is daar nog 'n laaste stap: koppel dit aan en kyk of dit werk. Druk 'n knoppie en wag 'n paar sekondes. Dit neem 81 kloksiklusse voordat die program sy eerste lus bereik, en elke lus neem 74 kloksiklusse.

As dit nie werk nie, kyk of daar kortbroek en penne wat nie verbind is nie (oopmaak) en ander bedradingskwessies. As u van die herinstelling af gekies het, moet u handmatig herstel voordat die verwerker iets doen. U kan ook LED's aan die adresbus koppel om te sien of hulle optree. Ek het self probleme daarmee gehad, so ek het dit eerder direk by die databus geplaas. Dit het my in staat gestel om te sien wat tussen die verwerker en ROM gekommunikeer word, sonder om bekommerd te wees oor die korrekte lees van die ROM, wat tydsdiagramme sou vereis en ek wou dit nie graag betrek nie. Dit blyk 'n goeie keuse te wees, want ek het uiteindelik die problematiese OP -kodes gevind wat verkeerd gestoor is.

Aanbeveel: