Komputer jednopłytkowy na mikroprocesorze Z80 - konstrukcja własna

Komputery retro, konsole do gier itd.

Moderatorzy: gsmok, tszczesn, Romekd, Einherjer, OTLamp

Awatar użytkownika
Danilewicz
375...499 postów
375...499 postów
Posty: 479
Rejestracja: pn, 27 sierpnia 2012, 20:43
Lokalizacja: Legnica

Komputer jednopłytkowy na mikroprocesorze Z80 - konstrukcja własna

Post autor: Danilewicz »

Za lat pacholęcych przeczytałem w gazecie jak mi się wydaje "Audio-Video" artykuł o samodzielnej konstrukcji komputera, chyba Cobra. Pierwsza reakcja "Co? Jak? To tak można?". W głowie zakiełkował pomysł zrobienia czegokolwiek na procesorze 8-bitowym, ale wtedy brakowało mi wiedzy i umiejętności żeby zrobić cokolwiek chociaż minimalnie przypominającego mikrokomputer. Pomysł w głowie pozostał, minęło kilkanaście lat aż pół roku temu przyszedł odpowiedni moment jego realizację. Skonstruowałem prosty komputerek jednopłytkowy o następujących parametrach:
-procesor Z80 z zegarem 4.9152MHz
-16kB ROMu (właściwie 64kB przełączane zworkami)
-64kB RAMu
-port szeregowy 8251A
-timer 8253
-port równoległy 8255
-port wyjściowy 74273

Fotografia komputera
Fotografia komputera

Domyślnie pierwsze 16kB RAMu jest przysłonięte przez ROM, można je odsłonić przez ustawienie pierwszego bitu zatrzasku 74273. Pozostałe 7 bitów jest wolne. Przydały się do migania diodami przy pierwszych uruchomieniach. Na zewnątrz zostały wyprowadzone prawie wszystkie dostępne sygnały: szyny adresowa i danych, sygnały sterujące, wolne wyjścia dekodera adresów, USART w postaci TTL i RS-232, wolne wyścia timera 8253, porty równoległe układu 8255, wolne linie zatrzasku 74273. Dlaczego prawie wszystkie? Bo zamiast wyprowadzić układy MEMRQ, IORQ, WR i RD wyprowadziłem już zdekodowane MEMR, MEMW, IOR, IOW - nie są trójstanowe, więc na ten moment nie jest możliwe podłączenie dodatkowego układu przejmującego kontrolę nad szyną systemową. Jest to konieczne w przypadku DMA i przydatne przy CRTC. Jak już jestemy przy wpadkach - zapomniałem też podłączyć kilku rezystorów podciągających, zasilania do układu MAX232 i pomyliłem linie portu szeregowego :roll: Na szczęście nie jest to nic czego nie dałoby się poprawić cięciem ścieżek i lutowaniem przewodów :wink: Przewody widoczne na zdjęciu to połączenie pierwszego kanału timera do wejścia NMI procesora.

Ostatnio pracuję głównie nad oprogramowaniem, które piszę w C. "Hurr-durr! Dlaczego nie assembler?!?! Przecież C na Z80 jest niewydajne!". Z prostego powodu - projekt powstaje całkowicie dla przyjemności. W C radzę sobie całkiem nieźle, a assemblera znam bardzo słabo. Może przyjdzie moment, że spróbuję, ale na razie zostaje tak jak jest.
Kod źródłowy jest znajduje się w repozytorium GITa, tutaj: https://gitlab.com/mdanilewicz/z80-monitor-program
Jest to prosty monitor, który umożliwia podglądanie i edytowanie zawartości pamięci, ładowanie danych przez port szeregowy i uruchamianie załadowanych programów.

Co dalej? W miarę nowych pomysłów będę kontynuował klepanie kodu. Od strony sprzętowej, jeśli czas pozwoli spróbuję pokombinować z układem CRTC 6845 lub/i obsługą stacji dyskietek przy pomocy kontrolera 8272. Do tego drugiego będzie mi potrzebny separator danych, którego jeszcze nie mam. Znalazłem ogłoszenie z FDC9229, może uda się kupić. Chyba, że któryś z kolegów ma :wink:

Schematy udostępnię w bliżej nieokreślonej przyszłości po naniesieniu poprawek.
Pozdrawiam!
Marcel Danilewicz
ballasttube
3125...6249 postów
3125...6249 postów
Posty: 3311
Rejestracja: czw, 25 marca 2010, 00:12

Re: Komputer jednopłytkowy na mikroprocesorze Z80 - konstrukcja własna

Post autor: ballasttube »

Gratuluję, Kolego Danilewicz.
Awatar użytkownika
AZ12
3125...6249 postów
3125...6249 postów
Posty: 5421
Rejestracja: ndz, 6 kwietnia 2008, 15:41
Lokalizacja: 83-130 Pelplin

