forum speccy.pl

ZX Spectrum => WSPÓŁCZESNE KLONY => Wątek zaczęty przez: phantomnet w 2013.02.01, 00:49:57

Tytuł: Nowy klon
Wiadomość wysłana przez: phantomnet w 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ę!!!!
Tytuł: Odp: Nowy klon
Wiadomość wysłana przez: Micky w 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 :)
Tytuł: Odp: Nowy klon
Wiadomość wysłana przez: matofesi w 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 :)
Tytuł: Odp: Nowy klon
Wiadomość wysłana przez: phantomnet w 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.
Tytuł: Odp: Nowy klon
Wiadomość wysłana przez: matofesi w 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" ;)
Tytuł: Odp: Nowy klon
Wiadomość wysłana przez: steev w 2013.02.01, 11:32:26
Te porty dla klawiatury i myszy, to jak rozumiem attiny2313a plus FTDI?
Tytuł: Odp: Nowy klon
Wiadomość wysłana przez: Tygrys w 2013.02.01, 11:52:59
Pozostaje jedynie czekać na powstanie tego urządzenia ;)
Tytuł: Odp: Nowy klon
Wiadomość wysłana przez: Gryzor w 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 ?
Tytuł: Odp: Nowy klon
Wiadomość wysłana przez: phantomnet w 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 (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.

Tytuł: Odp: Nowy klon
Wiadomość wysłana przez: Micky w 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?
Tytuł: Odp: Nowy klon
Wiadomość wysłana przez: Micky w 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 (http://www.worldofspectrum.org/forums/showthread.php?t=31044)
Tytuł: Odp: Nowy klon
Wiadomość wysłana przez: phantomnet w 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 (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 (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.
Tytuł: Odp: Nowy klon
Wiadomość wysłana przez: Tygrys w 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ą ?
Tytuł: Odp: Nowy klon
Wiadomość wysłana przez: Micky w 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).
Tytuł: Odp: Nowy klon
Wiadomość wysłana przez: phantomnet w 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.
Tytuł: Odp: Nowy klon
Wiadomość wysłana przez: Micky w 2013.02.03, 22:29:24
Ok - Ja cały czas jestem chętny na beta testy :)

p.s. a widziałeś mostek USB-RS232 firmy MCP2200?
ciekawostka - http://hackaday.com/2011/01/18/mcp2200-usb-to-serial-chip-hacked-to-do-your-bidding/ (http://hackaday.com/2011/01/18/mcp2200-usb-to-serial-chip-hacked-to-do-your-bidding/)
Tytuł: Odp: Nowy klon
Wiadomość wysłana przez: phantomnet w 2013.02.04, 01:13:43
Raport na dziś. (23:43 w UK :D)
Podstawowa logika układu zaimplementowana w CPLD (ok 20% XC9536XL)
     - adresowanie portu wyjściowego #FE (254): potrzebny dla uzyskania danych o kolorze BORDER
     - adresowanie AY-3-8910/8912
     - multipleksowanie sygnałów #RD  i #WR  z Z80 i ATmega przełączane przez #RFSH
     - blokowanie sygnały #CS dla SRAM dla pierwszej połowy przestrzeni adresowej ATmega
     - adresowanie LCD tj. sygnał #CS dla LCD generowany dla adresów #7Exx dla rozkazów i #7Fxx dla danych

I tutaj mała ciekawostka.
Jak napisałem wcześniej kontroler LCD przyjmuje dane 16-bitowe, ATmega jest 8-bitowy. LCD jest w przestrzeni adresowej pamięci XMEM ATmega. Jak przesłać 16-bitowa dane w tym wypadku ??
Mała sztuczka i staje się to proste.
Dane LCD D0-7 to D0-7 ATmega, dane LCD D8-15 to adresy A0-7.
Tj. jeśli chcę przesłać daną koloru piksela #FEEF, to przesyłam #EF do adresu  #7FFE.
Dla rozkazów : np. #0029 (turn display on) przesyłam #29 pod adres #7E00.
Proste i eleganckie ?!!

Tytuł: Odp: Nowy klon
Wiadomość wysłana przez: phantomnet w 2013.02.14, 21:15:45
Tak przy okazji zrzut ekranu z podłączonym AVR-CP/M
Tytuł: Odp: Nowy klon
Wiadomość wysłana przez: phantomnet w 2013.02.14, 21:48:21
W ramach pracy nad klonem i jako ćwiczenie dodatkowe postanowiłem wykonać AX82 o którym pisaliście tu:http://speccy.pl/forum/index.php/topic,676.0.html (http://speccy.pl/forum/index.php/topic,676.0.html)
Na początek bez SD i z ATmega1284P. Ale wymyśliłem sposób na dodanie AY, joystic'a i innych.
Układ na płytce uniwersalnej (żeby było szybciej) z dodaniem stabilizatora 3V3 dla CPLD gdyż zastosowałem XC9536XL.
Jutro powinien już działać to zdam relacje. (może w nowym wątku)
Tytuł: Odp: Nowy klon
Wiadomość wysłana przez: Tygrys w 2013.04.08, 21:38:15
A jak się ma projekt po kolejnych 2 miesiącach?
Tytuł: Odp: Nowy klon
Wiadomość wysłana przez: pear w 2016.03.07, 08:02:24
Czy w ciągu 3 lat udało się zrealizować projekt ?