Sunteți pe pagina 1din 153

IoT

Dan Marius Dobrea, “Gheorghe Asachi” Technical University,


Faculty of Electronics, Telecommunications and Information Technology,

Iaşi, Romania
2020
3.10. CC2650 și CC3200
 În cadrul acestei discipline vom lucra cu două sisteme ce au
la bază:
CC2650 SimpleLink multi-standard 2.4 GHz ultra-low power wireless
Faculty of Electronics, Telecommunications and Information Technology


MCU
 CC3200 SimpleLink™ Wi-Fi® and Internet-of-Things solution -
Single-Chip Wireless MCU

 CC2650: Cortex-M3
 CC3200: Cortex-M4

 Amândouă procesoarele oferă o performanță de:


 1.25 DMIPS/MHz,
 2.1 MIPS/MHz,
 putând lucra la o frecvență maximă de 200 MHz.
”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro 2
3.10. CC2650 și CC3200
Faculty of Electronics, Telecommunications and Information Technology

 Amândouă procesoarele:
 arhitectură ARMv7-M
 instrucțiuni Thumb/Thumb-2 - includ instrucțiuni pe 16 și 32 de biți
 Diferența fundamentală:
 setul de instrucțiuni de tip DSP (SIMD) existent în Cortex-M4
 Opțional exista și un procesor de tip FPU – pentru Cortex-M4F
 Nr. total de instrucțiuni 291 (186 de bază Cortex-M3 + 80 SIMD + 25
FPU), pentru Cortex-M4F
”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro 3
3.10. CC2650 și CC3200
Faculty of Electronics, Telecommunications and Information Technology

”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro 4


3.10. CC2650 și CC3200
 Studiu de caz: aplicație care realizează o transformată
Furier rapidă (FFT) pe 512 puncte la fiecare 0.5 secunde 
Cortex-M3 consumă pentru același task de trei ori mai
Faculty of Electronics, Telecommunications and Information Technology

multă putere decât Cortex-M4.

”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro 5


Setul de instrucțiuni Thumb & Thumb-2

 caracteristică fundamentală a acestui procesor (de fapt a


tuturor procesoarelor implementate din versiunea 7 a
Faculty of Electronics, Telecommunications and Information Technology

arhitecturii ARM subversiunile M, R și A): existența implicită


a unui nou set de instrucțiuni, Thumb-2 ISA (Instruction Set
Architectures), ce are drept obiectiv fundamental unificarea:
 setului inițial de instrucțiuni ARM pe 32 de biți cu cel de tip
 Thumb codat doar pe 16 biți:
 introdus pentru prima dată în cadrul arhitecturii ARMv4 și
 implementat, tot pentru prima dată în cadrul nucleului ARM7TDMI

 Setul de instrucțiuni Thumb-2 a fost introdus opțional (în


diferite variante ale versiunii arhitecturale ARMv6) încă din
anul 2001.

”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro 6


Setul de instrucțiuni Thumb & Thumb-2
Faculty of Electronics, Telecommunications and Information Technology

 Necesitatea introducerii setului de instrucțiuni Thumb


(codat pe 16 biți), în plus față de setul standard de
instrucțiuni existent în arhitectura ARM (set de instrucțiuni
codat pe 32 de biți), a fost generată de dorința optimizării
trioului:

 performanță (de dorit cât mai ridicată),


 costuri (cât mai reduse) și
 consum (cât mai mic).

”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro 7


Setul de instrucțiuni Thumb & Thumb-2
 Instrucțiunile din setul Thumb sunt direct echivalente cu
un subset (cel mai utilizat) din setul de instrucțiuni ARM
 Deci, setul de instrucțiuni Thumb este un subset al setului
Faculty of Electronics, Telecommunications and Information Technology

de instrucțiuni ARM.

 Thumb codate pe 16 biți fiind obținute prin:


 considerarea diferiților operanzi existenți din setul inițial de
instrucțiuni ARM drept operanzi impliciți sau

 a limitării accesului la diferiții regiștri existenți

”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro 8


Setul de instrucțiuni Thumb & Thumb-2
 a limitării accesului la diferiții regiștri existenți
Faculty of Electronics, Telecommunications and Information Technology

 se obține:
 o reducere a lungimii instrucțiunilor, pe seama
 pierderii flexibilității și diferitelor funcționalități existente în setul
inițial de comenzi ARM (de ex. numai o parte din regiștrii de uz
general pot fi accesați).
 Cea mai mare parte a instrucțiunilor din setul Thumb sunt
decodate și, ulterior, mapate direct în instrucțiuni din setul
ARM, permițând în final funcționalități identice cu acestea.
”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro 9
Setul de instrucțiuni Thumb & Thumb-2
Faculty of Electronics, Telecommunications and Information Technology

”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro 10


Setul de instrucțiuni Thumb & Thumb-2
 Deoarece nu întreg setul de instrucțiuni ARM își are
corespondent în setul de instrucțiuni Thumb - mai multe
instrucțiuni de tip Thumb sunt necesare pentru a
executa o instrucțiune de tip ARM
Faculty of Electronics, Telecommunications and Information Technology

 Nu există instrucțiuni de tip Thumb necesare în:


 accesare regiștrilor coprocesorului (dacă există) sau
 instrucțiuni de tipul SIMD (single instruction multiple data).

 Prin utilizarea setului de instrucțiuni Thumb se:


 scad performanțele procesorului (viteză mai mică de execuție
datorată necesității decodării instrucțiunilor) în schimbul obținerii
unei:
 scăderii a lungimii programelor (o creștere a densității codului) cu
aproximativ 30%
”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro 11
Setul de instrucțiuni Thumb & Thumb-2
 Un program scris în Thumb
necesită mai multe
instrucțiuni decât un
program identic scris cu
Faculty of Electronics, Telecommunications and Information Technology

setul ARM codul rezultant


va fi mai scurt

 Prin utilizarea combinată a


seturilor de instrucțiuni
ARM și Thumb se poate
jongla între:
 obținerea unor performanțe
ridicate,
 a unui cost redus sau
 a unui consum redus.
”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro 12
Setul de instrucțiuni Thumb & Thumb-2

 Obținerea unor programe de dimensiuni reduse influențează 


cantitatea de memorie (internă sau externă) necesară sistemului
(în sensul diminuări acesteia)  o scădere a costurilor generale
Faculty of Electronics, Telecommunications and Information Technology

ale sistemului dezvoltat.


 Trecerea la un microcontroler sau DSP din aceeași familie dar cu
caracteristici superiore de memorie (de cele mai multe ori
dispozitivul superior dublează cantitate de memorie ce o conține cel
inferior din aceeași clasă) determină creșterea costurilor cu sume
variind de la câțiva euro pana la zeci de euro.
 De exemplu, dacă comparăm microcontrolerele pe 8 biți :
 ATMega64 (ATMEGA64-16AI circuit cu 64 pini, ce lucrează la o frecvență de
16 MHz, având o memorie flash de 64 Kb) cu un preț de 8.9 USD pentru o
singură bucată versus
 ATMega128 (ATMEGA128-16AC circuit cu 64 pini, 16 MHz, 128 Kb) preț
untar de 13.90 USD
 vom obține o diferență de 5 USD.

”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro 13


Setul de instrucțiuni Thumb & Thumb-2
 O “densitate” mare a codului 
(a) scăderea costurilor dar și
(b) scăderea dimensiunii fizice a dispozitivelor
 Programe mici pot fi stocate în memoria internă a SoC.
Faculty of Electronics, Telecommunications and Information Technology

 accesarea memoriei externe  activează circuitele periferice de interfațare cu


memoria externă  o creștere a consumului, dar simultan cu accesarea memoriei
externe (memorie lentă ce implică utilizarea mai multor cicli procesor) rezultând
viteze scăzute de execuție + creșterea consumului.
 Performanțele finalizării unei anumite activități sunt prioritare 
trebuie executate a.î. consumul sistemului să fie cât mai redus.
 Prin utilizarea unui set de instrucțiuni mai rapide, puternice și eficiente
se poate reduce frecvența de lucru a procesorului.
 Reducerea frecvenței de lucru generează costuri reduse, reducându-se
totodată și consumul.
 Păstrând o frecvență constantă de lucru simultan cu utilizarea unui set
de instrucțiuni mai rapid se poate reduce consumul
 prin reducerea timpului necesar îndeplinirii unei anumite sarcini și trecerea mai
rapidă a sitemului, de tip SoC, într-un mod de consum redus

”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro 14


Setul de instrucțiuni Thumb & Thumb-2

 În situația arhitecturii de tip ARM


 părțile sensibile ale aplicației, precum tratarea unor întreruperi, vor fi
scrise cu ajutorul setului de instrucțiuni de tip ARM,
Faculty of Electronics, Telecommunications and Information Technology

 restul aplicației (pe cât de mult este posibil) va fi scrisă utilizând


setul de instrucțiuni Thumb.

 Pentru a nu schimba modurile de lucru între ARM și Thumb


ISA s-a creat un nou set de instrucțiuni Thumb-2

 Thumb-2 format din:


 vechiul set de instrucțiuni Thumb ce a fost completat cu noi instrucțiuni (aproximativ
cu 130 noi instrucțiuni) pe 16 și pe 32 de biți (cele pe 32 de biți sunt derivate din
instrucțiunile ARM echivalente)
 un număr de noi instrucțiuni ce îmbunătățește setul de ISA ARM pe 32 de biți.

”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro 15


Setul de instrucțiuni Thumb & Thumb-2
 Codul rezultat prin utilizarea noului set Thumb-2 urmărește
simultan aceleași obiective tradiționale:
 creșterea densității codului (obiectiv similar Thumb ISA) și
obținerea unor performanțe similare setului de instrucțiuni ARM pe
Faculty of Electronics, Telecommunications and Information Technology


32 de biți.

”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro 16


Setul de instrucțiuni Thumb & Thumb-2
 Programele pot fi scrise în întregime utilizând Thumb-2 ISA ce tinde să
devină setul standard de instrucțiuni a arhitecturii ARM.
 Subversiunea M (Cortex-M3 și Cortex-M4) a versiunii ARMv7
(microcontrolere) suportă doar setul de instrucțiuni Thumb-2.
Faculty of Electronics, Telecommunications and Information Technology

 Noile instrucțiuni Thumb-2 au fost implementate ținând cont de analiza


statistică a unui număr mare de programe scrise utilizând seturile de
instrucțiuni ARM și Thumb având în vedere:
 creșterea performanțelor,
 a puterii și eficienței setului de instrucțiuni,
 a existenței unor instrucțiuni echivalente întregului set ARM,
 a capacității noului set de instrucțiuni de a accesa întreaga funcționalitate a
coprocesorului (dacă există),
 de a fi capabile să lucreze cu instrucțiuni de tipul SIMD etc.

”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro 17


Programarea eficientă în C

 Scop: de a prezenta diferite moduri de lucru și implementări


specifice în dezvoltarea programelor ce au drept scop
optimizarea diferitelor subroutine (în special a celor mai des
Faculty of Electronics, Telecommunications and Information Technology

utilizate) pentru o viteză mai mare de execuție sau o


lungime mai mica a codului

 Pentru aceasta:
 o cunoaștere profundă a părții hardware pe care codul rulează
 O cunoaștere a limbajului de ansamblare

 Dezavantaj: la sfârșit codul nu va mai fi la fel de ușor de


înțeles – din acest motiv este foarte important să comentați
aceste zone de cod și nu numai

”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro 18


Programarea eficientă în C: Apelul de funcții

 Există mai multe standarde care reglementează


modalitatea în care se apelează funcțiile dezvoltate în C:
 ARM Procedure Call Standard (APCS),
Faculty of Electronics, Telecommunications and Information Technology

 Thumb Procedure Call Standard (TPCS) și


 ARM Architecture Procedure Call Standard (AAPCS).

 Standardul utilizat actual este AAPCS

 Sintetizând:
 primele 4 variabile de tip integer vor fi trimise ca argumente în
cadrul funcției prin intermediul primilor 4 regiștri: r0, r1, r2 și r3, în
timp ce
 următoarele argumente de tip întreg vor fi plasate pe stivă

”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro 19


Programarea eficientă în C: Apelul de funcții
Faculty of Electronics, Telecommunications and Information Technology

 Dacă o funcție va întoarce o valoare de tip întreg aceasta se


va regăsi, după finalizarea execuției funcției, în registrul r0

”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro 20


Programarea eficientă în C: Apelul de funcții

 Dacă valori pe 64 de biți trebuie trimise către funcții


(precum long long sau double)  acestea vor fi trimise
Faculty of Electronics, Telecommunications and Information Technology

prin:
 doi registri consecutivi (primul argument r0 și r1, al doilea argument
r2 și r3) iar
 următoarele valori prin intermediul stivei.
 Dacă aceleași tip de valoare ar trebui returnată aceasta se
va realiza prin intermediul regiștrilor r0 și r1

 Concluzie  este mult mai eficient (se obține o viteză mai


mare de transfer) să realizăm apelul funcțiilor cu argumente
care se stochează în regiștri, decât trimiterea valorilor prin
intermediul stivei
”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro 21
Programarea eficientă în C: Apelul de funcții
Faculty of Electronics, Telecommunications and Information Technology

”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro 22


Programarea eficientă în C: Apelul de funcții
 Pentru păstrarea eficienței în transmiterea argumentelor
către funcții (avem mai mult de 4 valori de tip întreg) se
recomandă gruparea acestora în structuri de date
Faculty of Electronics, Telecommunications and Information Technology

”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro 23


Programarea eficientă în C: Variabile locale

 Arhitectura ARM poare lucra (încărca/salva) într-un mod


foarte eficient date pe 8 biți, 16 biți sau 32 de biți
Faculty of Electronics, Telecommunications and Information Technology

 cele mai multe operații de procesare sunt pe 32 de biți 


motivația pentru care tipurile de date pe 32 de biți sunt
preferate reprezentărilor pe 8 sau 16 biți

”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro 24


Programarea eficientă în C: Variabile locale
 conștientizarea efectul generat de utilizarea unei
variabile locale care nu este pe 32 de biți
Faculty of Electronics, Telecommunications and Information Technology

”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro 25


Programarea eficientă în C: Variabile locale
Faculty of Electronics, Telecommunications and Information Technology

”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro 26


Programarea eficientă în C: Variabile locale

 compilatorul trebuie să ia în calcul și situația în care i este


255 și la o nouă incrementare a variabilei i aceasta trebuie
să ia valoarea zero  problemă rezolvată prin intermediul
Faculty of Electronics, Telecommunications and Information Technology

instrucțiunii uxtb (extinde o valoare pe 8 biți către o valoare


pe 32 de biți )

 ldr.w r3, [r2, r1, lsl #2]


 necesitatea existenței modulului
Barrel Shifter

 .w
 genereze o instrucțiune pe 32 de
biți într-o zonă de cod Thumb-2
”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro 27
Programarea eficientă în C: Variabile locale
Faculty of Electronics, Telecommunications and Information Technology

”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro 28


Programarea eficientă în C: Variabile locale
Faculty of Electronics, Telecommunications and Information Technology

 datele de intrare sunt stocate pe 16 biți  sxth (sign extend halfword)


convertește o valoare pe 16 biți la una pe 32 de biți
”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro 29
Programarea eficientă în C: Variabile locale

 am dovedit avantajele utilizării tipului de dată int față de tipurile de date


char sau short
 comparăm eficiența utilizării variabilelor signed int comparativ cu cele
unsigned int
Faculty of Electronics, Telecommunications and Information Technology

 D.p.d.v. al operațiilor de adunare, scădere și multiplicare nu există


diferențe de performanțe între operațiile cu semn și cele fără semn
 Când vorbim de operațiile de împărțire încep să apară diferențe
 asrs (arithmetic shift right)  necesitatea unei instrucțiuni suplimentare

”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro 30


Programarea eficientă în C: Variabile locale

 împărțim la alte valori oarecare, care nu sunt puteri ale lui 2


Faculty of Electronics, Telecommunications and Information Technology

 Pentru împărțire se utilizează instrucțiuni precum sdiv


(signed divide) sau udiv (unsigned sivide)
 se execută între minim 2 cicluri mașină și maxim 12 cicluri
mașină
 deplasări la dreapta, instrucțiuni ce sunt realizate într-un
singur ciclu mașină
”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro 31
Programarea eficientă în C: Execuții repetitive

 vom analiza diferite moduri de execuție repetitivă a


diferitelor zone de cod (prin intermediul buclelor for și
Faculty of Electronics, Telecommunications and Information Technology

while) și vom găsi acele modalități cele mai optime de


implementare a acestor secțiuni de cod

 vom considera aceeași funcție prezentată anterior


(sumarea a 64 de valori) în 2 implementari diferite bucla for

 de o așa natură astfel încât ambele implementări să


execute în mod corect programul

”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro 32


Programarea eficientă în C: Execuții repetitive
Faculty of Electronics, Telecommunications and Information Technology

”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro 33


Programarea eficientă în C: Execuții repetitive

 implementare optimală în 2 instrucțiuni – subs și bne


 utilizarea pointerilor !!!  oricum nu are importanță ordinea
Faculty of Electronics, Telecommunications and Information Technology

în care se face adunarea

 Pentru o variabilă de tip contor fără semn (unsigned int)


verificarea condiției de oprire a buclei i != 0 sau i > 0 va
genera același cod
 Dar, dacă variabila va fi de tip “cu semn” (signed int) o
condiție de tipul i > 0 va genera codul:
subs r0, r0, #1
cmp r0, #0
bgt $C$L2
”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro 34
Programarea eficientă în C: Execuții repetitive

 combinarea 2 sau mai multe buclelor existente într-una


singură – deci vom combina corpurilor celor 2 bucle
Faculty of Electronics, Telecommunications and Information Technology

 Se elimină trei instrucțiuni:

care se execută de 10000 de ori


 + rescrierea codul buclei cu test la sfârșit

”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro 35


Programarea eficientă în C: Execuții repetitive
Faculty of Electronics, Telecommunications and Information Technology

Programul să primească numărul variabilelor pe care dorim să le sumăm


”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro 36
Programarea eficientă în C: Execuții repetitive

 Concluzionăm că: în mod minimal pentru execuția


repetitivă a unei secțiuni de program avem nevoie de 2
instrucțiuni:
Faculty of Electronics, Telecommunications and Information Technology

 prima, necesară decrementării contorului buclei (care durează un


ciclu mașină) și,
 cea de a doua, fiind o instrucțiune de salt condiționat (funcție de
valoarea contorului: 2-4 cicluri mașină) ← pipeline

 Aceste 2 instrucțiuni sunt suplimentare secțiunii de program


în care efectiv se procesează date.
 Pentru reducerea impactului acestor instrucțiuni se poate
repeta corpul buclei (secvența de procesare care se tot
execută în buclă) de câteva ori

”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro 37


Programarea eficientă în C: Execuții repetitive
 se elimină 3 secvențe de instrucțiuni subs și bne și se economisesc
astfel între 9 și 15 cicluri mașină
 o instrucțiune ldr se execută în 2 cicluri mașină + o instrucțiune adds
se execută într-un singur ciclu mașină  procesarea 12 cicluri mașină
Faculty of Electronics, Telecommunications and Information Technology

”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro 38


Programarea eficientă în C: Execuții repetitive

 altă metodă de îmbunătățire a performanțelor buclelor 


interschimbarea ordinii de execuție a buclelor for sau while
Faculty of Electronics, Telecommunications and Information Technology

 memoria cache de tip date (D-cache) pentru procesorul


Cortex-M4 (funcție de firma care implementează acest
nucleu) poate varia între 4 Kbytes până la 16 Kbytes. O
asemenea memorie cache poate stoca la un moment dat
între 1024 ... 4096 de valori întregi

  o utilizare mai bună a memoriei cache interne  o


viteză mai mare de lucru
”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro 39
Programarea eficientă în C: Execuții repetitive

 Există multe alte metode utilizate în eficientizarea codului


 De exemplu: tot codul care este invariant (care nu depinde
Faculty of Electronics, Telecommunications and Information Technology

de variabila contor a buclei) trebuie plasat în afara bucle

 Am văzit anterior că lucrul cu stiva diminuează viteza de


execuție  diminuarea operațiilor pe stivă
 De exemplu: recursivitatea utilizează foarte mult stiva, de
aici putem trage concluzia că pentru creșterea vitezei de
lucru este de preferat să evităm cât de mult putem
recursivitatea ca metodă de implementare a programelor

”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro 40


Programarea eficientă în C: Alinierea datelor

 Modalitatea în care sunt utilizate și stocate variabilele și


structurile în memorie are un impact foarte puternic
Faculty of Electronics, Telecommunications and Information Technology

asupra densității codului și a vitezei de execuție a


acestuia
 Alinierea datelor: modalitate în care datele sunt aranjate și
accesate în memoria sistemului

 Un procesor va efectua citirile și scrierile datelor într-un mod


mai eficient  când datele sunt aliniate în mod natural
 alinierea naturală a datelor: adresa de început a variabilei
de un anumit tip specific de dată (char, int, double, etc.)
este un multiplu (în octeți) a dimensiunii datei respective

”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro 41


Programarea eficientă în C: Alinierea datelor

 Tipuri de date și moduri de aliniere:


Faculty of Electronics, Telecommunications and Information Technology

”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro 42


Programarea eficientă în C: Alinierea datelor

 Cortex-M3/M4 sunt procesoare pe 32


de biți
Faculty of Electronics, Telecommunications and Information Technology

 Au spațiul de adresare de 4 Gocteți


(232 octeți)
 Au o magistrală de date cu o lățime
de 32 biți

”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro 43


Programarea eficientă în C: Alinierea datelor
Faculty of Electronics, Telecommunications and Information Technology

 Acesare int adresa 8 vs. int adresa 17


 Adresa 17  necesare 2 cicluri de citire + un număr de
operații de șiftare și mascare
”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro 44
Programarea eficientă în C: Alinierea datelor

2 abordări în alinierea datelor:


Faculty of Electronics, Telecommunications and Information Technology

 (a) soft alignment


 alinierea nu este obligatorie,
 dar dacă este corect realizată citirea se realizează mult mai repede
 de exemplu, procesoarele familiei Intel sunt de acest tip;

 (b) hard alignment,


 alinierea datelor este obligatorie,
 este o abordare întâlnită în special la procesoarele de tip RISC,
 în cadrul familiei ARM anterior versiunii 6 (ARMv6) datele trebuiau
să fie aliniate pentru un acces corect la ele – în caz contrar
rezultatele citirii sau scrierii erau neasteptate sau nedefinite

”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro 45


Programarea eficientă în C: Alinierea datelor
Faculty of Electronics, Telecommunications and Information Technology

”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro 46


Programarea eficientă în C: Alinierea datelor
Faculty of Electronics, Telecommunications and Information Technology

 compilatorul  cod care să fie accesat cât mai eficient 


datele aliniate în mod natural  elemente tampon (padding)

”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro 47


Programarea eficientă în C: Alinierea datelor
Faculty of Electronics, Telecommunications and Information Technology

 modalitate de alocare a variabilelor globale aa, bb, cc și dd  fenomen


de înserare de zone tampon (de padding) nu mai există sau va fi mult
diminuat

”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro 48


Programarea eficientă în C: Alinierea datelor

 Concluzia: compilatorul va încerca întotdeauna să


optimizeze plasarea variabilelor locale și globale în
memorie dar nu va face același lucru și pentru variabilele
Faculty of Electronics, Telecommunications and Information Technology

din interiorul structurilor de date

 De ce se întâmplă acest lucru?


 Cel mai simplu răspuns ar fi că atât standardul C cât și
standardul C++ interzic o astfel de optimizare

 2 raspunsuri:
 Structuri header
 structurile cu lungime variabilă

”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro 49


Programarea eficientă în C: Alinierea datelor
Faculty of Electronics, Telecommunications and Information Technology

Antete:
unui pachet de tip IP (header of an IP datagram) + hederul unui fișier de tip ZIP
”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro 50
Programarea eficientă în C: Alinierea datelor
Faculty of Electronics, Telecommunications and Information Technology

”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro 51


Programarea eficientă în C: Alinierea datelor
 reorganiza datele din structură și am redefini structura:
Faculty of Electronics, Telecommunications and Information Technology

 atunci vom obține alocare a datelor în memorie în


conformitate cu

 dimensiunea structuri va scădea de la 12 octeți la doar 8


octeți
”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro 52
Programarea eficientă în C: Alinierea datelor

 concluzie  este o foarte bine să grupăm variabilele de


Faculty of Electronics, Telecommunications and Information Technology

acceași dimensiune a.î. compilatorul să nu introducă


elementele de tip tampon care determină o creștere
artificială a dimensiunii structurii

 concluzie  alinierea datelor în cadrul unei structuri


influențează în mod direct dimensiunea acelei structuri

”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro 53


Programarea eficientă în C: Alinierea datelor

 grupare automată a datelor prin:


Faculty of Electronics, Telecommunications and Information Technology

 determină ca datele să nu mai fie corect aliniate, precum


variabila b

”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro 54


Programarea eficientă în C: Alinierea datelor

 O situație mai defavorabilă:


Faculty of Electronics, Telecommunications and Information Technology

 niciodată variabilele de tip char nu pot fi aliniate


necorespunzător
”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro 55
Programarea eficientă în C: Alocarea regiștrilor

 În corpului funcțiilor, compilatorul va încerca să aloce


fiecare variabilă unui registru
Faculty of Electronics, Telecommunications and Information Technology

 dacă numărul variabilelor locale funcției este mai mare


decât cel al regiștrilor  compilatorul va încerca să aloce
aceeași registru mai multor variabile
 fără a apărea suprapuneri și
 păstrând funcționarea corectă a funcției

 Dacă numărul variabileor locale este mai mare decât


numărul regiștrilor existenți & operația de alocare a unui
registru la mai multe variabile nu mai poate fi utilizată 
aceste variabile vor fi alocate pe stivă
”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro 56
Programarea eficientă în C: Alocarea regiștrilor
 Pentru implementarea cât mai eficientă a unei funcții
 să minimizeze numărul variabilelor alocate pe stivă
 cele mai utilizate variabile să fie stocate în regiștri
Faculty of Electronics, Telecommunications and Information Technology

”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro 57


Programarea eficientă în C: Alocarea regiștrilor

 se observă că doar 11 regiștri, cu certitudine, pot stoca variabile


 Registrul r9 putând fi sa nu utilizat în această direcție - de
exemplu, funcție de SO care rulează pe procesor acest registru
Faculty of Electronics, Telecommunications and Information Technology

poate lua funcția de thread register (TR) indicând zona de date


locală firului de execuție
 doar regiștrii r4 – r8, r10 și r11 pot stoca variabilele locale ale
unei funcții
 doar r4 – r7 sunt regiștrii care pot fi utilizați de întregul set de
instrucțiuni Thumb
 toate funcțiile trebuie să păstreze nemodificată starea regiștrilor
r4 – r8, r10, r11, SP și r9
 7 regiștri dedicați cu certitudine stocării variabilelor locale - în
calculul expresiilor complexe compilatorul asociază diferiți
regiștri diferitelor calcule intermediare
”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro 58
Programarea eficientă în C: Înmulțirea & împărțirea

 Operațiile de înmulțire și de împărțire sunt unele dintre cele


mai costisitoare funcții
 foarte multe microcontrolere car nici nu au implementate
Faculty of Electronics, Telecommunications and Information Technology

instrucțiuni de împărțire sau de înmulțire


 Când nu putem evita operațiile de înmulțire sau împărțire
este de preferat ca acestea să se facă cu valori care sunt
puteri ale lui 2
 înmulțiri cu 2 și 8 a unei valori întregi stocate în variabila A

 Combinări de deplasări și de adunări putem realiza înmulțiri


cu 6 sau 10:

”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro 59


Programarea eficientă în C: Înmulțirea & împărțirea
 În mod similar se pot implementa împărțiri la diferite numere, ce sunt
puteri ale lui 2, prin deplasări la dreapta
 împărțirea la 2 și la 8:
Faculty of Electronics, Telecommunications and Information Technology

 Combinând în mod ingenios operațiile de înmulțire sau adunare putem


obține operații de împărțire la diferite numere chiar și subunitare
 să împărțim un număr întreg la 0.4:

 O modalitate elegantă de a implementa împărțirea la trei:

 un singur termen (0.25), doi termeni (0.3125), trei termeni (0.328125),


patru termeni (0.332) etc.
”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro 60
Programarea eficientă în C: Înmulțirea & împărțirea

 Există multe alte optimizări a diferitelor împărțiri, funcție de


valoare la care vom împărți  toate aceste cazuri trebuie
Faculty of Electronics, Telecommunications and Information Technology

analizate separat

 De exemplu, dacă într-un program avem împărțiri repetate


la un număr x:
 pentru creșterea vitezei vom calcula 1/x;
 stocăm rezultatul într-o variabilă;
 vom refolosi această valoare transformând împărțirile multiple într-o
împărțire urmată de mai multe înmulțiri
 Atenție: Cortex-M4 poate realiza o înmulțire într-un singur ciclu
mașină  observăm sporul de performanță pe care îl putem obține
foarte ușor

”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro 61


Programarea eficientă în C: Înmulțirea & împărțirea

 Una dintre cele mai lente funcții este cea modulo


Faculty of Electronics, Telecommunications and Information Technology

 Prima subrutină: între 6 și 16 cicluri mașină (Cortex-M4 !!!)


 Cea de a doua subrutină: minim 4 cicluri mașină și maxim 6
cicluri mașină
”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro 62
Capabilitățile de tip DSP ale procesorului Cortex-M4

 Procesorul Cortex-M4 înglobează un modul pe 32 de biți


capabil să efectueze operații de tip MAC (multiply and
accumulate) într-un singur ciclu mașină
Faculty of Electronics, Telecommunications and Information Technology

 La limita superioară: 32 x 32 + 64 → 64
 Configurabil: permițând
 înmulțiri pe 16 sau 32 de biți și
 operații de acumulatre (de adunare a rezultatului obținut în urma
înmulțirii) pe 32 sau 64 de biți.
 Datorită gradului de flexibilitate  cu același modul de tip
MAC se pot efectua 2 operații 16 x 16 într-un singur ciclu
mașină
 Setul SIMD (1 ciclu mașină)  o paleta largă de operații de
tip adunare, scădere, înmulțire sau înmulțire și adunare

”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro 63


Capabilitățile de tip DSP ale procesorului Cortex-M4

 Instrucțiunile de tip DSP specifice arhitecturi Cortex-M4


Faculty of Electronics, Telecommunications and Information Technology

”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro 64


Capabilitățile de tip DSP ale procesorului Cortex-M4

 Operații de tip SIMD definesc procesorul Cortex-M4 ca un


procesor vectorial
Faculty of Electronics, Telecommunications and Information Technology

 Un procesor vectorial este un CPU proiectat să execute


instrucțiuni și operații nu numai asupra unei singure valori
(cum sunt procesoarele scalare) ci și asupra unei mulțimi
de valori simultan

 Actualmente prin intermediul instrucțiunilor de tipul SIMD


cea mai mare parte a procesoarelor sunt de tip vectorial
 cele mai cunoscute de astfel de seturi de instrucțiuni sunt:
 SSE (Streaming SIMD Extensions - Intel) și
 AltiVec (dezvoltat de Apple, IBM și Freescale Semiconductor).
”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro 65
Capabilitățile de tip DSP ale procesorului Cortex-M4

 AltiVec implementat în procesoare din familia PowerPC


 SSE (dezvoltat de Intel) a fost îmbunătățit continuu
Faculty of Electronics, Telecommunications and Information Technology

 SSE2 (introdus pentru prima dată în procesoarele de tip Pentium 4)


 SSE2 acceptă pentru prima dată înmulțiri în dublă precizie (64 de
biți)
 SSE3 (cunoscut sub numele PNI - Prescott New Instructions este o
îmbunătățire incrementală a SSE2)
 SSSE3 (Supplemental Streaming SIMD Extension 3, de asemenea
o îmbunătățire incrementală a SSE3)
 SSE4 (este o îmbunătățire majoră a setului de instrucțiuni SSSE4 și
cunoaște un număr de trei versiuni SSE4.1, SSE4.2 și SSE4a)
 îmbunătățirea instrucțiunilor de tip SIMD prin: AVX (Advanced
Vector Extensions), AVX2 (care introduce operațiile de tip FMA
(fused multiply-accumulate) și în final AVX-512

”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro 66


Capabilitățile de tip DSP ale procesorului Cortex-M4

 Considerând următoarea operație aritmetică:


Sumă = Sumă + (A x C) + (B x D)
Faculty of Electronics, Telecommunications and Information Technology

Studiu de caz: pentru decodarea unui fișier MP3 procesorul


Cortex-M3 trebuie să lucreze la o frecvență de 20-25
MHz în timp ce un procesor Cortex-M4 ce utilizează
instrucțiunile de tip SIMD necesită o frecvență de tact
de 10-12 MHz.
”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro 67
Capabilitățile de tip DSP ale procesorului Cortex-M4

 avantajele utilizării
unui procesor
Cortex-M4, față de
Faculty of Electronics, Telecommunications and Information Technology

utilizarea unui
procesor Cortex-
M3, în
implementarea
unui simplu filtru
IIR cu 5
coeficienți:

Cortex-M4 îi sunt necesari 16 cicli mașină în timp ce Creștere


Cortex-M3 îi sunt necesari 31-46 cicli mașină performanțe
1.9 ... 2.9
”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro 68
Embedded Trace Macrocells

 Tehnica Embedded Trace MacrocellsTM (ETM) oferă utilizatorilor


facilități de urmărire și de analiză hardware a programelor în timp
real în vederea identificării erorilor din cadrul acestora.
Faculty of Electronics, Telecommunications and Information Technology

 Tehnica permite ca starea internă a procesorului să fie preluată


înaintea sau după realizarea unui anumit eveniment fără însă a
încărca computațional în plus procesorul, în timp ce acesta rulează
la viteza sa maximă.
 Capturarea stării procesorului (de exemplu, a valorii unor anumiți
regiștri) - configurată software pentru a obține astfel o informație
specifică și numai în momentul în care anumite condiții sunt
îndeplinite.
 Această tehnică neinvazivă de depanare este extinsă prin introducerea
unor zone de memorie locale procesorului - Embedded Trace Buffer
(ETB) - unde informațiilor ce privesc starea procesorului vor fi stocate și
ulterior transferate către utilizator.
 nu mai este necesar transferul imediat de date la viteze foarte mari - datele
transferate ulterior prin intermediul unui port JTAG (Joint Test Action Group)
”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro 69
Embedded Trace Macrocells

 Avantajul fundamental al acestei tehnici este dat de faptul


că atunci când se analizează un program nu vor exista
diferențe foarte mari între varianta lui de tip debug față de
Faculty of Electronics, Telecommunications and Information Technology

varianta release.
 În acest mod, de exemplu, analizele de tip profiling vor reflecta mult mai
corect starea programului și performanțele acestuia
 Profiling - tehnică de analiză - se urmărește determinarea duratei de
execuție a unei anumite subrutine sau a unui bloc al unui program.
 Procesoarele din familia Intel, x86, nu prezintă acest mod
analiză directă a stării interne a procesorului.
 În momentul în care programul este în modul debug mediul
de dezvoltare înserează o cantitate mult mai mare de cod
care are drept unică destinație atingerea obiectivelor
acestui mod de rulare și analiză a programului.

”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro 70


Faculty of Electronics, Telecommunications and Information Technology

Comparație
între
dispozitivele
familiei
CC3200

”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro 71


Comparație între dispozitivele familiei CC3200

 SoC-urile din familia CC32xx fac parte din platforma de


dispozitive de tip SimpleLink:
 putere redusă
Faculty of Electronics, Telecommunications and Information Technology

 au capacitatea de a se conecta la internet prin intermediul unei


conexiuni Wi-Fi standard pe 2.4 GHz
 familie de SoC este ideală atunci când se dorește
dezvoltare de dispozitive de tip IoT care să nu necesite
existența unui sistem de operare de tip Linux  să ofere
nivele foarte mici de consum
 De exemplu: consumul unui astfel de dispozitiv este de:
 zeci de miliamperi în timpul transferurilor de date (cu un consum
mai mare pe transmiterea lor – așa cum era și de așteptat) și,
 scade, la 120 uA atunci cand dispozitivul rămâne conectat la
Access Point dar nu schimbă date cu acesta

”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro 72


Comparație între dispozitivele familiei CC3200

 Procesorul Wi-Fi (Network


Processor-ul) integrează o
Faculty of Electronics, Telecommunications and Information Technology

mare parte din stiva protocoalelor


Wi-Fi și Internet minimizând astfel
încărcarea procesorului principal –
ARM Cortex-M4

 aspect interesant: modulul de management al puterii


consumate care înglobează un convertor DC-DC și care
astfel permite un domeniu al tensiunilor de alimentare
destul de larg: 2.1V ... 3.6V

”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro 73


Comparație între dispozitivele familiei CC3200

 memorie de tip ROM și memorie RAM sunt utilizate într-un


mod cu totul particular:
Faculty of Electronics, Telecommunications and Information Technology

 Codul este conținut într-o memorie Flash externă și este încărcat în


memoria RAM (SRAM) internă pentru a fi executat
 memoria ROM este stocat boot loader-ul (o secțiune de cod utilizată
în pornirea sistemului – în procesul de boot) și DriverLib (o librărie
utilizată în lucrul cu dispozitivele periferice – peripheral driver
library)
 Boot loader-ul:
 responsabil cu scrierea imaginii aplicației împreună cu orice alte fișiere
pe care utilizatorul dorește să le utilizeze în memoria Flash externă de
tip serial.
 este acela care încarcă această imagine a programului în memoria
RAM și, ulterior, îi oferă controlul.

”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro 74


Comparație între dispozitivele familiei CC3200
 Prin înglobarea în memoria ROM a librăriei perifericelor se:
 obține o reducere a dimensiunii programelor și astfel se permite
programelor să elibereze din memoria RAM
 funcțiile din această librărie sunt link-editate cu aplicația
Faculty of Electronics, Telecommunications and Information Technology

utilizatorului

 API-urile care sunt suținute de funcțiile existente în ROM:


 ADC_Analog_to_Digital_Converter_api
 AES_Advanced_Encryption_Standard_api
 Camera_api
 CRC_Cyclic_Redundancy_Check_api
 DES_Data_Encryption_Standard_api
 Flash_api
 GPIO_General_Purpose_InputOutput_api
 HwSpinLock_api
 I2C_api
”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro 75
Comparație între dispozitivele familiei CC3200
 API-urile care sunt suținute de funcțiile existente în ROM:
 I2S_api
 Interrupt_api
Faculty of Electronics, Telecommunications and Information Technology

 Pin_api
 PRCM_Power_Reset_Clock_Module_api
 Secure_Digital_Host_api
 SHA_Secure_Hash_Algorithm_api
 SPI_Serial_Peripheral_Interface_api
 Systick_api
 GPT_General_Purpose_Timer_api
 UART_api
 UDMA_Micro_Direct_Memory_Access_api
 Utils_api
 WDT_Watchdog_Timer_api
 GPIO_General_Purpose_InputOutput_api
”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro 76
Faculty of Electronics, Telecommunications and Information Technology

Acceleratorul
criptografic

”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro 77


Acceleratorul criptografic

 criptografie - de origine grecească


Faculty of Electronics, Telecommunications and Information Technology

 format din două cuvinte: kryptos care înseamnă ascuns și


graphein care înseamnă a scrie

 criptografia se ocupă cu analiza și dezvoltarea de metode


matematice destinate scrierii și citirii mesajelor criptate dar
și de aflare a cheii de criptare

 Criptografia este o componentă a unui domeniu mult mai


larg, numit securitatea informației

”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro 78


Acceleratorul criptografic

 Obiectivele urmărite:
 Confidențialitatea (privacy) - proprietatea de a păstra
Faculty of Electronics, Telecommunications and Information Technology

secretul informaței, pentru ca aceasta să fie folosită


numai de persoanele autorizate.
 Integritatea datelor - proprietatea de a evita orice
modificare (înserare, ștergere sau substituire)
neautorizată a informației.
 Autentificare - proprietatea de a identifica o entitate
conform anumitor standarde. Este compusă din: (a)
autentificarea unei entități și (b) autentificarea sursei
informației.
 Non-repudierea - previne negarea unor evenimente
anterioare.
”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro 79
Acceleratorul criptografic

 Criptanaliza - metoda de analiză a mesajelor codificate


având drept scop decodarea mesajelor prin intermediul
Faculty of Electronics, Telecommunications and Information Technology

vulnerabilităților algoritmilor de criptare sau prin alte


metode (de exemplu prin forță brută)

 expeditorul dorește să trimită destinatarului un mesaj prin


intermediul unui canal care nu este sigur.
 Insecuritatea - dată de un criptanalist care dorește să
cunoască mesajul (modul pasiv) sau să-l modifice (modul
activ)
”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro 80
Acceleratorul criptografic

 Expeditorul deține mesajul în forma sa originală – acest


mesaj este denumit text clar (plaintext).
Faculty of Electronics, Telecommunications and Information Technology

 Expeditorul, utilizând un anumit algoritm (algorithm sau


cipher) cunoscut numai de el (eventual și de destinatar)
rescrie acest mesaj, deci îl criptează sau îl cifrează,
obținând un anumit text criptat.
 În plus, algoritmul de criptare mai utilizează și o cheie
împreună cu textul în clar pentru a obține mesajul criptat

 Compromitere algoritm / cheie

”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro 81


Acceleratorul criptografic

 Tipuri de algoritmi de criptare


 Simetrice
Asimetrice
Faculty of Electronics, Telecommunications and Information Technology

 Sistemele simetrice de criptare:


 utilizează o singură cheie
 au fost primele sisteme de criptare apărute
 sistemele de criptare clasice se numesc sisteme simetrice
 sunt rapide
 dezevantajul problemelor generate de distribuția cheii algorimului
 Printre algoritmii de criptare simetrici: DES (Data Encryption
Standard), 3DES sau RC4
 AES (Advanced Encryption Standard) este considerat algoritmul de
criptare simetric standard

”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro 82


Acceleratorul criptografic

 Criptarea cu cheie publică sau criptarea asimetrică:


 utilizează două chei: publică și privată
Faculty of Electronics, Telecommunications and Information Technology

 Mesajul criptat cu cheia publică poate fi decriptat doar cu cheia


privată
 mesajul criptat cu cheia privată poate fi decriptat doar cu cheia
publică
 au proprietatea fundamentală că având la dispoziție cheia publică
este imposibil de aflat cheia privată
 criptarea cu cheie publică nu prezintă nici o problemă în distribuția
acestei chei
 mult mai lent
 Prima dată a apărut în 1976
 Actualmente cel mai utilizat algoritm de criptare asimetric este RSA
- acest algoritm este utilizat în cadrul protocoalelor SSL/TSL (secure
sockets layer/transport layer security)
”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro 83
Acceleratorul criptografic

 Hashing-ul este o metodă de validare a integrității mesajelor


 se asigură că în mesajul original nu s-a schimbat nimic – în
mod accidental (datorită zgomotelor de pe canal) sau în
Faculty of Electronics, Telecommunications and Information Technology

mod intenționat
 Indiferent de lungimea mesajului de intrare, ieșirea din acest
algoritm, amprenta numerică (message digest) sau
semmătura, va avea o lungime fixă
 Dacă din mesajul de intrare un singur bit își schimbă
valoarea, atunci amprenta numerică va fi total diferită față
de cea inițială
 având la dispoziție amprenta numerică nu vom putea
reconstrui mesajul inițial

”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro 84


Acceleratorul criptografic
 parolele utilizate în logarea în diferite sisteme informatice
(precum calculatoare personale) sau numerele de tip PIN
ale ATM-urilor nu sunt stocate niciodată în clar, sunt
Faculty of Electronics, Telecommunications and Information Technology

stocate doar amprentele numerice rezultante în urma


aplicării algoritmului de tip hashing
 descărcarea unui fișier de pe internet
 Un algoritm de hashing trebuie retras atunci când devine
ușor să găsești intrări multiple care produc același mesaj
de ieșire (message digest), deci aceeași amprentă digitală -
situația algoritmilor MD5 și SHA-1
 algoritm utilizat actualmente: SHA-256 care generează o
amprentă de 256 de biți
 Ex.: www.fileformat.info/tool/hash.htm
http://onlinemd5.com/
”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro 85
Acceleratorul criptografic
 Autotități certificante
 o firmă care generează certifcate digitale

 cele mai importante autorități certificante (CA):


Faculty of Electronics, Telecommunications and Information Technology

Symantec, Comodo și GoDaddy


 dorim să avem:

 o conexiune încriptată între web browser-ul nostru și


serverul web
 dorim să certificăm că serverul cu care comunicăm
este cel dorit
 Compania care gestionează serverul va folosi CA drept
un notar digital
 Atât firma cât și clientul trebuie să aibă încredere în CA
pentru ca întregul sistem să funcționeze
”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro 86
Acceleratorul criptografic

 Autotități certificante
 După ce CA verifică legitimitatea unei companii sau unei
Faculty of Electronics, Telecommunications and Information Technology

bănci, îi va genera acesteia un certificat pentru a fi


utilizat de către serverul lor
 generarea certificatului CA are nevoie de: cheia publică
a companiei
 cu aceasta CA construiește un certifcat public pe care îl
semnează și îl returnează companiei pentru a fi plasat
în rădăcina propriului server web
 Prin intermediul acestui certificat se realizează
încriptarea conexiunii între server și web browser-ul
utilizatorului și autentificarea serverului.

”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro 87


Acceleratorul criptografic

 Mecanismul de criptare
1. când un web browser accesează un server web, ce suportă o
Faculty of Electronics, Telecommunications and Information Technology

conexiune de tip HTTPS (HTTP Secure cu HTTP având


semnificația Hypertext Transfer Protocol), serverul web trimite
propriul certificat către web browser
2. Web browser-ul generează o cheie simetrică în mod aleator funcție
de mișcările mouse-ului și de tastele apăsate anterior
3. web browser-ul încriptează cheia simetrică cu cheia publică a
serverului web  trimite rezultatul obținut serverului
4. Serverul web decriptează mesajul cu ajutorul cheii private și obține
cheia simetrică trimisă de web browser  ambele părți implicate în
schimbul de date dețin aceeași cheie simetrică
5. Din acest moment procesul de transfer criptat de date poate
începe utilizând pentru securitatea transmisiei un algoritm simetric
de criptare/decriptare
”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro 88
Acceleratorul criptografic
 Problema reală care mai rămâne acum să o rezolvăm 
autentificarea serverul cu care comunicăm
Faculty of Electronics, Telecommunications and Information Technology

 este web serverul la care tocmai ne-am logat serverul


oficial al băncii?
 d.p.d.v. criptografic: cum știm că certificatul public cu care
am lucrat aparține în mod real companiei/firmei cu care noi
dorim să comunicăm?
 Răspunsul stă în semnătura existentă în certificat !!!!
 Dar și aici ne putem pune întrebare de unde știm că
această semnătură este validă?
 Singura metodă  de a valida că CA a semnat întradevăr
certifcatul  că cheia publică din certificat este chiar a
serverului entității cu care dorim noi să comunicăm
”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro 89
Acceleratorul criptografic
 Autentifica serverul (pt. a dovedi aparteneța acestuia la o
anumită entitate):
 CA atunci când generează certificatul va prelua cheia publică a
entității și utilizând un algoritm de hashing va genera o amprentă a
Faculty of Electronics, Telecommunications and Information Technology

acestei chei (un message digest)


 va cripta această amprentă cu cheia privată a CA – rezultatul este
chiar semnătura care este inclusă în certifcatul ce va fi eliberat
entității și care este plasat în rădăcina serverului
 În momentul inițierii comunicării cu web serverul web browser-ul
primește certificatul serverulului  utilizează cheia publică a CA
extrasă din certificatul acesteia, stocat local pe calculatorul ce
rulează web browser-ul, pentru a decripta semnătura din certificatul
serverului  amprentă cheii extrasă din semnătură
 prin același algoritm de tip hashing obține o amprentă locală a cheii
publice
 Dacă cele două amprente coincid  că semnătura a putut fi criptată
doar de CA
”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro 90
Acceleratorul criptografic
 Autentifica serverul:
 Toate aceste operații sunt realizate înainte de schimbul cheii
simetrice și începerea tranzacționării datelor
Faculty of Electronics, Telecommunications and Information Technology

 web browser-ul verifică și CRL-ul (certification revocation list) pentru


a verifica dacă certificatul/certifciatele aparținând diferitelor autorități
certificante (CA) mai sunt încă valide
 Acceleratorul criptografic existent în CC32xx
 permite stocarea internă a 8 perechi de chei (private-publice) pe
256 de biți
 primul set de chei este utilizat în identificarea unică a dispozitivului
hardware a SoC-ului fiind încastrate în hardware
 Celelalte perechi de chei pot fi: temporare (create la cerere în
conformitate cu diferitele necesități ale aplicației) sau instalate și
gestionate de o terță parte
 Cheile private existente în acceleratorul criptografic nu pot fi citite
din exterior
”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro 91
Acceleratorul criptografic

 Acceleratorul criptografic, implementat hardware, suportă


următoarele funcționalități:
Algoritmul de criptare simetric AES capabil să lucreze cu chei pe
Faculty of Electronics, Telecommunications and Information Technology


128, 192 sau 256 de biți atât pe criptare cât și pe decriptare.
 Algoritmul DES sau triplu DES (TDES sau 3DES). În mod similar se
permite criptarea și decriptarea mesajelor.
 Următorii algoritmi de tip hash: MD5, SHA-1 și SHA-2 (SHA-224 și
SHA-256).
 Algoritmii de detecție a erorilor, CRC (Cyclic Redundancy Check):
CRC-16-IBM, CRC-16-CCITT, CRC32, CRC-32C și TCP.

 Scopul fundamental al motorului criptografic: de a degreva


ARM Cortex-M4, de toate activitățile criptografice care
implică operații matematice intensive computațional

”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro 92


Protocoale seriale de interfațare

 Sistemele conţin mai multe dispozitive ce trebuie să


Faculty of Electronics, Telecommunications and Information Technology

comunice între ele şi să se înţeleagă între ele


 trebuie să existe o legătură fizică sau radio între dispozitive
şi totodată să existe un set de convenţii denumite global
protocol de comunicaţie
 Protocolul are menirea să asigure corecta vehiculare a
informaţiei
 Ansamblul format din legăturile fizice şi protocolul de
comunicaţie se numeşte interfaţă

”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro 93


Protocoale seriale de interfațare

 Standardul de interfaţă cuprinde prescripţii impuse tuturor


dispozitivelor din sistem
Patru tipuri de prescripţii:
Faculty of Electronics, Telecommunications and Information Technology


 Prescripţiile mecanice: tipurile de conectoare utilizate, modul de
fixare a acestora precum şi a aparatelor din sistem, tipurile de
cabluri folosite, lungimea maximă a acestora, precum şi alte detalii
constructive şi prescripţii necesare pentru conectarea în sistem.
 Prescripţiile electrice: parametrii electrici ai căii de comunicaţie,
nivelurile logice utilizate, condiţii de adaptare a ieşirilor şi a intrărilor.
 Prescripţiile funcţionale: rolul şi modul de utilizare a fiecărei linii din
magistrala standard, se referă la mesajele şi datele ce pot fi
transferate şi modul în care se realizează acest transfer.
 Prescripţiile operaţionale: la modul în care fiecare aparat din sistem
poate să utilizeze interfaţa standard pentru a comunica cu celelalte
elemente din sistem.
”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro 94
Protocoale seriale de interfațare

 După modul de legare între ele a dispozitivelor avem:


 conexiune punct la punct, când comunicarea se realizează între
Faculty of Electronics, Telecommunications and Information Technology

două dispozitive şi
 conexiune multipunctuală, când mai multe dispozitive intercomunică
între ele.
 În cazul unei conexiuni unul sau mai multe aparate
transmit date, şi acestea se numesc transmiţătoare şi
unul sau mai multe aparate recepţionează datele şi ele
se numesc receptoare
 dispozitivul sau dispozitivele care guvernează
comunicarea se numesc coordonatori (master)
 aparatele ce se supun semnalelor de control se
numesc subordonate (slave)
”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro 95
Protocoale seriale de interfațare
 Pentru a reduce numarul de trasee/fire prin care se
comunica intre diferitele componente ale unui sistem (de
exemplu, microcontroler - periferic), se utilizează
Faculty of Electronics, Telecommunications and Information Technology

comunicatia seriala  se reduce complexitatea


sistemului, pretul platit fiind o viteză ceva mai scazuta de
transfer a datelor
 CC3200  diferite de porturi seriale UART, I2C și SPI
 Conexiuni:
 Forma cea mai simplă de comunicare serială este cunoscută sub
denumirea “simplex”  datele se transmit informaţii într-o singură
direcţie
 Conexiune “half-duplex” avem atunci când datele pot fi transmise
sau recepţionate dar nu simultan
 “full duplex” permite transmiterea şi recepţionarea simultană a
datelor
”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro 96
Sincron vs. Asincron
 asincron  emițătorul nu trimite un semnal de tact:
 înserează un pseudo-impuls de tact, cunoscut ca bit de start;
viteza de lucru se stabilește manual la începutul transmisiei;
Faculty of Electronics, Telecommunications and Information Technology

 pt. o corectă informație de fază, receptorul trebuie sa detecteze


începutul bitului de start
 trebuie sa existe o perioadă de liniște între caractere, realizata cu
bitul/biții de stop
 Biții de start și de stop încadrează deci fiecare caracter transmis 
cadru de date
 Sincronizarea la nivel de bit  cu ajutorul semnalelor de ceas
locale cu aceeași frecvență
 când receptorul detectează începutul unui caracter indicat prin bitul
de start  pornește un oscilator de ceas local
 Eșantionarea biților  aproximativ la mijlocul intervalului
corespunzător fiecărui bit
”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro 97
Sincron vs. Asincron
 Sincrone  un cadru conține un bloc de caractere (un
mesaj)  caracterele transmise rapid fără biți de start și stop
 existența unei conexiuni auxiliare: semnalul de ceas
Faculty of Electronics, Telecommunications and Information Technology

 Deci, asincron:
 necesitate existenței unei linii de date (pe care datele se transmit sau
recepționează) sau
 a două linii de date (una din linii pentru transmisie, cea de a doua
pentru recepție) și
 a unei alte conexiuni de referință.
 Transferul sincron aduce o linie în plus – semnalul de tact
 există interfețe seriale ce utilizează și linii de control a
fluxului de date  RS 232

”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro 98


Standarde de comunicație serială

 standarde importante de comunicație serială


Faculty of Electronics, Telecommunications and Information Technology

1. RS232;
2. I2C sau IIC - permite existența a mai mulți master mai
mulți slave, existând un mecanism de arbitrare între
masteri;
3. SPI – nu permite direct prezenta pe magistrala a doi
sau mai mulți masteri;
4. 1Wire, este posibilă configurația multi slave, dar multi
master se poate realiza numai cu o schema de
arbitrare externa;
5. USB.

”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro 99


Transmisie diferențială și single-ended

 s-au impus două metodele standard pentru realizarea


legaturii seriale:
Faculty of Electronics, Telecommunications and Information Technology

 single-ended - cu referință la masă, tehnici de transmisie a datelor


ce folosesc reprezentarea prin nivele a bitilor (precum RS-232)
 diferențiale, de exemplu interfețele RS-422, RS-485 sau standardul
USB
 În cazul conexiunii single-ended legatura dintre emițător și
receptor se realizează prin două fire: firul de semnal și firul
de masă

”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro


Transmisie diferențială și single-ended

 La conexiunea single-ended valoarea bitului de 1 sau 0


este dată de nivelul de tensiune față potențialul de masă
Faculty of Electronics, Telecommunications and Information Technology

 datorită perturbațiilor existente, se acceptă de obicei o plajă


a valorilor pe care bitul de 1 sau zero le pot lua

 are avantajul utilizării unui singur fir pentru fiecare canal


serial
 performanțele obținute sunt scăzute datorită influenței
zgomotului din canal Vn și a tensiunii de offset dintre
mesele celor două sisteme
”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro
Transmisie diferențială și single-ended

 Conexiunea diferențială (differential) se realizează pe două


fire pentru fiecare canal
Faculty of Electronics, Telecommunications and Information Technology

 Emițătorul are două ieșiri simetrice și trimite valorile de


tensiune +Vt și -Vt pentru un nivel logic și valorile în oglindă
(-Vt și +Vt) pentru cel de al doilea nivel logic
 Receptorul sesizează doar diferența de potențial între cele
două fire - de ex. 2Vt
 sistem de recepție diferenţial ar trebui teoretic să răspundă
numai la diferenţa de potenţial dintre intrările sale, notate
(+) şi (-)
”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro
Transmisie diferențială și single-ended
 orice tensiune de mod comun, care apare în raport cu
masa (GND), ar trebui să fie eliminată complet, dacă
circuitele folosite ar fi ideale
Faculty of Electronics, Telecommunications and Information Technology

 alt avantaj: EMI (electromagnetic interference) reduse

 legatura dintre emițător și receptor se realizează prin trei


fire, două fire de semnal și firul de masă

Avantaje !!!
”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro
Standardul serial RS-232

 Specificațiile electrice ale portului serial utilizat la


calculatoarele IBM PC au fost definite în standardul RS-
Faculty of Electronics, Telecommunications and Information Technology

232C (Reference Standard No. 232, Revision C)


 Standard elaborat în anul 1969 de Comitetul de Standarde
din SUA, cunoscut azi sub numele de Asociația Industriei
Electronice (EIA – Electronic Industries Association)
 Standardul a fost elaborat pentru comunicația digitală
între un calculator și un terminal sau între două terminale,
fără utilizarea unui calculator
 La origini, terminalele erau conectate prin linii telefonice,
a.î. erau necesare modemuri la ambele capete ale liniei de
comunicație

”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro


Standardul serial RS-232
 Mai multe revizii:
 1987 - EIA RS-232D
 1991 - EIA și Asociația Industriei de Telecomunicații (TIA –
Faculty of Electronics, Telecommunications and Information Technology

Telecommunications Industry Association) revizia E


 Revizia curentă este EIA RS-232F, publicată în anul 1997
 La pinii portului serial RS 232 întâlnim doar două nivele
logice:

 Standardul impune ca fiecare linie a a portului serial să


poată suține un scurtcircuit cu oricare altă linie fără a exista
vreo distrugere permanentă a niciuneia dintre cele 2 linii.
”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro
Standardul serial RS-232

 Datorită acestor
nivele logice impuse
Faculty of Electronics, Telecommunications and Information Technology

de protocol - diferite
faţă de cele ale
familiilor TTL sau
CMOS pentru a ne
putea conecta la
portul serial al uC
sau SoC-ului trebuie
să utilizăm un circuit
convertor de nivel
logic

”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro


Standardul serial RS-232
Faculty of Electronics, Telecommunications and Information Technology

”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro


Standardul serial RS-232
Faculty of Electronics, Telecommunications and Information Technology

 Transmisia serială de tip RS-232 este asincronă


 pentru transmisia asincrona, un bit de start identifica
începutul cuvântului
 1, 1.5 sau 2 biţi identifica finalul acestuia
 Biţii de date (5 – 8 biți) sunt trimişi către receptor după bitul
de start
 Standardul impune ca bitul cel mai puţin semnificativ să fie
primul transmis (bit numit și LSB – least significant bit)
 există diferite implementări ale portului serial care permit
configurarea și transmiterea drept prim bit a bitului cel mai
semnificativ - MSP430x2xxx
”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro
Standardul serial RS-232

 un bit de paritate poate fi sau nu transmis după fiecare


trimitere de caracter - utilizat pentru a depista erorile din
Faculty of Electronics, Telecommunications and Information Technology

caracterele recepţionate
 Avem:
 paritate para, bitul de paritate se calculeaza de o așa natură încât
numărul total de biți în starea 1 din octetul util plus bitul de paritate
sa fie par
 paritate impara, bitul de paritate se calculează astfel încât numărul
total de biți în starea 1 din octetul util plus bitul de paritate sa fie
impar

”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro


Standardul serial RS-232

 Viteza de comunicație (numită și debit binar) este măsurată


în biți/s (bps):
Faculty of Electronics, Telecommunications and Information Technology

T este perioada de timp necesară pentru transmisia sau


recepția unui singur bit

 Porturile seriale ale calculatoarelor permit, de obicei,


selecția uneia din următoarele viteze de comunicație: 150,
300, 600, 1.200, 2.400, 4.800, 9.600, 19.200, 38.400,
57.600, 115.200, 230.400, 460.800 sau 921.600 biți/s

”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro


Standardul serial RS-232
 În situația în care vitezele de transfer a datelor între
emițător și receptor nu sunt corect configurate un potențial
mesaj text trimis de emițător va fi incorect decodat și va ieși
Faculty of Electronics, Telecommunications and Information Technology

total neinteligibil

”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro


Standardul serial RS-232
 Receptorul realizează citirea datelor în mod secvential, la
jumatatea intervalelor de bit care urmeaza bitului de start
 Standadul limitează slew rate-ul la ieșirea circuitului driver
la maxmum 30 V/us  limitarea zgomotului
Faculty of Electronics, Telecommunications and Information Technology

 Standardul fixează această lungime la 50 feet  15...16 m


sau la o lungime echivalentă unui cablu cu o capacitate de
2500 pF – totul la 20 kbps
 Cablu bun: UTP CATEG. 5, cu o capacitate echivalentă de
17 pF/ft  147 feet  50 m

”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro


Standardul serial RS-232

 Componenta principală a unui port serial este un circuit


UART (Universal Asynchro-nous Receiver/Transmitter)
Faculty of Electronics, Telecommunications and Information Technology

 Acest circuit realizează conversia datelor paralele primite


de la sistem în formatul necesar pentru transmisia serială și
conversia datelor seriale recepționate în formatul paralel
utilizat de sistem
 Acest circuit adaugă în mod transparent utilizatorului:
 bitul de start,
 bitul/biții de stop și
 bitul de paritate la datele seriale transmise și
 detectează acești biți în cadrul datelor seriale recepționate

”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro


Standardul serial RS-232

 standardul impune ca pe o linie de date să existe maxim un


emițător și maxim un receptor
 există multe microcontrolere care implementează un mod
Faculty of Electronics, Telecommunications and Information Technology

specific de gestionare a UART-ului ce permite


comunicația de tip multiprocesor
 În acest mod de lucru există un singur procesor master și
256 de procesoare de tip slave
 în cadrul acestei abordări, se transmit 9 biți de date – aici,
ultimul bit, al nouălea, înlocuiește bitul de paritate – după
care urmează bitul/biții de stop
 când procesorul master dorește să transmită un bloc de
date către unul din procesoarele de tip slave, atunci trimite
un octet de adresă (pe 8 biți) care identifică procesorul
slave
”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro
Standardul serial RS-232

 Octetul de adresă este diferit de un octet de date prin


aceea că bitul al noulea este 1
Faculty of Electronics, Telecommunications and Information Technology

 În acest moment toate microcontrolerele de tip slave își


opresc activitățile curente și analizează octetul de adresă
 dacă se găsește o potrivire atunci microcontrolerul slave se
pregătește pentru recepționarea datelor de la master
 În caz contrar își continuă activitatea normală
 Când masterul trimite date ce au al nouălea bit pus pe zero
nici un alt microcontroler nu-și va întrerupe activitatea
normală, neluând în considerare aceste date

”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro


Standardul serial RS-232
 De exemplu, inițial sistemele cu procesoare Intel aveau
numai patru porturi paralele seriale denumite COM1,
COM2, COM3 şi COM4
Faculty of Electronics, Telecommunications and Information Technology

 configuraţiile pinilor pentru cele două tipuri de conectorii


disponibili de 9 (DB9S) şi 25 (DB25S) de pini

”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro


Standardul serial RS-232
 Conectorul cu 25 de pini asigură funcţionalitatea totală a
interfeţei în timp ce al doilea conector (pe 9 pini) asigură un
spaţiu minimal pentru dispozitivele tot mai miniaturizate a
zilelor noastre
Faculty of Electronics, Telecommunications and Information Technology

 Semnificaţia semnalelor cele mai utilizate:


 /DTR (Data-Terminal-Ready) – prin această linie PC-ul comunica
modemului ca este funcțional și este pregătit sa transmita date
 /DSR (Data-Set-Ready) – Modemul comunica PC-ului că este
funcțional și este pregătit să transmită sau să primeasca date
 /RTS (Request-To-Send) – PC-ul seteaza acest semnal cand are
pregatit un caracter pentru a-l transmite
 /CD (Carrier-Detect) – modemul semnalează că a detectat semnalul
purtător al altui modem, deci există o conexiune
 /CTS (Clear-To-Send) – Modemul este pregatit pentru a
transmite datele
 TxD - RxD
”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro
Standardul serial RS-232
 Modalitatea “clasică” de lucru cu portul serial este aceea de
a trimite şi recepţiona datele serial prin intermediul liniilor
RXD şi TXD
Faculty of Electronics, Telecommunications and Information Technology

 O legătură de bază RS-232C necesită doar trei conexiuni:


una pentru transmisie, una pentru recepție și una pentru
masa electrică comună
”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro
Standardul serial RS-232
 Aplicație practică:
Faculty of Electronics, Telecommunications and Information Technology

”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro


Standardul serial RS-232
Faculty of Electronics, Telecommunications and Information Technology

”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro


Standardul serial RS-232

 Pentru controlul fluxului de date transmise/recepționate prin


intermediul protocolului RS-232 se poate utiliza un protocol
Faculty of Electronics, Telecommunications and Information Technology

 hardware sau
 Software
 Hardware
 se utilizează semnale DTR/DSR sau RTS/CTS prin care unitatea
receptoare poate să oprească temporar fluxul de date transmis
 Software
 nu utilizeaza semnale de control hardware, în schimb foloseste un
set de coduri speciale prin care poate sa opreasca (codul XOFF,
cod ASCII 19) sau să repornească (codul XON, cod ASCII 17) fluxul
de date
 se poate utiliza numai la transmiterea unor date în codificare ASCII

”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro


Standardul serial RS-232
 Modalitatea de conectare a 2 dispozitive prin portului RS-
232 cu un control hardware a fluxului de date
Faculty of Electronics, Telecommunications and Information Technology

 dacă cantitatea de date ce se transferă este mică nu se


utilizează nici un mecanism de control a fluxurilor de date,
nici un protocol de tip handshaking
”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro
Standardul serial RS-232

 Mecanismul hardware de control a fluxului de date


(handshaking)
Faculty of Electronics, Telecommunications and Information Technology

”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro


Interfața I2C (Inter-Integrated Circuit Bus)

 A fost inventată și propusă de compania Philips în anii 80


 acum compania NXP (Next eXPerience)
Faculty of Electronics, Telecommunications and Information Technology

 O magistrala seriala de tip I2C (IIC sau I2C) permite


interconectarea componentelor unui microsiste:
 microcontrolor, SoC etc. (element de tip master – cel puțin unul) cu
 unul sau mai multe elemente de tip slave: memorii de tip EPROM,
convertoare A/D și D/A, senzori, potențiometre digitale și multe alte
tipuri de dispozitive periferice

 se urmărește:
 reducerea costurilor de realizare a cablajelor imprimate precum și
 scăderea timpul de realizare a unor prototipuri

”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro


Interfața I2C (Inter-Integrated Circuit Bus)

 I2C implementează o transmisie seriala sincrona  se


utilizeaza un semnal separat de tact
Faculty of Electronics, Telecommunications and Information Technology

 interconectarea unor circuite integrate) prin numai trei linii:


 2 linii de semnal : "serial data" (SDA) şi "serial clock" (SCL)
 și una de masă

 adresă unică
 poate funcţiona fie ca transmiţător, fie ca receptor
”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro
Interfața I2C (Inter-Integrated Circuit Bus)
 Pentru conectarea la magistrala I2C fiecare circuit integrat este
prevăzut cu câte un etaj de interfaţă pentru fiecare linie a magistralei
Faculty of Electronics, Telecommunications and Information Technology

 Ambele linii, SDA şi SCL sunt linii bidirecţionale


 rezistor de “pull-up”
 Dacă magistrala este liberă, ambele linii sunt la nivel ridicat
 Etajele de ieşire: ieşire de tip colector în gol sau drenă în gol 
generează nivelul de 0 logic dar nu pot genera nivelul de 1 logic
”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro
Interfața I2C (Inter-Integrated Circuit Bus)

 Pe magistrala se pot conecta mai multe module master


sau circuite coordonatoare –
Faculty of Electronics, Telecommunications and Information Technology

 au inițiativa în transferul de date și


 ele sunt circuitele care generează semnalul de tact necesar în
realizarea unui transfer
 Toate celelalte circuite care pot fi adresate, interogate de
un master sunt module slave sau circuite subordonat
 Un modul master poate să inițieze un transfer doar în
situația în care magistrala este libera
 În cazul în care două unități master inițiază simultan un
transfer de mesaj, atunci va avea loc o procedură de
arbitraj

”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro


Interfața I2C (Inter-Integrated Circuit Bus)

 Viteza maximă de comunicație inițială a fost de 100 kHz.


 În anul 1992 standardul a fost completat cu un nou mod de
comunicație – fast-mode, ce permite o rată de transfer de
Faculty of Electronics, Telecommunications and Information Technology

400 kHz.
 La ora actuală trei alte moduri există:
 fast-mode plus – ce permite viteze de transfer de 1 MHz,
 modul high-speed – rata de transfer este 3.4 MHz și
 ultra-fast mode, cu rata de transfer cea mai mare – de 5 MHz.
 Numărul maxim de circuite care se pot conecta la
magistrală - limitat numai de capacitatea maxim admisă
pentru fiecare linie, care este de 400 pF
 Deoarece dispozitivele de pe magistrală nu furnizează
nivelul de 1 logic  se permite conectarea de dispozitive
alimentate la nivele diferite de tensiune
”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro
Interfața I2C (Inter-Integrated Circuit Bus)
 Protocolul de transfer al datelor presupune:
 iniţierea transferului prin aducerea magistralei într-o condiţie de
START,
transferul propriu-zis şi
Faculty of Electronics, Telecommunications and Information Technology

 încheierea transferului prin aducerea magistralei într-o condiţie de


STOP.

 Condiţia de START (S): trecerea liniei SDA din 1 în 0, în


timp ce linia SCL este menţinută la nivel ridicat
 Condiţia de STOP (P): trecerea liniei SDA din 0 în 1, în timp
ce linia SCL este menţinută la nivel ridicat
”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro
Interfața I2C (Inter-Integrated Circuit Bus)

 Este obligatoriu ca datele trebuie să fie stabile pe durata în


care impulsul de tact este în 1 logic
Faculty of Electronics, Telecommunications and Information Technology

 modificarea datelor se poate face numai pe durata pauzelor


dintre impulsurile de tact

”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro


Interfața I2C (Inter-Integrated Circuit Bus)
 Datele sunt transferate pe I2C sub formă de octeţi
 După transmiterea fiecărui octet transmiţătorul trebuie să
afle dacă acesta a fost recepţionat corect de către receptor
Faculty of Electronics, Telecommunications and Information Technology

 aceasta se realizează prin:


 după transmiterea celui de-al 8-lea bit, transmiţătorul lasă în starea
liniei de date SDA în 1 logic
 dacă recepţia s-a facut corect atunci receptorul trage jos linia SDA
pe durata celui de-al 9-lea tact al liniei SCL

”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro


Interfața I2C (Inter-Integrated Circuit Bus)

 Nr. de octeţi care poate fi transmis nu este limitat


 primul bit transferat este bitul cel mai semnificativ
Faculty of Electronics, Telecommunications and Information Technology

 După primele opt impulsuri de tact necesare transmiterii


unui octet urmează un al nouălea impuls, utilizat pentru
recunoaşterea efectuării transferului

”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro


Interfața I2C (Inter-Integrated Circuit Bus)
 Dacă, după recepţia unui octet, receptorul nu poate admite
un nou octet el menţine linia SCL la nivel coborât pentru a
forţa transmiţătorul într-o stare de aşteptare
Faculty of Electronics, Telecommunications and Information Technology

 Transferul poate continua când receptorul este gata,


situaţie indicată prin eliberarea liniei SCL

”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro


Interfața I2C (Inter-Integrated Circuit Bus)

 Întotdeauna, primul octet transmis după condiţia de START


reprezintă adresa unui slave
Faculty of Electronics, Telecommunications and Information Technology

 împreună cu tipul operaţiei solicitate (scriere sau citire)


 Primii şapte biţi ai acestui octet reprezintă adresa
 Tipul operaţiei este precizat de bitul 8, notat R/W.
 dacă R/W = 1, coordonatorul va citi date de la slave-ul adresat
 dacă R/W = 0, coordonatorul va transmite date slave-ului adresat

”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro NACK


Interfața I2C - arbitrare
 Structura I2C este o structură multicoordonator: pot să
existe mai multe circuite care pot avea rolul de coordonator
Faculty of Electronics, Telecommunications and Information Technology

 În cadrul unui transfer, delimitat de condiţiile de START şi


STOP, există un singur coordonator
 PROBLEMĂ: mai mulţi coordonatori să încerce simultan să
iniţieze un transfer  necesară o procedură de arbitrare în
urma căreia să rezulte un coordonator unic în cadrul
fiecărui transfer
 Fiecare circuit coordonator generează propriile lui impulsuri
de tact  sincronizarea acestora
 Sincronizarea este posibilă datorită funcţiei logice ŞI-cablat,
realizată prin legarea împreună a tuturor terminalelor SCL

”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro


Interfața I2C - arbitrare
 Sincronizarea impulsurilor de tact
Faculty of Electronics, Telecommunications and Information Technology

 Precizarea: CLK1, CLK2 şi DATA1, DATA2 sunt semnalele


aduse la intrările etajelor de ieşire corespunzătoare,
cuplate la liniile SCL respectiv SDA
”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro
Interfața I2C - arbitrare
 Arbitrarea coordonatorilor se face pe linia SDA
 Coordonatorul care transmite un nivel ridicat pierde arbitrarea dacă în
acelaşi timp un alt coordonator transmite un nivel coborât
Faculty of Electronics, Telecommunications and Information Technology

 Coordonatorul care pierde arbitrarea trebuie să îşi deconecteze etajul


de ieşire date

”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro


Interfața I2C - arbitrare
 Arbitrarea poate continua pe mai mulţi biţi
 În prima etapă se compară biţii de adresă  dacă ambii
coordonatori încearcă să adreseze acelaşi executant 
arbitrarea continuă cu compararea biţilor de date
Faculty of Electronics, Telecommunications and Information Technology

 Coordonatorul care pierde arbitrarea poate continua să


transmită impulsuri de tact până la sfârşitul octetului în
care a pierdut arbitrarea
 un coordonator pierde arbitrarea în faza de adresare 
posibil ca acel coordonator care o câştigă să încerce să-l
adreseze  coordonatorul care pierde arbitrarea trebuie
să treacă imediat în regim de executant (ascultător)
 Controlul magistralei I2C depinde numai de adresele şi
datele transmise de coordonatori, nu există nici
coordonator central şi nici vreo ordine de prioritate
pe magistrală
”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro
Interfața I2C - arbitrare
 Procedura de sincronizare a impulsurilor de tact  se
poate utiliza pentru adaptarea vitezei de transfer fie la nivel
de octet, fie la nivel de bit
Faculty of Electronics, Telecommunications and Information Technology

 Octet  executantul să recepţioneze datele în ritmul impus


de coordonator, însă să necesite un timp mai lung pentru
memorarea lor  în această situaţie, executantul poate
menţine linia SCL la nivel coborât, după recunoaşterea
recepţionării unui octet  forţând coordonatorul să
introducă o stare de aşteptare până când executantul este
gata pentru recepţia unui nou octet
 Bit  executantul care nu poate recepţiona datele în ritmul
impus de coordonator poate încetini acest ritm prin
extinderea stării 0 a impulsurilor de tact  viteza oricărui
coordonator se poate adapta la viteza oricărui executant
”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro
Interfața I2C
Faculty of Electronics, Telecommunications and Information Technology

”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro


Interfața I2C – TMP112
Faculty of Electronics, Telecommunications and Information Technology

”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro


Interfața I2C – TMP112
Faculty of Electronics, Telecommunications and Information Technology

”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro


Interfața I2C – TMP112
Faculty of Electronics, Telecommunications and Information Technology

”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro


Faculty of Electronics, Telecommunications and Information Technology

Interfața
I2C:
TMP112

”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro


Interfața I2C – 24LC02
 Scrierea de tip octet
Faculty of Electronics, Telecommunications and Information Technology

 Scrierea de tip pagină

”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro


Interfața I2C – 24LC02
 Acknowledge Polling
 Citire a adresei curente
Faculty of Electronics, Telecommunications and Information Technology

 Citire aleatorie

”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro


Interfața I2C – 24LC02
 Citire secvențială
Faculty of Electronics, Telecommunications and Information Technology

”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro


Interfața I2C – Adresarea
 primul octet după condiţia de start să fie adresa
subordonatului cu care coordonatorul doreşte să facă
Faculty of Electronics, Telecommunications and Information Technology

transfer
 Excepţie: situaţia de “adresare generală” la care toate
elementele din sistem trebuie să răspundă şi care se
codifică prin doi octeţi
 există elemente care nu răspund (nu este util să răspundă)
la “adresarea generală”  Ele vor ignora codul adresării
generale
 octetul ce urmează după condiţia S codifică:
 pe primii 7 biţi mai semnificativi adresa subordonatului,
 iar bitul mai puţin semnificativ este bitul R/W şi arată sensul
transferului

”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro


Interfața I2C – Adresarea
 când se transmite adresa  fiecare dispozitiv din sistem
compară adresa recepţionată cu propria adresă  dacă
constată egalitatea, dispozitivul devine:
Faculty of Electronics, Telecommunications and Information Technology

 subordonat receptor sau


 subordonat transmiţător
funcţie de valoarea bitului R/W
 Adresa unui subordonat poate avea o:
 parte fixă şi
 o parte programabilă
 Partea fixă  defineşte clasa dispozitivului (spre exemplu:
memorii, dispozitive de afişare, microprocesoare, etc.)
 partea programabilă identifică dispozitivul din clasa
respectivă
”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro
Interfața I2C – Adresarea

 Mărimea părţii programabile depinde de numărul de pini


Faculty of Electronics, Telecommunications and Information Technology

pentru adresă pe care circuitul îi are


 Spre exemplu, un circuit are 4 biţi de adresa fixă şi 3 biţi
programabili  aceasta înseamnă că se pot conecta la
magistrala I2C 8 dispozitive de acest fel

 Comitetul de coordonare al magistralei I2C a recomandat o


alocare a celor 127 de adrese prezentată în tabelul urmator

”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro


Interfața I2C – Adresarea
Faculty of Electronics, Telecommunications and Information Technology

”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro


Interfața I2C – Adresarea
Faculty of Electronics, Telecommunications and Information Technology

”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro


Interfața I2C – adresarea generala
 Este o adresare pentru toate dispozitivele din sitemul I2C
care au fost prevăzute să recunoască adresarea generală.
 Adresarea generală se face pe doi octeţi:
Faculty of Electronics, Telecommunications and Information Technology

 primul este 0000.0000, iar


 al doi-lea octet specifică acţiunea pe care trebuie să o relizeze
subordonaţii

 Dacă B = 0, al doilea octet are următoarele semnificaţii:


 02h = “scrie adresa subordonat numai soft”.
 04h = “scrie adresa subordonatului numai hard”
 06h = “reset” şi “scrie partea programabilă a adresei hard şi soft”
 00h - acest cod nu este permis
”Gheorghe Asachi” Technical University | www.etti.tuiasi.ro/cin Dan-Marius Dobrea, mdobrea@etti.tuiasi.ro

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