AmiPCI
AmiPCI – moje pierwsze podejście do PCI w Amidze
Co prawda nieudane, ale od czegoś trzeba było zacząć...
Grzegorz Kraszewski

Cała hi­sto­ria za­czę­ła się pod ko­niec 1998 roku. W cza­sach tych Amiga była już u schył­ku swo­jej świet­no­ści, cho­ciaż wciąż jesz­cze rze­sza jej użyt­kow­ni­ków była licz­na. Nie­ste­ty sprzęt ami­go­wy coraz wy­raź­niej za­czy­nał od­sta­wać od tech­no­lo­gicz­nych stan­dar­dów. Tym­cza­sem skle­po­we półki za­czę­ły ugi­nać się od ta­nich kart PCI dla pe­ce­tów. Stan­dard PCI li­czył sobie wtedy 5 lat. Był jed­nak­że tech­no­lo­gią cał­ko­wi­cie obcą Ami­dze, co wię­cej wy­da­wał się być o wie­le bar­dziej zło­żo­ny, niż ami­go­wa szyna roz­sze­rzeń Zorro III. Z dru­giej stro­ny tanie jak barszcz sie­ciów­ki, szyb­kie karty gra­ficz­ne czy 16-bi­to­we karty dźwię­ko­we ku­si­ły. W końcu po­my­śla­łem, że może by jed­nak spró­bo­wać. Nie kto inny, a sam Al­bert Ein­ste­in po­wie­dział wszak, że je­że­li coś wy­da­je się nie­moż­li­we do zro­bie­nia, to za­wsze znaj­dzie się ktoś, kto o tej nie­moż­li­wo­ści nie wie i to zrobi...

Płytka AmiPCI
Prototyp AmiPCI w całej okazałości.
Sonda TTL
Zaawansowany sprzęt pomiarowy.
Złącze do Amigi 1200
Gniazdo na złącze karty turbo w A1200, wykonane z trzech fragmentów gniazd PCI.

Z dzie­się­cio­let­niej per­spek­ty­wy moje zma­ga­nia wy­glą­da­ją nieco pa­te­tycz­nie, nie bez przy­czy­ny, wszak pro­jekt po­legł. Stał się jed­nak pod­sta­wą do roz­po­czę­cia prac nad Pro­me­te­uszem, które, z in­ży­nier­skie­go punk­tu wi­dze­nia, za­koń­czy­ły się peł­nym suk­ce­sem. Z tego wła­śnie po­wo­du, mimo że nikt nie lubi się spe­cjal­nie chwa­lić swo­imi po­raż­ka­mi, po­sta­no­wi­łem na­pi­sać te kilka słów, zi­lu­stro­wa­nych hi­sto­rycz­ny­mi już fo­to­gra­fia­mi pro­to­ty­pu.

Jak każdy in­ży­nier, pracę za­czą­łem od czy­ta­nia do­ku­men­ta­cji. O ile sama ma­gi­stra­la PCI jest pre­cy­zyj­nie zde­fi­nio­wa­na w spe­cy­fi­ka­cji stan­dar­du, o tyle po stro­nie Amigi mia­łem kło­po­ty. Po­sia­da­łem wów­czas Amigę 1200, pla­no­wa­łem więc, że mój mo­stek PCI bę­dzie pod­łą­cza­ny do złą­cza karty turbo, bę­dzie przy tym prze­lo­to­wy. To oczy­wi­ście im­pli­ko­wa­ło prze­ło­że­nie Amigi do obu­do­wy typu „tower”. Nie­ste­ty złą­cze roz­sze­rzeń A1200 nie było ni­g­dzie do­kład­nie opi­sa­ne (w in­struk­cji do kom­pu­te­ra są je­dy­nie ozna­cze­nia pinów). Po­wo­li zdo­by­wa­łem po­trzeb­ną wie­dzę, bu­szu­jąc po sieci (co w epo­ce mo­de­mu i nu­me­ru do­stę­po­we­go 0-202122 nie by­ło ani szyb­kie, ani ta­nie), pe­ne­tru­jąc płytę „Amiga De­ve­lo­per CD”, czy wresz­cie zdo­by­wa­jąc na słyn­nym war­szaw­skim Wo­lu­me­nie in­struk­cję ser­wi­so­wą A1200 ze sche­ma­ta­mi. W końcu, gdy zna­łem po­trzeb­ne spe­cy­fi­ka­cje nie­mal na pa­mięć, do­sze­dłem do wnio­sku, że rzecz cała jest wy­ko­nal­na. Nie zda­wa­łem sobie wów­czas jesz­cze spra­wy z tego, jak długa bę­dzie droga do suk­ce­su. Za­cznij­my od tego, że nie mia­łem na AmiP­CI pra­wie żad­nych fun­du­szy. Po­zo­sta­wał mi do za­in­we­sto­wa­nia wolny czas i dużo cier­pli­wo­ści. Z po­wo­du ze­ro­we­go pra­wie bu­dże­tu przy­ją­łem wiele uprasz­cza­ją­cych za­ło­żeń. Pierw­sza wer­sja most­ka, słu­żą­ca w za­sa­dzie do za­ba­wy z kar­ta­mi PCI miała być wy­ko­na­na na ukla­dach TTL z serii F, a wszyst­kie sy­gna­ły, łącz­nie z ze­ga­ra­mi (!) miały być ge­ne­ro­wa­ne pro­gra­mo­wo. Każdy, kto ma po­ję­cie o PCI, doj­dzie do wnio­sku, że to nie ma prawa dzia­łać i bę­dzie miał cał­ko­wi­tą rację. Za cały sprzęt po­mia­ro­wy słu­ży­ły mi: stara, wła­sno­ręcz­nie wy­ko­na­na sonda po­zio­mów lo­gicz­nych, oraz ana­lo­go­wy mul­ti­metr UM-207.

Zbliżenie płytki
Frezowana płytka drukowana i układy HCT574 zatrzaskujące stan szyny.
Płytka główna
Panorama głównej płytki drukowanej.
Złącze karty turbo
Złącze do nałożenia karty turbo.

Pierw­szym wy­zwa­niem, przed jakim sta­ną­łem, było wy­ko­na­nie złą­cza kra­wę­dzio­we­go pa­su­ją­ce­go do złą­cza karty turbo w Ami­dze 1200. Za­kup no­we­go złą­cza, jako nie­stan­dar­do­we­go, gra­ni­czył z cu­dem (150 pi­nów, roz­staw 1,27 mm). Zma­sa­kro­wa­nie ja­kiejś kar­ty tur­bo by­ło­by lep­szym po­my­słem, ale albo trze­ba­by zdo­być uszko­dzo­ną kartę, albo ze­psuć spraw­ną. Pierw­sze z roz­wią­zań było cza­so­chłon­ne, dru­gie – za dro­gie. Na szczę­ście przy­szedł mi do głowy inny po­mysł. Gniaz­da PCI mają ten sam roz­staw i sto­sun­ko­wo łatwo je po­zy­skać ze sta­rych płyt kom­pu­te­rów PC na­by­tych za gro­sze na szro­cie. Po­zo­sta­ła kwe­stia wy­lu­to­wa­nia złącz, a potem od­po­wied­nie­go przy­cię­cia tak, aby z dwóch gniazd PCI uzy­skać jedno złą­cze 150-pi­no­we. Naj­lep­szym spo­so­bem wy­lu­to­wy­wa­nia było za­nu­rza­nie w go­rą­cej cy­nie. W tym celu wy­ko­na­łem ko­ryt­ko z bla­chy sta­lo­wej o roz­mia­rach nieco więk­szych, niż slot PCI. Za po­mo­cą mie­dzia­ne­go pła­sko­wni­ka ko­ryt­ko było za­ci­ska­ne na gro­cie lu­tow­ni­cy bla­char­skiej o mocy 500 W. Wy­star­czy­ło wy­peł­nić je cyną, po­wierzch­nię cyny po­sy­py­wa­łem ka­la­fo­nią i kła­dłem wy­cię­ty z płyty PC ka­wa­łek z gniaz­dem PCI. Po dwóch mi­nu­tach wy­star­czy­ło de­li­kat­nie chwy­cić szczyp­ca­mi za gniaz­do i naj­zwy­czaj­niej w świe­cie wy­cią­gnąć je z pły­wa­ją­ce­go po cynie frag­men­tu płyt­ki dru­ko­wa­nej. Me­to­da oka­za­ła się nad­zwy­czaj sku­tecz­na, szyb­ka i za­cho­wu­ją­ca gniaz­da PCI w sta­nie nie­mal­że fa­brycz­nym. Wy­cię­cie trzech frag­men­tów gniazd PCI i do­pa­so­wa­nie ich pil­ni­kiem było już pro­ste. Po­trzeb­ne były trzy frag­men­ty, bo oprócz uzy­ska­nia nie­zbęd­nej ilo­ści pinów, na­le­ża­ło w od­po­wied­nim miej­scu umie­ścić klucz po­zy­cjo­nu­ją­cy. Go­to­we złą­cze wi­docz­ne jest na zdję­ciu obok.

Płyt­ka dru­ko­wa­na ką­to­wej prze­lot­ki ze złą­czem zo­sta­ła wy­ko­na­na ama­tor­ską me­to­dą fo­to­che­micz­ną, z uży­ciem zna­ne­go środ­ka „Po­si­tiv 20”. Po jed­nej stro­nie znaj­do­wa­ło się wyżej wspo­mnia­ne złą­cze z 3 ka­wał­ków gniazd PCI. Po dru­giej zaś w śro­dek pól lu­tow­ni­czych gniaz­da wlu­to­wa­na była pod kątem pro­stym płyt­ka bę­dą­ca złą­czem dla karty turbo. Nie­ste­ty nie mia­łem moż­li­wo­ści choć­by po­sre­brze­nia sty­ków na tej płyt­ce. Były one zwy­czaj­nie po­cy­no­wa­ne, co nie wpły­wa­ło do­dat­nio na sta­bil­ność pracy Amigi po za­ło­że­niu prze­lot­ki. Za­le­tą tej kon­struk­cji było utrzy­ma­nie karty turbo w tej samej osi pio­no­wej, dzię­ki temu uni­ka­ło się do­dat­ko­wych mo­dy­fi­ka­cji obu­do­wy. Ze wzglę­du na zło­żo­ność głów­nej płyt­ki Ami­PCI, mu­sia­łem dla niej po­szu­kać lep­szej tech­no­lo­gii. Płyt­ka ta zo­sta­ła zro­bio­na dość awan­gar­do­wą, jak na owe czasy, me­to­dą fre­zo­wa­nia. Nie było to tanie, ale bez pro­ble­mu można było osią­gnąć od­po­wied­nią pre­cy­zję i me­ta­li­za­cję otwo­rów. Ze wzglę­du na roz­mia­ry zde­cy­do­wa­łem się na uży­cie ukła­dów w obu­do­wach SMD. Wszyst­kie użyte ukła­dy miały roz­staw nóżek 1,27 mm, co po­zwa­la­ło na ręcz­ny mon­taż.

Dolna strona płytki
Dolna strona płytki drukowanej.
Dekoder adresowy
Dekoder adresowy i przełącznik do ustawiania najstarszych 8 bitów adresu.
Pajęczyna przewodów
Zbliżenie na „pajęczynę”.

Kon­cep­cja ukła­do­wa była bar­dzo pro­sta – wszyst­kie linie PCI (ze ste­ru­ją­cy­mi i ze­ga­rem włącz­nie) miały być ste­ro­wa­ne pro­gra­mo­wo, przez kilka re­je­strów umiesz­czo­nych w prze­strze­ni ad­re­so­wej Amigi, na po­czą­tek na sztyw­no od ad­re­su $E90000. Uczy­ni­łem tu mil­czą­ce za­ło­że­nie, że karty PCI za­ak­cep­tu­ją pracę z ze­ga­rem o do­wol­nie ni­skiej czę­sto­tli­wo­ści, w do­dat­ku ze­ga­rem nie bie­gną­cym jed­no­staj­nie. W miarę roz­wo­ju prac pla­no­wa­łem stop­nio­we od­da­nie linii ze­ga­ro­wych i ste­ru­ją­cych PCI ukła­dom sprzę­to­wym, oraz do­da­nie pro­to­ko­łu Au­to­Con­fig, po­zwa­la­ją­ce­go Ami­dze na skon­fi­gu­ro­wa­nie Ami­PCI w cza­sie star­tu sys­te­mu. Znacz­nym ogra­ni­cze­niem jest fakt, że prze­strze­nie ad­re­so­we kart PCI trze­ba upchać w wol­nych 8 MB 24-bi­to­wej prze­strze­ni ad­re­so­wej pro­ce­so­ra 68EC020. Co praw­da więk­szość kart turbo dys­po­nu­je we­wnętrz­nie pełną, 32-bi­to­wą prze­strze­nią ad­re­so­wą, ale naj­star­sze 8 li­nii ad­re­so­wych nie jest wy­pro­wa­dzo­ne na złą­cze karty. Je­dy­nym roz­wią­za­niem by­ło­by zde­fi­nio­wa­nie okna o wiel­ko­ści 8 MB, przez które ste­row­ni­ki mia­ły­by do­stęp do pa­mię­ci i re­je­strów kart. Roz­wią­za­nie takie za­sto­so­wa­ła firma Elbox w pro­duk­cie Me­dia­tor 1200.

Cały pro­jekt był od po­cząt­ku do końca fi­nan­so­wa­ny z mojej pry­wat­nej kie­sze­ni. Już samo wy­ko­na­nie płyt­ki dru­ko­wa­nej było spo­rym wy­dat­kiem. Po­ja­wi­ły się co praw­da po­my­sły wspar­cia mnie jakąś „zrzut­ką”, ale po pierw­sze idea bo­un­ties nie była jesz­cze po­pu­lar­na w ami­go­wym świe­cie, po dru­gie sam z ostroż­no­ścią pod­sze­dłem do tego ro­dza­ju ini­cja­tyw. Tym bar­dziej, że w miarę pracy nad pro­jek­tem coraz le­piej wi­dzia­łem, że nie obej­dzie się bez po­rząd­ne­go (a co za tym idzie nie­ste­ty dro­gie­go) sprzę­tu po­mia­ro­we­go, przede wszyst­kim wie­lo­ka­na­ło­we­go oscy­lo­sko­pu. Było jasne, że na taki sprzęt nie będę sobie mógł po­zwo­lić jako osoba pry­wat­na. Po­mi­mo za­in­te­re­so­wa­nia z ja­kim spo­tkał się nie­dzia­ła­ją­cy pro­to­typ na spo­tka­niu w War­sza­wie w 1999 roku, zde­cy­do­wa­łem ko­niec koń­ców o za­mknię­ciu pro­jek­tu.

Pora na pod­su­mo­wa­nie. Ge­ne­ral­nie nie ulega wąt­pli­wo­ści, że pro­jekt po­legł. Był to w znacz­nej mie­rze atak z mo­ty­ką na słoń­ce. Z dru­giej jed­nak stro­ny wiele się przy nim na­uczy­łem, zdo­by­ta wie­dza stała się bazą do za­ata­ko­wa­nia pro­ble­mu „PCI i Ami­ga” już rok póź­niej, w znacz­nie sku­tecz­niej­szy, a co naj­waż­niej­sze uwień­czo­ny suk­ce­sem, spo­sób. Ale o tym na­pi­szę w od­dziel­nym ar­ty­ku­le na temat pro­jek­tu „Pro­me­te­usz”.

czerwiec 2009