Main Page/soft@G/EPROM Burner
Inscriptorul de EPROM
GSBurner
1.Specificatii generale
Inscriptorul de memorii EPROM a carui proiectare va fi specificata in aceasta lucrare va fi capabil sa inscriptioneze memorii din clasa C produse de Microchip.
EPROM-urile folosind tehnologia C sunt EPROM-uri CMOS ce folosesc o tensiune redusa de 5.0 volti, fiind destinate aplicatiilor in care necesitatile primare sunt un consum mic de putere si o fiabilitate mare.
Accesarea unui byte individual prin adrese se face in mai putin de 90ns.
EPROM-urile din aceasta serie ce vor putea fi inscrise cu acest inscriptor sunt: 27C16(2K x 8), 27C32(4K x 8), 27C64(8K x 8), 27C128 (16K x 8), 27C256 (32K x 8), 27C512(64K x 8). Aceste EPROM-uri sunt de tip paralel DIP/SOIC.
Interfatarea se va realiza prin intermediul portului paralel date fiind cararceristicile acestuia : 5 pini pentru IN, 8 pini pentru OUT si inca 4 pini pentru operatii IN/OUT. Portul paralel folosit va fi LPT1. Mai multe despre portul paralel in Anexa A.
Aceste EPROM-uri se pot afla in mai multe moduri de functionare care vor trebui sa fie tratate ca atare de catre inscriptor :
a. Standby Mode. Acest mod se caracterizeaza prin faptul ca pinul CE este high (VIH).
b. Output Enable. Modul de functionare in care se face citirea continutului EPROM-ului.
c. Programming Mode. Cand se face inscriptionarea EPROM-ului.
Alaturi de acest inscriptor am pus la dispozitia celor interesati si un soft care lucreaza cu acesta, imbunatatiri ulterioare aduse acestuia fiind usor realizabile.
2. Prezentarea inscriptorului
Dificultatea in realizarea acestui inscriptor a reprezentat-o gama larga de tipuri de memorii EPROM pe care o manipuleaza. Acesta se datoreaza ca de la fiecare tip de memorie la urmatorul, apare cel putin o diferenta intre semnificatia unui pin. Iata in continuare diferentele existente pe acelasi pin pentru cazuri diferite de memorii. Pentru numerotarea pinilor s-a considerat EPROM-ul 27512, iar pinul 1 al memoriei 2716 si 2732 fiind echivalent cu pinul 3 pentru 27512. Celalalte EPROM-uri, (2764, 27128, 27256) avand acelasi numar de pini ca si 27512.
pin/mem |
2716 |
2732 |
2764 |
27128 |
27256 |
27512 |
1 |
- |
- |
Vpp |
Vpp |
Vpp |
A15 |
2 |
- |
- |
A12 |
A12 |
A12 |
A12 |
22 |
OE |
OE/Vpp |
OE |
OE |
OE |
OE/Vpp |
23 |
Vpp |
A11 |
A11 |
A11 |
A11 |
A11 |
26 |
Vcc |
Vcc |
NC |
A13 |
A13 |
A13 |
27 |
- |
- |
PGM |
PGM |
A14 |
A14 |
28 |
- |
- |
Vcc |
Vcc |
Vcc |
Vcc |
Dupa cum se vede din figura am folosit Portul de date pe post de magistrala pe care vom scoate toate informatiile de care avem nevoie in cei trei registrii de tip D (ASC373). Unul din acesti registrii e folosit pentru a tine datele, iar ceilalti 2 pentru a tine semnalele de control, despre a caror semnificatie voi vorbi mai tarziu. Datele vor fi citite prin registrul de Status folosind un multiplexor ASC157. Controlul acestor circuite este realizat prin portul de Control.
Pentru adrese am folosit 4 numaratoare ASC393 legate in serie care vor numara adresele. Am ales aceasta solutie datorita caracterului consecutiv al adreselor in cadrul operatiilor de scrire si citire in/din memorii.
Iata in continuare explicatia folosirii bitilor de control.. Existenta lor se datoreaza utilizarii diferite a pinilor pentru diferite tipuri de memorie. Sa luam ca exemplu pinul 26. Acesta poate reprezenta fie o adresa A13, fie Vcc. Cand pinul respectiv e folosit ca adresa vom avea pe pinul respectiv 4,5-5V respectiv 0V, iar cand avem tensiunea Vcc vom avea 4,5-5V respectiv 6,5V. Astfel pentru acelasi pin vom avea 4 valori diferite ale tensiunii care se observa ca pot fi reduse la 3. Tocmai pe acesta se bazeaza utilizarea bitilor de control. Un astfel de bit de control, se vede pe schema ca reprezinta comanda pentru un circuit selector format din 2 circuite 4066 si un inversor. In functie de valoarea acestui semnal de control la iesire vom avea una sau cealalta dintre intrari. Dar care sunt aceste intrari? Luand tot exemplul pinului 26 va trebui sa avem 0V-5V-6,5V. Iata cum vom realiza acest fapt. Daca vrem sa folosim pinul drept adresa A13 ii vom da semnalului de control ISA13 valoarea 1. Problema apare cand vrem sa folosim pinul pentru Vcc. In acest caz vom initializa adresa A13 cu valoarea 1 ~5V. Apoi cand vom dori se avem pe pin 5V vom initializa ISA13 cu 1. Daca vrem sa avem 6,5V vom initializa ISA13 cu 0 si astfel va fi selectata tensiunea notata cu VccH, avand valoarea 6,5V. Folosirea adresei ca alimentare nu reprezinta o problema dat fiind faptul ca producatorii pieselor garanteaza functionarea in parametrii rezultati conexiunii respective. Totusi pentru mai multa siguranta, pentru a asigura intensitatea curentului necesara atunci cand Vcc este pe pinul 26 (2716, 27132) am mai adaugat si curentul de pe pinul de control INC. Acelasi sens il au si celelalte semnale de control, cu cateva exceptii: OE si PGM vor contine valorile corespunzatoare, CNT este folosit pentru numarare si CNTRST pentru resetarea numaratorului.
Citirea este identica pentru toate tipurile de memorii in ce priveste semnalele. La citire Icc si Ipp trebuie sa fie maxim de 100ľA.

Figura 0
In ce priveste programarea exista doua categorii de memorii. Cele ce pentru programare folosesc semnalul PGM si cele care nu-l folosesc.
Cele care il folosesc sunt 2764 si 27128. Iata cum arata semnalele pentru aceste 2 tipuri de memorii.
Figura 1
Celelalte tipuri de memorii nu folosesc acest semnal. Si acestea se impart in doua categorii. Astfel in timp ce pentru 2732 si 27512, OE si Vpp sunt pe acelasi pin , pentru 2716 si 27256 ele sunt pe pini separati. In figurile urmatoare sunt prezentate cele doua situatii.
Figura 2
Figura 3
Iata in continuare valorile pe care trebuie sa le aiba marimile implicate in scrierea memoriei.

Tabel 2
Astfel in schema inscriptorului prezentata, Vcc are valoarea de 5V, VccH 6,5V iar VppH va avea valoarea de 13V.
3.Prezentarea softului
Softul furnizat alaturi de incriptorul GSBurner realizeaza toate operatiile de baza in inscriptarea unei memorii tip EPROM.
La lansarea in executie a programului apare meniul principal din care utilizatorul va alege tipul de memorie cu care va lucra. La alegerea unui tip de memorie apar urmatoarele obtiuni:

Prima obtiune realizeaza scrierea continutului unui fisier tipizat intr-o memorie EPROM. Un astfel de fisier tipizat trebuie realizat cu obtiunea 6 Edit a file. Aceasta obtiune va crea un fisier text (*.txt) gol, cu format tipic pentru fiecare tip de memorie, fisier care ulterior va trebui completat cu continutul memoriei folosind orice tip aplicatie ce lucreaza cu fisiere text. De exemplu NOTEPAD. Operatia inversa celei de scriere in EPROM este 2 Read the content of EPROM to a file, care scrie continutul unei memorii intr-un fisier tipizat.
Daca in urma unei operatii de scriere in memorie se doreste verificarea succesului operatiei, se pot folosi cele 2 obtiuni amintite anterior astfel: se inscriptioneaza memoria, apoi se citeste continutul memoriei intr-un alt fisier. Apoi se compara continutul acestor doua fisiere folosind obtiunea 3 Compare files a meniului. Acesta obtiune va afisa primele 100 de adrese in care informatia difera intre fisiere.
O alta obtiune a meniului este 4 Erase the EPROM. Aceasta va avea ca rezultat stergerea informatiei din memorie.
Daca se doreste modificarea a informatiei doar de la o anume adresa a memoriei se va folosi obtiunea 5 Edit the content of EPROM. In urma acestei comenzi se va cere utilizatorului adresele si valorile se se doresc scrise in memorie.
Asa dupa cum spuneam pentru lucrul cu inscriptorul proiectat am folosit interfata portului paralel. In continuare voi prezenta cateva caracteristici ale acestui port pentru a intelege lucrul cu acesta.
Portul paralel are trei adrese de baza folosite mai frecvent . LPT1 este de obicei asignat adresei 378h (adresa pe care am folosit-o si eu pentru lucrul cu inscriptorul), iar LPT2 este asignat adresei 278h. Totusi exista si cazuri in care acesta difera.
Tabelul urmator contine pinii acestui port, semnificatia fiecaruia si directia.
| Pin No (D-Type 25) |
Pin No (Centronics) |
SPP Signal |
Direction In/out |
Register |
Hardware Inverted |
| 1 |
1 |
nStrobe |
In/Out |
Control |
Yes |
| 2 |
2 |
Data 0 |
Out |
Data |
|
| 3 |
3 |
Data 1 |
Out |
Data |
|
| 4 |
4 |
Data 2 |
Out |
Data |
|
| 5 |
5 |
Data 3 |
Out |
Data |
|
| 6 |
6 |
Data 4 |
Out |
Data |
|
| 7 |
7 |
Data 5 |
Out |
Data |
|
| 8 |
8 |
Data 6 |
Out |
Data |
|
| 9 |
9 |
Data 7 |
Out |
Data |
|
| 10 |
10 |
nAck |
In |
Status |
|
| 11 |
11 |
Busy |
In |
Status |
Yes |
| 12 |
12 |
Paper-Out / Paper-End |
In |
Status |
|
| 13 |
13 |
Select |
In |
Status |
|
| 14 |
14 |
nAuto-Linefeed |
In/Out |
Control |
Yes |
| 15 |
32 |
nError / nFault |
In |
Status |
|
| 16 |
31 |
nInitialize |
In/Out |
Control |
|
| 17 |
36 |
nSelect-Printer / nSelect-In |
In/Out |
Control |
Yes |
| 18 - 25 |
19-30 |
Ground |
Gnd |
Base + 0 |
Data Port |
Write |
Bit No. |
Pin |
Properties |
| 0 |
2 |
Data 0 |
|||
| 1 |
3 |
Data 1 |
|||
| 2 |
4 |
Data 2 |
|||
| 3 |
5 |
Data 3 |
|||
| 4 |
6 |
Data 4 |
|||
| 5 |
7 |
Data 5 |
|||
| 6 |
8 |
Data 6 |
|||
| 7 |
9 |
Data 7 |
Base + 1 |
Status Port |
Read |
Bit No. |
Pin |
Properties |
| 0 |
- |
- |
|||
| 1 |
- |
- |
|||
| 2 |
- |
- |
|||
| 3 |
15 |
Error |
|||
| 4 |
13 |
Select In |
|||
| 5 |
12 |
Paper Out |
|||
| 6 |
10 |
Ack |
|||
| 7 |
11* |
Busy |
Base + 0 |
Control Port |
Read/Write |
Bit No. |
Pin |
Properties |
| 0 |
1* |
Strobe |
|||
| 1 |
14* |
Auto Linefeed |
|||
| 2 |
16 |
Initialize Printer (Reset) |
|||
| 3 |
17* |
Select Printer |
|||
| 4 |
- |
Enable IRQ Via Ack Line |
|||
| 5 |
- |
Enable Bi-Directional Port |
|||
| 6 |
- |
- |
|||
| 7 |
- |
- |
* Inseamna ca pinii sunt inversati hard. Acesta semnifica faptul ca semnalul este inversat de portul paralel. Un astfel de exemplu este linia Busy. Daca pe aces pin a fost aplicat +5V (Logic 1), si citim registrul de status vom avea 0 in Bitul 7.
Schema inscriptorului:
