Inhoudsopgave:
- Benodigdheden
- Stap 1: Theorie
- Stap 2: Het circuit testen
- Stap 3: De volledige opteller-PCB ontwerpen
- Stap 4: De andere PCB's ontwerpen
- Stap 5: Componenten op PCB solderen
- Stap 6: Afwerking van de PCB's voor stapelen
- Stap 7: De circuits van stroom voorzien
- Stap 8: 3D printen van de basis
- Stap 9: Montage
- Stap 10: Berekenen en vergelijken
- Stap 11: Conclusie
Video: 4-bit binaire rekenmachine - Ajarnpa
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:14
Ik ontwikkelde een interesse in de manier waarop computers werken op een fundamenteel niveau. Ik wilde het gebruik van discrete componenten en de circuits begrijpen die nodig zijn om complexere taken uit te voeren. Een belangrijk fundamenteel onderdeel van een CPU is de rekenkundige logische eenheid of de ALU die bewerkingen uitvoert op gehele getallen. Om deze taak te volbrengen, gebruiken computers binaire getallen en logische poorten. Een van de eenvoudigste bewerkingen die wordt uitgevoerd, is het optellen van twee getallen in een optelcircuit. Deze video van numberphile legt dit concept uitstekend uit via Domino Addition. Matt Parker breidt dit basisconcept uit en bouwt een Domino Computer-circuit met 10.000 dominostenen. Het bouwen van een hele pc uit dominostenen is absurd, maar ik wilde toch het gebruik van afzonderlijke componenten begrijpen om deze extra taak te volbrengen. In de video's zijn logische poorten gemaakt van dominostenen, maar ze kunnen ook worden gemaakt van basiscomponenten, namelijk transistors en weerstanden. Het doel van dit project was om deze discrete componenten te gebruiken om te leren en mijn eigen 4-bits rekenmachine te maken.
Mijn doelen voor dit project waren: 1) Leren hoe je een aangepaste PCB kunt maken en fabriceren 2) Het ontwerp gemakkelijk te conceptualiseren door binaire getallen toe te voegen 3) Het verschil in schaal aantonen tussen discrete componenten en een geïntegreerd circuit dat dezelfde taak uitvoert
Veel van de inspiratie en het begrip van dit project kwam van Simon Inns.
Benodigdheden
Ik heb Fritzing gebruikt om schema's te maken, de PCB's te maken en te fabriceren
Stap 1: Theorie
Tellen in grondtal 10 is eenvoudig omdat er een ander geheel getal is om de som van twee gehele getallen weer te geven. Het eenvoudigste voorbeeld:
1 + 1 = 2
Tellen in basis 2 of binair gebruikt alleen enen en nullen. Een combinatie van enen en nullen wordt gebruikt om verschillende gehele getallen en hun sommen weer te geven. Een voorbeeld van tellen in grondtal 2:
1+1 = 0 en je draagt de 1 naar het volgende bit
Bij het optellen van twee bits (A en B) bij elkaar, zijn 4 verschillende resultaten mogelijk met de uitgangen van Sum en Carry (Cout). Dit is wat er in de tabel staat.
Logische poorten nemen inputs en genereren een output. Enkele van de meest elementaire logische poorten bestaan uit de NIET-, EN- en OF-poorten die allemaal in dit project worden gebruikt. Ze zijn opgebouwd uit verschillende combinaties en bedrading van transistoren en weerstanden. Schema's van elke poort worden verstrekt.
Terugverwijzend naar de tabel, kan een combinatie van deze poorten worden gebruikt om de somresultaten in de tabel te produceren. Deze combinatie van logica staat ook bekend als een exclusieve OF (XOR)-poort. De invoer moet exact 1 zijn om te resulteren in een uitvoer van 1. Als beide ingangen 1 zijn, is de resulterende uitvoer 0. De carry-bitresultaten kunnen worden weergegeven door een eenvoudige EN-poort. Dus het gebruik van zowel een XOR met een EN-poort kan de hele tabel vertegenwoordigen. Dit staat bekend als een halve opteller en het schema is hierboven weergegeven.
Om grotere binaire getallen toe te voegen, moet de carry-bit als invoer worden opgenomen. Dit wordt bereikt door 2 Half Adder-circuits te combineren om een Full Adder te genereren. Volledige optellers kunnen vervolgens in cascade worden geschakeld om grotere binaire getallen toe te voegen. In mijn project heb ik 4 Full Adders gecascadeerd, waardoor ik 4-bits ingangen kon hebben. Het schema voor de Full Adder staat hierboven.
Simon Inns heeft een geweldige en meer diepgaande beschrijving van de theorie. Er zijn ook een paar PDF's die ik nuttig vond.
Stap 2: Het circuit testen
De eerste stap na het begrijpen hoe logische poorten werken en de theorie achter een Full Adder is om het circuit te bouwen. Ik begon met het verzamelen van alle componenten die ik nodig had: 10K- en 1K-weerstanden, NPN-transistors, breadboard, jumperwires. Ik volgde samen met een afdruk van de volledige adder. Het proces was vervelend, maar ik was in staat om een werkend circuit te krijgen voor de volledige opteller. Ik zou de ingangen hoog of laag binden en een multimeter gebruiken om de uitgangen te testen. Nu was ik klaar om het breadboard en schema te vertalen naar een PCB.
Stap 3: De volledige opteller-PCB ontwerpen
Voor het ontwerpen van de print heb ik uitsluitend Fritzing gebruikt. Dit was de eerste keer dat ik een PCB ontwierp en dit programma leek het meest gebruiksvriendelijk en intuïtief met de kleinste leercurve. Er zijn andere geweldige programma's zoals EasyEDA en Eagle beschikbaar om te helpen bij het ontwerpen van een PCB. Met Fritzing kunt u beginnen met ontwerpen op een virtueel breadboard of een schema en vervolgens naar de PCB gaan. Ik gebruikte beide methoden voor dit project. Wanneer u klaar bent om de PCB te fabriceren, is het zo simpel als een klik op een knop om uw bestanden te exporteren en ze rechtstreeks te uploaden naar Aisler, de partnerfabrikant voor Fritzing.
Teken het schema Ik ben begonnen met het schematabblad om het proces te starten. Eerst heb ik alle componenten gevonden en in de werkruimte ingevoegd. Vervolgens tekende ik alle sporen tussen de componenten. Ik heb ervoor gezorgd dat ik 5V-ingang en aarde op de juiste plaatsen heb toegevoegd.
Ontwerp de PCBI geklikt op het tabblad PCB. Wanneer je rechtstreeks vanuit een schema gaat, krijg je een puinhoop met alle componenten die zijn verbonden door rattennestlijnen op basis van de sporen die je in het schema hebt gemaakt. Het eerste wat ik deed, was het formaat van de grijze PCB aanpassen aan het formaat dat ik wilde en montagegaten toevoegen. Ik heb ook 16 pinnen toegevoegd voor de in- en uitgangen. Vervolgens ben ik de componenten op een logische manier gaan ordenen. Ik heb geprobeerd componenten te groeperen met verbindingen die dicht bij elkaar lagen, zodat ik de traceerafstand zou minimaliseren. Ik deed een extra stap en groepeerde de componenten per logische poort. Een van mijn doelen was om te kunnen visualiseren hoe het circuit werkt en het "bit" door het circuit te kunnen volgen. Daarna heb ik de autorouting-functie gebruikt die automatisch doorgaat en de geoptimaliseerde tracings tussen de componenten tekent. Ik was sceptisch dat dit proces alle juiste traceringen voltooide, dus ging ik door om de traceringen te controleren en opnieuw te tekenen waar ze hoorden te zijn. Gelukkig deed de autorouting-functie het redelijk goed en hoefde ik maar een paar van de traceringen te repareren. De autorouter maakte ook een aantal rare hoeken met de sporen, wat niet de "best practice" is, maar dat vond ik goed en alles werkte nog steeds prima. Het laatste wat ik deed was tekst toevoegen die als zeefdruk zou worden afgedrukt. Ik zorgde ervoor dat alle componenten werden geëtiketteerd. Ik heb ook aangepaste logische poortafbeeldingen geïmporteerd om de groepering van de componenten te benadrukken. De laatste foto hierboven toont de zeefdruk.
Fabriceren van de PCBI geklikt op de fabricage-knop aan de onderkant van het scherm. Het leidde me rechtstreeks naar de Aisler-website waar ik een account kon maken en al mijn Fritzing-bestanden kon uploaden. Ik heb alle standaardinstellingen verlaten en de bestelling geplaatst.
Stap 4: De andere PCB's ontwerpen
De resterende PCB's die ik nodig had, waren de input/output-interfacekaart en de kaart voor de IC. Ik volgde het proces als stap 3 voor deze borden. De pdf van de schema's staat hieronder. Voor de IC heb ik alle verbindingen gemaakt met behulp van de virtuele breadboard-functie. Ik heb het schema voor de volledigheid bijgevoegd, maar ik kon rechtstreeks van het breadboard naar het PCB-tabblad gaan, wat best cool was. Ik heb ook een conversietabel van base 10 naar base 2 toegevoegd op de zeefdruk op het I/O-interfacebord voordat ik het uploadde en bestelde in Aisler.
Stap 5: Componenten op PCB solderen
Alle PCB's zijn aangekomen en ik was echt onder de indruk van de kwaliteit. Ik heb geen ervaring met andere fabrikanten, maar zou niet aarzelen om Aisler opnieuw te gebruiken.
De volgende taak was om alle componenten te solderen, wat een moeizaam proces was, maar mijn soldeervaardigheden verbeterden enorm. Ik begon met de volledige adderborden en soldeerde de componenten, te beginnen met transistors, vervolgens 1K-weerstanden en vervolgens 10K-weerstanden. Ik volgde een vergelijkbare methode om de rest van de componenten op de I/O- en IC-kaart te solderen. Nadat elk Full Adder-bord compleet was, heb ik ze getest met dezelfde methode als het breadboard Full Adder. Verrassend genoeg werkten alle borden zonder problemen correct. Dit betekende dat de planken correct werden gerouteerd en dat ze correct werden gesoldeerd. Op naar de volgende stap!
Stap 6: Afwerking van de PCB's voor stapelen
De volgende taak was om alle header-pinnen op elk bord te solderen. Ik moest ook jumperdraden toevoegen tussen de juiste header-pin en de in-/uitgangen van de Full Adder-kaarten (A, B, Cin, V+, GND, Sum, Cout). Deze stap zou kunnen worden vermeden als u verschillende PCB's voor elk niveau van het optelcircuit zou ontwerpen, maar ik wilde het ontwerp en de kosten minimaliseren door slechts één Full Adder-PCB te maken. Als gevolg hiervan waren voor verbindingen met deze ingangen/uitgangen jumperdraden nodig. Het verstrekte schema is hoe ik deze taak heb volbracht en welke pinnen zijn gebruikt voor elk niveau van de Full Adder-borden. Afbeeldingen laten zien hoe ik de jumperdraden voor elk bord heb gesoldeerd. Ik begon met het solderen van gratis draden aan de juiste pinnen op de header. Vervolgens heb ik de header op de print gesoldeerd. Nadat ik de header-pinnen met jumperdraden op hun plaats had gesoldeerd, soldeerde ik de vrije uiteinden van jumperdraden aan de juiste leads op de printplaat. De afbeelding hierboven toont een close-up van de header-pinnen met de jumperdraden eraan gesoldeerd.
Stap 7: De circuits van stroom voorzien
Ik was van plan om voor dit project een 12V DC barrel jack-voeding te gebruiken, dus ontwierp ik de I/O-interfacekaart met een DC barrel jack/connector voor de stroomingang. Omdat ik hetzelfde I/O-bord gebruikte en een enkele voeding wilde gebruiken, moest ik de spanning regelen naar 5V, omdat dit de maximale ingang is voor de SN7483A IC. Om dit te bereiken had ik een 5V-regelaar nodig en een schakelaar die kon schakelen tussen de 12V en 5V. Het bovenstaande schema laat zien hoe ik het stroomcircuit samen heb aangesloten.
Stap 8: 3D printen van de basis
Nu alle bedrading en het solderen voltooid was, moest ik uitzoeken hoe het allemaal bij elkaar zou worden gehouden. Ik koos voor CAD-en en 3D-printen van een ontwerp dat alle onderdelen van dit project zou huisvesten en weergeven.
Ontwerpoverwegingen Ik had plaatsen nodig om de PCB's te monteren met bouten en afstandhouders. De gestapelde adders zijn visueel het meest aantrekkelijk en ik wilde die tentoonstellen wanneer ze niet in gebruik waren, dus ik wilde een plek om de IC-printplaat op te bergen. Ik moest het stroomcircuit voorzien van uitsparingen voor de schakelaar en de DC-cilinderaansluiting / connector. Ten slotte wilde ik een soort vitrinekast om te voorkomen dat er stof in de open PCB's zou komen, dus ik had een plek nodig voor de behuizing.
3D-modelleringIk heb Fusion360 gebruikt om de basis te ontwerpen. Ik ben begonnen met de afmetingen van de printplaat en de afstand tussen de montagegaten. Daarna heb ik een reeks schetsen en extrusies gebruikt om de hoogte en grootte van de basis met de PCB-montagepunten in te stellen. Vervolgens maakte ik de uitsparingen voor de behuizing en het stroomcircuit. Vervolgens heb ik een gebied gemaakt om de IC-printplaat op te slaan wanneer deze niet in gebruik is. Als laatste heb ik wat details van de finishing edge toegevoegd en deze naar Cura, mijn slicing-software, gestuurd.
Bedrukking Ik koos voor zwart PLA filament. De afdruk duurde iets meer dan 6 uur en bleek geweldig. Verrassend genoeg waren alle afmetingen correct en leek alles goed in elkaar te passen. De afbeelding hierboven toont de afdruk nadat ik de afstandhouders in de montagegaten heb toegevoegd. Ze zaten perfect!
Stap 9: Montage
Plaats de afstandhouders. Ik plaatste alle afstandhouders in de montagegaten van de basis.
Plaats het stroomcircuit in de basis. Ik had alles met elkaar verbonden en alle componenten door het gat voor de schakelaar getrokken. Vervolgens heb ik de stroomaansluiting / adapter in de achterkant van de basis gestoken. Ik duwde de 5V-regelaar in zijn gleuf en uiteindelijk kon de schakelaar op zijn plaats worden geduwd.
Monteer de I/O-printplaat. Ik plaatste de IC-PCB in zijn opslagruimte en plaatste de I/O-interface-PCB erop. Ik heb de PCB vastgeschroefd met behulp van 4x M3-bouten en een hex-driver. Ten slotte heb ik de DC barrel jack in de PCB gestoken.
Stapel de Adder PCB's. Ik heb de eerste Adder op zijn plaats gestapeld. Ik heb de achterkant van de printplaat met 2 afstandhouders in de achterste montagegaten geschroefd. Ik herhaalde dit proces totdat de laatste Adder op zijn plaats zat en borgde deze met de nog 2 M3-bouten.
Maak de behuizing. Ik gebruikte 1/4 acryl voor de behuizing. Ik heb de uiteindelijke hoogte van het project gemeten en, met de CAD-afmetingen, 5 stukken uitgesneden voor de zijkanten en bovenkant om een eenvoudige doos met een open bodem te maken. Ik gebruikte epoxy om te lijmen Als laatste heb ik aan de rechterkant een kleine halve cirkel uitsnijding geschuurd om de schakelaar te kunnen plaatsen.
Klaar om te berekenen
Stap 10: Berekenen en vergelijken
Sluit uw nieuwe rekenmachine aan en begin met toevoegen! De basis 10 naar basis 2-grafiek kan worden gebruikt om snel te converteren tussen binaire en gehele getallen. Ik geef er de voorkeur aan om de ingangen in te stellen en vervolgens op "gelijk aan" te drukken door de aan / uit-schakelaar om te draaien en de binaire uitvoer van de LED's te observeren.
Discrete componenten vergelijken met een geïntegreerd circuit. Nu kunt u de volledige Adders ontstapelen en de SN7483A IC op het I/O-bord aansluiten. (Vergeet niet om de schakelaar in de tegenovergestelde richting te draaien om het IC van stroom te voorzien met 5V in plaats van 12V). U kunt dezelfde berekeningen uitvoeren en u krijgt dezelfde resultaten. Het is behoorlijk indrukwekkend om te bedenken dat zowel de afzonderlijke component Adder als de IC op dezelfde manier werken, alleen op een heel andere schaal. De afbeeldingen tonen dezelfde in- en uitgangen voor circuits.
Stap 11: Conclusie
Ik hoop dat je van dit project hebt genoten en net zoveel hebt geleerd als ik. Het is behoorlijk bevredigend om iets nieuws te leren en er een uniek project van te maken dat ook een nieuwe vaardigheid vereist, zoals PCB-ontwerp/fabricage. Hieronder staan alle schema's vermeld. Voor iedereen die geïnteresseerd is, kan ik ook mijn PCB Gerber-bestanden koppelen, zodat u uw eigen 4-bits binaire rekenmachine kunt maken. Veel plezier met maken!
Aanbevolen:
Toetsenbordsnelkoppelingen voor rekenmachine !!: 4 stappen
Sneltoetsen voor rekenmachine !!: Deze Instructable toont u enkele handige sneltoetsen voor rekenmachine Abonneer u op mijn kanaal Bedankt
Nextion/Arduino-rekenmachine: 3 stappen
Nextion/Arduino Calculator: Een handige rekenmachine voor de Arduino Uno. De rekenmachine is qua stijl vergelijkbaar met de standaard rekenmachine die bij Windows 10 wordt geleverd. Opmerking: hij bevat niet de wetenschappelijke en programmeerfuncties die de Windows 10-rekenmachine wel heeft, maar deze func
HOE MAAK JE EEN VIER FUNCTIONELE REKENMACHINE IN CPP: 6 stappen
HOE MAAK JE EEN VIER FUNCTIONELE REKENMACHINE IN CPP: Rekenmachines worden door iedereen in het dagelijks leven gebruikt. Een eenvoudige rekenmachine kan worden gemaakt met behulp van een C++-programma dat in staat is om twee door de gebruiker ingevoerde operanden op te tellen, af te trekken, te vermenigvuldigen en te delen. Het if en goto statement wordt gebruikt om een rekenmachine te maken
Rekenmachine kijken: 5 stappen
Calculator Watch: Als u jonger bent dan 15 jaar onder toezicht van een volwassene, gebruikt u een scherp voorwerp. Je gaat ook hete voorwerpen gebruiken
Binaire rekenmachine: 11 stappen
Binaire rekenmachine: overzicht: sinds de allereerste uitvinding van de logische poort in de 20e eeuw heeft de constante ontwikkeling van dergelijke elektronica plaatsgevonden en het is nu een van de eenvoudigste maar fundamenteel belangrijke elektronische componenten in veel verschillende toepas