Indholdsfortegnelse:

4-bit binær lommeregner: 11 trin (med billeder)
4-bit binær lommeregner: 11 trin (med billeder)

Video: 4-bit binær lommeregner: 11 trin (med billeder)

Video: 4-bit binær lommeregner: 11 trin (med billeder)
Video: Binary to BCD | Logical Redstone #10 2024, Juli
Anonim
4-bit binær lommeregner
4-bit binær lommeregner
4-bit binær lommeregner
4-bit binær lommeregner
4-bit binær lommeregner
4-bit binær lommeregner
4-bit binær lommeregner
4-bit binær lommeregner

Jeg udviklede en interesse for den måde computere fungerer på et grundlæggende niveau. Jeg ville forstå brugen af diskrete komponenter og de kredsløb, der er nødvendige for at udføre mere komplekse opgaver. En vigtig grundlæggende komponent i en CPU er den aritmetiske logiske enhed eller ALU, der udfører operationer på heltal. For at udføre denne opgave bruger computere binære tal og logiske porte. En af de enkleste handlinger, der udføres, er at tilføje to tal sammen i et adderkredsløb. Denne video af numberphile gør et fremragende stykke arbejde med at forklare dette koncept via Domino Addition. Matt Parker udvider dette grundlæggende koncept og bygger et Domino -computerkredsløb ved hjælp af 10.000 dominoer. At bygge en hel personlig computer ud af dominoer er absurd, men jeg ville stadig forstå brugen af diskrete komponenter til at udføre denne tilføjelsesopgave. I videoerne blev logiske porte skabt ud af dominoer, men de kan også laves af grundlæggende komponenter, nemlig transistorer og modstande. Formålet med dette projekt var at udnytte disse diskrete komponenter til at lære og oprette min egen 4-bit adder-lommeregner.

Mine mål for dette projekt omfattede: 1) Lær, hvordan du opretter og fremstiller en brugerdefineret PCB2) Gør designet let at konceptualisere tilføjelse af binære tal3) Vis forskellen i skala mellem diskrete komponenter og et integreret kredsløb, der udfører den samme opgave

Meget af inspirationen og forståelsen for dette projekt kom fra Simon Inns.

Forbrugsvarer

Jeg brugte Fritzing til at lave skemaer, oprette og fremstille printkortene

Trin 1: Teori

Teori
Teori
Teori
Teori
Teori
Teori
Teori
Teori

Tælling i base 10 er enkel, fordi der er et andet heltal, der repræsenterer summen af to heltal. Det enkleste eksempel:

1 + 1 = 2

Tælling i base 2 eller binær bruger kun 1'er og 0'er. En kombination af 1'er og 0'er bruges til at repræsentere forskellige heltal og deres summer. Et eksempel på at tælle i base 2:

1+1 = 0, og du bærer 1'en til den næste bit

Når man tilføjer to bits (A og B) sammen, er 4 forskellige resultater mulige med output fra Sum og Carry (Cout). Dette er, hvad der er vist i tabellen.

Logiske porte tager input og genererer et output. Nogle af de mest grundlæggende logiske porte består af NOT-, AND- og OR -portene, der alle bruges i dette projekt. De består af forskellige kombinationer og ledninger til transistorer og modstande. Der er skemaer for hver port.

Med henvisning til tabellen kan en kombination af disse porte bruges til at producere sumresultaterne i tabellen. Denne kombination af logik er også kendt som en eksklusiv OR (XOR) gate. Inputtet skal være nøjagtigt 1 for at resultere i et output på 1. Hvis begge input er 1, er det resulterende output 0. Bærebitresultaterne kan repræsenteres ved en simpel AND -gate. Således kan brug af både en XOR med en AND -port repræsentere hele tabellen. Dette er kendt som en halv adder, og skematikken er vist ovenfor.

For at tilføje større binære tal skal bærebiten inkorporeres som et input. Dette opnås ved at kombinere 2 Half Adder kredsløb til at generere en Full Adder. Full Adders kan derefter kaskades sammen for at tilføje større binære tal. I mit projekt kaskaderede jeg 4 fulde tilføjere, som gjorde det muligt for mig at have 4 bit input. Skematikken for Full Adder er ovenfor.

Simon Inns har en stor og mere dybdegående skrivning om teorien. Der er også et par PDF -filer, som jeg fandt nyttige.

