Przelaczana magistrala
Masz problem? Zapytaj na forum elektroda.pl z bramką pl.misc.elektronika!
From: Piotr Laskowski <Piotr.Laskowski_at_nospam_f117.n480.z2.fidonet.org>
Date: Mon, 08 Feb 99 16:17:46 +0100
Subject: Przelaczana magistrala
Cześć Andrzej !
AR> Rok temu próbowałem (z kumplem) podłączyć '51 do graficznego
AR> wyświetlacza LCD. Niestety ten wyświetlacz nie miał wbudowanego
AR> kontrolera (same drivery linii i kolumn). Podłączenie zewnętrzne
AR> go kontrolera powodowało z kolei kłopoty z konfliktami na magi
AR> strali. I tu właśnie przydałby się jakiś sygnał /HALT w proceso
AR> rze tak by w sytuacji kiedy kontroler czyta dane z pamięci
AR> zabronić uC (uP?) korzystania z magistrali.
Sygnal zadania zewnetrznego dostepu do magistrali: BREQ i potwierdzenie
dostepu: BACK maja kontrolery hitachi serii H8S np h8s2655, h8s2345, h8s2350,
h8s2357 i byc moze jakies inne. Do tego po 16 pinow wyjsc z timerow (akurat jak
znalazl do sterowania wyswietlaczem), DMA i kilka innych bajerow umozliwiajacych
odciazenie CPU od wykonywania durnych czynnosci.
Kontrolery maja po 100-125 nozek i kosztuja ok, 1zl za nozke :-)
PDFy sa dostepne w sieci.
Piotrek.
From: Andrzej Radecki <radecki_at_nospam_posejdon.wpk.p.lodz.pl>
Subject: Re: Przelaczana magistrala
Date: Sat, 13 Feb 1999 21:48:25 GMT
Piotr Kołodziejczyk <"piotr_at_nospam_spam-off" > napisał(a):
Jeśli dobrze pamiętam to w 8-bitowych Atari był procesor 65SC02 (CMOS),
a to cudo można było zatrzymać
w każdym cyklu dostępu do pamięci. Ze schematu można wnioskować, że
procek ma wewnętrzne bufory i po otrzymaniu sygnału HALT ustawia
magistralę w stan wysokiej impedancji - szyny układu DMA (Antic) i
procka sa połączone bezpośrednio. Podobne rozwiązanie było w C-64. Tam
procesor (6510 lub 8502) miał sygnał AEC, odłączający go od magistrali
na czas dostępu do pamięci przez układ video albo zewn. DMA.
Hmm. 65C02 był w trochę nowszych ATARI, w moim _na pewno_ był
6502. Pewnie układ miał detekcję cyklu odczytu (sygnał R/W)
i tylko wtedy zatrzymywał procesor. Masz ten schemat na papierze
czy w jakimś pdf'ie? Jeśli możesz to prześlij mi go.
Dostęp do pamięci przez CRT i CPU w tych komputerach jest realizowany w
przeciwfazie - pamięć chodzi 2x szybciej niż procesor i CRT - cykle
nieparzyste dla CPU, a parzyste dla CRT (DMA). Jest to standardowe
rozwiązanie dla układów 65xx. Przy częstotliwościach taktowania CPU
rzędu 1 do 2 MHz działa poprawnie, zmniejsza jednak wydajność CPU o
jakieś 10 % (W C-64 i Atari można było wyłączyć odświeżanie obrazu i
cieszyć się pełną wydajnością procka :-).
To zmniejszanie wydajności CPU było raczej związane z wstrzymywa
niem pracy niż z dostępem w przeciwfazie. Dostęp w przeciwfazie
z założenia jest bezkolizyjny. Tylko po co były mieszane te 2
sposoby dostępu do magistrali?
Tak samo rozwiązany jest dostęp do pamięci video (CHIP Memory) w Amidze
- tam jednak poza CPU dostęp do niej ma 25 kanałów DMA (a czasem więcej
- zależnie od modelu).
Pozdrawiam
--
( /0/ Andrzej Radecki
==== \ mailto:radecki_at_nospam_posejdon.wpk.p.lodz.pl
/ |
From: Piotr =?iso-8859-2?Q?Ko=B3odziejczyk?= <"piotr_at_nospam_spam-off"
Subject: Re: Przelaczana magistrala
Date: Tue, 16 Feb 1999 14:23:46 +0100
Cze=B6=E6
Andrzej Radecki wrote:
Hmm. 65C02 by=B3 w troch=EA nowszych ATARI, w moim _na pewno_ by=B3=
6502. Pewnie uk=B3ad mia=B3 detekcj=EA cyklu odczytu (sygna=B3 R/=
W)
i tylko wtedy zatrzymywa=B3 procesor. Masz ten schemat na papierze
czy w jakim=B6 pdf'ie? Je=B6li mo=BFesz to prze=B6lij mi go.
Wed=B3ug moich danych w starszych modelach Atari by=B3 zwyk=B3y 6502 + 4
dodatkowe uk=B3ady logiczne,
w nowszych uk=B3ady te wci=B6ni=EAto do procka. Powsta=B3a wi=EAc wersja =
custom,
posiadaj=B1ca dodatkowo sygna=B3 HALT
(pin 35 - standardowo NC).
Co do schematu - niestety na papierze, na dodatek z b=B3=EAdami :-(
To zmniejszanie wydajno=B6ci CPU by=B3o raczej zwi=B1zane z wstrzymywa=AD=
niem pracy ni=BF z dost=EApem w przeciwfazie. Dost=EAp w przeciwfazie=
z za=B3o=BFenia jest bezkolizyjny.
A win98 umo=BFliwia z za=B3o=BFenia komfortow=B1 prac=EA...
Mo=BFe jakie=B6 problemy z synchronizacj=B1 obu uk=B3ad=F3w? Albo przepus=
towo=B6=E6
szyny zbyt ma=B3a i cz=EA=B6=E6 danych video by=B3a pobierana kosztem cza=
su
dost=EApu CPU (patrz: Amiga)?
Tylko po co by=B3y mieszane te 2 sposoby dost=EApu do magistrali?
Jakie dwie metody?
Je=BFeli do pami=EAci odwo=B3uj=B1 si=EA dwa urz=B1dzenia to na czas dost=
=EApu przez
jedno urz=B1dzenie trzeba blokowa=E6 (odci=B1=E6 od magistral) drugie. Ch=
yba, =BFe
stosuje si=EA dual ported RAM.
Pozdrawiam
Piotr
piotr_at_nospam_ultra.cto.us.edu.pl
From: jfox_at_nospam_friko6.onet.pl (J.F.)
Subject: Re: Przelaczana magistrala
Date: Sun, 14 Feb 1999 22:32:04 GMT
On Fri, 12 Feb 1999 11:36:40 +0100, Piotr Kołodziejczyk wrote:
Andrzej Radecki wrote:
(...)
Pewnie można by też zastosować DMA między pamięcią
a CRTC. Takie rozwiązanie było zastosowane m.in. w Atari 65XE
a przecież uP 6502 też nie miał możliwości zatrzymania (przynajm
niej w cyklu zapisu, ale trudno przewidzieć jaki będzie wykonywa
ny rozkaz gdzy przyjdzie request). [..]
Jeśli dobrze pamiętam to w 8-bitowych Atari był procesor 65SC02 (CMOS),
a to cudo można było zatrzymać w każdym cyklu dostępu do pamięci.
O ile pamietam to nie byl. Skorzystano zdaje sie z faktu, ze co prawda
procesor wystawial dane wczesnie, ale przez dluga czesc cyklu byly
one niewykorzystywane. Wiec na poczatku cyklu procesor odcinano od
magistrali, pobierano dane do wyswietlania, dopuszczano procesor do
glosu i mogl dokonczyc swoja robote.
Ze schematu można wnioskować, że
procek ma wewnętrzne bufory i po otrzymaniu sygnału HALT ustawia
magistralę w stan wysokiej impedancji
O ile pamietam jeszcze dane 8-bitowcow, to chyba zaden nie umozliwial
takiej operacji szybko. Tzn owszem - mozna im bylo sygnal HALT czy
BUSRQ podac, ale realizowaly go po skonczeniu biezacego rozkazu.
W przypadku Z80 bodajze 21 cykli moglo jeszcze uplynac.
Stad np w Amstradzie CPC za pomoca wait states "wyrownano" bieg
procesora - normalny rozkaz skladal sie od 1 do 5 faz z czasem 3 do 5
cykli na kazda, tu wydluzono fazy do 4 lub 8 cykli, i zastosowano
podobna sztuczke - przez pol fazy dostep mialo video, przez pol -
procesor.
J.
From: Maciej Gruszecki <mgr_at_nospam_kki.net.pl>
Subject: Re: Przelaczana magistrala
Date: Mon, 22 Feb 1999 15:54:27 +0100
J.F. wrote:
On Tue, 16 Feb 1999 14:23:48 +0100, Piotr Kołodziejczyk wrote:
J.F. wrote:
O ile pamietam jeszcze dane 8-bitowcow, to chyba zaden nie umozliwial
takiej operacji szybko. Tzn owszem - mozna im bylo sygnal HALT czy
BUSRQ podac, ale realizowaly go po skonczeniu biezacego rozkazu.
W przypadku Z80 bodajze 21 cykli moglo jeszcze uplynac.
Ale 6502 to porządny procek i rozkazy wykonuje w max. 7 cykli zegara, a
zwykle krócej :-)
Az 7 ? Wydawalo mi sie ze 3. Biorac pod uwage ze zegar 65xx byl
zwykle wolniejszy wychodzilo porownywalnie, ale i tak za dlugo -
dostep do pamieci video musial byc szybszy .
Poza tym w przypadku
Z-80 istniał pewien protokół przekazywania magistral (BUSRQ -> BUSACK),
natomiast w 6502 made by Atari sygnał HALT brutalnie przełącza CPU w
stan oczekiwania i odcina go od magistral. Rozwiązanie może mało
eleganckie, ale skuteczne.
I tak wymaga synchronizacji, bo wyobraz sobie ze odetniesz w srodku
cyklu zapisu albo odczytu.
J.
O ile ja dobrze pamietam, to w ZX Spectrum (Z-80) na czas dostepu
ukladu ULA do pamieci zatrzymywany byl zegar procesora. Nie sprawdzalem
tego, ale to chyba skuteczne, skoro dziala.
--
_/_/_/ _/_/_/ _/_/_/ _/_/ Maciej Gruszecki
_/ _/ _/_ _/ _/ _/ _/ ICQ: 5993706
_/_/_/ _/ _/_/_/ _/_/ WWW: http://www.kki.net.pl/mgr
_/ _/_/_/ _/ _/ _/ _/ e-mail: mailto:mgr_at_nospam_kki.net.pl
From: "Juliusz" <juliusz_at_nospam_wyscigi.multi-ip.com.pl>
Subject: Re: Przelaczana magistrala
Date: Wed, 24 Feb 1999 01:36:03 GMT
Andrzej Radecki napisał(a) w wiadomości: <7atlvs$e4$1_at_nospam_radek.localdomain>...
Juliusz <juliusz_at_nospam_wyscigi.multi-ip.com.pl> napisał(a):
Tak tylko szkoda, ze ten kolega co zaczal ta dyskusje nie powiedzial do
konca jaki to kontroler grafiki mial na mysli. Moz epowie wiecej ?
Bardzo chętnie. Muszę przyznać, że dyskusja na temat rozwiązań
stosowanych w 8bit. komputerkach bardzo mnie zaciekawiła.
Walnij mi na e-maila ten PDF to sobie zerkne. A wlasnie - czemu sie uparles
na dzielenie magistrali. Czy nie ma innej metody na pisanie do tego
wyswietlacza ? Nie znam go nic a nic, ale ile potrzeba danych przesylac do
niego na sekunde - ile chcesz wysysac z tego RAMu i walic do niego ?
Czy nie da sie myslisz poprzez SPI z procesora walic do EPLD i tam to
dekodowac "sprzetowo". W koncu kiedys SPI nie bylo. Albo zrobic (takie moje
wymysly teraz) z 2 kostek RAM, bankowac je i pisac raz do jednej, a raz do
innej i z tej wolnej zasysac do tego wyswietlacza ? Znowu EPLD sie klania -
wyglada to nie za bardzo zlozone. A i w FPGA mozna w to wsadzic w koncu
zasada ta sama co EPLD tylko budowa kostki inna:)
Ty no wlasciwie robisz tak: Bierzesz procesorek AVR AT90S8515. Ustawiasz mu
SPI jako master. Masz SCK i linie danych. Za tym dasz EPLD. Podlaczasz SCK i
DANE z niego DO EPLD. Dalej podlaczasz moze INT0 i INT1 i jakies dodatkowe
wolne linie do dalszego obmyslenia na wszelki wypadek. Z przeciwnej strony
wyswietlacz i wszystkie jego linie sterujace.
Wystarcza 32 makrocele. Robisz rejestr przesuwny w EPLD i zatrzask to da
jakies 16 makrocelek, moze wiecej, bo sygnaly sterujace, a reszta to
pojedyncze przezutniki. I robisz tak
jak wyswietlacz wola o dane to ty przez EPLD generujesz przerwanie prockowi,
procek wysyla bo bajcie, a w miedzy czasie robi cos innego. Liczysz do 8
cykli tym rejestrem przesuwnym w EPLD i przepisujesz to to holding
rejestru - zatrzasku tez w tym EPLD, dalej nastepny bajt leci sobie a
wyswietlacz sobie sam pobiera dane, albo ty mu je wymuszasz - nie wiem jak
tam jest. Masz generalnie jakies 6,5 bitu czasu zanim zaczniesz tracic dane.
Reszte zalatwi twoj program, ktory napiszesz a EPLD zadba o wszystkie
timingi. Jesli wyswietlacz wypuszcza wlasny zegar tez jakic (cholera wie) to
nie ma klopotu - jeszcze lepiej.
A SPI chodzi od 1/128 do 1/4 predkosci kwarcu.
Chyba to rozsadniejsze niz zatrzymywanie magistrali procesora, bo wlasciwie
zapis do SPI to blysk lampy fotograficznej. wpisujesz mu do rejestru, a on
sam to szeregowo wysyla i do tego masz prawie cale 8 bitow czasu na inne
wazne czynnosci.
To EPLD zalatwi ci:
1. latcha
2. shift register
3. kontrole ladowania tych powyzej
4. Licznik do 8-miu
5. zamiane tego na rozkazy wyswietlacza
6. i zapanuje nad timingami wszystkimi
Juliusz
From: Andrzej Radecki <radecki_at_nospam_posejdon.wpk.p.lodz.pl>
Subject: Re: Przelaczana magistrala
Date: Sat, 27 Feb 1999 12:42:17 GMT
Juliusz <juliusz_at_nospam_wyscigi.multi-ip.com.pl> napisał(a):
Walnij mi na e-maila ten PDF to sobie zerkne.
Niestety:
-r--r--r-- 1 root root 10540076 Sep 16 1997 lcd_db.pdf
~~~~~~~~
) chyba nie chciałbyś dostać takiego kloca, co? Poza tym to jest
z darmowego CD z Hitachi - całkiem dobry - polecam.
A wlasnie - czemu sie uparles
na dzielenie magistrali. Czy nie ma innej metody na pisanie do tego
wyswietlacza ? Nie znam go nic a nic, ale ile potrzeba danych przesylac do
niego na sekunde - ile chcesz wysysac z tego RAMu i walic do niego ?
Hmm.. wiesz zabiłeś mi ćwieka.. Zarzuciłem pomysł z bezpośrednim
sterowaniem modułu LCD bo wydawało mi się, że częstotliwości
sygnałów sterujących będą za wysokie. A tu dzisiaj patrzę do
katalogu i..
czas wyświetlania 1 linii - ok. 55ms
czas wyświetlania 1 piksela - ok. 170us
są to dane do modułu SP14Q001 - Hitachi 320x240 pikseli - mój co
prawda jest dwukrotnie większy ale nie przypuszczam aby te czasy
bardzo się różniły. (chwilowo nie mam opisu mojego modułu). Czyli
da się bezpośrednio :). Wadą jest oczywiście obciążenie procesora
ale odpada jeden duży scalak - kontroler. (dochodzi za to EPLD
;) ).
Nadal uważam, że dobrym pomysłem byłoby wstawienie specjalizowa
nego kontrolera. Wyeliminowałoby to konieczność ciągłego wy
syłania danych z uC do modułu. Jak już pisałem wcześniej istnieje
takie coś jak HD61830. Nie wymaga on w ogóle dzielenia pamięci
z procesorem. Komunikuje się z uC wyłącznie poprzez porty a nie
też przez pamięć. Jego wadą jest 2x1-bitowy interface do mudułu
LCD. Taki interface jest stosowany tylko w małych wyświetlaczach.
Gdyby ktoś znał taki scalak z interfacem 2x4-bitowym to proszę
o namiar. Ostatnio natknąłem się na kontroler Yamahy YGV610B (nb.
stosowany w evaluation board Hitachi ;)) ale nie znam jego
parametrów. I znowu jeśli ktoś ma jakiś pdfik na jego temat to
proszę na maila. Dzięki Juliuszu za ten pomysł z bezpośrednim
sterowaniem modułu (na najprostsze rozwiązania najtrudniej się
wpada). Do celów testowych nadaje się idealnie a jeśli się
sprawdzi to może zostanie na stałe (na zasadzie prowizorki żyją
najdłużej ;).
Pozdrawiam serdecznie
--
( /0/ Andrzej Radecki
==== \ mailto:radecki_at_nospam_posejdon.wpk.p.lodz.pl
/ |
From: "Juliusz" <juliusz_at_nospam_wyscigi.multi-ip.com.pl>
Subject: Re: Przelaczana magistrala
Date: Mon, 22 Feb 1999 19:05:52 GMT
Maciej Gruszecki napisał(a) w wiadomości: <36D16FA3.3DBB_at_nospam_kki.net.pl>...
J.F. wrote:
On Tue, 16 Feb 1999 14:23:48 +0100, Piotr Kołodziejczyk wrote:
J.F. wrote:
O ile pamietam jeszcze dane 8-bitowcow, to chyba zaden nie umozliwial
takiej operacji szybko. Tzn owszem - mozna im bylo sygnal HALT czy
BUSRQ podac, ale realizowaly go po skonczeniu biezacego rozkazu.
W przypadku Z80 bodajze 21 cykli moglo jeszcze uplynac.
Ale 6502 to porządny procek i rozkazy wykonuje w max. 7 cykli zegara, a
zwykle krócej :-)
Az 7 ? Wydawalo mi sie ze 3. Biorac pod uwage ze zegar 65xx byl
zwykle wolniejszy wychodzilo porownywalnie, ale i tak za dlugo -
dostep do pamieci video musial byc szybszy .
Poza tym w przypadku
Z-80 istniał pewien protokół przekazywania magistral (BUSRQ -> BUSACK),
natomiast w 6502 made by Atari sygnał HALT brutalnie przełącza CPU w
stan oczekiwania i odcina go od magistral. Rozwiązanie może mało
eleganckie, ale skuteczne.
I tak wymaga synchronizacji, bo wyobraz sobie ze odetniesz w srodku
cyklu zapisu albo odczytu.
J.
O ile ja dobrze pamietam, to w ZX Spectrum (Z-80) na czas dostepu
ukladu ULA do pamieci zatrzymywany byl zegar procesora. Nie sprawdzalem
tego, ale to chyba skuteczne, skoro dziala.
Tak tylko szkoda, ze ten kolega co zaczal ta dyskusje nie powiedzial do
konca jaki to kontroler grafiki mial na mysli. Moz epowie wiecej ?
Juliusz
From: Andrzej Radecki <radecki_at_nospam_posejdon.wpk.p.lodz.pl>
Subject: Re: Przelaczana magistrala
Date: Tue, 23 Feb 1999 21:44:57 GMT
Juliusz <juliusz_at_nospam_wyscigi.multi-ip.com.pl> napisał(a):
Tak tylko szkoda, ze ten kolega co zaczal ta dyskusje nie powiedzial do
konca jaki to kontroler grafiki mial na mysli. Moz epowie wiecej ?
Bardzo chętnie. Muszę przyznać, że dyskusja na temat rozwiązań
stosowanych w 8bit. komputerkach bardzo mnie zaciekawiła.
Jeśli chodzi o mój projekt to chcę zastosować kontroler (LCTC) f-
my Hitachi o symbolu HD63645/HD64645/HD64646. W zasadzie (w jed
nym z trybów) jest on zgodny programowo z HD6845 (CRTC). Nie jest
to jakiś krytyczny wybór - po prostu do tego scalaka mam
dokumentację. Jedynym warunkiem jest współpraca z modułem LCD
przez 2x4linie (chodzi mi o linie LD0-LD3, LU0-LU3). Jeśli ktoś
zna lepszy LCTC to niech poda chociaż symbol. Bardzo ciekawy jest
też LCDC (czym to się różni od LCTC?) HD61830. Komunikuje się on
z MPU/MCU wyłącznie poprzez porty. Tj. pamięć jest dołączona
tylko do LCDC. Niestety nie spełnia on powyższego warunku (ma
tylko 2 linie danych do sterowania modułem LCD). Ideałem dla mnie
byłby scalak, który łączyłby te 2 cechy. Jeśli nie to połączę
LCTC HD63645 poprzez dual-port ram - to chyba najlepsze wyjście.
Przełączanie magistrali wymagałoby zastosowania jakiegoś FPGA
a na tym się jeszcze nie znam.
Aha.. żeby nie było nieporozumień - sprawa nie jest pilna.
Projekt czeka na lepsze czasy już rok ;). Na razie chcę się zająć
AVRami tak by mieć do czego dołączyć ten moduł LCD. I jeszcze..
co sądzicie o MC68HC11? Słyszałem wiele dobrego o tym MCU. Czy
istnieje wersja z wewnętrznym flashem?
Pozdrawiam
--
( /0/ Andrzej Radecki
==== \ mailto:radecki_at_nospam_posejdon.wpk.p.lodz.pl
/ |
From: Piotr =?iso-8859-2?Q?Ko=B3odziejczyk?= <"piotr_at_nospam_spam-off"
Subject: Re: Przelaczana magistrala
Date: Tue, 16 Feb 1999 14:23:48 +0100
Witam
J.F. wrote:
Je=B6li dobrze pami=EAtam to w 8-bitowych Atari by=B3 procesor 65SC02 =
(CMOS),
a to cudo mo=BFna by=B3o zatrzyma=E6 w ka=BFdym cyklu dost=EApu do pam=
i=EAci.
=
O ile pamietam to nie byl. Skorzystano zdaje sie z faktu, ze co prawda
procesor wystawial dane wczesnie, ale przez dluga czesc cyklu byly
one niewykorzystywane. Wiec na poczatku cyklu procesor odcinano od
magistrali, pobierano dane do wyswietlania, dopuszczano procesor do
glosu i mogl dokonczyc swoja robote.
Z tego co czyta=B3em o Atari to jego procesor jest wersj=B1 custom, r=F3=BF=
ni=B1c=B1
si=EA nieco od pierwowzoru m.in posiadaniem sygna=B3u HALT. 65 XE, kt=F3r=
e
posiadam nie ma uk=B3adu o nazwie 6502 lub podobnej - s=B1 za to kostki
COxxxxx - robione na zlecenie Atari Corp.
O ile pamietam jeszcze dane 8-bitowcow, to chyba zaden nie umozliwial
takiej operacji szybko. Tzn owszem - mozna im bylo sygnal HALT czy
BUSRQ podac, ale realizowaly go po skonczeniu biezacego rozkazu.
W przypadku Z80 bodajze 21 cykli moglo jeszcze uplynac.
Ale 6502 to porz=B1dny procek i rozkazy wykonuje w max. 7 cykli zegara, a=
zwykle kr=F3cej :-) Poza tym w przypadku
Z-80 istnia=B3 pewien protok=F3=B3 przekazywania magistral (BUSRQ -> BUSA=
CK),
natomiast w 6502 made by Atari sygna=B3 HALT brutalnie prze=B3=B1cza CPU =
w
stan oczekiwania i odcina go od magistral. Rozwi=B1zanie mo=BFe ma=B3o
eleganckie, ale skuteczne.
Pozdrawiam
Piotr
piotr_at_nospam_ultra.cto.us.edu.pl
From: jfox_at_nospam_friko6.onet.pl (J.F.)
Subject: Re: Przelaczana magistrala
Date: Thu, 18 Feb 1999 20:16:13 GMT
On Tue, 16 Feb 1999 14:23:48 +0100, Piotr Kołodziejczyk wrote:
J.F. wrote:
O ile pamietam jeszcze dane 8-bitowcow, to chyba zaden nie umozliwial
takiej operacji szybko. Tzn owszem - mozna im bylo sygnal HALT czy
BUSRQ podac, ale realizowaly go po skonczeniu biezacego rozkazu.
W przypadku Z80 bodajze 21 cykli moglo jeszcze uplynac.
Ale 6502 to porządny procek i rozkazy wykonuje w max. 7 cykli zegara, a
zwykle krócej :-)
Az 7 ? Wydawalo mi sie ze 3. Biorac pod uwage ze zegar 65xx byl
zwykle wolniejszy wychodzilo porownywalnie, ale i tak za dlugo -
dostep do pamieci video musial byc szybszy .
Poza tym w przypadku
Z-80 istniał pewien protokół przekazywania magistral (BUSRQ -> BUSACK),
natomiast w 6502 made by Atari sygnał HALT brutalnie przełącza CPU w
stan oczekiwania i odcina go od magistral. Rozwiązanie może mało
eleganckie, ale skuteczne.
I tak wymaga synchronizacji, bo wyobraz sobie ze odetniesz w srodku
cyklu zapisu albo odczytu.
J.
From: Andrzej Radecki <radecki_at_nospam_posejdon.wpk.p.lodz.pl>
Subject: Re: Przelaczana magistrala
Date: Thu, 11 Feb 1999 22:26:18 GMT
Piotr Laskowski <Piotr.Laskowski_at_nospam_f117.n480.z2.fidonet.org> napisał(a):
Cześć Andrzej !
AR> Rok temu próbowałem (z kumplem) podłączyć '51 do graficznego
AR> wyświetlacza LCD. Niestety ten wyświetlacz nie miał wbudowanego
AR> kontrolera (same drivery linii i kolumn). Podłączenie zewnętrzne
AR> go kontrolera powodowało z kolei kłopoty z konfliktami na magi
AR> strali. I tu właśnie przydałby się jakiś sygnał /HALT w proceso
AR> rze tak by w sytuacji kiedy kontroler czyta dane z pamięci
AR> zabronić uC (uP?) korzystania z magistrali.
Sygnal zadania zewnetrznego dostepu do magistrali: BREQ i potwierdzenie
dostepu: BACK maja kontrolery hitachi serii H8S np h8s2655, h8s2345, h8s2350,
h8s2357 i byc moze jakies inne. Do tego po 16 pinow wyjsc z timerow (akurat jak
znalazl do sterowania wyswietlaczem), DMA i kilka innych bajerow umozliwiajacych
odciazenie CPU od wykonywania durnych czynnosci.
Kontrolery maja po 100-125 nozek i kosztuja ok, 1zl za nozke :-)
PDFy sa dostepne w sieci.
Świetna sprawa.. Myślę, że trzeba by wreszcie skończyć z '51.
Możliwe, że przerzucę się właśnie na kontrolery hitachi. Na razie
zbieram dokumentację i porównuję różne typy uC's pod względem
możliwości, ceny i łatwości fizycznego wykonania układu.
Jeśli chodzi o połączenie uC i kontrolera grafiki to nasunęło mi
się pytanie czy to rozwiązanie nie zablokuje mi procesora. Jeśli
kontroler grafiki da request dostępu do magistrali to czy zwolni
ją po przeczytaniu kilku bajtów, całej linii czy może całej
ramki?!? Jeśli to ostatnie to moc obliczeniowa spadnie mi do
10-20% a czas reakcji na przerwania (max.) będzie równy czasowi
wyświetlania ramki. Padł już pomysł z dostępem uC i CRTC
'w przeciwfazie' (synchronicznie), ja myślałem o zastosowaniu RAM
dual-port. Pewnie można by też zastosować DMA między pamięcią
a CRTC. Takie rozwiązanie było zastosowane m.in. w Atari 65XE
a przecież uP 6502 też nie miał możliwości zatrzymania (przynajm
niej w cyklu zapisu, ale trudno przewidzieć jaki będzie wykonywa
ny rozkaz gdzy przyjdzie request). Zastanawiałem się jak to jest
zrobione. Może wygląda to tak, że jest osobna kostka RAMu
podłączona do CRTC i DMA. DMA z drugiej strony dołączone jest do
pamięci operacyjnej i pracuje w trybie kopiowania z pamięci do
pamięci. Procesor dostaje przerwanie powrotu pionowego, włącza
kopiowanie przez DMA w tym czasie nie korzysta z magistrali. To
oczywiście tylko moje przypuszczenia - chętnie usłyszałbym zdanie
kogoś kto dokładnie wie jak działa takie DMA. To może być b.
efektywne rozwiązanie w przypadku uC z wbudowanym DMA. (w przy
padku '51 ja nadal obstawiam dual-port RAM ;) )
Pozdrawiam
PS. W nagłówku Twojego postu jest
References: <2195932701_at_nospam_f70.n480.z2.fidonet.ftn> <918492973_at_nospam_f117.n480.z2.ftn>
Jest on pewnie poprawny w fidonecie ale tutaj spowodował, że post znalazł się poza wątkiem.
Tylko przypadkiem go znalazłem. Może da się to jakoś zmienić?
--
( /0/ Andrzej Radecki
==== \ mailto:radecki_at_nospam_posejdon.wpk.p.lodz.pl
/ |
From: Piotr =?iso-8859-2?Q?Ko=B3odziejczyk?= <"piotr_at_nospam_spam-off"
Subject: Re: Przelaczana magistrala
Date: Fri, 12 Feb 1999 11:36:40 +0100
Andrzej Radecki wrote:
(...) =
Pewnie mo=BFna by te=BF zastosowa=E6 DMA mi=EAdzy pami=EAci=B1
a CRTC. Takie rozwi=B1zanie by=B3o zastosowane m.in. w Atari 65XE
a przecie=BF uP 6502 te=BF nie mia=B3 mo=BFliwo=B6ci zatrzymania (przyn=
ajm=AD
niej w cyklu zapisu, ale trudno przewidzie=E6 jaki b=EAdzie wykonywa=AD=
ny rozkaz gdzy przyjdzie request). Zastanawia=B3em si=EA jak to jest
zrobione. Mo=BFe wygl=B1da to tak, =BFe jest osobna kostka RAMu=
pod=B3=B1czona do CRTC i DMA. DMA z drugiej strony do=B3=B1czone jest =
do
pami=EAci operacyjnej i pracuje w trybie kopiowania z pami=EAci do
pami=EAci. Procesor dostaje przerwanie powrotu pionowego, w=B3=B1cza=
kopiowanie przez DMA w tym czasie nie korzysta z magistrali. To
oczywi=B6cie tylko moje przypuszczenia - ch=EAtnie us=B3ysza=B3bym zdan=
ie
kogo=B6 kto dok=B3adnie wie jak dzia=B3a takie DMA.
(...)
Witam
Je=B6li dobrze pami=EAtam to w 8-bitowych Atari by=B3 procesor 65SC02 (CM=
OS),
a to cudo mo=BFna by=B3o zatrzyma=E6
w ka=BFdym cyklu dost=EApu do pami=EAci. Ze schematu mo=BFna wnioskowa=E6=
, =BFe
procek ma wewn=EAtrzne bufory i po otrzymaniu sygna=B3u HALT ustawia
magistral=EA w stan wysokiej impedancji - szyny uk=B3adu DMA (Antic) i
procka sa po=B3=B1czone bezpo=B6rednio. Podobne rozwi=B1zanie by=B3o w C-=
64. Tam
procesor (6510 lub 8502) mia=B3 sygna=B3 AEC, od=B3=B1czaj=B1cy go od mag=
istrali
na czas dost=EApu do pami=EAci przez uk=B3ad video albo zewn. DMA.
Dost=EAp do pami=EAci przez CRT i CPU w tych komputerach jest realizowany=
w
przeciwfazie - pami=EA=E6 chodzi 2x szybciej ni=BF procesor i CRT - cykle=
nieparzyste dla CPU, a parzyste dla CRT (DMA). Jest to standardowe
rozwi=B1zanie dla uk=B3ad=F3w 65xx. Przy cz=EAstotliwo=B6ciach taktowania=
CPU
rz=EAdu 1 do 2 MHz dzia=B3a poprawnie, zmniejsza jednak wydajno=B6=E6 CPU=
o
jakie=B6 10 % (W C-64 i Atari mo=BFna by=B3o wy=B3=B1czy=E6 od=B6wie=BFan=
ie obrazu i
cieszy=E6 si=EA pe=B3n=B1 wydajno=B6ci=B1 procka :-).
Tak samo rozwi=B1zany jest dost=EAp do pami=EAci video (CHIP Memory) w Am=
idze
- tam jednak poza CPU dost=EAp do niej ma 25 kana=B3=F3w DMA (a czasem wi=
=EAcej
Pozdrawiam
Piotr
piotr_at_nospam_ultra.cto.us.edu.pl