Autor Wątek: Nowy klon  (Przeczytany 19477 razy)

phantomnet

  • *
  • Wiadomości: 9
  • Miejsce pobytu:
    Bolton UK
Nowy klon
« dnia: 2013.02.01, 00:49:57 »
Witam wszystkich!
Od wielu lat "męczy" mnie sprawa zbudowania nowego klona Zx Spectrum. Wiem, że istnieje ich dużo, ale nie spełniają moich wymagań. Postanowiłem ostatnio się za to zabrać. Może coś z tego dobrego wyjdzie?!

Założenia dla prototypu:
1. Procesor Z80A taktowany 3.5MHz
2. Brak fizycznej pamięci ROM
3. 64KB RAM, (16KB na ROM)
4. Dwa porty USB 1.1 dla klawiatury i myszy
5. Dwa porty USB 2.0 dla pendrive'a i drukarki
6. Wyświetlacz LCD 320x240 z touchpanel
7. Układ ULA na ATmega128

A teraz omówię poszczególne punkty.
1.
 Zastosowanie rzeczywistego procesora Z80 uwalnia od problemów z pełną emulacją i timingami. Umożliwia zastosowanie kilku "sztuczek" o czym w dalszej części.

2 i 3.
RAM zamiast ROM daje możliwość zmiany zawartości tej części pamięci bez fizycznej ingerencji. Np. wybór wersji ROM z menu.

4.
Porty USB. Jak wiadomo nie ma teraz problemu z zakupem dowolnej klawiaruty czy myszy na USB.  Niech wiec Spektruś będzie miał tę możliwość.
Realizacja bardzo prosta: dwa układy USB HOST oparte na ATtiny2313A. To tylko USB 1.1 ale dla myszy i klawiatury więcej nie trzeba.

5.
Porty USB dla pendrive i drukarki. Nie wiem dlaczego, ale wolę użyć pendrive'a, niż karty SD. Może dlatego, że nie ma problemów z obsługą w PC, formatem danych itd.
Realizacja : Moduł V2IP2 oparty na VNC2 by FTDI. 
Atuty: Możliwość napisania własnego oprogramowania dla modułu uwzględniającego posiadany sprzęt.

6.
Dlaczego wyświetlacz LCD? Może dlatego, że chciałbym, aby ten klon był nie zależny od monitora lub telewizora. Po co jeszcze jeden sprzęt na biurku. Jakość obrazu o wiele większa, brak kabli i może w przyszłości powstanie z tego "Zx Spectrum Laptop", który można zabrać ze sobą wszędzie?!!

7.
ATmega128 jest sercem całego projektu. Ma za zadanie obsługę LCD, komunikację z hostami USB. W dodatkowej pamięci DataFlash zapisane są wersje ROM, które można wgrać do RAM. Zarządza też przerwaniami NMI i taktowaniem Z80.

**********************************************

Czekam na Wasze opinie o projekcie.

PS. Z LCD nie zrezygnuję!!!!
ZX Spectrum 48K/+/+2/+3 Amstrad NC100

Micky

  • ***
  • Wiadomości: 157
  • Miejsce pobytu:
    Szczecin
Odp: Nowy klon
« Odpowiedź #1 dnia: 2013.02.01, 01:07:56 »
Bardzo ciekawy pomysl.
Jestem jak najbardziej za sprzetowym Z80, USB dla myszy (gamepada) i klawiatury.
Mozna byloby wrzucic emulacje GP-50 oraz centronics'a (np. z projektu z Bajtka) na
dolaczonej drukarce (ach te listingi i screenshoty drukowane na laserowce :) )

Dodalbym jeszcze wyjscie HDMI wraz z dzwiekiem z AY.
Czy udaloby sie wcisnac emulacje Divide ?

Wyswietlacz LCD to ciekawy pomysl, ale musialby byc wiekszego rozmiaru niz 3", zeby
nie trzeba bylo uzywac soczewki Fresnela :)

p.s. Cos mi sie kolacze, ze ktos juz emulator na Atmelu robil na WOS.

p.s.2 ciekawostka http://spritesmods.com/?art=avrcpm&page=1 :)

matofesi

  • *****
  • Wiadomości: 2048
  • Miejsce pobytu:
    Toruń/Poland
Odp: Nowy klon
« Odpowiedź #2 dnia: 2013.02.01, 07:20:44 »
Użycie atmegi powoduje, że sprzęt przestaje być klonem a staje się głównie emulatorem. Cała reszta założeń wygląda interesująco, ale raczej na produkt dwie-max-trzy sztuki a nie produkcję półseryjną.

Walcz - zobaczymy co ci wyjdzie :)

phantomnet

  • *
  • Wiadomości: 9
  • Miejsce pobytu:
    Bolton UK
Odp: Nowy klon
« Odpowiedź #3 dnia: 2013.02.01, 08:33:33 »
Micky
 Apropo ciekawostki, którą podałeś to popełniłem to "ustojstwo" rok temu. Co mogę powiedzieć ? Działa.

