Är det möjligt att skapa en enkel dator helt med paneler och grundläggande elektroniska komponenter? Är det möjligt att till exempel konstruera en vetenskaplig räknare på detta sätt?
Är det möjligt att skapa en enkel dator helt med paneler och grundläggande elektroniska komponenter? Är det möjligt att till exempel konstruera en vetenskaplig räknare på detta sätt?
Jag kommer inte hålla med om att placera en mikrokontroller på en bräda ombord kan kvalificera mig som att bygga en dator på en bräda. Med undantag för I / O (som tangentbord och skärm), är en mikrokontroller i sig ganska mycket en komplett dator. Att bara placera det på en brädbräda och ansluta några ledningar är trivialt och kan göras på tio minuter.
När OP frågade: "Är det möjligt att göra en enkel dator helt med paneler och grundläggande elektroniska komponenter ? ", med grundläggande elektroniska komponenter tror jag att det betyder något mer så här:
Nu är det en dator på en brädbräda (ja, flera brädbrädor), byggda från grundläggande komponenter . Beskrivningen av det finns här. Den består av ett dussin typer av 74LS00-seriens IC: er. (Jag tror inte att vi vill gå hela vägen tillbaka till transistorer; den ursprungliga PDP-8 var storleken på ett litet kylskåp).
När det gäller en vetenskaplig miniräknare, om du byggde en dator för allmänt bruk som den som visas ovan, kan den programmeras som en vetenskaplig miniräknare. Att konstruera en vetenskaplig miniräknare som endast använder logiska IC: er (ingen dator) skulle vara extremt svårt; alla tillverkare av sådana miniräknare (Ti, HP etc.) använde speciella storskaliga IC: er. Här är en hembyggd kalkylator som använder en tidig 4-bitars miniräknare IC.
Jag håller med om att om man vill få en dator igång så snabbt som möjligt, då att använda en mikrokontroller är vägen att gå. Om man verkligen vill förstå hur en dator fungerar internt är det rätt väg att bygga en ur grundläggande IC.
Det är inte bara möjligt, jag har faktiskt gjort det: se https://www.vttoth.com/CMS/projects/47
Här är ledningarna på baksidan av en av brödbrädorna såg ut:
Naturligtvis beror allt på vilka komponenter som kvalificerar som "grundläggande". I mitt fall var de grundläggande komponenterna 74 ... serie TTL-chips, ungefär hundra av dem. Att bygga en dator helt från, säg, transistorer ... det skulle vara alltför överväldigande.
Dessutom är min 4-bitars dator verkligen inte tillräckligt kraftfull för att kunna användas som en vetenskaplig räknare, främst på grund av begränsningar i minnet (256 4-bitars nybbles). Det är dock inte särskilt svårt att förlänga adressutrymmet, kanske med hjälp av en personsökningsmekanism, och 4096 nybbles (12-bitars adresser) kanske redan tillräckligt, 65536 nybbles (16-bitars adresser) säkert.
Ja det är möjligt, men du behöver lite mer än bara några brödbrädor för att komma med en vetenskaplig räknare, beroende på vad du anser vara en baskomponent: om du kallar en transistor för en baskomponent eller en flip-flop, en EEPROM eller bara något du kan löda ut från ett gammalt kylskåp.
Det finns några bra svar här, men jag vill bara påpeka en sak som folk ofta inte anser . När man tittar på datorenheternas historia är svårigheten att bygga en dator från trädbark och naglar varken CPU eller ALU. Huvudproblemet är minne . Eftersom du behöver en enorm mängd av det för att hela lagrat programkoncept ska fungera. Du kan skapa en CPU från några flip-flops och NAND-grindar; till exempel för en kraftelektronikapplikation med specifika begränsningar designade jag en gång en mikroprocessor som endast använder 69 flip-flops (4 16-bitarsregister, 4 flaggor och 1 tillståndsregistreringsbit som betecknar FETCH / EXECUTE). Det implementeras i kisel och folk skriver programvara som körs på det. Det är enkelt och det passar in i storleken på en avloppskontakt för en effekttransistor. Men minnet som behövs för att lagra ett användbart program är mycket, mycket större.
Tidigt var minnet startpunkten för designen. Du kan använda bi-stabila reläer som de gjorde vid tidiga telefonväxlar. Du kan använda vakuumrör eller transistorer för att göra flip-flops; och CPU: s register implementerades vanligtvis på detta sätt. Men för programmet och datalagring användes pappersband, magnetband, snurrskivor eller snurrtrummor. Även akustiska vågor på ståltråd som hela tiden tas emot och sänds igen av elektroniken. Allt du kan tänka dig som kan innehålla vissa bitar under en rimlig tid med rimlig kostnad. Apollo-orbiter- och månlandningsdatorer använde spolkärnminnen som lindades upp som rep. Alla dessa behöver olika gränssnittsutrustning och har en enorm inverkan på hur processorn behöver vara för att få tillgång till sådana minnen. Halvledarminnet uppträdde först på 1970-talet och slutligen avfärdade den typen av komplexitet. Men då är moderna dynamiska RAMS inte heller så enkla.
Sedan finns det den extra underbarheten att behöva designa input-output-utrustning för datorn. Några glödlampor är bra för vissa applikationer, men om du behöver textinmatning / utmatning eller något ännu mer komplicerat, står du återigen inför fler svårigheter. Punch-card-läsare, skrivare och pappersterminaler var en stor affär i sina dagar. En VT100-textläget videoterminal från 1978 har mycket mer minne och processorkraft än vad din vetenskapliga kalkylator-dator skulle ha.
Det är möjligt, men komplexiteten och storleken beror på vad du kallar grundläggande elektroniska komponenter. En ALU- och sequencerlogik är lite komplex, men genomförbar. Minne är enkelt, men grundmönstret måste upprepas ett mycket stort antal gånger (tänk 1000 gånger).
Förutom hårdvaran behöver du också programvara som körs på den. Som en grov uppskattning, för en måttligt komplex CPU (klassiska 16-bitars instruktioner 8-bitars datanivå) kommer din mjukvaruinsats att vara jämförbar med din hårdvaruinsats. (För en mer förenklad CPU behöver du mer SW-ansträngning.) Och hur ska du ladda den SW i din maskin?
Bugjakt (och lösning) kommer att vara ett intressant åtagande. Jag skulle rekommendera dig att börja skriva i VHDL och köra det på en simulator, det blir mycket lättare att felsöka än en massa chips och ledningar.
Två studenter av mig skapade en 16-bitars CPU med lite grundläggande programvara (inklusive en GCC-backport) om ~ 1 år, med början med VHDL- och C-kod för simulering. ALU använde 74181-chips, minnet var statiskt RAM-minne, och de använde en atMega för att gränssnittet mellan datorn och deras dator. Datorn var delvis på lödfria brödband och delvis på PCB (de 8 16-bitarsregisterna). (Dessa två var inte genomsnittliga studenter!)
Ja, det är möjligt. Men du behöver en mikrokontroller för att göra matematiken. Detta är ett exempelprojekt. Den använder AVR-mikrokontroller och 16 × 2 LCD-skärm.