Turinys:

4 bitų dvejetainis skaičiuotuvas: 11 žingsnių (su paveikslėliais)
4 bitų dvejetainis skaičiuotuvas: 11 žingsnių (su paveikslėliais)

Video: 4 bitų dvejetainis skaičiuotuvas: 11 žingsnių (su paveikslėliais)

Video: 4 bitų dvejetainis skaičiuotuvas: 11 žingsnių (su paveikslėliais)
Video: CS50 2014 - Week 1, continued 2024, Liepa
Anonim
4 bitų dvejetainis skaičiuotuvas
4 bitų dvejetainis skaičiuotuvas
4 bitų dvejetainis skaičiuotuvas
4 bitų dvejetainis skaičiuotuvas
4 bitų dvejetainis skaičiuotuvas
4 bitų dvejetainis skaičiuotuvas
4 bitų dvejetainis skaičiuotuvas
4 bitų dvejetainis skaičiuotuvas

Susidomėjau tuo, kaip kompiuteriai veikia iš esmės. Norėjau suprasti diskrečių komponentų naudojimą ir grandines, būtinas sudėtingesnėms užduotims atlikti. Vienas iš pagrindinių procesoriaus komponentų yra aritmetinis loginis blokas arba ALU, kuris atlieka operacijas su sveikais skaičiais. Norėdami atlikti šią užduotį, kompiuteriai naudoja dvejetainius skaičius ir loginius vartus. Viena iš paprasčiausių atliktų operacijų yra dviejų skaičių sujungimas sumavimo grandinėje. Šis „numberphile“vaizdo įrašas puikiai paaiškina šią sąvoką per „Domino“papildymą. Mattas Parkeris praplečia šią pagrindinę koncepciją ir sukuria „Domino“kompiuterio grandinę, naudodamas 10 000 domino. Viso asmeninio kompiuterio kūrimas iš domino yra absurdas, bet aš vis tiek norėjau suprasti diskrečių komponentų naudojimą šiai pridėjimo užduočiai atlikti. Vaizdo įrašuose loginiai vartai buvo sukurti iš domino, tačiau jie taip pat gali būti pagaminti iš pagrindinių komponentų, būtent tranzistorių ir rezistorių. Šio projekto tikslas buvo panaudoti šiuos atskirus komponentus, norint išmokti ir sukurti savo 4 bitų sumavimo skaičiuoklę.

Mano tikslai, susiję su šiuo projektu, buvo šie: 1) Sužinokite, kaip sukurti ir pagaminti pasirinktinį PCB2) Padarykite, kad dizainas būtų lengvai suvokiamas pridedant dvejetainius skaičius

Daug šio projekto įkvėpimo ir supratimo sėmėsi Simonas Innsas.

Prekės

Aš naudoju „Fritzing“kurdamas schemas, kurdamas ir gamindamas PCB

1 žingsnis: teorija

Teorija
Teorija
Teorija
Teorija
Teorija
Teorija
Teorija
Teorija

Skaičiuoti 10 bazėje yra paprasta, nes yra skirtingas sveikasis skaičius, reiškiantis dviejų sveikųjų skaičių sumą. Paprasčiausias pavyzdys:

1 + 1 = 2

Skaičiuojant 2 arba dvejetainėje bazėje naudojami tik 1 ir 0. Skaičiai 1 ir 0 naudojami skirtingiems sveikiesiems skaičiams ir jų sumoms atvaizduoti. Skaičiavimo 2 bazėje pavyzdys:

1+1 = 0 ir perkeliate 1 į kitą bitą

Sudėjus du bitus (A ir B) kartu, galima gauti 4 skirtingus rezultatus naudojant sumos ir perkėlimo (Cout) rezultatus. Tai parodyta lentelėje.

Loginiai vartai priima įvestis ir generuoja išvestį. Kai kuriuos pagrindinius loginius vartus sudaro vartai NOT, AND ir OR, kurie visi naudojami šiame projekte. Juos sudaro skirtingi tranzistorių ir rezistorių deriniai ir laidai. Pateikiamos kiekvieno vartų schemos.

