Preliminary!

PROG 2708

- jednoduchý programátor Eprom 2708 (8708) s jednočipem x51



Paměť Eprom typu 2708 (u nás vyráběná Teslou pod označením MHB 8708) o kapacitě 1024 x 8 bitů patří mezi první komerčně vyráběné paměti typu Eprom vůbec a položila základ řadě Eprom pamětí 27xx. S touto řadou má tedy kompatibilní rozložení adresových, datových i řídících pinů. Ovšem na rozdíl od pozdějších obvodů řady 27xx ještě nevystačila s jediným napájecím napětím +5V a potřebuje ještě -5V a +12V. K provozu paměti tedy potřebujeme zdroj +5V, -5V a +12V, ovšem při potřebě programování potřebujeme ještě +26V. Potřeba těchto 4 napájecích napětí je asi nejpádnějším důvodem, proč tato paměť není podporována drtivou většinou komerčních programátorů pamětí. Dalším důvodem je pochopitelně její stáří a samotný fakt, že k jejímu systematickému využívání již dávno není důvod. Paměť má de facto smysl používat pouze v systémech s procesorem 8080, kde potřebná napájecí napětí jsou a její používáníé je v současné době omezeno jen na opravy a repase historických počítačů, či stavby jejich replik. Jenžo to je pro nás, nostalgiky, dostatečně pádný důvod. Přestože si můžeme postavit třeba repliku PMI-80 a osadit ji Eprom 2716, PMIčko bez 8708 prostě není to pravé PMIčko:-) Proto jsem se programováním těchto pamětí začal zabývat podrobněji.

Způsob programování i programovací napětí se liší od pozdějších členů řady 27xx. Novější obvody žady 27xx sice také nemají úplně jednotný předpis programování, ani programovací napětí, ale vykazují vždy podobné znaky. 2708 se liší mnohem více. Komerčních programátorů, které 2708 umějí přímo je velmi málo a jedná se o drahé profesionální výrobky. Dále existuje skupina programátorů, které na typ 2708 potřebují speciální (a často také velmi drahý) adaptér. A pak je tu velká skupina programátorů, které už ji neřeší vůbec. Já si pro její programování nejprve postavil jednoduchý přípravek pro své PMI-80. Osvědčil se a naprogramoval jich spoustu. Jenže když jsem sehnal větší množství těchto pamětí a rozhodl se je nabízet k plošňákům na repliku PMI-80 M16, bylo jasné, že to bude chtít něco jednoduššího. A jelikož jsem si již delší čas pohrával s myšlenkou vytvořit si pro různé speciální programovatelné obvody vždy jednoduchý jednoúčelový programátor s jednočipem, postavil jsem si PROG 2708.

Ještě ke způsobu programování 2708. Paměť se programuje tak, že na každé adrese se aplikuje programovací impuls 26V s délkou 0,1 - 1 milisekundy. Ovšem to nestačí. Celkově je nutné aby délka programovacího impulsu pro každou adresu byla minimálně 100 ms. Je tedy nutné programovací impuls opakovat. Ovšem zde je druhý háček: nesmí se opakovat bezprostředně po sobě! Tedy v praxi vypadá programování tak, že se postupně naprogramují adresy 0 - 1023 požadovanými daty tak, že na každé adrese se použije puls trvající těch 0,1 - 1 ms. To celé se poté opakuje v cyklu tak dlouho, až celková doba pulsu pro jednu adresu dosáhne požadovaných 100 ms. Příklad: zvolíme délku pulsu 0,5 ms - paměť musíme programovat minimálně 200x! Vždy je ideální paměť programovat celou, tedy všech 1024 buněk. Pokud je potřeba paměť naplnit jen z části, zbývající data se programují jako FFh. Paměť je pak možné doprogramovat tak, že se opět programuje celá a na již zapsanou část se aplikuje již naprogramovaný vzor. Toto jsem vyčetl z datasheetu Intelu. Vyzkoušel jsem to a funguje to.

Pro konstrukci programátoru je klíčové zapojení spínače programovacího napětí. Prošel jsem si několik zapojení, která jsem nalezl v literatuře a nakonec jsem to zapojil takto:

Tady mělo být schéma, které i přes svou primitivnost nemá kdo nakreslit:-)

RC článek na výstupu spínače upravuje náběžnou i sestupnou hranu pulsu dle předpisu v datasheetu. Hrany totiž nemají být příliš strmé a výrobce uvádí příslušné časy, kterým vyhovují uvedené hodnoty součástek. Tento spínač jsem nalezl v článku popisujícím programovací přípravek pro 2708 k jednodeskáči Motorola D2. Tranzistor na vstupu má za úkol invertovat vstupní signál tak, aby spínač nebyl aktivován při log. 1 na vstupu, což je stav, do kterého se automaticky překlápějí výstupy jednočipu 8051 po Resetu. Při použití spínače například s obvodem 8255, je nutné tento tranzistor vypustit, protože 8255 své výstupy překlápí nejen při Resetu, ale i v okamžiku zápisu řídícího slova. Reakce spínače na "tu správnou" úroveň má za úkol eliminovat nechtěné přepisy dat.

Dalším spínačem, který je pro programování 2708 nutný je spínač 0 - 5 - 12V pro ovládání vstupu /CS. Jenže praxe ukázala, že tento spínač lze zjednodušit jen na 0 - 12V. Paměť je na sběrnici programátoru sama a navíc před vyjmutím paměti z patice programátor celý vypnu, takže není nutné uvádět paměť do 3. stavu. Spínač navíc nemusí být "výkonový", a proto vyhovuje toto jednoduché zapojení:

Tady mělo být schéma, které i přes svou primitivnost nemá kdo nakreslit:-)

Řízení zápisu dat jsem svěřil klasickému jednočipu 8051 v modernějším provedení s Flash pamětí a ISP programováním bez nutnosti jej tahat z patice ven. Konkrétně používám Atmel 89S8253, který navíc diponuje i 2KB EEPROM pro data je tak tak možné programátor vybavit i funkcí klonování 2708, bez nutnosti použít k tomu PC. Obsah klonované 2708 se nejprve načte do EEPROM odkud je možné jej zapisovat do dalších čistých 2708. Ale jinak je možné použít v programátoru opravdu libovolný 8051/52 kompatibilní procesor v pouzdru DIP 40. Program je psán tak, že v režimu bez klonování, využívá jen základní vlastnosti 8051.

Programátor se ovládá pomocí 4 tlačítek a 2 jumperů. Tlačítko BLANK provede test paměti na čistotu. Ověří, že všechny buňky jsou ve stavu FFh (díky pullupům testem projde i prázdná patice:-)). Tlačítko VERIFY porovná obsah paměti 2708 s daty uloženými ve Flash či EEPROM paměti jednočipu. Tlačítko PROG zapíše požadovaná data (uložená ve Flash či EEPROM jednočipu) do paměti 2708. Předtím provede test čistoty a následně i verifikaci. Tlačítko COPY zkopíruje obsah 2708 do jedné ze dvou bank EEPROM v případě, že je použit 89S8253.

Data určená k zapsání do 2708 musejí být předem nahrána do Flash či EEPROM paměti jednočipu. Aby bylo možné mít nachystáno více obrazů Eprom, vytvořil jsem systém tzv. bank. V programové paměti jednočipu (zde Flash) mám 4 banky á 1 KB, v EEPROM u 89S8253 pak další 2 banky. Celkem tedy mám neustále k dispozici 6 různých obsahů pro Eprom 2708. Jejich volbu provádím jumpery (cílem byla jednoduchost a nikoliv komfort ovládání). Je ale jasné, že by se s tím dalo ještě pracovat. Klasická 8051 má k dispozici jen 4KB programové paměti a je zde možné vytvořit jen 3 banky. V 8052 můžeme díky jeho 8KB programové paměti pracovat až se 7 bankami a u třeba u toho 82S8253 s jeho 12KB Flash se dá použít až 11 bank (+2 v EEPROM).

Tady měl být program, který je bez schématu na hov...

Za účelem zjednodušení vkládání dat určených pro zápis do 2708 do programového kódu pro x51 mi Martin Lukášek vytvořil jednoduchý prográmek, který zkonvertuje vstupní binární soubor na textový INCLUDE soubor, kde jsou data pro Eprom zapsána jako programové konstanty "DB 0XXh, 0YYh,...". Tento soubor (s příponou INC) je pak možné přilinkovat ke zdrojáku pro x51 příkazem INCLUDE současně s nastavením ORG adresy banky. Jiné úpravy ve zdrojáku již nejsou nutné. Celý program pro x51 pak stačí přeložit a (ideálně po ISP) zapsat do jednočipu. Je to jen o maličko nepohodlnější, než práce s klasickým programátorem. Ovládací softvare pro x51 i konverzní program BIN2INC je v přiloženém ZIPu:


PROG 2708 - programátor Eprom 2708
PROG 2708
PROG 2708 - programátor Eprom 2708
PROG 2708 a různé EPROM 2708

Musím říci, že PROG 2708 se plně osvědčil. Naprogramování paměti (třeba pro to PMI-80) je naprostou hračkou. Naprogramoval již desítky pamětí různých výrobců a provedení, zejména: Tesla MHB 8708 (kulaté i hranaté okénko), ruské K573RF1 (také kulaté i hranaté okénko), Intel D2708 a National Semiconductor MM2708Q (zlacené i normální vývody). To vše bez jediného problému. Proto jsem se rozhodl postavit podobný programátor, ale univerzálněji, abych si mohl snadno připravit programátor pro různé staré a nestandardní obvody. Přístroj s názvem POLOPROG je popsán na samostatné stránce.


různé EPROM 2708
různé EPROM 2708


Eprom 2758 - vylepšená 2708

Ještě malá odbočka k typu 2758, také s kapacitou 1024 x 8 bitů. Paměť Eprom 2758 byla nástupkyní původní 2708, ale používala již jen klasické napájení +5V. Rozložení vývodů a způsob progamování (Vpp 25V, jediný puls 50ms) je zcela shodný s 2KB pamětí 2716 a typ 2758 lze programovat jako 2716 (s respektováním poloviční kapacity). Paměť 2758 se moc neprosadila a patří mezi vzácnější kousky. Byla převálcována právě typem 2716. Nicméně jsem jeden testovací kousek získal. Přidal jsem volbu 2758 (s respektováním její kapacity) do Poloprogu a úspěšně otestoval.


Update 1 - zdroj programovacího napětí pro 2708

Jelikož nejsem příznivcem měničů napětí a také se mi nechtělo pokaždé ladit programovací napětí na laboratorním zdroji, postavil jsem si k programátoru jednoúčelový zdroj programovacího napětí. Jedná se o klasický zdroj s malým trafíčkem a stabilizátorem 7824, který je "podepřený" několika diodami 1N4148, aby výstupní napětí naprázdno bylo cca 26.5V (počítá se s úbytkem na spínacím trandu programátoru). Zdroj je opravdu kapesní a je vestavěn do montážní krabičky pro klasickou síťovou dvojzázuvku s víčkem. Naprogramoval desítky a desítky pamětí...


Update 2 - SIMPROG 2708

Jelikož je uživatelský komfort uvedeného programátoru mizerný, navrhl jsem vylepšenou verzi s LCD displejem (16x2 znaky, HD44780). Uživatelský komfort by se díky vhodnému menu výrazně zlepšil. Také jsem navrhl a úspěšně vyzkoušel nahrávání dat, určených k naprogramování do 2708, z PC pomocí sériového kanálu přímo do EEPROM jednočipu 89S8253. Systém bank by zůstal zachovaný, jen by se snížil jejich počet, protože firmware by zabíral více místa. Jinak by programátor zůstal stále je jednočipový (ten AT89S8253) a primitivní. Jenže do stavby ověřovacího vzorku už se mi nějak nechce...


RET



Odladěno na MS IE 8.0 a Firefoxu při rozlišení min. 1024 x 768 pixelů
www.NOSTALCOMP.cz    2010  -  2017