forum speccy.pl

ZX Spectrum => HARDWARE => Wątek zaczęty przez: KWF w 2018.10.12, 13:39:54

Tytuł: /IORQ i /IORQULA
Wiadomość wysłana przez: KWF w 2018.10.12, 13:39:54
Hej,

Mam pewien problem z /IORQULA (/IORQGE), poniewaz potrzebuje odtworzyc ten sygnal, jesli nie wystepuje na zlaczu krawedziowym.
Poprawcie mnie jesli sie myle:

- /IORQ jest wyjsciem z Z80
- /IORQULA jest wejsciem do ULA'i
- /IORQULA ma stan niski tylko wtedy kiedy /IORQ i A0 sa w stanie niskim
- /IORQULA w stanie niskim wlaczy odczyty z portu 0xFE przez ULA, o ile w tym samym czasie dostanie /RD w stanie niskim.

Czy zewnetrzne odtworzenie /IORQULA ze stanow /IORQ i A0 na bramce TTL bedzie rownowazne z tym co pojawia sie na /IORQULA?

Probuje zmajstrowac sobie zewnetrzna klawiature, bez udzialu sygnalu /IORQULA. Dlaczego? Aby wykorzystac ja takze w ZX81 i Jupiterze, a nie tylko w ZX Spectrum.
Tytuł: Odp: /IORQ i /IORQULA
Wiadomość wysłana przez: trojacek w 2018.10.12, 14:01:11
ULA 48K ma tylko jeden pin - /IOREQ (pin 33). Logika z dodaniem A0 jest realizowana tranzystorem lub rezystor + dioda, ale i bez tego by działało - grunt, to móc "wyłączyć" adresowanie I/O w ULA właśnie tym pinem. Jeśli chce się być zgodnym w 100% z oryginałem - to A0 powinno być brane pod uwagę.
W Maxach 48/128 jest to niepotrzebnie przekombinowane, co kosztuje utratę 2 pinów CPLD.

Twoje rozumowanie jest prawidłowe, choć zapomniałeś, że do portu ULA można też zapisywać :) Ale rozumiem, że w przypadku klawiatury się to nie zdarza.
/IORQULA = /IORQGE = !/IORQ * !A0

Ale cokolwiek sobie zrealizujesz w interfejsie, musisz pamiętać, by wystawiać stan wysoki na złącze krawędziowe (styk A-13).

Jeszcze jedna uwaga. Szyna danych CPU jest oddzielona od szyny danych ULA rezystorami 470 om (to dobrze), ale w innych konstrukcjach może to być 74LS245 (to źle). Interfejs wpinany do złącza krawędziowego ma dostęp do szyny CPU, tak więc ma wyższy priorytet przy wymuszaniu stanów na liniach danych - więc teoretycznie można całkowicie olać, co ULA wtedy wystawia, bo zostanie to po drugiej stronie rezystorów. Jedna w przypadku klawiatury, gdzie sygnały idą przez jakieś rezystancje oraz diody, Twój interfejs może dawać napięcia (na liniach danych) zbyt blisko progów TTL i dodanie do tego stanu przeciwnego przez rezystor 470 om spowoduje, że interfejs nie działa jak powinien (oczywiście zablokowanie adresacji I/O ULA rozwiązuje problem, bo mamy stan wysokiej impedancji po stronie ULA). Jeśli zamiast rezystorów jest bufor na TTL - to w ogóle umarł w butach :) Ale nie wiem, czy i jakie mszyny mają LS245 zamiast rezystorów - na pewno timexy mają to przewidziane na PCB.
Tytuł: Odp: /IORQ i /IORQULA
Wiadomość wysłana przez: KWF w 2018.10.12, 14:49:57
Dzięki.

A co do Timexow to wiem, w nich są bufory na LS244 i LS245. Do takich konstrukcji należą tez rosyjskie klony, ale one są poza kręgiem moich zainteresowań.

A13 w stanie wysokim jest do załatwienia.
Tytuł: Odp: /IORQ i /IORQULA
Wiadomość wysłana przez: trojacek w 2018.10.12, 14:54:45
LS244 jest do joysticka, przynajmniej w TC2048. Wszystkie 2048, które mam, mają również rezystory zamiast 245 (choć druk przewiduje instalację 245).
Tytuł: Odp: /IORQ i /IORQULA
Wiadomość wysłana przez: KWF w 2018.10.12, 15:37:02
Ale czekaj. Czy wystawienie A13 w stan wysokim na zlaczu nie spowoduje bledow w odczycie z klawiatury? Nie bedzie konfliktu z tym co chce CPU (skanowanie klawiatury po 8 bitach portu 0xFE, zmieniajac stan na niski na liniach A8 do A15)?

Kiedy czasowo ma pojawic sie to A13=1?
Tytuł: Odp: /IORQ i /IORQULA
Wiadomość wysłana przez: trojacek w 2018.10.12, 18:27:06
EDIT: Nie czytać, bo bzdury napisałem :)

Hmm, nie rozumiem. Co ma wystawiać wysoki stan na A13, jeśli nie CPU?
ULA nie wymusza stanów na liniach adresowych, a tylko je "konsumuje".
Tytuł: Odp: /IORQ i /IORQULA
Wiadomość wysłana przez: KWF w 2018.10.12, 18:32:56

Ale cokolwiek sobie zrealizujesz w interfejsie, musisz pamiętać, by wystawiać stan wysoki na złącze krawędziowe (A13).

Chyba czegoś nie zrozumiałem.
Tytuł: Odp: /IORQ i /IORQULA
Wiadomość wysłana przez: trojacek w 2018.10.12, 18:43:09
OK, dwuznaczność taka :)

Ale cokolwiek sobie zrealizujesz w interfejsie, musisz pamiętać, by wystawiać stan wysoki na złącze krawędziowe (A13).

Nie chodziło mi o linię adresową A13 (o czym w międzyczasie zapomniałem).
Chodzi o edge connector, strona A (bottom) styk nr 13 = /IORQGE.
W sensie, że jak nawet sobie zsyntetyzujesz w interfejsie /IORQULA = !A0 & !/IORQ, to jest to sygnał lokalny, niepowiązany z ULA. Czyli musisz go zanegować i puścić na złącze krawędziowe, pozycja A (bottom) nr 13, by powiedzieć ULI "nic nie rób, tera ja!".
Tytuł: Odp: /IORQ i /IORQULA
Wiadomość wysłana przez: KWF w 2018.10.12, 19:25:22
No to teraz qmam :)

Ot takie coś sobie wymyśliłem.
Tytuł: Odp: /IORQ i /IORQULA
Wiadomość wysłana przez: trojacek w 2018.10.12, 19:28:32
Śliczne!
Tylko pamiętaj, by /IORQGE ciągnąć do jedynki tranzystorem, albo co najmniej przez diodę.
Tytuł: Odp: /IORQ i /IORQULA
Wiadomość wysłana przez: KWF w 2018.10.12, 19:31:41
Na logikę klejącą przyjdzie czas ;) Albo zamiast 74LS02 dam 74LS33.
Tytuł: Odp: /IORQ i /IORQULA
Wiadomość wysłana przez: trojacek w 2018.10.12, 19:45:31
LS33 to raczej niewiele pomoże. Jeszcze open collector dałby radę, by przyjąć na swoim wyjściu prąd zwarcia do +5V, gdy na wyjściu bramki jest stan niski.
Najprościej dać diodę, tak jak np. w TI-of-TTL.
Tytuł: Odp: /IORQ i /IORQULA
Wiadomość wysłana przez: KWF w 2018.10.12, 19:57:24
LS33 jest właśnie typu open-collector :)

Tytuł: Odp: /IORQ i /IORQULA
Wiadomość wysłana przez: trojacek w 2018.10.12, 21:32:21
Aaaa, fakt :)