Komputer 8-bitowy

Dział poświęcony nielampowym urządzeniom, układom i elementom "retrotechnicznym"

Moderatorzy: gsmok, Romekd, tszczesn

Awatar użytkownika
jethrotull
moderator
Posty: 3874
Rejestracja: sob, 3 czerwca 2006, 21:51
Lokalizacja: Poznań

Re: Komputer 8-bitowy

Post autor: jethrotull »

Bardzo mnie to cieszy (choć nie wiem o jakich Cobrach mowa).

Wpadłem na pomysł jak można zaimplementować ROM, RAM i pamięć masową używając tylko jednego czipu pamięci. W Mouserze można kupić układ AS6C4008: statyczną pamięć 512Kx8bit, i to uwaga: w wersji do montażu przewlekanego (DIP32)! Jest to największa pamięć jaką udało mi się znaleźć w obudowie DIP.
https://pdf1.alldatasheet.com/datasheet ... 55PCN.html
Według specyfikacji, układ ten specjalnie nadaje się do podtrzymywania pamięci baterią. Po dodaniu baterii i diody miałbym do dyspozycji 512KB nieulotnej pamięci.

Pierwsze 16KB służyłoby za ROM, zespół bramek chroniłby ten obszar przed przypadkowym zapisem. Próba takiego zapisu powodowałaby zgłoszenie przerwania niemaskowalnego, które pozwalałoby na obsłużenie błedu dostępu do pamięci. Hurra, mamy ochronę pamięci! Kolejne 16KB stanowiłby RAM ogólnego przeznaczenia. Łącznie, pierwsze 32KB przestrzeni adresowej byłoby na stałe zmapowane na pierwsze 32KB układu AS6C4008. Linie A18-A15 pamięci byłby połączone do masy przez rezystory.

W momencie kiedy procesor próbowałby się dostać do górnych 32KB przestrzeni adresowej (linia A15 w stanie wysokim), aktywowany jest rejestr 74HCT573, który podaje pewną (zapisaną wcześniej rozkazem OUT) wartość na cztery najstarsze bity adresowe pamięci. Tym samym, górne 32KB przestrzeni adresowej może być zmapowane na jeden z 15-stu trzydziestwodwukilowych banków pamięci.

Można to wykorzystać żeby po prostu zaadresować łącznie 496 (512 odjąć 16KB "ROMu") kilobajtów pamięci. Nieźle jak na komputer ośmiobitowy. Ale zaraz, przecież ta pamięć jest nieulotna! Można więc zrealizować przy jej użyciu pamięć masową. Bardzo prostym rozwiązaniem jest stworzenie "systemu plików", w którym każdy z 15-stu banków pamięci byłby traktowany jako osobny plik o maksymalnej wielkości 32KB. Załadowanie takiego pliku byłoby niezwykle proste: jeden rozkaz OUT w celu ustawienia wartości na 74HCT573 i voila: cały plik magicznie pojawia się w górnej połowie naszej przestrzeni adresowej! Niepotrzebne jest jakiekolwiek sekwencyjne czytanie pliku. Jeszcze łatwiejszy jest zapis do pliku. Nie trzeba robić dosłownie nic: każda zmiana 32KB pamięci jest automatycznie podtrzymywana w bieżącym banku.

Plusy:
- ROM, RAM i pamięć masowa w jednym czipie
- Eleganckie i proste dekodowanie pamięci (CE połączone bezpośrednio z MEMRQ)
- Sprytny system plików, z możliwością programowego rozszerzenia na jeszcze sprytniejszy, np. po kilka małych plików na bank
- Możliwość dowolnego balansowania między dostęnym rozmiarem RAMu i dysku bez zmian w sprzęcie

Minusy:
- Musiałbym zbudować programator na Arduino żeby zaprogramować ROM, bo TL866 nie obsługuje tej pamięci
- spora liczba układów logicznych potrzebnych żeby zrealizować ochronę pamięci.
nvram.png

Awatar użytkownika
jethrotull
moderator
Posty: 3874
Rejestracja: sob, 3 czerwca 2006, 21:51
Lokalizacja: Poznań

Re: Komputer 8-bitowy

Post autor: jethrotull »

Aby uniknąć konieczności budowy programatora do AS6C4008, oraz konieczności wyjmowania całej kości razem z baterią w celu zaprogramowania, wymyśliłem kolejne rozwiązanie:
- pierwsze 32KB to zwykły EEPROM 28C256
- kolejne 16KB to RAM ogólnego przeznaczenia, zmapowane na stałe na pierwsze 16KB AS6C4008
- ostatnie 16KB to 31 przełączalnych banków, na tym samym AS6C4008
Tym samym liczba dużych czipów wzrośnie mi o jeden, bo potrzebuję teraz osobnego EEPROMu, za to liczba czipów realizujących logikę spadnie, bo nie będzie trzeba robić "ochrony pamięci".
RAM512K.png
Z innych nowin: przysłali mi wreszcie YM2413, więc chyba najbliższy subprojekt to szybka karta dźwiękowa.

Einherjer
1250...1874 posty
1250...1874 posty
Posty: 1476
Rejestracja: pt, 22 stycznia 2010, 18:34
Lokalizacja: Wrocław/Nysa

Re: Komputer 8-bitowy

Post autor: Einherjer »

Nie myślałeś o tym, żeby logikę do "klejenia" ze sobą pamięci i MCU robić na małej płytce z CPLD?

Awatar użytkownika
jethrotull
moderator
Posty: 3874
Rejestracja: sob, 3 czerwca 2006, 21:51
Lokalizacja: Poznań

Re: Komputer 8-bitowy

Post autor: jethrotull »

Myślałem, ale nie mam z tym żadnego doświadczenia, zresztą to raptem cztery małe czipy, wliczając dekodowanie ROMu i We/Wy, więc nie wiem czy jest się o co bić. Bardziej myślałem o czymś w rodzaju PLA żeby sterować klawiaturą, bo tam liczba dyskretnych układów logicznych jest większa.

To powiedziawszy, jeśli możesz doradzić jak zrealizować na CPLD pięciobitowy zatrzask z wyjściem trzystanowym, sześć bramek OR i trzy bramki AND to jak najbardziej jestem zainteresowany. Moje ograniczenia są takie, że układ musi być programowalny posiadanym przez mnie programatorem i dostępny w wersji do montażu przewlekanego.

ODPOWIEDZ