17
Universitatea Tehnica Cluj-Napoca Facultatea de Automatica si Calculatoare  An:2011 -2012  Au tomat Bancar Student:Veja Alina-Andreea

Universitatea Tehnica Cluj

Embed Size (px)

Citation preview

Page 1: Universitatea Tehnica Cluj

5/17/2018 Universitatea Tehnica Cluj - slidepdf.com

http://slidepdf.com/reader/full/universitatea-tehnica-cluj 1/17

Universitatea Tehnica Cluj-Napoca

Facultatea de Automatica si Calculatoare An:2011-2012

 Automat Bancar 

Student:Veja Alina-Andreea

Page 2: Universitatea Tehnica Cluj

5/17/2018 Universitatea Tehnica Cluj - slidepdf.com

http://slidepdf.com/reader/full/universitatea-tehnica-cluj 2/17

Grupa:30215 

CUPRINS 

1. Specificatia proiectului 

2. Schema bloc cu explicatii 3. Componente

4. Justificarea solutiei alese5. Instructiuni de utilizare

6. Posibilitati de dezvoltareulterioara

2

Page 3: Universitatea Tehnica Cluj

5/17/2018 Universitatea Tehnica Cluj - slidepdf.com

http://slidepdf.com/reader/full/universitatea-tehnica-cluj 3/17

1. SPECIFICATIA PROIECTULUI 

Sa se proiecteze un automat bancar pentru extrageri de sume in EURO. Se presupune ca suma maxima care poate fi extrasa o data este de maximum 1.000 EURO.Operatiile efectuate initial sunt de identificare a cardului şi alegere a operatiei. In cazul cererii de eliberare de numerar 

se introduce suma, se verifica existenta sumei cerute şi seactualizeaza contul. Apoi se elibereaza cardul, suma si,eventual, chitanta.

3

Page 4: Universitatea Tehnica Cluj

5/17/2018 Universitatea Tehnica Cluj - slidepdf.com

http://slidepdf.com/reader/full/universitatea-tehnica-cluj 4/17

2.SCHEMA BLOC CU EXPLICATII 

 Avem intrarile:- Vectorul de 4 biti prin care se specifica adresacontului pe care se vor efectua operatii;

- Vectorul de 16 biti pe care se introduce sumacare se doreste a fi extrasa;

- Un tact universal prin care se sincronizeazacomponentele;

- 12 biti pentru inroducerea PIN-ului;- O intrare pentru alegerea operatei;

- O intrare pentru confirmarea chitantei;

Componentele principale:- Identificator de card - Memorie ROM in care sunt retinute codurile PIN - Comparator pe 12 biti pentru codul PIN - Alegerea operatiei - Comparator intre suma dorita si 1000- Memorie RAM pentru solduri 

- Comparator intre sold si suma dorita- Scazator pentru obtinerea noului sold dupa extragere- Unitate pentru eliberarea cardului 

4

Page 5: Universitatea Tehnica Cluj

5/17/2018 Universitatea Tehnica Cluj - slidepdf.com

http://slidepdf.com/reader/full/universitatea-tehnica-cluj 5/17

5

Page 6: Universitatea Tehnica Cluj

5/17/2018 Universitatea Tehnica Cluj - slidepdf.com

http://slidepdf.com/reader/full/universitatea-tehnica-cluj 6/17

3.COMPONENTE 

1. Identificator de card – transforma vectorul de 4 biti ”ADR” intr-

un intreg care va fi adresa din memoriile RAM(in care se retine soldul 

clientului) si ROM(contine codul PIN al fiecarui client).

library IEEE;use IEEE.STD_LOGIC_1164.all;

entity IDN_CARD is port(ADR: in STD_LOGIC_VECTOR(3 downto 0);

 ADR_INDEX: out INTEGER range 0 to 15;CLK: in STD_LOGIC);

end IDN_CARD;

architecture ARH of IDN_CARD is

beginPROCES: process(CLK)

variable nr_cont: INTEGER;begin

nr_cont:=0;

if CLK'EVENT AND CLK = '1' thenif ADR = "0000" then nr_cont := 0;

