Ahoj decka, mam tady jednu hracku mimo plan ;) http://ordoz.com/sharp/memext_cpuboard/ Prvni desticka se nam malinko nepovedla a tak si pro zasunuti do CPU patice trochu prekazi s napajecim konektorem zakladove desky, ktery jsem prozatim nahradil jinym typem na kabelu. Jedinym nutnym zasahem do Sharpa je tedy pripojeni jednoho dratku na signal DRAM_CAS. Toho prepinace si tam nevsimejte - pochazi jeste z experimentu, ktere jsem kdysi delal s Davidovym memextem a odpojuji se s nim puvodni pameti, coz v tomto pripade neni zapotrebi. Memext se po resetu sam zinicializuje, takze neni potreba ani zadna uprava ROMky. Otestoval jsem prozatim zakladni funkci strankovani - 1 stranka ma 4kB, (tzn. 0x2000) a mame nyni k dispozici 64 stranek, ktere lze mapovat dle libosti. Zvazujeme, zda by se stavajici zarizeni dalo rozsirit i o moznost cteni obsahu strankovacich registru a Fuzzy pozadal o moznost nastavovani RO priznaku pro jednotlive banky. Prozatim se neplanuje vyroba dalsi verze desek, nicmene casem se ukaze... Nejake omezene mnozstvi stavajicich desek se vali u Vaska, tak mu muzete zkusit napsat ;) S pozdravem - Vasek a Michal
Celé vlákno · 15 zpráv
Re: Memext: resurrection
Martin Lukasek SHARP MZ-800
Parada. Bezva prace! Toho napajeciho konektoru je sice skoda, ale co uz. ;-) Pokud zbude deska, urcite mam zajem.
Ahoj, Martin.
P.S. Nepokrocili jste nejak s podporou Ethernetu na Unikarte?
Re: Memext: resurrection
Vaclav Peroutka SHARP MZ-800
Zobrazit citovaný text (3 řádky)
> Otestoval jsem prozatim zakladni funkci strankovani - 1 stranka ma 4kB, (tzn. > 0x2000) a mame nyni k dispozici 64 stranek, ktere lze mapovat dle libosti.
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.
Zobrazit citovaný text (3 řádky)
> Nejake omezene mnozstvi stavajicich desek se vali u Vaska, tak mu muzete zkusit > napsat ;)
Desek mám momentálně 8 kousků, k tomu sadu SRAM a CPLD, jsem schopen dát dokupy celé kity v ceně 400Kč včetně pošty. A včetně kousku plošňáku, který se odstřihne a zbude zúčastněným na experimenty se SMD obvody. Pokud bude extrémní zájem, upravím layout, nechám vyrobit další sérii a nakoupím další sady. Vašek PS. A ted kdo k tomu napíše nějaký soft :-)
Re: Memext: resurrection
Pavel Železo SHARP MZ-800
Ahoj Vasku, mel bych zajem o jeden osazeny komplet (pokud ti tedy jeste nejaky zbyva ) Mej se fajn Pavel Zelezo
Zobrazit citovaný text (32 řádků)
> ---------------------------------------- > > > Otestoval jsem prozatim zakladni funkci strankovani - 1 stranka ma 4kB, (tzn. > > 0x2000) a mame nyni k dispozici 64 stranek, ktere lze mapovat dle libosti. > > 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. > > > Nejake omezene mnozstvi stavajicich desek se vali u Vaska, tak mu muzete > zkusit > > napsat ;) > > Desek mám momentálně 8 kousků, k tomu sadu SRAM a CPLD, jsem schopen dát dokupy > celé kity v ceně 400Kč včetně pošty. A včetně kousku plošňáku, který se > odstřihne a zbude zúčastněným na experimenty se SMD obvody. > > Pokud bude extrémní zájem, upravím layout, nechám vyrobit další sérii a nakoupím > další sady. > > Vašek > > PS. A ted kdo k tomu napíše nějaký soft :-) > > --- > > >
Re: Memext: resurrection
Michal Hučík SHARP MZ-800
Dne 23.3.2012 20:42, Vaclav Peroutka (sharpemupandora.cz) napsal(a):
Zobrazit citovaný text (3 řádky)
> 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
Re: Memext: resurrection
Fuzzy SHARP MZ-800
Ahoj Michale, ad 1) kdyz uz, tak bych byl pro to udelat nemennou posledni stranku, 0xe000 - 0xffff. Kdyby chtel nekdo udelat prepinani cp/m procesu, tak by mu fixni 1. stranka vadila. Pro mzix by to ted taky vadilo (aplikacni prostor 0x0000 - 0x7fff), dalo by se to ale prekonfigurovat nebo obejit. Jak asi uz vis, ja tedy nevidim velky prinos ve cteni strankovacich registru, mel by se o to postarat OS. Mozna v nekterych aplikacich ktere by primo pracovaly se strankovanim by se to hodilo, ale momentalne nevim... Ja bych doporucoval to tam nedavat za tuhle cenu. Pro me by byl mnohem uzitecnejsi... ro flag, za to bych klidne neco obetoval :-) as 2) prvni moznost se mi zda lepsi, ale asi je to celkem jedno. Jinak dik za rozjeti memextu! Fuzzy 2012/3/24 Michal Hučík (sharpemupandora.cz) <ordoz[doména skryta]>:
Zobrazit citovaný text (67 řádků)
> > Dne 23.3.2012 20:42, Vaclav Peroutka (sharpemupandora.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 > > > ---
Re: Memext: resurrection
Michal Hučík SHARP MZ-800
Dne 24.3.2012 18:44, Fuzzy (sharpemupandora.cz) napsal(a):
Zobrazit citovaný text (6 řádků)
> Jak asi uz vis, ja tedy nevidim velky prinos ve cteni strankovacich > registru, mel by se o to postarat OS. Mozna v nekterych aplikacich > ktere by primo pracovaly se strankovanim by se to hodilo, ale > momentalne nevim... Ja bych doporucoval to tam nedavat za tuhle cenu. > Pro me by byl mnohem uzitecnejsi... ro flag, za to bych klidne neco > obetoval :-)
Martine pokud by to melo byt nastavovani RO flagu pro jednotlive stranky pameti, tedy 8 bitovy registr, aplikovany podle poslednich 3 bitu adresni sbernice, tak to by jsme tam snad nacpat dokazali. Myslim si ale, ze tohle neni to co mas na mysli... Pokud by ti slo o RO priznak pro jednotlive pametove banky, tak na to tam mame asi male CPLD ... Znamenalo by to totiz 64 bitovy registr a take jeho aplikace by byla trochu slozitejsi: podle hornich 3 bitu adresni sbernice identifikujeme stranku, podle ni urcime prislusny strankovaci registr. Z obsahu registru nacteme cislo banky, ktere nam rekne v kolikatem bitu je ulozen stav RO atributu, ktery nas prave zajima. Ve VHDL se to napise celkem snadno, ale myslim, ze ta logika by se proste do xc9572 nevesla ... Michal
Re: Memext: resurrection
Radek Suk SHARP MZ-800
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-100tqfp /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 (sharpemupandora.cz) napsal(a):
Zobrazit citovaný text (65 řádků)
> > Dne 23.3.2012 20:42, Vaclav Peroutka (sharpemupandora.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 > > > --- > >
Re: Memext: resurrection
Michal Hučík SHARP MZ-800
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 (sharpemupandora.cz) napsal(a):
Zobrazit citovaný text (140 řádků)
> > > 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 (sharpemupandora.cz) napsal(a): >> >> Dne 23.3.2012 20:42, Vaclav Peroutka (sharpemupandora.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 >> >> >> --- >> >> > > > ---
Re: Memext: resurrection
Fuzzy SHARP MZ-800
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 (sharpemupandora.cz) <ordoz[doména skryta]>:
Zobrazit citovaný text (218 řádků)
> > > > 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 (sharpemupandora.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 (sharpemupandora.cz) napsal(a): >>> >>> >>> Dne 23.3.2012 20:42, Vaclav Peroutka (sharpemupandora.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 >>> >>> >>> --- >>> >>> >> >> >> --- > > > > ---
Re: Memext: resurrection
Michal Hučík SHARP MZ-800
Ahoj, dnes jsem teda zkusil ruzne varianty VHDL pro memext - pokud nekoho zajimaji, tak jsou zde http://duna.ordoz.com/memext_cpuboard/ A) mz800memext_IORQ_RD.vhd - cteni obsahu strankovacich registru. Oproti vcerejsi verzi jsem tam opravil chybu v procesu nastaveni dat, ktere by se spravne melo dit ve chvili, kdy spadne IORQ na hodnotu 0 (narozdil od zapisu do strankovacich registru, ktery se musi dit az kdyz jde IORQ nahoru) a pridal jsem take odstrizeni datove sbernice Sharpa pri IORQ RD operacich. Do stavajiciho CPLD se to vejde jen za cenu ztraty jedne pametove stranky, coz je IMHO na prd. B) mz800memext_locking.vhd - nastavovani RO priznaku pro jednotlive pametove stranky. Udelal jsem to tak, ze pri OUT (C),A se 8. bitem adresni sbernice ( 0.bit registru B) rika zda se bude strankovat, nebo nastavovat RO flag. Pri hodnote 0 se pouze strankuje, pri hodnote 1 se pouze nastavuje flag, ktery je pak ocekavan na 0. bitu datove sbernice (registr A). Zamykani je fyzicky realizovano tak, ze prerusime signal MZ800_CAS od SRAM a budeme jej ridit z CPLD, ktere ho pak pri MEM_WR operacich nastavuje podle stavu RO flagu. Do stavajiciho XC9572 se to sice vejde bez ztraty jakekoliv dalsi funkcionality, nicmene mu nevoni nase stavajici pripojeni pinu a muselo by se zrejme nejakym docela razantnim zpusobem zmenit zapojeni/routovani - dal jsem to nezkoumal. C) mz800memext_locking_IORQ_RD.vhd - maximalisticky memext, ktery obsahuje jak cteni registru, tak i zamykani jednotlivych stranek pameti. Podle vseho by se to melo vejit do XC95144 ve kterem by mozna zbylo misto i na nejake dalsi veci - zkousel jsem strankovani 128 bank po 4kB, ale to uz bylo bez sance - asi by jsme tam mohli nacpat oddelovac datove sbernice a tak by se nam deska zjednodusila o to, ze by tam nemuselo byt LVX245. Varianta A podle mne nestoji za tu ztratu jedne stranky pameti. Varianta B se _asi_ neobejde bez razantnejsi zmeny desky - pujde to vubec proroutovat na 2 vrstevach? Varianta C obnasi uz mozna pro nekoho pomerne drahe CPLD, ktere taky navic muzou mit nekteri problem zapajet (stejny model je tusim v Davidovem scandoubleru). Michal
Re: Memext: resurrection
Vaclav Peroutka SHARP MZ-800
Podle mne momentálně nestojí za to jakkoli upravovat HW Memextu. Čtení mapování tam není, to je jasné. To si může pamatovat přímo systém, ať už nějaký OS, nebo cokoli co s memextem poběží a bude ho umět využívat, třeba hra ze ZX128. Read-only flag je určitě hezká věc, pokud je nutná a do stávájícího memextu se nevejde celá, co třeba udělat zamykací jen horní 4 stránky, tj. 32kB ? Koza se nažrala a kůzlata zůstanou celá. Spíše jde o to mít nějaký SW, ať má memext jako takový smysl. Vymyslet jakékoli rozšíření čekoholi je hezká věc, ale pokud je nevyužívaná, tak je to zbytečnost... Vašek PS. zatím se mi ozvali na Memexty Pavel Železo, Radek Suk a Martin Lukášek.
Re: Memext: resurrection
Michal Hučík SHARP MZ-800
Dne 27.3.2012 14:27, Vaclav Peroutka (sharpemupandora.cz) napsal(a):
Zobrazit citovaný text (4 řádky)
> Read-only flag je určitě hezká věc, pokud je nutná a do stávájícího > memextu se nevejde celá, co třeba udělat zamykací jen horní 4 stránky, > tj. 32kB ? Koza se nažrala a kůzlata zůstanou celá. >
Podarilo se mi dostat do stavajiciho zapojeni pinu takovy model, ve kterem mam 3 bitovy zamykaci registr. Ten lze vyuzit bud tak, ze kazdy bit bude zamykat nejakou konkretni cast pameti. Nebo to muzeme pouzit jako preddefinovany modus, ktery se bude podle hodnoty 0 - 7 nejak specialne chovat. Mne osobne vsak nenapada jake zamykaci mody by mohly byt zajimave pro dalsi pouziti. Napada mne (a nevim ted nakolik je to realne), co treba take modus, ktery by nabizel moznost zakazat premapovani, at uz obecne a nebo jen pro nejake stranky? Michal
Re: Memext: resurrection
Radek Suk SHARP MZ-800
A co treba misto r/o udelat fukci ze kdyz bude 8 bit nastaveny tak se pamet prepne az po dalsi instrukci. Neco podobneho co dela RET s IFF. Pak by sel udelat kod co by skakal do nove pripojene pameti, ktera by byla primapovana na stejne misto, kde je kod na prepnuti. Stacilo by testovat M1 a pri druhe sestupne hrane to prepnout. Pripadne preruseni si musi autor systemu osetrit, protoze se mu muze pamet prepnout prave pri vyvolani preruseni. To by ale nemel byt problem, stejne to ma byt osetrene. Radek Dne 27.3.2012 15:59, Michal Hučík (sharpemupandora.cz) napsal(a):
Zobrazit citovaný text (25 řádků)
> > > Dne 27.3.2012 14:27, Vaclav Peroutka (sharpemupandora.cz) napsal(a): >> Read-only flag je určitě hezká věc, pokud je nutná a do stávájícího >> memextu se nevejde celá, co třeba udělat zamykací jen horní 4 >> stránky, tj. 32kB ? Koza se nažrala a kůzlata zůstanou celá. >> > > Podarilo se mi dostat do stavajiciho zapojeni pinu takovy model, ve > kterem mam 3 bitovy zamykaci registr. Ten lze vyuzit bud tak, ze kazdy > bit bude zamykat nejakou konkretni cast pameti. Nebo to muzeme pouzit > jako preddefinovany modus, ktery se bude podle hodnoty 0 - 7 nejak > specialne chovat. > Mne osobne vsak nenapada jake zamykaci mody by mohly byt zajimave pro > dalsi pouziti. > Napada mne (a nevim ted nakolik je to realne), co treba take modus, > ktery by nabizel moznost zakazat premapovani, at uz obecne a nebo jen > pro nejake stranky? > > Michal > > > --- > >
vyroba PCB
VELESOFT (SPRINTER) SHARP MZ-800
Nevite o nejake levne vyrobe plosnych spoju ? Myslim tim prokovene s nepajivou maskou. MATRON ma pozastavenou prototypovou vyrobu plosnych spoju na dobu neurcitou :-( VELESOFT