1 Ostatnio edytowany przez pancio.net (2018-08-18 17:21:08)

Witam,

W związku z faktem, że wciąż borykam się z problemami natury "jak to podpiąć", bo w Atari mało miejsca albo czy lepsze jest rozwiązanie typu cpu-piggy... postanowiłem zaprojektować sobie układ typu breadboard do przyszłych zastosowań wpinany bezpośrednio do slotów CART/ECI. I jakby wielkiej filozofii w tym nie ma, dotychczas właśnie w ten sposób podpinałem swoje prototypy ale zastanawiam się nad rozwiązaniem z buforowaną magistralą i wszystkimi potrzebnymi sygnałami.

Chciałbym zatem rozpocząć dyskusję na temat co i jak jest potrzebne/wymagane by taki interface był użyteczny.

Na wstępie powiem jakie poczyniłem założenia:

- buforowana magistrala danych (74HCT245)
- buforowana magistrala adresowa (2x74HCT541)
- buforowane sygnały R/W i PHI2
- niepełny dekoder adresów na 74HCT138 (do wyboru strona D1XX lub D5XX w obszarach co 16 bajtów)
- układ wytwarzający sygnały /RD i /WR

Tyle tytułem wstępu.

Aby uniknąć kardynalnych błędów projektowych chciałbym teraz zadać kilka pytań kolegom, którzy niejedno już zaprojektowali i znają Atarynkę od strony zależności czasowych:

- czy przesunięcie w czasie sygnałów R/W i PHI2 poprzez puszczenie ich przez 2 inwertery może mieć negatywny wpływ na działanie magistrali danych? (opóźnienie 10ns na bramkę w HCT02 i 14ns w buforze HCT245/541)
- czy kierunek przepływu danych wywołany sygnałem z bramki IC2C będzie prawidłowy? (dane powinny przepływać wtedy z części B do części A).
- czy magistrala adresowa może być stale aktywna (zakładam, że ANTIC nie będzie miał dostępu do tego co będzie za buforowaną magistralą)? Jeśli nie to czym powinienem ją wysterować (PHI2?)

Załączam schemat, póki co samych buforów...

Buffered Bus

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

2 Ostatnio edytowany przez tOri (2018-08-18 18:38:52)

Cześć,

Ja mam zrobiony w 60% projekt 1090XE tylko czasu brak na skończenie oraz prototyp ;)

Zastosuj układy serii 74ACT...

Do buforowania kilku sygnałów (nie tylko adresów) zastosuj np. 74ACT541 i na tym zbuforuj zegar, D1XX, D5XX,/HALT itd.
Na CART+ECI masz już zbuforowany R/W, a jeśli chodzi o DIR 245 - po prostu obróć scalak, aby pasowało i dla R/W=1 ma zasuwać z A->B, więc do CART+ECI podłącz stronę B bufora i to wystarczy.
Dekoder adresów i RD/WR to już indywidualna sprawa. Ja raczej wychodzę z założenia, że zarówno dekodowanie adresów jak i logika sterująca powinny być w docelowym układzie ale to kwestia indywidualna.
Adresy puszczaj zawsze (G1,G2 ->GND) ponieważ adresy ANTICA pojawiają się gdy masz /REF=0 i zawsze to możesz "złapać" chyba, że masz jakiś zamysł by otoczenie nie widziało adresów z cyklu odświeżania...
Tworzenie RD/WR z tak zbuforowanych sygnałów może narobić problemów. Jeżeli użyjesz ACT - zrób ten układ bezpośrednio z sygnałów CART+ECI bo czasy propagacji będą zbyt duże :/

Pozdrawiam

Różne różności dla Atari i nie tylko - przydatne, bądź nie ale i tak warto zajrzeć...
http://atari.myftp.org  Atari - Power without price and necessary elements with some sh*t onboard
https://reversing.pl SSL enabled site

3

Na niektórych zawsze można liczyć :-) Dzięki!

ACT - jak najbardziej, nie widziałem w Eagle więc  zastosowałem HCT.

