pamięć dla najprostszego możliwego komputera (Pi0K)

13

Chciałbym zbudować najprostszy możliwy komputer. Nie dbam o szybkość ani pamięć masową, w rzeczywistości posiadanie niskiej prędkości i niskiej pamięci jest ogromną zaletą, ponieważ chcę zbudować ją z tranzystorów (idealnie przekaźników!) I chcę diodę LED dla każdego stanu. Zostanie zaprogramowany przez Raspberry Pi, który będzie obsługiwał kamerę, dzięki czemu zobaczysz każdy cykl zegara (tak, będzie on działał z częstotliwością Hz, a nie GHz). Będzie to otwarty projekt z zamiarem, aby szkoły mogły kupować części, rozumieć i ulepszać projekt. Tak więc całkowity budżet musi wynosić znacznie poniżej 400 GBP, najlepiej około 100 GBP.

Badałem to przez wiele lat i mam dobre pomysły na procesor (minimalne rejestry, mikrokod w przełącznikach DIP i bitowe operacje logiki / arytmetyki szeregowej w celu zmniejszenia liczby tranzystorów). Nie mogę zrozumieć, jak uzyskać pamięć, chciałbym 1024 do 8096 bitów.

Najlepsze, co mogę wymyślić, to dwa 6-bitowe dekodery jeden z n, dające dostęp do siatki kondensatorów 64 x 64. Albo mają w sobie ładunek, albo nie, a czytanie wzmocniłoby ten stan. Na kondensatorach nie byłoby diod LED, ponieważ odświeżanie tej „pamięci DRAM” odbywałoby się w kolejności lub minutach (szkoda, ponieważ byłaby to jedyna część, która nie pokazuje stanu).

Inne pomysły obejmują jakąś formę napędu taśmowego (kompaktowy mechanizm kasetowy: świetne miejsce do przechowywania, zbyt skomplikowane, bez przeszukiwania), pamięć bębna (taśma wokół fasoli może: zbyt trudno uruchomić mechanikę), pamięć mechaniczna (koło rowerowe i łożyska kulkowe: zbyt wiele błędów bitowych), pamięć rdzenia (duże twarde rdzenie ferrytowe: nadal bardzo trudne do uzyskania właściwej wymaganej skali), taśma / karta (czy nadal możemy kupić czytniki taśm), obracający się dysk z dziurkami w porządku binarnym i niektóre magnetyczne pamięć do przechowywania (zbyt złożona, aby ją zbudować).

Ostatecznie celem jest opublikowanie projektu, który można zbudować w roku szkolnym, w którym wszystkie części procesora i pamięci są „widoczne”, dzięki czemu można zobaczyć pobieranie instrukcji, dekodowanie do mikrokodu oraz dekodowanie adresu / rejestrowanie dostępu / logiki wszystkie dzieje się w ciągu kilku minut.

Jeśli ktoś ma pomysły na naprawdę tanią pamięć (<< 100 £), gdzie jest jasne, jak dokładnie działa, daj mi znać.

Tony

Aktualny stan PS znajduje się na stronie http://www.blinkingcomputer.org/

Tony Robinson
źródło
Wystarczy wyszukać w Google osoby, które już to zrobiły i podobne rzeczy, projekty tam są, możesz zrobić BOM i przekonać się, że prawdopodobnie potrzebujesz trochę więcej pieniędzy i czasu.
PlasmaHH
Sugerowałbym, że przejście do poziomu tranzystora może być trochę za dużo dla projektu szkolnego. Sądzę, że integracja CMOS na małą i średnią skalę byłaby znacznie bardziej wykonalna i prawdopodobnie bardziej zrozumiała (bramki, rejestry, bufory, dekodery itp.). Możesz dołączyć coś, co pokazuje, jak bramy są wykonane z tranzystorów, klapki wykonane są z bram itp.).
Tut
1
Pomysł: powinieneś łatwo modyfikować pamięć (programową) ręcznie, aby ludzie mogli „ręcznie” programować rękami :-).
oyvind
Najpierw zdecyduj, co chcesz, aby komputer mógł zrobić. To określi, ile pamięci potrzebujesz i jaki powinien być zestaw instrukcji.
Tony Ennis,
Dziękuje wszystkim. PlasmaHH: Tak, to ogromne wyzwanie, jeśli chodzi o pieniądze i ograniczenia czasowe, dlatego nikt jeszcze tego nie zrobił. Tut: Naprawdę chcę widzieć każdy sygnał. Ludzie zobaczą wtedy, jak zbudowane są bramki logiczne z tranzystorów. oywind: Tak, będzie programowalny przez Raspberry Pi z interfejsem internetowym, w którym możesz napisać własny kod i zobaczyć, jak działa z kamerą internetową. Tony Ennis: Chcę zbudować najprostszy komputer, który pokazuje każdy sygnał - to zademonstruje wszystkie aspekty i będzie wymagało niestandardowych architektur, takich nieco seryjnych ALU.
Tony Robinson

Odpowiedzi:

9

Jest wielu ludzi, którzy zbudowali komputery z dyskretnych tranzystorów, układów scalonych, przekaźników, a nawet lamp próżniowych. Obejmują one od maszyn 4-bitowych aż do 32-bitowych. 4-gorzkie oczywiście będą najłatwiejsze do zbudowania i zrobienia czegokolwiek. Pierwszym mikroprocesorem był 4-bitowy 4004 Intela .

Zacznę od wyszukania w Google „ domowych komputerów 4-bitowych ” (bez cudzysłowów).

Oto płytka z tranzystorowego 4-bitowego komputera:

wprowadź opis zdjęcia tutaj

Jeśli chodzi o pamięć, niektóre z tych projektów, które inaczej wykorzystują dyskretne tranzystory, „oszukują” i wykorzystują układy SRAM. Są niesamowicie tanie w przypadku umiarkowanych ilości pamięci, 32 KB to 3,28 USD i nie wymaga zegarów ani odświeżania.

Nawet jeśli reszta komputera używa przekaźników, użycie ich do pamięci będzie wyjątkowo drogie.

Jeśli możesz sobie poradzić z bitami 1K, możesz zbudować taki z tranzystorowymi przerzutnikami; 2048 2N3904 kosztuje 3 centy za sztukę (łącznie 60 USD plus inne składniki, które będą jeszcze tańsze - opory za 1/2 centa itp.). Możesz dostać płytki drukowane za 10 USD za sztukę, a następnie wynająć dziecko, aby je wypchać.

Przekaźnik komputerów pochodzą z powrotem całą drogę do końca 1930 roku, a jednym z pierwszych był Harvard Mark I . Stąd pochodzi nazwa architektury Harvarda (osobna przestrzeń programu i dane, w porównaniu do architektury von Neumanna łączącej te dwa elementy).

Najbardziej znanym komputerem przekaźnikowym do domowej produkcji jest komputer zbudowany przez Harry'ego Portera.

wprowadź opis zdjęcia tutaj

Sprawdź filmy z uruchomionego komputera. Przypomina mi starą elektromechaniczną centralę telefoniczną.

Oto część innego komputera przekaźnikowego domowej roboty o nazwie Zusie :

wprowadź opis zdjęcia tutaj

Dużo migających świateł.

I na koniec, oto link do wideo 4-bitowego sumatora, złożonego z 24 przekaźników. Takie sumatory są sercem ALU (arytmetycznej jednostki logicznej) w komputerze.

tcrosley
źródło
Niestety, „Badałem to przez wiele lat” został pochowany w drugim akapicie. Zredagowałem tytuł postu, aby wyraźnie stwierdzić, że chodzi mi o pamięć. Jeśli możesz sobie poradzić z bitami 1K, możesz zbudować jeden z tranzystorowymi przerzutnikami; 2048 2N3904 kosztuje 3 centy za sztukę (łącznie 60 USD plus inne składniki, które będą jeszcze tańsze - opory za 1/2 centa itp.). Możesz dostać płytki drukowane za 10 USD za sztukę, a następnie wynająć dziecko, aby je wypchać.
Tony Robinson
ctd ... jest to bliższe niż się spodziewałem, ale potrzebujesz dekodowania adresu i umieściłbym więcej tranzystorów na komórkę pamięci. Być może w ramach budżetu możliwa jest również jedna pamięć tranzystorowa „DRAM” kondensatora.
Tony Robinson
@TonyRobinson Próbowałem zająć się kwestią wykorzystania pamięci (jak przyznałeś), ale starałem się również dostarczyć informacji na temat chęci stworzenia komputera z dyskretnych tranzystorów i / lub przekaźników oraz zilustrowania, że ​​kilku udało się to osiągnąć. Powodzenia w twoich staraniach.
tcrosley,
6

Jeśli chcesz prostej pamięci, nie szukaj dalej niż flip-flop . Dzięki dwóm tranzystorom i czterem opornikom możesz mieć całą pamięć. Możesz także zrobić flip-flop z dwoma sprzężonymi ze sobą bramkami NOR lub po prostu kupić układ scalony z kilkoma przerzutnikami.

W rzeczywistości bardzo szybka pamięć podręczna procesora to w zasadzie kilka przerzutników zintegrowanych z procesorem.

