Taula de continguts:

Construir un ordinador amb coneixement bàsic d’electrònica: 9 passos (amb imatges)
Construir un ordinador amb coneixement bàsic d’electrònica: 9 passos (amb imatges)

Vídeo: Construir un ordinador amb coneixement bàsic d’electrònica: 9 passos (amb imatges)

Vídeo: Construir un ordinador amb coneixement bàsic d’electrònica: 9 passos (amb imatges)
Vídeo: «Звездный путь» продолжается E08 «Все еще идет по тени» 2024, De novembre
Anonim
Construir un ordinador amb coneixement bàsic d’electrònica
Construir un ordinador amb coneixement bàsic d’electrònica

Alguna vegada has volgut fer veure que eres molt intel·ligent i construir el teu propi ordinador des de zero? No sabeu res del que es necessita per fer un ordinador mínim? Bé, és fàcil si en coneixeu prou sobre electrònica per llançar correctament alguns circuits integrats. Aquesta instrucció suposarà que és bo en aquesta part, a més d'algunes coses més. I si no, encara no hauria de ser massa difícil seguir-lo si sabeu com es fa el prototipatge i el breadboarding. El propòsit d'aquest instructiu és aconseguir un "ordinador" que funcioni sense saber molt sobre com funcionen. Vaig a tractar el cablejat i els fonaments bàsics de la programació, a més d’oferir-vos un programa molt curt. Comencem doncs.

Pas 1: parts i coses

Peces i coses
Peces i coses
Peces i coses
Peces i coses

Un "ordinador" requereix: alimentació, entrada, processament, memòria i sortida. Tècnicament tindrem totes aquestes coses. Vaig a tractar aquestes coses en aquest ordre.

Per obtenir energia, necessitareu una font de 5 volts (aquí etiquetada com a 5 V). Es recomana que sigui una font regulada perquè no fregiu parts accidentalment al circuit. La nostra entrada seran botons. El processament s’explica per si mateix; fem servir un processador. La memòria només constarà de ROM. Els registres interns de propòsit general del processador seran suficients per utilitzar-los com a memòria RAM. La sortida serà LED.

1 regulador LM7805C - 5V

1 ZYLOG Z80: processador

1 AT28C64B - EEPROM

1 74LS273 - Xanclet Octal D

1 74HC374E - Xanclet Octal D

3 CD4001BE - Quad NOR Gate

1 NE555 - Generador de rellotge

2 resistències de 1K Ohm

1 resistència de 10K Ohm

1 xarxa de resistències de 10 k ohmis; 8 autobusos O 8 resistències addicionals de 10K

1 condensador 1uF

1 condensador 100uF

1 polsador

1 matriu de botons 3x4 O 8 botons de pressió addicionals

8 LED: l'elecció del color no importa

8 Xarxes de resistències o resistències de 330 Ohm

1 Tauler de pa realment gran o diversos petits

Molts i molts fils

Al meu esquema tinc instal·lat un pal de SRAM. Ni tan sols us haureu de preocupar. Només l’he afegit a l’esquema per reflectir amb precisió el meu circuit real i l’he afegit al circuit per a un ús futur. També s’afegeix a l’esquema una porta quad OR (74LS36). Les entrades de les dues portes no utilitzades estan lligades a VCC i les seves sortides flotants (no dibuixades). Tampoc no es dibuixen ni es mostren a la llista anterior dos condensadors del circuit de potència.

Estic alimentant 12V regulats al regulador de 5V per alimentar tota la placa de control. Fa una mica de calor, així que vaig posar un dissipador de calor per refredar-lo. Si utilitzeu menys de 12V per alimentar el regulador (utilitzeu almenys 7V), hauria de funcionar més fresc.

El Z80 és on passa la màgia. Pren instruccions emmagatzemades a la ROM i les executa. L’EEPROM emmagatzema el nostre programa perquè el processador s’executi.

El xanclet octal que és el nostre dispositiu de sortida que connecta les dades del bus de dades a la seva pròpia sortida. Això ens permet canviar el que hi ha al bus, que és un pas molt important que es fa diverses vegades per instrucció, sense canviar el que veu l'usuari / visor. El xanclet no pot conduir el corrent necessari per encendre els LED de sortida, de manera que s’alimenten en dos dels xips de porta quad NOR que actuen com a memòria intermèdia de les 8 línies de dades per accionar els LED. Com que la sortida de les portes està invertida, també hem de connectar els LED per invertir-los, però hi arribarem quan arribem a això. L’altre xip NOR s’utilitza per a la descodificació lògica, però només s’utilitzen tres portes.

El xanclet octal utilitzat com a entrada és essencialment el mateix. Les xancletes de sortida mantenen la seva sortida alta o baixa, de manera que no es poden utilitzar per conduir el bus; conteniria dades al bus. El xanclet utilitzat per a l’entrada substitueix el pin / RESET per / EN, que desconnecta més o menys les sortides del xip (i del), de manera que no conté dades (sortides triestatals).

Pas 2: Cablatge dels circuits d’alimentació, rellotge i reinici

Cablatge dels circuits d’alimentació, rellotge i reinici
Cablatge dels circuits d’alimentació, rellotge i reinici
Cablatge dels circuits d’alimentació, rellotge i reinici
Cablatge dels circuits d’alimentació, rellotge i reinici
Cablatge dels circuits d’alimentació, rellotge i reinici
Cablatge dels circuits d’alimentació, rellotge i reinici

NOTA: Per a totes les parts, connecteu primer els rails elèctrics. De totes les coses que s’ha d’oblidar de connectar, els xips seran molt menys propensos a sobreviure a les connexions d’alimentació oblidades.

El circuit de potència és el circuit més senzill de cablejar, seguit del circuit de reinici i de rellotge, respectivament. A la imatge, l’entrada de 12V es troba a la tira d’alimentació de l’extrem dret. El fil marró, que n’amaga un de groc a sota, alimenta el 12V al regulador. La sortida del regulador alimenta totes les altres tires d’alimentació de la placa de control i totes les tires d’alimentació comparteixen un terreny comú perquè és així com funcionen els electrònics.

El processador requereix un circuit de rellotge per funcionar. Sense ella, es quedarà allà en el seu estat inicialitzat i no farà res. El rellotge fa funcionar els registres de desplaçament interns dels processadors de manera que pot generar els senyals per fer coses. Qualsevol entrada de rellotge farà, fins i tot una simple resistència i un polsador. Però calen molts cicles de rellotge per executar instruccions. La instrucció per escriure a la sortida triga 12 cicles en si mateixa. Probablement no vulgueu seure allà i prémer un botó més de 100 vegades per obtenir només un bucle del codi (els números reals es troben al final de la instrucció). Per això serveix el NE555. Fa el canvi per a vosaltres i ho fa a un ritme (relativament) ràpid.

Abans de començar a connectar qualsevol cosa, potser voldreu seguir endavant i esbrinar com voleu que els vostres components estiguin disposats al tauler. El meu circuit de rellotge s’acaba de posar a la part inferior del tauler, de manera que quedaria fora del camí d’altres components. Suposarem que sabeu fer un rellotge bàsic amb el temporitzador. Si no ho feu, voldreu buscar "555 Astable" i seguir un tutorial. Utilitzeu la resistència 1K per anar entre el carril de 5V i el pin 7 del temporitzador (R1) i els 10K entre el pin 7 i el pin 2 (R2). Assegureu-vos de lligar el pin de restabliment, el pin 4, al carril de 5V perquè el temporitzador pugui funcionar. Vaig posar un LED a la sortida meva per poder comprovar que el rellotge funcionava, però no és necessari.

Una altra opció amb el NE555 és configurar-lo com a porta NO i utilitzar una resistència de 1 K per lligar la sortida de nou a l'entrada. Normalment es recomana utilitzar 3 temporitzadors per fer-ho, però he trobat que només 1 hauria de funcionar bé. Només heu de saber que, si feu això, oscil·larà a una velocitat molt alta i serà molt difícil, fins i tot impossible, dir que els LED de sortida parpellegen. Aquesta configuració s'anomena "oscil·lador d'anell".

Tingueu en compte que encara no connectem el rellotge al processador. Simplement ho estem preparant. Tingueu en compte també el xip lògic situat just a sobre del rellotge de la imatge. Es va afegir molt més tard i aquest va ser l’únic lloc semirazonable que quedava per col·locar-lo. S'utilitza per a la selecció de RAM / ROM. Aquesta instrucció ignora la memòria RAM, de manera que no tindreu aquest xip al tauler.