Rozumiem, że nie ma potrzeby buforowania R/W - nie zdawałem sobie sprawy bo opierałem się na schemacie A800XL. Dekoder i generator /RD, /RW jest jakby wycieczką w przyszłość (I2C i takie tam) więc postanowiłem to przygotować. Co do reszty sygnałów to słusznie... bufor "wyrówna" czasy tak by wszystkie były jednakowo przesunięte - da się zrobić.

Pytanie co do łapania /REF - jeśli nie obsłużę tego sygnału to znaczy, że np. jeśli podepnę RAM za buforami to ANTIC nie będzie miał do niego dostępu? Nie żeby mi zależało, ale chciałbym by układ był jak najbardziej uniwersalny :-)

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

4

O ile się orientuję - każdy A8 na złączu ma buforowany R/W
RD/RW i reszta - ja bym się nie bał eksperymentować. W zasadzie taki bufor jest raczej niezbędny gdy się "wiesza" więcej niż jedno urządzenie na TTL LS albo dwa-trzy na CMOS HCT a eksperymenty zasuwaj na gołej Atarynce :D

/REF wskazuje na cykl odświeżania - MMU blokuje cały obszar adresowy na zlecenie ANTICa, a /HALT oznacza dostęp ANTICa do pamięci. Jeżeli podepniesz RAM za buforem - tak czy siak musiałbyś mieć dodatkową logikę sterującą, bo będzie to rozszerzenie a nie pamięć podstawowa. Jeśli popatrzysz na rozszerzenie pamięci 1MB Pasia - zobaczysz jakie sygnały są wrzucone na GALa.

Jeśli jednak zbuforujesz złącza CART+ECI 1:1 - każdy sygnał w odpowiednim kierunku - powinno być 100% OK.

Pozdrawiam

Różne różności dla Atari i nie tylko - przydatne, bądź nie ale i tak warto zajrzeć...
http://atari.myftp.org  Atari - Power without price and necessary elements with some sh*t onboard
https://reversing.pl SSL enabled site

5 Ostatnio edytowany przez pancio.net (2018-08-19 14:53:03)

Co do R/W mam wątpliwości... przeanalizowałem schemat 800XL i 130XE i nigdzie nie znalazłem choćby śladu bufora dla tego sygnału. Nie wiem jaka jest obciążalność wyjścia R/W procesora ale ilość wiszących na nim układów jest spora. Zasadniczo jakiekolwiek eksperymenty wymagały powieszenia na tym sygnale kolejnych - jak wspomniałeś - minimum 3 wejść i "jakoś" to działało ale postanowiłem również go zbuforować a jeśli starczy mi miejsca to spróbuję dodać możliwość użycia R/W bezpośrednio jak również po buforze. To samo tyczy się sygnały PHI2.

wątpliwości miałem natomiast co do sygnałów:
/EXTSEL - ze schematu 130XE Jerzego Soboli wynika, że to jest wejście podpięte do nóżki 3 FREDDIE-go
/MPD - podobnie z tego samego schematu wynika, że sygnał ten połączony jest z nóżką 14 układu małego MMU i również jest to wejście.

reszta wejść:
/IRQ
RD4
RD5

raczej nie budzi moich wątpliwości.

Z punktu widzenia powyższych wejść zastanawiam się nad wymuszeniem ich stanów poprzez podciągnięcie lub ściągnięcie  buforów do VCC/GND przez rezystory by uniknąć "wiszących" nóżek. Wejścia te (od strony CART/ECI)będą podłączone do części B driver-a 74ACT541.

Reszta wyprowadzeń włączając A0-A15 będących wyjściami ze strony CART/ECI będzie zbuforowana i podłączona do części A 74ACT541.

Linie danych, wymagające dwukierunkowego driver-a zgodnie z wcześniejszymi założeniami i uwagami będą podłączone do części B 74HCT245 i sterowane bezpośrednio z R/W od strony CART/ECI.

Zastanawiam się również nad wykorzystaniem wejścia AUDIO.. może jakiś PWM tam się kiedyś podepnie?

Edit 1.

