Komputer 8-bitowy
: pt, 17 września 2021, 19:48
Cześć,
postanowiłem zbudować komputer bazujący na prozesorze Z80. Po skonstruowaniu naprędce działającego prototypu składającego się z procesora, EPROMu 27c256 i kilku diod świecących przystąpiłem do budowy bardziej perspektywicznej i modułowej konstrukcji, która pozwoliłaby łatwo testować rozmaite urządzenia peryferyjne. Idea była prosta: płyta główna na której jest sam procesor, szyna składająca się z wszystkich czterdziestu pinów procesora i wtykane karty z ROMem, RAMem, zegarem, urządzeniami wejścia-wyjścia. W rzeczywistości, płytki mają 10cm szerokości, a że cal ma nieco więcej niż 2.5cm, magistrala mieści jedynie 39 linii, zamist planowanych 40stu. Pominąłem linię REFRESH, jako że nie mam zamiaru stosować pamięci dynamicznej Mapa pamięci niesłychanie prosta: dolne 32KB to ROM na układzie 27c256, górne 32KB to RAM na 62256. Stąd dekodowanie adresów można zrealizować obserwując tylko stan A15 na procesorze.
Płytka ROMu: i RAMu: Zegar, póki co, do celów rozwojowych jest realizowany jako oscylator relaksacyjny na 74hct14, jest też opcja ręcznego sterowania zegarem za pomocą przycisku (jedno wciśnięcie - jeden takt zegara). Docelowo będzie oscylator kwarcowy na kilka MHz. Na płytce jest też przycisk resetu procesora: Ostatnim, póki co elementem komputera jest płytka diagnostyczna pokazująca stan magistrali danych D0-D7 w momencie ostatniej operacji zapisu, a także linii MRQ, IORQ, RD i WR, oraz czterech najmłodszych linii adresowych, które pozwalają stwierdzić czy procesor pobiera rozkazy z coraz wyższych komórek pamięci oraz wykonuje skoki. Wartość z magistrali danych jest zatrzaskiwana w rejestrze 74hct573, a stan pozostałych linii jest wizualizowany w vzasie rzeczywistym za pośrednictwem bufora 74hct541. Kartę tę można wykorzystać jako prymitywne urządzenie wejścia-wyjścia, brak w niej jednak jakiegokolwiek dekodowania adresu, pokazuje więc ona wszystkie operacje zapisu, włącznie z odkładaniem na stos adresów powrotnych przy wywoływaniu funkcji, jak i rozkazów OUT i LD: Obecnie, działanie komputera polega na tym, że "wypisuje" on na diody świecące tekst "Hello world" w binarnym kodzie ASCII. "Hello" i "world" są wypisywane osobnymi wywołaniami funkcji, a to w celu zweryfikowania, że stos, a tym samym RAM, działają poprawnie.
W następnej kolejności planuję wyświetlacz LCD na układzie HD77840, klawiaturę alfanumeryczną zbudowaną od zera na układach serii 74hctXXX (mam ją już zasymulowaną w Logisim Evolution) oraz zegar na oscylatorze kwarcowym. W dalszej perspektywie będzie zrobiony interfejs RS232 na układzie DART, interfejs równoległy na układzie PIO, pamięć masowa (być może na jakimś NVRAM lub pamięci flash) i karta dźwiękowa na YM2413.
Nie mam póki co żadnych schematów, byłbym wdzięczny za zasugerowanie jakiegoś darmowego programu, którym można tworzyć schematy układów cyfrowych.
postanowiłem zbudować komputer bazujący na prozesorze Z80. Po skonstruowaniu naprędce działającego prototypu składającego się z procesora, EPROMu 27c256 i kilku diod świecących przystąpiłem do budowy bardziej perspektywicznej i modułowej konstrukcji, która pozwoliłaby łatwo testować rozmaite urządzenia peryferyjne. Idea była prosta: płyta główna na której jest sam procesor, szyna składająca się z wszystkich czterdziestu pinów procesora i wtykane karty z ROMem, RAMem, zegarem, urządzeniami wejścia-wyjścia. W rzeczywistości, płytki mają 10cm szerokości, a że cal ma nieco więcej niż 2.5cm, magistrala mieści jedynie 39 linii, zamist planowanych 40stu. Pominąłem linię REFRESH, jako że nie mam zamiaru stosować pamięci dynamicznej Mapa pamięci niesłychanie prosta: dolne 32KB to ROM na układzie 27c256, górne 32KB to RAM na 62256. Stąd dekodowanie adresów można zrealizować obserwując tylko stan A15 na procesorze.
Płytka ROMu: i RAMu: Zegar, póki co, do celów rozwojowych jest realizowany jako oscylator relaksacyjny na 74hct14, jest też opcja ręcznego sterowania zegarem za pomocą przycisku (jedno wciśnięcie - jeden takt zegara). Docelowo będzie oscylator kwarcowy na kilka MHz. Na płytce jest też przycisk resetu procesora: Ostatnim, póki co elementem komputera jest płytka diagnostyczna pokazująca stan magistrali danych D0-D7 w momencie ostatniej operacji zapisu, a także linii MRQ, IORQ, RD i WR, oraz czterech najmłodszych linii adresowych, które pozwalają stwierdzić czy procesor pobiera rozkazy z coraz wyższych komórek pamięci oraz wykonuje skoki. Wartość z magistrali danych jest zatrzaskiwana w rejestrze 74hct573, a stan pozostałych linii jest wizualizowany w vzasie rzeczywistym za pośrednictwem bufora 74hct541. Kartę tę można wykorzystać jako prymitywne urządzenie wejścia-wyjścia, brak w niej jednak jakiegokolwiek dekodowania adresu, pokazuje więc ona wszystkie operacje zapisu, włącznie z odkładaniem na stos adresów powrotnych przy wywoływaniu funkcji, jak i rozkazów OUT i LD: Obecnie, działanie komputera polega na tym, że "wypisuje" on na diody świecące tekst "Hello world" w binarnym kodzie ASCII. "Hello" i "world" są wypisywane osobnymi wywołaniami funkcji, a to w celu zweryfikowania, że stos, a tym samym RAM, działają poprawnie.
W następnej kolejności planuję wyświetlacz LCD na układzie HD77840, klawiaturę alfanumeryczną zbudowaną od zera na układach serii 74hctXXX (mam ją już zasymulowaną w Logisim Evolution) oraz zegar na oscylatorze kwarcowym. W dalszej perspektywie będzie zrobiony interfejs RS232 na układzie DART, interfejs równoległy na układzie PIO, pamięć masowa (być może na jakimś NVRAM lub pamięci flash) i karta dźwiękowa na YM2413.
Nie mam póki co żadnych schematów, byłbym wdzięczny za zasugerowanie jakiegoś darmowego programu, którym można tworzyć schematy układów cyfrowych.