Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Komputer 8-bitowy własnej roboty

ciernioo 01 Aug 2014 17:01 45435 29
phoenixcontact
  • Komputer 8-bitowy własnej roboty

    Komputer 8-bitowy własnej roboty

    Witam wszystkich. Chciałbym przedstawić na łamach forum mój projekt, który powstaje już od około pół roku. Tematem projektu jest komputer 8-bitowy oparty o procesor Z80. Założeniem jest, aby zbudować funkcjonalny komputer 8-bitowy w stylu lat 70-80 od podstaw, korzystając z możliwie najprostszych podzespołów (jednak bez przesady - nie zamierzałem budować np. własnego CPU...) . Komputer powinien mieć budowę modułową, umożliwiać łatwą i szeroką rozbudowę, powinien współpracować z monitorem VGA i klawiaturą jako podstawowymi urządzeniami wejścia/wyjścia, zawierać system operacyjny (monitor) w pamięci ROM oraz umożliwiać wymianę danych i programów ze światem zewnętrznym (np. ładować oprogramowanie z PC lub nośnika typu karta SD,CF lub inne). Całość chciałem wykonać w miarę możliwości schludnie, na płytkach drukowanych, bez zwisających wszędzie kłębów kabli.

    Aktualnie projekt osiągnął etap na którym udało mi się uporać z najważniejszymi problemami sprzętowymi, dzięki czemu sam hardware jest już uruchomiony i przetestowany,co mam nadzieję nadaje się już do prezentacji na forum... Dalsze prace będą obejmowały głównie część programową - monitor/system operacyjny , programy demonstracyjne, gry itp. Planuję również budowę dodatkowych kart rozszerzeń, wzbogacających funkcje komputera.

    Podstawowe dane techniczne:

    - Procesor Z80 taktowany zegarem 4,096Mhz
    - 32 KB ROM (układ FLASH 256KB, możliwość wyboru banku zworkami)
    - 32 KB RAM (statyczny)
    - interfejs klawiatury matrycowej - użyłem klawiatury z Commodore C64
    - 2 równoległe porty IO 8-bit (jeden wejściowy, jeden wyjściowy)
    - Karta grafiki: monochromatyczny tryb tekstowy 40x33 znaki , font 8x12. Możliwość przełączenia w tryb graficzny 160x100 pikseli, również mono.
    - karta dźwiękowa: oparta na znanym, klasycznym układzie AY-3-8912. karta zawiera wzmacniacz mono na LM386
    - 6 gniazd rozszerzeń (2 zajęte przez kartę graficzną i dźwiękową)

    Poniżej schematy i projekty płytek w Eagle`u. Kolejno: płyta główna, płyta rozszerzeń, karta graficzna i karta dźwiękowa. Uwaga co do płyty głównej: zaprojektowałem ją w taki sposób, aby mogła pracować samodzielnie - bez dodatkowych kart i płyty rozszerzeń. Na zdjęciu widać podpiętą klawiaturę i wyświetlacz LCD pomocny przy debugowaniu. Program wgrany do pamięci FLASH umożliwia prostą edycję tekstu na LCD za pomocą klawiatury. Na złączu magistrali widać zworę podpinającą sygnały /BUSREQ, /WAIT, /INT oraz /NMI do plusa zasilania (po dołożeniu płyty rozszerzeń te sygnały można terminować zworkami lub użyć ich w układach peryferyjnych). Taka konfiguracja daje już przyzwoity i całkowicie funkcjonalny komputer jednopłytkowy (ang. SBC - single board computer).

    Komputer 8-bitowy własnej roboty Komputer 8-bitowy własnej roboty Komputer 8-bitowy własnej roboty Komputer 8-bitowy własnej roboty
    Komputer 8-bitowy własnej roboty Komputer 8-bitowy własnej roboty Komputer 8-bitowy własnej roboty Komputer 8-bitowy własnej roboty

    Poniżej więcej zdjęć wykonanego sprzętu: płyta główna w czasie testów, karta graficzna i dźwiękowa:

    Komputer 8-bitowy własnej roboty Komputer 8-bitowy własnej roboty Komputer 8-bitowy własnej roboty Komputer 8-bitowy własnej roboty Komputer 8-bitowy własnej roboty

    Zdecydowanie największym wyzwaniem była karta graficzna. Do tematu generowania sygnału VGA przymierzałem się już od bardzo długiego czasu. Były próby lepsze i gorsze, nieudane prototypy, poznawanie nowych technik sprzętowych i programowych, ciągłe zgłębianie tematu i rozkładania na czynniki pierwsze. Ostatecznie pozostałem przy następującym rozwiązaniu: układ CPLD (XC9536XL firmy XILINX) "zasilany" generatorem kwarcowym generuje sygnały synchronizacji poziomej i pionowej VGA oraz sygnały taktujące i ładujące rejestr przesuwny 74LS165. Dane dla tego rejestru przygotowuje Atmega328. Mikrokontroler zajmuje się również odbiorem danych z Z80 zapewniając synchronizację odczytu danych z wyświetlaniem obrazu (brak migotania / śnieżenia obrazu przy zapisie danych). Dane z magistrali adresowej (współrzędne ekranowe X i Y) oraz magistrali danych (kod ASCII znaku do wyświetlenia) są pobierane szeregowo w trakcie wygaszania poziomego. Przerzutnik (1/2 74HCT74) pomaga synchronizować pobieranie danych z CPU. Na wyjściu rejestru przesuwnego karta generuje obraz monochromatyczny (wybrałem kolor zielony - wiadomo, najbardziej "klimatyczny" :) ) i pracuje w trybie tekstowym, choć w przyszłości planuję software`ową przeróbkę kodu AVR tak aby dało się wyświetlać grafikę w max. rozdzielczości 160x100 pikseli. Prawda, karta nie ma kolorów ani wysokiej rozdzielczości, ale podoba mi się taki minimalizm, pasuje do stylu końca lat 70-tych ...

    Aktualnie komputer ma wgrany w ROM prosty program bootloadera, który odbiera z 8-bitowego portu wejściwego kod programu i po jego zapisaniu w pamięci RAM wykonuje skok do początku kodu. Programy piszę korzystając z asemblera TASM firmy Squak Valley Software i edytora Programmer`s notepad. Zasemblowany program przesyłam przez RS232 do małej przystawki wykonanej na bazie Atmega8. Układ ten odbiera transmisję z UART (po drodze jest jeszcze konwerter MAX232) i podaje ją wraz z sygnałami synchronizującymi do portu wejściowego komputera. Poniżej zdjęcie przystawki podczas pracy:

    Komputer 8-bitowy własnej roboty

    Taki bootloader jest oczywiście rozwiązaniem przejściowym, bardzo pomocnym przy rozwijaniu projektu (za jego pomocą wgrałem widoczny na pierwszym zdjęciu program demo - wyświetlający wszystkie znaki ASCII). W docelowym komputerze chciałbym wykorzystać jakiś prosty i łatwo dostępny nośnik danych jak karta SD/CF oraz ew. dodatkowo zrobić kartę rozszerzeń z układem UART np. 16450 i "prawdziwy" port RS232 do komunikacji i ładowania oprogramowania.

    Ponieważ jest to mój pierwszy post na Elektrodzie, bardzo jestem ciekaw waszych opinii co do takiego projektu. Szczególnie ciekawi mnie, czy ktoś inny zrobił / planuje zrobić coś podobnego ? Czy macie w tym temacie jakieś doświadczenia ? Chętnie przyjmę każdą uwagę i wysłucham pomysłów co do ewentualnego dalszego rozwoju projektu!

    W sprawie kosztów projektu: Najdroższe okazały się laminaty, których kilka również w trakcie prac zepsułem... każdy spory laminat to pewnie jakieś ~10PLN. Na wszystkie wykonane do tej pory płytki poszło , jak widać na zdjęciach - sporo srebrzanki, za łącznie jakieś 15PLN. Część układów scalonych pochodzi z rozbiórki starego sprzętu, reszta, jakieś ~15-20 sztuk to nowe elementy po standardowych cenach 1-2 PLN. Pamięć Flash nabyłem za 4PLN. Klawiatura pozyskana z zakupionego martwego Commodore (~30PLN). Wyświetlacz LCD 4x16 ładny , z podświetleniem to około 30PLN. Reszta, np. goldpiny (dużo...) to koszt jakieś 15PLN. Drobne części elektroniczne z własnych zapasów.

    Dodatkowo postanowiłem oprócz własnych notatek i materiałów gromadzonych na swoim Google Drive prowadzić również dziennik prac w postaci bloga.

    Update 20.08.2014:

    Udało się uruchomić pierwszą wersję prostego monitora i wgrać ją do pamięci ROM. Aktualnie dostępne są następujące komendy:

    dump: zrzut pamięci
    edit: edytor pamięci
    fill: wypełnianie pamięci zadaną wartością
    copy: kopiowanie danych w pamięci
    cls: czyszczenie ekranu
    input: odczyt bajtu z portu I/O
    output: wysłanie bajtu do portu I/O
    jump: skok pod zadany adres
    load: załadowanie danych/programu do RAM poprzez kabel szeregowy.

    Prezentacja aktualnej wersji całego projektu dostępna jest na Youtube (poprawiłem czytelność opisów w stosunku do poprzedniego filmu):

    http://youtu.be/Cr7MO-5dX40

    Jeżeli ktoś chciałby zerknąć na kody źródłowe , to chętnie podeślę.

    Update 19.05.2016

    Minęło już prawie dwa lata od ostatniej publikacji w temacie mojego komputera. Ponieważ od tego czasu projekt bardzo się rozrósł i praktycznie jest już kompletny, postanowiłem podzielić się efektami prac, jakie prowadziłem przez ten czas:

    Komputer otrzymał 4 nowe karty:

    - Karta UART z układem 16450
    - Karta układu czasowo-licznikowego Z80 CTC (może służyć jako kontroler przerwań)
    - 8-bitowy interfejs IDE dla Compact Flash + układ we/wy 8255 na jednej karcie.
    - Karta-adapter dla 8-bitowych kart ISA z PC (dla karty grafiki Hercules/MDA). Karta ta zawiera dodatkowo układ zimnego/gorącego RESETu oraz mechanizm przełączania banków pamięci - obsługa max 64KB RAM.

    Zdjęcia i schematy kart:

    Komputer 8-bitowy własnej roboty Komputer 8-bitowy własnej roboty Komputer 8-bitowy własnej roboty Komputer 8-bitowy własnej roboty Komputer 8-bitowy własnej roboty Komputer 8-bitowy własnej roboty
    Komputer 8-bitowy własnej roboty Komputer 8-bitowy własnej roboty

    Do programu monitora dopisałem funkcje obsługi systemu plików FAT16 (odczyt/zapis)

    Całość została umieszczona w obudowie ze sklejki:

    Komputer 8-bitowy własnej roboty

    Na koniec na komputerze został zainstalowany system operacyjny CP/M w wersji 2.2. Uruchomienie systemu na komputerze było możliwe dzięki napisaniu procedur obsługi dysku , klawiatury i karty graficznej MDA w wydzielonym obszarze systemu CP/M - BIOSie.

    Załączam link do kodu źródłowego BIOSu.

    Wygląd komputera, oraz kilka zdjęć aplikacji pracujących pod kontrolą systemu CP/M:

    Komputer 8-bitowy własnej roboty Komputer 8-bitowy własnej roboty Komputer 8-bitowy własnej roboty Komputer 8-bitowy własnej roboty

    Jeżeli chodzi o plany na przyszłość:

    Chciałbym zastąpić kartę MDA przynajmniej kartą CGA, tak aby uzyskać możliwość podłączenia komputera do łatwiej dostępnych monitorów / telewizorów ze SCART. Idealnie byłoby wykorzystać 8-bitową kartę VGA - posiadam takową i pracuję nad jej obsługą z mojego komputera.

    Muszę opracował prosty sposób przesyłania plików pomiędzy PC a systemem CP/M. Aktualnie przesłanie czegokolwiek z PC to dość kłopotliwy i złożony proces.

    Cool? Ranking DIY
    About Author
    ciernioo
    Level 11  
    Offline 
    ciernioo wrote 12 posts with rating 120. Live in city Brwinów. Been with us since 2007 year.
  • phoenixcontact
  • #2
    michalonex
    Level 10  
    Super konstrukcja!
    Dobra robota właśnie mam zamiar coś takiego zrobić właśnie na procesorze z80
    i mam jedno pytanie skąd pozyskałeś go?
  • #3
    serwis_gh
    Diesel injection systems specialist
    Witam! Konstrukcja pomysłowa. Do pełni lat 80 brakuje prawdziwej pamięci masowej opartej na poczciwym Grundigu ;p
  • phoenixcontact
  • #4
    ciernioo
    Level 11  
    michalonex wrote:
    Super konstrukcja!
    Dobra robota właśnie mam zamiar coś takiego zrobić właśnie na procesorze z80
    i mam jedno pytanie skąd pozyskałeś go?


    Procesor niezbyt łatwo dostać - pozostają wyluty ze starego sprzętu. Swój egzemplarz wydłubałem z martwej płyty Unipolbrita 2068. Być może nowsze wersje procesorów z rdzeniem Z80 są jeszcze dostępne w sprzedaży...

    Dodano po 12 [minuty]:

    serwis_gh wrote:
    Witam! Konstrukcja pomysłowa. Do pełni lat 80 brakuje prawdziwej pamięci masowej opartej na poczciwym Grundigu ;p


    Dokładnie ! Rozwiązania pamięci masowej jeszcze nie wybrałem. Rozważam magnetofon, bo byłby najfajniejszy :). Ewentualnie nowsze nośniki - SD lub CF aby sprawniej wymieniać dane z PC. Nie chciałbym jednak angażować do tego jeszcze jednej Atmegi, bo już nawet na tę jedną w karcie graficznej niechętnie przystałem ...
  • #5
    Ronin64
    Level 35  
    Skoro już miałeś Commdore 64 to mogłeś użyć procesora i układy dźwiękowe z niego. :)
  • #6
    ciernioo
    Level 11  
    Ronin64 wrote:
    Skoro już miałeś Commdore 64 mogłeś użyć procesora i układy dźwiękowego z niego :)


    Commodore napędza odmiana 6502 - trochę bardziej kłopotliwy (moim zdaniem) w użyciu niż Z80. Próbowałem go nawet odlutować, ale moje zdolności są tu kiepskie - zjarałem procesor oraz wszystko wokół niego :). SID z commodore`a akurat był uszkodzony, poza tym też jest nieco trudniejszy w implementacji - wymaga np. dodatkowych napięć, więcej elementów zewnętrznych, itp.

    Generalnie Commodory są dziś dość tanie, można sobie pozwolić na zakup takiego za ~30PLN , wyjąć klawiaturę, a reszte ... wyrzucić ;)
  • #7
    phanick
    Level 28  
    Pomysł genialny. Zrobiłem coś podobnego na procesorze 6502.
    Pamięć masową można zrealizować na karcie pamięci SD. Aby procesor mógł się z nią komunikować, wystarczy zrobić kontroler pamięci na prostym układzie CPLD - ja wykorzystałem do tego Xilinx xc9572. Kontroler ten zrealizowałem w ten sposób, ze cykl zapisu bajtu X procesora pod pewien adres w przestrzeni adresowej to niejako wysłanie takiego bajtu X do karty pamięci, a cykl odczytu - odczytanie.
  • #8
    Pablo2015
    Level 18  
    Czemu te ścieżki na PCB są prowadzone tak po partyzancku?
    Po za tym strasznie dużo zworek, wiem że są przypadki, kiedy nie ma innej możliwości ale zawsze można użyć dwustronnego laminatu ;-).
    Było by super, gdyby finalna wersja była na profesjonalnej płytce ;-).

    Paweł
  • #9
    ciernioo
    Level 11  
    phanick wrote:
    Pomysł genialny. Zrobiłem coś podobnego na procesorze 6502.
    Pamięć masową można zrealizować na karcie pamięci SD. Aby procesor mógł się z nią komunikować, wystarczy zrobić kontroler pamięci na prostym układzie CPLD - ja wykorzystałem do tego Xilinx xc9572. Kontroler ten zrealizowałem w ten sposób, ze cykl zapisu bajtu X procesora pod pewien adres w przestrzeni adresowej to niejako wysłanie takiego bajtu X do karty pamięci, a cykl odczytu - odczytanie.


    No i właśnie takie podejście mi się podoba! Widywałem projekty różnych komputerków na Z80/6502 , gdzie wszystko co się dało - robiono na AVRach/PICach: interfejs klawiatury PC, interfejs karty SD (AVR+gotowa biblioteka z obsługą FAT),port USB, nie wspominając już o wyświetlaczach LCD czy gotowych modułach z wyjściem VGA. Jasne, wszystko to ładnie działa ale osobiście uważam, że przy tego typu projekcie to trochę droga na skróty... Własnoręcznie zaprojektowany układ z prostymi układami 74xx lub choćby sprytnie zaprogramowany CPLD + własny kod w asemblerze Z80/6502 daje niewspółmiernie więcej satysfakcji! Kiedyś nie było mikrokontrolerów i wszystko trzeba było robić "samemu" :) i ludzie robili ...

    Swoją drogą to bardzo chętnie zobaczyłbym twoją konstrukcję, można ją gdzieś obejrzeć ??

    Dodano po 24 [minuty]:

    Pablo2015 wrote:
    Czemu te ścieżki na PCB są prowadzone tak po partyzancku?
    Po za tym strasznie dużo zworek, wiem że są przypadki, kiedy nie ma innej możliwości ale zawsze można użyć dwustronnego laminatu ;-).
    Było by super, gdyby finalna wersja była na profesjonalnej płytce ;-).

    Paweł


    Uwaga jest jak najbardziej słuszna ! Powodów dlaczego zwłaszcza płyta główna wygląda jak wygląda jest kilka:

    Moje średnie zdolności manualne przy wytwarzaniu PCB: wolałem poprowadzić grube ścieżki w dużych odstępach kosztem wielkości laminatu: zdecydowanie miej błędów przy prasowaniu i łatwiej o poprawki - płyta niewiele mniejsza niż kartka A4 wyszła bardzo dobrze już za pierwszym razem. Kiedyś kolega pomógł mi przy projektowaniu płytki do interfejsu Kempston+AY do Spectruma. Użył cieniutkich ścieżek oraz robiąc przejścia między nóżkami scalaków. Przy prasowaniu zniszczyłem 1 laminat kompletnie, a ledwo znośna wersja wyszła mi za jakimś 3-4 razem. Potem jeszcze dużo poprawek, likwidowania mostków itp :( ... Jeszcze dużo muszę poćwiczyć w tym temacie ...

    Kiedy już opanowałem w dostatecznym stopniu tworzenie płytek dwustronnych (zrobiłem 2 kartridże do Atari 2600 na dwustronnym laminacie) to zdałem sobie sprawę że już wcześniej kupiłem komplet (i nawet z zapasem) płyt jednostronnych do projektu z Z80, zatem pomyślałem: trudno, będzie jednostronnie. Ten fakt oraz wspomniane wcześniej umiejętności zaowocowały duuużą ilością zworek :) Starałem się przynajmniej robić je w miarę schludnie. Moim głównym i najważniejszym założeniem było uniknięcie czegoś takiego:

    Komputer 8-bitowy własnej roboty

    To jedna z mich pierwszych konstrukcji cyfrowych - zegarek sterowany z komputerka AVT2250 (na 8051). Myślę że obecny komputerek na Z80 wygląda nieco lepiej niż to co widać na obrazku :D
  • #10
    Ronin64
    Level 35  
    ciernioo wrote:
    Generalnie Commodory są dziś dość tanie, można sobie pozwolić na zakup takiego za ~30PLN , wyjąć klawiaturę, a reszte ... wyrzucić ;)


    Będziesz się smażył w piekle, na dnie kotła :twisted:

    Nie wiem co jest kłopotliwego w użyciu procesora 6510/8500. No i asembler zdecydowanie przyjemniejszy ma ;)
  • #11
    ciernioo
    Level 11  
    Ronin64 wrote:
    Nie wiem co jest kłopotliwego w użyciu procesora 6510/8500. No i asembler zdecydowanie przyjemniejszy ma :wink:


    Chodzi mi o sygnały wyprowadzone z Procesora: Z80 ma gotowe /RD /WR /MREQ i /IOREQ ułatwiające podłączenie pamięci i peryferiów. Dodatkowo możliwość zatrzymania zegara, odłączenia procesora od magistral sygnałem /BUSREQ oraz możliwość wykorzystania przewrwania NMI. 6502 wymaga nieco więcej pracy przy projektowaniu dekodera adresów. Jeżeli chodzi o asembler to się zgadzam: jest bardzo sympatyczny i unikalny. Mam wydłubany 6507 z Atari 2600, na pewno w przyszłości zrobię na jego bazie jakiś mały jednopłytkowy komputerek :)
  • #12
    phanick
    Level 28  
    Asembler 6502 jest bajecznie prosty i piękny, powinien służyć jako wzór do nauki kodu maszynowego. Cały procesor też jest pięknie zaprojektowany. Tylko 3 rejestry, każdy z trybów adresowania się przydaje do czego innego, podstawowe instrukcje bez dublowania w rodzaju, że jedno można zrobić na 5 sposobów.

    Prosty dekoder do 6502 można zrobić na jednym układzie scalonym 74hc139 - pozwala podzielić przestrzeń adresową na 4 części.

    6507 to bardzo okrojony 6502 - przestrzeń adresowa ograniczona do 8kb, wycięto wszystkie linie poza szyną adresowa, danych wejśćiem zegarowym oraz R/!W.

    Jeśli chodzi o kartę graficzną, można to zrobić na kilka sposobów:

    - Wyciągnąć z pegazusa układ ua6538 - generuje sygnał wideo composite
    - wyciągnąć z commodore układ vice
    - wyciągnąć z ATARI 2600 układ TIA
  • #13
    ciernioo
    Level 11  
    phanick wrote:
    Jeśli chodzi o kartę graficzną, można to zrobić na kilka sposobów:

    - Wyciągnąć z pegazusa układ ua6538 - generuje sygnał wideo composite
    - wyciągnąć z commodore układ vice
    - wyciągnąć z ATARI 2600 układ TIA


    ua6538 nie znam prawdę mówiąc. Jeżeli jest w miarę prosty w obsłudze to jest ciekawą alternatywą (szkoda tylko że pegazusy drogie teraz...). Układ z Commodore (chyba chodzi ci o VIC-II) musi współpracować z taką wielką krową Sharp`a która zajmuje się min. DMA. TIA z Atari 2600 jest w miarę prosty w użyciu , ale ma mocno ograniczone możliwości - o sensownym wyświetlaniu tekstu raczej można zapomnieć :(

    Mnie najbardziej marzy się jeden z dostępnych kiedyś układów wizyjnych serii MCY (i innych) o jakich czytałem w starszych książkach ("Mikroprocesor 6502 i jego rodzina" Kruszyński, Kulpa oraz "Mikrokomputer - elementy, budowa, działanie" Rydzewski,Sacha). Niestety o ile mi wiadomo - aktualnie nie ma dostępnych w sprzedaży tego typu układów...
  • #14
    phanick
    Level 28  
    W najprostszej konfiguracji ua6538 potrzebuje pamięci sram (aby maksymalnie wykorzystać jego możliwości wystarczy16 kB), układu 74hc373 oraz kwarcu 26.601712 MHz. Generowany jest obraz w rozdzielczości 256x240 pikseli, do 16 kolorów wyświetlanych jednocześnie z palety 52. Wadą jest to, że nie jest to typowa `karta graficzna`, która pozwala na pokolorowanie dowolnego piksela. Obraz składa się z kwadracików 8x8 pikseli, które mogą być częścią tła, albo pierwszego planu (duszków). Jeżeli jednak zamierzasz wykorzystywać go niejako do wyświetlania `w trybie tekstowym`, to spełni oczekiwania w zupełności.

    Zaletą (w przeciwieństwie do TIA z Atari) jest to, że raz sterujesz taki układ i nie musisz ciągle mówić mu, co ma wyświetlać chyba, że chcesz zmienić to, co jest wyświetlane.

    Jeśli chodzi o komunikacje, to układ widoczny jest w przestrzeni adresowej jako 8 adresów, które służą do konfiguracji i przesyłania danych.

    Jedyny pegazus w którym na 100% można być pewnym, że występuje to mt777dx. Jednak układy te można kupić na ebayu za ok 1.5 dolara.
  • #15
    ciernioo
    Level 11  
    No powiem szczerze, że zainteresowałeś mnie tym układem, byłby w sam raz do mojego następnego projektu tym razem na 6507. Czy możesz polecić lub przesłać jakieś dobre materiały na temat ua6538 ?
  • #16
    coberr
    Level 20  
    Co do konstrukcji:

    jak zwykle w takich przypadkach - bardzo ciekawa.
    Zastanawia tylko fakt wykorzystania ATMEGi - która jest kilka razy szybsza niż sam Z80 :)
    To juz trzeba było całą kartę zaimplementowac na CPLD (myślę,że w XC 9572 bys ją jakoś jeszcze upchnął)

    Druga sprawa - juz wczesniej wspomniano - FATALNE prowadzenie ścieżek na płytce drukowanej...
    Unikaj takiej partyzantki :) I przede wszystkim tej "zworkologii" (wiem , że czasem się po prostu nie da )



    ciernioo wrote:
    Procesor niezbyt łatwo dostać - pozostają wyluty ze starego sprzętu. Swój egzemplarz wydłubałem z martwej płyty Unipolbrita 2068. Być może nowsze wersje procesorów z rdzeniem Z80 są jeszcze dostępne w sprzedaży...


    Mozna jeszcze dostać stare dobre Z80 - trzeba tylko poszukać.
    A możliwosci jest sporo.. od starych komputerów po np. płyty gier ARCADE - a nawet i po nowe sztuki zachomikowane jeszcze gdzies po magazynach...
    Są firmy, w ktorych magazynach zalegaja jeszcze tego setki....

    Ew. mozna jeszcze zajrzec na http://speccy.pl/forum/ - tam chłopaki podpowiedzą co, gdzie i jak.

    NAtomiast za sam projekt i chęc jeszcze zglębiania tego zabytku klasy zerowej (z80) - duzy plus :)
  • #17
    ciernioo
    Level 11  
    coberr wrote:
    Zastanawia tylko fakt wykorzystania ATMEGi - która jest kilka razy szybsza niż sam Z80 :)
    To juz trzeba było całą kartę zaimplementowac na CPLD (myślę,że w XC 9572 bys ją jakoś jeszcze upchnął)


    Ależ nawet wcześniej zrobiłem tak jak mówisz ! CPLD + liczniki + bufory/zatrzaski + RAM. Niestety karta miała problemy i pewne wady dlatego po paru testach skapitulowałem i użyłem Atmega + CPLD idąc niestety trochę na skróty , z czego nie jestem specjalnie dumny :/ Atmega wykorzystana jest po prostu z lenistwa , główne skrzypce w całym projekcie z założenia miał i ma grać Z80 :) Po prawdzie to program Atmegi jest bardzo banalny: nie wykorzystuję żadnych przerwań, timerów, PWMów itp. Całość opiera się na odczytach z RAM i FLASH, wysyłaniu danych na porty i odbioru sygnałów synchronizujących.

    Dodano po 6 [minuty]:

    coberr wrote:
    Druga sprawa - juz wczesniej wspomniano - FATALNE prowadzenie ścieżek na płytce drukowanej...
    Unikaj takiej partyzantki :) I przede wszystkim tej "zworkologii" (wiem , że czasem się po prostu nie da )


    Całkowicie się zgadzam - zwłaszcza płyta główna jest średnio udana pod względem projektu PCB. Chciałem po prostu żeby było łatwo wytrawić, estetyka i ilość zworek nie liczyła się. Karta graficzna była robiona później, mam nadzieję że już odrobinę lepiej wyszła :/ ...

    Dzięki za wszelkie uwagi !! Projekt ten to głównie właśnie zabawa z Z80. Programowanie i implementacja tego procesora we własnej konstrukcji to absolutnie fantastyczna przygoda :D !
  • #18
    jakubek56
    Level 32  
    Jaką wykorzystałeś pamięć RAM i ROM.
    Czy jest ona łatwo dostępna?
  • #19
    ciernioo
    Level 11  
    jakubek56 wrote:
    Jaką wykorzystałeś pamięć RAM i ROM.
    Czy jest ona łatwo dostępna?


    Pamięć RAM to pojedyncza kostka 32KB wzięta wprost ze starej płyty 486 - często w 486 i 386 wykorzystywano takie pamięci jako CACHE. jest to zwykły statyczny RAM o dość krótkim czasie dostępu. Można również kupić takie pamięci w sklepach lub portalach aukcyjnych, choć nie zawsze w obudowach DIP.

    jako ROM wykorzystałem pamięć typu FLASH, kupione kilka sztuk po 4PLN na znanym portalu aukcyjnym. Tego typu pamięci są również łatwe do pozyskania ze starych płyt od PCtów - siedzą elegancko w podstawkach na płytach od pentium I i II. Można również łatwo kupić w sklepach. Oczywiście do nich potrzebny jest programator - niektórzy robią własne konstrukcje i chwała im za to. Ja zainwestowałem w Willem`a i jestem baaardzo zadowolony - wprowadzenie zmiany w ROMie zajmuje nie więcej niż minutę (wyjęcie układu z płyty, włożenie do programatora, kasowanie i nagranie nowego wsadu).

    Obecnie projekt wzbogacił się o kartę z UART`em przez który ładuję teraz soft, oraz płytkę z Z80CTC jako uniwersalny układ czasowo-lcznikowy.
  • #20
    sq6fmy
    Level 22  
    Ciekawa konstrukcja. Poniżej trochę pomysłów, które zrealizowałem w swojej maszynie na Z80.

    Zwiększ ilość RAMu, zrób wyłączanie ROM (rejestrem w przestrzeni i/o) i heja z CPM2.2. Cała filozofia to napisać BIOS-a. Jest dużo dokumentów do niego. Polecam!

    Moja maszyna ma video na TMS9929A z osobnym DRAM 16KB, 128KB RAM (przełączane banki pod kątem CPM3), 32KB ROM (zamiast niego symulator na PIC+RAM+3szt 74hct541).
    Jako pamięć masowa dla CPM karta CF z czterema dyskami chyba po 512KB (komunikacja z kartą w trybie 8-bit - traci się połowę pojemności ale co to za problem).
    Z80 SIO - jeden kanał to konsola CP/M-a (pierwotnie, obecnie mam aplikacje do sciagania protokołem xmodem plików na CF), pod drugi kanał podpięta bezpośrednio klawiatura PS/2.
    Z80 DMA - w zasadzie używany tylko przy bootowaniu do przerzucenia CP/M z ROM do RAM.
    I oczywiście AY-3-8913. Adresy zgodne ze spectrumem przez co mogę odtwarzać pliki ay z poziomu CP/M (plik ay zawiera player wiec jedyne wyjście z niego to reset w moim przypadku).
    Poza wymienionymi elementami dwa GAL-e jako dekodery adresów, rejest hc273 (przełączanie banków i reset Z80), kolejny dekoder adresów na '138 i generatory do Z80, AY i SIO. I coś co psuje oldschoolowość całości - układ resetu DS1820.

    Wykorzystanie TMS9929 dało możliwość odpalenia gier z konsoli ColecoVision. Była aplikacja, która z poziomu CP/M ładowała BIOS Coleco (ze zmienionymi adresami dla video) oraz grę. Coś tam działało.

    Czego już nie zrealizowałem: przegladarka WWW (coś jak links) pod CP/M. Wykorzystany moduł z W5100 - ma magistralę 8-bit i idealnie by się komponował z Z80.
  • #21
    ciernioo
    Level 11  
    Dzięki za zainteresowanie tematem i poruszenie kilku ważnych kwestii - o CP/M nieśmiało myślałem już od dawna. Mam książkę Romana Świniarskiego którą przeczytałem od deski do deski. W przyszłości chciałbym zaimplementować ten system na swojej maszynie.Po lekturze książki oraz obejrzeniu wielu fajnych projektów na necie, stwierdzam, że będę miał z tym kiedyś dużo pracy i świetnej zabawy :) Mając przyszłościowo na uwadze CP/M właśnie, mam zamiar użyć w swoim projekcie, już w jego obecnej formie, karty CF jako pamięci masowej. Faktycznie karta CF ma bajecznie prosty interfejs - sprzętowy jak i programowy. (np.w klonie PC/XT stosuję znane w sieci rozwiązanie XT-IDE Unversal Bios z kartą CF jako dyskiem dla XT-ka).

    Na chwilę obecną bliższe plany to choćby zaadaptowanie jakiegoś BASIC`a...

    Mam do Ciebie pytanie: Od kiedy pracujesz nad swoim systemem ? Czy osiągnął jakąś ostateczną formę ? Swój od początku staram się (na ile to możliwe) rozwijać tak, aby dało się go w miarę łatwo modyfikować i dostosowywać do zmian koncepcyjnych. Teraz zaczynam dopiero widzieć, że to przyjemna zabawa na długie lata!
  • #22
    sq6fmy
    Level 22  
    Tak ten mój grat wygląda.
    Komputer 8-bitowy własnej roboty
    W lewym dolnym rogu to od czego zacząłem pracę na początku maja 2014 czyli emulator eprom. Powyżej płytka jaka powstała w lipcu 2014 już na zakończenie prac czyli konwerter sygnału YUV na composite. Bez niej z TMS9929 wychodził sygnał czarno-biały. Ta płytka to klon 1:1 z jakiegoś angielskiego komputerka.

    Na początku maja zamówiłem układ video 8275 i DMA 8257 bo miał powstać komputer Radio 86RK. Jak juz układy przyszły to w międzyczasie pomysł upadł i szybka decyzja żeby gdzieś je wykorzystać. Po kilku dniach miałem obraz całości. Układów nie wykorzystałem, zdecydowałem się na lepszy chip video i Z80 DMA (które niewiele robi jak już pisałem). Na początku czerwca CP/M działał przez port szeregowy, przyszedł układ video i z to chyba był jedyny problem, nad którym siedziałem parę dni. Posiadane DRAM-y które robią za pamięć video były wadliwe (co wskazał powstały w jeden wieczór tester na PICu). Źle też interpretowałem datasheet do video. Do końca czerwca miałem już aplikacje na CP/M do odtwarzania plików muzycznych ze spectruma i do pobierania plików z PC (obie pisane w C). Na początku lipca jeszcze spędziłem kilka dni nad odpalaniem gier z Coleco i finito. Teraz leży i kurz łapie.

    Generalnie układ był uruchamiany blokami dlatego sprawnie poszło. Jedyne co było modernizowane w międzyczasie to dekoder adresów (z TLL na GAL).

    W załączniku ostatnia wersja biosu dla CP/M 2.2

    Rok wcześniej sporo prostsza wersję zrobiłem na FPGA.
  • #23
    ciernioo
    Level 11  
    Naprawdę kawał niezłej roboty i imponujące tempo prac! Mam kilka pytań: Rozumiem że teraz płytka z emulatorem EPROM jest niewykorzystywana ? Czyli w zasadzie komputer działa bez wspomagaczy w postaci mikrokontrolerów ? W czym programowałeś GAL`e ? Jakie są dalsze plany rozwoju projektu ? Będzie jakiś interfejs klawiatury ?

    Oprócz CP/M`A chyba najbardziej podoba mi się twoje rozwiązanie video. Dobrze że mój projekt jest modułowy, może w przyszłości wymienię swoje video na coś innego.
  • #24
    sq6fmy
    Level 22  
    Klawiatura PS/2 podłączona do jednego z kanałów SIO (w trybie synchronicznym). Nie ma żadnych mikrokontrolerów.

    GALe to najmniejszy problem bo to wiekszość tanich chińskich programatorów obsługuje. Używałem TL-866 a wcześniej Galblasta. 22V10 wystarczyłby jeden ale zakupione na ebayu okazały się malowankami i musiałem się zadowolić tym co miałem czyli dwoma 16V8.

    Zamiast emulatora wsadzam 28C256 i działą. Podczas takiej próby okazało się, że układ resetu jest do kitu (emulator wystawia swój reset i maskował problem) i wpadł układ resetu od Dallasa.
  • #25
    Janusz_kk
    Level 37  
    WItam
    Podziwiam zapał do takich staroci, kawał dobrej roboty.
    Jakby ktoś potrzebował to mam gdzieś w szufladzie Z80 cpu, dma chyba też w wersji zachodniej i nrd-owskiej. Mam chyba jeszcze kostkę generatora vga tak jak była w pierwszych pc-tach. Jakby co to pisać na priva.
  • #26
    Kamil071
    Level 2  
    michalonex wrote:
    Super konstrukcja!
    Dobra robota właśnie mam zamiar coś takiego zrobić właśnie na procesorze z80
    i mam jedno pytanie skąd pozyskałeś go?

    można go kupić na ebay.pl za około 15zł
  • #27
    muczo
    Level 16  
    Witam
    Ludzie jak testowaliście konkretnie tego rodzaju sprzęt, bo złożony na płytkach stykowych za chiny nie chce to działać (zakłócenia są wszechobecne).
    Ale jak widać na You-tube niektórym to wychodzi.
    Nie wiem czy to przez złą jakość tych allegrowych płytek.
    Złożyłem kilkanaście konstrukcji ale nawet zbliżenie dłoni do pamięci rom lub ram powoduje wariowanie zawieszanie się sprzętu.
  • #28
    trol.six
    Level 31  
    muczo wrote:
    Ludzie jak testowaliście konkretnie tego rodzaju sprzęt, bo złożony na płytkach stykowych za chiny nie chce to działać (zakłócenia są wszechobecne).

    Ja stosuje się do:
    1. Styki musza być na 100% pewne, (ja lutuje, tylko czasem połączenia robie na styki) poruszanie kabelkami w gnieździe może generować impulsy.
    2. Kondensatory minimum 100nF dobrej jakości (X7R) przy każdym układzie. W dawnym sprzęcie cyfrowym nie żałowano nawet tantalowych.
    3. Masa, dużo masy pomiędzy komunikującymi się układami, bo po masie płyną sygnały zwrotne. Plus zdolności masy do ekranowania.
    4. Czasami daje jeszcze rezystory na liniach (22-100 om), szczególnie tam gdzie są dłuższe kabelki. W zasadzie to bardziej techniczna elegancja niż konieczność, choć nie zawsze.
    5. Najbardziej wrażliwe są sygnały zegarowe. Prowadź je w akompaniamencie masy.
    6. Dużo luźnych kabelków to nic innego niż robienie anteny, wejścia układów cyfrowych są dość wrażliwe. Choć przyznam nie wiem w jakim stopniu. ;)

    Przykład mojej płytki z pamięcią:
    https://www.elektroda.pl/rtvforum/topic3572798.html
    .
  • #29
    muczo
    Level 16  
    Od jakiegoś czasu montuję dekoder linni adresowych do prostego komputera z80 ale to już na płytce uniwersalnej.
    Zobaczę jak wyjdzie i wrzucę informacje i zdjęcia .
  • #30
    muczo
    Level 16  
    Panowie na jakiej podstawie budowaliście schemat .
    Wiem że takie konstrukcje buduje się na bazie istniejących konstrukcji a nie z głowy.