Cześć,
CS/A65 widziałem i to jest dobry powód, dla którego można było wybrać IMC68000 - co do 6809 z dokumentacji widać, że powinno działać a skoro na ASLAK3 blogu takie rozwiązanie zastosowano to OK. Warte wypróbowania.
Choć gdy czytałem doc PCF8584 i ten fragment odnośnie detekcji trybu pracy:
"If a HIGH-to-LOW transition of WR (R/W) is detected while CS is HIGH, the 68000-type interface mode is selected and the DTACK output is enabled. Care must be taken that WR and CS are stable after reset.
Czyli - w trakcie inicjalizacji PCF8584 trzeba wykonać zapis do układu i mieć nadzieję, że R/W zmieni stan wcześniej niż /CS - a skoro robi to procesor to wielkiego wpływu na to nie ma :/
CS tworzymy z A0-A15, a R/W wystawia procesor - z dokumentacji 6502 wynika, że adres setup time i r/w setup time mogą wynosić max 140ns dla 2MHz i nie jest napisane nic o minimum czasów ustalania sygnałów co może oznaczać, że jest możliwa sytuacja gdy zmiana R/W nastąpi dopiero gdy CS będzie już w stanie LOW. Mi wydaje się, że tryb 80xx jest trochę pewniejszy bo mamy kompletną kontrolę nad /RD i WR, których czasy są równe czasowi trwania poziomu wysokiego Phi2.
I jeszcze jedno co raczej nie jest zagrożeniem:
"A minimum of 6 clock cycles must elapse between consecutive parallel-bus accesses when the I2C-bus controller
operates at 8 or 12 MHz. This may be reduced to 3 clock cycles for lower operating frequencies."
...i nie powinna się taka sytuacja zdarzyć.
pancio.net napisał/a:W obu przypadkach wykorzystanoi IMC 6800(0), przy czym w pierwszym przypadku PCF współpracuje z 6809 (zegar jest wspólny dla procesora i PCF) a w drugim PCF współpracuje z 6502 bezpośrednio (o2 jest w prawdzie opóźnione przez 2 bramki NAND + AND ale założyłem, że książkowo powinno działać). Oczywiście nie mam wiedzy na tyle szerokiej jak te przebiegi czasowe występują w rzeczywistej atarynce. Jeśli gdzieś jest dostępne kompendium wiedzy na ten temat - chętnie się zapoznam. Swoją drogą, tryb IMC 80XX wymaga dodatkowych bramek. Stąd decyzja by najpierw zrobić to dla trybu 6800.
W rzeczywistej Atarynce to wynika wprost z czasów 6502 i tam jest w zasadzie jeden problem - aby reszta otoczenia gwarantowała ważne dane na szynach na tylnym zboczu Phi2. 6502 jakoś się do tego zastosuje. Jeśli będą jakieś kłopoty to tylko wtedy gdy czasy trzymania adresów i danych na szynach się rozjadą. Dlatego napisałem, że niepokoi mnie synchronizacja sterowania rejestrem PCF z Phi2 bo adres może "uciec" z chwilą gdy Phi2 zmieni się na 0. No i wykrywanie trybu też ma swoje wymagania: Zmiana R/W przed CS.
pancio.net napisał/a:Co do niestabilnych czasów - masz tu na myśli o2 czy jeszcze coś? Bo jeśli chodzi o o2 to mogę zastosować pętlę PLL (układy i płytka od Simius-a w drodze).
Wyżej napisałem, że w dokumentacji są opisane minimalne wymagania co do czasów sygnałów i te czasy mogą się chwiać w pewnych granicach co może spowodować jakieś kłopoty we współpracy z PCF choć nie musi. Przyglądałem się dokumentacji i wywnioskowałem jedynie to, że trzeba spróbować praktycznie czy zadziała
pancio.net napisał/a:Co do ostatniego pytania... zasadniczo chciałbym zaterminować interface w środku na stałe. Pomysł z $D5XX wynika tylko z faktu uproszczenia w celu uruchomienia. Swoją drogą na tym etapie mógłbym wywalić LS138?
Wywal dekoder adresów i zajmij sobie do testów całą stronę D5xx. Potem dorobisz dekoder.
pancio.net napisał/a:Niestety moja wiedza w temacie jest już jakby... troszkę zapomniana - brak codziennej wprawy, co widać choćby po schemacie. Więc może być trudniej niż się spodziewam. Mam nadzieje, że w miarę możliwości - pomożesz :-)
Nic mnie nie goni...
E tam. Nie będzie trudno. Sprzętowo praktycznie masz załatwione - tylko sprawdzić czy jest komunikacja w dwie strony. Oprogramowanie to trochę poważniejsza sprawa :)
Pozdrawiam