Komputer 8-bitowy

Komputery retro, konsole do gier itd.

Moderatorzy: gsmok, tszczesn, Romekd, Einherjer, OTLamp

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

Komputer 8-bitowy

Post autor: jethrotull »

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
IMG_20210916_113844763.jpg
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:
IMG_20210916_114038644.jpg
i RAMu:
IMG_20210916_114024556.jpg
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:
IMG_20210916_113920909.jpg
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:
IMG_20210916_114014024.jpg
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.
Załączniki
IMG_20210916_113912012.jpg
CHOPIN66
1875...2499 postów
1875...2499 postów
Posty: 2072
Rejestracja: pn, 10 sierpnia 2009, 17:47
Lokalizacja: Gdańsk

Re: Komputer 8-bitowy

Post autor: CHOPIN66 »

Kartę dźwiękową zrobiłbym na YM3812 ( da lepszy efekt niż YM2413 gdyż 2413 jest oszczędnościową wersją 3812 pozbawioną części rejestórw) , a skoro 3812 działał z C64 to zadziała i z procesorem Z80. Schemat wrzucę po aktualizacji forum bo nie wiadomo czy forum nie będzie przeniesione tymczasowo gdzie indziej .
Awatar użytkownika
jethrotull
moderator
Posty: 3998
Rejestracja: sob, 3 czerwca 2006, 21:51
Lokalizacja: Poznań

Re: Komputer 8-bitowy

Post autor: jethrotull »

Brałem pod uwagę YM3812, ale drugim imieniem tego projektu jest "prostota".
Awatar użytkownika
Jado
1250...1874 posty
1250...1874 posty
Posty: 1867
Rejestracja: pn, 15 maja 2006, 11:06
Lokalizacja: Warszawa
Kontakt:

Re: Komputer 8-bitowy

Post autor: Jado »

jethrotull pisze: pt, 17 września 2021, 19:48 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.
Witam,
Proponuję użycie KiCad'a jako programu do rysowania schematów i projektowania płytek PCB.
Na co dzień doskonale się sprawdza w firmie.
https://www.kicad.org/

Ps. Twoje układy przypominają mi moją starą konstrukcję na Z80, którą kiedyś tu prezentowałem jako ciekawostkę ;-)
Pozdrawiam

Jado.

"Kto chce szuka sposobu, kto nie chce - szuka powodu"
Awatar użytkownika
Tomasz Gumny
1875...2499 postów
1875...2499 postów
Posty: 2288
Rejestracja: pn, 1 stycznia 2007, 23:18
Lokalizacja: Trzcianka/Poznań
Kontakt:

Re: Komputer 8-bitowy

Post autor: Tomasz Gumny »

jethrotull pisze: pt, 17 września 2021, 19:48[...] jest też opcja ręcznego sterowania zegarem za pomocą przycisku (jedno wciśnięcie - jeden takt zegara).
Głowy nie dam, ale coś mi chodzi po głowie, że Z80 wykonane w technologii NMOS miały podawaną minimalną częstotliwość taktowania, bo wewnętrzne rejestry nie były statyczne -sprawdzę. Natomiast na pewno warto mieć przycisk do NMI, bo to pozwala zrobić prace krokową.
Tomek
Awatar użytkownika
jethrotull
moderator
Posty: 3998
Rejestracja: sob, 3 czerwca 2006, 21:51
Lokalizacja: Poznań

Re: Komputer 8-bitowy

Post autor: jethrotull »

Tomasz, mój obecny zegar ma częstotliwość ok 1Hz i procesor działa bez problemu, co wskazywałoby że jest w pełni statyczny.
anodeon
100...124 posty
100...124 posty
Posty: 103
Rejestracja: wt, 2 sierpnia 2016, 12:28
Lokalizacja: Kraków

Re: Komputer 8-bitowy

Post autor: anodeon »

Dzień dobry.
Tomasz Gumny pisze: sob, 18 września 2021, 17:00 Głowy nie dam, ale coś mi chodzi po głowie, że Z80 wykonane w technologii NMOS miały podawaną minimalną częstotliwość taktowania,
Bardzo dobrze Pan pamięta. Natomiast:
Tomasz Gumny pisze: sob, 18 września 2021, 17:00 bo wewnętrzne rejestry nie były statyczne -sprawdzę. Natomiast na pewno warto mieć przycisk do NMI, bo to pozwala zrobić prace krokową.
Generalnie bank rejestrów jest w obu wersjach (CMOS/NMOS) "statyczny" (z dokładnością/możliwością do wykonania inwertera w danej technologii...).

Nie wdając się tutaj w szczegóły budowy na poziomie krzemu - chociaż cała struktura procesora w wersji NMOS jest też "statyczna", w dokumentacji faktycznie jest ograniczenie na maksymalny okres sygnału taktującego (np. czas trwania stanu wysokiego maks. 200 μs).

Oczywiście we wszystkich przypadkach możliwe jest zatrzymywanie procesora, jak i jego praca krokowa - jak się to poprawnie zrobi. Nie trzeba do tego przerwania NMI.

A.
Awatar użytkownika
tszczesn
moderator
Posty: 11124
Rejestracja: wt, 12 sierpnia 2003, 09:14
Lokalizacja: Otwock
Kontakt:

Re: Komputer 8-bitowy

Post autor: tszczesn »

anodeon pisze: ndz, 19 września 2021, 10:25 Generalnie bank rejestrów jest w obu wersjach (CMOS/NMOS) "statyczny" (z dokładnością/możliwością do wykonania inwertera w danej technologii...).