Ara connectem el circuit de restabliment. Primer heu de trobar un lloc al vostre tauler. Vaig triar just al costat del rellotge. Afegiu el botó al tauler. Utilitzeu una resistència de 1 K per lligar un costat del botó al carril de 5 V. Els nostres pins RESET estan actius de manera baixa, és a dir, hem de mantenir-los alts. Per a això serveix la resistència. Aquesta unió també és on es connecten els pins de restabliment. L'altre costat del botó va directament a terra. Si voleu restablir l’engegada, afegiu també el condensador 10uF a aquesta unió. Mantindrà la tensió dels pins de restabliment prou baixa com per activar el circuit de restabliment dins del processador i el xanclet.

Pas 3: Cablatge del Z80

Ara arribem al grapat. Cablejarem la bèstia que és la Z80. Al meu tauler, he posat el Z80 a la part superior de la mateixa secció del tauler que el circuit de reinici. Com s'ha dit anteriorment, connecteu primer els cables de corrent. 5V va al pin 11 de l’esquerra i el terra és un pin cap avall però a la dreta. És possible que també hagueu notat l'amplària estranya del xip. Farà que tingueu 3 connectors oberts per un costat a la taula de treball i 2 per l’altre. Només fa que sigui menys convenient connectar coses addicionals si decidiu fer-ho.

Els següents números de pins (suposo que sabeu comptar els pins en un IC) són entrades no utilitzades i han d’estar lligades al carril de 5V: 16, 17, 24, 25.

Recordeu el nostre rellotge? La seva sortida arriba al pin 6 del z80. El circuit de restabliment es connecta al pin 26. Sense tenir els altres components a la placa, això és fins on puc aconseguir-vos amb el cablejat del propi z80. Es farà més cablejat en els passos posteriors.

Com que ja havia tingut el circuit construït fins i tot abans de plantejar-me escriure això instructivament, mantindré la imatge fins al següent pas.

Pas 4: Connexió de la ROM

Cablatge de la ROM
Cablatge de la ROM

NOTA: és possible que vulgueu mantenir-vos en la posició real al tauler si encara cal programar-lo (més informació més endavant).

Per a la ROM, la vaig col·locar al costat de la Z80 a la dreta i també la vaig desplaçar un passador cap avall a la taula de suport. Això em va permetre connectar directament el bus d’adreces, però més endavant. L’AT28C64B és una EEPROM, és a dir, es pot programar diverses vegades apagant i encenent alguns pins. No volem que la nostra EEPROM es reprogrami accidentalment quan es troba al circuit. Per tant, un cop tingueu els cables de connexió connectats, connecteu el passador 27 (/ WE) al carril de 5V per desactivar la funció d’escriptura.

El meu programa és tan petit, que només necessitava les 5 línies d’adreces inferiors (A0-A4) connectades, però he connectat A5, A6 i A7 de totes maneres per poder escriure programes més grans sense treballar més. Les línies d'adreces addicionals (A8-A12) estan lligades directament a terra per evitar l'accés no desitjat a les adreces superiors de les entrades flotants. Amb les entrades d’adreça no utilitzades lligades a terra i el control d’escriptura lligat a 5V, el cablejat de la resta és bastant senzill. Cerqueu A0 al processador i connecteu-lo a A0 a la ROM. A continuació, cerqueu A1 al processador i connecteu-lo a A1 a la ROM. Feu-ho fins que connecteu totes les adreces. A la imatge, el meu bus d’adreces cap a la ROM es fa amb cablejat blau. El bus d’adreces que va a la memòria RAM es fa amb cablejat vermell. Aquests cables es van tallar i es van retirar ja que venien en un kit de cablejat de taulers de panell i eren perfectes per a aquest cablejat.

Després d’aconseguir les adreces per cable (s’anomena bus d’adreces), feu exactament el mateix per als pins etiquetats com D0, després D1, D2, etc. Feu això per a tots els pins de dades (D0 - D7) i teniu cable de bus de dades. Quasi hem acabat de connectar la ROM. Cerqueu el pin ROM / CE (xip enable) i connecteu-lo al pin 19 del processador / MREQ (sol·licitud de memòria) i, a continuació, cerqueu el ROM / OE (activació de sortida) i connecteu-lo al pin 21 del processador / RD (llegit). Ara hem acabat. Tot això es fa amb cables de pont ja que han d’anar a l’altre costat del processador i una placa no ofereix prou espai per fer servir un cablejat així.

Pas 5: Cablatge de la sortida

Cablatge de la sortida
Cablatge de la sortida
Cablatge de la sortida
Cablatge de la sortida

Com que no estava poblat, vaig triar la secció del tauler a l'esquerra del Z80 per a la sortida. Col·loqueu el xanclet allà i connecteu-los als rails elèctrics. El pin 1, / MR (reset) es pot connectar directament al pin de reset del processador, però el podeu deixar lligat al carril de 5 V. Si feu això, només es mostraran dades brossa fins a la primera escriptura. Fixeu-vos com el xip té una entrada de rellotge al pin 11. Aquesta entrada és estranya perquè s’activa quan el pin puja. Tingueu en compte també que aquest pin NO és el mateix rellotge que condueix el processador. Aquest rellotge bloqueja les dades afirmades al bus de dades.

Recordeu com hem connectat D0 - D7 a la ROM als mateixos pins del processador? Feu exactament el mateix per a aquest xip. El seu D0 va a D0 al bus de dades, etc. Els pins que comencen amb una "Q" són sortides. Abans de connectar-los, hem d’afegir més xips. He fet servir les portes quad NOR perquè en tinc un tub i ja en necessitava, però sobre qualsevol xip funcionarà si el connecteu correctament. Podria haver lligat una entrada a totes les portes a terra i utilitzar les altres entrades com, bé, entrades, però vaig optar per connectar ambdues entrades per simplicitat.

Vaig col·locar els xips a sota del xanclet per facilitar el cablejat directament sense ponts, però en aquest punt em quedava sense cables, de manera que al final no importava. El Q0, Q1 ….. Q7 del xanclet va a les entrades de les portes individuals. Amb 4 portes a cada paquet / xip, necessitava 2 paquets i feia servir totes les portes. Si trobeu una versió del xanclet que pot accionar els LED sense necessitat de memòria intermèdia així, no calen aquests dos xips. Si utilitzeu portes com a memòria intermèdia que no tenen sortides invertides (AND / OR / XOR), podreu connectar els LEDs tal com esperàveu. Si feu servir les mateixes parts que jo i / o les sortides estan invertides, els LED s’han de connectar com es descriu a continuació. La primera imatge mostra la part IC de la sortida.

Utilitzeu les resistències de 330 Ohm per lligar els LEDs positius (ànode) al carril de 5V i connectar el negatiu (càtode) a la sortida de les portes. Podeu veure a la segona imatge que he utilitzat dos busos de resistències, cadascun amb només cinc resistències internes. Si es connecten els LEDs així, s’il·luminaran quan la sortida estigui apagada. Ho fem perquè la sortida està desactivada quan l’entrada està activada. Assegureu-vos absolutament de fer un seguiment de les portes de les vostres sortides des del control de xancles. A menys que els vostres LED estiguin dispersos o que el seu ordre no tingui sentit, perdre-ne la pista pot provocar confusió més endavant quan us pregunteu per què la sortida és incorrecta.

Pas 6: Cablatge de l'entrada

Cablatge de l'entrada
Cablatge de l'entrada

Agafeu el xanclet 74HC374 i col·loqueu-lo en algun lloc. El meu era a sota de la Z80 cap a la part inferior del tauler. Recordeu l'última vegada que vam connectar D0 a D0 i D1 a D1, etc. Aquesta vegada connectem Q0 a D0 i Q1 a D1, etc. Afortunadament, no hem d’afegir cap xip de memòria intermèdia aquesta vegada, jaja. En lloc d'això, connectarem un 10K Ohm a cada pin "D" (D0-D7) i a terra i després un botó als mateixos pins i al carril de 5V. O podeu utilitzar un bus de resistències i reduir molt el recompte de peces. Una matriu de botons 3x4 (sense sortida matricial !!) també us ajudarà. La imatge mostra la totalitat del circuit d'entrada juntament amb la lògica de cola (aquesta part és la següent).

Pas 7: cola lògica