elsif ADR = "0001" then nr_cont:= 1;elsif ADR = "0010" then nr_cont:= 2;

elsif ADR = "0011" then nr_cont:= 3;elsif ADR = "0100" then nr_cont:= 4;elsif ADR = "0101" then nr_cont:= 5;

elsif ADR = "0110" then nr_cont := 6;elsif ADR = "0111" then nr_cont:= 7;

elsif ADR = "1000" then nr_cont:= 8;

elsif ADR = "1001" then nr_cont:= 9;elsif ADR = "1010" then nr_cont:= 10;

elsif ADR = "1011" then nr_cont:= 11;elsif ADR = "1100" then nr_cont:= 12;

elsif ADR = "1101" then nr_cont:= 13;elsif ADR = "1110" then nr_cont:= 14;

elsif ADR = "1111" then nr_cont:= 15;

end if;end if;

 ADR_INDEX <= nr_cont;end process PROCES;

end ARH;

6

Page 7: Universitatea Tehnica Cluj

5/17/2018 Universitatea Tehnica Cluj - slidepdf.com

http://slidepdf.com/reader/full/universitatea-tehnica-cluj 7/17

2. . Memoria ROM in care sunt retinute codurile PIN ale cilentilor –aceasta componenta retine cei 12 biti ai codului PIN. Pe intrarea ADRS

de tip intreg se introduce adresa din memorie in care este retinut codul PIN, iar in vectorul de 12 biti de iesire se va incarca continutul 

memoriei care va fi transmis spre comparatorul pe 12 biti.

library IEEE;

use IEEE.STD_LOGIC_1164.all;use IEEE.NUMERIC_STD.all;

entity MROM_PIN is

 port(ADRS: in INTEGER range 0 to 15;

DATA: inout STD_LOGIC_VECTOR(11 downto 0));end MROM_PIN;

architecture ARH of MROM_PIN is

type VECTOR_ARRAY is array(0 to 15) of STD_LOGIC_VECTOR(11

downto 0);constant MEMORY: VECTOR_ARRAY := ( 

"011010111001","101010100110",

"100101100101",

"001001110101","010110011101",

"100111010110","000110100101",

"101100010110",

"000001010011","010100010110",

"010000101001","000111101001",

"001111011000","100111101001",

"100000101010",

"110101111011");

begin process(ADRS)begin

DATA <= MEMORY(ADDR);

end process;end ARH;

7

Page 8: Universitatea Tehnica Cluj

5/17/2018 Universitatea Tehnica Cluj - slidepdf.com

http://slidepdf.com/reader/full/universitatea-tehnica-cluj 8/17

3.Comparatorul de PIN-compara PIN-ul introdus de catre utilizator, primit pe vectorul de 12 biti “PIN_CITIT”, cu PIN-ul transmis de catre

memoria ROM a PIN-urilor retinute de catre banca. Aceasta componentacompara in procesul “comparare” ficare bit din cei doi vectori, iar atunci 

cand se compara biti cu valori diferite, semnalul intermediar “ok”, care

initial are valoarea logica ‘1’, va lua valoarea logica ‘0’. In procesul “valid” se va asigna iesirii “PIN_CORECT” valoarea semnalului “ok”, care

va fi folosit ca intrare de date in demultiplexorul de alegere a operatiei si in unitatea de eliberare a cardului.

library IEEE;use IEEE. STD_LOGIC_1164.all;

entity COMPARATOR_PIN12 is

 port (PIN_MEMORAT:in STD_LOGIC_vector(11 downto 0);

PIN_CITIT: in STD_LOGIC_vector (11 downto 0);PIN_CORECT: out STD_LOGIC);

end COMPARATOR_12PIN;

architecture COMP_12 of COMPARATOR_12PIN issignal ok: STD_LOGIC;

begin

comparare: process(PIN_MEMORAT, PIN_CITIT)begin

ok <= '1';for i in 11 downto 0 loop

if PIN_MEM(i) /= PIN_CITIT(i) thenok <= '0';

end if;

end loop;end process comparare;

valid: process (ok)

beginPIN_OK <= ok;

end process;end COMP_12;

4.  Alegerea operatiei- se realizeaza cu ajutorul unui demultiplexor 

care primeste intrarea de date de la iesirea comparatorului de PIN si 

selectia de la intarea generala “OP”.In cazul in care “OP” are:

-valoarea logica ‘1’ se va active iesirea pentru eliberarea denumerar (“EN”);

8

Page 9: Universitatea Tehnica Cluj

5/17/2018 Universitatea Tehnica Cluj - slidepdf.com

http://slidepdf.com/reader/full/universitatea-tehnica-cluj 9/17

-valoarea logica ‘0’ se va active iesirea pentru verificarea soldului (“VS”);

Alegerea se face doar in cazul in care “PIN_CORECT” are valoarealogica ‘1’, adica doar atunci cand pinul introdus este cel corect.

library IEEE;

use IEEE.STD_LOGIC_1164.all;

entity DMUX_OPT is

 port(OP: in STD_LOGIC;E:in STD_LOGIC;

EN, VS: out STD_LOGIC);end DMUX_OPT;

architecture DMUX of DMUX_OPT isbegin

PROC: process(E, OP)begin

if E = '1' thenVS <= '1' and not OP;

EN <= '1' and OP;

end if;end process PROC;

end DMUX;

4.1 Verificarea soldului-activeaza modul de citire al memoriei ROM incare e retinut soldul current al clientului cu numarul de cont “ADRS”, iar continutul memoriei se va transmite prin iesirea prin iesirea de 16 biti 

“SOLD” la un afisor.

library IEEE;

use IEEE.STD_LOGIC_1164.all;

entity AFIS is port(I: in STD_LOGIC_VECTOR(15 downto 0);

O: out STD_LOGIC_VECTOR(15 downto 0));end AFIS;

architecture ARH of AFIS isbegin

O <= I;end ARH;

9

Page 10: Universitatea Tehnica Cluj

5/17/2018 Universitatea Tehnica Cluj - slidepdf.com

http://slidepdf.com/reader/full/universitatea-tehnica-cluj 10/17

4.2. Eliberarea de numerar- este o operatie care se realizeaza cu

ajutorul urmatoarelor componente: doua comparatoare si un scazator.Primul comparator compara suma introdusa de utilizator, prin vectorul 

de 16 biti “A”, cu intregul 1000, exprimat printr-un vector de 16 biti,

adica compara daca suma introdusa este mai mica sau egala cu 1000,numai atunci cand intrarea “EN”, care este folosita pe post de “enable”,

este ‘1’ logic. Intrarea “EN” provine din iesirea demultiplexorului dealegere a operatiei. Iesirea “INVALID”-semnalizeaza corectitudinea

sumei dorite (cand este ‘1’ suma introdusa este valida) care va activa

cel de-al doilea comparator dintre suma introdusa si soldul current, iar magistrala “SUMA” va transmite suma introdusa spre al doilea

comparator.

library IEEE;

use IEEE. STD_LOGIC_1164.all;

entity COMP_1000 isgeneric(B: STD_LOGIC_VECTOR(15 downto 0) :=

"0000001111101000"); port(A: in STD_LOGIC_VECTOR(15 downto 0);

EN: in STD_LOGIC;

CLK: in STD_LOGIC;SUMA: out STD_LOGIC_VECTOR(15 downto 0);

INVALID: out STD_LOGIC);end COMP_1000;

architecture ARH of COMP_1000 issignal ok, ok1: BIT;

beginPROC: process(A, EN, CLK)

begin

if EN = '1' and CLK'EVENT thenok <= '1'; ok1 <= '0';

for i in 15 downto 0 loopif A(i) = '1' and B(i) = '0' and ok1 = '0' then

ok1 <= '1';else

if A(i) = '0' and B(i) = '1' and ok1 = '0' 

thenok <= '0';

end if;end if;

end loop;

10

Page 11: Universitatea Tehnica Cluj

5/17/2018 Universitatea Tehnica Cluj - slidepdf.com

http://slidepdf.com/reader/full/universitatea-tehnica-cluj 11/17

if ok1 = '1' thenINVALID <= '0';

SUMA <= "0000000000000000";else

INVALID <= '1';

SUMA <= A;end if;

end if;end process PROC;

end ARH;

Al doilea comparator verifica daca suma ceruta exista in cont astfel: peintrarile „A” si „B” se primesc suma dorita si soldul curent al clientului 

sub forma unor vectori de 16 biti pe care le compara,iar in final, in

cazul in care vectorul „B”, care reprezinta suma introdusa este mai mic 

decat vectorul „A” se va activa modul de scriere in memoria RAM si seva introduce rezultatul scaderii dintre soldul curent si suma introdusa.

library IEEE;

use IEEE. STD_LOGIC_1164.all;

entity COMP_SUME is port(A: in STD_LOGIC_VECTOR(15 downto 0);

B: in STD_LOGIC_VECTOR(15 downto 0);EN: in STD_LOGIC;

CLK: in STD_LOGIC;

S_OK: out STD_LOGIC_VECTOR(15 downto 0);REP: out STD_LOGIC);

end COMP_SUME;

architecture ARH of COMP_SUME is

signal ok, ok1: BIT;begin

PROC: process(A, B, EN, CLK)begin

if EN = '0' and CLK'EVENT then

ok <= '1'; ok1 <= '0';for i in 15 downto 0 loop

if A(i) = '1' and B(i) = '0' and ok1 = '0' thenok1 <= '1';

else

if A(i) = '0' and B(i) = '1' and ok1 = '0' then

ok <= '0';

11

Page 12: Universitatea Tehnica Cluj

5/17/2018 Universitatea Tehnica Cluj - slidepdf.com

http://slidepdf.com/reader/full/universitatea-tehnica-cluj 12/17

end if;end if;

end loop;end if;

end process PROC;

PR: process(CLK)

beginif ok1 = '0' then

REP <= '0';

S_OK <= "0000000000000000";else

REP <= '1';S_OK <= B;

end if;

end process PR;end ARH;

Scazatorul de 16 biti ajuta la calcularea diferentei dintre soldul curent al 

contului, primit pe intrarea „A” si suma solicitata, transmisa pe intrarea „B”. Rezultatul va fi transmis pe iesirea „Y” care reprezinta intrare

 pentru memoria RAM in modul de scriere in aceasta.

library IEEE;use IEEE. STD_LOGIC_1164.all;

use IEEE.NUMERIC_STD.all;

entity SCAZATOR is

 port(A: in STD_LOGIC_VECTOR(15 downto 0);B: in STD_LOGIC_VECTOR(15 downto 0);

Y: out STD_LOGIC_VECTOR(15 downto 0));

end SCAZATOR;

architecture ARH of SCAZATOR isbegin

SUBST: process(A, B)begin

Y <= STD_LOGIC_VECTOR(unsigned(A) - unsigned(B));

end process SUBST;end ARH;

4. JUSTIFICAREA SOLUTIEI ALESE 

12

Page 13: Universitatea Tehnica Cluj

5/17/2018 Universitatea Tehnica Cluj - slidepdf.com

http://slidepdf.com/reader/full/universitatea-tehnica-cluj 13/17

 Am optat pentru acesta solutie deoarece mi s-a parut cea mai usor de implementat si cea mai apropiata de

realitate.De asemenea solutia aleasa e usor de inteles deoarece

ordinea in care se trece de la o componenta la alta este cat se poate de logica si este eficienta pentru indeplinireacerintelor clientului.

Consider ca este cea mai apropiata de realitatedeoarece in viata reala un automat bancar citeste de pebanda magnetica a cardului numarul unic de inregistrarecare coincide in acest caz cu vectorul de 4 biti “ADR” al 

automatului proiectat de mine. Dupa introducerea corecta aPIN-ului orice automat bancar asteapta ca clientul sa isi aleaga operatia cum ar fi verificarea soldului sau extragereade numerar. La sfarsitul operatiilor clientul poate opta pentru afisarea pe chitanta a unui scurt rezumat cu ceea ces-a efectuat in sesiunea curenta.