Grįžtant prie lentelės, šių vartų derinys gali būti naudojamas norint gauti lentelės sumos rezultatus. Šis logikos derinys taip pat žinomas kaip išskirtiniai OR (XOR) vartai. Įvestis turi būti tiksliai 1, kad išvestis būtų 1. Jei abi įvestys yra 1, gaunama išvestis yra 0. Nešančiųjų bitų rezultatus galima pavaizduoti paprastu AND varteliu. Taigi, naudojant XOR su AND vartais, galima pavaizduoti visą lentelę. Tai žinoma kaip pusės papildymo priemonė, o schema parodyta aukščiau.

Norint pridėti didesnių dvejetainių skaičių, nešiklis turi būti įtrauktas kaip įvestis. Tai pasiekiama derinant 2 pusės papildymo grandines, kad būtų sukurtas pilnas papildiklis. Tada visus priedus galima kaskaduoti, kad būtų pridėti didesni dvejetainiai skaičiai. Savo projekte aš kaskadavau 4 pilnus priedus, kurie man leido turėti 4 bitų įvestis. „Full Adder“schema pateikta aukščiau.

Simonas Innsas turi puikų ir nuodugnesnį rašymą apie šią teoriją. Taip pat yra keletas PDF failų, kurie man pasirodė naudingi.

2 žingsnis: grandinės testavimas

Grandinės testavimas
Grandinės testavimas
Grandinės testavimas
Grandinės testavimas

Pirmasis žingsnis supratus, kaip veikia loginiai vartai ir „Full Adder“teorija, yra grandinės sukūrimas. Pradėjau rinkdamas visus reikalingus komponentus: 10K ir 1K rezistorius, NPN tranzistorius, „Breadboard“, „Jumperwires“. Aš sekiau kartu su viso papildymo atspaudu. Procesas buvo nuobodus, bet man pavyko gauti pilną pridėtojo veikimo grandinę. Aš susiejau įvestis aukštas arba žemas ir naudoju multimetrą, kad išbandyčiau išėjimus. Dabar buvau pasiruošęs išversti duonos lentą ir schemą į PCB.

3 žingsnis: viso papildymo PCB projektavimas

Pilno papildymo PCB projektavimas
Pilno papildymo PCB projektavimas
Pilno papildymo PCB projektavimas
Pilno papildymo PCB projektavimas
Pilno papildymo PCB projektavimas
Pilno papildymo PCB projektavimas

Norėdami sukurti PCB, naudoju tik „Fritzing“. Tai buvo mano pirmas kartas kuriant PCB ir ši programa atrodė patogiausia ir intuityviausia, turinti mažiausią mokymosi kreivę. Yra ir kitų puikių programų, tokių kaip „EasyEDA“ir „Eagle“, padedančios sukurti PCB. Naudodami „Fritzing“, galite pradėti kurti virtualioje duonos lentelėje arba schemoje, tada pereiti prie PCB. Šiam projektui panaudojau abu šiuos metodus. Kai būsite pasiruošę gaminti PCB, tai paprasta, kaip spustelėti mygtuką, kad galėtumėte eksportuoti failus ir įkelti juos tiesiai į „Ariter“, bendradarbiaujantį „Fritzing“gamintoją.

Pradėkite nuo schemos skirtuko, kad pradėtumėte procesą. Pirmiausia radau ir įterpiau visus komponentus į darbo vietą. Tada aš nupiešiau visus pėdsakus tarp komponentų. Aš būtinai pridėjau 5V įvestį ir įžeminau į atitinkamas vietas.

Sukurkite PCBI, spustelėję skirtuką PCB. Kai pereinate tiesiai iš schemos, susiduriate su netvarka su visais komponentais, sujungtais „ratsnest“linijomis, remiantis schemoje pėdsakais. Pirmas dalykas, kurį padariau, buvo pakeisti pilkos spalvos PCB dydį iki norimo dydžio ir pridėti montavimo skyles. Aš taip pat pridėjau 16 kaiščių įėjimui ir išėjimui. Tada aš pradėjau logiškai išdėstyti komponentus. Bandžiau sugrupuoti komponentus su jungtimis, kurios buvo arti viena kitos, kad būtų kuo mažiau atstumų. Aš žengiau papildomą žingsnį ir sugrupavau komponentus pagal loginius vartus. Vienas iš mano tikslų buvo vizualizuoti grandinės veikimą ir sekti „bitą“per grandinę. Po to aš panaudojau automatinio maršruto parinkimo funkciją, kuri vyksta automatiškai ir atkreipia optimizuotą sekimą tarp komponentų. Buvau skeptiškai įsitikinęs, kad šis procesas užbaigė visus reikiamus atsekimus, todėl aš dar kartą patikrinau ir perbraižiau atsekimus ten, kur jie turėjo būti. Laimei, automatinio nukreipimo funkcija padarė gana gerą darbą, ir aš turėjau ištaisyti tik keletą pėdsakų. Autorouteris taip pat padarė keletą keistų kampų su pėdsakais, o tai nėra „geriausia praktika“, bet man tai buvo gerai ir viskas vis tiek veikė gerai. Paskutinis dalykas, kurį padariau, buvo pridėti tekstą, kuris būtų atspausdintas kaip šilkografija. Įsitikinau, kad visi komponentai buvo paženklinti. Taip pat importavau pasirinktines loginių vartų nuotraukas, kad pabrėžčiau komponentų grupavimą. Paskutiniame paveikslėlyje aukščiau pavaizduotas šilkografija.

Sukurkite PCBI spustelėję mygtuką „Pagaminti“ekrano apačioje. Tai tiesiogiai nukreipė mane į „Aisler“svetainę, kur galėjau sukurti paskyrą ir įkelti visus savo „Fritzing“failus. Palikau visus numatytuosius nustatymus ir pateikiau užsakymą.

4 žingsnis: kitų PCB projektavimas

Kitų PCB projektavimas
Kitų PCB projektavimas
Kitų PCB projektavimas
Kitų PCB projektavimas
Kitų PCB projektavimas
Kitų PCB projektavimas

Likusios PCB, kurių man reikėjo, buvo įvesties/išvesties sąsajos plokštė ir IC plokštė. Aš sekiau šių lentų 3 žingsnį. Schemų pdf yra paskelbtas žemiau. IC atveju visus ryšius sukūriau naudodamas virtualios duonos lentos funkciją. Aš įtraukiau išsamumo schemą, bet galėjau pereiti tiesiai iš duonos lentos į PCB skirtuką, kuris buvo gana kietas. Prieš įkeliant ir užsisakant „Aisler“, prie šiluminio ekrano I/O sąsajos plokštėje taip pat pridėjau 10 bazę prie 2 bazės konversijų diagramos.

5 žingsnis: komponentų litavimas prie PCB

Litavimo komponentai prie PCB
Litavimo komponentai prie PCB
Litavimo komponentai prie PCB
Litavimo komponentai prie PCB
Litavimo komponentai prie PCB
Litavimo komponentai prie PCB
Litavimo komponentai prie PCB
Litavimo komponentai prie PCB

Visi PCB atvyko ir buvau tikrai sužavėtas kokybe. Aš neturėjau jokios patirties su kitais gamintojais, bet nedvejodamas vėl naudosiu „Aisler“.

Kita užduotis buvo lituoti visus komponentus, o tai buvo sunkus procesas, tačiau mano litavimo įgūdžiai labai pagerėjo. Pradėjau nuo pilnų sumavimo plokščių ir lituodavau komponentus, pradedant nuo tranzistorių, tada 1K rezistorių, tada 10K rezistorių. Aš laikiausi panašaus metodo likusiems komponentams lituoti ant I/O ir IC plokštės. Užbaigus kiekvieną „Full Adder“plokštę, išbandžiau juos tuo pačiu metodu, kaip ir „Full Adder“duonos lentos. Keista, bet visos plokštės veikė teisingai be problemų. Tai reiškė, kad lentos buvo nukreiptos teisingai ir kad jos buvo lituojamos teisingai. Į kitą žingsnį!

6 veiksmas: PCB apdailos krovimas

Baigti sukrauti PCB
Baigti sukrauti PCB
Baigti sukrauti PCB
Baigti sukrauti PCB
Baigti sukrauti PCB
Baigti sukrauti PCB

Kita užduotis buvo lituoti visus antraštės kaiščius prie kiekvienos plokštės. Man taip pat reikėjo pridėti jungiamuosius laidus tarp tinkamo antraštės kaiščio ir „Full Adder“plokščių įėjimų/išėjimų (A, B, Cin, V+, GND, Sum, Cout). Šio žingsnio būtų galima išvengti, jei kiekvienam papildymo grandinės lygiui sukurtumėte skirtingas PCB, tačiau norėjau sumažinti dizainą ir išlaidas, sukurdamas tik vieną pilną papildomą PCB. Dėl to, norint prisijungti prie šių įėjimų/išėjimų, reikia jungiamųjų laidų. Pateikta schema yra tai, kaip aš atlikau šią užduotį ir kokie smeigtukai buvo naudojami kiekvienam „Full Adder“plokščių lygiui. Vaizdai rodo, kaip aš lituodavau kiekvienos plokštės trumpiklius. Pradėjau lituoti laisvus laidus prie tinkamų kaiščių antraštėje. Tada lituosiu antraštę prie PCB. Po to, kai antgalių kaiščiai su jungiamosiomis vielomis buvo lituojami vietoje, laisvus jungiamųjų laidų galus litavau prie tinkamų PCB laidų. Aukščiau esančiame paveikslėlyje pavaizduotas antraštės kaiščių iš arti vaizdas, prie jų prilituoti jungiamieji laidai.

7 žingsnis: grandinių maitinimas

Maitinimas grandinėse
Maitinimas grandinėse
Maitinimas grandinėse
Maitinimas grandinėse
Maitinimas grandinėse
Maitinimas grandinėse

Aš planavau šiam projektui naudoti 12 V nuolatinės srovės statinės lizdo maitinimo šaltinį, todėl suprojektavau įvesties/išvesties sąsajos plokštę, kad būtų galima įvesti nuolatinės srovės statinės lizdą/jungtį. Kadangi aš naudoju tą pačią įvesties/išvesties plokštę ir norėjau naudoti vienintelį maitinimo šaltinį, man reikėjo reguliuoti įtampą iki 5 V, nes tai yra maksimali SN7483A IC įvestis. Norėdami tai padaryti, man reikėjo 5 V reguliatoriaus ir jungiklio, galinčio perjungti nuo 12 V iki 5 V. Aukščiau pateiktoje schemoje parodyta, kaip sujungiau maitinimo grandinę.

8 veiksmas: pagrindo 3D spausdinimas

3D spausdinimas
3D spausdinimas
3D spausdinimas
3D spausdinimas
3D spausdinimas
3D spausdinimas

Dabar, kai visi laidai ir litavimas yra baigti, turėjau išsiaiškinti, kaip visa tai bus laikoma kartu. Aš pasirinkau CADing ir 3D spausdinimą, kuris atitiktų ir parodytų visas šio projekto dalis.

Man reikėjo vietų PCB montuoti varžtais ir atramomis. Sudėtiniai priedai yra vizualiai patraukliausi ir norėjau, kad jie būtų rodomi, kai jie nenaudojami, todėl norėjau vietos, kur būtų galima laikyti IC PCB. Man reikėjo pritaikyti maitinimo grandinę su jungiklio išjungimais ir nuolatinės srovės statinės lizdu/jungtimi. Galiausiai norėjau kažkokio korpuso vitrinos, kad dulkės nesikauptų atvirose PCB, todėl man reikėjo vietos, kurioje būtų galima sėdėti.

3D modeliavimas Aš panaudojau „Fusion360“kuriant pagrindą. Pradėjau nuo PCB matmenų ir tvirtinimo angų tarpo. Po to aš naudoju keletą eskizų ir ekstruzijų, kad nustatyčiau pagrindo aukštį ir dydį su PCB tvirtinimo taškais. Tada aš padariau gaubto ir maitinimo grandinės išpjovas. Tada aš padariau vietą, kur laikyti IC PCB, kai nenaudojamas. Galiausiai pridėjau keletą apdailos briaunos detalių ir nusiunčiau į „Cura“, mano pjaustymo programinę įrangą.