Tenim una última cosa per connectar. S'anomena "lògica de cola" perquè s'utilitza per descodificar senyals de control perquè tot funcioni; és el que manté el circuit unit. Quan el processador vol escriure dades a la sortida, / IORQ i / WR (20 i 22 respectivament) es redueixen i les dades que s’envien s’afirmen al bus de dades. El passador de rellotge de les dues xancletes està actiu, és a dir, les dades es bloquegen quan el pin rep un senyal alt. Utilitzem una porta NOR i un cable / IORQ a una entrada de la porta i / WR a l’altra entrada. Quan qualsevol és alt, és a dir, que no s'estan seleccionant els circuits IO o no es realitza una operació d'escriptura, la sortida que alimenta el rellotge del xanclet continua sent baixa. Quan les dues entrades són baixes i només quan la sortida augmenta i el xanclet bloqueja les dades.

Ara hem de connectar el xanclet d’entrada. Podem connectar el pin del rellotge de la mateixa manera que l’anterior, però utilitzant / IORQ i / RD. Però, a diferència de l’altre xanclet, també tenim un pin / OE que només s’ha de baixar quan / IORQ i / RD són baixos. Podríem utilitzar una porta OR. O simplement podríem agafar el senyal que ja tenim per al rellotge i invertir-lo amb una de les dues portes inversores que ja tenim disponibles. En el moment d’afirmar aquesta informació instructiva, no tenia una porta d’Or disponible, de manera que vaig fer servir una darrera opció. L’ús d’aquesta última opció significava que no calia afegir cap part addicional de totes maneres.

Pas 8: programació

En cas que el cablejat sigui correcte i la meva explicació estigui clara, només queda programar la ROM. Hi ha algunes maneres d’aconseguir-ho. Podríeu prendre el camí més fàcil i demanar un nou xip a Digikey. Quan demaneu la peça, tindreu l'opció de penjar un fitxer HEX i el programaran abans d'enviar-lo. Utilitzeu els fitxers HEX o OBJ adjunts a aquesta instrucció i espereu que arribi al correu. L'opció 2 és construir un programador amb un Arduino o alguna cosa així. Vaig provar aquesta ruta i no vaig poder copiar certes dades correctament i vaig trigar setmanes a esbrinar-ho. Vaig acabar fent l’opció 3, que és programar-la a mà i fer girar els commutadors per controlar l’adreça i les línies de dades.

Un cop convertit directament al codi OP del processador, tot aquest programa descansa en només 17 bytes d'espai d'adreces, de manera que la programació manual no va ser massa horrible. El programa es carrega al registre d’ús general B el valor de 00. El registre B s’utilitza per emmagatzemar un resultat de l’addició anterior. Com que el registre A és on succeeixen les matemàtiques, no les utilitzarem per emmagatzemar dades.

Parlant del registre A, realitzem una ordre IN, que llegeix l'entrada i emmagatzemem les dades llegides a A. Després afegim el contingut del registre B i en sortim el resultat.

Després, el registre A es copia al registre B. I després fem una sèrie d'ordres de salt. Com que tots els salts apunten al byte inferior de les línies d’adreça i perquè el byte superior de la instrucció de salt es dóna al segon argument i és "00", podem obligar a cada salt a seguir-lo un NOP. Ho fem per donar temps entre mostrar la sortida i llegir l'entrada per evitar l'entrada accidental. Cada salt utilitza deu cicles de rellotge i cada NOP en fa quatre. Si el bucle triga massa al vostre gust, podeu augmentar la velocitat del rellotge o reprogramar-lo per fer un salt menys.

Pas 9: proves

Si heu connectat tot correctament i la vostra ROM està programada correctament, hi ha un darrer pas que cal fer: endollar-lo i veure si funciona. Premeu un botó i espereu uns segons. El programa triga 81 cicles de rellotge perquè el programa assoleixi el seu primer bucle i cada bucle triga 74 cicles de rellotge.

Si no funciona, comproveu si hi ha pantalons curts i pins no oberts (connexions obertes) i altres problemes de cablejat. Si heu desactivat el reinici de l’engegada, haureu de fer un restabliment manual abans que el processador faci res. També podeu connectar LEDs al bus d’adreces per veure si es comporten. Jo mateix tenia problemes amb això, de manera que els vaig enganxar directament al bus de dades. Això em va permetre veure què s’estava comunicant entre el processador i la ROM sense necessitat de preocupar-me si la ROM es llegia correctament, cosa que hauria requerit diagrames de temps i no volia implicar-ho. Resulta que va ser una bona opció perquè finalment vaig detectar els problemàtics codis OP que s’emmagatzemaven incorrectament.

Recomanat: