[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Virge 3D chip
> Tusim, ze se aktivuje misto MemRequest neco jako IORequest. Nebo si to
> pletu z DSP Texas Instruments? :-)
> Chova se to stejne jako druhy, nezavisly adresovy prostor (viz vyse), jen
> s tim rozdilem, ze se k nemu pristuje aktivaci jineho vyvodu procesoru.
>
> Snad jsem to nejak nezblbnul. Hardwarari na tyhle konferenci, servete me
> kdyztak!
>
Nepovazuji se sice za experta na HW, ale kdysi jsem par veci uz
udelal, tak se to pokusim upresnit.
Intel, na rozdil treba od Motoroly, pouziva dve nezavisle skupiny
instrukci - jednu pro praci s pameti (MOV, MVI, LXI, ...) a druhou pro
praci s porty (IN, OUT) - ta je podstatne mensi (v podstate obsahuje
jen dve zminene instrukce) a ma znacne redukovanou mnozinu
povolenych adresovych modu, navic vyutzitelna sirka datove i adresove
sbernice je omezena na 16 bitu, tedy jen 64 KB adres (tahhle to bylo u
8086, nevim jestli to Pentia nezmenily).
Hardwarove je adresova a datova sbernice spolecna a rozlisuje se
ridici sbernici, ktera (mimo jineho) obsahuje ctyri signaly: \WR -
zapisovaci cyklus, \RD - cteci cyklus, \MEMRQ (memory request) - cyklus
pracuje s pameti a \IORQ - cyklus pracuje s porty (pamet je odpojena).
Tady si opet nejsem zcela jist, mozna existuje jina ctverice: \MEMWR,
\MEMRD, \IOWR a \IORD, ktera jednim signalem urcuje jak cteni/zapis tak
i pamet/porty, ale to je jedno - princip je stejny a jednoduchou
kombinacni logikou lze z jedne ctverice signalu vytvorit tu druhou a
naopak, v praxi se to i casto dela.
Obvod, urceny k pripojeni na sbernici ma pak zpravidla tyto vyvody:
ruzne sirokou, vetsinou obousmernou, datovou sbernici, pomerne uzkou
adresovou sbernici (vetsinou tak dva az pet pinu), ktera slouzi k
vyberu vnitrnich registru obvodu, signal \RD pro urceni smeru
komunikace na datove sbernici (nekdy ma misto nej \WR nebo i oba) a
konecne signal \CS (chip select = vyber obvodu).
Vsechny vyvody se pripoji na stejnojmenne signaly hlavni sbernice (u
adresove se zpravidla pouzivaji nejnizsi bity), vyjimku tvori signal
\CS. Pro ten je treba vytvorit zvlastni obvod, nazvany "adresovy
dekoder", jde o kombinacni obvod (delaji se uz hotove, nebo se da
slepit z hradel, casto to byva jednodcha ROM/PROM, v Amize jeho funkci
plni Garry nebo Gayle - pro nekolik periferii najednou), ktery je
pripojen na adresovou sbernici a signal \IORQ a jegho ukolem je pri
urcite kombinaci adresovych bitu a aktivnim signalu \IORQ vygenerovat
signal \CS a tim vlastne periferii probudit a zacit s ni komunikovat.
A to je jadro veci, kde se periferie hlasi, vubec nezalezi na jeim
charakteru, ale jen a pouze na adresovem dekoderu - ktere adresove bity
v jakem log. stavu pouziva. Ani na PC neni problem namapovat periferii
do pameti, staci jen pouzit misto \IORQ sgnal \MEMRQ a zajistit aby na
vybrane adrese zadna pamet nebyla (tedy aby ji adresovy dekoder pameti
odpojil)
Neni nutne pouzit pro dekoder celou adresovou sbernici, staci treba
jen spodnich 16 bitu, pak se ovsem periferie objevi v adresovem
prostoru nekolikrat, vzdy po 64 KB - tzv. zrcadleni, Taktez neni nutne
pro adresove vstupy (vyber registru) samotne periferie pouzivat zrovna
nejnizsi adresove bity, kdyz tam ovsem pripojim treba az bity A4 - A6
budou mi adresy registru skakat po 16 bytech.
Takze je potreba pouze zjistit, jak je nastaven adresovy dekoder u ty
karty pro PC a jak u toho CyberVisionu a jestli tam nejsou pouzity
nejaky ty finty, ktery jsem uvedl v predchozim odstavci a neni problem
ty adresy prepocitat.
Jeste jedna poznamka. Jak jsem zjistil ze schematu, Amiga ma takovy
zvlastni zvyk, ze pokud periferie nepotrebuje celou 32 bitovou datovou
sbernici, tak casto nepouzije jejiio spodni cast (jak je zvykem), ale
naopak jeji vyssi bity (Napr. hodiny potrebuji 4 datove bity, ale jsou
do nich kupodivu zapojeny tusim D21 az D24 - uz si to nepamatuji,
dokonce mam pocit, ze IDE rozhrani vyuziva bity D16 - D31).
Ales Zika
Pelhrimov
E-mail : Ales.Zika@pel.cb.ds.mfcr.cz