Phil Frost
źródło
2
DRAM jest bardziej energochłonny, ponieważ wymaga ciągłego odświeżania, podczas gdy SRAM zużywa tylko niewielki prąd spoczynkowy w stanie bezczynności. Powodem stosowania kondensatorów jest to, że wymaga tylko jednego tranzystora na bit, co pozwala na znacznie większą gęstość pamięci.
Tom Carpenter
Masz rację - miałem na myśli proste japonki RTL. Przeredaguję, aby wyjaśnić.
Phil Frost
1
Układy scalone są niedostępne - ukrywają to, co naprawdę się dzieje. Chcę, aby każdy sygnał był odsłonięty tak daleko, jak to możliwe. Naprawdę nie dbam o moc - nie widzę problemu z zasilaniem, zostanie on podłączony do Raspberry Pi, więc moc będzie dostępna. Jedna pamięć DRAM tranzystorowa może być znacznie lepszym rozwiązaniem niż moje pomysły na kondensatory, jak sugerował wcześniejszy post - będę musiał dowiedzieć się, jakie tranzystory są potrzebne, aby utrzymać wystarczająco niski poziom wycieku ładunku (potrzebuję czasu odświeżania w kolejność minut). W przeciwnym razie klapki wyglądają jak kolejny najlepszy pomysł.
Tony Robinson
@TonyRobinson „Zostanie podłączony do Raspberry Pi, aby zapewnić dostępną moc”. - ...może. Zależy od maksymalnej mocy dostępnej przez Raspberry Pi oraz od rodziny logicznej, której planujesz użyć. (Spodziewałbym się, że przeciętny zasilacz
stołowy
2

Zgadzam się, że fajnie byłoby mieć kompletny system komputerowy z diodą LED dla każdego stanu, widoczny dla ludzkiego oka.

TIM 8 komputer przekaźnik wykorzystuje 8 kondensatorów, 2 diody i jeden przekaźnik SPDT na bajt w jego 12 bajtów pamięci RAM głównej pamięci (pamięć danych). (TIM 8 ma 16 bajtów pamięci zmiennej, jeśli dołączasz rejestry).

Komputer przekaźnikowy TIM 8 używa taśmy dziurkowanej do pamięci programu.

wprowadź opis zdjęcia tutaj

wprowadź opis zdjęcia tutaj

Czy można zastąpić te diody diodami LED, więc pojawia się krótki puls pokazujący, że dane wchodzą lub wychodzą z bajtu pamięci RAM? Być może jeśli system wystarczająco szybko odświeża pamięć DRAM, skanując każdy bajt pamięci RAM, to każdy stan wydaje się widoczny na tych diodach LED (chociaż technicznie tylko jeden bajt diod LED byłby aktywowany w dowolnym momencie). (Byłyby to dość wysokoprądowe diody LED, jeśli chcemy ŁADOWAĆ i PRZECHOWYWAĆ dane z tych kondensatorów do rejestrów przekaźnikowych).

Czy możliwe jest umieszczenie rezystora i diody LED na każdym kondensatorze pamięci bitów, naprawdę jednocześnie pokazując każdy bit stanu? (Byłyby to dość niskoprądowe diody LED i fizycznie duże kondensatory, jeśli chcemy, aby kondensator przechowywał dane wystarczająco długo, aby uzyskać rozsądną częstotliwość odświeżania. Niektóre diody LED można łatwo zobaczyć przy zaledwie 1 mA prądu. Z 1 sekundowym odświeżaniem cykl i kondensatory (szacowanie) początkowo naładowane do 12 V, mimo że (szacowanie) ładunek 7 V na kondensatorze wystarcza do naładowania sprzętu znajdującego się za nim, to kondensator potrzebuje wartości znamionowej C ~ = i * t / V = ​​1 mA * 1 s / (12 V - 7 V) = 200 uF.).

Będzie to oczywiście znacznie większe i pochłonie więcej ludzkiej pracy niż prawie jakakolwiek pamięć główna oparta na układach scalonych.

Davidcary
źródło
1

Dlaczego nie użyjesz zwykłego 8-bitowego procesora (np. 6502) i bardzo małej ilości pamięci (rejestry procesora, IC RAM i bardzo niewielkiej ilości pamięci zewnętrznej (np .: FD, HD lub dysk flash itp.) .), a następnie po prostu wyjaśnij za pomocą slajdów:

  1. Komponenty sprzętowe, podkomponenty i ich funkcje
  2. System operacyjny, programy systemowe i programy użytkownika
  3. Załaduj i wykonaj prosty program, aby dodać 2 liczby razem, zapisz wynik w każdym typie pamięci i wyświetl go na wyświetlaczu wideo.

Jeśli chcesz, aby urządzenie było tak proste i niedrogie, jak to możliwe, użyj systemu rozwoju mikrokontrolera, ponieważ system podstawowy, a nawet Arduino jest proste i niedrogie. Żaden ze studentów nie zbuduje prostego przekaźnika lub lampowego komputera próżniowego - nikt też nie powinien tego robić. Powinny zacząć od dobrej książki i Arduino dla podstawowego zrozumienia programowania. Następnie, jeśli chcą zająć się czytaniem / kontrolowaniem urządzeń zewnętrznych, mogą zagłębić się w konkretne programowanie lub inżynierię.

Oto dobry projekt do rozważenia na pomysły:
http://www.instructables.com/id/How-to-Build-an-8-Bit-Computer/?ALLSTEPS

DIYser
źródło
Chociaż dziś nazywamy to „ W65C02S
Ignacio Vazquez-Abrams,
Dzięki, pochodzę z 6502 dni (BBC micro, ale także pracowałem na ZX80). Zgadzam się, że na tym poziomie jest wiele do nauczenia, w rzeczy samej, właśnie ponownie czytałem Zaawansowany przewodnik użytkownika mikrokomputera BBC . Naprawdę chcę być poniżej tego poziomu, widzisz 5-bitową instrukcję, przeskakuje przez mały zestaw mikrokodu, który ustawia kilka bitów rejestrów i linii magistrali i wywołuje nieco szeregowy ALU, abyś mógł zobaczyć całą logikę dzieje się krok po kroku. Dlatego będzie najwolniejszy w historii.
Tony Robinson
Tak - będzie wolniej. Czy przejrzałeś szczegóły tego adresu: instructables.com/id/How-to-Build-an-8-Bit-Computer/?ALLSTEPS To jest naprawdę całkiem dobre i pozwala na unikalne dostosowanie twojego systemu.
DIYser
0

Zgadzam się, że fajnie byłoby mieć kompletny system komputerowy z diodą LED dla każdego stanu, widoczny dla ludzkiego oka, zamiast ukryty w tajemniczej czarnej skrzynce.

Możesz rozważyć użycie mniej lub bardziej standardowej magistrali pamięci o równoległych bitach - być może coś w rodzaju STEbus (magistrala IEEE-1000) .

Możesz rozważyć użycie zestawu układów scalonych, takich jak 74HC273 lub 74LS373 lub 74HC564, do przechowywania danych, dzięki czemu bieżący stan danych w układzie będzie zawsze widoczny na diodach LED podłączonych do pinów równoległego wyjścia. Następnie użyj ósemkowych buforów 3-stanowych (takich jak 74HC241 lub 74LS245) lub multiplekserów, również podłączonych do tych równoległych pinów wyjściowych, aby wprowadzić dane do magistrali. Kończysz z kilkoma układami dekodera typu N i 2 układami na 8 bitów pamięci. „To pozwala… zobaczyć, jakie dane są faktycznie przechowywane w każdym bajcie pamięci RAM”. - Pong Guy's SAP-1 Prosty jak to możliwe komputer z dyskretną pamięcią RAM . To samo ustawienie stosuje się do rejestrów w czterobitowym procesorze Jaromira lub rejestrów w 8-bitowym procesorze spaghetti Kyle'a .

Aktualne ceny (2016) od Mouser.com wynoszą około 0,11 USD / bit na 10 sztuk dla takiego układu (jeden oktalny zatrzask do przechowywania plus jeden oktalny 3-stanowy bufor na 8 bitów) oraz 0,05 USD / bit dla nowych diod LED w ilości 500. Dla 2 ^ 9 bajtów = 512 bajtów = 2 ^ 12 bitów = 4096 bitów, czyli (bardzo z grubsza)

  • 205 USD w diodach LED
  • 450 USD w pamięci masowej i buforze buforowym
  • $ ??? 1-z-N układów dekodera do wyboru odpowiedniego układu pamięci lub bufora; koszt desek, drutu, robocizny itp.

Być może uda Ci się zbudować (bardzo z grubsza) 64 bajty pamięci danych (tyle samo pamięci co Atmel ATTINY13 lub Microchip PIC16F570) za około 90 USD (co może zmieścić się w twoim budżecie 150 ~ = 100 £).

Możesz zrozumieć, dlaczego kuszące jest zastąpienie wszystkich tych układów pamięci i bufora oraz większości układów dekodera gotowym równoległym układem SRAM 32Kx8, który zapewnia znacznie więcej miejsca za mniej niż 10 USD. (Alliance AS6C1008-55PCN, Cypress CY7C199CN-15PXC itp.)

Może dlatego większość procesorów domowych, od małego 4-bitowego procesora Nibbler po imponujący komputer przekaźnikowy RC-3 http://www.computerculture.org/2012/09/rc-3-relay-computer/ http: / /www.computerculture.org/projects/rc3/ , są podłączone do układu SRAM czarnej skrzynki dla pamięci głównej.

Przy czymś takim jak standardowa szyna pamięci może być możliwe podłączenie do procesora kilku różnych kart pamięci jednocześnie:

  • Kilka bajtów całkowicie widocznej zmiennej pamięci i kilka bajtów całkowicie widocznej na stałe pamięci ROM programu, co powinno wystarczyć dla niektórych interesujących programów demonstracyjnych.
  • Układ SRAM, który można od czasu do czasu podłączyć do przechowywania programów lub danych lub obu tych elementów, jeśli nie masz jeszcze wystarczającej ilości całkowicie widocznej pamięci do ich przechowywania.
Davidcary
źródło
0

Oto kolejna propozycja podobnego projektu, który może być opłacalny - zbudowanie maszyny Turinga. Chodzi o najprostszą możliwą maszynę obliczeniową

Dirk Bruere
źródło