26

Odp: [Atari 65XE, układ Freddy] Naprawa, proteza CPLD

Technicznie: Czy ktoś kiedyś wieszał się jakimś naprawdę wypasionym oscyloskopem na CLK_IN CLK_OUT PH0 i PH2?
Chodzi mi o wyłapanie niuansów, co robi takie krzywe zbocza i lekko pływające w fazie (przynajmniej u mnie to tak wyglądało na gnieździe carta).
Chodzi o tego "FREDDIEGO"?

No bo jak te Freddie padają (a ja mam też 65XE) to może trzeba by zrobić taki wypełniacz PRO na bazie konkretnego FPGA z PLLami żyleta?

Czy:
CLK_IN
CLK_OUT
OSC
FPHI0
PHI0
PHI1
PHI2
To wszystkie zegary ATARI?

27

Odp: [Atari 65XE, układ Freddy] Naprawa, proteza CPLD

Gienek napisał/a:

Chodzi mi o wyłapanie niuansów, co robi takie krzywe zbocza i lekko pływające w fazie (przynajmniej

Strzelam, że procesor to układ NMOS który wyjścia:
* na zero realizuje poprzez ściągnięcie tranzystorem do masy (stąd dpionowe zbocza)
* na jeden ma zrealizowane wewnątrz przez rezystor podciągająćy, stąd narastanie jest takie powolne, a do tego obciążenie tego wyjścia PHI2 pojemnościami wejściowymi nnych układów (które też z tego sygnału korzystają) robi swoje.

Przetnij ścieżkę PHI2 zaraz na wyjściu z tego układu, który ten sygnał generuje, daj jakąś bramkę schmitta i puśc dalej jej wyjście.

PS. Naprawdę nie rozumiem tej całej dyskusji o wpływie PHI2 na OSC.
ZRobiłem w CPLD OSC jako zwykłe dzielenie przez 4 CLK_IN i wszystko dziala jak marzenie.
Mam wrażenie, że mój układ w CPLD działa nawet lepiej od oryginału (brak jakiegokolwiek jitteru na RAS/CAS)

Ostatnio edytowany przez krzysiobal (2023-08-25 21:29:17)

28

Odp: [Atari 65XE, układ Freddy] Naprawa, proteza CPLD

Sęk w tym, że tych zegarów nie można sobie od tak wygenerować "na zewnątrz" (poza OSC). One powstają w różnych układach i raz, że występują pomiędzy nimi opóźnienia, a dwa one są również używane wewnątrz tych układów. Z nazwy wymieniłeś wszystkie zegary, ale są jeszcze pośrednie, nienazwane, buforowane sygnały zegarowe.

Dla lubiących eksperymentować jest taki fajny układzik Si5351A...

Ostatnio edytowany przez _tzok_ (2023-08-25 21:45:25)

Moja kolekcja: Atari 1040STe (4MB), Atari 1040STfm (4MB, BLiTTER, AT-ONCE+), Atari 800XE (SIMM EXP 1MB), Atari 800XL (RAMBO XL 256kB), Atari 600XL (64kB), Sinclair ZX SPECTRUM+ (48kB), TIMEX Computer 2048 (48kB), Commodore A600 (2MB+4MB, HDD CF 4GB), Commodore C64C.

29

Odp: [Atari 65XE, układ Freddy] Naprawa, proteza CPLD

Kumam. Ale taki trik. Mam FPGA z wewnętrznym PLL. Niech będzie MAX10-tka. Obok niego mam oscylator 14.XXX (osobny, nie ten ATARowski). Sygnał wpuszczam na FPGA gdzie w środku mnożę PLLką niech będzie x16. Powstaje mi wewnętrzny zegar 224,XXMHz. Następnie najprościej jak się da maszyna stanu, liczona do 16.
Dla 0 wyjścia takie i takie.
Dla 1 ... itd.
Dla 15 ..
Wtedy nie potrzeba mi CLK_IN CLK_OUT PHI2. A OSC i wszystko co FREDDIE kontroluje ma zbocza żylety. Przesunięcia fazowe załatwia mi właśnie to zliczanie do 16 (ale może być większe przecież).

Czy wtedy PHI2 będzie stały w fazie (bo rozumiem, że zbocze SALLY jakoś tam zepsuje)?

30

Odp: [Atari 65XE, układ Freddy] Naprawa, proteza CPLD

Chodzi o to, żeby PHI2 we FREDDIE był zgodny w fazie z PHI2 "wystawianym" przez SALLY. Choć to mało intuicyjne, ale PHI2 "wraca" z SALLY do FRIEDDIEgo. FREDDIE potrzebuje PHI2 do generowania sygnałów RAS i CAS. Prawdziwy FREDDIE do generowania RAS i CAS używa PHI2, który dostaje z SALLY.

To właśnie @Simius usilnie próbował mi wytłumaczyć. Cel oczywiście można osiągnąć na różne sposoby.

Moja kolekcja: Atari 1040STe (4MB), Atari 1040STfm (4MB, BLiTTER, AT-ONCE+), Atari 800XE (SIMM EXP 1MB), Atari 800XL (RAMBO XL 256kB), Atari 600XL (64kB), Sinclair ZX SPECTRUM+ (48kB), TIMEX Computer 2048 (48kB), Commodore A600 (2MB+4MB, HDD CF 4GB), Commodore C64C.

31

Odp: [Atari 65XE, układ Freddy] Naprawa, proteza CPLD

No ale skoro wiadomo w jakiej fazie jest PHI2 względem OSC, to przecież RAS i CAS jest stały względem OSC? Jak pływa to w skutek niedoskonałości. To ja bym olał wejście PHI2 do tego "zamiennika".

Dawniej technicznie był kłopot, że zegar powiedzmy 228MHz to poza zasięgiem. Teraz względem takiego zegarka zwykłe dzielniki (liczniki) zrobią to co kiedyś wypadało na przesunięciach fazowych.

0000000011111111 - to jest jakiś bazowy zegar
0101010101010101 - to po PLL x8
0123456789ABCDEF - to jest zwykły licznik 4 bitowy
0000111111110000 - a to przesunięcie -90 stopni (od fazy4 do fazyB)
0000000000001111 - a to przesunięcie +90 stopni z wypełnieniem 25%

Ja nie wiem czy by to zwykłym GALem nie obskoczył (oprócz tego multipleksera adresów).

Ostatnio edytowany przez Gienek (2023-08-25 22:50:16)

32

Odp: [Atari 65XE, układ Freddy] Naprawa, proteza CPLD

Zaprojektowałem nową minimalistyczną płytkę, praktycznie nie wychodzącą poza obryz oryginalnego uklady.
Na płytce zostawiłem jednak multipleksery, bo w poprzednich obliczeniach zapomniałem calkowicie o pinach 6, 7, 36,
które w Atari65XE co prawda sa niewykorzystywane, ale może w innych komputerach które tez z tego ukłądu korzystają, byłyby potrzebne.
Wytrawię dziś i polutuję kilka sztuk, mogę podesłać do testów.
https://obrazki.elektroda.pl/3148858300_1693057852_thumb.jpg

33

Odp: [Atari 65XE, układ Freddy] Naprawa, proteza CPLD

Bym skory był zainstalować.

34

Odp: [Atari 65XE, układ Freddy] Naprawa, proteza CPLD

Też mogę przytulić na test.
Rozumiem, że ten na CPLD jest "bardziej kompatybilny" dla wszystkich modeli Atarynek, które używają Freda.
Mam wersję z pęczkiem TTL'ów i działa...

35

Odp: [Atari 65XE, układ Freddy] Naprawa, proteza CPLD

i ja.. :-)

https://systemembedded.eu/ ... https://www.youtube.com/watch?v=GwS7Es1x6mw
""Ja bardzo przepraszam, ale podejrzenia panów są całkowicie bezpodstawne. Ja niczym nie handluję. Ta pani przyszła do mnie w tym Pancake-u i w nim wychodzi.""
ABBUC Member #319. Preferowana forma kontaktu: email

36

Odp: [Atari 65XE, układ Freddy] Naprawa, proteza CPLD

Fajnie by było, jakby testy zrobiły osoby, które posiadają jakiś problematyczny sprzęt, który wiadomo, że jest wybredny jeśli chodzi o współpracę z innymi "gratami". Jakieś mocno rozbudowane konfiguracje. Pewnie w wątku o O2 Fixerze można znaleźć co z czym nie działa bo się rozjeżdża.

krzysiobal:
Jest taka pojedyncza bramka: SN74LVC1GU04
Zajmie mniej miejsca, chociaż widzę, że i tak wcisnąłeś "normalnego" scalaka :)

Ostatnio edytowany przez x_angel (2023-08-28 11:36:42)

37

Odp: [Atari 65XE, układ Freddy] Naprawa, proteza CPLD

Znalazłem chwilę, wytrawiłem płytki i wszystko działa bez zarzutu.
https://obrazki.elektroda.pl/5340916800_1694330525_thumb.jpghttps://obrazki.elektroda.pl/5019595900_1694330523_thumb.jpghttps://obrazki.elektroda.pl/8935134800_1694330526_thumb.jpg https://obrazki.elektroda.pl/8934472800_1694330523_thumb.jpg

Ciągle jeszcze nie dawały mi spokoju piny 6 i 7 (/LE i /OE).
W oficjalnej dokumentacji Freddyego:
https://obrazki.elektroda.pl/8164432400_1694330822.jpg

Miałem pewne przeczucie, że te piny w jakiś sposób zależą od linii adresowych, więc musiałem stworzyć ulepszoną wersje testera, która będzie w stanie wysterować i spróbkować wszystkimi 38 pinami tego scalaka (40 - vcc - gnd)
https://obrazki.elektroda.pl/6830819300_1694331020_thumb.jpg https://obrazki.elektroda.pl/8222270400_1694331031_thumb.jpg


/OE:
Jeśli na linii adresowej jest $D301 oraz RW=1, /OE idzie w górę po pierwszym zboczu narastającym CKIN
Jeśli na linii adresowej jest inny adres lub RW=0, /OE idzie w dól po pierwszym zboczu narastająym CKIN
Gdy O2=0, /OE idzie w dół po 8, a potem w górę po 18 zboczu (narastajacym lub opadajacym)

/LE:
Jeśli na linii adresowej jest $D301 oraz RW=0, /LE idzie w górę po pierwszym zboczu narastającym CKIN
Jeśli na linii adresowej jest inny adres lub RW=1, /LE idzie w dól po pierwszym zboczu narastająym CKIN
Gdy O2=0, /LE idzie w dół po 8, a potem w górę po 14 zboczu (narastajacym lub opadajacym)

CK_IN             _.-._.-._.-._.-._.-._.-._.-._.-._.-._.-._.-._.-._
                               2   4   6   8  10  12  14  16  18    
                             1   3   5   7   9  11  13  15  17 |19  
                               |         | |   |     | |     | | |
PHI2             -----------.______________________________________
nOE              ______________.-----------.___________________.--
RW               ______--------------------------------------------

nLE              ______________.-----------.___________.----------
RW               -------___________________________________________

To wszystko niestety sprawia, że układ CPLD potrzebuje wszystkich 16 linii adresowych do pełnego dekodowania adresu.

fedcba9876543210
0b1101001100000001 = $D301

W powyższej wersji płytki, CPLD w ogóle nie brał pod uwagę tych linii, bo ich multipleksowaniem zajmowały się bufory.

Postanowiłem wiec zaprojektowac kolejną wersje płytki, któa doprowadzałaby wszystkie linie do CPLD, wtedy bufory już w ogóle nie będą potrzebne, bo multipleksacją zajmie się też CPLD.
Niestety jak wspominałem wcześniej, CPLD nie ma wystarczająco dużo pinów, aby temu sprostać.
Można wykorzystać cztery piny JTAGa jako piny IO (wtedy do zaprogramowania układu potrzeba napięci +12V), ale nadal zabraknie nam trzech pinów:

- linię nCAS16k (=nCAS or A14 or A15) można zamiast w CPLD, generować na diodzie i rezystorze, a nieużywana bramka 74HCU04 będzie pełnić rolę bufora i regeneracji napęcia, zyskujemy więc jeden pin:
https://obrazki.elektroda.pl/3898553100_1694333071.png

- linia /EXTSEL także może być dekodowana zamiast przez CPLD, to za pomocą iody i rezysora - zyskujemy kolejny pin (wtedy ukłąd CPLD musi generować odwrócony sygnał CAS, oznaczony na schemacie jako +CAS):
https://obrazki.elektroda.pl/3195899500_1694333116.png

Długo zastanawiałem się, skąd wytrzasnąć ostatni pin, aż w końcu wpadłem na genialny pomysł:
Wykorzystałem fakt, że CPLD może jeden pin traktować jako `in`, `out` lub `inout` i linię OSC i /RESET połączyłem w jedną:
- układ CPLD gdy wcześniej wystawiał na lini OSC sygnał 0/1, teraz wystawia sygnał 0/H, a zewnętrzny pull-up 1k podciąga tą linię w górę (bramka 7404 regeneruje sygnał, zwiększająć jego wydajność prądową)
- w sytuacji gdy nRESET ma stan wysoki, nie wplywa on na funkcję tej linii; gdy nRESET ma stan niski, za pomocą D4 ściąga on tą linię w dół
- układ CPLD próbkuje tą linię w sytuacji, gdy wystawia na niej H (wysoka impedancja). Jeśli na linii odczytał 1 to znaczy, że nRESET jest 1, a jeśli odczytał 0 to znaczy, że nRESET jest 0.

W ten sposób układ może odzyskać z tej linii sygnał RESEET.

Jedyna niedogodność (i niezgodność) z oryginalnym Freddym jest więc taka, że w sytuacji gdy nRESET=0, linia OSC nie będzie generować sygnału zegarowego, ale to chyba nie bedzie mieć znaczenia (w Atari 65XE linia nRESET ma stan niski jedynie w chwili gdy komputer włącza się po podaniu zasilania; wciskanie klawisza RESET na klawiaturze nie powoduje aktywacji tej linii)
https://obrazki.elektroda.pl/6074743200_1694333281.png

Jak zamówię płytki w fabryce, będę mógl wam podesłać układy do testów. Czy cena w okolicach 60zł jest akceptowalna?

Czy znacie jakiś komputer który wykorzystuje linie /LE i /OE z Freddyego, aby dało się przetestować poprawność tej realizacji?

38

Odp: [Atari 65XE, układ Freddy] Naprawa, proteza CPLD

akceptowalne

https://systemembedded.eu/ ... https://www.youtube.com/watch?v=GwS7Es1x6mw
""Ja bardzo przepraszam, ale podejrzenia panów są całkowicie bezpodstawne. Ja niczym nie handluję. Ta pani przyszła do mnie w tym Pancake-u i w nim wychodzi.""
ABBUC Member #319. Preferowana forma kontaktu: email