[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