Trin 2: Test af kredsløbet

Test af kredsløbet
Test af kredsløbet
Test af kredsløbet
Test af kredsløbet

Det første trin efter at forstå, hvordan logiske porte fungerer og teorien bag en fuld adder er at bygge kredsløbet. Jeg startede med at samle alle de komponenter, jeg havde brug for: 10K og 1K modstande, NPN Transistorer, Breadboard, Jumperwires. Jeg fulgte efter med en udskrift af hele huggormen. Processen var kedelig, men jeg var i stand til at få et arbejdskredsløb til hele huggormen. Jeg ville binde input højt eller lavt og brugte et multimeter til at teste output. Nu var jeg klar til at oversætte brødbrættet og skematisk til et printkort.

Trin 3: Udformning af fuldt Adder -printkort

Design af Fuld Adder PCB
Design af Fuld Adder PCB
Design af fuldt Adder -printkort
Design af fuldt Adder -printkort
Design af Fuld Adder PCB
Design af Fuld Adder PCB

Til at designe printkortet brugte jeg udelukkende Fritzing. Dette var første gang jeg designede et printkort, og dette program virkede som det mest brugervenlige og intuitive med den mindste indlæringskurve. Der er andre gode programmer som EasyEDA og Eagle til rådighed til at hjælpe med at designe et printkort. Med Fritzing kan du begynde at designe på et virtuelt brødbræt eller en skematisk og derefter flytte til printkortet. Jeg brugte begge disse metoder til dette projekt. Når du er klar til at fremstille printkortet, er det så simpelt som et klik på en knap for at eksportere dine filer og uploade dem direkte til Aisler, der er partner for Fritzing.

Tegn skematisk Jeg startede med fanen skematisk for at starte processen. Først fandt jeg og indsatte alle komponenterne i arbejdsområdet. Dernæst tegnede jeg alle sporene mellem komponenterne. Jeg sørgede for at tilføje 5V input og jord til de relevante steder.

Design PCBI klikket på fanen PCB. Når du bevæger dig direkte fra en skematisk, får du rod med alle komponenter forbundet med ratsnest -linjer baseret på de spor, du lavede i skematikken. Den første ting, jeg gjorde, var at ændre størrelsen på det grå printkort til den størrelse, jeg ønskede, og tilføjede monteringshuller. Jeg tilføjede også 16 ben til input og output. Derefter begyndte jeg at arrangere komponenterne på en logisk måde. Jeg forsøgte at gruppere komponenter med forbindelser, der var tæt på hinanden, så jeg ville minimere sporafstand. Jeg gik et ekstra trin og grupperede komponenterne sammen efter logisk gate. Et af mine mål var at kunne visualisere, hvordan kredsløbet fungerer og være i stand til at følge "bit" gennem kredsløbet. Herefter brugte jeg autorouting -funktionen, der går igennem automatisk og tegner de optimerede sporinger mellem komponenterne. Jeg var skeptisk over, at denne proces fuldførte alle de rigtige sporinger, så jeg gik igennem for at dobbelttjekke og tegne spor, hvor de skulle være. Heldigvis gjorde autorouting -funktionen et ret godt stykke arbejde, og jeg skulle kun rette nogle få af sporene. Autorouteren lavede også nogle mærkelige vinkler med de spor, der ikke er den "bedste praksis", men jeg var okay med det, og alt fungerede stadig fint. Det sidste, jeg gjorde, var at tilføje tekst, der ville blive udskrevet som silketryk. Jeg sørgede for, at alle komponenterne var mærket. Jeg importerede også brugerdefinerede logiske portbilleder for at understrege gruppering af komponenterne. Det sidste billede ovenfor viser silketryk.

Fremstil PCBI ved at klikke på fabrikatknappen nederst på skærmen. Det dirigerede mig direkte til Aisler -webstedet, hvor jeg kunne oprette en konto og uploade alle mine Fritzing -filer. Jeg forlod alle standardindstillingerne og lagde ordren.

Trin 4: Design af de andre printkort

Design af de andre printkort
Design af de andre printkort
Design af de andre printkort
Design af de andre printkort
Design af de andre printkort
Design af de andre printkort

