Jste zde

SIMULÁTOR EPROM

Kompletní stavební dokumentace se zdrojovými kódy a podrobným článkem osvětlující tuto

problematiku.

Simulátor EPROM je přípravek, bez něhož prakticky nelze vyvíjet a odlaďovat téměř žádné zařízení, v němž je obsažen mikroprocesor řízený programem z externí paměti.

Jedna z možností vývoje a odlaďování softwaru v mikroprocesorových aplikacích je pomocí neustálého vyměňování programovatelného obvodu (EEPROM, FLASH EPROM nebo ZeroPower RAM) mezi paticí programátoru a pativcí v odlaďovaném zařízení. Další možností je použití speciální vývojové desky, která kromě paměti SRAM obsahuje navíc ještě pevnou paměť s "monitorovacím" programem, který zajišťuje download (natažení) programu z osobního počítače po některém z rozhraní (nejčastěji RS 232) a jeho uložení do paměti SRAM. Toto zdánlivě elegantní řešení však velmi citelně zmenšuje okruh použití, neboť zákaznický program nemůže díky přítomnosti kontrolního komunikačního rozhraní toto rozhraní plně používat, přistupovat k celému paměťovému prostoru kvůli užití paměti s "monitorovacím programem". Naproti tomu má však systém práce s monitorem jednu výhodu. Kdykoli vám může zjistit obsah jakéhokoliv registru, adresy v paměti atd.
Užití simulátoru usnadňuje uživateli např. jakékoli opravy a úpravy softwaru v již hotovém zařízení. Není třeba provádět výměnu základní desky za odlaďovací desku, jak by tomu bylo při použití předešlé varianty, stačí vyjmout z patice EPROM s dosavadním programem, připojit SIMULÁTOR EPROM a a např. s použitím notebooku najít a analyzovat chybu. Potom stačí naprogramovat do EPROM novou verzi softwaru v programátoru EPROM, zasunout jí do patice a oprava je hotova. Vývoj se simulátorem eprom se může z počátku zdát složitější a dražší, ale univerzalita a flexibilita tohoto zařízení z něj činí velmi dobrou investici.
 

Jak pracuje SIMULÁTOR EPROM a k čemu vlastně je ?

 

Jakékoli zařízení, řízené procesorem potřebuje program, který může být uložen v procesoru samotném, nebo ve vnější paměti programu. První variantou se budu podrobně zabývat později. Pokud bude program uložen v externí programové paměti, je nutné, aby byl tento obvod snadno vyměnitelný, z důvodu upgradů softwaru. Nejčastěji se používá paměť typu EPROM nebo Flash EPROM v patici. SIMULÁTORu EPROM je zařízení, které pouze nasuneme do patice, a ono se chová stejně jako EPROM. Povedou z něj ale navíc vodiče do osobního počítače, z něhož je možno nahrát do této simulované paměti uživatelský program (samozřejmě ve formátu .BIN nebo .HEX, což odpovídá souboru, který by se za normálních okolností vypaloval do EPROM) a mikropočítač bude pracovat podle tohoto programu. Ke zvýšení pohodlí je výhodné, aby simulátor EPROM obsahoval i resetovací výstup, jímž je možné mikropočítač zresetovat po nahrání nové verze programu a ten se tím hned spustí. 

Tento systém samozřejmě nemůže a ani nechce konkurovat simulátorům celého procesoru, které umožnují i simulovat interní paměť programu, zjišťovat v reálném čase obsahy jednotlivých registrů procesoru, časování, číst porty atd..... a to vše bez jakýchkoli omezení. 
 

Schéma zapojení :

Funkce zapojení :

 

Na paralelní port je připojen 8bitový klopný obvod typu D (34374), reagující na vzestupnou hranu a známá obousměrná vstupně/výstupní brána 8255. Vývod ovládající zápis do 74374 je připojen na jednoduchou negující zpětnou vazbu, která tvaruje impuls pro zápis do 74374 pomocí R2 a C1. Tato zpětná vazba tvoří spolu se zakončovacími odpory vedení ochranu proti nežádoucím přeslechům impulsů, které často vznikají v krouceném nestíněném kabelu. Zárověn funguje jako kontrola toho, že simulátor eprom je připojen na paralelním portu. Ovládací vývody 8255 (/RD, A0, A1) jsou připojeny na zbývající piny LPT. Výstupy 74374 slouží pro ovládání celého simulátoru EPROM. Zvláštní pozornost si zaslouží pouze výstup RESET, který resetuje po downloadu programu mikropočítač a výstup LED, který je využit jednak pro generování informace o stavu simulátoru, jednak jako případný zdroj hodinových impulzů. 

Po inicializaci a detekci SIMULÁTORu EPROM na LPT se nastaví pin reset do aktivní úrovně, uvede oddělovače sběrnic do vysokého stavu, čímž odpojí SRAM v simulátoru od vnějších obvodů. Dále připraví prostřednictvím 8255 na jejích výstupních portech PB a PC adresu zapisovaných dat, uvede SRAM do zapisovacího režimu a zapíše do SRAM data z portu PA. Tímto algoritmem postupně naplní celou paměť SRAM simulovaným programem. 

V závěrečné fázi uvede všechny tři brány obvodu 8255 do režimu čtení dat. Datové bity se díky tomu chovají, jako by byly ve stavu vysoké impedance. Připojením datových oddělovačů 74244 se paměť SRAM připojí k datům a adresám z aplikace, a okolní logika zajistí, že se tváří jako paměť EPROM. 

Oddělovač datových vodičů je zárověň používán k uvedení do 3. stavu v případě odpojení simulované EPROM pomocí pinů na EPROM /CE a /OE. Po této operaci SIMULÁTOR EPROM obsahuje všechna potřebná data, je uvolněna resetovací úroveň a mikropočítač může spustit program.... Simulátor EPROM byl navržen z "klasických" součástek, které jsou snadno dostupné i na např. starých 286-tkových motherboardech a každý je má doma v tzv. "šuplíkových zásobách". 

Vstup A15_IN je potřeba VŽDY mít spojen jumperem pokud nepoužíváte simulátor v 64 kb provozu. (Na úplně poslední verzi desky je ze strany spojů tenký spoj, zajišťující defaultní propojení těchto pinů, v případě opomenutí jumperu. Pro použití celých 64kB SRAM, je potom třeba tento spoj přerušit.)

Napájení aplikace zařízení nebyl zrovna banální problém. Aplikaci bylo nutno chránit proti přepětí a opačné polaritě za minimálního úbytku napětí. Toho dosahuji pomocí pojistky a zenerovy diody. Samotný simulátor eprom spotřebovává zanedbatelný proud, ale díky topologii zapojení napájím většinou aplikaci s mikroprocesorem z simulátoru buď jenom přes EPROM (do odběru cca 100 mA) nebo ještě speciálním kablíkem. Napájecí konektor je vyveden pod paticí pro výstupní kabel. 


Patice EPROM

Pokud oživujete častěji různé mikropočítače, je nutno patici, která simujuje  eprom často přendavat.  V aplikaci používám propojení pomocí plochého kabelu a konektoru označovaného jako KK28025 v katalogu GM. Tyto samořezné konektory, které mechanicky odpovídají integrovanému obvodu v široké DIL 28, se však vyrábějí ve dvou verzích. Jedna je z černého plastu, vývody jsou ploché, pozlacené, druhá je šedivá, vývody jsou tenčí, patice má na plochém plastovém krytu číslování. Problém černé samořezné objímky je v tom, že její vývody, ač pozlacené není možno zastrčit do precizní patice. 
Každý kdo někdy dělal zařízení, které mělo fungovat v trochu víc problematickém prostředí také ví, že běžné patice jsou značným zdrojem poruch a proto se v profi zařízeních používají výhradně precizní patice. Vzhledem k tomu doporučuji dát si tu práci a sehnat lepší samořeznou objímku v šedivém provedení. Ušetříte si tak potom mnoho problémů. 

 

Postup pro oživení:

 

Zařízení by mělo fungovat na první pokus. Žádné složité oživování není potřeba, pokud však simulátor nereaguje je několik možností. 

1. Občas bývají od výroby zkratovány plošky umožňující přímé připojení konektoru CANNON na kabel, protože se dotýkají kraje plošného spoje, a tam jsou propojeny tenkým vodivým okrajem, skrytým pod maskou. 

2. Nezapomněli jste osadit jumper na vstup A15 ????? - Jumper musí být osazen VŽDY pokud nevyužíváte celých 64 kB. Pokud tuto funkci nechcete využívat , doporučuji osadit rovnou drátovou propojku. 

3. Program hlásí že simulátor není připojen : Chyba může nastat vlivem vašeho paralelního portu. Využili jsme sice při konstrukci simulátoru všech našich zkušeností (převážně otřesných) s paralelním portem, ale přesto může existovat malé procento portů, na nichž nebude fungovat. Test, zda je simulátor připojen se provádí pouze negováním signálu na pinu /ERROR ze signálu /AutoFeed na LPT. K tomu je zapotřebí pouze invertoru (vytvořeného ze 7402) a napájecího napětí, z němž bývá nejvíce chyb. Pokud funguje napájení i invertor ale program stále nemůže nalézt simulátor, zkuste zkontrolovat spoje zda nemají proti vlasové zkratům vzniklé ve výrobě plošného spoje a při jeho cínování. 

4. Program hlásí, že všechno je v pořádku, ale patice EPROM obsahuje pouze samá "FF". Pokud LED svítí jak má, (= po spuštění programu zhasne a po nahrání dat do paměti se opět rozsvítí) bude chyba buď v nedokonalé kabeláži, nebo v nastavovacích vodičích. Zkontrolujte proto podle schématu úrovně na ovládacích pinech. Speciálně vývody /CS, /OE, /WE 61256 a piny 1 jednotlivých 74244. 

Další teoretické chyby nemá smysl popisovat, pokud nastanou nějaké další komplikace, doporučuji najít je pomocí krokování zdrojového kódu v PASCALu nebo C++ a oměřování úrovní logickou sondou. 

 

Připravované a podporované rozšíření :

 

Do simulátoru je možno připojit 32 kB SRAM, pokud by však bylo potřeba, je možné využít pin NEXT_RAM a připojit další obvod SRAM 32 kB paralelně k předchozímu. Pouze vývod pro Chip Select druhé paměti spojíme s pinem NEXT_RAM. tím lze zdvojnásobit kapacitu simulované paměti. Poslední adresový vodič pro patici EPROM je potom k dispozici na pinu u odporu R4. Ten je třeba mít VŽDY, POKUD NENÍ VYUŽÍVÁNO 64 kB, SPOJENÝ JUMPEREM.!!!! Hardware simulátoru počítá s tím, že ve spojení s PLNĚ STATICKÝM PROCESOREM bude možno krokovat instrukce a tím odlaďovat špatné HW zapojení testovaného mikrořadiče. Ve speciálním režimu se připojí pin LED na hodinový vstup procesoru a na PC se budou krokovat jednotlivé instrukce. Ovládací program na PC potom může obsahovat i disassembler pro jednotlivé procesory a vypisovat obsahy všech registrů, stavy sběrnic, případných standardních periférií atd..... Plně statickým procesorem se však nemyslí např 80C31 neboť ten vyžaduje jako nejmenší možný kmitočet přibližně 32 kHz. Jako jediné skutečně statické procesory mezi XX51 řadou se nám osvědčily pouze obvody firmy ATMEL 89C5x. SIMULÁTOR EPROM bude možno s malými úpravami využít také jako standardní SRAM, kterou bude možno číst z PC. Toto rozšíření však bude možno využít pouze ve spojení s rozšířenými paralelními porty standardu EPP nebo ECP z důvodu obousměrnosti datových vodičů. 
 

Dodatečná technická poznámka - 15.10.2002

Jestlize bude na vyvodu 9 IC2 (74374) - odpojeni datove sbernice logicka nula a zaroven bude na vystupu hradla 4 IC6B (7402) logicka jednicka, zde dojde k ne moc osetrenemu stavu. Jako reseni lze pripojit odpor R5 na Vcc misto GND a vystup hradla 4 IC6B pres diodu katodou k hradlu do stejneho bodu jako je. 

Zkušenosti a ochrana konstrukce:

Startující Windows 95 posílají inicializační sekvenci na tiskárnu, která takto zapojený SIMULÁTOR EPROM zresetuje a uvede data ve SRAM do nedefinovatelného stavu. 

Konstrukce je cháněna pojistkou a diodou proti přepólování. Pokud použijete zenerovu diodu např. 6V8, chrání pojistka také proti přepětí. Ochrana však funguje pouze u vstupní svorky napájení, budete-li simulátor napájet z mikropočítače (což je naprosto běžný postup), ochrana nefunguje. Bylo by tedy výhodné zvyknout si buď napájet mikropočítač ze simulátoru a tím pádem i přes pojistku (konstrukce obsahuje jak podporu napájení jak přes datový kabel, tak další svorky pro připojení napájení mikropočítače ) nebo věnovat zvýšenou pozornost napájecímu napětí. Z vlastní zkušenosti vím, kolik problémů může napájení způsobit. Velmi nebezpečnou chybou je také připojení PC a mikropočítače na dvě různé fáze. Velmi často se nemusí jednat ani o dvě fáze, bohužel stačí jedna fáze, ale připojení na koncích dvou různých větví. Již jsem díky své domácí architektuře (pracovní stůl je v jiném rohu místnosti než PC a tím i na jiné větvi téže fáze) zničil dva paralelní porty. Nejjistější je proto připojení na jednu zásuvku a nejlépe napájet odlaďovaný mikropočítač přímo na PC zdroji. Minimálně 0,5 až 2 A na 5 V lze bez nejmenšího problému odebrat. Navíc je jištěn proti zkratu. Při zkratu se zdroj odpojí a po asi 250 mS zkusí obnovit napětí. Odpojíte-li zařízení nic se neděje. Několikrát se mi stalo, že mi dokonce ani nespadly Windows 95 (Což svědčí o velkých kapacitách pro filtrování napájení na mém motherboardu). 

Simulování EPROM v patici programátoru EPROM je také možné. Problémy však mohou nastat u velmi univerzálních programátorů, které mají programovatelný každý pin zvlášť. Na vnitřních obvodech mohou odpory, přes kterů může protékat proud,kterým je napájem simulátor EPROM. Pro podobné pokusy je tedy použít pojistku do cca 100 mA a pin 1 je nutné připojit přes diodu, stejně jako pin Vcc. (Toto doplnění lze snadno realizovat pomocí dvou patic s propojenými vývody a dvěma diodami. 

 


Veškeré obrázky na WWW stránkách jsou v příliš malém rozličení (75 nebo 150 DPI ) Plných 300 DPI je dodrženo u souborů GIF vytvořených přímo pro tisk na tiskárně 300 DPI. Tyto soubory najdete v přilozeném archivu se zdrojovám kédem a plnou dokumentací.


Plošný spoj

Strana spojů 

Strana součástek 

Osazovací plán 





Seznam součástek : 
 
 

Part 

Value

Package

Library

CON1 LPT_PC CANN25 Konector Cannon 25  - samec do plošného spoje 
IC1  8255  DIL40   TTL 74XXX 
IC2  74374  DIL20   TTL 74XXX 
IC3 74244  DIL20   TTL 74XXX 
IC4  74244  DIL20   TTL 74XXX 
IC5  74244  DIL20   TTL 74XXX 
IC6  7402  DIL14   TTL 74XXX 
SRAM  61256  DIL28-CH  SRAM MEMORY (oboje provedení) 
LED/CLK  CON04X1  CON04X1  Pájecí špička 4 x 1 
NEXT_RAM  CON2  CON2  Pájecí špička 2 x 1 
PATICE  27256  DIL28  Patice DIL 28 nebo Pájecí špičky 17 x 2 
POWER  CON2  CON2  Pájecí špička 2 x 1 
POWER1  CON2  CON2  Pájecí špička 2 x 1 
RESET  RESET  CON03X1  Pájecí špička 3 x 1 
A15_IN  CON2  CON2  Pájecí špička 2 x 1 
      Celkem 15x1 + případně 17 x 2 
R2  1k  R10  Odpor z E12 
R3  4k7  R10  Odpor z E12 
R4  1k  R7,5  Odpor z E12 
R5  4k7  R7,5  Odpor z E12 
R_LED  220  R7,5  Odpor z E12 
ZB1  4k7  RZEBRIK  Odporový žebříček z E12 
ZB2  4k7  RZEBRIK  Odporový žebříček z E12 
C1  220p  C5  Kondenzátor z E12 
C2  10 uF  E2,5  Kondenzátor z E12 
C_pwr1 100 uF E2,5 Kondenzátor z E12
C_pwr2 100 nF C2,5  Kondenzátor z E12
C_pwr3 100nF C2,5 Kondenzátor z E12
C_pwr4 10uF E2,5 Kondenzátor z E12
C_pwr5  100 nF  C5  Kondenzátor z E12 
C_pwr6 10 uF E2,5 Kondenzátor z E12
C_pwr7 100 nF C2,5 Kondenzátor z E12
D1  D7,5  D7,5  Si Dioda např. KA 261 
ZD1  6V8 nebo 5V6 D7,5  Zenerova dioda 6V8 nebo 5V6
LED zelená 5 mm   Led dioda 5 mm
P_FUSE    KS20SW  Pojistkové pouzdro (označení z GM) 
FUSE  1A  Skleněná  Pojistka 
Patice DIL 28 Precizní    
2 x konektor na plochý kabel     Raději šedivou verzi - viz text
plochý kabel 28 žil 0,5 m  



Jako paměť lze použít CACHE z počítače. Podle mých zkušeností jsou obvody 61256 a 62256 téměř totožné. Liší se pouze spotřebou a rychlostí, ale ani jedním nejsme v této kontrukci limitováni. 

Na desce je připaven výstupní konektor pro EPROM jak v provedení druhé široké patice DIL-28, což je nečastější, tak pájecí špička 2 x 13 pro PFL. V případě použití pájecích špiček je však nutné krajní - napájecí vodiče připojit samostatným konektorem, protože PFL se nevyrábí pro 28 pinů. 

Deska s pošnými spoji je plně funkční. 

Desku si pod kódem SE32 můžete výrazně levněji a rychleji objednat ve firmě
SEMACH. Kontakt zde

Součástky na komplet stojí v GM cca 300 Kč + 8255 (80 Kč) + plochý kabel. 

Stejně jako je tomu v případě programátoru ATMELů. Software v Pascalu a C pro Linux včetně zdrojového kódu, výkresy plošného spoje ve formátu GIF pro 300 DPI jsou k dispozici zde komprimovány v samorozbalovacím archivu pro DOS. : SimEpDOC.EXE 
Zde je k dispozici soubor pro výrobu plošného spoje pro EAGLE 2.6 - pcb_doc.zip  - utilitu pro tisk lze získat na www.cadsoft.de

Pro případné zájemce o práci s jednočipovými mikroprocesory uvádím odkaz na svůj článek o kompilování souborů, kde je možno získat další potřebné informace  Kompilování z .asm do .bin souboru.

Pokud si chcete tuto dokumentaci vytisknout, zde je k dispozici .pdf soubor pro publikování na papíře -  simeprom.pdf


Na vaše faktické i subjektivní připomínky se těším na adrese : Rehak@hw.cz
Hodnocení článku: