Konference: Počítač SHARP MZ-800 a emulátory
Od: | Michal Hučík |
Datum: | 26.3.2012 09:42 |
Předmět: | Re: Memext: resurrection |
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)]