Upload
alina-veja
View
510
Download
31
Embed Size (px)
Citation preview
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
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
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
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
5/17/2018 Universitatea Tehnica Cluj - slidepdf.com
http://slidepdf.com/reader/full/universitatea-tehnica-cluj 5/17
5
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
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
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
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
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
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
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
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
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
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
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
5/17/2018 Universitatea Tehnica Cluj - slidepdf.com
http://slidepdf.com/reader/full/universitatea-tehnica-cluj 17/17
17