Autor Wątek: Zamiennik Gate Array 40007 i 40010  (Przeczytany 9518 razy)

ZbyniuR

  • *****
  • Wiadomości: 3333
  • Miejsce pobytu:
    Carlisle w UK
  • CPC AGA PSX
Zamiennik Gate Array 40007 i 40010
« dnia: 2017.09.26, 17:42:26 »
Niejaki Miguel Angel Rodríguez Jódar stworzył prototypy zamiennika jedynego specjalizowanego scalaka w CPC, czyli Gate Array dla wersji 40007 oraz 40010, oczywiście na FPGA. Można go namierzyć na FB i podpytać jakby co. :)

Jak tak dalej pójdzie to może wykombinuje jak tam wstawić coś co da nam możliwości z Plusa. ;)

https://www.facebook.com/photo.php?fbid=10203659286318389&set=gm.10154980562362058&type=3&permPage=1&ifg=1
- Jeśli masz w domu światło i wodę, tzn. że masz światłowód. ;)

gotham

  • ***
  • Wiadomości: 135
  • Miejsce pobytu:
    Kraków
Odp: Zamiennik Gate Array 40007 i 40010
« Odpowiedź #1 dnia: 2019.01.27, 13:30:12 »
Ciekaw jaki koszt? I czy można zbudować płytę z wbudowana kością.
Amstrad  6128 plus + CM14 , Gamecube , Xbox 1 , PSP , Neogeo Pocket color x 2 ,

gotham

  • ***
  • Wiadomości: 135
  • Miejsce pobytu:
    Kraków
Odp: Zamiennik Gate Array 40007 i 40010
« Odpowiedź #2 dnia: 2019.01.28, 23:08:24 »
Niejaki Miguel Angel Rodríguez Jódar stworzył prototypy zamiennika jedynego specjalizowanego scalaka w CPC, czyli Gate Array dla wersji 40007 oraz 40010, oczywiście na FPGA. Można go namierzyć na FB i podpytać jakby co. :)

Jak tak dalej pójdzie to może wykombinuje jak tam wstawić coś co da nam możliwości z Plusa. ;)

https://www.facebook.com/photo.php?fbid=10203659286318389&set=gm.10154980562362058&type=3&permPage=1&ifg=1


Zbyszku a jest rozpiska logiki oryginalnych układów 40007 i 40010 ?
Amstrad  6128 plus + CM14 , Gamecube , Xbox 1 , PSP , Neogeo Pocket color x 2 ,

KWF

  • *****
  • Wiadomości: 6823
  • Miejsce pobytu:
    trzecia planeta od Słońca
  • "I co ja robię tu, u-u, co Ty tutaj robisz ..."
    • Insta do lasownia
KWF
-----
R Tape loading error 0:1
Moje zabawki: https://github.com/McKlaud76

ZbyniuR

  • *****
  • Wiadomości: 3333
  • Miejsce pobytu:
    Carlisle w UK
  • CPC AGA PSX
- Jeśli masz w domu światło i wodę, tzn. że masz światłowód. ;)

gotham

  • ***
  • Wiadomości: 135
  • Miejsce pobytu:
    Kraków
Odp: Zamiennik Gate Array 40007 i 40010
« Odpowiedź #5 dnia: 2019.01.29, 22:03:11 »
Znalazłem PDF dla układu 16L6AC w postaci bramek logicznych i to jest do odtworzenia w postaci np 10-20 scalaków eksperymentalnie. 
Rozumiem że ten układ pobiera z pamięci dane obrazu i wyświetla je w pal.  Co stoi na przeszkodzie żeby ten układ wyświetlał większą roździelczość albo więcej kolorów na ekranie? Wielkość pamięci ram?
Amstrad  6128 plus + CM14 , Gamecube , Xbox 1 , PSP , Neogeo Pocket color x 2 ,

trojacek

  • *****
  • Wiadomości: 6831
  • Miejsce pobytu:
    Warszawa
Odp: Zamiennik Gate Array 40007 i 40010
« Odpowiedź #6 dnia: 2019.01.29, 22:40:43 »
Wyświetlaniem obrazu to się raczej CRTC zajmuje?

ZbyniuR

  • *****
  • Wiadomości: 3333
  • Miejsce pobytu:
    Carlisle w UK
  • CPC AGA PSX
Odp: Zamiennik Gate Array 40007 i 40010
« Odpowiedź #7 dnia: 2019.01.29, 23:54:07 »
Z tego na ile to rozumiem to...

CRTC (512KHz) na podstawie danych zapisanych w swoich rejestrach generuje w regularnych odstępach czasu, sygnały synchronizacji oraz adresy pamięci wysyłane do GA. To na ich podstawie GA wie w którym momencie które komórki pamięci czytać, potem sprawdza aktualny tryb i paletę, i na ich podstawie przestawia kolejność bitów odczytanych z pamięci graficznej by ustalić kolory pikseli i wysyła je na ekran.

W regularnych odstępach czyli raz na każdą pikselową linijkę czyli łącznie z ramką 272 linie razy 25 klatek na sekundę. W NTSC mniej linii ale więcej klatek, a w interlejsie ilość klatek się podwaja. Dostęp do pamięci graficznej GA ma pomiędzy taktami procesora, tak aby GA i Z80 sobie nie przeszkadzały, ani nie musiały na siebie czekać. I to jest plus Amstradów w porównaniu do innych popularniejszych 8bit.

Dlatego myślę że wąskim gardłem w ilości odczytywanych danych jest tu szybkość działania kości pamięci. A ci co bawili się w podkręcanie CPC, twierdzą że starsze modele z lat 84-87 daje się podkręcić o 50%, a te z 88-89 o 100%, i nie więcej. tzn bez zmieniania kości pamięci na szybsze.

GA w CPC tyka 16MHz, a Plusy mają szybciej taktowaną grafę 40MHz, bo w razie sprzętowego scrolingu muszą zdążyć pomiędzy taktami procka, przerzucić i zmodyfikować zawartość kilkunastu tysięcy bajtów.

Procek chodzi parę razy szybciej niż CRTC, a to znaczy że sam potrafi generować te dane co CRTC i wysyłać je do GA i to na bardziej różnorodne sposoby niż CRTC. np tak aby poziome linijki ekranu znajdowały się obok siebie, a nie ze skokiem co 8 linijek jak to robi CRTC, i przesuwać adres początkowy wyświetlanej części pamięci ekranu z dokładnością co 1 pikselową linijkę a nie co 8, uzyskując płynny pionowy scroling tak jak w Pinball Dreams, o czym wspominał Rino pytany jak to zrobił.


Czy dałoby się tak zmodyfikować GA zrobionego na FPGA, aby wyświetlał bogatszą paletę kolorów, myślę że tak. Zapewne ze sprzętowymi sprajtami też by sobie poradził, a może nawet z nowymi trybami w których odczytywałby 2 bloki pamięci po 16KB na raz, aby wyświetlić tryby jak w Enterprise czyli 320x200 w 16 kolorach, albo 160x200 w 256. Ale czy dałoby się zrobić sprzętowy scroling bez podkręcania działania pamięci to szczerze wątpię. Choć kiedy czytam (bo raczej nie oglądam a wierzę na słowo) co wyczyniają Amigowcy z Indivision albo z Vampirkami to gdyby tacy spece zabrali się za poprawianie CPC, to mogliby nas zaskoczyć. ;)
Z tym że jeśli takie modyfikacje nie byłyby kompatybilne z Plusami, to na nowy soft do nich byśmy sobie poczekali.

I osobiście wolałbym takie bajery które potrafiłyby zamienić każdego CPC w (prawie)PLUSa, niż zewnętrzną graficzną z trybami od MSX2. No bo co z tego że są fajne skoro są jakieś takie nieAmstradowe. :/

« Ostatnia zmiana: 2019.01.30, 00:19:15 wysłana przez ZbyniuR »
- Jeśli masz w domu światło i wodę, tzn. że masz światłowód. ;)

trojacek

  • *****
  • Wiadomości: 6831
  • Miejsce pobytu:
    Warszawa
Odp: Zamiennik Gate Array 40007 i 40010
« Odpowiedź #8 dnia: 2019.01.30, 00:33:50 »
OK. Czyli rozumiem, że skoro CRTC zawiera liczniki niezbędne do generowania adresów pamięci obrazu (i przy okazji - obu synchronizacji  i migającego kursora), gate array dba o całą resztę - czyli zamianę danych odczytanych z pamięci obrazu na kolejne piksele (łącznie z interpretacją kolorów) oraz zarządzanie dostępem do tej pamięci przez CPU (tak, by CPU i CRTC nie "gryzły" się nawzajem).

Ergo, CRTC "nie wie", jak zorganizowana jest pamięć obrazu i jak na podstawie jej odczytów generowany będzie obraz. Innymi słowy, można w teorii podwoić rozdzielczość lub głębię kolorów poprzez dołożenie bitów pamięci obrazu (np. 8->16) i rozbudowanie logiki w gate array.

Jednak zwiększanie rozdzielczości nie ma większego sensu, jeśli monitor pozostaje ten sam - z częstotliwością ramki 50 Hz i częstotliwością linii 15625 Hz nie da się wycisnąć więcej, niż 640 pikseli w poziomie (podwojenie do 1280 spowoduje tylko rozmazanie krawędzi pikseli ze względu na ograniczone pasmo sygnału wideo) i maksymalnie 240 w pionie (teoretycznie 312,5 linii - ale trochę odpada na back i front porch oraz impuls synchronizacji).

Cudując bardziej zaawansowany gate array można rozbudować paletę, tworzyć bitplany, kanał alfa, warstwę ze sprite'ami itp. No ale właśnie... jaki soft to wykorzysta? Może po prostu wystarczy zapewnić zgodność z plusami - i to byłby już duży sukces?

Dr Piotr

  • ***
  • Wiadomości: 196
Odp: Zamiennik Gate Array 40007 i 40010
« Odpowiedź #9 dnia: 2019.01.30, 04:12:25 »
OK. Czyli rozumiem, że skoro CRTC zawiera liczniki niezbędne do generowania adresów pamięci obrazu (i przy okazji - obu synchronizacji  i migającego kursora),
crtc nie generuje kursora - ma co prawda taka funkcjonalnosc, ale w cpc jest on generowany softwareowo
Cytuj
gate array dba o całą resztę - czyli zamianę danych odczytanych z pamięci obrazu na kolejne piksele (łącznie z interpretacją kolorów) oraz zarządzanie dostępem do tej pamięci przez CPU (tak, by CPU i CRTC nie "gryzły" się nawzajem).
crtc nie ma dostepu do pamieci - jedyne co robi to generuje biezacy adres pamieci do pobrania (MA) a oraz synchronizacje (HSYNC, VSYNC) i DISPEN. Gate array czyta 2 bajty spod adresu MA i z tego oraz ustawien trybu ekranu i kolorow generuje sygnal do monitora.
Cytuj
Ergo, CRTC "nie wie", jak zorganizowana jest pamięć obrazu i jak na podstawie jej odczytów generowany będzie obraz. Innymi słowy, można w teorii podwoić rozdzielczość lub głębię kolorów poprzez dołożenie bitów pamięci obrazu (np. 8->16) i rozbudowanie logiki w gate array.
Bez wiekszych problemow mozna zrobic wieksza palete ale z rozdzielczoscia bedzie trudniej
Cytuj
Jednak zwiększanie rozdzielczości nie ma większego sensu, jeśli monitor pozostaje ten sam - z częstotliwością ramki 50 Hz i częstotliwością linii 15625 Hz nie da się wycisnąć więcej, niż 640 pikseli w poziomie (podwojenie do 1280 spowoduje tylko rozmazanie krawędzi pikseli ze względu na ograniczone pasmo sygnału wideo) i maksymalnie 240 w pionie (teoretycznie 312,5 linii - ale trochę odpada na back i front porch oraz impuls synchronizacji).
Do 240 pixeli w pionie nie potrzeba specjalnie kombinowac - gate array jest elastyczny i mozesz nawet z basica taki rozmiar ustawic. W teorii ekran moze miec i 311 linii tylko wtedy bedzie wiecej pamieci zajmowal i musi byc ulokowany np pod $4000 zamiast $c000

Dr Piotr

  • ***
  • Wiadomości: 196
Odp: Zamiennik Gate Array 40007 i 40010
« Odpowiedź #10 dnia: 2019.01.30, 04:51:11 »
Z tego na ile to rozumiem to...

CRTC (512KHz) na podstawie danych zapisanych w swoich rejestrach generuje w regularnych odstępach czasu, sygnały synchronizacji oraz adresy pamięci wysyłane do GA. To na ich podstawie GA wie w którym momencie które komórki pamięci czytać, potem sprawdza aktualny tryb i paletę, i na ich podstawie przestawia kolejność bitów odczytanych z pamięci graficznej by ustalić kolory pikseli i wysyła je na ekran.
Raczej nie przestawia - po prostu uzywa tych wartosci jako lookup table 2 bitowy dla trybu 1 I 4bitowy dla trybu 0
Cytuj
W regularnych odstępach czyli raz na każdą pikselową linijkę czyli łącznie z ramką 272 linie razy 25 klatek na sekundę.
wysyla za kazdym razem nie tylko co linijke. Ramka ma 312 linii
Cytuj
W NTSC mniej linii ale więcej klatek, a w interlejsie ilość klatek się podwaja. Dostęp do pamięci graficznej GA ma pomiędzy taktami procesora, tak aby GA i Z80 sobie nie przeszkadzały, ani nie musiały na siebie czekać. I to jest plus Amstradów w porównaniu do innych popularniejszych 8bit.
GA kradnie cykle procesora - dokladnie co 4 cykl wysyla wait do z80 i w zaleznosci od tego w jakim stadium wykonywania instrukcji jest cpu, ma to wplyw na jego opoznienie lub nie.
Cytuj
Dlatego myślę że wąskim gardłem w ilości odczytywanych danych jest tu szybkość działania kości pamięci. A ci co bawili się w podkręcanie CPC, twierdzą że starsze modele z lat 84-87 daje się podkręcić o 50%, a te z 88-89 o 100%, i nie więcej. tzn bez zmieniania kości pamięci na szybsze.

GA w CPC tyka 16MHz, a Plusy mają szybciej taktowaną grafę 40MHz, bo w razie sprzętowego scrolingu muszą zdążyć pomiędzy taktami procka, przerzucić i zmodyfikować zawartość kilkunastu tysięcy bajtów.
????? przy sprzetowym scrollingu ga nie przerzuca tysiecy bajtow, po prostu zmieniane sa rozne offsety wewnatrz ga, ktore wplywaja na to skad sa pobierane bajty do generowania obrazu. ga w plusie nie moze kopiowac tysiecy bajtow bo nie ma dma do kopiowania - tylko dzwiek korzysta z dma.
Cytuj
Procek chodzi parę razy szybciej niż CRTC, a to znaczy że sam potrafi generować te dane co CRTC i wysyłać je do GA i to na bardziej różnorodne sposoby niż CRTC. np tak aby poziome linijki ekranu
A jak chcesz ustawic softwareowo linie vsync, hsync, ma laczace crtc z ga?
Cytuj
znajdowały się obok siebie, a nie ze skokiem co 8 linijek jak to robi CRTC, i przesuwać adres początkowy wyświetlanej części pamięci ekranu z dokładnością co 1 pikselową linijkę a nie co 8, uzyskując płynny pionowy scroling tak jak w Pinball Dreams, o czym wspominał Rino pytany jak to zrobił.
To wszystko sa zabawy z danymi, ustawianymi w rejestrach crtc przez cpu a nie dostarczanymi przez cpu do ga

ZbyniuR

  • *****
  • Wiadomości: 3333
  • Miejsce pobytu:
    Carlisle w UK
  • CPC AGA PSX
Odp: Zamiennik Gate Array 40007 i 40010
« Odpowiedź #11 dnia: 2019.01.30, 05:39:10 »
Trojacek miałem A1200 przez 6 lat i jakoś nigdy mnie rozdziałka 1280 nie jarała. Normalna czcionka jest za mała i nieczytelna. Takich małych pikselków i tak na PALu nie widać, za to widać że komp wolniej chodzi. Tym bardziej nie wiem po co tyle pikseli w 8 bit. CPC potrafi wyświetlać obraz tylko z podstawowych 64 RAM, a z RAMdysku już nie. Przeciwnie do innych 8bit. Ale o trybie 640x200 w 4 kolorach to marzyłem w czasach gdy miałem Amstrada. Razem z overscanem taki obrazek by zajął niemal cały RAM, ale jakie cudne obrazki by umiał wyświetlać. :)

Piotr wiem jak działa sprzętowy scroll w CPC, bo bawiłem się nim w Basicu. A tam gdzie piszę o przerzucaniu nastu-tysiącach bajtów pisałem o Plusie.  Że też się nie domyśliłeś. :)

Rino pisał że płynny pionowy scroling uzyskuje się bombardując układ graficzny danymi o położeniu kolejnych linijek w pamięci, i że mogą być one wtedy rozmieszczone w pamięci w dowolny sposób. I nie trzeba przy tym żadnych danych przerzucać w pamięci. Nawet nie wiem czy GA ma jakiś rejestry, ale z tego co mi wiadomo o rejestrach w CRTC to nie ma tam takiego który pozwala przestawiać dowolną linijkę na dowolną wysokość z dokładnością do 1go piksela. Stąd moje przypuszczenie że takie coś jest w GA. Ale głowy za to nie dam. Specjalnie dodałem na początku posta to co dodałem, bo wiem że nie jestem alfą i omegą.
- Jeśli masz w domu światło i wodę, tzn. że masz światłowód. ;)

rzookol

  • ***
  • Wiadomości: 214
  • Miejsce pobytu:
    Lublin/Stasin
Odp: Zamiennik Gate Array 40007 i 40010
« Odpowiedź #12 dnia: 2019.01.30, 09:11:22 »
Co do podmianki pamięci na szybsze  to technicznie przecież to łatwa operacja.
+2, +3, CPC128Plus, kilka Amigi, kilkadziesiąt Maków, walające się Commodore

ZbyniuR

  • *****
  • Wiadomości: 3333
  • Miejsce pobytu:
    Carlisle w UK
  • CPC AGA PSX
Odp: Zamiennik Gate Array 40007 i 40010
« Odpowiedź #13 dnia: 2019.01.30, 14:30:21 »
Może i łatwe dla tych co im nie brak umiejętności, ale także oporów do takiego haratania zabytków. Ale to dopiero początek kłopotów jakbyś chciał podkręcić CPC. Następnym jest szukanie takiego Z80 który wytrzyma szybszy zegar, oraz przyklejanie radiatora na GA żeby nie zdechł. A potem (i na tym wykładało się najwięcej z tych co próbowali), znalezienie monitora multisynch, który złapie niestandardowe częstotliwości wysyłanego wtedy przez komputer obrazu. A to też nie koniec, bo wtedy się okazuje że stacja dysków nie działa, bo dysk się obraca za wolno w porównaniu z tempem w jakim komputer próbuje łykać dane, i tego jeszcze się nikomu nie udało przejść. Choć ze dwie osoby na angielskim forum twierdziły, że wczytywały wtedy dane z partycji na CF.

Trzeba by jakoś zmodyfikować płytę główną tak aby przyspieszyć tylko pamięć i procek, a resztę bebechów zostawić na normalu, i pewnie jeszcze dodać coś co sprawi że te komunikacja między tym co szybsze a tym co wolniejsze nie będzie zakłócona. Podkręcacze klonów Specca zza Buga jakoś to ogarnęli.
- Jeśli masz w domu światło i wodę, tzn. że masz światłowód. ;)

Dr Piotr

  • ***
  • Wiadomości: 196
Odp: Zamiennik Gate Array 40007 i 40010
« Odpowiedź #14 dnia: 2019.01.30, 14:34:17 »
Piotr wiem jak działa sprzętowy scroll w CPC, bo bawiłem się nim w Basicu. A tam gdzie piszę o przerzucaniu nastu-tysiącach bajtów pisałem o Plusie.  Że też się nie domyśliłeś. :)
Tez pisalem o plusie - nie ma on zadnego wsparcia do przerzucania bajtow a scroll polega na tym, co napisalem wczesniej
Cytuj
Rino pisał że płynny pionowy scroling uzyskuje się bombardując układ graficzny danymi o położeniu kolejnych linijek w pamięci, i że mogą być one wtedy rozmieszczone w pamięci w dowolny sposób. I nie trzeba przy tym żadnych danych przerzucać w pamięci. Nawet nie wiem czy GA ma jakiś rejestry,
Warto w takim razie powiekszyc wiedze :) http://www.cpcwiki.eu/index.php/Gate_Array