matofesi

ATmega ma za zadanie jedynie wyświetlanie obrazu na LCD i koordynuje komunikacje z I/O. OK emuluje ULA, ale nic poza tym.
Z80A jest dalej fizycznie obecny w systemie i to on wykonuje cały kod.
ZX Spectrum 48K/+/+2/+3 Amstrad NC100

matofesi

  • *****
  • Wiadomości: 2048
  • Miejsce pobytu:
    Toruń/Poland
Odp: Nowy klon
« Odpowiedź #4 dnia: 2013.02.01, 08:55:43 »
Ja rozumiem koncepcję. Po prostu moja definicja klona jest bardziej sztywna ;) Dla mnie klon to coś, co całą podstawą część oryginalnego hardware'u (procesor+ULA) realizuje "w elektronice" (TTLe, CPLD, FPGA). Emulacja software'owa któregoś z kluczowych komponentów wyklucza takie rozwiązanie z kategorii "klon" ;)

steev

  • *****
  • Wiadomości: 1362
  • Miejsce pobytu:
    inode 42
Odp: Nowy klon
« Odpowiedź #5 dnia: 2013.02.01, 11:32:26 »
Te porty dla klawiatury i myszy, to jak rozumiem attiny2313a plus FTDI?
Machines should work. People should think.

Tygrys

  • Administrator
  • *****
  • Wiadomości: 4537
  • Miejsce pobytu:
    Warszawa
  • mistrz ceremonii
Odp: Nowy klon
« Odpowiedź #6 dnia: 2013.02.01, 11:52:59 »
Pozostaje jedynie czekać na powstanie tego urządzenia ;)

Gryzor

  • *****
  • Wiadomości: 2009
  • Miejsce pobytu:
    Warszawa
Odp: Nowy klon
« Odpowiedź #7 dnia: 2013.02.01, 12:57:10 »
Diabel, tkwi w szczegolach, nawet ja zrobisz ZX display na ATMega, to pewno bez wszystkich contention, floating-bus itp.
Musialbys czytac pamiec przez ATMEGA, dopasowac timingi rozkazow ATMEGA do cyklow Z80... moze i zrobliwe, ale bedziesz mial duzo zajecia :-)
Nie lepiej wziac CPLD na bazie Harlequina ?

phantomnet

  • *
  • Wiadomości: 9
  • Miejsce pobytu:
    Bolton UK
Odp: Nowy klon
« Odpowiedź #8 dnia: 2013.02.01, 16:08:32 »
steev

ATtiny2313a pełni funkcję hosta usb bez żadnych dodatkowych układów.
Zapożyczone z :http://www.asahi-net.or.jp/~qx5k-iskw/robot/usbhost.html#usbhost02
Oczywiście oprogramowanie trochę przerobione, aby dawało dane w formacie jaki potrzebuję.

Gryzor

Widzisz własnie coś podobnego chcę zrobić. ATmega przejmuje pełną kontrolę nad pamięcią w taktach T3 i T4 cyklu M1 procesora Z80. W czasie tych taktów jak wiadomo Z80 wysyła na magistralę adresową adres odświerzania (LSB) z rejestru R i zawartosc rejestru I (MSB). Uaktywnia się sygnał  #RFSH , który deaktywuje bufory np.HCT541 i HCT245 podłączone na liniach adresowych i liniach danych, odcinając Z80 od magistrali (bufory są aktywne kiedy #RFSH =1). Aktywuje natomiast bufory od strony ATmega dając jej magistrali dostęp do RAM. Jest też sygnałem przerwania dla ATmega. W cyklu obsługi tego przerwania następuje odczyt  zawartości VRAM. Ile bajtów zostanie odczytanych zależy od zegara ATmega. W czasie, gdy Z80  nie odświeża RAM (#RFSH=1) ATmega steruje LCD tj. uaktualnia obraz na LCD.
Takie rozwiązanie ma pewien plus:
Odczyt VRAM jest w pełni niewidzialny dla Z80 i nie spowalnia go w czasie dostępu do obszaru VRAM.
Oczywiście dla zapewnienia pełnej zgodności timingów można sterować sygnał zegarowy CLK dla Z80 z timera ATmegi, co zapewni możliwość kluczowania tego sygnału jak w prawdziwym Spectumie.

ZX Spectrum 48K/+/+2/+3 Amstrad NC100

Micky

  • ***
  • Wiadomości: 157
  • Miejsce pobytu:
    Szczecin
Odp: Nowy klon
« Odpowiedź #9 dnia: 2013.02.01, 22:23:53 »
Apropo ciekawostki, którą podałeś to popełniłem to "ustojstwo" rok temu. Co mogę powiedzieć ? Działa

To moze uda sie Tobie przybyc na Zlocik i zademonstrowac szerszemu gronu?
« Ostatnia zmiana: 2013.02.03, 13:32:59 wysłana przez Micky »

Micky

  • ***
  • Wiadomości: 157
  • Miejsce pobytu:
    Szczecin
Odp: Nowy klon
« Odpowiedź #10 dnia: 2013.02.02, 23:37:57 »
Odnalazlem link do dyskusji dot. emulatora Vasila na Atmelu. Moze cos sie przyda?
M
http://www.worldofspectrum.org/forums/showthread.php?t=31044

phantomnet

  • *
  • Wiadomości: 9
  • Miejsce pobytu:
    Bolton UK
Odp: Nowy klon
« Odpowiedź #11 dnia: 2013.02.03, 13:12:32 »
Drodzy Koledzy !

Chcę raz na zawsze wyjaśnić powód zastosowania ATmega. Jedynym powodem jest wyświetlacz LCD, a właściwie komunikacja z nim. W moim przypadku kontrolerem LCD jest SSD1963, z 16 bitową szyną danych. Dane koloru, rozkazy dla kontrolera są 16bitowe, więc każdy piksel ekranu może być w 64K kolorach.Dodać do tego translacje adresacji ekranu do formatu LCD, translacje kolorów i robi się coś ogromnego. Implementacja tego w układzie CPLD lub FPGA jest możliwa, ale zabrała by zbyt dużo jego zasobów. Jesli przyjrzeć sie bliżej np. ZX-Badaloc FGPA, posiada zaimplementowany dodatkowy procesor który zarządza całym systemem.
Wiec jeśli nie chcecie tego nazwać "klonem" to OK. Dla mnie użycie mikrokontolera to w tym wypadku jedyne sensowne wyjście.
Koniec.Kropka.

Troche zmian w projekcie:
1. Pamieć RAM rozbudowana do 256KB ze stronicowaniem.
2. KEMPSTON joystic
3. AY-3-8912

Aktualnie trwają prace nad logiką sterującą, docelowo będzie zaszyta w CPLD XC9572XL.
Jeszcze słówko o USB dla klawiatury.
Postanowiłem, że najlepszym rozwiązaniem będzie mix dwu układow:
1.  http://www.jrok.com/project/speckey/spec_key.html z którego wezmę część CPLD
2. http://www.asahi-net.or.jp/~qx5k-iskw/robot/usbhost.html#usbhost02 impementacja USB HOST
Wszystkie kody klawiatury spectrum będą przesyłane do CPLD i dostępne jak w zx, a reszta (sterowanie NMI itp.) do ATmega.
ZX Spectrum 48K/+/+2/+3 Amstrad NC100

Tygrys

  • Administrator
  • *****
  • Wiadomości: 4537
  • Miejsce pobytu:
    Warszawa
  • mistrz ceremonii
Odp: Nowy klon
« Odpowiedź #12 dnia: 2013.02.03, 13:28:34 »
phantomnet: nie zwracaj uwagi na opinie czy to będzie klon czy nie, po prostu rób to co uważasz za stosowane.
Podałeś konkretne powody zastosowania ATMega, które mają ułatwić zadanie, a nie je utrudnić.

Co do AY - czy dużym problemem byłoby zrobienie uniwersalnego slotu na AY-3-8910 i 12, przełączane jakąś zworką ?

Micky

  • ***
  • Wiadomości: 157
  • Miejsce pobytu:
    Szczecin
Odp: Nowy klon
« Odpowiedź #13 dnia: 2013.02.03, 13:36:51 »
Tak jak pisze Tygrys - rób swoje :)
Ja się zgłaszam na beta testera (mam tez programator uniwersalny i JTAG'a - więc będzie można
przesyłać ew. poprawki mailem)

Co do AY to raczej nie powinno być problemów z uniwersalną płytką. W najgorszym wypadku można zrobić
PCB z dwoma podstawkami (jedna na drugiej - przesunięte o 100milsów).

phantomnet

  • *
  • Wiadomości: 9
  • Miejsce pobytu:
    Bolton UK
Odp: Nowy klon
« Odpowiedź #14 dnia: 2013.02.03, 14:02:17 »
Tygrys:
Z tym nie ma problemu. Ja wybrałem AY-3-8912A bo taki posiadam. Jeśli projekt dojdzie do końca i będzie zainteresowanie to i taką opcje można wprowadzić, ale to daleka przyszłość.

Micky:

Co do Zlotu to chyba odpada z racji odległości i tego że w Polsce jestem raz na rok lub dwa lata i tylko na 10 dni, a to nie starcza na wszystkie sprawy. A co do AVR CP/M to zawiera w moim przypadku : ATmega328PU , kwarc 20MHz, 2x KM41464AP-12 (8bit ), MM232R FTDI jako most USB<-> serial + zasilanie z USB oraz karta SD 1GB  FAT16 z 8 obrazami dysków CP/M.
Większość softu działa tylko Wodr troche sie gubi z ekranem i czasem zawiesza system.
ZX Spectrum 48K/+/+2/+3 Amstrad NC100