SBC6502 - 33 - Programátor PROM 74188. PROM 74188 programmer. Part 1-4.

By Administrator at December 17, 2019 16:42
Filed Under: SBC6502

PROM 74188 burner.

 

 

Tak som sa predsa len pustil do tohoto projektu - programátor pre pamäte PROM 74188, ktorý spolupracuje z SBC6502 Erika0. Síce mi hodne dlho trvalo než som sa do toho pustil (na druhú stranu - mal som čas si poriadne premyslieť čo od takéhoto projektu očakávam), stavba a celá realizácia (vrátane napísania programového vybavenia) mi zabrala viacero týždňov. Trúfam si povedať že celé zapojenie je vlastná konštrukcia. Dosť mi dalo zabrať programové vybavenie, keď som v ňom urobil jednu vec a dotiahol ju do konca tak mi hneď napadlo že ešte by tam bolo dobré zabudovať ďalší nápad atď., a nejako mi to stále bobtnalo a bobtnalo ... až som si povedal dosť ! a teraz je to už v stave na uvoľnenie.

 

Pamäť PROM 74188 je síce kapacitou hodne, hodne malá (má púhych 32 Byte), ale výborne sa hodí na použitie napríklad ako konečný automat, dekodér adries, dekodér pre sedemsegmentovky zo spoločnou anódou, alebo katódou, alebo pekný BCD dekodér z plným hexa výstupom zobrazenia (v jednom dekodéri pri piatich adresách krásne zobrazíte zobrazíte plný rozsah 0÷1Fh na jednej dvojitej sedemsegmentovke) a čo ja viem na čo ešte. Pamäte PROM 74188 sa stále dajú zohnať, pritom nie sú drahé a sem tam sa niečo objaví čo sa do nich naozaj oplatí naprogramovať. Pred tými rokmi v našich končinách toto bola jediná možnosť ako sa pokúsiť nahradiť vtedy nedostupné GAL čipy (teda samosebou - kombinačná logika nedosahuje možností GAL čipu, ale aj tak sa s tým dalo dosť urobiť - ak niekto vedel čo a ako). Lenže - najprv ste museli PROM 74188 zohnať. A následne si aj postaviť programátor, bez neho to akosi nedávalo zmysel, že áno. Celé to bolo plne v rámci vtedy veľmi zaužívaného (a využívaného) hesla USVS - Urob Si Všetko Sám. (Ešte aj výskumné ústavy si stavali vlastné programátory, pretože oficiálny sa buď nedal kúpiť, alebo jeho cena dosahovala výšky nákupu vtedajšieho osobného automobilu.) Toto bolo pravdepodobne najväčším problémom pre nasadenie týchto PROM pamätí v praxi, inak by boli ešte viac používané. Výhodná je aj krátka prístupová doba, ktorá bola 2x až 3x kratšia ako mala štandartná 150nS EPROM. A pre neznalých - PROM 74188 je jednorázovo programovateľná pamäť, t.j. ak napríklad pri "dlapaní" na ručnom programátore sa pomýlite, tak pokus musíte zopakovať - ale už iba s druhou PROM, pretože tá prvá je už iba na vyhodenie ... a vtedajšia cena PROM 74188 bola všetko iné - len nie ľudová.

 

Definoval som moje požiadavky na programátor PROM 74188:


č. 1 - aby táto doska fungovala (aj keď za cenu istých obmedzení - pre SBC6502 nie je

         k dispozícii príkaz Load a Save) priamo s SBC6502 Erika0

         (ale aj s iným počítačom, tam tieto obmedzenia nie sú)

č. 2 - programátor (jeho doska) sa bude priamo nasadzovať na SBC6502 Erika0

č. 3 - možnosť totálneho odpojenia dosky programátoru od SBC6502 Erika0, teda príde

         k odpojeniu napájania (vypínač +5V a +12V) a tiež všetkých 3 portov 8255 aj pri

         nasadenej doske programátoru (treba použiť DIP spínače)

č. 4 - v zapojení nebudú použité žiadne exotické obvody

č. 5 - pripojenie bude realizované cez čip 8255, teda cez jeho tri 8-bitové brány

         (toto riešenie umožňuje tento hardware pripojiť aj k inému počítaču ktorý má v sebe

      k dispozícii čip 8255 teda je tu možnosť práce programátoru aj s iným počítačom)

č. 6 - príkazy sú realizované priamo pomocou BASICu príkazmi POKE a PEEK

         (programové vybavenie sa dá použiť s každým počítačom ktorý má k dispozícii čip

      8255, len bude potrebná skutočne mierna zmena programového vybavenia)

č. 7 - dôsledné oddelenie čipu 8255 od programovaného čipu 74188

č. 8 - pripojenie a odpájanie napätia čipu pomocou DIP relátka (Full verzia)

č. 9 - indikácia základných stavov pomocou LED (Full verzia)

č.10 - vytvoriť Full a Light verzie, teda plnú verziu a aj "osekanú" verziu

č.11 - pre spomenuté obidve verzie použiť iba jedno programové vybavenie

         (žiadne úpravy programu pre funkčnosť v režime Full alebo Light)

č.12 - pre programátor stačia 2 dostupné napätia +5V a +12V, z 12V sa priamo odvodí

          aj potrebný zdroj +10.5V

č.13 - vyhnúť sa chybám v doteraz uverejnených zapojeniach zdroja 10.5V
č.14 - nech celé programovanie PROM "odmaká" počítač, teda jeho programové vybavenie

          (podstatné zníženie možnosti chyby oproti ručnému "dlapaniu")


 

Takto to vyzeralo na úplnom začiatku, tu ešte ani nebol na doske pripravený konektor J5.

Na ďalšom obrázku je už mimo iného J5 osadený.


 

Tu je základné rozmiestnenie na doske programátoru, potom už len postupne pribúdali ďalšie a ďalšie súčiastky, v základnom prevedení sú tak isto použité 3 kusy DIP prepínačov ktoré umožňujú totálne odpojenie dosky programátoru od všetkých troch portov čipu 8255 bez toho aby bolo potrebné dosku programátoru vyberať z motherboardu SBC6502. Toto bola jedna z mojich požiadaviek, nakoniec ak som vybral DIP spínače tak som mohol pokojne merať na ich pätičkách či dostávam z portov potrebnú odozvu. (Celkom sa to hodilo.) Jediná vec s ktorou sa treba zmieriť je to, že všetky DIP prepínače majú číslovanie v rozmedzí 1÷8, pritom ale robíme s bitmi 0÷7, s tým sa dá žiť, hlavne ak o tom "probléme" vieme. Proste pri základným meraniach pri oživovaní a testoch musíme vedieť na vývodoch prepínačov mierne rotovať zároveň s bitmi v hlave ...Laughing 

Nakoniec, urobil som aj odľahčenú (t.j. v súčiastkach mierne osekanú a teda vo výsledku aj o niečo lacnejšiu) verziu Light ktorá je bez DIP prepínačov a funguje tak isto dobre, tu sú použité DIP spínače naozaj len ako možnosť úplného odpojenia portov 8255 od programátoru. Či to chcete mať takto aj vo verzii Full je len a len na Vás, tie DIPy môžete spokojne vynechať - a na doske bude viac miesta. Ich použitie bolo naozaj moje rozhodnutie. Ak sa DIP spínače nepoužijú tak sa využité miesto na doske programátoru podstatne zmenší a zaberie to menje miesta, opakujem, je to vaša voľba ako na to.

Jediná vec ktorú som celkom dobre nezvládol - zapojenie vývodov na konektore J4 - aby mi to sedelo kde treba - musel som prekrížiť na doske prívody k DIP spínačom. Prekríženie je preto aj nakreslené v schéme, ale nie je to nič hrozného, miesto na takéto prekríženie vodičov tam je a je tam naozaj dosť miesta.

 

 

Tu je už tých súčiastok na doske programátoru osadených o niečo viac. 

 

Programátor existuje v spomínaných 2 verziách - Full alebo Light. Už z názvu vyplýva že verzia Full má v sebe niečo navyše oproti Light - a to komfortnejšie vybavenie.

Popíšem to - úplné odpájanie napájania PROM 74188 pomocou kontaktu DIP relé. DIP relé spína za 3ms, alebo preložené do slovenčiny spína už za 3 tisíciny sekundy, túto rýchlosť ale tu v zapojení nevyužívam. Výhodou DIP relé je aj naprosto tichá prevádzka, nie je počuť žiadne "cvakanie", čo je podľa mňa veľké +. Ďalej je tu k dispozícii indikácia pomocou LED, tak isto je možné zasunutú dosku totálne odpojiť (teda tri 8-bitové porty čipu 8255 od dosky programátoru) pomocou DIP spínačov. Full verzia umožňuje po naprogramovaní jednoho bitu úplne vypínať napájanie programovaného čipu PROM 74188 (odporúčané výrobcom - slúži na zotavenie čipu po programovom pulze), toto sa ale fakticky nikde na webe v publikovaných zapojeniach nepoužíva, tu to mám vyriešené a programové vybavenie to naplno používa.

 

 

Kompletne osadený programátor PROM 74188 - verzia FULL.

 

Funkcia LED na doske programátoru:


Zelená LED         - indikácia napájania dosky programátoru

Modré LED(x2)  - indikácia - čip 74188 je pod napätím

Červená LED     - indikácia programovacieho pulzu (zvýšenie Ucc z 5V na 10.5V)

 

Verzia Light neobsahuje relé a takisto nemá v sebe žiadnu LED indikáciu, tak isto sú tam vynechané DIP spínače - čiže je to naozaj taký programátor "chudého muža", je možné ho postupne dovybaviť do Full verzie iba pri drobných zmenách v zapojení (pripojí sa port B bit7 a malá úprava zapojenia vývodov na čipe 74LS00 + zapojenie relé), ostatné veci a teda rozdiely je dobre vidieť na schémach zapojení v Full a Light verziách. Ja rozhodne odporúčam stavať Full verziu, tie výhody sú pre mňa jasné.

 

Vlastný počítač SBC6502 teraz beží na frekvencii =4MHz - mám urobené a pripravené programové vybavenie aj pre iné hodnoty, zmena hodnôt je potrebná iba v niekoľkých riadkoch  (konkrétne v piatich)  programu.

 

Obidve verzie (Full aj Light) používajú rovnaké programové vybavenie bez potreby ďalších úprav pre konkrétny typ, akurát vo verzii Light musíte vždy ručne zapínať a vypínať napájanie pre programátor - to je jediné obmedzenie pre Light verziu.

 

 

No a teraz k vlastnému zapojeniu:

 

Programátor obsahuje 3 integrované obvody (toto platí pre obidve verzie - Full aj Light) - 74LS00, 7417 a 74LS245 (alebo 74HCT245). Presne pod ZIF pätičkou na obrázku sa nachádza 12V DIP relé (odpor cievky = 1000Ω, ochranná dióda cievky je priamo integrované v relé). Jeho schopnosť spínať prúd 0.5A je tak akurát, maximálny prúd cez kontakt sa očakáva 450mA. Relé spína priamo  výstup 5V na napájanie čipu PROM, 10.5V programovací pulz tiež prechádza cez zopnuté relé). Výhodou je to ža pri vypnutí relé je prúd podstatne menší, pretože vypíname iba 5V napájanie. Čip 8255 má k dispozícii tri 8-portové brány (sú využité kompletne všetky porty a na nich všetky bity), ktoré som využil v programátore nasledovne:


port A - bity 0,1,2,3,4 - vývody PROM 74188 A,B,C,D,E

            bit 5 - ovládanie CS(neg.) PROM

            bit 6 - ovládanie prog.pulzu z 5V/10.5V/5V

            bit 7 - ovládanie relé na On/Off pre pin 16 (Ucc) PROM 74188

            ovládanie sa prevádza pomocu príkazu POKE

 

port B - bity  0,1,2,3,4,5,6,7

            ovládanie tranzistorov T1÷T8, ktoré spínajú výstupy portu B do 0 pri programovaní

            pamäť PROM 74188 sa programuje postupne v rámci bytu vždy iba jednotlivo

            po bitoch, vždy býva zopnutý v jednom okamžiku iba jeden bit (teda v log.1)

           (teda zopnutý je v jednom momente iba jeden tranzistor BS170)

            ovládanie sa prevádza pomocu príkazu POKE

 

port C - bity  0,1,2,3,4,5,6,7

           čítanie obsahu PROM, čítanie obsahu PROM po naprogramovaní

           ovládanie sa prevádza pomocu príkazu PEEK

 

Je načase zverejniť schému - ako som už písal existujú dve verzie Full a Light:

 

Programátor PROM 74188 - zapojenie full verzie - v nízkom rozlíšení:

 

 

Programátor PROM 74188 - zapojenie full verzie - v plnom rozlíšení:

prom74188programmer_full_hires.PNG (70,91 kb)

 

_________________________________________________________________


Programátor PROM 74188 - zapojenie light verzie - v nízkom rozlíšení:


 

Programátor PROM 74188 - zapojenie light verzie - v plnom rozlíšení:

prom74188programmer_light_hires.PNG (58,75 kb)

_________________________________________________________________

 

 

Do pätičky vľavo nadol som navŕtal malú dierku (nie hlboko! ) a dal som tam kvapku bielej farby - je to označenie pinu č.1, teda PROM 74188 sa zakladá do pätičky rovnakým kľúčom tak ako sú osadené ostatné čipy na doske. Páčka je umiestnená napravo, inak by mi na doske zavadzala (a bol by k nej zlý prístup). A tiež som nechcel aby páčka v dolnej polohe vyčnievala svojím obrysom mimo vlastnej dosky programátoru, to by mi vadilo tak isto (napríklad pri preprave, ľahko by sa ňou potom o niečo zavadilo). Rozloženie súčiastok a teda aj dĺžka prívodov nie je nejako kritické, pretože rýchlosť BASICu dovoľuje zmeny stavov na portoch niekde tesne pod hranicou 1msec (pri x-tale 4.00MHz) a teda na prívodoch má čas sa všetko ustáliť. Dá sa to postaviť aj podstatne menšie, ale ja som si na to vyhradil celú Euro doštičku 100x 160mm, pretože takto teraz to mám ako jeden z možných modulov ktorý sa dá "nasadiť" na SBC6502 Erika0. Napravo celkom dolu (na ďalšom obrázku) je vidieť 8ks tranzistorov BS170 - ich výhoda je tá že netreba pri nich použiť predradné odpory na ich vstupoch. Na druhú stranu - pre ich náchylnosť na prerazenie statickou elektrinou som ich vstupy radšej natrvalo "prizemnil" 100k odpormi, je to istejšie (tým som zase výhodu nepoužitia odporov na vstupoch tranzistorov úspešne eliminoval Laughing).

Záťaž vstupov je teraz minimálna a ochrana na statickú elektrinu funguje. Nakoniec, kde sa dalo som v zapojení použil odporové polia (siete), šetrí to počet potrebných vývodov (a teda aj výsledných prepojení na doske).Wink  

 

 

Na tomto obrázku vpravo tesne za DIP prepínačom je vidieť 100k odporové pole ("čierny vankúšik") pre tranzistory BS170, zaberá to menej miesta. Vľavo DIP spínač pre port B (pod ním priamo sú tranzistory BS170 a ide sa priamo na pätičku ZIF), v strede DIP spínač  pre port A (z neho sa ide na 7407-ku) a napravo DIP spínač pre port C (ten berie údaje cez čip 74xx245) - toto rozmiestnenie sa mi ukázalo ako najlepšie. Ešte sa vrátim k napájaniu, už som to popisoval, privedené napájanie je cez konektor J5, na dosku priamo ide cez vypínač +5V a +12V (teraz oceňujem že som pre SBC6502 od začiatku trval na napájaní 12V/DC ..., teraz sa to naozaj hodí). Pozorný čitateľ si iste všimol že na doske mám aj celkom hodne jumperov, ktoré slúžili výlučne na pripojenie a odpojenie jednotlivých častí pri ich skúšaní, keď som to potom celé prepojil do chodiaceho celku a teda v schéme je už všetko nakreslené tak ako je to zapojené v reále.


Takže prosím, ešte raz -  jumpre mi poslúžili iba pri oživovaní a testovaní, teraz ich už ignorujte a nehľadajte ich zapojenia v schéme, nie sú tam zakreslené, nie sú tam už potrebné, ďakujem.


Tak isto sa priamo na prednej strane nachádzajú 2 menšie konektory - tie sú tak isto momentálne nevyužité, časom má byť na nich fyzicky zavesený predný kryt, neslúžia na nič iného. Toľko na vysvetlenie.


 

Výkonový tranzistor BD140 som umiestnil na chladič. Použitie chladiča nie je bezpodmienečne nutné (ak je všetko O.K. tak tranzistor bezpečne "chodí" iba v spínacom režime), ale ak by bola založená do pätičky naozaj nejaká hodne "blbá" PROM (a to neviem vylúčiť) - tak bez chladiča určite bude nasledovať jeho deštrukcia a  bola by potrebná výmena. Umiestnenie a zapojenie tranzistoru BD140 je vyriešené tak, že je ho možné vymeniť priamo a to bez pájkovania. Stačí dať preč šrób ktorý drží tranzistor v chladiči a tranzistor je možné priamo vytiahnuť z jeho pätičky. Trošku som sa "zapotil" pri tvorbe spínača 10.5V zdroja, tranzistory BC546 majú menšie odpory v báze ako v zapojení v AR (teraz sú tam odpory = 2k2). Moje použité BC546 majú h21e=380, ak máte doma tranzistory s vyššou hodnotou - použite ich. Dtto sa týka tranzistoru BD140, na jeho zatvorenie som zvolil odpor = 1k2. Asi je to aj dané tým že používam obvod 74LS00 a nie 7400 - ten predsa len dodá väčší prúd (ale aj má väčší odber). Odpor v kolektore tranzistoru BC546 má hodnotu 360Ω (dva odpory 180Ω zapojené v sérii), pravdepodobne by na tom mieste vyhovel aj jeden odpor 390Ω (toto som neskúšal).

A prečo som v zapojení použil práve tranzistory BC546 ? - lebo ich mám doma - a dosť. Na ich mieste sa dajú použiť tak isto tranzistory 2N3904 (v našich končinách tiež veľmi rozšírené typy KC507 509). Dôležité je aby použité tranzistory mali povolený kolektorový prúd minimálne 100mA, čo všetky spomínané typy s prehľadom zvládajú.


Všetko pri stavbe bolo odsledované na dvojkanálovom digitálnom osciloskope s priamou možnosťou odčítania dĺžky generovaných pulzov. Dá sa to postaviť aj bez neho (meranie reálnej dĺžky pulzu na osciloskope je ale naozaj veľmi príjemná vec), výrazne mi pomáhali pri oživovaní zabudované LED-ky (Full), stačilo spomaliť rýchlosť zápisu a pekne som na LED-kách videl či sa deje to čo treba. Potom stačilo upraviť rýchlosti slučiek a programovacieho pulzu podľa teoretických výpočtov a už som len dolaďoval na presné hodnoty. Celkom som sa trafil, teoretická hodnota sa odlišovala asi o 8% od praktickej, takže tu som len nastavil správnu hodnotu a bolo to.

 

 

Ďalšia perlička - s ktorou som ale nerátal - indikácia (červená LED) programovacieho napätia (pulzu) pre jednoduchosť zapojenia používa na vstupe 5.1V zenerovu diódu (ZD) aby svietila až pri napätí 10.5V. Osadil som tu supersvietivú LED, lenže, akurát táto "potvora" sa aj pri napätí na vstupe =5V zbytkovým prúdom zenerovej diódy už rozsvecovala (toto som fakt nečakal, ale život niekedy prináša nečakané prekvapenia), čiže to bolo nepoužiteľné. Na potlačenie zbytkového prúdu ZD som musel k tejto červenej LED dať paralelne zapojený odpor 1k2, potom už nesvietila vtedy kedy nemala. Takže občas bacha na supersvietivé LED, niekedy nemilo prekvapia. Našťastie stačil na vyrešenie problému jediný pridaný odpor. Potom sa to už správalo tak ako som potreboval (a čakal).

Ak by som na tomto mieste použil normálnu, klasickú 20mA červenú LED tak by som nič nemusel riešiť ... ale aspoň o tom už viem - a teraz už aj Vy.

 

Potrebný zdroj 10.5V napájaný z 12V som vyriešil s dvomi diódami 1N4007 (1A typ) zapojenými v sérii (je zaujímavé že majú presne 0.75V úbytok na jednom kuse), teda na ich výstupe je presne požadovaných 10.5V pre programátor. Ako ich predzáťaž je zvolený odpor 1k2 voči zemi, možno nie je ani potrebný, ale jeden odpor v zapojení navyše ma už naozaj nezabil a nemám pocit že by zvýšil zložitosť zapojenia. Tým mi odpadlo zapojenie s odporom a 11V ZD, čo som kvitoval s povďakom, pretože práve toto mi na zapojení zdroja 10.5V v AR vyslovene vadilo.


 

Ďalšia úprava sa týka použitia Schottkyho diódy na mieste automatického prepínača 5V na 10.5V a naopak, je to také moje drobné vylepšenie jednej veci na programátore. Na tomto mieste sa často používa dióda 1N4xxx, dá na čip PROM napájanie = iba 4.25V čo je hodne málo. Ak použijete odporový delič medzi napájaním a zemou (data výstupy) tak ako je zapojený v časopisoch AR - počítajme, deľte 4.25V/2 a 2.125V na log.1 je už akosi primálo, preto som zapojenie s odporovými deličmi nepoužil. Zase na druhú stranu, Schottky dáva 4.85V na napájaní PROM čipu, to je už naozaj výrazne menší rozdiel v úbytku na dióde oproti typu 1N4xx - a práve preto je použitá v mojom programátore.

 

Čo sa týka hardvéru - to je asi tak to najdôležitejšie. Keďže sa všetko podarilo postaviť, tak som mohol pokračovať už vo vytváraní programového vybavenia.

___________________________________________________

V druhej časti bude popis programového vybavenia - alebo inak povedané - manuál.

Priama možnosť skočiť do ďalšej časti:

SBC6502 - 34 - Programátor PROM 74188. PROM 74188 programmer. Part 2-4.

SBC6502 - 35 - Programátor PROM 74188. PROM 74188 programmer. Part 3-4.

SBC6502 - 36 - Programátor PROM 74188. PROM 74188 programmer. Part 4-4.

____________________________________________________________

Návrat do všetkých pokračovaní o SBC6502:

http://blog.3b2.sk/igi/post/SBC6502-0-UvodIntroduction.aspx

___________________________________________________

Vaše hodnotenie, Rate post:

Comments

12/17/2019 4:49:10 PM #

trackback

Directory SBC6502

Directory SBC6502

Igi blog |

Comments are closed

Info o autorovi

Volám sa Igor Gramblička, bydlisko: Bratislava, Slovakia. Môj nick: Igi. Tento blog slúži na zobrazenie mojich záujmov - je to môj vlastný pohľad na veci, napriek  tomu dúfam že na mojich stránkach nájdete aj to čo hľadáte ...