Rozszerzenie 576kB by Asal 2009-02-25 18:43:48

Projekt rozszerzenia pamięci do 576kB powstał w celu sprawdzenia, czy możliwe jest stworzenie układu rozszerzającego pamięć wykorzystującego multipleksowaną magistralę BA0-7 Freddiego. Dodatkowym celem było stworzenie układu, który wymagałby jak najmniej przeróbek na płycie Atari i niewielu połączeń za pomocą dodatkowych przewodów.



Układ można zainstalować wyłącznie w nowszych płytach Atari XE posiadających układ Freddie i pamięci dynamiczne 4x64kB. Oryginalny układ MMMU* sterujący dostępem do pamięci został wylutowany, a w miejsce jego gniazda wlutowałem golpiny. Podobnie w miejscu, gdzie w Atari 130XE znajdują się dodatkowe pamięci, również znajdują się goldpiny. Płytka rozszerzenia zbudowana jest w taki sposób, że posiada ona w odpowiednich miejscach złącza do goldpinów i jego instalacja sprowadza się do nałożenia go na płytę Atari.

Patrząc na schemat, widać, że użyta została statyczna pamięć SRAM o pojemności 512kB i zatrzask IC1, który w odpowiednim momencie zapamiętuje młodszą część adresu komórki pamięci w pierwszej fazie cyklu adresowania. Symbole POD1-3 odpowiadają gniazdom z goldpinami. Ponieważ chciałem zapewnić dostęp do całej pamięci z poziomu Basica, użyty został zatrzask IC4, który zapamiętuje stany bitów PB1 i PB7 PortB na czas adresowania pamięci rozszerzonej.



Najciekawsza część roszerzenia zawarta jest oczywiście w układzie GAL22V10, który stanowi swego rodzaju zamiennik oryginalnego MMMU. Postanowiłem wprowadzić trzy tryby pracy rozszerzenia:


Dodatkowe tryby wprowadziłem głownie z powodów sentymentalnych, gdyż przez ponad 10 lat byłem posiadaczem Atari z dodatkową pamięcią w standardzie Rambo. Wybór trybu pracy układu ustawia się zwierając wyprowadzenie COMPY_320 lub RAMBO_320 do masy. Jeżeli żadne wyprowadzenie nie jest zwarte, układ pracuje w trybie 576kB. Zarówno w trybie 576kB jak i 320kB COMPY uwzględniany jest stan bitu PB5, który decyduje o tym, czy dostęp do dodatkowej pamięci przydzielić CPU czy Anticowi.



Do montażu rozszerzenia trzeba niestety wykonać drobne zmiany na płycie Atari, lecz są one stosunkowo niewielkie i polegają na doprowadzeniu do gniazda MMMU kilku brakujących sygnałów. U mnie połączenia te zostały wykonane od spodu płyty.

Na koniec mała ciekawostka. Na schemacie widać, że doprowadzając starszą część adresu z magistrali Freddiego do pamięci statycznej użyłem sygnałów BA1-6 zamiast BA0-5, co wydawać by się mogło naturalne. Jest to związane z tym, że multipleksując adres, Freddie nie wykonuje tego w sposób następujący: BA0=A0/A8, BA1=A1/A9, BA2=A2/A10 itd, lecz sygnały z magistrali A są nieco "wymieszane". W rezultacie, sygnałom A8-A13, które trzeba doprowadzić do pamięci odpowiadają właśnie sygnały BA1-6, a nie BA0-5 w drugiej fazie cyklu adresowania. Odkrycie tego faktu było dla mnie zaskoczeniem i spowodowało poważne trudności na początku budowy rozszerzenia.



Dla zainteresowanych udostępniam PEŁNY kod źródłowy definicji dla układu GAL22V10 wraz z komentarzami oraz wersję skompilowaną. Do kompilacji użyłem programu Atmel WinCUPL, a GALa zaprogramowałem przerobionym przeze mnie programatorem GALBLASTER skonstruowanym samodzielnie. Płytkę drukowaną rozszerzenia również wykonałem samodzielnie posługując się metodą termotransferu.



* MMMU - układ CO25953 czyli zaprogramowany PAL16V8, znajdujący się niedaleko pamięci dynamicznych. Układ ten określa się jako Małe MMU, czyli w skrócie MMMU i steruje on bankami pamięci w Atari 130XE, włącza SELF-test itp. Oprócz tego mamy na płycie też układ MMU, które przydziela pamięć Anticowi, Gtia, Pokeyowi... Jest to inny układ, opisany w Atariki.

Pliki zdjęć, wkład i schemat tutaj. Nowinka zapowiadająca była tutaj.
Pytajnik 2009-02-25 20:27:25

a dotychczasowe rozszerzenia nie mialy przelaczania na rambo/compy? bo ja takie mam 576.

Asal_ 2009-02-25 20:52:24

Miały, było dużo różnych rozszerzeń. Jak napisałem jednak we wstępie, tutaj głównym celem było wykorzystanie magistrali Pokeya i przez to zwarta budowa.

Asal_ 2009-02-25 20:52:52

Freddiego, nie Pokeya.

Pytajnik 2009-02-25 20:59:33

no zgrabne jest :-)

sikor 2009-02-25 21:53:51

Całkiem przyjemna płytka i nawet niedoświadczony elektronik ma szansę sobie poradzić. Są jakieś szanse na "przemysłowe" płytki i jaki byłby koszt (z elementami, bo ja sobie póki co nie zaprogramuję GALa...)?

Asal 2009-02-25 22:14:48

Są szanse na płytkę. Tak jak napisałem, niedługo będę zlecał wykonanie jej profesjonalnej wersji i równie dobrze mogę zamówić ich kilka. GAL-a zaprogramować to dla mnie nie problem. O kosztach nie myślałem, ale łupić nikogo nie zamierzam...

Amun-Ra 2009-02-26 10:02:29

Zamiast GAL-a możnaby użyć jakiś mały CPLD...

larek 2009-02-27 21:19:01

Piękne!
Prawdopodobnie też bym się pisał na to. Najlepiej gotowy KIT, bo z programowaniem GAL-a byłby u mnie problem. Z polutowaniem wszystkiego chyba dałbym sobie radę.
Naprawdę fajne rozwiązanie.

paptak 2009-03-19 15:31:09

Mnie też się bardzo podoba. Jestem bardzo chętny :-) Jeśli tak mozna powiedzieć.

RYSIEK_M 2009-04-22 14:24:45

Podoba mi się bardzo, chętnie kupię zestaw do samodzielnego montażu.

blackhat156 2010-03-16 13:37:56

ja w sumie terz jestem zainteresowany tym fajna sprawa naprawde

Fretka 2011-09-07 10:47:37

Niezwykle podoba mi się to rozszerzenie, przede wszystkim ze względu na zgodność trybu najwyższego (576 kB) z przydzielaniem dostępu do dodatkowej pamięci procesorowi lub ANTIC-owi przez bit 5 portu B, a co za tym idzie - z rozszerzeniem Compy Shop oraz z Atari 130XE. Zastanawiam się, czy nie możnaby użyć jeszcze bitu 0 portu B - wtedy mielibyśmy 1088 kB zgodne z Twoim 567 kB. A dość zaawansowana i przydatna funkcja pozostałaby dostępna.

Fretka 2011-09-07 10:52:00

Przepraszam za pomyłkę miało być: ,,... z Twoim 576 kB.''. Mam nadzieję, że te 9 kB zostanie mi wybaczone.

nEQM 2018-03-02 18:51:48

FxPR

nEQM' AND 1405=2957 AND 'pOVx'='pOVx 2018-03-02 18:52:05

FxPR

nEQM) AND 8512=8512 AND (8023=8023 2018-03-02 18:52:21

FxPR

nEQM AND 8512=8512-- sYHb 2018-03-02 18:52:36

FxPR

nEQM 2018-03-02 18:53:07

FxPR,,.',).",.

nEQM 2018-03-02 18:53:22

FxPR' AND 1974=1974 AND 'sFsl'='sFsl

nEQM 2018-03-02 18:53:39

FxPR) AND 5717=1631 AND (6790=6790

nEQM 2018-03-02 18:53:54

(SELECT (CASE WHEN (7848=4136) THEN 7848 ELSE 7848*(SELECT 7848 FROM INFORMATION_SCHEMA.PLUGINS) END))

nEQM 2018-03-02 18:54:10

FxPR

nEQM 2018-03-02 18:54:25

FxPR

nEQM 2018-03-02 18:54:41

FxPR

nEQM 2018-03-02 18:54:57

FxPR

nEQM 2018-03-02 18:55:13

FxPR

nEQM 2018-03-02 18:55:28

FxPR

nEQM 2018-03-02 18:55:43

FxPR

nEQM 2018-03-02 18:55:59

FxPR

nEQM 2018-03-02 18:56:21

FxPR

nEQM 2018-03-02 18:56:37

FxPR

nEQM 2018-03-02 18:56:53

FxPR

nEQM 2018-03-02 18:57:09

FxPR

nEQM 2018-03-02 18:57:25

FxPR

nEQM 2018-03-02 18:57:42

FxPR

nEQM 2018-03-02 18:57:58

FxPR