Re: Komputer jednopłytkowy na mikroprocesorze Z80 - konstrukcja własna

Post autor: AZ12 »

Witam

Jaki jest pobór prądu przez ten komputer?
Ratujmy stare tranzystory!
Awatar użytkownika
Danilewicz
375...499 postów
375...499 postów
Posty: 479
Rejestracja: pn, 27 sierpnia 2012, 20:43
Lokalizacja: Legnica

Re: Komputer jednopłytkowy na mikroprocesorze Z80 - konstrukcja własna

Post autor: Danilewicz »

@ballasttube:
Dziękuję :)

@AZ12:
Ok. 300mA przy nieobciążonych wyjściach portu równoległego.
Pozdrawiam!
Marcel Danilewicz
Radiowiec
500...624 posty
500...624 posty
Posty: 570
Rejestracja: pt, 23 lutego 2018, 17:13

Re: Komputer jednopłytkowy na mikroprocesorze Z80 - konstrukcja własna

Post autor: Radiowiec »

Kawał fajnej roboty! Ile czasu spędziłeś na projektowaniu tego cacuszka?
A dlaczego EEPROM siedzi w ZIFie? Będziesz używał tego jako programatora? Czy dla wygody zastosowałeś ZIF bo będziesz programował gdzie indziej?
Pozdrowienia
Awatar użytkownika
Danilewicz
375...499 postów
375...499 postów
Posty: 479
Rejestracja: pn, 27 sierpnia 2012, 20:43
Lokalizacja: Legnica

Re: Komputer jednopłytkowy na mikroprocesorze Z80 - konstrukcja własna

Post autor: Danilewicz »

Radiowiec pisze: sob, 27 stycznia 2024, 00:37 Kawał fajnej roboty! Ile czasu spędziłeś na projektowaniu tego cacuszka?
A dlaczego EEPROM siedzi w ZIFie? Będziesz używał tego jako programatora? Czy dla wygody zastosowałeś ZIF bo będziesz programował gdzie indziej?
Pozdrowienia
Dzięki :) Nie liczyłem ile czasu zeszło na projektowanie. Raczej tygodnie niż dni, ale siadałem do tego wieczorami jak mi się akurat zachciało. Zastosowałem podstawkę ZIF, bo wiedziałem, że na początku EEPROM będzie często programowany i szkoda by było go uszkodzić. Nie jest droga, a jak powstanie finalna wersja softu to mogę ją wymienić na zwykłą.
Pozdrawiam!
Marcel Danilewicz
Awatar użytkownika
jethrotull
3125...6249 postów
3125...6249 postów
Posty: 4013
Rejestracja: sob, 3 czerwca 2006, 21:51
Lokalizacja: Poznań

Re: Komputer jednopłytkowy na mikroprocesorze Z80 - konstrukcja własna

Post autor: jethrotull »

Fajne, skąd wziąłeś taką ładną płytkę?
Planujesz wyjście graficzne, czy tylko komunikacja przez UART?
Przymierzałeś się do sportowania CP/M?
Awatar użytkownika
Danilewicz
375...499 postów
375...499 postów
Posty: 479
Rejestracja: pn, 27 sierpnia 2012, 20:43
Lokalizacja: Legnica

Re: Komputer jednopłytkowy na mikroprocesorze Z80 - konstrukcja własna

Post autor: Danilewicz »

jethrotull pisze: śr, 20 marca 2024, 15:56 Fajne, skąd wziąłeś taką ładną płytkę?
Planujesz wyjście graficzne, czy tylko komunikacja przez UART?
Przymierzałeś się do sportowania CP/M?
Płytkę zamówiłem w jlcpcb. Wyjście graficzne będzie jak kolejny raz przysiądę do tego projektu - ostatnio słabo stoję z czasem. Kupiłem kilka kontrolerów CRT, m.in. ruski klon Intela 8275 i chyba właśnie na nim zrobię pierwsze podejście. Nie wymaga DMA, ma dwie wewnętrzne kolejki po 80 znaków dzięki czemu można wysyłać dane po jednej linii w przerwaniach. Na pewno będę próbował portować CP/M, ale najpierw chciałbym dodać obsługę stacji dyskietek, a do tego dalej brakuje mi separatora danych :( Jak długo nie będę mógł znaleźć to może spróbuję z interfejsem ATA i kartą CF.
Pozdrawiam!
Marcel Danilewicz
Awatar użytkownika
jethrotull
3125...6249 postów
3125...6249 postów
Posty: 4013
Rejestracja: sob, 3 czerwca 2006, 21:51
Lokalizacja: Poznań

Re: Komputer jednopłytkowy na mikroprocesorze Z80 - konstrukcja własna

Post autor: jethrotull »

8275 nie wymaga DMA?
Awatar użytkownika
Danilewicz
375...499 postów
375...499 postów
Posty: 479
Rejestracja: pn, 27 sierpnia 2012, 20:43
Lokalizacja: Legnica

Re: Komputer jednopłytkowy na mikroprocesorze Z80 - konstrukcja własna

Post autor: Danilewicz »

jethrotull pisze: czw, 21 marca 2024, 16:53 8275 nie wymaga DMA?
Wymaga :) Literówka, chodziło mi o mniej skomplikowany 8276.
Pozdrawiam!
Marcel Danilewicz
Awatar użytkownika
jethrotull
3125...6249 postów
3125...6249 postów
Posty: 4013
Rejestracja: sob, 3 czerwca 2006, 21:51
Lokalizacja: Poznań

