Czy możliwe jest stworzenie prostego komputera w całości z płytkami chlebowymi i podstawowymi elementami elektronicznymi? Czy można na przykład skonstruować w ten sposób kalkulator naukowy?
Czy możliwe jest stworzenie prostego komputera w całości z płytkami chlebowymi i podstawowymi elementami elektronicznymi? Czy można na przykład skonstruować w ten sposób kalkulator naukowy?
Odpowiedzi:
Nie zgadzam się, że umieszczenie mikrokontrolera na płycie kontrolnej kwalifikuje się jako zbudowanie komputera na płycie kontrolnej. Z wyjątkiem I / O (takich jak klawiatura i wyświetlacz) sam mikrokontroler jest prawie kompletnym komputerem. Samo umieszczenie go na płycie chlebowej i podłączenie kilku przewodów jest banalne i można to zrobić w ciągu dziesięciu minut.
Kiedy OP zapytał: „Czy możliwe jest stworzenie prostego komputera w całości z płytkami ściennymi i podstawowymi komponentami elektronicznymi?”, Przez podstawowe komponenty elektroniczne myślę, że oznacza to coś więcej:
Teraz jest to komputer na płycie tartej (cóż, kilka płyt tartych), zbudowany z podstawowych komponentów . Jego opis znajduje się tutaj . Składa się z kilkunastu typów układów scalonych serii 74LS00. (Nie sądzę, że chcemy wrócić do tranzystorów; oryginalny PDP-8 był wielkości małej lodówki ).
Jeśli chodzi o kalkulator naukowy, jeśli zbudowałeś komputer ogólnego przeznaczenia, taki jak pokazany powyżej, można go zaprogramować jako kalkulator naukowy. Stworzenie kalkulatora naukowego przy użyciu tylko logicznych układów scalonych (bez komputera) byłoby niezwykle trudne; wszyscy producenci takich kalkulatorów (Ti, HP itp.) używali specjalnych układów scalonych na dużą skalę . Oto domowy kalkulator, który wykorzystuje wczesny 4-bitowy kalkulator IC.
Zgadzam się, że jeśli ktoś chce uruchomić komputer tak szybko, jak to możliwe, to najlepiej użyć mikrokontrolera. Jeśli ktoś naprawdę chce zrozumieć, jak komputer działa wewnętrznie, to zbudowanie jednego z podstawowych układów scalonych jest właściwą ścieżką.
Jest to nie tylko możliwe, właściwie to zrobiłem: patrz https://www.vttoth.com/CMS/projects/47
Oto jak wyglądało okablowanie z tyłu jednej z płyt pilśniowych:
Oczywiście wszystko zależy od tego, które elementy kwalifikują się jako „podstawowe”. W moim przypadku podstawowymi komponentami były układy TTL serii 74 ..., z czego około stu. Aby zbudować komputer całkowicie z, powiedzmy, tranzystorów ... byłoby to zbyt przytłaczające.
Ponadto mój 4-bitowy komputer naprawdę nie jest wystarczająco mocny, aby używać go jako kalkulatora naukowego, głównie z powodu ograniczeń pamięci (256 4-bitowych nybbles). Jednak rozszerzenie przestrzeni adresowej nie jest strasznie trudne, być może przy użyciu mechanizmu stronicowania, a 4096 nybbles (adresy 12-bitowe) może już wystarczająco, 65536 nybbles (adresy 16-bitowe) na pewno.
Tak, jest to możliwe, ale potrzebujesz nieco więcej niż tylko kilku makiet, aby wymyślić kalkulator naukowy, w zależności oczywiście od tego, co uważasz za podstawowy komponent: czy nazywasz tranzystor podstawowym komponentem, czy flip-flop , pamięć EEPROM lub po prostu coś, co można wylutować ze starej lodówki.
Jest tu kilka dobrych odpowiedzi, ale chciałbym tylko wskazać na jedną rzecz, której ludzie często nie biorą pod uwagę. Patrząc na historię urządzeń komputerowych, trudność w budowie komputera z kory drzewa i gwoździ nie dotyczy procesora ani ALU. Głównym problemem jest pamięć. Ponieważ potrzebujesz ogromnej ilości, aby cała koncepcja przechowywanego programu mogła działać. Możesz zrobić procesor z kilku klapek i bramek NAND; na przykład dla aplikacji energoelektronicznych ze specyficznymi ograniczeniami, kiedyś zaprojektowałem mikroprocesor, który wykorzystuje tylko 69 przerzutników (4 rejestry 16-bitowe, 4 flagi i 1 bit rejestru stanu oznaczający FETCH / EXECUTE). Jest zaimplementowany w krzemie, a ludzie piszą na nim działające oprogramowanie. To proste i pasuje do wielkości styku drenowego tranzystora mocy. Ale pamięć potrzebna do przechowywania dowolnego przydatnego programu jest znacznie, dużo większa.
Na początku pamięć była punktem wyjścia do projektowania. Można użyć przekaźników bistabilnych, tak jak na wczesnych centralach telefonicznych. Możesz użyć lamp próżniowych lub tranzystorów do wykonania przerzutników; a rejestry CPU zwykle były implementowane w ten sposób. Ale do przechowywania programów i danych używano taśm papierowych, magnetycznych, spinningowych lub bębnów spinowych. Nawet fale akustyczne na drucie stalowym, które są stale odbierane i retransmitowane przez elektronikę. Wszystko, co możesz o tym pomyśleć, może zawierać pewne bity przez rozsądny okres czasu przy rozsądnych kosztach. W orbitach Apollo i księżycowych komputerach lądownikowych wykorzystano wspomnienia o rdzeniu cewki zwinięte jako liny. Wszystkie te wymagają innego sprzętu interfejsu i mają ogromny wpływ na to, jaki procesor powinien mieć dostęp do tego rodzaju pamięci. Pamięć półprzewodników pojawiła się naprawdę dopiero w latach siedemdziesiątych, w końcu odrzucając tego rodzaju złożoność. Ale z drugiej strony nowoczesne dynamiczne pamięci RAM również nie są takie łatwe.
Jest jeszcze dodatkowa cudowność konieczności zaprojektowania urządzenia wejścia-wyjścia dla komputera. Kilka żarówek jest w porządku dla niektórych aplikacji, ale jeśli potrzebujesz wprowadzania / wysyłania tekstu lub czegoś jeszcze bardziej złożonego, znów napotykasz większe trudności. Czytniki kart, drukarki i terminale papierowe były w tamtych czasach wielkim biznesem. Terminal wideo w trybie tekstowym VT100 z 1978 roku ma znacznie większą pamięć i moc przetwarzania niż komputer kalkulator naukowy.
Jest to możliwe, ale złożoność i rozmiar zależy od tego, co nazywamy podstawowymi komponentami elektronicznymi. ALU i logika sekwencera jest nieco złożona, ale wykonalna. Pamięć jest prosta, ale podstawowy wzorzec należy powtórzyć bardzo wiele razy (pomyśl 1000 razy).
Oprócz sprzętu będziesz potrzebować również działającego na nim oprogramowania. W przybliżeniu, dla średnio złożonego procesora (klasyczne instrukcje 16-bitowe, 8-bitowy poziom danych) wysiłek programowy będzie porównywalny z wysiłkiem sprzętowym. (Aby uzyskać bardziej uproszczony procesor, będziesz potrzebować więcej wysiłku SW). A jak zamierzasz załadować SW do swojego komputera?
Polowanie na błędy (i rozwiązywanie) będzie ciekawym przedsięwzięciem. Radzę ci zacząć pisać w VHDL i uruchomić to na symulatorze, który będzie o wiele łatwiejszy do debugowania niż kilka układów i przewodów.
Dwóch moich studentów stworzyło 16-bitowy procesor z jakimś podstawowym oprogramowaniem (w tym portem zaplecza GCC) w ciągu ~ 1 roku, zaczynając od kodu VHDL i C do symulacji. ALU użyło 74181 układów, pamięć była statyczną pamięcią RAM, a one wykorzystały atMega do połączenia komputera z komputerem. Komputer był częściowo na bezlutowych podstawkach, a częściowo na płytkach drukowanych (8 rejestrów 16-bitowych). (Ci dwaj nie byli przeciętnymi studentami!)
Tak to mozliwe. Ale potrzebujesz matematyki, aby wykonać matematykę. To jest przykładowy projekt. Wykorzystuje mikrokontroler AVR i wyświetlacz LCD 16 × 2.