De resterende printkort, jeg havde brug for, var input/output -interfacekortet og kortet til IC. Jeg fulgte processen som trin 3 for disse tavler. PDF'en af skemaerne er placeret nedenfor. Til IC lavede jeg alle forbindelser ved hjælp af den virtuelle brødbrætfunktion. Jeg inkluderede skematikken for fuldstændighed, men kunne gå direkte fra brødbrættet til fanen PCB, hvilket var ret sejt. Jeg har også tilføjet en base 10 til base 2 -konverteringstabel på silketryk på I/O -interfacekortet, før jeg uploader og bestiller i Aisler.

Trin 5: Loddekomponenter til printkort

Loddekomponenter til PCB
Loddekomponenter til PCB
Loddekomponenter til PCB
Loddekomponenter til PCB
Loddekomponenter til PCB
Loddekomponenter til PCB
Loddekomponenter til PCB
Loddekomponenter til PCB

Alle printkortene ankom, og jeg var virkelig imponeret over kvaliteten. Jeg har ikke haft nogen erfaring med andre producenter, men ville ikke tøve med at bruge Aisler igen.

Den næste opgave var at lodde alle komponenterne, hvilket var en besværlig proces, men mine loddeevner blev stærkt forbedrede. Jeg startede med de fulde adderplader og lodde komponenterne med transistorer, derefter 1K modstande og derefter 10K modstande. Jeg fulgte en lignende metode til at lodde resten af komponenterne på I/O og IC -kortet. Efter hvert Full Adder -bræt var færdigt testede jeg dem med den samme metode som breadboard Full Adder. Overraskende fungerede alle pladerne korrekt uden problemer. Dette betød, at brædderne blev ført korrekt, og at de blev loddet korrekt. Videre til næste trin!

Trin 6: Afslutning af printkortene til stabling

Afslutning af printkort til stabling
Afslutning af printkort til stabling
Afslutning af printkort til stabling
Afslutning af printkort til stabling
Afslutning af printkort til stabling
Afslutning af printkort til stabling

Den næste opgave var at lodde alle hovedstifterne til hvert bræt. Jeg havde også brug for at tilføje jumper -ledninger mellem den korrekte header -pin og input/output fra Full Adder -kortene (A, B, Cin, V+, GND, Sum, Cout). Dette trin kunne undgås, hvis du designede forskellige PCB'er til hvert niveau i adder -kredsløbet, men jeg ville minimere design og omkostninger ved kun at oprette et Full Adder PCB. Som et resultat krævede forbindelser til disse indgange/udgange jumperkabler. Den skematiske vejledning er, hvordan jeg udførte denne opgave, og hvilke pins der blev brugt til hvert niveau af Full Adder -tavlerne. Billeder viser, hvordan jeg lodde jumpertrådene til hvert bord. Jeg startede med at lodde gratis ledninger til de korrekte stifter på overskriften. Jeg loddet derefter overskriften til printkortet. Efter at jeg havde headerstifterne med jumperwires loddet på plads, lodde jeg de frie ender af jumperwires til de korrekte ledninger på printet. Billedet ovenfor viser et nærbillede af hovedstifterne med jumpertrådene loddet til dem.

Trin 7: Tænd for kredsløbene

Forsyner kredsløbene
Forsyner kredsløbene
Forsyner kredsløbene
Forsyner kredsløbene
Forsyner kredsløbene
Forsyner kredsløbene

Jeg planlagde at bruge en 12V DC tønde jack strømforsyning til dette projekt, så jeg designede I/O interface kortet til at have et DC tønde jack/stik til strømindgangen. Fordi jeg brugte det samme I/O -kort og ville bruge en eneste strømforsyning, havde jeg brug for at regulere spændingen til 5V, da dette er den maksimale indgang til SN7483A IC. For at opnå dette havde jeg brug for en 5V regulator og en switch, der kunne skifte mellem 12V og 5V. Ovenstående skematisk viser, hvordan jeg koblet strømkredsløbet sammen.

Trin 8: 3D -udskrivning af basen

3D -udskrivning af basen
3D -udskrivning af basen
3D -udskrivning af basen
3D -udskrivning af basen
3D -udskrivning af basen
3D -udskrivning af basen

Nu hvor alle ledninger og lodninger er færdige, var jeg nødt til at finde ud af, hvordan det hele ville blive holdt sammen. Jeg valgte CADing og 3D -print et design, der kunne rumme og vise alle delene af dette projekt.

Designovervejelser Jeg havde brug for steder til at montere printkortene med bolte og afstandsstykker. De stablede tilføjere er de mest visuelt tiltalende, og jeg ville have dem på skærmen, når de ikke var i brug, så jeg ville have et sted at opbevare IC -printkortet. Jeg havde brug for at rumme strømkredsløbet med afbrydelser til kontakten og DC -tønde -stik/stik. Endelig ville jeg have en slags kabinetskab til at forhindre støv i at samle sig i de åbne printkort, så jeg havde brug for et sted, hvor kabinettet kunne sidde.

3D -modellering Jeg brugte Fusion360 til at designe basen. Jeg startede med dimensionerne på printkortet og afstanden mellem monteringshullerne. Derefter brugte jeg en række skitser og ekstruderinger til at indstille højden og størrelsen på basen med printkortets monteringspunkter. Dernæst lavede jeg udskæringerne til kabinettet og strømkredsløbet. Derefter lavede jeg et område til opbevaring af IC -printkortet, når det ikke var i brug. Til sidst tilføjede jeg nogle detaljer til efterbehandlingen og sendte den til Cura, min skæringssoftware.

Jeg valgte sort PLA filament. Udskriften tog lidt over 6 timer og blev fantastisk. Overraskende nok var alle dimensionerne korrekte, og alt virkede som om det ville passe ordentligt sammen. Billedet ovenfor viser udskriften, efter at jeg tilføjede afstandene til monteringshullerne. De passede perfekt!

Trin 9: Montering

montage
montage
montage
montage
montage
montage

Indsæt standoffs. Jeg placerede alle standoffs i monteringshullerne på basen.

Placer strømkredsløbet i basen. Jeg havde koblet alt sammen og trak alle komponenterne gennem hullet til kontakten. Derefter indsatte jeg strømstikket/adapteren på bagsiden af basen. Jeg skubbede 5V regulatoren ind i dens slot, og endelig kunne kontakten skubbes på plads.

Monter I/O -printkortet. Jeg placerede IC -printkortet i dets lagerplads og placerede I/O -interface -printkortet ovenpå. Jeg skruede PCB'et ned ved hjælp af 4x M3 bolte og en hex -driver. Endelig sluttede jeg DC -tønde -stikket til printet.

Stack Adder PCB'erne. Jeg stablede den første Adder på plads. Jeg skruede bagsiden af printkortet ned i de bageste monteringshuller med 2 standoffs. Jeg gentog denne proces, indtil den sidste Adder var på plads og sikrede den med de yderligere 2 M3 bolte.

Lav kabinettet. Jeg brugte 1/4 akryl til kabinettet. Jeg målte projektets endelige højde og klippede med CAD -målene 5 stykker til siderne og toppen for at lave en enkel kasse med en åben bund. Jeg brugte epoxy til at lime stykkerne sammen. Til sidst slibede jeg en lille udskæring i en halvcirkel på højre side for at imødekomme kontakten.

Klar til beregning

Trin 10: Beregning og sammenligning

Image
Image
Beregning og sammenligning
Beregning og sammenligning
Beregning og sammenligning
Beregning og sammenligning

Tilslut din nye lommeregner, og begynd at tilføje! Base 10 til base 2 -diagrammet kan bruges til hurtigt at konvertere mellem binære og heltal. Jeg foretrækker at indstille input og derefter ramme "lig med" ved at vende afbryderen og observere den binære output fra lysdioderne.

Sammenligning af diskrete komponenter til et integreret kredsløb. Nu kan du fjerne hele Adders og tilslutte SN7483A IC til I/O -kortet. (Glem ikke at vende kontakten til den modsatte retning for at forsyne IC'en med 5V i stedet for 12V). Du kan udføre de samme beregninger, og du får de samme resultater. Det er temmelig imponerende at tro, at både den diskrete komponent Adder og IC fungerer på samme måde bare på en meget anden størrelsesskala. Billederne viser de samme ind- og udgange til kredsløb.

Trin 11: Konklusion

Jeg håber, at du nød dette projekt og lærte lige så meget som jeg. Det er temmelig tilfredsstillende at lære noget nyt og gøre det til et unikt projekt, der også kræver at lære en ny færdighed som PCB -design/fabrikation. Alle skemaerne er angivet nedenfor. For alle interesserede kan jeg også linke mine PCB Gerber-filer, så du kan lave din egen 4-bit binære lommeregner. Glad for at lave!

Anbefalede: