Vyvojova karta pro PMI-80
PMI-80 je asi prvni ceskoslovensky jednodeskovy mikropocitac s procesorem 8080A z pocatku 80 let. Jedna se temer o katalogove zapojeni s procesorem 8080A.
Protoze jsou na pomerne male desce pritomny soucasne klavesnice, displej, vstupne vystupni programovatelne obvody a rozsirujici konektor s uplnou lokalni sbernici, nasel si svoje misto nejenom mezi nadsenci.
Krome vyuziti pro vyuku, zajmove krouzky s elektronikou a programovanim, byl casto pouzit i pro podnikove vyuziti jako maly programovatelny automat pro rizeni.
I ja jsem ho v davne minulosti vyuzil v ramci zkusebny pro rizeni zivotnostnich zkousek, nebo v ramci krouzku pro rizeni modelove zeleznice.
Jiz v nove dobe, v roce 2012, jsem si postavil prvni repliku na desce od nostalcomp.cz a od teto doby nasel tento mikropocitac svoje dulezite misto pri stavbe meho soukromeho retro labu, retro studovny a retro muzea.
Nejdrive to byl programator pro pameti MHB8708, pak tester pameti, nasledovaly analyzatory a prevodniky historickych rozhrani a nakonec emulace nedostupnych periferii minipocitacu, vcetne periferie pro legendarni PDP-11.
Takze asi uz tusite, ze u jedne repliky meho oblibeneho jednodeskoveho mikropocitace nezustalo.
Nakonec se mi podarilo sehnat i original PMI-80 ve zlutem kufriku, ale ten si primarne setrim pro ruzne ukazky a prezentace.
Na zaklade techto zkusenosti vznikla tato hodne univerzalni rozsirujici vyvojova karta, ktera nahradila vice jednoucelovych karet.
Karta je navrzena a vyrobena takovym zpusobem, aby odpovidala designem a pouzitymi soucastkami konci 80 let.
Samozrejme se jedna o klasickou Desku Plosneho Spoje s olovnatym HALem a bez masky, mimochodem vyrobena take u nas v Ceske republice.
Ale nejdulezitejsi jsou jeji moznosti, ktere bych rozdelil do nekolika oblasti:
Nez se dostanu k jednotlivym oblastem, tak uvedu obecne pozadavky, ktere tato karta splnuje:
- dusledne oddeleni adresove a datove sbernice mikropocitace
- vyvedeni vsech signalu vnitrni sbernice mikropocitace
- osazeni jedne patice DIL28 s nulovou silou s moznosti univerzalniho vyuziti vcetne programovani pameti MHB8708
- signalizace pomoci cervene LED (s popisem 8708) pokud je na patici s nulovou silou privedeno napajeci napeti +12V a -5V, ktere neni uplne bezpecne pro pameti napajene pouze 5V
- osazeni druhe standardni patice DIL28 s moznosti univerzalniho vyuziti pouze s omezenim napajeni pameti +5V
- siroke moznosti konfigurovatelnosti karty (adresace, volba typu pouzder, volba napajeni)
- oddeleny konfigurovatelny modul pro generovani programovacich pulzu
- karta pocita s moznosti vyuziti volnych pinu systemoveho konektoru K2 pro pripojeni 4 hornich bitu volneho portu B IO10 (MHB8255) mikropocitace PMI-80 (uprava, kterou vetsina z nas v davne minulosti provedla na kazdem PMI-80, ale neni to podminkou)
Programator pameti MHB8708 (2708)
Prvni rade bych uvedl inspiraci zapojeni zverejneneho v priloze Amaterskeho Radia rocniku 1990 (zelena rocenka).
Vetsina programatoru pripojuje programovanou pamet pres obvody rozhrani (paralelni interface), pak je ale patice dedikovana pro funkci programatoru (muzete tedy programovat a vycitat obsah pameti pouze pres obsluzny software, pamet ale neni primo pristupna procesoru).
Pokud ale chcete realizovat opravdu univerzalni kartu, je toto znacne omezeni. Naopak zverejnene schema v uvedene rocence, pripojuje programovatelnou pamet primo na adresovou a datovou sbernici mikropocitace.
Pro generovani potrebnych programovacich pulzu vyuziva vhodne zapojeni monostabilnich klopnych obvodu s vyuzitim vstupniho signalu procesoru na stav cekani (READY->WAIT).
Tim je docileno, ze programovaci impulzy maji potrebnou delku aniz byste museli neco proto udelat.
Programovani se tedy provadi beznou instrukci MOV M,A (LD (HL),A), jenom je potreba predem programove aktivovat modul generovani programovacich pulzu.
Pokud vhodne doplnime a upravime uvedene schema, vznikne nam plnohodnotny programator pameti MHB8708 (2708) s pozadovanou funkcionalitou.
Zakladni vlastnosti programatoru na uvedene karte jsou:
- patice s nulovou silou neni dedikovana pouze pro programator
- hardware modul pro generovani programovacich pulzu je plne odpojitelny a svoji moznosti konfigurace dovoluje i vyuziti pro jine ucely. Aktivovani programovaciho modulu se provadi pres jeden vstupni ridici bit (vyuziva se vystupni bit na volnem portu B stykoveho obvodu MHB8255A - IO10 na zakladni desce mikropocitace PMI-80)
- vyzaduje pouze jedno externi napajeni (programovaci 25V)
- ochranna funkce podminek zavislosti programovacich pulzu a omezeni maximalniho proudu programovaciho napeti
- moznost vymeny programovane pameti za provozu (velke omezeni puvodniho zapojeni zverejneneho v rocence, kdy vymena pameti zpusobovala ruseni na sbernici mikropocitace, pamet byla pripojena primo na vodice interni sbernice / procesoru)
- reseni umoznuje minimalistickou delku programovaci rutiny
Postup uvedeni programatoru MHB8708 do provozu:
- nastaveni propojek dle zvolene varianty, viz prilozene obrazky (levy adresace dle Rocenka, pravy s vyuzitim pridavne RAM pameti)
- pripojeni ovladaciho bitu (pinu) volneho portu B IO10, tedy pokud nemate upravu s propojenim pres systemovy konektor K2
- pripojeni programovaciho napeti 25V
Pak uz jenom vkladate EPROM pameti, nahravate pozadovany obsah a spoustite prislusne programy v dodane ROM/EPROM (programuj, pouze verifikuj, pouze kontroluj smazani).
Vsechny programy jsou dodavany i ve zdrojovem kodu (v assembleru jak pro 8080 tak pro Z80). Soucasna programovaci rutina optimalizuje pocet programovacich cyklu dle chovani EPROM.
Naprogramovani jedne pameti MHB8708 bezne trva do 95 sekund. Nektere pameti mohou byt tvrdsi, takze se cas pak muze prodlouzit.
Doporuceni z praxe:
- pokud programujete vice pameti najednou, je vhodne umistit pres mikropocitac PMI-80, presneji pod patici s nulovou silou teto karty, pomocny ochranny kryt, aby vam pameti nepadaly primo na mikropocitac (obcas se to muze povest)
- pokud konci programovani s chybou, zkontrolujte nejdrive propojky na karte, dale programovaci napeti 25V a pokud stale programovani neprochazi, zkontrolujte si napeti na napajeci vetvi -5V.
Zvlaste, pokud vyuzivate menice napeti (konvertory napeti typu TL7660), muzete byt prekvapeni nizkym napetim po pripojeni pameti MHB8708.
Siroce konfigurovatelne rozsirovani mikropocitace o RAM, ROM (EPROM)
Karta obsahuje celkem dve patice DIL28. Standardni patice DIL28 je urcena pro dlouhodobe umisteni pameti, naopak patice s nulovou silou DIL28 je idealni pro caste vymeny pameti.
Pomoci konfiguracnich pinu umoznite v obou paticich:
- umistit 24 vyvodove nebo 28 vyvodove pameti
- umistit pameti ROM/EPROM nebo RAM
- u pameti RAM muzete odpojit signal WRITE a tim nastavit rezim Read Only
- sirokou adresni konfiguraci dle moznosti mikropocitace PMI-80 (viz dale popis adresace)
Pouze patici s nulovou silou muzete navic:
- konfigurovat pro pameti s napajenim +5V, +12V a -5V (typicky pameti MHB8708/2708)
- odpovidajicim zpusobem pripojit na modul generovani programovacich impulzu a tim se stane patici na programovani pameti MHB87078/2708
Pouze standardni patici muzete navic:
- pouzit pro zalohovanou pamet, pokud pripojite externi 3V baterii na prislusne piny
Do patic je mozne osadit pameti o velikosti 1KB az 32KB. Napriklad pameti EPROM 2716, 2732, 2764, 27128, 27256 a podobne.
Do patice s nulovou silou muzete navic osadit MHB8708/8608. Co se tyka pameti RAM, jedna se prevazne o 6116, 6264, 62256 a obdobne.
Teoreticky lze osadit i EPROM 27512 (64KB), ale je mozne ji pro mikropocitac vyuzit pouze jako prepinanou 32KB.
Adresni konfiguracni moznosti pro obe patice:
- standardni rozsirujici adresni prostory mikropocitace PMI-80 dle jeho dekoderu adres IO8 (MH3205). Celkem 5 stranek po 1KB (od adresy 0800H, 0C00H, 1000H, 1400H, 1800H). Vyvedeny jsou signaly sbernice oznacene _CS2 az _CS6. Prostory je mozne spojovat, je tedy mozne pomoci jedne pameti RAM nebo EPROM/ROM obsadit cely rozsirujici adresni prostor dle moznosti dekoderu adres mikropocitace. Pokud vyuzijete tuto moznost, vzdy se vyuzije maximalne 5KB osazene pameti.
- linearni adresace pomoci adresnich signalu A14 a A15 (soucasti karty je i jeden volny invertor), takze je mozne adresovat jednu 32KB pamet od adresy 8000H az FFFFH ( CS=NOT(A15) )
- adresace pro programovani MHB8708 odpovidajici dle vyse uvedene Rocence (zapis/programovani pameti od adresy 2000H a cteni verifikace pameti od adresy 0C00H coz je standardni _CS3). Adresa 2000H je velice vhodne zvolena, nebot adresovy signal A13 neni pro dekodovani standardnich adres vyuzit, cimz se cely prostor 0000H-1FFFH zrcadli na adresy 2000H az 3FFFH a naopak. Zapis tedy na adresu 2000H, respektive 0000H nic nezpusobi, nebot na teto adrese je standardne ROM se zakladnim monitorem mikropocitace PMI-80
Moje oblibena konfigurace je, kdyz cely prostor od 0000H do FFFFH pokryvaji dve 32KB RAM pameti, pricemz pamet od 0000H do 7FFFH je zalohovana baterii a musi mit od adresy 0000H nakopirovany puvodni, nebo pozmeneny, nebo novy monitor mikropocitace. Jenom doplnuji, ze staticka RAM 61512 (64KB), je uz v DIL32 pouzdru, proto ji nemuzete pouzit.
Nasleduji typicke konfigurace s obrazky, kde je videt propojeni konfiguracnich pinu pro danou konfiguraci.
Univerzalni vyvojova cast vcetne pajeciho pole
Karta je pripravena na pripadne rozsireni (bastleni), kdy soucastky je mozne primo umistit na univerzalni pajeci pole desky, nebo pripadne na samostatny rozsirujici modul, ktery lze navrhnout takovym zpusobem, aby se zasunul do prislusnych pinu desky.
Pro tyto ucely jsou na karte vyvedeny nasledujici piny (standardne je osazeno cca 190 pinu):
- napajeci vodice GND, +5V, (+12V, -5V nejsou standardne osazeny z bezpecnostnich duvodu)
- adresove vodice A0 az A15 oddelene pomoci obousmernych budicu/vysilacu (74LS245)
- datove vodice D0 az D7 oddelene pomoci obousmernych budicu/vysilacu (74LS245)
- ridici signaly interni sbernice mikropocitace (RES, MR, MW, IOR, IOW, INT_A, INT_E, INT_EX, RDYN, WAIT, HLDA, HOLD, STSTB, OSC, FI2)
- vystupni signaly dekoderu adres CS2, CS3, CS4, CS5, CS6
- pro pripad, kdy jsou na zakladni desce propojeny volne horni piny portu B IO10 (MHB8255A) se systemovym konektorem K2 (volne piny K2 konektoru 24,26,30,32), jsou vyvedeny na karte piny oznacene PB4, PB5, PB6, PB7
Univerzalni pajeci pole je v konfiguraci 3 rady po 20 propojkach s 3 dirami (prokov) v rastru 2,54 mm umoznuje umistit cipy az do velikosti DIL40. Dle me zkusenosti nejlepsi univerzalni pajeci pole pro cislicovou techniku.