1

Takie pytanie: gdzie znajdę timingi (rzeczywiste) sygnałów CS, Fi2, R/W, adresu i danych dla Pokey? Od razu mowie że timmingi z dataseetu sie nie nadają bo tam są najmniejsze akceptowalne, a mnie interesują *rzeczywiste* w Atari. Kluczowe jest tutaj CS->reszta bo tego nie da się oszacować sensownie nawet mając schemat i propagacje układów to zbyt upierdliwe i niedokładne.

A może ktoś ma zrzut na oscyloskopie bądź pamięta co i jak lata po szynie 6502 w korelacji z CS Pokey?

Naistotniejsze co musze wiedzieć ile czasu upłynie od asercji na CS Pokey do narastającego lub opadajacego na Fi2. Chwilowo mój oscyloskop nie ma ochoty na zabawę :/ a chciałbym coś oszacować.

2

jak fi2 idzie w gore, to masz miec stabilna sytuacje na szynie i tyle
czy cs pojawilo sie 10ns temu czy 70 to juz nie ma znaczenia

przechodze na tumiwisizm

3

Candle napisał/a:

jak fi2 idzie w gore, to masz miec stabilna sytuacje na szynie i tyle
czy cs pojawilo sie 10ns temu czy 70 to juz nie ma znaczenia

Wiadomo, jednak niestety czas pomiędzy CS a ficzyną akcją na liniach data jest dla mnie kluczowy ponieważ chciałbym ocenić czy mozliwe jest wystarczająco szybkie wystawienie danych uzyając CPU a nie CPLD/FPGA. Ponieważ mam bardzo malo czasu na wystawienie danych muszę wiedzieć ile on zajmuje z dokładnością do cyklu maszynowego *mojego* cpu. Mam około 30ns na instrukcję w najlepszej sytuacji. Po pojawieniu się CS musze sekwencyjnie: przyjąć przerwanie, zorientować się czy read czy write, odczytać adres, zmienić kierunek lini data dla odczytu, wystawić pobrać daną. Szacuje czy to w ogóle wykonalne. Niestety bez czasu CS w stosunku do FI2 mogę tylko z grubsza.

4

Dane muszą byc wystawione na 50ns przed opadajacym zboczem FI2. Nie licz na więcej niz 10 cykli. I pamiętaj, że na CS możesz mieć glitch w fazie ustalania adresu, więc przerwanie wywołane samym opadającym zboczem CS moze byc fałszywe.

Ceterum censeo Germaniam esse delendam.

5

Simius napisał/a:

Dane muszą byc wystawione na 50ns przed opadajacym zboczem FI2. Nie licz na więcej niz 10 cykli. I pamiętaj, że na CS możesz mieć glitch w fazie ustalania adresu, więc przerwanie wywołane samym opadającym zboczem CS moze byc fałszywe.

Chyba jednak musze podpiąc oscyloskop żeby to oszacować.

Ale zmartwiłeś mnie: na CS mam glitcha. A wiadomo choć jak wielkiego? W sensie szerokości stanu niestabilnego? Rozumiem że pochodzi od z faktu że adres -> cs robiony jest przez zwykłą logikę kombinacyjną i nie ma tam zatrzasku?

6

heby napisał/a:

Chyba jednak musze podpiąc oscyloskop żeby to oszacować.

Chcesz to oszacowac na podstawie jednego komputera i zrobic coś, co bedzie pracować tylko w tym jednym? Czy to coś ma jednak w zamierzeniu działać na każdym? W takim razie ile masz tych komputerów do oszacowania?

Ale zmartwiłeś mnie: na CS mam glitcha. A wiadomo choć jak wielkiego? W sensie szerokości stanu niestabilnego? Rozumiem że pochodzi od z faktu że adres -> cs robiony jest przez zwykłą logikę kombinacyjną i nie ma tam zatrzasku?

Właśnie. Typowo 10-20ns.

Ceterum censeo Germaniam esse delendam.

7

Simius napisał/a:

Chcesz to oszacowac na podstawie jednego komputera i zrobic coś, co bedzie pracować tylko w tym jednym?

Szacowanie jest niezbedne aby móc przejśc do etapu projektowania. Szacowanie jest mi potrzebne aby w worst-case mieć pojęcie ile mam czasu na reakcję. Wątpie żeby te 50ns było spotykane na busie, ale nie wykluczam.

PS. Nie dam wiary że pomiedzy różnymi modelami czas ten jest jakoś absurdalnie różny. I *nikt* kto projektuje hardware nie może dać gwarancji że zadziala na wszystkim. I nie o to chodzi. Chcę na pierwszy ogień mieć szacunek czy układ sekwencyjny taki jak CPU jest w stanie się wyrobić i w jakim czasie. IMHO nie da rady niczym popularnym, a propeller jest dośc drogi choć pewnie nadawał by się znakomicie. Więc zadaniem moim na początek jest wyeliminować na czym się nie da. Zapewne skończy się na cpld + cpu lub jakiejś innej hybrydzie bo małe fpga ciągle drogie...

8

marudzisz, nosty zrobil na dspic'u (projekt tomek)

przechodze na tumiwisizm

9

Candle napisał/a:

marudzisz, nosty zrobil na dspic'u (projekt tomek)

Masz na myśli TOMEK-8 ? Jesli tak, to zacytuję autora:
"Zrezygnowalem z dekodowania adresow. Bo wymyslilem jak zrobic to wszystko co pokazalem w demie i co opisal XXL, bez podlaczania do koprocesora szyny adresowej".

Ja nie mam takiego komfortu, musze dekodować adresy i wybierac prawidłowe adresy w RAMie CPU. Mam wątpliwośc że cokolwiek poza propellerem się wyrobi. Za kilka dni oscyloskop wróci do życia to się zapewne dowiem ...

10

Co to znaczy "absurdalnie duży"? Jeśli na podstawie jednego komputera w stanie fabrycznym zrobisz swoje szacunki, zostawiając margines jednego 30-nanosekundowego cyklu, to prawdopodobieństwo, że wsród dziesięciu innych znajdziejsz przynajmniej jeden, w którym się posypie, jest bliskie jedności. Jeśli chcesz wycisnąć maksimum czasu, to najlepiej w ogóle zapomnij o wykorzystaniu CS POKEY-a. Najlepiej sam, używając najszyszych serii CMOS, zdekoduj adres. Najlepiej od razu z bramkowaniem odcinającym stany nieustalone. Mozna to zrobić w czasie poniżej 10ns. Na samym tym dekodowaniu zyskasz jeden cykl. Jeśli wystarczy ci 80-90% prawdopodobieństwa działania z różnymi komputerami, to wliczając ten jeden cykl, masz do wykorzystania 16 cykli, czyli 480ns. To absolutne maksimum.

Ceterum censeo Germaniam esse delendam.

11

lepiej ustawic irq na rosnace zbocze iloczynu sygnalu not pokey_cs i phi2, bedziesz mial pare cykli na wczytanie adresu i danej z io
przy 16/32 bitowym mcu to bedzie jedna instrukcja

ale ale

to juz plyty glownej nie robisz?

przechodze na tumiwisizm

12

Simius napisał/a:

Co to znaczy "absurdalnie duży"?

Zapewne coś zupełnie innego niz "absurdalnie różny".

Simius napisał/a:

Jeśli na podstawie jednego komputera

No ale ja nie mam więcej :) Przecież właśnie dlatego tu jestem i pytam. Jak bym miał kilka to bym sobie pomierzył i miał statystykę.

Simius napisał/a:

Najlepiej sam, używając najszyszych serii CMOS, zdekoduj adres

To kłopotliwe bo im mniejszy zakres adresów tym lini do dekodera wchodzi więcej, wiec zaczyna się jazda ze znalezieniem więszości z Ax na płycie... Innymi słowy gdybym miał już dekodować to wsadziłbym CPLD zamiast bramek co załatwiło by wiele innych rzeczy. Wlasnie to jest jedno z rozwiązań hybrydowych.

Simius napisał/a:

Jeśli wystarczy ci 80-90% prawdopodobieństwa działania z różnymi komputerami

Naprawdę jest aż tak ogromny rozrzut CS względem Fi2? ja rozumiem że różne technologie, mmu, freddie, bramki, ale naprawdę są to absurdalne różnice że CS lata po całym półcyklu Fi2? Jesli jest aż tak źle to marnie widzę szanse.

13

Candle napisał/a:

lepiej ustawic irq na rosnace zbocze iloczynu sygnalu not pokey_cs i phi2, bedziesz mial pare cykli na wczytanie adresu i danej z io
przy 16/32 bitowym mcu to bedzie jedna instrukcja

Problem że te pare cykli to ciasno. Odczyt 6502 wymaga u mnie kilku instrukcji (wyłaczenie przerwań, odlożenie rejestru na stos, pobranie A, adresacja w pamięci wewnatrznej, pobranie z pamięci, zmiana kierunku portu itd, samo przyjęcie przerwania to będzie z 4 cykle). Ponadto procesory 16/32 zazwyczaj są niewiele szybsze. Na ten przykład SAM7S ma znacznie wolniejsze GPIO niz avr co jest o tyle zabawne że pochodzą od tego samego producenta a zegar SAM7 jest 5x większy niż AVR ale dla małych dupereli na drutach jest jakby mniej wydajny (rownież z powodu organizacji flash). Innymi słowy nie ma prostej zależności 16/32 bity -> szybciej. Się zobaczy, się pomyśli.

Candle napisał/a:

to juz plyty glownej nie robisz?

A niby dlaczego tak sądzisz? Obecnie składam system uC na 6510 wyszarpanym z C64 dla rozgrzewki lutownicy, a obecny temat ma trochę z tym (pcb) wspólnego. W gąbce obok siedzi AY z Z80 i też czeka na swoja kolej :)

14

erotoman gawędziarz, a nie konstruktor

to ja sobie posłucham swinsida

przechodze na tumiwisizm

15 Ostatnio edytowany przez Simius (2013-10-14 22:49:06)

heby napisał/a:

To kłopotliwe bo im mniejszy zakres adresów tym lini do dekodera wchodzi więcej, wiec zaczyna się jazda ze znalezieniem więszości z Ax na płycie...

Dokładnie połowy.

Naprawdę jest aż tak ogromny rozrzut CS względem Fi2? ja rozumiem że różne technologie, mmu, freddie, bramki, ale naprawdę są to absurdalne różnice że CS lata po całym półcyklu Fi2? Jesli jest aż tak źle to marnie widzę szanse.

To nie sa absurdalne różnice, ponieważ mówimy o komputerach, w ktorych układy specjalizowane wytwarzały różne firmy, w różnym czasie, a więc korzystając z różnych technologii (czego najbardziej spektakularnym przykładem są wadliwe GTIA), a same komputery wyposażone są nierzadko w wiele rozszerzeń obciążających magistrale, co znakomicie opóźnia propagację sygnałów. A mimo to wciąż mieszczą się w normie, ponieważ, że przypomnę, adres i R/W mają prawo ustalić się po 140ns od rozpoczęcia, czyli po 1/4 cyklu. A przecież dalej są jeszcze MMU i dekoder LS138 z własnymi opóźnieniami.
Zapis od odczytu możesz sobie odróżniać sprzętowo, używając dwóch osobnych przerwań. To Ci trochę czasu oszczędzi. Zarezerwowanie paru rejestrów tylko do obsługi przerwań i ograniczenie się do instrukcji nie dotykających rejestru stanu pozwoli nie odkładać niczego na stos. Trza se radzić.

Ceterum censeo Germaniam esse delendam.