5. INSTRUCTIUNI DE UTILIZARE 

13

Page 14: Universitatea Tehnica Cluj

5/17/2018 Universitatea Tehnica Cluj - slidepdf.com

http://slidepdf.com/reader/full/universitatea-tehnica-cluj 14/17

La prima vedere acest automat pare destul decomplicat, se folosesc multi vectori pe multi biti, intrari deactivare a componentelor, semnale intermediare, etc., dar urmand pasii urmatori oricine ar trebui sa se poata descurca

cu acesta.1. se introduce in vectorul ”ADR” echivalentul in binar a

adresei cardului dvs. RESTRICTIE: aceasta adresatrebuie sa fie cuprinsa intre 15 si 0.

 2. se actioneaza o singura data tactul general al 

automatului pentru ca prima componenta, cea deidentificare a cardului(IDN_CARD), sa faca conversiaadresei binare si sa transmita memoriei ROM in caresunt retinute codurile PIN adresa de la care sa citeascaPIN-ul pentru contul respectiv.

3. se introduce o secventa de 12 biti care reprezinta codul PIN introdus de utilizator si pe care comparatorul pe 12biti il va compara cu PIN-ul din memoria ROM.

4. se mai actioneaza inca o data tactul principal pentru aexecuta comparatia, dupa care in cazul in carerezultatul compararii este adevarat se va continua sprealegerea operatiei, altfel se va activa automatul deeliberare de card.

5. in cazul in care PIN-ul este corect pe intrarea ”OP” se

va introduce operatia dorita (‘0’ pentru verificare sold si ‘1’ pentru eliberare de numerar):

a. daca alegem sa verificam soldul curent, atunci seva actiona tactul general o singura data, iar pemagistrala ”SOLD_O” se va transmite valoareacitita din memoria RAM de la adresa ”ADR” 

14

Page 15: Universitatea Tehnica Cluj

5/17/2018 Universitatea Tehnica Cluj - slidepdf.com

http://slidepdf.com/reader/full/universitatea-tehnica-cluj 15/17

 b. in cazul alegerii de extragere numerar va trebui sase introduca suma dorita urmata de 3 impulsuri de tact. Fiecare impuls are rolul de a transformarezultatul compararii in intrare de ”enable ” pentru

componenta urmatoare din ciclul acestei operatii 6. in functie de operatia aleasa la pasul anterior 

continuarea este:a. daca s-a ales verificarea soldului atunci utilizatorul 

va solicita chitanta si va lua cardul, eliberat deautomat 

 b. se ridica suma ceruta, cardul si, eventual chitanta,in cazul in care s-a solicitat si tiparirea acesteia

6. POSIBILITATI DE DEZVOLTARE 

ULTERIOARA

15

Page 16: Universitatea Tehnica Cluj

5/17/2018 Universitatea Tehnica Cluj - slidepdf.com

http://slidepdf.com/reader/full/universitatea-tehnica-cluj 16/17

 Aceasta prima versiune de automat bancar poate servi ca un exemplu de model de functionare al unui astfel deautomat real deoarece are disponibile doar 16 conturi, iar 

daca ar fi sa ne raportam la lumea reala in care o banca arein jur de cateva milioane de clienti, acest numar esteneseminificativ.

Lasand la o parte acest dezavantaj care se poateremedia destul de usor prin largirea memoriilor in care sunt retinute soldurile si codurile PIN ale clientilor, automatului i se mai pot aduce imbunatatiri la nivelul numarului deoperatii. Initial avem cele doua tipuri de consultare sold si eliberare numerar la care mai putem adauga schimbarea

PIN-ului sau posibilitatea de a face transferuri intre douaconturi.

Marind capacitatea memoriilor cu 16 biti acestea vor ajunge ”sa tina minte” putin peste 1.000.000 de clienti.

16

Page 17: Universitatea Tehnica Cluj

5/17/2018 Universitatea Tehnica Cluj - slidepdf.com

http://slidepdf.com/reader/full/universitatea-tehnica-cluj 17/17

17