Re: Komputer jednopłytkowy na mikroprocesorze Z80 - konstrukcja własna

Post autor: jethrotull »

Ciekawy układ, nie znałem go. Działa chyba podobnie do 8275, oprócz tego że nie wymaga DMA, aczkolwiek zapewne przesyłanie znaków zajmuje większy procent czasu procesora w tym przypadku.

Masz może schemat całego komputera?
Awatar użytkownika
czyt
375...499 postów
375...499 postów
Posty: 397
Rejestracja: sob, 28 kwietnia 2012, 23:42
Lokalizacja: Polska Litwa Ruś (i inne : ]
Kontakt:

Re: Komputer jednopłytkowy na mikroprocesorze Z80 - konstrukcja własna

Post autor: czyt »

jethrotull pisze: czw, 21 marca 2024, 22:14 Ciekawy układ, nie znałem go. Działa chyba podobnie do 8275, oprócz tego że nie wymaga DMA, aczkolwiek zapewne przesyłanie znaków zajmuje większy procent czasu procesora w tym przypadku.

Masz może schemat całego komputera?
AV 2/88 (1988), Henryk Grzęda, Układ do współpracy ...Cobra ... jako drukarką - - tym tropem, naeleży podążać. Archiwum. Józef
"... UF21 - AGA-sekretarzyk", UY1N - mogę zaoferować PCL, PL500RFT, diody WN/lampowe, telewizyjne.
Awatar użytkownika
Danilewicz
375...499 postów
375...499 postów
Posty: 479
Rejestracja: pn, 27 sierpnia 2012, 20:43
Lokalizacja: Legnica

Re: Komputer jednopłytkowy na mikroprocesorze Z80 - konstrukcja własna

Post autor: Danilewicz »

jethrotull pisze: czw, 21 marca 2024, 22:14 Masz może schemat całego komputera?
Umieściłem na dysku google, bo pliki są zbyt duże żeby je dołączyć do posta:
https://drive.google.com/drive/folders/ ... sp=sharing
(pinta się z jakiegoś powodu wykrzacza przy skalowaniu)
WAŻNA INFORMACJA:
-Linie CTS/RTS i RxD/RxD po stronie RS232 są zamienione miejscami
-Generator sygnału zegarowego na układzie U2.2 nie działa i został zamieniony na gotowy generator kwarcowy w metalowej obudowie
Pozdrawiam!
Marcel Danilewicz
Awatar użytkownika
jethrotull
3125...6249 postów
3125...6249 postów
Posty: 4013
Rejestracja: sob, 3 czerwca 2006, 21:51
Lokalizacja: Poznań

Re: Komputer jednopłytkowy na mikroprocesorze Z80 - konstrukcja własna

Post autor: jethrotull »

G1 w U10 dobrze byłoby podłączyć do M1 procesora zamiast do VCC. To zapobiega aktywowaniu losowych urządzeń w cyklu potwierdzenia przerwania. Dedykowane peryferia do Z80 są na to odporne, podobnie jak wszystkie inne, które używają linii RD lub WR, ale ogólnie to dobra praktyka.
Awatar użytkownika
jethrotull
3125...6249 postów
3125...6249 postów
Posty: 4013
Rejestracja: sob, 3 czerwca 2006, 21:51
Lokalizacja: Poznań

Re: Komputer jednopłytkowy na mikroprocesorze Z80 - konstrukcja własna

Post autor: jethrotull »

Zakupiłem sobie 8276, ale czytając jego kartę katalogową, nie wydaje mi się żeby mógł on wygenerować sygnał VGA 640x480 przy rozdzielczości 80 znaków. A to dlatego, że maksymalna długość poziomego powrotu wiązki (horizontal retrace) to 32 znaki, a potrzebne jest 48 znaków. Może jakiś analogowy monitor by to tolerował, ale co do monitorów LCD to szczerze wątpię.

Kolejny potencjalny problem który widzę to sygnał synchronizacji. 8276 oferuje tylko powrót poziomy i pionowy (horizontal/verical retrace) a nie ma możliwości zdefiniowania front porch i back porch. W sygnale VGA synchronizacja zajmuje tylko fragment czasu powrotu, a 8276 nie ma jak tego zamodelować.

Może się natomiast udać generacja sygnału PAL.
ODPOWIEDZ