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

Tabel 1.

 

In continuare voi prezenta schema hard a inscriptorului, prezentat grafic in Figura 1

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.

Semnalele de control

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.

Algoritmi de citire

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

 

Algoritmi de programare

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.

ANEXA A

Portul paralel

            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.

 

Adresele porturilor

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.

Proprietatile hardware

            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

   

Registrii Software

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:

Pentru surse : Click Aici (Source Code)