A nyáron elmentünk Szegedre az Informatikai Történeti Kiállításra. Akkor realizálódott bennem, hogy mekkora fejlődést ért el a technológia 60 év alatt. Elkezdtem gondolkodni, hogy vajon én hogyan állnék neki egy számítógép létrehozásához.

Tranzisztorok

1950-ben járunk. Ekkor már feltalálták a tranzisztorokat. A tranzisztoroknak többféle típusa van, most jelek kapcsolására fogjuk őket használni. A tranzisztornak 3 lába van, az emitter, a bázis és a kollektor. A tranziszotr most úgy képzeljük el, mint egy folyót, amiben van egy zsilip. Ha a zsilipet felhúzzák, akkor tud folyni a víz. Viszont, ha a folyó ki van száradva, vagy nem húzzuk fel a zsilipet, a folyóban nem fog folyni a víz. A tranziszorban a bázis a zsilip, ha arra küldünk egy igaz jelet, akkor az emitter lábon is lesz feszültség (NPN tranzisztor esetén).

Ezeket felhasználva kell megcsinálnunk a számítógép alapegységeit, a logikai kapukat.

Logikai kapuk

1. AND kapu (és)

Kimenete igaz, ha mindkét bemenete igaz.
Ha a felső tranzosztor nem engedi át az áramot, már nem jut el az alsó kollektorához (ki van száradva a folyó), ezért a kimenete 0 lesz.

2. OR kapu (megengedő vagy)

Kimenete igaz, ha legalább az egyik bemenete igaz.
Ezt nem tranzisztorokkal csináltam, hanem diódákkal, amiknek az a tulajdonságuk, hogy csak az egyik irányba engedik át az áramot.

3. NOT kapu (negálás)

Kimenete igaz, ha a bemenete hamis.
Ez már egy kicsit bonyoultabb. Amikor a tranzisztor a bázis lábára kap feszültséget, akkor a átengedi az áramot a kollektortól a földelés felé, így az nem a kimenet felé fog menni.

Ezekből már össze lehet rakni a bonyolultabb kapukat, mint például az XOR (kizáró vagy), NAND (negált és), stb… Bővebben: https://www.electronicshub.org/introduction-to-logic-gates/

 

Összeadás

Most egy kettes számrendszerbeli számológépet fogunk készíteni. A kettes számrendszerben való számolás hasonló a 10-es számrendszerbelihez, viszont itt az egyes számjegyek csak 0-k és 1-ek lehetnek, tehát nem 10 után kell maradékot továbbvinni, hanem 2 után.

Összeadás tizes számrendszerben
Összeadás kettes számrendszerben

Tulajdonképpen mindig 3 számot kell összeadnunk és két kimenet lesz. Egy a maradék és egy az eredmény bit. Meg kell tervezni egy olyan összeadómodult, aminek ez az igazságtáblázata:

Az összeadás igazságtáblája. (C_in = előző maradék; C_out = maradék)

Ezeket a modulokat így kapcsolhatnánk össze:

Az összeadó áramkör megtervezése

Az igazságtáblát nézegetve arra jöhetünk rá, hogy az eredmény bit akkor lesz 1, ha a 3 input közül az összes igaz, vagy pontosan 1db igaz. Ehhez szükságünk lesz két XOR kapura. Egy XOR kapunak a kimenete akkor lesz 1, ha bemenetei közül pontosan 1 igaz. Ha kettő XOR kaput összekapcsolunk, akkor viszont már az is igazat fog eredményezni, ha 3 igazat adunk meg bemenetül:

A maradék bit akkor lesz 1, ha a bemenetek közül legalább 2 igaz. Ezt úgy oldhatjuk meg, hogy megnézzük az összes párost, hogy mindkettő igaz-e, és ha van ilyen, akkor a kimenet igaz lesz (tehát OR kapukkal kell összekapcsolni):

A neten találtam ennél egy kicsit optimalizáltabb kapcsolást, ami kevesebb alkatrészt igényelt:

A nyomtatott áramkör megtervezése

Úgy döntöttem, hogy nem tranzisztorokból csinálom, hanem úgynevezett IC-kből, integrált áramkörökből, hogy ne legyen mégse 1m2-es áramkört tervezni. A 7408-as IC-be 4db AND kapu van építve, a 7432-esbe 4db OR kapu, és a 7486-osba pedig 4db XOR kapu:

A nyomtatott áramkört az Eagle nevű programban terveztem, majd készítettem belőle 3 példányt számjegy összeadására. A modulok kimenetét egy 7-szegmenses kijelzőre íratom ki, ami kettes számrendszerben várja a számot 4 lábán. A nyákterveket innen tudjátok letölteni.

Köszönöm, hogy elolvastátok ezt a bejegyzést, ha kérdésetek van, írjátok meg kommentben! Jó építgetést!

Végezetül pedig itt van néhány kép az elkészült modulokról: