Sunteți pe pagina 1din 222

ARHITECTURA

SISTEMELOR DE CALCUL
Curs 1
Cuprins

Ø Introducere
Ø Evoluţia sistemelor de calcul
Ø Elemente introductive despre logica
booleana
§ Activitati de lucru la seminar si laborator = 10
puncte + colocviu laborator =10 puncte

§ Teme de casa:
§ Tema 1 - aplicatii folosind TinkerCAD - rezolvare si prezentare referat saptamanal (predare
pana in sapt. 12)= 10 puncte
§ Tema 2 - referat - 10 puncte, prezentarea referatului 10 puncte, (se preda in sapt. 6-7) -
maxim 4 studenti /echipa

§ Test 1 la curs = 10 puncte (sapt. 6)


§ Test 2 la curs = 20 puncte (sapt. 8 sau 10)
§ Test 3 Final (grila) la curs = 20 puncte (sapt. 12)
§ Dispozitiv care efectuează calcule, în special o maşină
electronică programabilă care execută operaţii aritmetice,
logice sau care asamblează, stochează, corelează sau
efectuează un alt tip de procesare a informaţiei, cu viteză
ridicată

(The American Heritage Dictionary of the English Language,


2000).
Bit:
§ unitate elementara de informatie

§ poate avea valoarea “0” sau “1”.


ØAceste valori corespund fizic unor
nivele de tensiune, în funcţie de
circuitele electronice cu care este
construit calculatorul.

§ starea unui bistabil, sau a unei


celule elementare de memorie
Cap. 2. Evoluţia
sistemelor de calcul
Fondatori importanti ai ştiinţei calculatoarelor :
Blaise Pascal, Gotfried Wilhelm Leibniz, Charles Babbage, George Boole şi
Claude Shannon

§ Blaise Pascal a inventat în anul 1642 prima maşină de calcul operaţională,


denumită „Maşina Aritmetică”,
§ realiza operaţiile de adunare şi de scădere
§ Leibniz in anul 1694 construieste o masina pentru adunat si inmultit.
§ Charles Babbage (1791-1871) a proiectat primul calculator cu executie
automata a programului. Proiectul prevedea principalele elemente ale
calculatoarelor moderne, precum: memorie, intrari, iesiri si comenzi.
§ A construit două maşini (funcţionau cu aburi) de calcul: "Difference Engine" şi
"Analytical Engine";
§ Sisteme de calcul analogice,
§ fara sistem de operare;
§ software - limbajul de programare ADA.
§ Maşina de calcul „Difference Engine” - caracteristici: 4000 componente ; cântărea 3
tone; aproximativ 3 metri lăţime şi 2 metri şi jumătate lungime.
§ in jurul anului 1850 George Boole a inventat algebra booleană,
Aceasta a rămas neutilizată până în anul 1938, când teza de masterat a lui Claude Elwood Shannon
demonstrat cum conceptele lui Boole „TRUE” şi „FALSE” pot fi utilizate pentru a reprezenta
funcţionalitatea comutatoarelor din circuitele electronice.

§ anul 1872
§ E. Barbour realizeaza prima masina de calcul cu imprimanta.

§ anul 1892
§ W. Burroughs construieste o masina de calcul de birou perfectionata.

§ anul 1912
§ F. Baldwin si J. Monroe incep productia de masa a masinilor mecanice de calcul, cu
operatii aritmetice.

§ in anul 1930 incepe productia de masa a masinilor electromecanice de calculat


prevazute cu operatii matematice de baza(adunare, scadere, inmultire, impartire, radacina
patrata, etc.)
Prima generaţie in evoluţia calculatoarelor (1938-1953)

- caracterizată de utilizarea tuburilor electronice;


- calculatoarele erau destinate calculelor ştiinţifice şi comerciale;
- in această perioadă se încadrează calculatoarele Harvard Mark 1
şi ENIAC;

Calculatorul ENIAC
Calculatoare realizate cu tuburi electronice:

§ ENIAC - Electronic Numerical Integrator And Computer a fost realizat prin


contribuţia inginerilor William Mauchly , J. Presper Eckert si J. von Neumann
de la Universitatea din Pennsylvania între anii 1943 şi 1946. Cu aceasta
ocazie s-a folosit ideea de a stoca in aceeasi memorie, atat datele, cat si
programul, ceea ce a permis modificarea relativ usoara a programului;

§calculatorul avea 3 metri înălţime, ocupa un spaţiu de 30 mp şi cântarea 30


tone.

§folosea 18.000 tuburi cu vacuum, având nevoie de o putere de 150 kW


(suficient pentru a ilumina un mic oraş).

§principala problemă a acestui tip de calculator era fiabilitatea (în fiecare zi


trebuiau să fie înlocuite aproximativ 50 de tuburi cu vacuum).
§ Harvard Mark 1 (IBM Automatic Controlled Calculator) (1938 – 1944), era
format din mai multe calculatoare ce lucrau asupra unor părţi ale aceleiaşi
probleme sub supravegherea unei singure unităţi de control.

§ conţinea 750.000 de componente, având 16 metri lungime, 2,5 metri


înălţime şi cântărind 5 tone.

§ maşina era construită din comutatoare, dispozitive mecanice, relee


electromagnetice al caror contacte joaca rolul elementelor bistabile.

§ puteau codifica cifrele sistemului de numeratie binar.

§ numerele folosite în calcule erau de 23 de cifre, o înmulţire dintre două


numere dura 4 secunde, iar o împărţire dura 10 secunde.
§ in anul 1945 a inceput constructia unui alt calculator electronic
EDVAC (Electronic Discrete Variable Automatic Computer) pe
baza lucrarii lui J. von Neumann.
Dupa elaborarea structurii logice de baza a calculatorului cu
program memorat, au fost stabilite entitatile functionale care
concurau la realizarea acestuia:
§ un mediu de intrare care sa permita introducerea unui numar nelimitat
de operanzi si instructiuni;
§ un mediu de iesire, care sa permita livrarea unui numar nelimitat de
rezultate catre utilizator;
§ o memorie din care se citesc operanzi sau instructiuni si in care se pot
introduce, in ordinea dorita, rezultatele;
§ o sectiune de calcul, capabila sa efectueze operatii aritmetice sau logice
asupra operanzilor cititi din memorie;
§ o unitate de comanda, capabila sa interpreteze instructiunile citite din
memorie si sa selecteze diverse variante de desfasurare a operatiilor, in
functie de rezultatele obtinute pe parcurs.
Generaţia a doua in evoluţia calculatoarelor (1954 - 1963)
§ este caracterizată de folosirea tranzistorului pentru realizarea circuitelor logice
§ aveau în jur de 100 de instrucţiuni complexe,
§ memorie de tip magnetic
§ includea dispozitive periferice
§ prelucrarea se făcea secvenţial prin intermediul unui sistem de operare simplu (FMS şi IBSYS
pentru maşina de calcul IBM 7094), folosindu-se atât limbajul de asamblare cât şi limbaje
evoluate.
§ În anul 1956 a apărut Limbajul de programare Fortan

§ După anul 1960 au apărut limbajele Algol (ALGOrithmic Language) şi Cobol (COmmon
Business-Oriented Language - limbaj orientat spre aplicaţiile de afaceri).

§ Calculatoarele erau folosite în mare parte pentru calcule ştiinţifice, rezolvarea


sistemelor de ecuaţii liniare şi neliniare, ecuaţii diferenţiale etc.

§ În anul 1955 a devenit operaţional primul calculator cu tranzistori, denumit TRADIC


(Transistor Digital Computer).
§ caracterizată prin utilizarea circuitelor integrate pe scară mică
(SSI - Small Scale Integration) şi medie (MSI - Medium Scale
Integration)
§ în anul 1958 inginerul Jack Kilby a reuşit să combine mai multe
componente pe o singură bucată de semiconductor, realizând
astfel primul circuit integrat.
§ în anul 1961, Fairchild (cercetător la Texas Instruments) şi
Texas Instruments au realizat primele circuite integrate
comerciale ce conţineau funcţii logice de bază, două porţi logice
fiind implementate prin intermediul a 4 tranzistori bipolari şi 4
rezistoare.
§ T. Hoff, proiectant la Intel, a creat primul microprocesor,
denumit Intel 4004, ce avea 2300 de tranzistoare şi putea
executa 60.000 operaţii pe secundă.
§ in anul 1974, apare procesorul de uz general 8080
§ procesor pe 8-biţi, cu 4500 tranzistori
§ efectua 200.000 operaţii pe secundă.
Alte procesoare din această vreme au fost: Motorola 6800, MOS Technology 6502,
Zilog Z80.
§ în anul 1974 Ed Roberts lansează pe piaţă calculatorul Altrair
8080, cu următoarele caracteristici: Calculatorul
§ bazat pe microprocesorul 8080. Altair 8800
§ preţ de 375$.
§ memorie 4KB, programabil prin intermediul unui panou frontal cu comutatoare.

§ În 1975 Bill Gates si Paul Allen fondează firma Microsoft şi


implementează limbajul de programare BASIC 2.0 pe Altair 8800
- primul limbaj de nivel înalt disponibil pe un calculator personal
§ Alte exemple de calculatoare din această perioadă sunt: Apple I
în 1976 , Apple II în 1977, TRS-80 (bazat pe microprocesorul
Z80)
§ caracterizată prin construcţia de calculatoare ce
utilizează circuite integrate pe scară mare (LSI -Large Scale
Integration) şi foarte mare (VLSI - Very Large Scale Integration)
§ exemple de calculatoare: IBM-43xx, VAX-11/7xx, IBM-
308x, RIAD3, Coral 4021, Independent 106, Felix 5000,
Coral 8730.
§ în anul 1981 -> calculator personal (PC - Personal
Computer) cu următoarele caracteristici:
§ microprocesor pe 16-biţi 8088
§ memorie ROM BASIC
§ floppy-disc de 360KB capacitate
§ sistem de operare DOS 1.0
§ preţ 1365 $
§ Hardware : tehnici evoluate de impachetare si interconectare, proiectare circuite
integrate 3D, componente optice, arhitecturi paralele pentru prelucrarea
inferentelor, retele neuronale.

§ Software : sisteme de operare cu interfata evoluata cu utilizatorul, limbaje


concurente, programare punctionala, prelucrare simbolica (limbaje naturale,
recunoasterea formelor, recunoaşterea vorbirii ), Prolog, baze de cunostinte,
sisteme expert evoluate, CAD, multimedia, realitate virtuala, web.

§ Exemple de calculatoare: statii de lucru, super-calculatoare, retele de


supercalculatoare.

§ Tehnologia telecomunicatiilor: dezvoltarea extensiva a sistemelor distribuite,


retele locale, retele din fibra optica de mare capacitate retele de transmisii radio
la frecvente de ordinul GHz cu spectru imprastiat, telefonie digitala mobila,
fuzionarea tehnologiilor comunicatiilor si calculatoarelor.
§ bazată pe utilizarea inteligenţei artificiale, a circuitelor
integrate specializate şi a procesării paralele

Procesarea moleculară şi cuantică precum şi


nanotehnologiile pot conduce la schimbari importante în
următorii ani.
noiembrie 2012: Titan Cray XK7 (SUA) Fabricat de Cray Inc.

Instalat la Oak Ridge National Laboratory (U.S. Department of Energy)

§ Performanţa (în Nov. 2012): 17,59 PFLOPS § Nodurile de calcul sunt amplasate în 200
§ În configuraţia finală, performanţa va fi de peste de dulapuri
20 PFLOPS § Nr. total de nuclee Opteron: 299.008
§ Numărul nodurilor de calcul: 18.688 § Memorie totală: 710.144 GB
§ Nod de calcul: § Interconexiune: Gemini, 100 Gbiţi/s
§ Un procesor AMD Opteron 6274 (2,2 GHz, § Sistem de fişiere: Spider, 240 GB/s,
16 nuclee) capacitate de peste 10 PB
§ Un accelerator grafic (GPU) NVIDIA Kepler § Sistem de operare: Cray Linux
K20 Environment
§ Memorie: DDR3, 32 GB + 6 GB § Consum de putere: 8,2 MW
Arhitectura unui sistem de calcul defineşte:
CE trebuie să facă maşina din punct de vedere logic
ISA (Instruction Set Architecture) Arhitectura Setului de Instrucţiuni
CUM se implementează ISA, implementare fizică
MO (Machine Organization) Organizarea Maşinii

Aplicaţii
(ex. Netscape, Matlab, Word)

Sisteme de operare
(ex. Windows, Unix..)

Compilatoare

Asambloare

Procesor Memorie Dispozitive I/O

Magistrale de date, adrese şi control

Proiectare digitală

Proiectarea circuitelor

Tranzistoare, Layout-ul IC
§ Componenta hardware - totalitatea resurselor fizice de care dispune
calculatorul :
§ Unitatea Centrală de Procesare (Central Processing Unit – CPU), este componenta care controlează
modalitatea de funcţionare a calculatorului şi execută şi operaţiile de procesare a datelor;
µPUG, coprocesoare aritmetice, procesoare digitale de semnal, CISC(Complex Instruction Set Computer ),
RISC (Reduced Instruction Set Computer)
§ Memorii - formatul memoriei, conţinut / adresă, harta memoriei, “pagini“, "segmente“, memorie de
date, memorie de program.
§ Dispozitivele Periferice - necesare pentru asigurarea interacţiunii calculatorului cu mediul extern
(introducere de date/oferirea rezultatelor) Porturi de intrare/ieşire (I/O);
§ Magistrale de conexiune între componente – magistrala de sistem este mecanismul ce oferă
modalitatea de comunicare între componentele sistemului. Magistrală – date, adrese, control

§ Componenta software cuprinde categorii


distincte de programe:
§ Sisteme de operare , programele de aplicaţii -
instrucţiunea, setul de instrucţiuni, program;
§ Nivele de abstractizare – limbaje de nivel înalt,
limbaj de asamblare, cod maşină.
(firmware - partea de microprograme)
Împărţirea ierarhică pe componente, porneste de la nivelul de jos (apropiat de
structura hardware-fizică a calculatorului) şi continua cu cel apropiate de
utilizator prin considerarea elementelor nivelului înalt (apropiat de
componenta software-programe).
§ Nivelul inferior - constituit din componentele hardware (tranzistori,
c ircuite inte gra te, po rţi logic e) ce st au la ba za c o ns tr uc ţi ei
calculatorului

§ Nivel intermediar - unităţile funcţionale ale microprocesorului


(unitatea de control ce administrează întreaga funcţionare, unitatea
aritmetico-logică ce execută operaţiile aritmetice şi logice, memoria,
magistralele etc.)
§ Nivelul superior al programelor de aplicaţii (cel mai apropiat de
utilizator) - nivelul microprogramat, nivelul limbajului de asamblare şi
nivelul limbajelor de programare de nivel înalt.
Limbaje de programare de
nivel înalt (ex. C )

Compilare

Limbaj de asamblare

Asamblare

Cod maşină

Interpretarea codurilor

Desfăşurarea de acţiuni
specifice
Cap. 4. Concepte de
logica digitala
Simboluri
Operatorul NOT in algebra booleana se poate
reprezenta prin simbolul:
Operatorul binar AND in algebra booleana - efect produsul logic (multiplicare) intre A “si” B; se
poate reprezenta: AB, A*B

A
B F=ABC
C

Fig. 1 Iesirea este la nivel logic 1 numai daca


TOATE intrarile sunt la nivel logic 1

A A
B F=AB
B Fig.2 Exemplu efect poarta AND, cu
diagrama temporala ce ilustreaza
relatia intre intrare si iesire

F
Operatorul binar OR – suma logica intre A “sau” B se poate
reprezenta: A+B

Fig. 1 Iesirea este la nivel logic 0 daca


oricare intrare este la nivel logic 0
Operatorul “sau exclusiv”: A B
A B AND OR NAND NOR XOR NXOR
0 0 0 0 1 1 0 1
0 1 0 1 1 0 1 0
1 0 0 1 1 0 1 0
1 1 1 1 0 0 0 1

A A A
B f=AB B f=A+B B f=A + B
AND OR XOR

A A A
B
f=AB
B
f=A+B f=A . B
B
NAND NOR Ex-NOR
Intrari Intermediar Iesiri
B A A.B A+B Q
0 0 0 1 1
0 1 0 0 0
1 0 0 0 0
1 1 1 0 1
Intrari Iesiri

A B C D Q
0 0 1 0 0
0 1 1 1 1
1 0 1 1 1
1 1 0 0 1
Intrari Intermediar Iesiri
C B A A.B.C B C B+C A.(B+C) Q
0 0 0 0 1 1 1 0 0
0 0 1 0 1 1 1 1 1
0 1 0 0 0 1 1 0 0
0 1 1 0 0 1 1 1 1
1 0 0 0 1 0 1 0 0
1 0 1 0 1 0 1 1 1
1 1 0 0 0 0 0 0 0
1 1 1 1 0 0 0 0 1
§ Implementarea unei functii booleene folosind porti logice

§ Solutie posibila
ARHITECTURA
SISTEMELOR DE CALCUL
Curs 2
si aplicatii

Cuprins

Ø Reprezentarea informatiilor numerice


Cum se implementează ISA, implementare fizică?
MO (Machine Organization) Organizarea Maşinii

Aplicaţii
(ex. Netscape, Matlab, Word)

Sisteme de operare
(ex. Unix, Windows)

Compilatoare

Asambloare
Elemente influenţate de
arhitectura setului de
instrucţiuni
Procesor Memorie Dispozitive I/O

Magistrale de date, adrese şi control

Proiectare digitală

Proiectarea circuitelor

Tranzistoare, Layout-ul IC
Cap. 2. Reprezentarea
informatiilor
numerice
§ Sisteme de numeratie:
§ set de simboluri
§ set de reguli de reprezentare
§ baza = numarul de simboluri folosite
§ sisteme ponderale/neponderale
Ø U n s i s te m d e n u m e ra ţ i e e s t e c o n s t i t u i t d i n
ansamblul regulilor de reprezentare a numerelor
folosind cifre.

ØSistemele de numeraţie pot fi poziţionale sau


nepoziţionale.

Ø Sistemul de scriere roman este un sistem nepoziţional care reprezintă


numerele prin compunerea cifrelor în mod repetat începând cu cele mari
şi obţinând valoarea numărului prin însumarea lor.
Ø Sistemele poziţionale au asociată o bază care reprezintă numărul total de
cifre utilizate.
Ø "Cuvintele" pe care le înţelege calculatorul formate din 8
biţi se numesc octeţi (în engl. bytes).

Octet (byte):
§ grup de 8 biti
§ unitatea elementara de adresare la cele mai multe calculatoare
actuale (inclusiv Intel x86)
§ poate reprezenta: o valoare numerica, un caracter (cod ASCII),
un set de variabile (semnale) logice

7 6 5 4 3 2 1 0

D7 - bitul cel mai semnificativ


D0 - bitul cel mai putin semnificativ
§ Cuvant (word)
D15-D8 - octetul superior (High)
D7-D0 - octetul inferior (Low)
- folosit pt. reprezentarea intregilor, simpla precizie
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

n Dublu-cuvant (double word):


q 32 biti, 4 octeti, 2 cuvinte
q D31-D16 cuvantul superior
q D15-D0 cuvantul inferior
q folosit pentru reprezentarea numerelor in virgula fixa (dubla
precizie la sistemele pe 16 biti) sau in virgula flotanta
31 ...... 24 23 ...... 16 15 ...... 8 7 ...... 0
§ Cuadruplu-cuvant (quad-word)
63 0
§ 64 de biti, 8 octeti, 4 cuvinte, 2 dublucuvinte
§ folosit pentru reprezentarea numerelor in virgula fixa
(dubla precizie pt. sist. pe 32 biti) si in virgula flotanta
(mobila)
§ Formate extinse:
§ 80 de biti - pt. reprezentarea numerelor in virgula
flotanta (formate interne/intermediare)
Ø 1 K sau 1 Kilo octet (1 Kilo byte) = 1024 bytes -> (210)

Ø 1 M sau 1 Mega octet (1 Mega byte) = 1024 K ->(220)

Ø 1G sau 1 Giga octet (1 Giga byte) = 1024 M -> (230)


baza sistemul simboluri/cifre
2 Binar 0, 1

8 Octal 0,1,2,3,4,5,6,7

10 Zecimal 0,1,2,3,4,5,6,7,8,9

16 Hexazecimal 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F

Sisteme de numeratie:
§ sistemul binar - putine reguli, multe cifre
§ sistemul zecimal - multe reguli, mai putine cifre
§ sistemul hexazecimal - intermediar intre binar si zecimal
( 100 011 010 111 )2 ( 4 3 2 7 )8
( 6 1 3 4 )8 ( 110 001 010 100 )2

( 1011 1010 0011 0010 )2 ( B A 3 2 )16

( 4 F C 2 )16 ( 0100 1111 1100 0010)2

8 biti = octet / byte

cuvinte de: 8 / 16/ 32 / 64/128 biti

 Numere: - intregi – fara semn / cu semn


- fractionare
- virgula mobila
Reprezentarea numerelor, comparativ, în zecimal, binar, octal şi hexazecimal

ZECIMAL BINAR HEXAZECIMAL


1 00000001 01
2 00000010 02
3 00000011 03
4 00000100 04
5 00000101 05
6 00000110 06
7 00000111 07
8 00001000 08
9 00001001 09
10 00001010 0A
11 00001011 0B
12 00001100 0C
13 00001101 0D
14 00001110 0E
15 00001111 0F
16 00010000 10
17 00010001 11
… … …
255 11111111 FF
2.7. Conversia unui numar real intr-o baza
de numeratie
Procedeu de conversie:
§ Partea intreaga

§ se imparte la baza respectiva, partea intreaga si caturile obtinute dupa fiecare


impartire, pana se obtine catul 0;

§ Rezultatul conversiei partii intregi este constituit din resturile obtinute,


considerate in ordine inversa de aparitie
§ Partea fractionara

§ se inmulteste partea fractionara cu baza, apoi toate partile fractionare obtinute


prin produsul anterior, pana cand partea fractionara a unui produs este zero
sau pana la obtinerea unui numar de cifre fractionare dorit;
§ Rezultatul conversiei partii fractionare este constituit din partile intregi ale produselor,
considerate in ordinea aparitiei
n Conversia partii intregi: prin divizare
succesiva cu noua baza

Exemplu: Conversia numarului zecimal 45 in binar

§ Conversia partii fractionare: prin inmultire succesiva cu noua baza


§ atentie!!!, conversia nu este univoca (precisa)

Exemplu: Conversia numarului zecimal 41,828125 in binar

Stop atunci cand catul este 0.


Ø Un număr poate fi scris din baza 10 în binar descompunând prin împărţiri
repetate la doi şi scriindu-l după puterile lui 2.

Ø Un număr poate fi scris din baza 10 în binar descompunând prin împărţiri repetate
la doi numărul zecimal şi scriindu-l după puterile lui 2.

Ø Exemplu:
77 = 64 + 8 + 4 + 1 = 26 + 23 +22 + 1 = 1*26 + 0*25 + 0*24 + 1*23 + 1*22 + 0*21 + 1*20
Deci, 77 se scrie în binar 100 1101.

> Exemplu: Conversia numarului zecimal 9 in binar


Solutie : 9 = 8 + 1 “se aleg numere puteri ale lui 2 ”

Exemple:
Ø Conversia numarului 23,25 din zecimal in 23 | 2
binar 23,2510 = 10111,012 22 | 11 | 2
1  10 | 5 |2
1  4 |2 |2
Ø Conversia numarului zecimal 933,25 in 1  2 |1 | 2
hexazecimal 0  0
933,2510 = 3A5,416
1 
933 | 16
928 | 58 | 16
5  48 | 3 | 16 0,25 x 2  0 , 5
10  |0
0,5 x 2  1, 0
3  0,25 x 16  4 , 0
Conversii

§ Folosind insumare § Prin multiplicare repetata

0.5 0.25 0.125 0.0625

(0.625)10 = 0.5 + 0.125 = (0.101)2


ØExemple: 1101101
Solutie
Ø Exemple:
ØExemple:
Conversia numarului 0.1011 in zecimal
ØSolutie
Ø Exemple:
§ 3 cifre binare = o cifra octala
§ 4 cifre binare = o cifra hexazecimala
§ Regula de conversie:
§ se grupeaza cate 3 respectiv cate 4 biti
incepand de la semnul zecimal spre stanga si
spredreapta
§ se complecteaza cu biti de 0
§ Exemple
§ 0011 1011 1110,0111 11002=3BE,7C16
§ 001 110 111 110,011 111.2 =1676,378
§ 4 cifre binare = 1 cifra hexa(zecimala)
2^3 2^2 2^1 2^0 2^2 2^0 2^3 2^2 2^1 2^0
2^3 2^1

0 0 1 0 1 0 1 1 1 0 1 0 1 1 0 0

2 B A C
Conversie Hexadecimal -> Zecimal
conversie baza 16->10
Conversie Octal – Zecimal

~ 11592.24
Conversie octal – in – zecimal § Conversie Octal – in – Binary

Conversie zecimal – in – octal § Conversie Binary – in – Octal


§ Ex. verificare: Reprezentare baza 2, conversie la baza10

egal cu
Fixare cunostinte
§ Ex.1:Se consideră numărul 1915.40625; se cere conversia acestuia în binar.

§ partea întreagă (N1) se reprezintă în binar cu ajutorul împărţirii repetate la baza (2), reţinând în mod sistematic
resturile obţinute. Numărul în binar reprezintă concatenarea resturilor parţiale generale, în ordinea inversă
obţinerii lor (Condiţia de terminare a algoritmului este obţinerea unui deîmpărţit parţial mai mic decât
baza 2).

§ conversia lui N2 se obţine prin înmulţirea repetată cu baza (2), reţinând în mod sistematic partea întreagă a
rezultatelor parţiale obţinute, în ordinea obţinerii acestora (Condiţia de terminare a algoritmului este
obţinerea unui rezultat fără parte întreagă (sau un număr suficient de iteraţii)).
Fixare cunostinte

Ex.2: Se cere conversia din binar în zecimal a numărului 0,10111.

Ex.3: Conversia din zecimal în binar a numărului


Fixare cunostinte

§ Ex.4: Să se transforme numărul zecimal


627,625 în format binar.
ASC
Curs 3
Cuprins

Ø Reprezentarea numerelor în virgulă fixă si


mobile
Recapitulare - conversie intre binar si
hexazecimal
Tip de reprezentare
n Reprezentarii matematice
q virgula fixa

q virgula mobile
Virgula (punctul zecimal sau binar, în notaţia engleza) nu se reprezintă fizic în
registrele calculatorului, dar poziţia sa este cunoscută (stabilită) pentru
fiecare dintre modurile de reprezentare

n Precizia reprezentarii matematice


numarul de biti utilizati pentru memorarea variabilelor si pentru efecturarea calculelor
Reprezentarea numerelor in virgula mobila

n Folosita pentru stocarea şi prelucrarea numerelor reale în calculator.

n Denumirea provine de la faptul că “virgula” nu are o poziţie fixă faţă de şirul


de biţi ce reprezintă valoarea numărului.
q Poziţia virgulei se poate modifica fie ca să permită efectuarea de operaţii
aritmetice şi logice cu numere reale, fie pentru reprezentarea standardizată, în
virgulă mobilă, a numerelor reale.

n Nu toate sist. de calc. conţin suportul hardware necesar pentru aritmetica în virgulă
mobilă,

n Se pot efectua operaţiile cu numere în virgulă mobilă prin emulare (interpretare) cu


ajutorul unor programe de emulare.
Reprezentarea numerelor în virgulă fixă

n Se lucrează cu numere întregi în virgulă fixă, datorită avantajelor în ceea ce priveşte


structura hardware a circuitelor pentru operaţii aritmetice şi logice.

n Prin comparaţie cu reprezentarea în virgulă mobilă, reprezentarea în virgulă fixă are


avantajul că:
q este uşor de pus în aplicare într-un spaţiu de memorie mic,

q operaţiile sunt executate rapid de procesoarele în virgulă fixă.

Procesoarele în virgulă fixă sunt ieftine şi au consum mai redus decât cele în virgulă mobilă.

n Aceste caracteristici sunt deosebit de importante pentru: aplicaţii de timp real,


sisteme integrate (embeded systems), procesare de semnale.

q Domeniul de aplicabilitate foarte larg: controlere industriale, telefoane mobile,


echipamente medicale portabile, etc.
Reprezentarea numerelor în virgulă fixă

n Unitatea aritmetico-logică a unui procesor în virgulă fixă lucrează doar cu


numere întregi, (de ex. pe 8, 16, 32 biţi).
n

n Reprezentarea numerelor în virgulă fixă -> sub formă de numere întregi cu


semn sau fără semn. Pozitia “virgulei” este fixă faţă de şirul de biţi prin care
se reprezintă data numerică.

n Inconvenientul acestor procesoare:


q volum sporit de muncă şi o atenţie din partea programatorului, care trebuie să manipuleze
numerele în aşa fel încât procesorul să poată face operaţii cu numere preluate din lumea
reală, în gama de reprezentare.
n Există de asemenea posibilitatea de a reprezenta datele în virgulă fixă sub
forma de numere subunitare. Reprezentarea în virgulă fixă cu numere
subunitare are avantaje din punct de vedere al operaţiilor de înmulţire,
pentru că această operaţie nu va duce la depăşirea capacităţii de
reprezentare.

n Daca procesorul lucrează în virgulă fixă cu numere subunitare, la


introducerea datelor, fiecărui număr i se ataşează un factor de scară, care
să-l transforme într-un număr subunitar.

n La unele compilatoarele scrise pentru virgulă fixă, factorul de scară este


tratat de compilator, astfel încât utilizatorul limbajelor de nivel înalt nu
trebuie să ia în considerare acest aspect la efectuarea operaţiilor.
Interpretarea numerelor în virgulă fixă ca numere
fracţionare
q Programatorul plasează o virgulă imaginară, care-l separă într-
o componentă întreagă şi una fracţionară

q Este fix atât numărul de poziţii ale părţii întregi cât şi numărul
de poziţii ale părţii fracţionare

q Virgula nu se reprezintă fizic în registrele procesorului, dar


poziţia sa este cunoscută şi fixată de către programator pentru
a putea interpreta numerele într-un mod mult mai intuitiv şi mai
apropiat de lumea reală.
n Pentru reprezentarea numerelor pozitive şi negative se alocă
un bit suplimentar, care indică semnul.

(a) (b)

Număr cu semn reprezentat în virgulă fixă (a) interpretat fracţionar,


(b) interpretat intreg

bitul de semn – S
partea întreagă – I
partea fracţionară, formată din Q biţi
n Notaţia utilizata în mod curent pentru reprezentarea în virgulă fixă în
reprezentarea unui număr semn

Qi.q,

unde:

i - numărul de biţi al componentei întregi a numărului,

q - numărul de biţi al componentei fracţionare.

Suma i + q + 1 este numărul total de biţi disponibil pentru a reprezinta valoarea


a lungimii cuvântului.

n Pentru reprezentarea unui număr întreg, pe n biţi fără semn se utilizează


notaţia UQi.q, unde U indică o reprezentare fără bit de semn
Formate în virgulă fixă

Exemplificarea reprezentării unui format care include atât parte întreagă cât şi
fracţionară, Q3.12, pentru numerele cu semn
Aplicatii

Exemplu de înmulţirire a două numere pe 16 biţi cu semn, in format Q15

a  nr . 16 biti b  nr . 16 biti

*
32 biti

 1

 16
rezultat 

nr. 16 biti
Probleme specifice programării în virgulă fixă şi soluţii

n 1. Posibilitatea de depăşire a limitelor de reprezentare în timpul


execuţiei programului
1 0

 

 32768 32767

n 2. Necesitatea transpunerii numerelor din lumea reală în formatul


specific („nativ”) al procesorului – numere întregi pe 8, 16 , 32 biţi,
utilizând cât mai bine puterea de reprezentare a formatului existent.
Soluţia este scalarea mărimilor
n Reprezentarea în virgulă fixă cu numere subunitare are avantajul
important că prin operaţia de înmulţire nu se depăşeşte capacitatea de
reprezentare (produsul a două numere subunitare este tot subunitar).
Limitele de reprezentare pentru numere pe 16 biţi, cu semn

Intervalul de reprezentare la nivelul Intervalul de reprezentare în interpretarea


procesorului, ca numere intregi fracţionară de către programator
[-32768…32767] [-1, 1) (mai precis [-1...0.9999695])

>> 1/32767-1
0 0
ans =
-0.999969481490524

() ( ) () ( )
 16384 16384  0 .5 0 .5

 32768 32767 1 1

Reprezentarea numerelor întregi cu semn pe 16 biţi: (a) cu numere întregi şi (b)formatul


echivalent Q15, în interpretare fracţionară
ASC
Curs 3.2
Cuprins

Ø Reprezentarea numerelor în virgulă fixă si


mobile - continuare
Coduri binare folosite pentru reprezentarea numerelor
intregi cu semn

n cod direct (numit şi cod mărime şi semn, notat pe scurt MS)

n cod invers (numit şi cod complement faţă de 1, notat pe scurt C1)

n cod complementar (numit şi cod complement faţă de 2, notat C2)

Important - precizarea lungimii de reprezentare

Pentru numere pozitive toate cele trei moduri de


reprezentare sunt identice
n Numere pozitive:
q intervalul de reprezentare: [0.. 2n-1], unde n - nr. de biti

n Numere negative:
q mai multe metode de reprezentare (codificare):

q intervalul de reprezentare: [-(2n-1-1) ... (2n-1-1)]

q bitul cel mai semnificativ (MSB) - bit de semn:


n Pentru numerele cu semn, întotdeauna pe prima poziţie binară din
partea stânga se reprezintă semnul, folosindu-se convenţia:
q S= 0, semn pozitiv (N ≥ 0)

q S= 1, semn negativ (N < 0)


Reprezentarea numerelor cu semn în cod direct

n Modulul numărului are aceeaşi reprezentare atât pentru numere pozitive cât
şi pentru cele negative,

n Marime si semn:

q bitul cel mai semnificativ

q restul bitilor - valoarea absoluta a numarului

q dezavantaj: probleme la implementarea operatiilor aritmetice

q exemplu: -7 1000.0111
Numere întregi cu semn, reprezentate pe n biţi

n bn-1 - bitul de semn,


n bn-2 - bitul cel mai semnificativ bit (MSB, cu
ponderea 2n2),
n b0 - bitul cel mai puţin semnificativ (LSB).
n “Virgula” - poziţia fixă imediat în dreapta LSB (b0).
Numerele subunitare cu semn, reprezentate pe n biţi

n b0 - bitul de semn,
n b-1 - bitul cel mai semnificativ (MSB, cu ponderea 21 ),
n b-(n-1) - bitul cel mai puţin semnificativ (LSB, cu ponderea 2  ( n 1)).
n S-a considerat “virgula” între bitul de semn şi MSB
Domeniul de reprezentare al MS (cod mărime şi semn)

n Domeniul de reprezentare:

n Calculul valorii zecimale pentru numărul reprezentat în


binar în MS:
Avantaje ale codului MS (mărime şi semn)

n Codificarea în MS prezintă avantaje din punctul de


vedere al:
q operaţiilor de înmulţire şi împărţire,

q algoritmiilor de calcul

q rutinelor sau circuitele de implementare cablată, rezultând cu o structură


simplă.

Codificarea în MS se face foarte simplu pentru numerele negative,


doar prin modificarea bitului de semn.
Dezavantaje ale codului MS
(mărime şi semn)
n Codul prezintă dezavantaje din punctul de vedere al operaţiilor de adunare
şi scădere.

n Numerele pozitive şi negative trebuie tratate diferit în operaţii şi ca urmare


rezultă algoritmi de adunare şi scădere mai complecşi decât în alte moduri
de codificare.

n Un alt dezavantaj îl reprezintă faptul ca există două reprezentări pentru


numărul zero:
Reprezentarea numerelor cu semn în cod invers (C1)

n Mod de reprezentare:
q Pentru numere pozitive reprezentarea este identică cu cea făcută
în MS.

q Pentru numere negative


n regula: se complementeaza fiecare pozitie binara a reprezentarii
valorii absolute (altfel spus: biţii ce reprezintă valoarea absolută a
numărului sunt formaţi prin complementarea bit cu bit a reprezentării
în cod direct)

n bitul cel mai semnificativ - bit de semn, ia valoarea 1


q exemplu: -7 7=0000.0111
-7=1111.1000
continuare
Reprezentarea în cod invers
continuare
Reprezentarea în cod invers

n Reprezentarea în cod invers a unui număr N, binar negativ, se


poate face în două moduri:

a) prin complementarea tuturor biţilor reprezentării modulului


numărului (|N|) inclusiv bitul de semn;

b) prin calcul folosind relaţiile generale urmatoare:


Domeniul de reprezentare al C1

Calculul valorii zecimale pentru numărul reprezentat în


binar în C1:
Avantaje şi dezavantaje ale codului C1

n Reprezentarea este foarte uşor de realizat în hardware, dar algoritmii


de înmulţire şi împărţire pentru numere în C1 sunt mai complecşi
decât la MS.

n Codul prezintă unele avantaje pentru adunare şi scădere, dar la


aceste operaţii se preferă codul complementar.

n Dezavantajos este faptul că există două reprezentări pentru zero (plus


şi minus zero):
Exemplificare
n Complement fata de 2 (C2)

q regula1: se aduna 1 la complement fata de 1

q regula2: se copiaza bitii de 0 incepand din dreapta,


inclusiv primul bit de 1, dupa care se complementeaza
fiecare bit

q exemplu: -22 22=0001.0110

-22=1110.1001 C1+

1110.1010 C2
Calculul complementului fata de doi, pentru un anumit numar X, reprezentat pe n biti, va fi:

Astfel, prin reprezentarea complementului fata de doi al unui numar, se obtine reprezentarea binara a
opusului acestui numar (deci [X]2 = - X). De exemplu, fie
X = 6(10) = (0110)2, n=4. Calculand complementul fata de doi al acestui numar, se obtine reprezentarea

pentru -X = -6(10), data de

Reguli:
Domeniul de reprezentare al C2

n Calculul valorii zecimale pentru numărul reprezentat


în binar în cod C2:

n (relaţii valabile şi pentru numere pozitive)


Avantaje & dezavantaje ale reprezentării în cod C2

n Reprezentarea în cod C2 a numerelor negative s-a generalizat la


procesoarele actuale, datorită avantajelor precum:
q Scăderea unui număr din alt număr este echivalentă matematic cu adunarea complementului de doi
a scăzătorului la descăzut. Se implementează doar operaţia de adunare a numerelor reprezentate în
cod complementar (sumare algebrică).

q Codul are o singură reprezentare pentru zero (00...0).


q Un întreg în reprezentarea complement faţă de doi poate fi uşor extins la un format mai mare (un număr mai
mare de biţi) fără schimbarea valorii sale. Pentru aceasta este necesar doar ca bitul de semn sa fie repetat
în toate poziţiile binare de ordin superior apărute. - > operaţie de extensie de semn.
q Exemplu pentru un întreg pe 16 biţi extins apoi la 32 de biţi:

Dezavantaj al codului complementar - algoritmii pentru înmulţire şi împărţire mai complecşi decât
cei corespunzători codului MS.
Aplicatii
2’s complement
Aplicatii
Reprezentarea numerelor întregi cu semn pe 16 biţi, în complement faţă de 2

Valoare zecimală Reprezentare C2 pe 16 biţi, binar , hexa


32767 0111…111 = 7FFF16
32766 0111…110 = 7FFE16
….................... …......................
5 0000 0000 0000 0101
…................... …..............................
1 0000…001 = 000116
0 0000…000 = 000016
-1 1111…111 = FFFF16
….............. …...........................
-5 1111 1111 1111 1011
.............. .......................
-32766 1000…010 = 800216
-32767 1000…001 = 800116
-32768=-216 1000…000 = 800016
Aplicatii

Pentru următoarele numere reprezentate pe 3 biţi date prin valoarea


binară s-au evidenţiat cele trei reprezentării:: semn şi valoare
absolută - MS, complement faţă de 1 - C1 şi complement faţă de 2 -
C2.

Valoare binară
q 000 001 010 011 100 101 110 111
n MS +0 +1 +2 +3 -0 -1 -2 -3
n C1 +0 +1 +2 +3 -3 -2 -1 -0
n C2 +0 +1 +2 +3 -4 -3 -2 -1
Aplicatii
n semn-mărime

n complement de 1 – C1

n complement de 2 – C2
Aplicatii

n Diferite reprezentări ale numerelor fracţionare pentru o lungime de 3 biţi


a cuvintelor.

n Aşa cum s-a mai specificat, există două reprezentări pentru zero în
format mărime cu semn şi complement fată de 1 şi nici o reprezentare
pentru –1.
n Formatul complement faţă de 2 are o singură reprezentare pentru 0
n Reprezentarea în complement faţă de 2 este adesea utilizată în
implementarea filtrelor digitale datorită uşurinţei efectuării operaţiilor de
adunare şi scădere, caz în care descăzutul se adună cu complementul
faţă de doi al scăzătorului.
Shiftarea numerelor în complement de 1 şi de 2
n Shiftarea la dreapta sau la stânga este folosită pentru a dubla/înjumătăţi mărimea întregilor
binari fără semn.

Figura 1 Shiftarea în
complement de 1.

n La complementul de 1 avem shiftarea la stânga/dreapta din figura 1, unde se explică şi


modul de shiftare: bitul care vine pe poziţia lăsată liberă este identic cu cel de dinainte de
shiftare (shiftarea la dreapta – right), sau este ‘1’ (shiftarea la stânga).

Figura 2 Shiftarea în
complement de 2.

n La complementul de 2, figura 2 ne prezintă maniera în care se shiftează la stânga/dreapta:


bitul de pe poziţia rămasă liberă va fi identic cu cel de dinainte de shiftare (right shift), sau
are valoarea ‘0’ (left shift).
Aplicatii - Aritmetica numere întregi (cu/fara semn)

Adunarea / scaderea.
27 26 25 24 23 22 21 20
1 1 0 1 1 0 1 1 +
0 1 0 0 0 1 1 0
1 0 0 1 0 0 0 0 1
Depasire (overflow / borrow)

Inmultirea: [n] biti x [m] biti -> [n+m]biti

Impartirea: [n] biti : [m] biti -> [n-m]biti

8 biti -> [0, 255] (28-1)


16 biti -> [0, 65535] (216-1)
Reprezentarea
numerelor in virgula
mobila (flotanta)
Reprezentarea numerelor in virgula mobila

n Folosita pentru stocarea şi prelucrarea numerelor reale în


calculator.

n Denumirea provine de la faptul că virgula nu are o poziţie fixă


faţă de şirul de biţi ce reprezintă valoarea numărului.

n Poziţia virgulei se poate modifica fie ca să permită efectuarea


de operaţii aritmetice şi logice cu numere reale, fie pentru
reprezentarea standardizată, în virgulă mobilă, a numerelor
reale.
Reprezentarea numerelor reale in forma normalizată
 Pentru fiecare număr real N trebuie reprezentate fiecare din componentele
următoarei relaţii:

 1 s
xM xB E

 s= semn (0 sau 1)
 M = semnificant (mantisa),
◦ reprezentată în calculatorul numeric ca un număr binar subunitar cu semn, cu
prima cifră după virgulă diferită de zero;
◦ 0 - 9999999 - forma standardizata
◦ indică mărimea exactă a numărului într-un anumit domeniu
 E = exponentul, reprezentat ca un număr întreg cu semn;
◦ indică ordinul de mărime a numărului, fiind puterea la care se ridică baza
mantisei. Exponentul indică deci implicit poziţia virgulei binare.
 B = baza, este 2 (rar 10), sau o putere a lui 2,
 nu este reprezentată în calculatorul numeric, dar se ţine cont de valoarea bazei atunci
când se efectuează operaţii aritmetice.
 La un anumit calculator numeric valoarea bazei este aceeaşi pentru toate
numerele reale reprezentate.
Limite de reprezentare in virgula mobila (flotanta)

n limite de reprezentare:

-∞ +∞
0
-0,999*1099 -0,1*10-99 0,1*10-99 0,999*1099

q plaja foarte mare de valori


q rezolutia absoluta -> variabila
q rezolutia relativa ->constanta

n reprezentarea in flotant este discreta,


Nota: NU modeleaza pe deplin numerele reale.
În vederea efectuării de operaţii şi a obţinerii rezultatelor în virgulă flotantă
se apelează la o formă normală de reprezentare a numerelor (altfel spus, se
apelează la operaţia de normalizare a numerelor în felul următor):

q dacă numărul de virgulă flotantă este reprezentat în MS, atunci se consideră un număr
normalizat dacă prima cifră binară normală succesivă virgulei este ‘1’ şi nu ‘0’, adică se
elimină zerourile nesemnificative (leading 0's);

q dacă numărul în virgulă flotantă este reprezentat în C2 atunci se spune că este normalizat
dacă bitul de semn şi bitul cel mai semnificativ al mantisei diferă valoric;

q operaţia de normalizare implică deplasări ale vigulei la dreapta, cu incrementarea


exponentului, şi la stânga, cu decrementarea exponentului;

q prin normalizare, mantisa obţine valori în câmpul restrâns 1/2 ≤ |M| < 1;
Reprezentarea normalizată are următoarele

avantaje:

n reprezentarea fiecărui număr este unică

n nu se pierd cifre pentru reprezentarea primelor

zerourilor de la dreapta virgulei


Standardul IEEE-754 pentru reprezentarea Numerelor în Virgulă
Flotantă (The IEEE Standard for Floating-Point Arithmetic)

n IEEE - acronim pentru Institute of Electrical and Electronics Engineers -


organizaţie ce are drept principal scop elaborarea standardelor pentru
produsele hardware şi software.

n precizează formatul de reprezentare în memorie în simplă şi dublă


precizie a unui număr real.
n Standardul IEEE-754 defineşte valori speciale
pentru situaţii excepţionale:
q Inf, pe post de "infinit" ("infinity"), pentru rezultatul împărţirii unui număr finit la zero.

q Reprezentarea lui ‘0’ în virgulă flotantă IEEE 754, E=0 şi M=0,

q Format care indică situaţia de overflow ±∞, E=255(2047) şi M=0

q Format - situaţia de denormalizare

q NaN, pe post de "non-număr" ("not a number"), conventia E=255(2047) şi M ≠0,


pentru rezultatul următoarelor operaţii:
n adunare : Inf + (-Inf)

n inmulţire: 0⋅ Inf

n impărţire: 0/0 sau Inf/Inf

n Calculul restului împărţirii unui număr x la 0 sau a lui Inf la x

n Calculul rădăcinii pătrate pentru x < 0.


Formatele de reprezentare a numerelor în virgulă mobilă
(conform standardului IEEE 754)
S Exponent decalat Semnificant (mantisa)
n simplă precizie (single-precission) pe 32 de biţi:
q 1 bit pentru semn
q 8 biţi pentru exponentul decalat
q 23 biţi pentru semnificant

n dublă precizie (double-precission) pe 64 de biţi


q 1 bit pentru semn
q 11 biţi pentru exponentul decalat
q 52 biţi pentru semnificant

n precizie extinsă se utilizează în interiorul unităţilor aritmetice de virgulă


mobilă, la care programatorii nu au acces
Standard IBM S/360, S/370

n Formate prezentate in standard:


q precizie simplă (32 de biţi),
q precizie dublă (64 de biţi)
q precizie extinsă (80 de biţi).
Aplicatii

Normalizarea în binar

n uşor de realizat, prin deplasarea mantisei către


dreapta sau stânga şi incrementarea, respectiv
decrementarea corespunzătoare a
exponentului.
Aplicati
i
Aplicatii

n Să se normalizeze următoarele numere:


542,36; 4527; 0,0002617; –42,15; –0,012.
Aplicatii
n Se considera numărul 1915.40625. Se cere reprezentarea sa în
standardele IEEE 754 şi IBM S360/370
n conversia numarului în binar
n partea întreagă (N1) se reprezintă în binar cu ajutorul împărţirii repetate la baza (2), reţinând în
mod sistematic resturile obţinute. Numărul în binar reprezintă concatenarea resturilor parţiale
generale, în ordinea inversă obţinerii lor (Condiţia de terminare a algoritmului este obţinerea unui
deîmpărţit parţial mai mic decât baza 2).

n conversia lui N2 se obţine prin înmulţirea repetată cu baza (2), reţinând în mod sistematic partea
întreagă a rezultatelor parţiale obţinute, în ordinea obţinerii acestora (Condiţia de terminare a
algoritmului este obţinerea unui rezultat fără parte întreagă (sau un număr suficient de iteraţii)).
continuare

n Reprezentarea conform IEEE 754 rezultă:

n Cei 32 de biţi ai reprezentării pot fi consideraţi într-o formă compactă ca şi


un cod hex pe 8 simboluri: N=44EF6D00
n Standardul IBM S360/370 codifică un număr sub formatul general

n Deoarece baza reprezentării este 16, mutarea virgulei pentru a obţine


pentru N formatul IBM se va face în grupuri de câte 4 cifre binare.

n Reprezentarea conform IBM S360/370 rezultă:


Alte exemple de metode de
codificare
n Coduri ponderale
q 8421, BCD (Binary Coded Decimal),
n Coduri neponderale
q Gray
n Coduri detectoare si corectoare de erori
q Se bazeaza pe redundanta codurilor
q BCD+paritate, paritate matriciala,
q coduri Hamming
Codificare Alfanumerica
n Standardul ASCII:
q codifica: litere, cifre, semne de punctuatie, semne grafice, comenzi de formatare,
comenzi de control al transmisiei
q folosesc 7 biti/cod (+1 bit paritate) sau 8 biti/cod (pt. standardul extins)

n Coduri alfanumerice sunt:


q ASCII extins, ASCII - American Standard Code for Information Interchange.
q Unicode – foloseşte modele pe 16 biţi pentru reprezentarea fiecărui simbol (65 536
şabloane diferite)
q ISO – pe 32 de biţi (17 x 106 simboluri)

n Exemple:
q litere mari: A- 41H, B- 42H, C - 43H ...... literele mari sunt cuprinse între 65 (alt 65 pe
tastatura calculatorului va determina afişarea literei A) şi 90 (codul pentru litera Z).
q litere mici: a - 61H, b - 62H, c - 63H, .. literele mici au codurile cuprinse între 95 şi 122
q cifre: 0 - 30H, 1 - 31H, ..... 9 - 39H au codurile între 48 şi 57
1. Medii de lucru
Medii de dezvoltare integrate (IDE)
- MPLABX, Microchip, http://www.microchip.com/mplab/mplab-ide-home
Mediul de dezvoltare integrat (IDE) este necesar realizarii aplicaţiilor software pentru microcontroler (uC). Un IDE are în
componenţă: editorul de text, compilatorul, linker-ul şi debugger-ul.

Medii pentru proiectare si simulare


- Proteus, Labcenter Electronics: Proteus PCB Design & Simulation software
https://www.labcenter.com/
- Frizing, util pentru dezvoltare de software, proiectare si design HW de electronica
http://fritzing.org/home/

2. Prezentarea mediului Proteus - ISIS, necesar pentru proiectarea și


simularea de scheme electronice
Pentru simularea aplicaților se va utiliza mediul profesional Proteus, care este un mediu profesional foarte puternic pentru
simularea circuitelor programabile, fiind prezentat in imaginea următoare.
Se deschide un proiect nou, pentru care se alege o locație in care se va salva.

Conf.dr.ing. S.Paturca
Fereastra de lucru este prezentată în figura 1

Conf.dr.ing. S.Paturca
2.1. Rularea de exemple demonstrative
In figura urmatoare se prezinta modul de alegere a aplicatiilor demonstrative furnizate de optiunea de
ajutor.

Conf.dr.ing. S.Paturca
Conf.dr.ing. S.Paturca
Rularea unui alt exemplu demonstrativ existent in librariile Proteus 7.8.

Alegerea unui
exemplu
demonstrativ

Conf.dr.ing. S.Paturca
Selecția elementelor existente in mediul Proteus, precum: osciloscoape, analizoare de semnal, terminale, voltmetre,
ampermetre, s.a, este ilustrata in figura următoare.

Componente
predefinite, utile
Selectia unui instrument si plasarea
pentru simulare
acestuia in zona de lucru

Conf.dr.ing. S.Paturca
2.2. Deschiderea librăriei cu componente
Librăria cu componente se deschide prin selectarea pictogramei „Pick parts from libraries”, sau prin apăsarea butonului
din meniul principal, cu pictograma indicata in figura urmatoare.

Fig. 11
În fereastra „Pick Devices” se găsesc pe categorii si subcategorii componente utile în realizarea aplicațiilor.

2.3. Selectie de componente

Exercitiul 1 demonstrativ
În fereastra cu componente Pick Devices se alege microcontrolerul, în acest exemplu s-a ales PIC16f887.
La uC se specifică potențialele pinilor de alimentare şi calea către un program compilat (fișierul *.hex) într-un proiect
realizat in mediul MPLABX.

Conf.dr.ing. S.Paturca
Parametrii componentelor se editează prin dublu-click.

Se vor adăuga şi restul de elemente necesare pentru realizarea schemei electronice, in exemplul următor s-au ales: rezistoare,
LED-uri, alimentare, masa (GND).

Pentru rezistenţele de conectare a pinilor de intrare la + sau la GND, se alege valoarea uzuală, 10kOhm.

Conf.dr.ing. S.Paturca
Fig. 13

Se aduce in schema un LED, o rezistenta de limitare a curentului si se fac conexiunile. Valoarea rezistentei de
limitare a curentului prin diodă se alege considerând un curent maxim de 20mA, şi căderea de tensiune în
conducție pe diodă de 2.2V.
=> R = (5-2.2)/20e-3 = 140 ohm

Fig. 14 Calea catre fisierul cu codul programului .hex, compilat in MPLABX


Programul va fi realizat si compilat in MPLABX si va avea extensia .hex.

Conf.dr.ing. S.Paturca
In paragraful urmator sunt prezentati pasii pentru realizarea acestei aplicatii software, in mediul
MPLABX.

Conf.dr.ing. S.Paturca
3. Prezentarea mediului de dezvoltare integrat MPLABX, şi rularea unei
aplicații simple demonstrative
In aceasta secțiunea se prezintă IDE-ul MPLABX, util pentru dezvoltarea de aplicații cu microcontroler Microchip.
Pentru aplicația demonstrativa cu uC PIC16F887 pe 8 biţi.
1. După instalarea programului se lansează mediul de dezvoltare MPLABX IDE 2, se dezvolta un proiect nou,
urmând pașii ilustrații in figurile următoare.

Conf.dr.ing. S.Paturca
2. Se selectează microcontrolerul care va fi utilizat – în exemplul de față: PIC16F887

Conf.dr.ing. S.Paturca
Fereastra
proiectului

Selectia fisierului
editabil main.c

3. Se editează în fișierul main.c programul ce va rezolva o aplicație, astfel acesta va fi inclus în


proiectul exemplu deja creat la pașii anterior prezentați.

Un prim exemplu de aplicație software este prezentat în continuare:

/**********************************************************************/
/* Files to Include */
/**********************************************************************/

#if defined(__XC)
#include <xc.h> /* XC8 General Include File */
#elif defined(HI_TECH_C)
#include <htc.h> /* HiTech General Include File */
#endif

#include <stdint.h> /* For uint8_t definition */


#include <stdbool.h> /* For true/false definition */

#include "system.h" /* System funct/params, like osc/peripheral config */


#include "user.h" /* User funct/params, such as InitApp */

/**********************************************************************/
/* User Global Variable Declaration */
/**********************************************************************/

/* i.e. uint8_t <variable_name>; */

void init_porturi(void);

void init_porturi()
{
// dezactiveaza functia "analog input" pentru toti pinii care au aceasta functie
ANSEL = ANSELH = 0;

// Alegem ca iesire digitala bitul 0 al portului D (RD0)


// selecteaza directie OUT pt RD0
TRISDbits.TRISD0 = 0; // 0 - configurare ca iesire, 1 - ca intrare
// Reseteaza bitul 0 (stinge LED-ul)
Conf.dr.ing. S.Paturca
RD0 = 0;
}

/**********************************************************************/
/* Main Program */
/**********************************************************************/

void main(void)
{
unsigned long k; // contor pentru asteptare

// Initializeaza porturile
init_porturi();

// cream o bucla infinita in care se aprinde intermitent LED-ul conectat la


// pinul RD0
while(1)
{
// Seteaza bitul 0 (aprinde LED-ul)
RD0 = 1;

// Asteapta un timp
for (k = 0; k < 10000L; k++)
{}

// reseteaza bitul 0 (stinge LED-ul)


RD0 = 0;

// Asteapta un timp
for (k = 0; k < 10000L; k++)
{}
}
}

4. La pasul următor acesta va fi compilat si link-editat, prin apăsarea butonului „Build project”.

Fereastra de
lucru

Se obtine astfel fisierul executabil (intitulat în exemplul prezentat


pic16_c_aprindeLED.X.production.hex).

Conf.dr.ing. S.Paturca
Disponibilitatea mai multor proiecte în zona de lucru din MPLAB X IDE
Dacă sunt disponibile mai multe proiecte în zona de lucru, doar unul dintre acestea poate fi compilat si
link-editat la un anumit moment, acela care este setat ca proiect main. Altfel spus, pentru a crea fisierul
executabil se alege proiectul dorit prin apăsare click dreapta pe numele acestuia, iar din meniul derulant
se selectează „Set as Main Project”.

Conf.dr.ing. S.Paturca
4.Construirea schemei si rularea de aplicații in mediul Proteus

4.1- Se descarca libraria PROTEUS-ARDUINO


(https://www.theengineeringprojects.com/2015/12/arduino-library-proteus-simulation.html).

Nota informativa:

Pentru versiunile de Proteus 7 Professional, folderul care contine librariile poate fi localizat
astfel:
C:Program Files (x86)\Labcenter Electronics\Proteus 7\ProfessionalLIBRARY

 Pentru versiunile Proteus 8 Professional, folderul care contine librariile poate fi localizat:
C:ProgramData\Labcenter Electronics\Proteus 8\ProfessionalDataLIBRARY

4.2 Se extrage fișierul arhivat descarcat si se copiază cele doua fișiere obținute
(ARDUINO.IDX and ARDUINO.LIB) in PROTEUS
=> Setup directory: Labcenter\LIBRARY

4.3- Se pornește PROTEUS-ISIS si se va cauta libraria cu componente


ARDUINO in fereastra Pick Devices. In “Emulator” se gasesc 3 module Arduino.

Exercitiul 2 demonstrativ
Schema se construiește într-un proiect nou, componentele schemei se aduc in proiect pe
rand, selectate din fereastra Pick Devices, iar vizualizare acestora se face prin apăsarea
butonului P.
Valoarea rezistentei de limitare a curentului prin diodă se alege considerând un curent prin
LED intre (10-15) mA.
R = U/I = (5V-2V) /0.01A = 300 Ohm

Se poate alege R = 220 Ohm (rezistor disponibil pentru teste)


Conf.dr.ing. S.Paturca
La nivelul MCU Arduino
se adauga calea catre
fisierul .hex

Conf.dr.ing. S.Paturca
4.4 - Pentru a simula schema se rulează programul construit in ARDUINO. In meniul FILE se
selectează PREFERENCES, și se alege opțiunea de compilare ARDUINO, pas exemplificat
in figura următoare. Astfel devine programul Arduino și se copiază locația vizualizata in zona
OUTPUT.

Daca se dorește descărcarea pe MCU a fișierului executabil atunci rămâne activa


opțiunea upload.

Se compilează si se identifica locația fișierului .hex.


Conf.dr.ing. S.Paturca
Locația fișierului executabil se copiază in schema din Proteus, la nivelul MCU, prin dublu click
pe acesta.

La MCU se adauga
calea catre fisierul .hex

Pe PC locatia fisierului cu extensia .hex poate fi disponibila in zona AppData/Local/Temp

Conf.dr.ing. S.Paturca
Se ruleaza in Proteus aplicatia de simulare anterioara.

Conf.dr.ing. S.Paturca
5. Vizualizarea de exemple demonstrative disponibile in Arduino IDE

Selectare exemple
demonstrative

Zona “setup”

Zona “loop”

Zona functiilor utilizator

Exemple de functii uzuale predefinite

Conf.dr.ing. S.Paturca
Fig. From the source code to the binary executable code

Modalitatea de a cauta informatii


despre functii predefinite

Conf.dr.ing. S.Paturca
Informatii de ajutor disponibile pe site-
ul oficial, necesare penntru
cunoasterea modului de apelare al
functiilor predefinite

6.Prezentarea mediului Fritzing


Pentru proiectare se pot utiliza diverse medii, ca spre exemplu mediul Frizing, a cărui fereastră de lucru este prezentată în
figura 11.

Opțiune pentru vizualizarea și


Opțiuni selectabile pentru configurarea PCB-ului
vizualizarea schemei

Zona destinata alegerii


elementelor necesare
realizării schemei

Opțiune selectabila
pentru dezvoltarea
programului aplicației

Fereastra de lucru, necesara pentru construirea schemei

Zona pentru
parametrizarea
Fig. Exemplu de schema elementelor plasate in
fereastra de lucru

Fig. 11 Mediul Frizing si optiuni ale acestuia


Conf.dr.ing. S.Paturca
Exercitiul 2 demostrativ
Pas 1. Se deschide o aplicație demonstrativa (de exemplu aplicația cu numele Loop, care se găsește in
mediul Fritzing urmând calea ilustrata in figura următoare).

https://fritzing.org/projects/digital-output-loop
Se vizualizeaza schema la optiunile Breadoard si Schematic, PCB-ul si programul aplicatiei la optiunea
Code.

Exercitiul 3. Program de testat - Knob


Analog IN with Servo and Knob

Pas 1. Se construieste schema in Fritzing

Pas 2. Pentru teste se poate folosi programul demonstrativ Knob, disponibil in Arduino IDE.

Conf.dr.ing. S.Paturca
Program de testat

Pas 3. Se testeaza aplicatia cu un montaj similar celui prezentat in imaginea următoare.

Se testeaza aplicatia “Knob”

Conf.dr.ing. S.Paturca
ASC
Curs 4.1
Cuprins

Ø Sistem numeric
Ø Porturi digitale de I/O
Sistem numeric
sistem/
proces
Sistem numeric
senzori
sistem/
proces
Elemente de baza
- contine elementele de calcule aritmetice,
logice si functiile de control;
n Memorie (RAM - pentru citire/scriere, si ROM - doar citire),
n Interfete de intrare/iesire - pentru controlul periferiei calculatorului.

Sectiunea de memorie memoreza


 secventele de instructiuni, ce alcatuiesc programul,
 datele numerice (de intrare, sau rezultate intermediare finale)

Memorie
Memorare Memorare
program date MICROPROCESOR
(CPU)

Interfete periferice externe


Iesire Intrare control
magistrala date/adrese
magistrala date
De la / la periferice

Sectiuni de intrare sau iesire - calculatorul comunica cu perifericele exterioare, precum:


 - echipamente standard (tastatura, afisaj, etc.),
 - interfete specifice de conectare la un proces fizic controlat (traductoare, elemente de executie, etc.)
Structura functionala si fluxul de informatii in cadrul sistemului cu
microprocesor

Functii de baza ale sist.


microprocesor:
 -functia de intrare (INPUT) -
Ø legatura intre lumea Intrare Memorie Iesire colectie de circuite
exterioara sistem; logice complexe,
 -functia de iesire (OUTPUT) programabile,
Ø legatura intre sistem
capabile sa proceseze
si lumea exterioara;
 -functia de memorare date numerice, pe
(MEMORY)
U.A.L. baza unui set de
Ø pastrarea instructiuni ale
informatiilor (date, utilizatorului, uzual
rezultate), si(uneori)
bazate pe trei operatii
a instructiunilor
programului; Control fundamentale:
 -functia aritmetico-logica, aritmetice si operatii
(implementata prin ALU, ro. Microprocesor logice.
UAL)
Ø efectuarea operatiilor
aritmetice si logice in
sistem;
Sectiunea de CONTROL:
 -functia de CONTROL § genereaza si coordoneaza toate semnalele de
Ø inglobeaza totalitatea control necesare pentru a executa operatiile de control
actiunilor de calcul din ALU, si sincronizeaza transferul informatie
secventializare si datelor in sistem.
control ale activitatii
Fluxul de i nf orm atii

sistemului.
§ decodifica si executa instructiunile programului
pe baza caruia functioneaza intregul sistem.
Organizare interna
"Magistrală" - set de conexiuni fizice între blocuri prin care informaţia care

Legenda circulă are o semnificaţie prestabilită.


• Unitatea centrala de prelucrare Din punct de vedere funcţional, există trei componente :
(CPU / UCP /uP) - Magistrala de date, bidirecţională, permite circulaţia datelor (operanzi/
• Memorii (RAM si ROM) rezultate), a instrucţiunilor şi chiar a adreselor.

• Magistrale de date, Magistrale - Magistrala de adrese, unidirecţională, permite microprocesorului să


localizeze informaţia în Memorie sau în Dispozitivele de intrare/ieşire;
de adrese, Magistrale de control deci pe această magistrală “circulă” adrese.
• Interfete de intrare/iesire (I/O) - Magistrala de control permite circulaţia, bidirecţională, a semnalelor de
comandă şi control de la/la microprocesor.
Memorie program Memorie date

Magistrala

Magistrala
Microprocesor

Magistrala

De la / la
periferice

§ UCP (eng CPU) - UNITATEA CENTRALĂ DE PROCESARE


§ MEMORIA
§ I/O - DISPOZITIVELE DE INTRARE/IEŞIRE
Arhitectura CPU
Arhitectura uP 8086
Interfata Interfata
I O
I Mem O

RG

UAL

UCmd

UCP Flux Date


UC Flux
MB Cmd/Stari

SC
Legenda
Microcalculatorul structurat ca o
• UCP = {RG, UAL, UCmd} = Unitatea Centrala de Prelucrare
maşină “VON NEUMANN”
• UC = {UCP, M} = Unitatea Centrala
• MB = {UC, I/E} = Masina de Baza
• SC = {MB, Software de Baza} = Sistem de Calcul
Exemple de arhitecturi
- Arhitectura Neumann
• avantaje - folosirea unei memorie unice pentru date şi instrucţiuni
(memoria principală, externă procesorului).
• rezultă simplificarea UCP din punctul de vedere al automatului de adresare a memoriei şi al
numărului de registre implicate.
• creşte flexibilitatea sistemului, pentru că nu exista restricţii privind adresele de stocare a datelor
şi instrucţiunilor în memoria principală.

- Arhitectura Harvard
- organizare cu magistrale separate pentru date şi instrucţiuni este mai rapidă din punct de
vedere al vitezei de funcţionare.
- au o magistrală externă unică de date şi instrucţiuni, dar magistrale interne (şi circuite de
memorie tampon locale) separate pentru date şi instrucţiuni.
Microprocesor (uP) / microcontroller
(MCU)
MICROPROCESSOR MICROCONTROLLER
Microcontrollere
n procesoare specializate

n circuite VLSI care pot incorpora aproape toate componentele


unui micro-sistem de calcul:
q UCP

q memorie de program

q memorie de date

q sistem de intreruperi

q porturi de intrare/iesire digitale

q convertoare analog-numerice si numeric analogice

q interfete de comunicatie si de retea


ARHITECTURA SISTEMELOR DEDICATE
•execută instrucţiunile din memorie;
•efecutează calcule sau procesare asupra datelor, corespunzător instrucţiunilor,
Unitate centrală (UC),
procesor •iniţializează schimbul de date cu perifericele.

•asigură efectuarea secvenţială a operaţiilor şi este de


Ceas obicei implementat printr-un oscilator cu quarţ.

•stochează instrucţinile din program;


stochează datele (constante sau variabile)
utilizate de program;
Memorii
•-schimbă date cu procesorul.

Periferice
• permite conexiunea cu exteriorul; asigură anumite “servicii”
procesorului.

Magistrale
De date reţea de conexiuni între microprocesor şi celelelalte
elemente componente.
De adrese

De control
n timp predefinit de execuţie a instrucţiunilor
n arhitectură de tip Harvard (separarea memoriei de program de
memoria de date)
n sistem de întreruperi, adaptat componentelor periferice
(interfeţe, contoare, etc.), conţinute în circuit
n performanţe de calcul mai modeste, comparativ cu procesoarele
n set mai limitat de instrucţiuni în limbaj maşină
n limitări în ceea ce priveşte capacitatea de memorare
n consum redus
n cost redus
n Exemple:
q PIC12Fxx, PIC16Fxx, PIC18FXX, PIC 32Fxx
q ARM
q AVR
q Intel 8051/31, Intel 8748
n O familie este caracterizata prin:
q aceeasi arhitectura de baza
q acelasi set de instructiuni
q aceleasi instrumente de dezvoltare a programelor
n Diferente intre variante ale aceleiasi familii:
q capacitate de memorie (pentru date si pentru program)
q tipuri de interfete incluse
q numar de porturi, contoare,
n UCP – unitatea centrală de prelucrare
q asigură execuţia instrucţiunilor unui program

n ROM – memoria nevolatilă


q conţine programul de aplicaţie şi eventualele constante de program;
q poate fi: PROM (se înscrie o singură dată), EPROM (cu posibilitate de înscriere
multiplă, off-line), EEPROM (cu posibilitate de scriere în timpul funcţionării
programului);
q dimensiunea memoriei variază funcţie de varianta constructivă; Ea se poate
extinde prin adăugarea de memorii externe

n RAM – memoria de date


q păstrează variabilele programului şi stiva;
q capacitatea memoriei depinde de varianta constructivă;
q memoria RAM internă poate fi extinsă cu o memorie RAM externă
n sistemul de întreruperi
q gestionează cererile interne şi externe de întrerupere;
q surse de întrerupere : linii externe de întrerupere, canal serial (recepţie
sau transmisie de caractere) şi contoare (timer 0,1,2)

n generatorul de ceas
q generează semnalul de ceas necesar pentru funcţionarea UCP şi
furnizează o frecvenţă de referinţă pentru contoarele interne şi canalul
serial

n porturile de intrare/ieşire
q permit achiziţia sau generarea de semnale digitale
q un semnal poate fi configurat ca intrare, ieşire sau semnal bidirecţional

n canalul serial
q implementează protocolul de comunicaţie (ex. RS 232 -canal serial
asincron, bidirecţional pe caracter); Unele variante au canal serial
suplimentar, care implementează protocolul I2C. Acest protocol permite
construirea unei magistrale seriale în locul celei paralele clasice
n timer 0, 1, 2
q set de contoare utilizabile pentru generarea periodică a unor întreruperi (ex.:
pentru ceas de timp-real), pentru numărarea unor evenimente externe sau
pentru generarea frecvenţei de transmisie serială

n CNA – convertor numeric/analogic


q poate fi folosit pentru generarea unui semnal analogic;

n CAN – convertor analog/numeric


q folosit pentru achiziţia semnalelor analogice;
(de exemplu pot fi citite prin multiplexare 8 intrări analogice)

n PWM – ieşire cu modulaţie în lăţime de impuls (Puls Width Modulation)


q permite generarea unei comenzi asemănătoare unui semnal analogic,
folosindu-se o ieşire digitală

n WD – contor Watch-Dog
q utilizat pentru detectarea funcţionării anormale a UCP;
q dacă contorul nu este reiniţializat periodic, se consideră o anomalie şi ieşirea
contorului va provoca o reiniţializare a procesorului
Sistem cu Microprocesor
Porturi de intrare/iesire:
§ registre continute in interfetele de intrare/iesire, prin care UCP controleaza
transferul de date
§ accesul la porturi:
- prin adresa si prin instructiuni dedicate (ex: IN, OUT); putine instructiuni
au acces direct la porturi de I/E
- spatiu separat de adrese pentru memorie si pentru porturi de I/E
(exceptie: MCU)
§ Spaţiul dispozitivelor de intrare/ieşire
§ Accesarea porturilor ca porturi propriu-zise
§ Accesarea porturilor ca locaţii de memorie
§ Tehnici de intrare/ieşire uzuale
§ Interogarea continuă (tehnica “polling”)
§ Întreruperi
Utilizare porturi digitale de I/O
Citiri de la porturi de I/O
- Cuvinte de stare – citire informatii despre functionarea interfetei (viteza de lucru, citire
stare parametri, etc.)
- Cuvinte de date – citire date de la interfata (stare biti port digital, valori specific conversiei
A/D, etc.)
Scrieri catre porturi de I/O
- Cuvinte de comanda – setare parametri de functionare pentru interfata (stare/resetare stare
parametri, comenzi ON/OFF pentru elemente de iesire digitale, etc.)
- Cuvinte de date – trimitere date spre interfata (valori conversie D/A, stare/resetare biti port
iesire digital, etc.)
Pentru oricare cuvant de date al portului exista un element exterior de tip
inchis/deschis (ON/OFF sau “1”/”0”)
Input – citeste stare elementului de tip contact – are doua stari -> buton/tasta/contact
Output – seteaza starea unui element de executie de tip binary -> releu, LED,
contactor, bec, etc.
Utilizare porturi digitale de I/E
Echipament 0
1
2

n-1
n

Echipament 0
1
2

n-1
n
Identificarea starii unui echipament - INPUT

Identificarea starii echipamentului conectat la un port de intrare se face prin operatia de testare, astfel:
- Se “izoleaza” bitul corespunzator din cuvantul de date citit de la portul de intrare
- Se construieste o constanta numita masca de testare, pentru a izola bitul de identificat. Aceasta va avea
valoarea “1” pe pozitia bitului de testat si “0” in rest
- Se efectueaza operatia logica “SI” (AND) intre cuvantul de date cittit de la port si masca construita.
Cuvant de date citit
de la port de intrare bit_n .…bit_k+1 bit_k bit_k-1 .…bit_0 Data_INPUT
(INPUT):
Operatia logica:
AND
Mască de testare,
0 ………....0 1 0 …….…0
Masca_bit_k
pentru izolare bit_k:

Rezultat 0 ………....0 bit_k 0 …….…0


Rez_bit_k

Rez_bit_k = Data_INPUT & Masca_bit_k;


if (Rez_bit_k)
{ // bitul k = 1,
// se completeaza cod corespunzator }
else
{ // bitul k = 0
// se completeaza cod corespunzator }
Setarea starii unuia sau mai multor echipamente - OUTPUT

- Se seteaza bitul/biti corespunzator(i) din cuvantul de date scris carte port, prin punerea valorii “1” pe bitul/bitii
de setat.
- Se construieste o constanta numita masca pentru setarea bitului/bitilor de setat, care va avea valoarea “1”
pe pozitia bitului/bitilor pentru setat, iar restul de biti vor fi “0”
- Se efectueaza operatia logica “SAU” (OR) intre cuvantul de date anterior scris la portul de lucru (pentru a nu
modifica stare altor echipamente conectate la port) si masca.

Cuvant de date scris


anterior la port de iesire bit_n .…bit_k+1 bit_k bit_k-1 .…bit_0 Data_OUTPUT
(OUTPUT):
Operatia logica:
OR
Mască pentru setare
bit_k: 0 ………....0 1 0 …….…0 Masca_setare_bit_k

Rezultat Rez_OUTPUT_bit_k
bit_n .…bit_k+1 1 bit_k-1 .…bit_0

Setarea bitului k:
Masca_bit_k = 10000b;// valoarea “1” trebuie pozitionata pe pozitia k
Data_OUTPUT |= Masca_setare_bit_k;
// OUTPUT la port Rez_OUPTUT_bit_k Ex.
Data_OUTPUT | = 100000b;
Resetarea starii unuia sau mai multor echipamente - OUTPUT

- Se reseteaza bitul/biti corespunzator(i) din cuvantul de date scris carte port, prin fortarea pe valoarea “0” a
bitului/bitilor de resetat.
- Se construieste o constanta numita masca pentru resetarea bitului/bitilor de resetat, care va avea valoarea “0”
pe pozitia bitului/bitilor pentru resetat, iar restul de biti vor fi “1”
- Se efectueaza operatia logica “SI” (AND) intre cuvantul de date anterior scris la portul de lucru si masca. Astfel,
nu se modifica starea altor echipamente conectate la portul respective.

Cuvant de date scris


anterior la port de iesire bit_n .…bit_k+1 bit_k bit_k-1 .…bit_0 Data_OUTPUTt-1
(OUTPUT):
Operatia logica:
AND
Mască pentru resetare
bit_k: 1 ………....1 0 1 …….…1 Masca_resetare_bit_k

Rezultat bit_n .…bit_k+1 0 bit_k-1 .…bit_0 Rez_OUTPUT_bit_kt

Resetare echipament k
Resetare bit k:
Masca_bit_k = 1111111110111111b; // valoarea 0 trebuie
pozitionata pe pozitia k
Data_OUTPUT &= Masca_resetare_bit_k;
// OUTPUT la port Rez_OUPTUT_bit_k Exemplu:
Data_OUTPUT & = 11111011b;
// OUTPUT la port Rez_OUPTUT_bit_2
ASC
Curs 4_2
Cuprins

Ø Sistem numeric, Porturi digitale de I/O


(continuare)
Sistem numeric - recapitulare
sistem/
proces

conf.dr.ing. S.Patura
Sistem numeric - recapitulare
senzori
sistem/
proces

conf.dr.ing. S.Patura
Utilizare porturi digitale de I/O - recapitulare
Citiri de la porturi de I/O
- Cuvinte de stare – citire informatii despre functionarea interfetei (viteza de lucru, citire stare parametri, etc.)
- Cuvinte de date – citire date de la interfata (stare biti port digital, valori specific conversiei A/D, etc.)
Scrieri catre porturi de I/O
- Cuvinte de comanda – setare parametri de functionare pentru interfata (stare/resetare stare parametri, comenzi
ON/OFF pentru elemente de iesire digitale, etc.)
- Cuvinte de date – trimitere date spre interfata (valori conversie D/A, stare/resetare biti port iesire digital, etc.)

Pentru oricare cuvant de date al portului exista un element exterior de tip inchis/deschis (ON/OFF sau “1”/”0”)
Input – citeste stare elementului de tip contact – are doua stari -> buton/tasta/contact
Output – seteaza starea unui element de executie de tip binary -> releu, LED, contactor, bec, etc.

conf.dr.ing. S.Patura
Exemplu

n Microcontrolerul ATmega-328 si porturile


acestuia

conf.dr.ing. S.Patura
Funcționalități ale pinilor microcontrolerului ATmega328p,
corelare cu pinii plăcii de dezvoltare Arduino

Microcontrolerul ATmega-328
- de tip RISC (Reduced Instruction Set)
pe 8 biți, din familia AVR (Advanced
Virtual RISC) a firmei Atmel (din 2016
Microchip)
- performanțe bune, poate sa execute
instrucțiuni într-un singur ciclu de ceas,
atingând randamente de 1MIPS (Millions
of instructions per second) per MHz.
- optimizat pentru consum redus de
putere raportat la viteza de procesare
- poate fi folosit pentru sisteme
embedded.

conf.dr.ing. S.Patura
Pinii microcontrolerului ATmega328
Pinii microcontrolerului ATmega328 sunt împărțiți în porturi
astfel:
n VCC - pin pentru sursa de tensiune digitală (potențial pozitiv).
n GND - pin de masă (potențial negativ).
n Portul B - port bidirecțional (I/O) pe 8 biți, format din pinii de la
PB0 la PB7, fiind mapati pe pinii digitali Arduino de la pinul 8 la
13.
q rezistențe interne de agățare (rezistențe de tip pull-up).
n Portul D - port bidirecțional (I/O) pe 8 biți, format din pinii de la
PD0 la PD7, corespunzatori pinilor digitali Arduino de la 0 la 7.
q rezistențe interne de agățare (rezistențe de tip pull-up).
n Portul C - port bidirecțional (I/O) pe 7 biți, Pinii 6 si 7 sunt
accesibili doar pe placa Arduino Mini. Pinii de la PC0 la PC5
sunt mapati pe pinii analogici ai placii Arduino de la pinul 0 la 5.
q rezistențe interne de agățare (rezistențe de tip pull-up).
n PC6/RESET - pin de I/O daca siguranța RSTDISBL este programată.
Dacă siguranța RSTDISBL nu este programată este transformat în
pin de RESET.
n AVCC - pin unde se conectează sursa de tensiune pentru convertorul
analog digital (CAD). Trebuie conectat extern la VCC chiar daca
CAD-ul nu este folosit.
n AREF - pin analog pentru tensiunea de referință pentru CAD.
n ADC[6:7] reprezintă intrările 6 și 7 pentru CAD în cazul încapsulărilor
TQFP și VFQFN. Acești pini sunt alimentați de sursa de tensiune
pentru partea analogică. Pinii PC[0:5] pot fi configurați ca celelalte 6
intrări pentru CAD

Numerotarea pinilor
conf.dr.ing. S.Patura
microcontrolerului ATmega328
Tabel cu regiștrii de configurare a porturilor

PORTD maps to Arduino digital pins 0 to 7


DDRD - The Port D Data Direction Register - read/write The DDR register, determines whether
PORTD - The Port D Data Register - read/write the pin is an INPUT or OUTPUT.
PIND - The Port D Input Pins Register - read only

PORTB maps to Arduino digital pins 8 to 13 The two high bits (6 & 7) map to the The PORT register controls whether the
crystal pins and are not usable pin is HIGH or LOW,
DDRB - The Port B Data Direction Register - read/write
PORTB - The Port B Data Register - read/write
PINB - The Port B Input Pins Register - read only The PIN register reads the state of
PORTC maps to Arduino analog pins 0 to 5. Pins 6 & 7 are only accessible on the
INPUT pins set to input
Arduino Mini
DDRC - The Port C Data Direction Register - read/write
PORTC - The Port C Data Register - read/write
PINC - The Port C Input Pins Register - read only

conf.dr.ing. S.Patura
Registre
is the direction register for Port D (Arduino digital pins 0-7).
The bits in this register control whether the pins in PORTD are configured as
inputs or outputs.

Example:

DDRD = 0b11111110; // sets Arduino pins 1 to 7 as , pin 0 as


DDRD = DDRD | 0b11111100; // this is safer as it sets pins 2 to 7 as outputs
// without changing the value of pins 0 & 1, which are RX & TX
is the register for the state of the outputs.
Example:

PORTD = 0b10101000; // sets digital pins 7,5,3


PORTD=PORTD| 0b11111100;
PORTD|= 0b11111100;
is the input register variable It will read all of the digital input pins at the
same time.

conf.dr.ing. S.Patura
conf.dr.ing. S.Patura
Exemple
Exemple:
- setarea pinului PB5 ca pin de ieșire se inițializează registrul
DDRB = 0b00100000

- setarea pinului PB5 cu valoarea logică 1 se inițializează registrul


PORTB = 0b00100000

- LED conectat la pinul 13


DDRB |= 0b00100000; //Setare pin PB5 ca pin de ieșire
PORTB &= 0b11011111; //Resetarea bitului 5 de la portul B,
inițializarea stării pinului PB5 cu 0 (pentru a stinge LED-ul conectat la
pinul 13)

conf.dr.ing. S.Patura
Exemple

conf.dr.ing. S.Patura
Buton

FLOAT, is when a pin is not in a fixed state and fluctuates. This


can cause the state of pin to vary between 0 and 1, and end up
giving false positives.

Butoanele pot transmite nivel de tensiune diferit, făcând ca sistemul să fie binar, ON sau OFF,
(de exemplu, 5 Volți = ON = circuit închis și 0 Volți = dezactivat = circuit deschis) reprezentat prin logica binară de “0” și “1”.
În urma fluctuațiilor apărute la apăsarea butonului, microcontrolerul poate înregistra mai multe apăsări și, într-un final, mai multe
semnale de 0 și 1 consecutiv. Acest fenomen poate introduce erori în sistem.
Pentru a menține tensiunea de ieșire la un nivel constant la apăsarea butonului, se conectează o rezistență de Pull-up sau Pull-
down.
Buton
Rezistorul Pull-down, de coborâre la 0, are rolul de a păstra valoarea logică 0 la ieșire atunci când
nu este apăsat butonul.
Stabilirea unui nivel logic sigur (0 în acest caz) împiedică apariția aleatorie a unei valori 0 sau 1 la intrarea digitală a
MCU, datorită unor eventuale zgomote electrice.

conf.dr.ing. S.Patura
Pull-up / Pull-down Resistor

Rezistența de Pull-up poate fi aleasă de ordinul kΩ, de exemplu Rp= 4.7kΩ

The official Arduino docs recommend a 10kΩ pull-down or pull-up resistor for digital input pins.
On the ATmega microcontrollers (those on the Arduino Uno and Leonardo), the internal pull-up resistor is 20kΩ.

conf.dr.ing. S.Patura
conf.dr.ing. S.Patura
conf.dr.ing. S.Patura
conf.dr.ing. S.Patura
Alta componenta uzual
incluse pe cipul
microcontrolerului

conf.dr.ing. S.Patura
Convertoare Analogic-Digitale (CAD)

n componente uzual incluse pe cipul


microcontrolerului, permitand masurarea de
marimi analogice
n caracteristici:
q Rezolutie - numar de biti
q Precizie - valoarea analogica corespunzatoare
unui bit
q Viteza de conversie - durata conversiei

conf.dr.ing. S.Patura
Ex. - Interfata CAD
Start Indicator de
Pinul AnCom al convertorului se va conecta
l a m a sa p a r t ii a n a l o g ic e d e m a s u ra a conversiei A/D stare a Bitii de date de Circuit
conversiei A/D
schemei. iesire ai
convertorului A/D
tampon
Pinul DigCom se conecteaza la masa partii
digitale a schemei. Pinul B&C trebuie utilizat
pentru a genera inceperea unei noi conversii
(start conversie), la aparitia unui puls pozitiv
pe acest pin.

Puls va fi generat, in schema propusa, la efectuarea


unei operatii de output la portul P1 al sistemului.
Semnalul de selectie a portului, P1, impreuna cu
semnalul de scriere, WR, genereaza semnalul ITGWR
aplicat pe pinul B&C al convertorului A/D. Bitii de date
de iesire ai convertorului (BIT1 la BIT10) vor fi conectati Magistrala
la intrarile unor circuite tampon de tip 8286 prin care vor de date
putea fi preluate, la o operatie de citire de la portul P1 pentru un
pe magistrala de date, si transferate in microprocesor. sistem cu uP
Portul este configurat ca un port de 16 biti, la o citire
t ransf er and u- s e in f or m a t ie pe t o ti c ei 16 b i ti ai
magistralei de date a sistemului. De remarcat utilizarea
bitului D15 de date ca bit indicator de stare a conversiei,
prin conectarea acestui bit la iesirea DATA_READY a
convertorului A/D. Pe durata unei conversii A/D, acest
semnal are valoare logica 1, iar dupa incheierea
conversiei, valoarea logica 0. pinul T la nivel 1 logic
transferare a datelor A ->B

Prin program, utilizatorul va putea efectua operatii de citire de la portul P1 si, prin testarea bitului D15 de date, va putea determina starea conversiei A/D.
Ceilalti biti de date (D10¸D14) nu sunt utilizati si ar putea, in principiu, sa fie folositi ca biti de intrare de uz general. De remarcat faptul ca circuitele 8286 au
selectat doar sensul de transferare a datelor de la pinii A catre pinii B, prin conectarea pinului T la nivel 1 logic (la +5 V). Activarea circuitelor tampon este
facuta la aparitia semnalului de selectie P1, simultan cu semnalul de citire, RD (generand semnalul ITGRD aplicat intrarilor OE ale circuitelor 8286).

 Circuitele de interfață au rolul de a converti semnalele de intrare de diferite forme în semnale logice
adaptate unității centrale și de a transforma semnalele logice ale unității centrale în semnale de ieșire
corespunzătoare. conf.dr.ing. S.Patura
Digital-Analogice (CDA

n componente uzual incluse pe cipul microcontrolerului, permitand generarea de marimi analogice.

Contine registre specifice pentru programare si pentru setarea datelor de convertit.


n caracteristici:
q Rezolutia - numar de biti

q Precizia – valoarea analogica corespunzatoare unui bit


q Viteza de conversie – durata conversiei

n utilizare:
q Inscriere data de convertit in registrul de date pentru lansarea conversiei
q Nu necesita timp de asteptare pentru terminarea conversiei

conf.dr.ing. S.Patura
ASC
Curs 5
Cuprins

Ø Arhitectura sistemului
Ø Memorii
Sistem cu Microprocesor
Exemple de memorii

ROM (read-only memory)


PROM (programmable ROM)
EPROM (erasable programmable ROM) and UV-EPROM
EEPROM (electrically erasable programmable ROM)

RAM (random access memory)


DRAM (dynamic RAM)
Organizare interna si memorarea informatiei
Organizarea interna a unui circuit de memorie de m cuvinte de cate n biti
Aparitia unei operatii cu memoria de la o anumita adresa determina activarea tuturor celulelor de memorie
elementara de la adresa respectiva (de pe linia cu aceeasi adresa).
Memorie - pini de adrese si de date
Exemplu de conectare de cipuri de memorii la CPU

RAM
8Kx8

8K=23x210=213
=>x=13
=>A0...A12

y=8 => D0...D7


Exemplu de proiectare de sistem cu uP

Rezolvare:

Linie de intrare
in decodificator
Schema de conectare a circuitelor de memorie RAM la magistralele
sistemului cu microprocesor
CSP 0
O0

CSP 1
O1

RD

CS

CS

CS

CS

S-ar putea să vă placă și