Konference: Počítač SHARP MZ-800 a emulátory
Od: | Fuzzy |
Datum: | 26.3.2012 18:18 |
Předmět: | Re: Memext: resurrection |
Ahoj Michale, Radku, vsichni, ro stranek by podle me bylo dostacujici. Pouziti: ochrana oblasti pameti vyhrazenych pro system, aby byla mensi pravdepodobnost, ze jeden proces shodi cely OS. Jako nahrada ROM by to asi moc pouzitelne nebylo, protoze pokud vim tak Sharp ROM prekryva cokoliv na memextu; memext se strankuje vzdy do prostoru kde je normalne RAM. Jestli chcete nekdo delat modifikace, tak bych rad pozadal o dodrzovani zpetne kompatibility - bud s Michalovym/Vaskovym memextem, nebo s Davidovym, at nam nevyroste jeste treti varianta. Zbyva adaptovat/psat software :-) Fuzzy 2012/3/26 Michal Hučík (sharpemu tu byla ta zakroucena vec pandora.cz) <ordoz tu byla ta zakroucena vec ordoz.com>: > > > > Ahoj Radku, > > tady je VHDL kod overeneho memexta a je tam taky experimentalni kod pro > variantu se ctenim registru za cenu ztraty nulte stranky pameti. > > http://duna.ordoz.com/memext_cpuboard/memext_cpuboard_rtl.rar > > Co se tyka schematu a seznamu soucastek, tak to tady myslim posilal Vasek v > prosinci. Obrazek se schematem generoval Vasek, tak nevim jake jsou moznosti > ve zmene jeho formatu - ja bych asi zkusil invertovat barvy v nejakem gimpu, > ci necem podobnem.. > Oproti Vaskovemu puvodnimu navrhu jsem do zapojeni pridal pouze 10k pull-up > pripojeny mezi +5V a signal CAS, ktery tam vedeme dratkem, protoze jsem mel > obavu z toho, kdybych nahodou ten dratek zapomnel pripojit a nebo kdyby ten > jednopinovy konektor nebyl spolehlive vodivy. > > Popis funkce memexta na cpu patici je zhruba nasledujici: > > Pro IORQ - WR se dekoduje jen operace na portu 0xE7 (0 - 7 bit adresni > sbernice). Na horni casti adresni sbernice (13 - 15 bit) se ocekava cislo > stranky/registru, ktery se snazime zmenit. > Na datove sbernici se pri IORQ - WR ocekava nova hodnota (cislo pametove > banky), kterou chceme do registru vlozit. Tato hodnota muze byt pouze v > rozsahu 0 - 63, coz znamena, ze nam z datovky staci jen bity 0 - 5. > > Pro aplikaci samotneho strankovani je do memexta priveden dratkem signal > CAS, kterym nam GDG rika, ze prave probiha operace s DRAM. Protoze nas > memext tuto DRAM obchazi a nahrazuje ji 512kB SRAM, tak je v takovem pripade > potreba pouzit LVX245, kterym se "odstrihne" datova sbernice memexta od > zbytku pocitace a zabranime tak kolizi na datove sbernici. > Pri adresovani SRAM se jako spodni cast adresy pouzije standardnich 16 bitu > z adresni sbernice Z80. Hornich 5 bitu adresy SRAM se urci podle obsahu > prislusneho strankovaciho registru (stranka/registr je zde take odvozena > podle bitu 13 - 15 z adresni sbernice). > > V pripade experimentalniho kodu, ktery by umoznoval cteni strankovacich > registru by bylo potreba pripojit do CPLD jeste signal RD a optimalne take > zbyvajici 2 bity datove sbernice, aby nam jejich obsah pri cteni nepoletoval > vzduchem - jinak by bylo potreba si po precteni dat udelat jeste AND 0x3f, > aby se vynulovaly horni 2 bity. > > Ted kdyz to pisu, tak jsem si uvedomil, ze jsem v tom experimentalnim VHDL > kodu navic jeste zapomnel na to, ze pri IORQ - RD - 0xE7 musim take > deaktivovat Sharpackou datovou sbernici pomoci LVX245, jako se to dela i v > pripade, kdy se mluvi se SRAM. > > Pro pripojeni chybejicich signalu by se pouzily piny na kterych je nyni > nadbytecna cast adresni sbernice ADDR 8 - 12. > > > Co se tyka pouziti vetsiho CPLD, tak pro cteni registru by asi urcite > postacoval xc95144, ale u toho RO flagu se obavam, ze by se to veslo tak > mozna do xc95288, coz uz je nesmyslne drahe reseni. To uz by asi bylo lepsi > dat tam spise nejake male FPGA. > > Memext v soucasne podobe Vasek optimalizoval tak, aby se vesel do co > nejlevnejsich soucastek, cemuz odpovida i omezeni na 64 pametovych bank po > 8kB. Je otazka, zda navrhovane doplnkove funkce jsou opravdu tak prinosne, > aby stalo za to delat upgrade logiky na neco vetsiho. > > Zkusim napsat jeste kod pro RO flagy jak stranek, tak i bank a uvidime co z > toho vyleze... > > Michal > > Dne 26.3.2012 0:39, Radek Suk (sharpemu tu byla ta zakroucena vec pandora.cz) napsal(a): > >> >> >> Ahoj Michale >> >> - je mozno udelat schema na bilem podkladu? >> (http://ordoz.com/sharp/new_memext/memext_cpld_cpu.png) >> - planujete udelat tabulku soucastek a pouzder + pripadne kde to koupit >> - planujete udelat Gerger data aby si to mohl kazdy udelat? >> - ukazete VHD soubor aby se videlo jak to funguje? To byl potreboval >> nejvic. >> - napiste proc je tam U2 (74HCP245) - k cemu slouzi >> >> Ja bych byl pro verzi kde se da vse menit i treba ze cenu vetsiho CPLD >> obvodu. Zjistoval jsem co existuje a hlavne kolik to stoji. >> >> www.tme.eu XC9572XL10VQG44 cena 70Kc/kus bez DPH Integrovaný obvod: >> CPLD; 72; Počet vst./výst:34; 10ns; VQFP44 >> >> www.tme.eu XC95144XL10TQG1 cena 129Kc/kus bez DPH Integrovaný obvod: >> CPLD; 144; Počet vst./výst:81; 10ns; TQFP100 >> cz.farnell.com XC95144XL-10TQG100C cena 155Kc/kus bez DPH odkaz >> http://cz.farnell.com/xilinx/xc95144xl-10tqg100c/cpld-isp-144mcells-3-3v-100tqf p/dp/1776144 >> >> Otazka je kolik z nas je schopno spravne zapajet ten 100 pinovy obvod? >> Kdyz by byla sance, tak bych byl pro vymenu za tento a pak by se tam mohl >> dat i ten 64bitovy registr >> pro R/O na kazdy segment pameti. A soucasne by tam byl navic ten vyvod pro >> RD. >> >> Take potrebuji vysvetlit jak funguje: >> >> LD BC, xxE7 >> LD A,yy >> OUT (C),A >> >> xx - cislo stranky pameti (je jich 8) >> yy - cislo pametove banky (je jich 64) >> 0xE7 - adresa strankovaciho portu >> >> stranka 0x00 - je pamet 0x0000 - 0x1fff >> stranka 0x20 - je pamet 0x2000 - 0x3fff >> stranka 0x40 - je pamet 0x4000 - 0x5fff >> >> jedna se mi o to ze dle schematu nejsou do CPLD privedene D6 a D7 a tak to >> nemuze fungovat. >> >> Take logicky z toho vyplyva zda neprohodit "xx" a "yy" a pak staci jen >> D0,D1 a D2 a tim padem neni potreba privest na CPLD D3,D4 a D5 a tak je >> jeden privod volny pro RD. >> Druhe reseni je, neprivest na CPLD nektere A signaly a tim umoznit privest >> RD. Resenich je vice, zalezi co se bude chtit udelat. >> Mozna se zjisti ze neni potreba A8, A9, D5 az D3 - celkem 5 signalu. V >> jinem zapojeni bych zapojil jen A15, A14 a A13 (ne A12 - A8) a pak A7-A0 a >> D0 az D5 (ne D6 a D7) a nasledne na A13-15 da cislo stranky pameti a na D0 >> az D5 se da cislo pametove banky. Pri tomto by slo zapojit i D6 a D7 a tim >> padem cist cely bajt najednou, kdyz by to bylo potreba. >> >> >> Nevim kolik zdroju je ted jeste volnych v CPLD ale tak by mozna slo udelat >> R/O flag alespon pro tech 8 stranek pameti a tak treba simulovat rom na >> zacatku pameti. >> >> Radek >> >> >> >> Dne 24.3.2012 17:12, Michal Hučík (sharpemu tu byla ta zakroucena vec pandora.cz) napsal(a): >>> >>> >>> Dne 23.3.2012 20:42, Vaclav Peroutka (sharpemu tu byla ta zakroucena vec pandora.cz) napsal(a): >>>> >>>> A protože stárnu a stávám se protivnějším, tak jen opravím drobnost - >>>> velikost stránky je 8kB. A je skutečně 64 stránek, tedy dokupy 512kB SRAM. >>> >>> >>> Dekuji, ze jsi mne opravil nacelniku :) >>> >>> Dnes jsem trochu experimentoval s kodem memexta. Jsou dve veci, ktere >>> bych rad prenechal k diskuzi: >>> >>> 1) Cteni strankovacich registru - pro realizaci teto fce je potreba >>> pridratovat i signal RD, coz by nemel byt problem, nicmene do xc9572 se to >>> cele zrejme nevejde a jediny zpusob jakym se mi to podarilo uspesne >>> zkompilovat (zatim ne otestovat) je takovy, ze jsem musel obetovat jednu >>> stranku pameti, coz by mozna taky melo svuj smysl. >>> Predpokladam, ze by za obet padla napr. nulta stranka. To znamena, ze by >>> obsah pameti 0x0000 - 0x1fff byl nemenny, vzdy by tam byla primapovana nulta >>> banka, kterou by samozrejme slo duplicitne namapovat i kamkoliv jinam, pokud >>> by to melo nejaky smysl. >>> >>> Otazka tedy zni: obetovat tu jednu stranku pameti, aby jsme meli moznost >>> cist obsah strankovacich registru, nebo se na cteni vykaslat? >>> >>> >>> >>> 2) Zpusob nastavovani strankovacich registru - jak uz mne opravil Vasek, >>> tak ted mame pamet Sharpa rozdelenu na 8 stranek po 8kB. Nastavovani >>> strankovacich registru probiha nasledovne: >>> >>> LD BC, xxE7 >>> LD A,yy >>> OUT (C),A >>> >>> xx - cislo stranky pameti (je jich 8) >>> yy - cislo pametove banky (je jich 64) >>> 0xE7 - adresa strankovaciho portu >>> >>> Dotaz se tyka xx - tedy cisla stranky. Prislo mi prehladnejsi, kdyz se >>> bude urcovat cislo stranky podle toho, jaka je jeji startovaci adresa v >>> pameti, coz je zaroven castecne kompatibilni s Davidovym memextem. >>> >>> stranka 0x00 - je pamet 0x0000 - 0x1fff >>> stranka 0x20 - je pamet 0x2000 - 0x3fff >>> stranka 0x40 - je pamet 0x4000 - 0x5fff >>> ... >>> ... >>> >>> Je tu samozrejme i moznost nastavovat stranky podle poradoveho cisla >>> registru: >>> >>> stranka 0x00 - je pamet 0x0000 - 0x1fff >>> stranka 0x01 - je pamet 0x2000 - 0x3fff >>> stranka 0x02 - je pamet 0x4000 - 0x5fff >>> ... >>> ... >>> >>> Otazka zni: ktery zpusob se vam vic zamlouva? Ja osobne jsem spise pro >>> ten prvni. >>> >>> Michal >>> >>> >>> --- >>> >>> >> >> >> --- > > > > ---
Ostatní příspěvky vlákna:
[2012/1 (125)] [2012/2 (34)] [2012/3 (57)] [2012/4 (46)] [2012/5 (40)] [2012/6 (44)] [2012/7 (64)] [2012/8 (57)] [2012/9 (32)] [2012/10 (55)] [2012/11 (25)] [2012/12 (63)]
[1999 (1)]
[2000 (168)]
[2001 (733)]
[2002 (459)]
[2003 (654)]
[2004 (224)]
[2005 (105)]
[2006 (182)]
[2007 (201)]
[2008 (294)]
[2009 (363)]
[2010 (782)]
[2011 (522)]
[2012 (642)]
[2013 (442)]