Nie wdając się tutaj w szczegóły budowy na poziomie krzemu - chociaż cała struktura procesora w wersji NMOS jest też "statyczna", w dokumentacji faktycznie jest ograniczenie na maksymalny okres sygnału taktującego (np. czas trwania stanu wysokiego maks. 200 μs).
To skąd to wymaganie na maksymalny czas trwania?
anodeon
100...124 posty
100...124 posty
Posty: 103
Rejestracja: wt, 2 sierpnia 2016, 12:28
Lokalizacja: Kraków

Re: Komputer 8-bitowy

Post autor: anodeon »

Brak możliwości edycji robi swoje.

Uściślę: informacja o statycznej konstrukcji pochodzi z dokumentacji procesora µPD780C firmy NEC. To jest NMOSowy klon Z80 i ma pewne różnice w stosunku do oryginału - można go nawet "wykryć" programowo (swoją drogą: można również wykryć wersje CMOS/NMOS).

Natomiast moja wiedza co do "statyczności" dotyczy tylko banku rejestrów ogólnego przeznaczenia.

Możliwe, że we wczesnych wersjach NMOS nie wszystko jednak było statyczne oraz stosowano obciążenia z bootstrapem (więc i pojemnością) aby zapewnić sensowne parametry przełączania linii sygnałowych? Przecież struktury tych układów ewoluowały na przestrzeni lat, rozwoju technologii (różnych producentów...).
Awatar użytkownika
Michal_Pol
250...374 postów
250...374 postów
Posty: 330
Rejestracja: pn, 4 kwietnia 2011, 10:38

Re: Komputer 8-bitowy

Post autor: Michal_Pol »

Czym programujesz Eprom?
W sieci widziałem proste bootloadery, piszesz wsad(hex) w kompie i wrzucasz do pamięci via UART i Z80 a następnie uruchamiasz z konkretnego adresu.
Awatar użytkownika
Tomasz Gumny
1875...2499 postów
1875...2499 postów
Posty: 2288
Rejestracja: pn, 1 stycznia 2007, 23:18
Lokalizacja: Trzcianka/Poznań
Kontakt:

Re: Komputer 8-bitowy

Post autor: Tomasz Gumny »

Zerknąłem do kilku kart katalogowych i oto wynik:
Załączniki
z80clk.jpg
Tomek
Awatar użytkownika
jethrotull
moderator
Posty: 3998
Rejestracja: sob, 3 czerwca 2006, 21:51
Lokalizacja: Poznań

Re: Komputer 8-bitowy

Post autor: jethrotull »

Michal_Pol pisze: pn, 20 września 2021, 08:58 Czym programujesz Eprom?
Mam programator TL866
Awatar użytkownika
jethrotull
moderator
Posty: 3998
Rejestracja: sob, 3 czerwca 2006, 21:51
Lokalizacja: Poznań

Re: Komputer 8-bitowy

Post autor: jethrotull »

Tomasz Gumny pisze: pn, 20 września 2021, 11:48 Zerknąłem do kilku kart katalogowych i oto wynik [...]
Tomek, oczywiście masz rację. Ciekawy jest jednak przypis, który mówi że procesor jest statyczny. Producent nie gwarantuje, że okresy zegara niż wyspecyfikowane będą działać (ściślej mówiąc, przypis dotyczy szerokości pulsu zegara). Ale działają, przynajmniej na moich procesorach.

Nota bene, typowy pierwszy projekt na Z80 to prosty tester - D0-D7 podłączony do masy, A0-AN do diód świecących a CLK do prostego zegara o częstotliwości rzędu pojedynczych herców. Procesor wykonuje NOPy (bo $00 to opcode NOP), a na diodach można obserwować inkrementację adresów. To bardzo popularny w Internecie projekt.

Tak czy owak, jest to dla mnie problem akademicki, w praktyce mój procesor niedługo otrzyma prawdziwy zegar kwarcowy.
Awatar użytkownika
jethrotull
moderator
Posty: 3998
Rejestracja: sob, 3 czerwca 2006, 21:51
Lokalizacja: Poznań

Re: Komputer 8-bitowy

Post autor: jethrotull »

Jado pisze: sob, 18 września 2021, 12:56 Ps. Twoje układy przypominają mi moją starą konstrukcję na Z80, którą kiedyś tu prezentowałem jako ciekawostkę ;-)
No, ten twój to jednak znacznie bardziej zaawansowany i ambitny.
Proponuję użycie KiCad'a jako programu do rysowania schematów i projektowania płytek PCB.
Czy w tym KiCadzie jest jakaś opcja żeby przy przesuwaniu układów przesuwał też połączenia zamiast rozłączać je?
Awatar użytkownika
Jado
1250...1874 posty
1250...1874 posty
Posty: 1867
Rejestracja: pn, 15 maja 2006, 11:06
Lokalizacja: Warszawa
Kontakt:

Re: Komputer 8-bitowy

Post autor: Jado »

Witam,

W Kicadzie (póki co, bo projekt stale się rozwija) nie ma opcji trzymania linii połączeń podczas przesuwania elementów - jak się domyślam chodzi o moduł rysowania schematów. Można zaznaczać całe bloki i je przesuwać czy kopiować - wówczas połączenia wewnątrz takiego bloku nie ulegają rozłączeniu. Zamiast długich linii wygodniej jest stosować etykiety przypisane do konkretnych pinów - wtedy przesuwanie bloków staje się jeszcze łatwiejsze. Oczywiście to najlepiej zdaje egzamin przy cyfrówce, przy analogówce standardowo łączy się najbliższe elementy liniami.
Pozdrawiam

Jado.

"Kto chce szuka sposobu, kto nie chce - szuka powodu"
ODPOWIEDZ