A jednak mam wątpliwości co do sygnału /IRQ. Nie wiem czy mogę "wymusić" stan wysoki na buforze bo przecież zablokuję możliwość zgłaszania przerwań przez inne układy... tego sygnału chyba nie mogę buforować.

Buffered Bus

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

6

Cześć,

Na złączach zarówno PBI jak CART+ECI masz sygnał L R/W (latched R/W) a i nawet Phi2 jest zbuforowany. Gdy dołożysz na nie tylko jedno wejście bufora - nie obciążysz układu zbyt mocno zwłaszcza, że tam są układy serii LS (przynajmniej w 800XL)

Szyna danych w komputerze jest podciągnięta do Vcc więc dla porządku należałoby dać podciągnięcie na D0_BUFF - D7_BUFF. Się zastanawiam czy nie będzie problemu z wyjściami ACT245 w cyklu odczytu bo inne układy wymuszając LOW będą zwierać wyjście bufora do GND. Najlepszym wyjściem byłby opencollector i tyle. Całość jest troszkę bardziej skomplikowana ponieważ w takim układzie możesz czytać z buforowanej szyny tylko wtedy, gdy inne układy ją zwolniły, tzn. możesz taki bufor "otworzyć" tylko gdy możesz dokonać komunikacji "na zewnątrz" systemu. Słabo mi wychodzi opis tego...Mam nadzieję, że jakoś to zrozumiesz :) To tak jakby wystawić dla ACT245 enable gdy cała reszta scalaków jest nieaktywna - np. wybrany został obszar $D5XX i tylko wtedy otwierasz bufor, a nie dla każdego Phi2=0 bo zderzysz sygnały i jesli coś zadziała niesynchronicznie za buforami to na 100% przeniesie się na Atari i będzie zwiecha?

Co do /IRQ - raczej nie zablokujesz, bo stan niski praktycznie zawsze ściągnie linie do GND ale dobrą praktyką i nie powielaniem błędu związanym z uziemieniem wyjścia bufora w stanie HIGH jest używanie wyjść Opencollector, i wyjścia /IRQ są tak zrobione - opencollector, opendrain, itp... dlatego stan wysoki na wejściu bufora nie spowodowałby blokowania linii.

Zamiast 74ACT245 użyj 74ALS641 - te mają wyjścia OC i powinny działać bez problemu z tym, że wtedy po stronie buforowanej musisz obowiązkowo dać podciąganie do VCC.

późno już

na razie

Różne różności dla Atari i nie tylko - przydatne, bądź nie ale i tak warto zajrzeć...
http://atari.myftp.org  Atari - Power without price and necessary elements with some sh*t onboard
https://reversing.pl SSL enabled site

7

Hej,

Czekaj... bo coś jakby nie do końca czuję... a czy nie jest tak, że przy R/W=1 i przepływie z B->A peryferia zza bufora wystawiają dane na magistrali? Ja tu przewiduję tylko taką sytuację, w której peryferia zza bufora będą wystawiać dane tylko i wyłącznie gdy na magistrali adresowej pojawi się odpowiedni adres a peryferia poza swoją adresacją będą w stanie wysokiej impedancji podobnie jak bufor. No chyba żeby zapewnić sterowanie buforem iloczynem sygnałów z dekodera adresów i PHI2 by wyeliminować jego pracę poza zakresami D5XX i D1XX... To miałeś na myśli?
Czy koniecznym jest użycie buforów z OC dla linii danych? Nie chodzi tu o rezystory.. jakoś się je upcha ale czy OC nie wprowadza dodatkowego opóźnienia?

Zasadniczo w przypadku magistrali adresowej i pozostałych sygnałów sterujących mógłbym użyć 74ALS641 z podciągnięciem. BTW, jak nazywają się te elementy w Eagle, które w swojej strukturze zawierają więcej niż 1 rezystor?

pozdrawiam,

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

8

.... gdzieś widziałem wciapane tylko to:  https://ja.idt.com/document/dst/qs34x245-datasheet

9

Eagle: biblioteka resistor-net