Spausdinimas Pasirinkau juodą PLA giją. Spausdinimas užtruko šiek tiek daugiau nei 6 valandas ir pasirodė puikus. Keista, kad visi matmenys buvo teisingi ir viskas atrodė taip, kaip dera. Aukščiau esančiame paveikslėlyje parodyta spauda po to, kai pridėjau atramas į tvirtinimo angas. Jie puikiai tiko!

9 žingsnis: Surinkimas

Surinkimas
Surinkimas
Surinkimas
Surinkimas
Surinkimas
Surinkimas

Įdėkite atramas. Visas atramas įdėjau į pagrindo tvirtinimo angas.

Įdėkite maitinimo grandinę į pagrindą. Aš viską sujungiau ir ištraukiau visus komponentus per jungiklio angą. Tada įkišau maitinimo lizdą/adapterį į pagrindo galą. Įkišau 5V reguliatorių į jo angą ir galiausiai jungiklį buvo galima įstumti į padėtį.

Sumontuokite įvesties/išvesties plokštę. Įdėjau IC PCB į jo saugyklą ir ant įvesties įvesties/išvesties sąsajos PCB. Aš prisukau PCB, naudodamas 4x M3 varžtus ir šešiakampę tvarkyklę. Galiausiai aš prijungiau DC statinės lizdą prie PCB.

Sujunkite sumavimo PCB. Aš sudėjau pirmąjį papildymą į vietą. Aš įsukau PCB galinę dalį į galines tvirtinimo angas su 2 atramomis. Aš kartojau šį procesą, kol paskutinis papildiklis buvo vietoje ir pritvirtinau dar 2 M3 varžtais.

Padarykite aptvarą. Korpusui naudojau 1/4 colio akrilą. Išmatavau galutinį projekto aukštį ir, atsižvelgdamas į CAD matmenis, išpjoviau 5 gabalus šonams ir viršuje, kad būtų paprasta dėžutė su atviru dugnu. Klijavimui naudoju epoksidą Galiausiai dešinėje pusėje nušlifavau mažą pusės apskritimo išpjovą, kad tilptų jungiklis.

Paruošta skaičiuoti

10 žingsnis: skaičiavimas ir palyginimas

Image
Image
Skaičiavimas ir palyginimas
Skaičiavimas ir palyginimas
Skaičiavimas ir palyginimas
Skaičiavimas ir palyginimas

Prijunkite naują skaičiuotuvą ir pradėkite pridėti! Diagrama nuo 10 iki 2 bazės gali būti naudojama greitai konvertuoti tarp dvejetainių ir sveikųjų skaičių. Man labiau patinka nustatyti įėjimus, tada paspausti „lygus“, pasukant maitinimo jungiklį ir stebint dvejetainį šviesos diodų išėjimą.

Diskrečių komponentų palyginimas su integruotu grandynu. Dabar galite išardyti visus priedus ir prijungti SN7483A IC prie įvesties/išvesties plokštės. (Nepamirškite pasukti jungiklio priešinga kryptimi, kad IC maitintų 5 V, o ne 12 V įtampa). Galite atlikti tuos pačius skaičiavimus ir gauti tuos pačius rezultatus. Gana įspūdinga manyti, kad tiek atskirieji komponentai, tiek pridėtoji ir IC veikia vienodai tik labai skirtingo dydžio skalėje. Nuotraukose rodomi tie patys grandinių įėjimai ir išėjimai.

11 žingsnis: Išvada

Tikiuosi, kad jums patiko šis projektas ir sužinojote tiek, kiek aš. Labai malonu išmokti kažką naujo ir paversti jį unikaliu projektu, kuriam taip pat reikia išmokti naujų įgūdžių, tokių kaip PCB projektavimas/gamyba. Visos schemos yra išvardytos žemiau. Visiems besidomintiems taip pat galiu susieti savo PCB „Gerber“failus, kad galėtumėte pasidaryti savo 4 bitų dvejetainį skaičiuotuvą. Laimingas kūrimas!

Rekomenduojamas: