Documente Academic
Documente Profesional
Documente Cultură
SISTEME CU CONECTARE
MULTIPLEXATĂ ŞI CONTROL
DISTRIBUIT
Iaşi
- 2010 -
CUPRINS
CAPITOLUL 1
SISTEME DE TIMP REAL
CAPITOLUL 2
SINTEZA SISTEMELOR DE TIMP REAL FOLOSIND GRAFURI DE
PROCESARE
CAPITOLUL 3
CONCEPTUL DE MAGISTRALĂ I2C
CAPITOLUL 4
TRANSFERUL DATELOR PE MAGISTRALA I2C
2
4.3 Formatul byte-ului ………………………………………………………………...….. 41
4.4 Confirmarea datelor. Bit de confirmare. Bit de neconfirmare ………………............... 42
4.5 Arbitrarea şi generarea clock-ului …………………………………………........…..... 43
4.5.1 Sincronizarea semnalelor de clock ……………………………….....…………. 43
4.5.2 Arbitrarea pe magistrală ……………………………………………........….…. 44
4.5.3 Stabilirea legăturilor între dispozitive prin sincronizarea clock- ului ………..... 45
CAPITOLUL 5
MODURI DE ADRESARE PE MAGISTRALA I2C
CAPITOLL 6
CONEXIUNI ELECTRICE PE MAGISTRALA I2C
3
CAPITOLUL 7
TEHNICI DE CODIFICARE A DATELOR
CAPITOLUL 8
PROTOCOALE PENTRU COMUNICAŢII SERIALE CU MAGISTRALĂ
MULTIPLEXATĂ
CAPITOLUL 9
ARHITECTURA SISTEMELOR CU CONECTARE MULTIPLEXATĂ
CAPITOLUL 10
CONTROLER ÎN ARIE DE REŢEA
CAPITOLUL 11
PROTOCOLUL CANopen
CAPITOLUL 12
SISTEME CU CONECTARE MULTIPLEXATĂ CENTRALIZATE
ŞI SISTEME CU CONECTARE MULTIPLEXATĂ DISTRIBUITE
5
CAPITOLUL 1
Prin definiţie, un sistem de timp real este un sistem a cărui corectitudine depinde nu
doar de soluţiile logice obţinute prin calcul, ci şi de timpul real la care aceste soluţii au fost
determinate. Operaţiunile într-un sistem de timp real se execută în timp real. Aceasta este o
definiţie generală, care cuprinde o mare varietate de sisteme, incluzând filtrele digitale,
sistemele de comunicaţii multimedia, sistemele de procesare a tranzacţiilor “on-line”,
sistemele pentru schimburi de mesaje, sistemele de control de fabricaţie, sistemele de
control al proceselor, etc.
Sistemele distribuite de timp real lucrează pe arhitecturi de reţele specializate, care
includ clase de servicii şi protocoale în scopul susţinerii comunicaţiilor de timp real
influenţate de constrângerile prevăzute prin alocarea mesajelor simple sau în pachete.
Arhitecturile de reţele pot fi clasificate într-o varietate de moduri, în funcţie de
domeniul de aplicaţie, de tipul comunicaţiei sau de scopul în care acestea sunt folosite.
Algoritmii care stau la baza construirii modelelor de sisteme de timp real au
suportul în calculul ponderat şi în programarea liniară. Aceste calcule sunt utilizate în
scopul simplificării sistemelor şi efectuării unei analize corecte la toate nivelele de
prioritate. Algoritmii utilizaţi oferă garanţii arbitrare, în intervale mici de timp în
satisfacerea constrângerilor de timp ale reţelelor. Echipamentele realizate pe job-uri cu un
singur obiect sau cu mai multe obiecte au condus la obţinerea modemurilor de timp real.
Astfel, sistemul poate garanta răspunsul în timp real al procesului care a fost implementat.
Dintre toate sistemele de timp real, cele mai utilizate sunt sistemele de control al proceselor.
Un sistem de timp real distribuit este un sistem complex, care cuprinde mai multe
funcţii accesate de procesoare diferite. În multe sisteme de timp real (de exemplu, în
sistemele de control industrial al energiei nucleare, controlul traficului aerian, controlul
misiunilor spaţiale sau controlul proceselor industriale) calculele realizate de controler sunt
mult mai complicate.
Controlerul din sistemul realizat în inel include şi componente umane (unul sau mai
mulţi controleri umani) care iau decizii bazate pe datele primite de la senzori. Aceste
sisteme poartă denumirea de sisteme în buclă deschisă
Următorul pas logic în evoluţia sistemelor de timp real îl reprezintă introducerea
autonomului. În figura 1.1 se prezintă un model abstract al unui sistem autonom de control,
în care cooperarea experţilor umani este înlocuită de software-ul pentru probleme de
comunicaţie.
Sistemele de timp real încă evoluează, urmând ca ele să fie înlocuite de următoarea
generaţie a sistemelor de timp real autonome în buclă închisă, în care experţii umani vor fi
înlocuiţi prin software. Autonomia sistemelor depinde de obiectivele tehnico-economice:
calitatea, productivitatea şi profitabilitatea, precum şi de protecţia împotriva pericolelor sau
dificultăţi de ordin tehnic. Sistemele de control din generaţia următoare vor fi distribuite,
complexe, dinamice, de nivel înalt, adaptabile şi cu o comportare inteligentă. Ele vor
conţine mai multe tipuri de timere şi vor opera într-un domeniu larg de nedeterminări.
6
NOD NOD NOD NOD
SENSORI
stare curentă
Fig. 1.1 Modelul abstract al unui sistem autonom de control în timp real
7
Mesajele în timp real pot fi clasificate în două categorii principale:
- Mesaje de căutare garantate, care includ o garanţie din partea sistemului (dacă
activitatea care produce apariţia lor este acceptată pentru execuţie, atunci constrângerile de
timp vor fi respectate cu siguranţă). În generaţia actuală a sistemelor distribuite de timp real
în buclă închisă, mesajele de căutare garantate sunt de două tipuri: mesaje periodice şi
mesaje de alarmă (alertă).
Mesajele periodice transportă informaţia de senzor despre starea curentă a
procesului controlat şi sunt transmise periodic în timp. De exemplu, într-un sistem de
control al unui proces industrial, calculatoarele din diferite locuri ale întreprinderii
colectează periodic informaţii despre starea procesului: factorul de umplere, presiunea şi
temperatura, cu ajutorul senzorilor şi transmit aceste informaţii la dispeceratul central, unde
operatorii umani iau deciziile necesare pentru execuţia procesului. Mesajele periodice
necesită garanţii în cazul în care termenii limită sunt întâlniţi în ordinea în care starea reală
a procesului controlat şi imaginea stării controlerului obţinută prin aceste mesaje sunt
închise pentru oricare altă stare.
Mesajele de alarmă sunt folosite pentru diseminarea informaţiei într-o situaţie de
urgenţă. De exemplu, controlerul poate fi nevoit să închidă utilitarele pentru o perioadă
determinată de timp. Cu toate că mesajele de alertă sosesc destul de rar, sistemul trebuie să
garanteze că acestea vor fi livrate cu respectarea termenilor finali.
- Mesajele cu efort minim au constrângeri de timp dar nu pot cere o garanţie din
partea sistemului. Sistemul va încerca să satisfacă aceste constrângeri. Exemplele mesajelor
cu cel mai mic efort în sistemele actuale includ unele tipuri de comenzi pentru operatorii
umani şi de asemenea unele tipuri de avertizări şi răspunsuri. De exemplu, stările sigure şi
mesajele de control, şi vizualizările de traiectorii şi mesajele de răspuns în cadrul sistemelor
de control pentru misiunile în spaţiu închis pot fi clasificate ca fiind mesaje cu efort minim.
Aceste mesaje apar asincrone şi sunt de regulă tratate ca mesaje uşoare de timp real.
Sistemul este proiectat să minimizeze răspunsul în timp pentru aceste mesaje. Multe dintre
sarcinile curente în comunicarea în timp real sunt bazate pe modelul sistemului de
comunicaţie în timp real, de tip distribuit, iar mesajele de căutare garantate sunt ori
periodice, ori foarte rare. De asemenea, pentru aceste mesaje, caracteristicile sunt
specificate static.
Buffer de ieşire
Canal de
Programator
timp real
Nod de
trafic Canal de
timp real
Circuite de
Filtru
transmisie
Canal de
Pachete non-timp
ignorate real Legătură
de ieşire
Bufferul de ieşire este alcătuit din mai multe canale independente, care împart
aceeaşi legătură de ieşire. Fiecare dintre aceste canale stochează pachete corespunzătoare
unei diferite clase de trafic (de exemplu, trafic video, trafic vocal, trafic de date, etc.). Unele
din aceste canale sunt în timp real (de exemplu, cele pentru traficul video sau vocal) în timp
ce altele nu sunt în timp real (ele fiind rezervate pachetelor în non-timp-real, cu termenii
limită foarte mari, aproape infiniţi, de exemplu, unele transmisii de date). Distribuitorul,
care poate fi un microprocesor, arbitrează utilizarea circuitelor de transmisie şi a legăturii
de ieşire.
Întârzierile de timp între circuitul liniei de intrare şi nodul de ieşire sunt constante.
Întârzierea pachetului înregistrată în nodul de ieşire reprezintă intervalul de timp între
momentul când primul byte al pachetului intră în nodul de ieşire şi momentul când ultimul
său byte este transmis către legătura de ieşire.
Valoarea maximă permisă pentru întârzierea pachetului în nodul de ieşire reprezintă
termenul limită relativ al pachetului. Pachetele de timp real au termeni limită relativ finiţi.
Politica de distribuţie aplicată nodului de ieşire este ne-prioritară.
11
Pachetele în timp real sunt distribuite în acord cu algoritmul primului termen limită
care este atins mai întâi (engl. Earliest-Deadline-First Algorithm). Ori de câte ori o legătură
de ieşire este liberă, pachetul cu cel mai apropiat termen limită absolut este transmis
următorul, evitând supraaglomerarea magistralei de comunicaţie sau blocarea ei şi
întreruperea traficului. Când numărul total de pachete aflate pe canalele de timp real
depăşeşte cantitatea de prag a congestionării- aglomerării traficului Th, filtrul ignoră
pachetele opţionale înainte ca acestea să intre în bufferul de ieşire. Fiecare pachet din
bufferul de ieşire este transmis, în funcţie de termenul său limită. Astfel, imprecizia
transmiterii reprezintă singurul motiv de pierdere a pachetelor, fapt care permite depăşirea
acestui efect cu preţul pierderii calităţii serviciilor de comunicaţii în timp real.
Organigrama de funcţionare a sistemului este prezentată în figura 1.3.
mesaje de la
nodul de trafic
nu mesaje da
adecvate?
pachete
nu mesaje da
ignorate principale?
“mesaje opţionale” “mesaje principale”
prioritate scăzută prioritate mai înaltă
nu mesaje de da
timp real?
atribuie prioritate mai
nu explozie non- da înaltă şi trimite la
timp real canalele de timp real
nr. mesaje >q)?
atribuie prioritate mai înaltă
mesajelor non-timp real
legătură de ieşire -
mesaje transmise
12
1.3.3 Performanţele algoritmului de comunicaţii în timp real
N dm
Dr (1.1)
N
unde: Nd este numărul de pachete care au pierdut termenii lor limită şi N este numărul total
de pachete transmise. Adăugând numărul Ndm1 de un pachet care a pierdut termenul său
limită, cu Ndm2 de două pachete care au pierdut termenii limită corespunzători şi aşa mai
departe, rezultă Ndm. Pentru pachete cu lungimea de n-biţi, se poate scrie relaţia
n
N dm N
i 1
dmi (1.2)
N lk
Lr (1.3)
N
unde:
13
k
Nlk= N lki (1.4)
i 1
N
Ur (1.5)
Cr
unde capacitatea reţelei, Cr reprezintă numărul maxim de pachete care pot fi transmise fără
a produce blocarea traficului pe magistrala de comunicaţii.
Considerăm următorul exemplu. Presupunem că în traficul reţelei de comunicaţii se
trimit P1 pachete de mesaje video, P2 pachete de mesaje vocale şi P3 pachete de mesaje de
date. Pentru a studia rata de omitere a termenului limită, rata de pierdere a pachetelor în
trafic dau procentul de încărcare a reţelei de comunicaţii, vom presupune că: P1 = 100
pachete, P2 = 2000 pachete şi P3 = 40 pachete, unde rata medie a datelor este de 1.28 Mbps,
25.175 kbps şi respectiv 1 Mbps. O reţea de comunicaţii suportă în medie 5000 de astfel de
pachete. Cu aceste valori, rezultă:
14
5000 pachete) şi creşte odată ce ajung mai multe pachete pe canalele de comunicaţii. Dacă
numărul pachetelor transmise este prea mare, deci pragul de supraaglomerare tinde către
infinit, atunci utilizarea reţelei creşte către 100 %.
Dr Lr
1.0 0.5
0.9
0.8 0.4
0.7
0.6 0.3
0.5
0.4 0.2
0.3
0.2 0.1
0.1 N Nlk
0 d 0
500 1000 1500 2000 2500 500 1000 1500 2000
a b
Ur
100
%
80%
60%
40%
20%
N
0
500 1000 1500 2000
c
Fig. 1.4 a) rata de omitere a termenului limită, b) rata de pierdere,
c) utilizarea reţelei
1.3.4 Concluzii
16
CAPITOLUL 2
Într-un sistem de timp real pot apare, din diverse motive, constrângeri de timp
(datorită algoritmului de proiectare ales, a condiţiilor de mediu de funcţionare, etc.).
Constrângerile uzuale sunt numite constrângeri standard şi acestea sunt perioadele şi
termenii limită. Ele sunt impuse de către proiectant. În afara constrângerilor standard, în
sistemele de timp real apar şi alte constrângeri, datorită condiţiilor de funcţionare. Acestea
din urmă sunt însă mai puţin restrictive.
Aplicarea constrângerilor standard de timp (termenii limită şi perioadele) duc la
următoarele două limitări:
- supraconstrâng specificaţiile din sistem şi
- lipsesc de expresivitate sistemul.
Nu toate job-urile unei aplicaţii în timp real au perioade şi termeni limită “naturali”,
ci doar unele dintre ele. Restul sunt obţinute în timpul proiectării sistemului şi sunt numite
artefacturi. Termenul limită şi perioada nu pot fi selectate amândouă odată ci pe rând.
În general, aplicaţiile în timp real (cum ar fi, de exemplu, aplicaţiile de control) au
constrângeri de timp care nu pot fi exprimate prin termeni limită şi perioade sau care
supraconstrâng puternic sistemul dacă sunt exprimate prin intermediul constrângerilor de
timp standard.
În cele ce urmează, vor fi descrise limitările constrângerilor de timp standard şi
impactul lor asupra sistemelor în timp real folosind ca exemplu manipularea unui
eveniment sporadic.
a) Job-uri pseudoperiodice
Se consideră un eveniment sporadic pe care îl vom nota cu e. Când are loc un astfel
de eveniment, sistemul trebuie să reacţioneze într-un anumit interval de timp dat, notat
react. Timpii exacţi la care se produce evenimentul e nu pot fi determinaţi dinainte, dar se
poate stabili un interval minim de timp, notat mint.
Pentru evenimentul e, se consideră un job notat cu Je, care are un timp maxim de
execuţie c(Je). Evenimentul e trebuie să facă parte dintr-un job periodic, cu perioadă şi
termen limită fixaţi pentru Je. Cazurile în care Je manevrează evenimentul sporadic e,
fezabile în timp, sunt următoarele: fiecare eveniment e este manevrat de un caz al job-lui Je
in interiorul intervalului de timp react şi nu se pierde nici o realizare a evenimentului e.
În cel mai defavorabil caz, un eveniment el se produce la momentul t(el) – imediat
după momentul când job-ul Jei a început să fie executat de către sistemul de timp real –
verificat pentru evenimentul e şi găsit că nu a avut loc. În acest caz, evenimentul el va fi
manevrat de următorul job, notat Jei+1.
Conform afirmaţiilor făcute mai sus, putem scrie că :
17
d(Jei+1 ) – t (el ) < react. (2.1)
unde st indică momentul (timpul) de start. Aceste condiţii de realizabilitate permit alegerea
unor constrângeri de timp diferite pentru unele situaţii individuale ale job-ului Je.
18
Tabelul 2.1
Jp0 Jp1 Je
c 10 30 9 9 9 9 9
d 15 70 10 20 30 40 50
p 30 70 50 40 30 20 10
utotal 0.94 0.99 1.06 1.21 1.66
Conform tabelului de mai sus, se constată că perechea (50,10) are cel mai scăzut
necesar de utilizare, dar de asemenea cel mai strâns termen limită, făcând-o mai dificilă
pentru găsirea de programe realizabile. De fapt, dacă se consideră începutul tuturor job-
urilor la momentul de timp 0, va exista o ciocnire între job-urile J0 şi Je la momentul 150
care nu poate fi evitată deoarece d(Je) este foarte strâns, nepermiţând nici o schimbare a
job-ului Je. Acest lucru poate fi evitat prin selectarea unei valori mult mai relaxată pentru
d(Je). Aşa cum se poate observa din tabel, totuşi, noul set de job-uri poate deveni
nerealizabil datorită cererilor crescute de procesare pentru Je.
Concluzii: Specificaţia devine crescător supraconstrânsă. Folosind constrângerile de
timp, informaţiile despre opţiunile posibile sau altă selecţie sunt pierdute în fiecare pas. În
locul reprezentării informaţiilor despre realizabiltatea în timp a job-ului, se reţine numai
rezultatul sub formă de numere.
19
durată de funcţionare. Constrângerile de timp standard (perioadă, termen limită, etc.)
reprezintă constrângeri de timp statice.
c. Constrângeri de timp dinamice - dTC (dinamic Timing Constraints) sunt acele
constrângeri de timp ale unei entităţi TE, care pot varia pentru fiecare apariţie ale entităţii în
timp. Constrângerile de timp pot fi diferite pentru fiecare apariţie.
Funcţia de fezabilitate - FF (engl. Feasability Function). Fiind dat un set static sau
situaţii cu constrângeri de timp de tip TC, pentru o entitate de timp TE, funcţia de
fezabilitate determină dacă cererile de timp ale entităţii de timp TE sunt îndeplinite de
aceste constrângeri de timp TC [60].
Funcţia de urgentare (instaurare) - IF (engl. Instantiation Function) instaurează
un set de constrângeri statice de timp realizabile ITC [60]. O funcţie de instaurare poate
varia timpii de start, perioada p sau timpii limită dl. Pentru exemplificare se consideră un
job pseudoperiodic şi se construiesc entităţile de timp (TE).
Unitatea funcţională este job-ul Je , care manevrează evenimentul e.
Constrângerile de timp dinamice ale apariţiei i sunt determinate de informaţia
despre realizabilitatea în timp a evenimentului sporadic:
Programarea statică
Prin utilizarea programării statice se realizează o minimizare a cererilor de memorie
pentru marginile de intrare sau de ieşire ale unui graf. Programele statice de execuţie ale
nodurilor sunt create “off-line” şi apoi executate pe o bază periodică folosindu-se algoritmi
de programare statici.
Programarea dinamică
În cazul programării de tip dinamic, pentru execuţia grafului se foloseşte un
programator simplu, dinamic, on-line pentru obţinerea unei memorii optimale. Cererile de
memorie sunt mai mici în acest caz decât în cazul utilizării programelor statice create prin
programarea off-line.
Prin metoda grafului de procesare PGM (engl. Processing Grapf Method) pot fi
evaluate cererile de administrare a procesorului, latenţa şi utilizarea memoriei în sinteza
sistemelor distribuite de procesare a semnalelor. Administrarea cererilor de memorie se face
prin grafuri de procesare aciclice. Programarea dinamică on-line poate asigura cereri de
memorie aproape minime.
Grafurile dirijate formate din noduri care reprezintă funcţii de procesare, şi
marginile grafului care descriu fluxul de date de la un nod către următorul, sunt utile în
proiectarea standard pentru dezvoltarea sistemelor de procesare a semnalelor digitale
complexe. Când ajung suficiente date la un nod, acesta execută funcţia sa de la început
până la sfârşit, în mod izolat (adică, fără a se sincroniza cu celelalte noduri).
Astfel de grafuri dirijate sunt numite grafuri de procesare (engl. Processing
Graphs) şi descriu modul de procesare a semnalelor. Fiecare nod reprezintă o funcţie
matematică, dependentă de un curent de date care curge pe marginile grafului, de la
nodurile sursă (de obicei, senzori) către nodurile formate (dispozitive de ieşire).
22
Metodologia grafului de procesare permite înţelegerea mai uşoară a procesării
semnalelor prin alegerea unei structuri de algoritm de tip grafic. Un avantaj important al
reprezentării grafice este acela că, porţiuni ale operaţiei de procesare a semnalelor
(subgrafuri) pot fi înţelese chiar în absenţa întregului algoritm. Optimizarea compilatoarelor
şi eficienţa conduitei de scriere poate ajuta la minimizarea spaţiului cerut pentru formarea
cozii, însă grafurile de procesare cer, de asemenea, şi spaţiu de stocare pentru rezultatele de
procesare imediate stocate temporar pe marginile grafului. Odată ce nodul îşi încheie
execuţia, el adaugă datele la margine conectându-le la un nod cu consum redus de flux de
date. În momentul în care s-au acumulat suficiente date pe marginea de intrare a nodului
consumator, acesta execută şi rearanjează datele de intrare. Spaţiul cerut pentru păstrarea
rezultatelor intermediare pe toate marginile grafului simultan poate fi destul de mare. Odată
ce a fost creat graful de procesare, singura variabilă liberă ce controlează cantitatea de date
stocată pe o margine în relaţia de execuţie dintre nodurile producătoare şi consumatoare
este termenul limită.
Un graf de procesare este descris formal ca un graf dirijat (sau digraf) notat G =
(N,M,). Tripleta (N,M,) constă dintr-un set finit N de noduri, un set finit M de margini şi
o funcţie de incidenţă care asociază fiecărei margini din M, o pereche (nu neapărat
distinctă) de noduri din N.
Fie o margine m M şi nodurile u,v N, astfel încât (m)=(u,v). Spunem că
marginea m alătură nodul u la nodul v sau că u şi v sunt adiacente. Nodul u este numit coada
nodului sursă al marginii m şi v este capul nodului marginii m.
Marginea m este definită ca margine de ieşire pentru nodul u şi margine de intrare
pentru nodul v. Numărul marginilor de intrare pentru un nod v este notat -(v) iar numărul
marginilor de ieşire este +(v). Folosind aceste notaţii, se pot deduce următoarele:
Un nod cu -(v) = 0 este un nod de intrare. Fie I = {v vV -(v) = 0} setul tuturor
nodurilor de intrare.
Un nod cu +(v) = 0 reprezintă un nod de ieşire. Fie O = {v vV +(v) = 0}
setul tuturor nodurilor de ieşire.
Putem afirma că între nodurile u, v V, există o cale notată cu u ⇝ v, dacă şi
numai dacă există o secvenţă de noduri (w1, w2, ... , wk), astfel încât w1=u, wk= v şi i, 1 i
k: e E :: (e) = (wi, wi+1). Altfel spus, există calea între u = w1 şi v = wk dacă există o
secvenţă de noduri (w1, w2, ... , wk) astfel încât wi este adiacent la wi+1, cu i = 1, 2, ..., (k-1).
Există multe modele ale grafurilor de procesare, însă metoda de sinteză pentru
construirea sistemelor în timp real, în scopul facilitării proiectării şi implementării
aplicaţiilor de procesare a semnalelor, se bazează pe graful PGM.
În PGM, un sistem este exprimat printr-un graf dirijat în care nodurile reprezintă
funcţii de procesare, iar marginile reprezintă canale de comunicaţii bufferate, numite cozi.
Funcţia este implicit definită de topologia grafului printr-o arhitectură software
independentă de aplicaţia hardware gazdă. Marginile grafului sunt denumite şi cozi FIFO
(engl. First-In-First-Out) cu trei atribute asociate fiecărei cozi:
- o cantitate de produs, notată pdr(q),
- o cantitate de prag, notată thr(q) şi
- o cantitate de consum, notată cns(q).
23
Cantitatea creată specifică numărul de simboluri (elemente de date de structură
adăugate cozii (sau marginii), atunci când nodul producător (respectiv, nodul sursă pentru
coadă) completează execuţia.
Cantitatea de prag reprezintă numărul minim de simboluri cerut a fi prezent în coadă
(margine) înainte ca nodului să-i fie permis să proceseze datele de la coada de intrare.
Cantitatea de consum este numărul de simboluri luate din coadă (din capul cozii)
după ce funcţia de procesare îşi încheie execuţia.
Spunem că o margine este cu prag depăşit, dacă numărul de simboluri neatribuite
marginii este egal sau mai mare decât cantitatea de prag thr(q).
PGM permite mărimi produs, prag şi consum neunitare, precum şi o cantitate de
consum, mai mică decât cea de prag. Singurele restricţii asupra atributelor cozilor sunt
acelea că ele trebuie să fie valori nenegative iar cantitatea de consum trebuie să fie mai
mică sau egală cu cantitatea de prag. Pentru exemplificare, considerăm porţiunea lanţului
reprezentat în figura 2.1.
u q w
prd(q)= 4 thr(q)=7
cns(q)=3
Pentru un graf dat, latenţa reprezintă intervalul de timp între momentul în care
primul nod începe să execute şi momentul în care ultimul nod din graf încheie execuţia şi
trimite la ieşire datele corespunzătoare funcţiei de execuţie. Într-un graf, singurii parametri
liberi care influenţează latenţa şi limitele de stocare sunt termenii limită.
Dacă cererea de latenţă din aplicaţie este mai mică decât valoarea latenţei dedusă
sub ipoteza de sincronizare puternică (ex. (F(N0, Nn).y0), atunci graful dat nu va satisface
cererea de latenţă niciodată.
Dacă cererea de latenţă este mai mare decât limita stabilită prin ipoteza de
sincronizare puternică dar mai mică decât limita inferioară, schimbarea termenilor limită nu
va ajuta graful să satisfacă cererea sa de latenţă; în acest caz este necesară folosirea unei
unităţi centrale de procesare mai rapide.
Dacă cererea de latenţă este mai mare decât această limită inferioară dar mai mică
decât limita superioară (F(N0, Nn) - 1).y0 + dn (unde di < di+1 , 1 i < n) atunci se vor
urma procedurile de reducere a latenţei până la limita dorită. Dacă acest lucru nu este
posibil, atunci vor fi necesare costuri suplimentare pentru schimburi externe. De exemplu,
dacă tehnica de atribuire a termenului final nu este posibilă datorită cedării limitelor de
latenţă satisfăcătoare înainte ca testul de programabilitate să întoarcă un rezultat negativ, se
poate decide dacă este necesară folosirea unui procesor mai rapid sau adăugarea de
memorie pentru mărirea spaţiului de stocare. Prima alegere rezolvă problema latenţei,
folosind o unitate centrală suficient de rapidă. Adăugarea de memorie nu conduce
întotdeauna la reducerea latenţei.
Pentru susţinerea afirmaţiilor anterioare, presupunem că există un graf pentru care
termenii limită nu au fost reduşi, astfel încât primele k noduri din lanţ au toate temeni limită
egali cu intervalul lor de viteză (di = yi , i : 1 i k ) iar ultimele (n - k) noduri au valori
ai termenilor limită egali cu dk . Limita de latenţă este încă prea mare şi micşorând termenii
limită pentru ultimele (n - k) noduri se obţine un rezultat negativ. Putem reduce limita de
latenţă mai departe, prin setarea tuturor termenilor limită astfel încât cererea de latenţă va
avea valoarea maximă:
Aceasta duce la creşterea cererilor de stocare pentru primele k noduri, dar poate
produce o stivă suficientă în program, astfel încât graful este acum programabil chiar dacă
termenii limită pentru ultimele (n - k) noduri au fost reduşi în scopul obţinerii limitei de
latenţă dorită. Graful va deveni programabil cu aceşti noi termeni limită însă va avea nevoie
de mult mai multă memorie datorită costurilor de schimb extern: mai multă memorie, o
unitate centrală mai rapidă sau cereri mai mici.
25
Deoarece aplicaţia propusă are topologia unui lanţ, s-a restrâns analiza la lanţuri iar
rezultatele au fost apoi extinse la grafuri PGM generale.
Qi-1 Qi Qi+1
Ni Ni+1
p=4 r=7,
c=3
26
Dacă nodul u execută la momentele 0, y, 2y, 3y, ..., nodul v este ales pentru o
execuţie la momentele y şi 2y şi pentru două execuţii la momentul 3y. Modelul de execuţie
al nodului v este repetitiv, dar niciodată periodic sau sporadic. Chiar dacă execuţia grafului
este forţată astfel încât să se potrivească unui model de job periodic sau sporadic, cu un job
reprezentând fiecare nod, se va introduce latenţă adiţională.
Job-urile periodice sau sporadice multiple pot fi folosite în modelarea nodului. O
paradigmă care foloseşte viteze de forma x pentru execuţiile unui nod în y unităţi de timp
reprezintă un model mult mai simplu pentru analiza programării latenţei şi a cererilor de
stocare într-o aplicaţie a grafului de procesare.
Vitezele de execuţie ale nodului sunt definite după cum urmează: timpul de execuţie
de ordin j al nodului v este reprezentat ca Tj(v). Viteza de execuţie este definită de o
pereche întreagă (x,y). Viteza de execuţie pentru nodul v, notată Rv = (x,y),este validă dacă
nodul v execută exact x timpi în toate intervalele de timp [t, t+ y], unde t > T1(v).
Pentru analiză, se vor considera lanţuri şi grafuri aciclice.
Fie i ⇝ w un lanţ PGM astfel încât, dacă i I (setul nodurilor de intrare), u,v { i
⇝w} cu (q) = (u,v) şi Ri = (xi ,yi ). Presupunând ipoteza de sincronism puternică şi nici
un simbol pe marginea q prioritară la începutul execuţiei grafului, viteza de execuţie a
nodului v este Rv = (xv,yv) unde:
prd(q) cns(q)
xv xu şi yv yu (2.7)
gcd( prd(q) xu , cns(q)) gcd( prd(q) xu , cns(q))
Prin gcd s-a definit cel mai mare divizor comun (engl. greatest common divider);
cns reprezintă cantitatea de consum iar prd reprezintă cantitatea de produs.
Ecuaţiile (2.7) pot fi folosite pentru deducerea vitezei de execuţie a oricărui
consumator în limitele producătorilor lui, într-un lanţ de noduri. De exemplu, luând (q) =
(u,w) pentru marginea q şi o viteză de execuţie Ru = (3,16) pentru nodul u din figura 2.3
(nodul execută 3 timpi în orice interval de lungime 16), viteza de execuţie a nodului
consumator w este dedusă astfel:
prd(q) xu cns(q) y u
Rw ( x w , y w ) ,
gcd( prd(q) xu , cns(q)) gcd( prd(q) xu , cns(q))
43 3 16
4,16
12 48
, , (2.8)
gcd( 4 3, 3) gcd( 4 3, 3) gcd(12, 3) gcd(12, 3)
Considerăm în continuare cazul în care nodul w are şi altă margine de intrare, cum
se arată în figura 2.3.
Nodul w este un nod consumator de date produse de ambele noduri u şi v.
Mărimea Rwu = ( xwu , ywu ) reprezintă viteza de execuţie a nodului cu
respectarea datelor produse de nodul u, ca pereche producător / consumator într-un lanţ.
Astfel, Ru = (3,16), Rwu = (4,16), deduse din relaţiile (2.3.). Cu Rv = (2,12), Rwv este
calculat astfel:
prd()= 4
thr()= 7,
u cns()= 3
w
thr()= cns()= 2
v prd()= 3
cns(q) y v
y v lcm | (q) (u, v),
gcd( prd(q) xu , cns(q)
(2.11)
prd (q) xu
x v yv , q, u : (q) (u, v)
cns(q) yu
28
De exemplu, fiind date nodurile u şi v din fig. 3.2, cu Ru = (3,16) şi Rv = (2,12) când
xwu / ywu. = xwv / ywv., viteza de execuţie pentru nodul w este:
cns( ) yu cns( ) y v
y w lcm ,
gcd( prd( ) xu , cns( )) gcd( prd( ) xv , cns( ))
3 16 2 12 3 16 2 12
lcm , lcm , lcm16 ,12 48
gcd(4 3, 3) gcd(3 2, 2) 3 2
Astfel, Rw = (xw , yw) = (12,48) şi, după prima sa execuţie, nodul w din figura 2.3 va
executa 12 timpi în fiecare interval de lungime 48.
Modelul RBE (engl. Rate Based Execution) este un model de job general alcătuit din
procese independente, specificate cu ajutorul a 4 parametri: (x, y, d, e). Perechea (x, y)
reprezintă viteza de execuţie a job-ului RBE, unde x este numărul de execuţii cerut într-un
interval de lungime y. Parametrul d (deadline) caracterizează timpul de răspuns, adică
timpul maxim dorit între momentul eliberării unui job şi încheierea execuţiei sale (d este
termenul limită relativ). Parametrul e reprezintă timpul maxim cerut de procesor pentru
executarea job-ului [84]. Un set de job-uri RBE este realizabil dacă există un program
prioritar, astfel încât eliberarea de ordin j a job-ului Ji la momentul ti,j să fie garantată să
încheie execuţia în timpul Di (j) unde:
Di(j) = ti,j + di , dacă 1 j xi şi Di(j) = max (ti,j + di , Di(j - xi) + yi , dacă j > xi
Modelul de job RBE nu precizează momentul când un job va fi eliberat, însă relaţiile
anterioare asigură că, nu mai mult de xi termeni limită vor fi într-un interval de lungime yi,
chiar atunci când într-un interval de lungime yi au loc mai mult decât xi eliberări ale lui Ji.
Funcţia de atribuire a termenilor limită previne acest lucru prin crearea mai multor cereri de
proces într-un interval de un job, decât atunci când acesta este specificat prin mai mulţi
parametri.
Fiecărui nod i se va asocia un job. Astfel, fiecare nod u din graf este asociat cu 4
parametri (xu ,yu ,du ,eu ). Parametrii xu şi yu sunt deduşi din relaţiile (2.12). Parametrul eu
reprezintă timpul de execuţie pentru cel mai defavorabil caz al nodului u. Singurul
parametru liber este parametrul du - termen limită relativ, care influenţează cererile de
capacitate ale procesorului, latenţa şi cererile de stocare. Ỉn general, dacă se alege o valoare
mică pentru du, latenţa va fi mai mică şi cererile de memorie vor fi reduse. Dacă se alege o
valoare mai mare pentru du, latenţa va fi mai mare, cererile de memorie vor fi mai mari şi
va creşte costul cererilor de capacitate a procesorului. Valorile pentru timpul de execuţie,
produs, prag, consum şi termenul limită vor afecta toate programarea, latenţa şi cererile de
stocare, iar una dintre aceste valori poate face schimb cu oricare alta. Termenul limită
29
relativ trebuie selectat astfel încât rezultatul în stocarea modestă pe marginile grafului să se
facă fără a supraîncărca procesorul cu cereri. Cum du afectează cererile de capacitate ale
procesorului, latenţa şi cererile de stocare, un punct de plecare pentru selecţia lui du este ca
du să fie mai mare sau egal cu termenul limită al nodului prcedent şi mai mic sau egal cu yu.
Când termenul limită al fiecărui nod este mai mare sau egal cu precedentul termen
limită al aceluiaşi nod, se poate utiliza o tehnică de programare numită moştenire de timp de
eliberare, în scopul minimizării latenţei. Nodului u i se atribuie un timp de eliberare logic
(la momentul eliberării lui actuale) care este egal cu timpul de eliberare logic al nodului
care a iniţiat u în timpul execuţiei grafului. Funcţia de atribuire a termenilor limită foloseşte
timpi de eliberare logici în locul timpilor de eliberare reali.
După ce s-a asociat fiecărui nod u din graf parametrii (xu ,yu ,du ,eu), obţinem un
sistem de job-uri RBE de forma J = {J1 ,J2 ,..., Jn}. Un job este eliberat atunci când toate
marginile de intrare ale nodului au pragul depăşit; asigurarea constrângerilor precedente se
face pentru o execuţie corectă a grafului. Job-urile eliberate sunt programate cu algoritmul
de programare RBE-EDF, un program EDF simplu, prioritar, care utilizează funcţia de
atribuire a termenilor limită cu moştenirea timpului de eliberare. Realizarea unui set de job-
uri RBE poate fi obţinută cu relaţiile (3.10), care reduc condiţia de realizare EDF stabilită
pentru U 1 când xi = 1 şi di = yi .
Fie J = {(x1 ,y1 ,d1 ,e) ,... ,(xn ,yn ,dn ,en )} un set de job-uri. J va fi realizabil dacă şi
numai dacă:
n
L d i yi a
daca a 0
L 0, L f xi yi unde f (a) (2.13)
i 1 yi
0 daca a 0
Fie J = {(x1 ,y1 ,d1 ,e1) ,... ,(xn ,yn ,dn ,en )} un set de job-uri pentru care, pentru
maparea u N i : (xi ,yi ,di ,ei) = (xn ,yn ,dn ,en). Conform celor precizate anterior, putem
afirma că, graful de procesare definit prin funcţia G = (N, M, ) este programabil cu
programul RBE-EDF dacă relaţia (2.13) se păstrează pentru J. Un rezultat afirmativ după
testarea relaţiei (2.13) înseamnă că programul RBE-EDF poate fi folosit la executarea
grafului fără a omite nici un termen limită şi cererile de stocare ale fiecărui nod şi de
asemenea ale întregului graf pot fi limitate.
Cele trei utilizări primare ale memoriei într-un sistem de procesare a semnalelor
sunt următoarele: spaţiu de stocare a datelor finale planificat, spaţiu pentru vehicularea
datelor pe marginile fiecărui nod în parte şi spaţiu de stocare pentru rezultatele intermediare
de pe marginile grafului.
Cererile de memorie pentru primele două sunt aceleaşi pentru oricare dintre
implementări: statică sau dinamică. Pentru administrarea cererilor de memorie ale
marginilor grafului se foloseşte programarea statică. Programele de execuţie ale nodului
static sunt create off-line şi apoi executate pe o bază periodică. O folosire eficientă a
spaţiului de stocare implică spaţiu de stare mai mare pentru program. Spaţiul de stocare
cerut pentru programele statice depinde de algoritmul de programare folosit. Pentru a obţine
spaţiul cerut pentru marginea de intrare trebuie luată în considerare viteza datelor de intrare
şi durata programului. Programele statice sunt de obicei executate pe o bază periodică, cu
30
un timer ce indică momentul de start al execuţiei programului. Dacă programul execută fără
a insera timp nefolosit (timp în care nu se execută nimic) odată ce începe, atunci execuţia
nu poate începe până când nu au fost acumulate suficiente date pe marginile de intrare ale
grafului, pentru a asigura o execuţie validă a grafului. Perioada unui program static este
egală cu valoarea maximă y a vitezelor de execuţie pentru setul de noduri conectate la
dispozitivele externe. In funcţie de program, timpii de execuţie ai nodului precum şi
caracteristicile execuţiei nodului sursă, se pot acumula mai multe sau mai puţine date în
timpul executării programului. Este importantă cunoaşterea dependenţei de lungime a
perioadei programate şi când anume începe programul static, precum şi cantitatea de date
care se acumulează pe cozile de intrare.
Folosirea algoritmilor de programare off-line pentru administrarea cererilor de
memorie implică un spaţiu mare de stocare în memorie, de aceea se apelează la un program
on-line simplu, dinamic, pentru execuţia grafului. Unul din avantajele modelului RBE faţă
de alţi algoritmi de programare dinamici este acela că are o mare flexibilitate în descrierea
momentelor în care nodurile vor executa. Flexibilitatea în programare are însă şi
dezavantajul că face dificilă deducerea limitelor strânse pentru cererile de stocare ale unei
margini.
Regulile de execuţie pentru nodurile PGM cu multiple margini de intrare sunt astfel
încât o margine de intrare poate fi cu prag depăşit cu mult înaintea alteia şi ecuaţiile deduse
din funcţiile pentru limitarea cererilor de stocare nu pot fi aplicate la grafurile PGM
generale. Multe aplicaţii de procesare a semnalelor au caracteristicile fluxului de date astfel
încât să putem obţine limite de stocare cât mai strânse.
Analiza proprietăţilor în timp real ale grafului se face ţinând cont de relaţiile de
execuţie fundamentale care există între nodurile producătoare/consumatoare şi nu depind de
modelul de execuţie. Se definesc mai întâi restricţiile asupra execuţiei nodului. În
concordanţă cu PGM, modelul de execuţie cere ca toate marginile de intrare la un nod să fie
cu prag depăşit înainte ca nodul să fie ales pentru execuţie.
Practica standard în implementarea sistemelor de flux de date, dificilă pentru
specificaţia PGM, constă în a nu permite două execuţii cu depăşire ale aceluiaşi nod iar
datele trebuie citite de la marginea de intrare a nodului care urmează să intre în execuţie la
începutul fiecărei execuţii. Datele sunt consumate după ce nodul a trimis rezultatele finale
ale execuţiei sale către marginile de ieşire, ceea ce arată că, un nod cere simultan spaţii de
stocare atât pentru intrare cât şi pentru ieşire.
Pentru ca nodul să aibă execuţii valide, se presupune că nu se pierde nici o dată în
timpul execuţiilor sale. Definiţiile care urmează conduc la o bază formală pentru analiza
execuţiei nodurilor, precum şi a proprietăţilor ce stau la baza circulaţiei datelor între
nodurile producătoare şi cele consumatoare, prin canalele de transmisie.
a. Nodul N1 este eligibil (este pregătit pentru execuţie, poate fi ales) pentru execuţie
atunci când toate marginile sale de intrare sunt cu prag depăşit.
b. Execuţia unui nod este validă dacă şi numai dacă :
- nodul execută doar atunci când este ales pentru execuţie şi nu se suprapun două execuţii
ale aceluiaşi nod,
- fiecare margine de intrare are datele sale consumate atomic şi
- datele sunt produse cel mult o dată pe marginea de ieşire în timpul fiecărei execuţii a
nodului.
31
c. Execuţia unui graf este validă dacă şi numai dacă toate nodurile din secvenţa de
execuţie au execuţii valide şi nu se pierde nici o dată.
Relaţia de execuţie dintre nodurile producătoare/consumatoare se determină
folosind porţiunea de două noduri din lanţul prezentat în figura 2.4.
Qi-1 Qi Qi+1
Ni Ni+1
p=4 r=7,
c=3
Lanţul are o margine ale cărei valori de produs, prag şi consum sunt relativ începute
- acest lucru se face pentru a ilustra relaţiile generale între atributele fluxului de date şi
execuţia nodului. Conform valorilor numerice prezentate în figura 2.4, nodul Ni produce 4
simboluri de fiecare dată când execută. Nodul Ni+1 are un prag egal cu 7 şi consumă 3
simboluri după ce execută. În consecinţă, nodul Ni trebuie să execute de două ori înainte de
a avea marginea Qi cu prag depăşit iar nodul Ni+1 să execute pentru prima dată. După ce
nodul Ni+1 execută, el consumă doar 3 simboluri, lăsând 5 simboluri pe marginea Qi. A treia
execuţie a nodului Ni produce încă 4 simboluri (pentru un total de 9 simboluri pe marginea
Qi) şi nodul Ni+1 execută din nou, consumând încă 3 simboluri. Următoarea execuţie a
nodului Ni produce încă 10 simboluri pe Qi şi nodul Ni+1 este capabil să execute de două ori
- lăsând 4 simboluri pe Qi, care reprezintă acelaşi număr de simboluri care erau pe Qi după
prima execuţie a lui Ni. În acest mod, execuţiile ulterioare ale nodurilor Ni şi Ni+1 vor urmări
acelaşi model.
Latenţa
Latenţa, ca o definiţie generală, reprezintă întârzierea în timp măsurată între
momentul eşantionării unui semnal şi momentul prezentării semnalului procesat la
dispozitivele de ieşire (care pot fi un ecran, un difuzor sau alt computer). Latenţa este o
funcţie a algoritmului de programare. În cazul modelelor de graf, latenţa are de asemenea o
componentă structurală. Latenţa unui eşantion al semnalului depinde de atributele fluxului
de date ale grafului şi numărul de simboluri aflate pe fiecare margine sa grafului în
momentul sosirii eşantionului. Se poate calcula mărimea latenţei eşantionului calculând
numărul de eşantioane cerute înainte ca un nod Nn din graf să înceapă să execute.
32
CAPITOLUL 3
SCL
SDA
a)
INTERFATA CONTROLER
LINIE MOD SALVA
SCL
SDA
b)
Criterii de bază:
- Dispozitivele care comunică între ele pe o magistrală serială trebuie să aibă aceeaşi
formă de protocol, pentru a evita astfel toate posibilităţile de confuzie, pierderile sau
distorsiunile de date din timpul transferului, blocaje ale informaţiei, etc.;
- Dispozitivele care sunt proiectate să lucreze în moduri rapide sau de viteze înalte
trebuie să poată comunica cu dispozitivele care lucrează în moduri lente (standard);
- Sistemul să nu fie dependent de dispozitivele conectate la el, de numărul acestora
sau de funcţiile pe care acestea trebuie să le îndeplinească. În caz contrar modificările şi
îmbunătăţirile sistemelor cu magistrală serială I2C ar fi imposibile.
- Orice protocol folosit pentru controlul sistemelor cu magistrală serială multiplexată
I2C trebuie să fie structurat pentru a decide care dispozitiv va controla magistrala şi când
anume.
- Dacă magistrala trebuie să deservească dispozitive cu viteze de clock diferite, atunci
ea trebuie să aibă o sursă de clock proprie definită.
34
3.2. Structura magistralei I2C
Pentru o înţelege mai bine modul de lucru al magistralei seriale I 2C, vom enumera
unele dintre caracteristicile standard:
are numai două fire (linii) de magistrală: - o linie serială de date (SDA – Serial Data) şi
- o linie serială de clock (SCL – Serial Clock);
fiecare dispozitiv conectat la magistrală este adresabil software în orice moment, printr-
o adresă unică şi relaţii simple de tip master/slave;
oricare dintre circuitele master poate funcţiona atât ca transmiţător master cât şi ca
receptor master;
este o magistrală multi-master, care include detecţia ciocnirii şi procedura de arbitrare,
în scopul prevenirii falsificării sau pierderii datelor în cazul în care două sau mai multe
circuite de tip master iniţiază simultan un transfer de date;
transferul de date serial, pe 8 biţi, bidirecţional se poate face cu una din următoarele
viteze, aleasă în funcţie de modul de lucru stabilit de proiectant:
- până 100 kbit/s în modul standard S (Standard Mode),
- până la 400 kbit/s în modul rapid F (Fast Mode),
- până la 3.4 Mbit/s în modul viteză înaltă HS (High Speed Mode);
filtrarea on-chip rejectează efectele tranzitorii de pe magistrală, în scopul menţinerii
integrităţii datelor;
36
numărul de circuite integrate care pot fi conectate la aceeaşi magistrală este limitat
numai de o capacitate maximă a magistralei, Cb = 400 pF.
Atât SDA cât şi SCL sunt linii bidirecţionale, conectate la o tensiune de alimentare
pozitivă prin intermediul unei surse de curent sau printr-un rezistor Rp de tip pull-up, ca în
figura 3.3. Atunci când magistrala este liberă, ambele linii sunt în starea HIGH. Etajele de
ieşire ale dispozitivelor conectate la magistrală trebuie să fie de tip cu drenă în gol sau
colector în gol pentru a putea realiza funcţia ŞI – cablat, cerută în specificaţiile I2C.
+VDD
Rp Rp rezistoare
pull-up
SDA (linie serială de date)
SCLK SCLK
DISPOZITIV 1 DISPOZITIV 2
Datele de pe magistrala I2C pot fi transferate în unul din cele trei moduri de
funcţionare:
- modul standard (S) – cu viteză de până la 100 Kbit/s,
- modul rapid (F) – cu viteză de până la 400 Kbit/s sau
- modul viteză înaltă (Hs) – cu viteză de până la 3.4 Mbit/s.
Datorită diferitelor tehnologii de realizare a dispozitivelor (CMOS, NMOS, bipolar)
care pot fi conectate la magistrala serială I 2C, nivelele lui “0” logic (LOW) şi “1” logic
(HIGH) nu sunt fixe şi depind de nivelul asociat potenţialului VDD pentru fiecare dispozitiv.
Pot fi conectate la magistrala I2C dispozitive care au tensiuni de alimentare diferite (de
exemplu VDD1 , VDD2 , VDD3 , … etc.).
Pentru fiecare bit transferat va fi generat un impuls de clock.
39
CAPITOLUL 4
SDA
SCL
În interiorul procedurii magistralei I2C, situaţiile unice care pot apărea sunt cele
definite ca fiind condiţiile START (S) şi STOP (P), ilustrate în figura 4.2.
SDA SDA
SCL S SCL
P
40
Condiţia START (S) este definită printr-o tranziţie de tip HIGH - LOW pe linia
serială de date (SDA), în timp ce linia serială de clock (SCL) este în starea HIGH. După
condiţia START magistrala se consideră ocupată. Magistrala va fi din nou liberă după un
anumit timp, când se realizează o condiţie STOP.
Condiţia STOP (P) este definită printr-o tranziţie de tip LOW - HIGH pe linia
serială de date (SDA), în timp ce linia serială de clock (SCL) este în starea HIGH.
Condiţiile START şi STOP sunt întotdeauna generate de un dispozitiv master.
În cazul în care se generează o condiţie START repetat (Sr) în locul unei condiţii
STOP, magistrala va rămâne în continuare ocupată până la apariţia unei condiţii STOP sau
START repetat. Din acestă perspectivă, condiţiile START (S) şi START repetat (Sr) sunt
din punct de vedere funcţional identice. Totuşi, simbolul S va fi folosit ca un termen
generic atât pentru condiţia START cât şi pentru condiţia START repetat, mai puţin în
situaţia în care Sr este relevant în mod special.
Detecţia condiţiilor START şi STOP de către dispozitivele conectate la magistrală
este uşoară dacă ele conţin necesarul de hardware pentru interfaţare. Dispozitivele master
(microcontrolerele) care nu au o astfel de interfaţă trebuie să eşantioneze linia SDA de cel
puţin două ori în timpul unei perioade de clock, pentru a sesiza tranziţia.
Fiecare byte de date plasat pe linia SDA trebuie să aibă o lungime de 8 biţi.
Numărul de bytes care poate fi transmis în timpul unui transfer este nerestricţionat, însă o
condiţie necesară care se impune este ca fiecare byte să fie urmat de un bit de confirmare
(notat prin A). Datele se transferă începând cu cel mai semnificativ bit (MSB), aşa cum se
arată în figura 4.3.
P
SDA
MSB semnal de confirmare semnal de confirmare Sr
de la slave de la receptor
byte complet
întrerupere în slave linia clock menţinută la nivel
LOW în tipul servirii întreruperilor
S Sr
sau 1 2 7 8 9 1 2 3-8 9 sau
SCL Sr P
ACK ACK
condiţie
condiţie STOP (P)sau
START (S) sau START repetat
START repetat (Sr)
(Sr)
Dacă un dispozitiv slave nu poate primi sau transmite un alt byte de date deoarece
trebuie să realizeze o altă funcţie (de exemplu să deservească o întrerupere internă), atunci
el poate menţine linia serială de clock SCL la nivel LOW, forţând astfel dispozitivul master
41
să intre în stare de aşteptare (wait). După aceasta, transferul de date continuă atunci când
dispozitivul slave a încheiat funcţia pe care trebuia să o execute şi este gata să transmită sau
să primească un alt byte de date. În acest scop, el eliberează linia serială de clock SCL.
În anumite situaţii, se permite folosirea unui format diferit de formatul unui byte de
date standard pe magistrala I2C (de exemplu pentru dispozitive compatibile CBUS). Un
mesaj (secvenţă de date) care începe cu o astfel de adresă poate fi încheiat prin generarea
unei condiţii STOP, chiar în timpul transmisiei unui byte. În acest caz nu se generează nici
o confirmare.
DATE IEŞIRE
TRANSMIŢĂTOR
neconfirmare
DATE IEŞIRE
RECEPTOR
confirmare
SCL DE LA
MASTER 1 2 8 9
S
Orice dispozitiv receptor care a fost adresat este obligat să trimită o confirmare după
fiecare byte recepţionat, cu excepţia situaţiei în care mesajul începe cu o adresă CBUS.
Când un receptor slave nu confirmă adresarea (de exemplu, nu poate recepţiona sau
transmite, deoarece realizează o anumită funcţie în timp real), linia de date SDA trebuie
lăsată în starea HIGH de către slave. Masterul generează fie o condiţie STOP pentru a
abandona transferul, fie o condiţie de START repetat pentru a începe un nou transfer.
Dacă un receptor slave confirmă adresarea slave dar, la un moment dat, în timpul
transferului nu mai poate recepţiona alţi bytes de date, masterul abandonează din nou
transferul. Acest fapt este indicat de generarea de către slave a neconfirmării pe primul byte
care urmează. Dispozitivul slave părăseşte linia de date în starea HIGH şi masterul
generează o condiţie STOP (P) sau o condiţie START repetat (Sr).
Dacă un receptor master e implicat într-un transfer, el semnalează sfârşitul datelor la
transmiţătorul slave prin negenerarea unei confirmări al ultimului byte extras din slave.
42
Transmiţătorul slave trebuie să elibereze linia de date SDA pentru a permite
masterului să genereze o condiţie STOP (P) sau START repetat (Sr).
Toate aceste reguli enumerate anterior trebuie respectate pentru ca magistrala, şi
deci întregul sistem, să funcţioneze corect.
Toate dispozitivele master generează propriul semnal de clock, pe linia SCL, pentru
a transfera date pe magistrala I2C. Datele sunt valabile numai pe durata perioadei HIGH a
clock-ului de aceea, semnalul de clock trebuie să fie bine definit pentru ca procedura de
arbitrare bit cu bit să aibă loc.
Sincronizarea clock-ului se realizează prin conexiunea ŞI - cablat pentru interfeţele
magistralei seriale I2C la linia SCL. O tranziţie HIGH - LOW pe linia SCL face ca
dispozitivele implicate să înceapă să numere perioadele lor LOW şi, odată ce clock-ul unui
dispozitiv a evoluat în starea LOW, el va menţine linia SCL în această stare până când se
atinge starea HIGH pentru clock (figura 4.5).
start numărare
Stare de perioada HIGH
aşteptare
CLK
1
reset
numărător
CLK
2
SCL
Tranziţia LOW - HIGH a acestui clock nu poate schimba starea liniei SCL dacă un
alt clock este încă în LOW. Linia SCL va fi menţinută în LOW de către dispozitivul cu cea
mai lungă perioadă LOW. Dispozitivele cu perioade LOW mai scurte intră într-o stare de
aşteptare HIGH pe acest interval de timp.
Când toate dispozitivele interesate şi-au numărat propriile perioade LOW, linia
serială de clock (SCL) va fi eliberată şi trece la nivel HIGH. În acest moment nu va mai fi
nici o diferenţă între clock-urile dispozitivelor şi starea liniei SCL, realizându-se
sincronizarea dispozitivelor cu clock-ul serial (SCL) al magistralei I2C. Dispozitivele vor
începe să numere perioadele lor HIGH şi primul care îşi va completa perioada sa HIGH, va
trage din nou linia SCL la nivel LOW.
43
Astfel, se generează un clock serial (SCL) sincronizat, care va avea perioada LOW
determinată de dispozitivul cu cea mai lungă perioadă LOW a clock-ului, iar perioada
HIGH determinată de dispozitivul cu cea mai scurtă perioadă HIGH a clock-ului.
Un dispozitiv master poate declanşa un transfer de date numai dacă magistrala este
liberă. Două sau mai multe dispozitive master pot genera condiţii START în interiorul
timpului minim de menţinere (tHD;STA) a condiţiei START de pe magistrală.
Arbitrarea are loc pe linia SDA, în timp ce linia SCL este la nivel HIGH. Masterul
care transmite un nivel HIGH, în timp ce un alt master transmite un nivel LOW va pierde
arbitrarea şi va fi nevoit să deconecteze datele sale de la etajul de ieşire.
Arbitrarea poate continua pentru mai mulţi biţi. Mai întâi, se compară biţii de
adresă. Dacă mai multe dispozitive master încearcă fiecare să adreseze acelaşi dispozitiv,
arbitrarea continuă cu compararea biţilor de date dacă dispozitivele sunt transmiţătoare
master sau a biţilor de confirmare dacă dispozitivele sunt receptoare master. Informaţiile de
adresă şi date pe magistrala I2C sunt determinate de dispozitivul master câştigător, pe
timpul procesului de arbitrare nu se pierde nici o informaţie, datele rămânând valabile.
Un master care pierde arbitrarea va genera impulsuri de clock până la sfârşitul
bytului de date în timpul căruia a pierdut arbitrarea. Cum un master care funcţionează în
modul viteză înaltă (Hs) are un cod master unic de 8 biţi, înseamnă că el va încheia
arbitrarea pe durata primului byte de date.
Dacă un master încorporează o funcţie slave şi pierde arbitrarea pe durata etapei de
adresare, este posibil ca masterul câştigător să încerce tocmai adresarea sa. Dispozitivul
master care a pierdut arbitrarea trebuie să comute imediat în modul slave.
În figura 4.6 este descrisă procedura de arbitrare pentru două dispozitive master.
DATA
2
SDA
SCL
44
Pot fi implicate mai multe dispozitive master, în funcţie de câte sunt conectate la
magistrală. În momentul în care există o diferenţă între nivelul intern al datelor de la
dispozitivul master care generează DATA 1 şi nivelul real de pe linia SDA, master 1 pierde
arbitrarea şi este nevoit să deconecteze datele sale de la magistrală. Aceasta nu va afecta
însă transferul de date care a fost iniţiat de dispozitivul master câştigător.
Deoarece controlul magistralei I2C se decide exclusiv pe adresa sau codul master şi
datele transmise de dispozitivele master competitoare, putem afirma că nu există un
dispozitiv master central şi nici o ordine de prioritate pe magistrală.
O atenţie specială trebuie acordată dacă, pe durata unui transfer serial, procedura de
arbitrare este încă în desfăşurare la momentul când pe magistrală se transmite o condiţie de
START repetat sau de STOP. În acest caz, dispozitivele master implicate trebuie să
transmită aceste condiţii de START repetat sau STOP pe aceeaşi poziţie în cadrul format.
Arbitrarea nu este permisă în oricare din situaţiile următoare:
- între o condiţie de START repetat (Sr) şi un bit de date;
- între o condiţie de STOP (P) şi un bit de date;
- între o condiţie de START repetat (Sr) şi o condiţie de STOP (P).
45
SISTEME DE TIMP REAL
Prin definiţie, un sistem de timp real este un sistem a cărui corectitudine depinde nu
doar de soluţiile logice obţinute prin calcul, ci şi de timpul real la care aceste soluţii au fost
determinate. Operaţiunile într-un sistem de timp real se execută în timp real. Aceasta este o
definiţie generală, care cuprinde o mare varietate de sisteme, incluzând filtrele digitale,
sistemele de comunicaţii multimedia, sistemele de procesare a tranzacţiilor “on-line”,
sistemele pentru schimburi de mesaje, sistemele de control de fabricaţie, sistemele de
control al proceselor, etc.
Sistemele distribuite de timp real lucrează pe arhitecturi de reţele specializate, care
includ clase de servicii şi protocoale în scopul susţinerii comunicaţiilor de timp real
influenţate de constrângerile prevăzute prin alocarea mesajelor simple sau în pachete.
Arhitecturile de reţele pot fi clasificate într-o varietate de moduri, în funcţie de
domeniul de aplicaţie, de tipul comunicaţiei sau de scopul în care acestea sunt folosite.
Algoritmii care stau la baza construirii modelelor de sisteme de timp real au
suportul în calculul ponderat şi în programarea liniară. Aceste calcule sunt utilizate în
scopul simplificării sistemelor şi efectuării unei analize corecte la toate nivelele de
prioritate. Algoritmii utilizaţi oferă garanţii arbitrare, în intervale mici de timp în
satisfacerea constrângerilor de timp ale reţelelor. Echipamentele realizate pe job-uri cu un
singur obiect sau cu mai multe obiecte au condus la obţinerea modemurilor de timp real.
Astfel, sistemul poate garanta răspunsul în timp real al procesului care a fost implementat.
Dintre toate sistemele de timp real, cele mai utilizate sunt sistemele de control al proceselor.
Un sistem de timp real distribuit este un sistem complex, care cuprinde mai multe
funcţii accesate de procesoare diferite. În multe sisteme de timp real (de exemplu, în
sistemele de control industrial al energiei nucleare, controlul traficului aerian, controlul
misiunilor spaţiale sau controlul proceselor industriale) calculele realizate de controler sunt
mult mai complicate.
Controlerul din sistemul realizat în inel include şi componente umane (unul sau mai
mulţi controleri umani) care iau decizii bazate pe datele primite de la senzori. Aceste
sisteme poartă denumirea de sisteme în buclă deschisă
Următorul pas logic în evoluţia sistemelor de timp real îl reprezintă introducerea
autonomului. În figura 1.1 se prezintă un model abstract al unui sistem autonom de control,
în care cooperarea experţilor umani este înlocuită de software-ul pentru probleme de
comunicaţie.
Sistemele de timp real încă evoluează, urmând ca ele să fie înlocuite de următoarea
generaţie a sistemelor de timp real autonome în buclă închisă, în care experţii umani vor fi
înlocuiţi prin software. Autonomia sistemelor depinde de obiectivele tehnico-economice:
calitatea, productivitatea şi profitabilitatea, precum şi de protecţia împotriva pericolelor sau
dificultăţi de ordin tehnic. Sistemele de control din generaţia următoare vor fi distribuite,
complexe, dinamice, de nivel înalt, adaptabile şi cu o comportare inteligentă. Ele vor
conţine mai multe tipuri de timere şi vor opera într-un domeniu larg de nedeterminări.
NOD NOD NOD NOD
SENSORI
stare curentă
Fig. 1.1 Modelul abstract al unui sistem autonom de control în timp real
2
Mesajele în timp real pot fi clasificate în două categorii principale:
- Mesaje de căutare garantate, care includ o garanţie din partea sistemului (dacă
activitatea care produce apariţia lor este acceptată pentru execuţie, atunci constrângerile de
timp vor fi respectate cu siguranţă). În generaţia actuală a sistemelor distribuite de timp real
în buclă închisă, mesajele de căutare garantate sunt de două tipuri: mesaje periodice şi
mesaje de alarmă (alertă).
Mesajele periodice transportă informaţia de senzor despre starea curentă a
procesului controlat şi sunt transmise periodic în timp. De exemplu, într-un sistem de
control al unui proces industrial, calculatoarele din diferite locuri ale întreprinderii
colectează periodic informaţii despre starea procesului: factorul de umplere, presiunea şi
temperatura, cu ajutorul senzorilor şi transmit aceste informaţii la dispeceratul central, unde
operatorii umani iau deciziile necesare pentru execuţia procesului. Mesajele periodice
necesită garanţii în cazul în care termenii limită sunt întâlniţi în ordinea în care starea reală
a procesului controlat şi imaginea stării controlerului obţinută prin aceste mesaje sunt
închise pentru oricare altă stare.
Mesajele de alarmă sunt folosite pentru diseminarea informaţiei într-o situaţie de
urgenţă. De exemplu, controlerul poate fi nevoit să închidă utilitarele pentru o perioadă
determinată de timp. Cu toate că mesajele de alertă sosesc destul de rar, sistemul trebuie să
garanteze că acestea vor fi livrate cu respectarea termenilor finali.
- Mesajele cu efort minim au constrângeri de timp dar nu pot cere o garanţie din
partea sistemului. Sistemul va încerca să satisfacă aceste constrângeri. Exemplele mesajelor
cu cel mai mic efort în sistemele actuale includ unele tipuri de comenzi pentru operatorii
umani şi de asemenea unele tipuri de avertizări şi răspunsuri. De exemplu, stările sigure şi
mesajele de control, şi vizualizările de traiectorii şi mesajele de răspuns în cadrul sistemelor
de control pentru misiunile în spaţiu închis pot fi clasificate ca fiind mesaje cu efort minim.
Aceste mesaje apar asincrone şi sunt de regulă tratate ca mesaje uşoare de timp real.
Sistemul este proiectat să minimizeze răspunsul în timp pentru aceste mesaje. Multe dintre
sarcinile curente în comunicarea în timp real sunt bazate pe modelul sistemului de
comunicaţie în timp real, de tip distribuit, iar mesajele de căutare garantate sunt ori
periodice, ori foarte rare. De asemenea, pentru aceste mesaje, caracteristicile sunt
specificate static.
Buffer de ieşire
Canal de
Programator
timp real
Nod de
trafic Canal de
timp real
Circuite de
Filtru
transmisie
Canal de
Pachete non-timp
ignorate real Legătură
de ieşire
Bufferul de ieşire este alcătuit din mai multe canale independente, care împart
aceeaşi legătură de ieşire. Fiecare dintre aceste canale stochează pachete corespunzătoare
unei diferite clase de trafic (de exemplu, trafic video, trafic vocal, trafic de date, etc.). Unele
din aceste canale sunt în timp real (de exemplu, cele pentru traficul video sau vocal) în timp
ce altele nu sunt în timp real (ele fiind rezervate pachetelor în non-timp-real, cu termenii
limită foarte mari, aproape infiniţi, de exemplu, unele transmisii de date). Distribuitorul,
care poate fi un microprocesor, arbitrează utilizarea circuitelor de transmisie şi a legăturii
de ieşire.
Întârzierile de timp între circuitul liniei de intrare şi nodul de ieşire sunt constante.
Întârzierea pachetului înregistrată în nodul de ieşire reprezintă intervalul de timp între
momentul când primul byte al pachetului intră în nodul de ieşire şi momentul când ultimul
său byte este transmis către legătura de ieşire.
Valoarea maximă permisă pentru întârzierea pachetului în nodul de ieşire reprezintă
termenul limită relativ al pachetului. Pachetele de timp real au termeni limită relativ finiţi.
Politica de distribuţie aplicată nodului de ieşire este ne-prioritară.
6
Pachetele în timp real sunt distribuite în acord cu algoritmul primului termen limită
care este atins mai întâi (engl. Earliest-Deadline-First Algorithm). Ori de câte ori o legătură
de ieşire este liberă, pachetul cu cel mai apropiat termen limită absolut este transmis
următorul, evitând supraaglomerarea magistralei de comunicaţie sau blocarea ei şi
întreruperea traficului. Când numărul total de pachete aflate pe canalele de timp real
depăşeşte cantitatea de prag a congestionării- aglomerării traficului Th, filtrul ignoră
pachetele opţionale înainte ca acestea să intre în bufferul de ieşire. Fiecare pachet din
bufferul de ieşire este transmis, în funcţie de termenul său limită. Astfel, imprecizia
transmiterii reprezintă singurul motiv de pierdere a pachetelor, fapt care permite depăşirea
acestui efect cu preţul pierderii calităţii serviciilor de comunicaţii în timp real.
Organigrama de funcţionare a sistemului este prezentată în figura 1.3.
mesaje de la
nodul de trafic
nu mesaje da
adecvate?
pachete
nu mesaje da
ignorate principale?
“mesaje opţionale” “mesaje principale”
prioritate scăzută prioritate mai înaltă
nu mesaje de da
timp real?
atribuie prioritate mai
nu explozie non- da înaltă şi trimite la
timp real canalele de timp real
nr. mesaje >q)?
atribuie prioritate mai înaltă
mesajelor non-timp real
legătură de ieşire -
mesaje transmise
7
1.3.3 Performanţele algoritmului de comunicaţii în timp real
N dm
Dr (1.1)
N
unde: Nd este numărul de pachete care au pierdut termenii lor limită şi N este numărul total
de pachete transmise. Adăugând numărul Ndm1 de un pachet care a pierdut termenul său
limită, cu Ndm2 de două pachete care au pierdut termenii limită corespunzători şi aşa mai
departe, rezultă Ndm. Pentru pachete cu lungimea de n-biţi, se poate scrie relaţia
n
N dm N
i 1
dmi (1.2)
N lk
Lr (1.3)
N
unde:
8
k
Nlk= N lki (1.4)
i 1
N
Ur (1.5)
Cr
unde capacitatea reţelei, Cr reprezintă numărul maxim de pachete care pot fi transmise fără
a produce blocarea traficului pe magistrala de comunicaţii.
Considerăm următorul exemplu. Presupunem că în traficul reţelei de comunicaţii se
trimit P1 pachete de mesaje video, P2 pachete de mesaje vocale şi P3 pachete de mesaje de
date. Pentru a studia rata de omitere a termenului limită, rata de pierdere a pachetelor în
trafic dau procentul de încărcare a reţelei de comunicaţii, vom presupune că: P1 = 100
pachete, P2 = 2000 pachete şi P3 = 40 pachete, unde rata medie a datelor este de 1.28 Mbps,
25.175 kbps şi respectiv 1 Mbps. O reţea de comunicaţii suportă în medie 5000 de astfel de
pachete. Cu aceste valori, rezultă:
9
5000 pachete) şi creşte odată ce ajung mai multe pachete pe canalele de comunicaţii. Dacă
numărul pachetelor transmise este prea mare, deci pragul de supraaglomerare tinde către
infinit, atunci utilizarea reţelei creşte către 100 %.
Dr Lr
1.0 0.5
0.9
0.8 0.4
0.7
0.6 0.3
0.5
0.4 0.2
0.3
0.2 0.1
0.1 N Nlk
0 d 0
500 1000 1500 2000 2500 500 1000 1500 2000
a b
Ur
100
%
80%
60%
40%
20%
N
0
500 1000 1500 2000
c
Fig. 1.4 a) rata de omitere a termenului limită, b) rata de pierdere,
c) utilizarea reţelei
1.3.4 Concluzii
11
CAPITOLUL 5
SDA
SCL
1-7 8 9 1-7 8 9 1-7 8 9
S P
Înainte de a începe trasferul propriu-zis, trebuie generată o condiţie START (S), după
care se transmite o adresă de slave. Această adresă are lungimea de 7 biţi şi este urmată un
al optulea bit (notat pe figură R / W ) care reprezintă bitul de direcţie:
- dacă R / W = “0”, va urma o transmisie de date (WRITE),
- dacă R / W = “1”, va urma o cerere de date de pe magistrală (READ).
Un transfer de date este întotdeauna încheiat de o condiţie STOP (P) generată
obligatoriu de dispozitivul master care a iniţiat transferul.
Totuşi, dacă un dispozitiv master doreşte încă să mai comunice pe magistrală (să
transmită sau să recepţioneze date), el poate genera o condiţie START repetat (Sr) şi adresa
unui alt slave, fără a genera o condiţie STOP.
Sunt posibile diferite combinaţii de formate citire/scriere pentru un transfer de date pe
magistrală, şi anume:
46
a) Transmiţătorul master transmite date către receptorul slave, situaţie prezentată în
figura 5.2. În acest caz, direcţia transferului de date nu se modifică.
data transferată
'0'(scriere) n bytes + confirmare
b) Receptorul master citeşte date de la dispozitivul slave imediat după primul byte de date
(figura 5.3).
data transferată
n bytes + confirmare
“1” citire
n bytes + n bytes +
citire sau scriere
confirmare* confirmare*
citire sau scriere
direcţia
transferului
* Sr = condiţie de START repetat
nu se împarte întrucât spoate modifica
direcţia de transfer a biţior în acest punct
de date şi confirmare
depinde de biţii R/W
În procedura de adresare pe 7 biţi pentru magistrala I 2C, primul byte de date care
urmează după condiţia START (S) determină dispozitivul slave care va fi selectat de
master. Excepţie face adresarea de tip "apel general" care poate chema toate dispozitivele.
Când se foloseşte această adresare, teoretic, toate dispozitivele ar trebui să răspundă
cu o confirmare. Totuşi, dispozitivele pot fi făcute să ignore această adresare. În acest caz,
al doilea byte din adresa de tip “apel general” defineşte acţiunea care trebuie efectuată
(citire de date sau scriere de date).
Primii şapte biţi ai primului byte de date formează adresa dispozitivului slave, aşa
cum se arată în figura 5.5. Al optulea bit reprezintă cel mai puţin semnificativ bit (LSB) şi
determină direcţia mesajului.
LSB = “0”, dispozitivul master va scrie date într-un dispozitiv slave selectat.
LSB = “1”, dispozitivul master va citi informaţii de la slave-ul adresat.
MSB LSB
R/ W
adresă slave
Ori de câte ori se transmite o adresă pe magistrala serială, fiecare dispozitiv din
sistem compară primii şapte biţi de după START cu propria sa adresă. Dacă aceştia sunt
identici, dispozitivul este adresat de master, ca un receptor-slave sau transmiţător-slave, în
funcţie de valoarea “1” respectiv “0” a bitului de direcţie R / W .
48
Adresa unui dispozitiv slave are o parte fixă şi o parte programabilă. Deoarece este
posibil să existe câteva dispozitive identice într-un sistem, partea programabilă a adresei
slave-ului fixează numărul maxim posibil de astfel de dispozitive, care pot fi conectate la
magistrala serială. Numărul biţilor din adresa programabilă depinde de numărul de pini
disponibili. De exemplu, dacă un dispozitiv are 4 biţi de adresă ficşi şi 3 biţi programabili,
înseamnă că la aceeaşi magistrală se pot conecta 8 dispozitive identice.
Alocarea adreselor I2C este coordonată de comitetul pentru magistrala I 2C. Sunt
precizate opt adrese (0000XXX şi 1111XXX), rezervate pentru scopurile din Tabelul 5.1.
Combinaţia 11110XX a adreselor slave a fost rezervată pentru modul de adresare pe 10 biţi,
care va fi explicat mai târziu.
Observaţii:
1. Nici un dispozitiv conectat la magistrală nu are permisiunea să confirme recepţia unui
byte START.
2. Adresa CBUS a fost rezervată pentru a permite interconectarea mixtă a dispozitivelor
compatibile CBUS şi cu magistrala I2C în acelaşi sistem. Dispozitivele compatibile cu
magistrala I2C nu au permisiunea să răspundă la recepţionarea acestei adrese.
3. Adresa rezervată pentru un format de magistrală diferit este inclusă pentru a permite
protocolului I2C să fie mixat cu alte protocoale. Numai dispozitivele compatibile cu
magistrala I2C care pot lucra cu astfel de formate şi protocoale au permisiunea de a
răspunde la această adresă.
Adresa “apel general” este folosită pentru adresarea tuturor dispozitivelor conectate
la magistrala serială I2C.
Dacă un dispozitiv nu are nevoie să primească date în structura de apel general,
poate ignora această adresă prin netransmiterea unei confirmări (1 bit de confirmare A).
Dacă un dispozitiv are nevoie să primească date la o adresă de apel general, atunci va
confirma această adresă devenind receptor-slave. Al doilea şi următorii bytes de date vor fi
confirmaţi de fiecare receptor-slave capabil să manipuleze datele. Un dispozitiv slave care
nu poate procesa unul ditre aceşti bytes trebuie să îl ignore prin neconfirmare (un bit Ā).
Semnificaţia adresei de apel general este precizată în al doilea byte (figura 5.6).
49
LSB
0 0 0 0 0 0 0 0 A X X X X X X X B A
Există două situaţii referitor la valoarea celui mai puţin semnificativ bit (LSB),
reprezentat de obicei printr-o singură literă B:
Cazul 1- LSB (bit B) = “0”. În această situaţie, al doilea byte are următoarea definiţie:
0000 0110 ('06' Hex). Resetul şi scrierea părţii programabile a adresei slave prin
hardware. La recepţionarea acestei secvenţe de 2 bytes, toate dispozitivele proiectate să
răspundă la adresa de apel general se resetează şi preiau partea programabilă a adresei lor.
Trebuie luate măsuri pentru a asigura că nici un dispozitiv nu trage jos liniile SDA sau SCL
după aplicarea tensiunii de alimentare, altfel aceste nivele LOW vor bloca magistrala.
0000 0100 ('04' Hex). Scrie partea programabilă a adresei slave prin hardware. Toate
dispozitivele care îşi definesc partea programabilă a adresei lor prin hardware (şi care
răspund la adresa apel general) vor 'bloca' această parte programabilă la recepţionarea
secvenţe de doi bytes. În acest caz, dispozitivul nu va fi resetat.
0000 0000 ('00' Hex). Acest cod nu are permisiunea de a fi folosit ca al doilea byte.
Secvenţe ale procedurii de programare sunt publicate în foile de catalog ale
dispozitivelor respective.
Codurile rămase nu sunt precizate şi dispozitivele trebuie să le ignore.
Cazul 2 – LSB (bit B) = “1”. În această situaţie, secvenţa de doi bytes este un “apel general
hardware”, adică secvenţa este transmisă de un dispozitiv master hardware, de exemplu un
scanner de tastatură, care nu poate fi programat să transmită o adresă slave dorită.
Deoarece un master hardware nu poate şti în avans la care dispozitiv slave trebuie
transferat mesajul, el poate doar trimite acest apel general hardware împreună cu propria sa
adresă - identificându-se astfel în sistem . Această situaţie este prezentată în figura 5.7.
(B) S
50
Cei şapte biţi rămaşi în al doilea byte conţin adresa dispozitivului master hardware.
Această adresă este recunoscută de un dispozitiv inteligent (de exemplu un microcontroler)
conectat la magistrală, care va direcţiona apoi informaţia de la dispozitivul hardware
master. Dacă dispozitivul master hardware poate acţiona de asemenea ca un slave atunci,
adresa slave este identică cu adresa master. În figura 5.8 se prezintă o situaţie altenativă.
scriere
Fig. 5.8 Transfer de date cu un transmiţător hardware capabil să încarce date direct
în dispozitive slave
(a) masterul de configurare trimite adresa de încărcare la masterul harware
(b) masterul hardware încarcă datele la circuitul slave selectat
SCL
1 2 7 8 9
ACK
Receptoarele CBUS pot fi conectate la magistrala I2C în modul standard însă, este
nevoie de o a treia linie, denumită DLEN iar bitul de confirmare (A) trebuie omis.
În mod normal, transmisiile pe magistrala I 2C sunt secvenţe de bytes (8 biţi);
dispozitivele compatibile CBUS au formate diferite. Într-o structură de magistrală mixtă,
dispozitivele de pe magistrala I2C nu trebuie să răspundă la mesajele CBUS.; de aceea, a
fost rezervată o adresă CBUS specială (0000 001X) la care nici un dispozitiv compatibil cu
magistrala I2C nu va răspunde. După transmiterea adresei CBUS, linia DLEN poate fi
activată şi se poate transmite un format de tip CBUS (figura 5.10). Urmează o condiţie
STOP, după care toate dispozitivele sunt din nou gata să accepte date.
SDA
SCL
S P
52
Transmiţătoarele-master pot trimite formate CBUS după trimiterea adresei CBUS.
De fiecare dată, transmisia se încheie cu o condiţie STOP, recunoscută de toate
dispozitivele.
Observaţie: În cazul în care configuraţia CBUS este cunoscută, iar expandarea cu
dispozitive compatibile CBUS nu este prevăzută, proiectantul poate adapta timpul de
menţinere la cerinţele specifice dispozitivelor folosite.
53
pentru aceste transferuri (pot prelungi perioadele LOW ale semnalului pentru a reduce
viteza de transfer). Dispozitivele care lucrează în modul rapid sunt compatibile inferior, cu
dispozitivele care lucrează in modul standard şi pot comunica cu acestea într-un sistem cu
magistrală I2C şi viteză de lucru între 0 şi 100 Kbit/s.
Deoarece dispozitivele de mod standard nu sunt compatibile superior, ele nu trebuie
încorporate într-un sistem cu magistrală I2C de mod rapid deoarece nu pot urmări ratele
înalte de transfer şi pot apărea stări nepredictibile.
Specificaţia mod rapid (Fast-mode) pentru magistrala I2C are următoarele
caracteristici suplimentare faţă de cele enumerate pentru modul standard:
- Viteza de bit este crescută de la 100 Kbit/s la 400 Kbit/s.
- Controlul în timp al datelor seriale (SDA) şi al clock-ului serial (SCL) a fost adaptat. Nu
este necesară nici o compatibilitate cu alte sisteme de magistrală cum ar fi CBUS, deoarece
acestea nu pot funcţiona la viteze de bit crescute.
- Intrările dispozitivelor de mod rapid includ suprimarea “şpiţurilor” de tensiune şi un
trigger Schmitt la intrările SDA şi SCL.
- Bufferele de ieşire ale dispozitivelor de mod rapid includ controlul pantei pe fronturile
căzătoare ale semnalelor SDA şi SCL.
- Dacă alimentarea unui dispozitiv de mod rapid este decuplată, pinii I/O pentru SDA şi
SCL trebuie să devină flotanţi pentru a nu obstrucţiona liniile magistralei.
- Dispozitivele externe Rp de tip pull-up, conectate la liniile magistralei, trebuie adaptate
la cel mai scurt timp de creştere maxim permis pentru modul rapid. Pentru sarcini
capacitive de până la 200 pF, dispozitivul pull-up pentru fiecare linie poate fi un rezistor
(Rp); pentru sarcini capacitive de 200 pF … 400 pF, dispozitivul pull-up poate fi o sursă de
curent (cu o valoare de maxim 3 mA) sau un circuit cu rezistor comutaţie.
54
VDD
RP RP
SDAH
SCLH
RS RS RS RS RS RS RS RS
(1) (1) (1) (1)
SDAH SCLH SDAH SCLH SDAH SCLH SDA SCL SDAH SCLH SDA SCL
(1) SDA şi SCL nu sunt folosite în acest caz, dar pot avea alte funcţii.
(2) La filtrul de intrare.
(3) Numai dispozitivul master activ îşi poate activa propriul circuit sursă de
curent pull-up.
(4) Tranzistoarele reprezentate cu linie întreruptă sunt ieşiri opţionale cu
drena în gol care pot extinde semnalul de clock serial SCLH.
(n bytes +
confirmare) modul Hs continuă
Sr ADR. SLAVE
Modul Hs începe doar după următoarele condiţii (în mod F/S - rapid/standard):
- condiţia START (S);
- codul master de 8 biţi (0000 1XXX);
- bitul de neconfirmare (Ā).
SDAH
SCLH 1 6 7 8 9
2 la 5
SDAH
SCLH 1 2 la 5 6 7 8 9 1 2 la 5 6 7 8 9
dacă e P, altfel
mod înaltă viteză (Hs) mod F/S
tH tFS
dacă e Sr,
= MCS sursă de curent pull-up (linie
întreruptă)
= Rp rezistor pull-up altfel mod Hs
Masterul activ transmite apoi o condiţie START repetat (Sr) urmată de o adresă
slave de 7 biţi (sau o adresă slave de 10 biţi) cu 1 bit de adresă şi recepţionează 1 bit de
confirmare (A) de la slave-ul selectat.
După o condiţie START repetat (Sr) şi după fiecare bit de confirmare (A) sau bit de
neconfirmare ( A ), masterul activ dezactivează circuitul sursă de curent pull-up, permiţând
celorlalte dispozitive de pe magistrală să întârzie transferul serial prin extinderea perioadei
LOW a semnalului SCLH.
Masterul activ reactivează din nou circuitul sursă de curent pull-up atunci când,
toate dispozitivele au eliberat linia şi semnalul SCLH atinge nivelul HIGH, accelerând
ultima parte a timpului de creştere a semnalului SCLH.
Transferul de date continuă după următorul START repetat (Sr) şi comută înapoi în
modul F/S (rapid/standard) numai după o condiţie STOP (P).
Pentru a reduce timpul consumat de codul master, un dispozitiv master poate lega un
număr de transferuri în mod Hs separate prin condiţii de START repetat (Sr).
57
5.2.4 Comutarea din modul F/S în modul Hs şi înapoi
58
VDD
RP RP
SDA
SCL
RS RS RS RS RS RS RS RS RS RS
(1) (1)
SDAH SCLH SDAH SCLH SDAH SCLH SDA SCL SDA SCL SDA SCL
VDD1 VDD2
RP RP PUNTE RP RP
RS
SDAH TR1
SDAH SDA
RS
SCLH SCLH TR2 SCL
RS RS RS RS RS RS RS RS RS RS
TR3
(1) (1)
VSS
SDAH SCLH SDAH SCLH SDAH SCLH SDA SCL SDA SCL SDA SCL
(2) (2) (2) (2) (2) (2) (2) (2) (2) (2) (2)
(2)
MCS MCS
(3) (3) (4)
VDD VDD
60
În figura 5.16 sunt prezentate diagramele corespunzătoare transferului de date în
sistemul cu viteze mixate din figura 5.15.
t1
cod master de 8 biţi 0000 1xxx Ā tH
S
SDAH
SCLH
1 2 la 5 6 7 8 9
SDA
SCL
1 2 la 5 6 7 8 9
mod F/S
SCLH 6 7 8 9 1
1 6 7 8 9
P
2 la 5 2 la 5
t2
SDA
= Rp rezistor pull-up
Arbitrarea şi sincronizarea au loc pe durata transferului total în mod F/S între toate
dispozitivele conectate. Pentru transferul de date în mod Hs, puntea se deschide şi separă
cele două secţiuni ale magistralei, permiţând dispozitivelor de mod Hs să comunice între
ele, la viteza maximă de 3.4 Mbit/s.
Arbitrarea între dispozitivele de mod Hs şi de mod F/S se face doar pe durata
codului master (0000 1XXX) şi este câştigată de un dispozitiv master de mod Hs, deoarece
nici o adresă slave nu are patru zerouri semnificative. Alte dispozitive master pot câştiga
arbitrarea numai dacă transmit un cod rezervat de 8 biţi (0000 0XXX). În aceste situaţii,
puntea rămâne închisă şi transferul se face în mod F/S.
Tranzistoarele TR1, TR2 şi TR3 sunt cu canal N. Tranzistoarele TR1 şi TR2 au
funcţie de poartă de transfer, iar TR3 este un etaj cu drenă în gol de tip pull-down. Dacă
61
tranzistoarele TR1 şi TR2 comută în starea ON ele transferă un nivel LOW în ambele
direcţii, în caz contrar atunci când atât drena cât şi sursa urcă la nivelul HIGH va fi o stare
de înaltă impedanţă între drenă şi sursă pentru fiecare tranzistor conectat. În acest ultim caz,
tranzistoarele vor acţiona ca nişte translatoare de nivel deoaece SDAH şi SCLH vor fi la
potenţial VDD1, iar liniile SDA şi SCL vor fi la potenţial VDD2.
Figura 5.16 prezintă diagrama de impulsuri a unui transfer complet de mod Hs,
invocat de o condiţie START, un cod master şi un bit de neconfirmare (A - la modul F/S).
Deşi această diagramă este despărţită în două, ea trebuie văzută ca o diagramă unică, în care
momentul de timp t H este un punct comun pentru ambele părţi. Codul master este
recunoscut de punte în dispozitivul master activ sau inactiv (figura 5.15). Puntea trebuie să
efectueze următoarele acţiuni:
- între momentele de timp t1 şi tH (figura 5.15), tranzistorul TR1 se deschide şi separă
liniile SDAH şi SDA, după ce tranzistorul TR3 se închide pentru a trage linia SDA la VSS;
- când SCLH şi SCL devin HIGH (tH în figura 5.16), tranzistorul TR2 se deschide şi
separă liniile SCLH şi SCL. TR2 trebuie să se deschidă înainte ca SCLH să treacă la nivel
LOW, după condiţia START repetat (Sr).
Transferul în mod Hs începe după momentul de timp tH cu o condiţie de START
repetat (Sr). Pe toată durata transferului, linia SCL rămâne la nivel HIGH şi linia SDA la
nivel LOW. Magistrala serială unică este pregătită pentru transferul unei condiţii STOP (P).
După fiecare bit de confirmare (A) sau de neconfirmare (Ā), dispozitivul master
activ dezactivează circuitul sursei sale de curent pull-up, permiţând celorlalte dispozitive să
întârzie transferul serial prin extinderea perioadei LOW a semnalului SCLH. Dispozitivul
master activ îşi reactivează propria sursă de curent pull-up atunci când toate dispozitivele
sunt decuplate şi semnalul SCLH atinge un nivel HIGH, depăşind astfel ultima parte a
timpului de creştere a semnalului SCLH.
În situaţii neregulamentare, dispozitivele de mod F/S pot închide puntea (TR1 şi
TR2 sunt închise, iar TR3 este deschis) la orice moment prin tragerea jos a liniei SCL
pentru cel puţin 1 μs, de exemplu pentru a reveni dintr-o magistrală agăţată sus.
Modul Hs se încheie cu o condiţie STOP (P) care aduce sistemul cu magistrală
serială unică înapoi în modul F/S. Dispozitivul master activ îşi dezactivează sursa sa de
curent MCS atunci când se detectează condiţia STOP (P) pe SDAH (momentul de timp t FS
în figura 5.16).
62
Puntea recunoaşte această condiţie STOP şi iniţiază următoarele acţiuni:
- Tranzistorul TR2 se închide după momentul de timp t FS pentru a conecta liniile SCLH şi
SCL, ambele fiind la nivel HIGH în acel moment.
- Tranzistorul TR3 se deschide după momentul tFS, ceea ce decuplează linia SDA şi
permite acesteia să treacă la nivel HIGH de către rezistorul Rp. Aceasta este o condiţie
STOP pentru dispozitivele de mod F/S. Tranzistorul TR3 trebuie să se deschidă suficient de
repede pentru a asigura timpul liber al magistralei între condiţia STOP şi cea mai apropiată
condiţie START, în conformitate cu specificaţia modului rapid (F).
- Când linia SDA atinge un nivel HIGH (momentul de timp t 2 în figura 5.16) tranzistorul
TR1 se închide pentru a conecta linia SDAH cu SDA.
Observaţii:
1) În sistemul cu viteze mixate şi magistrală serială unică, interconectările sunt făcute
atunci când toate liniile sunt la nivel HIGH, ceea ce previne şpiţurile de tensiune de pe
liniile magistralei.
2) Tranzistoarele TR1 şi TR2 trebuie să se închidă în timpul minim de eliberare al
magistralei în conformitate cu specificaţiile modului rapid (F).
63
Dacă bitul R / W este “0”, înseamnă că dispozitivul master va scrie informaţia într-
un dispozitiv slave selectat. Cel de-al doilea byte conţine cei 8 biţi rămaşi (XXXX XXXX)
ai adresei de 10 biţi.
Dacă bitul R / W este “1”, înseamnă că dispozitivul master va citi informaţia de la
dispozitivul slave pe care l-a adresat.
Următorul byte conţine data transmisă de la un slave la un master.
Când are loc un transfer de date cu adresare pe 10 biţi, sunt posibile diferite formate
de citire/scriere:
1 1 1 1 0 X X 0
ADRESĂ SLAVE R/W ADRESĂ SLAVE
S A1 A2 DATE A DATE A/Ā P
PRIMII 7 BIŢI AL 2-LEA BYTE
(scriere)
Dacă o adresă de 10 biţi urmează unei condiţii START, fiecare dispozitiv slave va
compara primii şapte biţi ai primului byte din adresa slave (1111 0XX) cu propria sa adresă
şi va testa dacă cel de-al optulea bit (bitul de direcţie) este 0.
Este posibil ca mai mult de un dispozitiv să găsească coincidenţă şi să genereze o
confirmare (A1). Toate dispozitivele slave care găsesc această coincidenţă vor compara cei
opt biţi de adresă ai celui de-al doilea byte al adresei slave (XXXX XXXX) cu propriile lor
adrese, dar numai un singur slave va găsi coincidenţă şi va genera o confirmare (A2).
Dispozitivul slave a cărui adresă coincide cu aceea trimisă de master va rămâne
adresat de master până când masterul recepţionează o condiţie STOP (P) sau o condiţie de
START repetat (Sr) urmată de o adresă slave diferită.
S ADRESĂ SLAVE R/W A1 ADRESĂ SLAVE A2 Sr ADRESĂ SLAVE R/W A3 DATE A DATE Ā P
PRIMII 7 BIŢI AL 2-LEA BYTE PRIMII 7 BIŢI
(scriere) (citire)
64
Până la bitul de confirmare A2 inclusiv, procedura este aceeaşi cu aceea descrisă
pentru un transmiţător-master adresând un receptor-slave. După o condiţie de START
repetat (Sr), dispozitivul slave a cărui adresă coincide cu adresa trimisă de dispozitivul
master îşi aminteşte că el a fost adresat înainte. Acest dispozitiv slave verifică apoi dacă
primii şapte biţi din primul byte al adresei slave care urmează după Sr sunt aceiaşi cu cei de
după condiţia START (S) şi verifică, de asemenea, dacă cel de-al optulea bit ( R / W ) este 1.
Dacă există o coincidenţă, dispozitivul slave consideră că el a fost adresat ca transmiţător şi
generază o confirmare A3.
Transmiţătorul-slave rămâne adresat până când primeşte o condiţie STOP (P) sau o
condiţie START repetat (Sr) urmată de o adresă slave diferită. După o condiţie START
repetat (Sr), toate celelalte dispozitive slave vor compara primii şapte biţi ai primului byte
din adresa slave (1111 0XX) cu propria lor adresă şi vor testa cel de-al optulea bit ( R / W ).
Totuşi, nici unul dintre ele nu va fi adresat deoarece R / W = 1 (pentru dispozitive pe 10
biţi) sau adresa slave 1111 0XX (pentru dispozitive pe 7 biţi) nu coincide.
c) Format combinat: un master transmite date unui slave şi apoi citeşte date de la
acelaşi slave (figura 5.19). Acelaşi master ocupă magistrala tot timpul. Direcţia transferului
se schimbă după cel de-al doilea bit R / W
1 1 1 1 0 X X 0
(scriere)
1 1 1 1 0 X X 1
(citire)
Fig. 5.19 Master adresează un slave cu o adresă de 10 biţi, apoi transmite date
către acest slave şi citeşte date de la el
d) Format combinat: un master transmite date unui dispozitiv slave şi apoi transmite
date unui alt dispozitiv slave (figura 5.20). Acelaşi master ocupă magistrala tot timpul.
1 1 1 1 0 X X 0
ADRESĂ SLAVE
S ADRESĂ SLAVE R/W A A DATE A/Ā
PRIMII 7 BIŢI AL 2-LEA BYTE A DATE
(scriere)
1 1 1 1 0 X X 0
(citire)
Fig. 5.20 Master transmite date la două dispozitive slave, ambele cu adrese de 10 biţi
65
e) Format combinat: adresare combinată pe 10 biţi şi pe 7 biţi într-un transfer serial
(figura 5.21).
După fiecare condiţie START (S), sau START repetat (Sr), se poate transmite pe
magistrală o adresă slave de 10 biţi sau de 7 biţi. Masterul transmite date unui slave cu
adresă de 7 biţi şi apoi transmite date unui al doilea slave cu adresă de 10 biţi. Acelaşi
master ocupă magistrala tot timpul.
0
7 BIŢI
S R/W A DATE A DATE A/Ā
ADRESĂ SLAVE
(scriere)
1 1 1 1 0 X X 0
(scriere)
Fig. 5.21 Master care transmite date la două dispozitive slave, unul
cu adresă de 7 biţi şi unul cu adresă de 10 biţi
Observaţii:
1) Formatele combinate pot fi folosite, de exemplu, pentru a controla o memorie serială.
Pe timpul primului byte de date, trebuie scrisă locaţia internă de memorie. După condiţia
START şi repetarea adresei slave, data se poate transfera.
2) Toate deciziile privind auto-incrementarea sau decrementarea locaţiilor de memorie
accesate anterior etc. sunt luate de către proiectantul de dispozitiv.
3) Fiecare byte este urmat de un bit de confirmare (A) sau de blocurile din secvenţă.
4) Dispozitivele compatibile cu magistala I2C trebuie să-şi reseteze logica lor de
magistrală la recepţionarea unei condiţii START (S) sau START repetat (Sr), astfel încât
toate să poată anticipa trimiterea unei adrese slave.
În procedura de adresare pe 10 biţi pentru magistrala serială I 2C, primii doi bytes
după condiţia START (S) determină în mod uzual care dispozitiv slave va fi selectat de
către dispozitivul master, pentru efectuarea transferului de date (citire sau scriere de date).
Excepţia este adresa de tip "apel general" care are forma 0000 0000 (Hex '00').
Dispozitivele slave cu adresare pe 10 biţi vor reacţiona la o adresă de tip "apel
general" în acelaşi mod ca şi dispozitivele slave cu adresare pe 7 biţi.
Dispozitivele master hardware pot transmite adresa lor de 10 biţi după un "apel
general". În acest caz, bytul de adresă este urmat de doi bytes succesivi care conţin adresa
de 10 biţi ai dispozitivului transmiţător-master. În formatul de date, primul byte DATA
conţine cei opt biţi cei mai puţin semnificativi ai adresei master.
Bytul START pentru adresarea pe 10 biţi are forma 0000 0001 (Hex '01') şi poate
precede adresarea de 10 biţi în acelaşi mod ca pentru adresarea pe 7 biţi.
66
5.3 Caracteristicile dispozitivelor pe magistrala I2C
67
Tabel 5.3
Parametri simbol Mod S mod F
min. max. min. max.
Nivel LOW tensiune de intrare:
Nivele de intrare fixate VIL -0.5V 1.5V - -
VDD–nivele de intrare relative -0.5V 0.3VDD -0.5V 0.3VDD
Nivel HIGH tensiune de intrare:
Nivele de intrare fixate VIH 3V - - -
VDD–nivele de intrare relative 0.7VDD - 0.7VDD -
Histerezis intrări trigger Schmidt
VDD > 2 V thys - 0.05VDD -
VDD < 2 V 0.1VDD -
Nivel LOW tensiune ieşire (drenă deschisă
sau colector deschis) la un curent de 3 mA
VDD > 2 V VOL1 0V 0.4V 0V 0.4V
VDD < 2 V VOL3 - - 0V 0.2VDD
Timp tranziţie la ieşire de la VIHmin la VILmax tOf - (20+0.1Cb)ns
pt cap. magistralei de la 10 pF la 400 pF 250ns … 250ns
Durată impuls şpiţuri suprimate de filtrul de
intrare tSP - - 0 50ns
Curent de intrare la fiecare pin I/O pentru o
tensiune de intrare de 0.1VDD …0.9VDD Ii -10A 10A -10A 10A
Capacitatea fiecărui pin I/O Ci - 10pF - 10pF
În figura 5.21 sunt reprezentaţi timpii caracteristici magistralei seriale I 2C, atunci
când aceasta deserveşte dispozitive de mod F/S.
SDA
SCL
În Tabelul 5.4 sunt precizate caracteristicile de timp ale magistralei seriale I 2C,
capacitatea liniilor acesteia şi nivelele maxime de zgomot admise.
68
Tabel 5.4
Parametri simbol mod S mod F
min. max. min. max.
Frecvenţă clock serial SCL fSCL 0 0 400kHz
100kHz
Timp menţinere START repetat, după care
este generat primul impuls de clock tHD,STA 4s - 0.6s -
Perioada LOW pentru SCL tLOW 4.7s - 1.3s -
Perioada HIGH pentru SCL tHIGH 4s - 0.6s -
Timp setare condiţia START repetat tOSU,ST 4.7s - 0.6s -
Timp de menţinere date:
Pentru mastere compatibile CBUS tHD,DAT 5s - - -
Pentru dispozitive cu magistrală I C
2
0 3.45s 0 0.9s
Timp de setare date tSU,DAT 250ns - 100ns -
Timp de creştere pentru SDA, SCL tr - (20+0.1Cb) …
1000ns 300ns
Timp de cădere pentru SDA, SCL tf - 300ns (20+0.1Cb) …
300ns
Timp setare pentru condiţia STOP tSU,STO 4s - 0.6s -
Timpul cât magistrala e liberă între STOP
şi START tBUF 4.7s - 1.3s -
Capacitate încărcare pentru fiecare linie a Cb - 400pF - 400pF
magistralei
Zgomot nivel LOW fiecare dispozitiv VnL 0.1VDD - 0.1VDD -
conectat (incluzând histerezis)
Zgomot nivel HIGH fiecare dispozitiv VnH 0.2VDD - 0.2VDD -
(incluzând histerezis)
Perioadele minime HIGH şi LOW pentru linia SCL determină viteze maxime pentru
transferul de bit de 100 Kbit/s pentru dispozitivele de mod standard (S) şi 400 kbit/s pentru
dispozitivele de mod rapid (F), care trebuie să urmărească transferurile la vitezele lor
maxime de bit, sau să transmită / recepţioneze la acea viteză.
69
Tabel 5.5
Parametri simbol Mod Hs
min. max.
Nivel LOW al tensiunii de intrare VIL -0.5V 0.3VDD
Nivel HIGH al tensiunii de intrare VIH 0.7VDD VDD+0.5V
Histerezisul intrărilor în triggerul Schmidt Vhys 0.1VDD -
Nivel LOW tensiune ieşire (drenă deschisă) la 3 mA
pe SDAH, SDA şi SCLH pentru:
VDD > 2 V 0VOL 0.4V
VDD < 2 V 0 0.2VDD
RON a porţii de transfer, pt. ambele direcţii de curent
la nivel VOL între SDA şi SDAH sau SCL şi SCLH la RonL - 50
3 mA
RON poartă de transfer, pt. ambele direcţii de curent,
nivel VDD între SDA şi SDAH sau SCL şi SCLH la 3 RonH 50k -
mA
Curent pull-up nivele de ieşire SCLH, între 0.3VDD şi ICS 3mA 12mA
0.7VDD
Timp de creştere la ieşire (sursă de curent activă) şi
timp de cădere la SCLH pt. cap. de 10…100 pF trCL, tfCL 10ns 40ns
Timp de creştere la ieşire (sursă de curent activă) şi
timp de cădere la SCLH cu sursă externă de curent
pull-up = 3 mA pentru o sarcina capacitivă de 400 pF trCL, tfCL 20ns 80ns
Timp de cădere la ieşire la SDAH pentru o sarcină
capacitivă de 10…100 pF tfDA 10ns 80ns
Timp de cădere la ieşire la SDAH pentru o sarcină
capacitivă de 400 pF tfDA 20ns 160ns
Durata impuls de cădere la SDAH şi SCLH (trebuie
suprimată de filtrele de a intrare) tfSP 0 10ns
Curent de intrare la fiecare pin I/O pentru o tensiune
de intrare între 0.1VDD şi 0.9VDD Ii - 10A
Capacitatea admisă pentru fiecare pin I/O Ci - 10pF
Pentru sarcini capacitive ale magistralei cuprinse între 100 pF şi 400 pF, valorile
timpilor de creştere şi cădere trebuie să fie interpolate liniar.
Definirea timpilor caracteristici pentru dispozitivele de mod Hs conectate la
magistrala serială I2C rezultă şi din figura 5.23.
Condiţia de START normal (S) nu există în modul Hs. Parametrii de timp pentru
biţii de adresă, bitul R / W , bitul de confirmare A şi biţii de date sunt aceeaşi cu parametrii
de timp care au fost definiţi în paragraful anterior, pentru dispozitivele de mod F/S. Doar
panta de creştere a primului impuls de clock SCLH, care urmează după un bit de confirmare
A are o valoare mai mare. Aceasta se datorează rezistorului extern Rp, care trebuie să tragă
linia SCLH fără ajutorul sursei interne de curent.
Parametrii de timp ai liniilor de magistrală SDA şi SCL în modul Hs sunt specificaţi
în Tabelul 3.6. Perioadele minime HIGH şi LOW, precum şi timpii maximi de creştere şi de
cădere ai clock-ului serial SCLH determină cea mai mare viteză de bit.
70
Sr Sr P
tfDA trDA
SDAH
tHD;DAT tSU;STO
tSU;STA
tHD;STA tSU;DAT
SCLH
tfCL
(1) trCL1
trCL1 trCL (1)
Fig. 5.23 Definirea timpilor pentru dispozitivele de mod Hs conectate la magistrala I2C
Cu un clock SCLH generat intern, care are perioadele de nivel LOW şi HIGH de
200 ns şi respectiv 100 ns, un dispozitiv master de mod Hs poate satisface cererile de timp
ale impulsurilor de clock extern SCLH (luând în considerare şi timpii de creştere şi cădere),
pentru o viteză maximă de bit de 3.4 Mbit/s. Astfel dispozitivul master de mod Hs poate
folosi o frecvenţă de bază de 10 MHz, sau un multiplu de 10 MHz, pentru a genera
semnalul de clock SCLH. Pentru perioadele maxime HIGH şi LOW ale clock-ului serial
SCLH nu există limite fixate atunci când se lucrează cu cea mai scăzută viteză de bit.
Parametrii de timp sunt independenţi pentru sarcini capacitive de până la 100 pF,
pentru fiecare linie a magistralei seriale care lucrează la viteza de bit maximă posibilă, de
3.4 Mbit/s.
Pentru sarcini capacitive mai mari pe liniile magistralei, viteza de bit va descreşte
treptat. De exemplu, parametrii de timp pentru sarcini capacitive de 400 pF, permit o viteză
de bit de cel mult de 1.7 Mbit/s, adică aproximativ jumătate din viteza maximă de 3.4
Mbit/s la care pot lucra dispozitivele de mod Hs conectate la magistrala serială I2C.
Pentru încărcări ale magistralei cu sarcini capacitive între 100 pF şi 400 pF,
parametrii de timp trebuie interpolaţi liniar.
Timpii de creştere şi scădere depind de timpul maxim de propagare a liniilor de
transmisie SDAH şi SCLH.
71
Tabel 5.6
Parametri simbol Cb = 100pF max. Cb = 400pF
min. max. min. max.
Frecvenţă clock SCLH fSCLH 0 3.4MHz 0 1.7MHz
Timp de setare START repetat tSU,STA 160ns - 160ns -
Timp de menţinere START repetat tHD,STA 160ns - 160ns -
Perioadă LOW a clock-ului SCLH tLOW 160ns - 320ns -
Perioadă HIGH a clock-ului SCLH tHIGH 60ns - 120ns -
Timp de setare date tSU,DAT 10ns - 10ns -
Timp de menţinere date tHD,DAT 0 70ns 0 150ns
Timp de creştere semnal SCLH trCL 10ns 40ns 20ns 80ns
Timp de creştere semnal SCLH după
Sr şi după bitul A trCL1 10ns 80ns 20ns 160ns
Timp de cădere SCLH tfSC 10ns 40ns 20ns 80ns
Timp de creştere SDAH trDA 10ns 80ns 20ns 160ns
Timp de cădere SDAH tFDA 10ns 80ns 20ns 160ns
Timp de setare condiţie STOP tSU,STO 160ns - 160ns -
Sarcina maximă pentru fiecare linie
SDAH, SCLH Cb(2) - 100pF - 400pF
Sarcină maximă pentru fiecare
SDAH+SDA si SCLH+SCL Cb - 400pF - 400pF
Zgomot LOW pt fiecare dispozitiv
conectat (incluzând histerezisul) VNl 0.1VDD - 0.1VDD -
Zgomot HIGH pt fiecare dispozitiv
conectat (incluzând histerezisul) VnH 0.2VDD - 0.2VDD -
72
CAPITOLUL 6
SDA
SCL
Dispozitivele cu nivele fixe ale tensiunii de alimentare, între 1.5 V şi 3 V, pot avea
fiecare propria tensiune de alimentare. În acest caz, rezistoarele pull-up (Rp) trebuie să fie
conectate la o tensiune de 5 V ± 10%.
b) În figura 6.2, la magistrala serială sunt conectate dispozitive cu nivele ale tensiunii de
intrare referite la tensiunea VDD. Aceste dispozitive necesită o linie de alimentare comună,
la care este conectat un rezistor pull-up (Rp).
VDD = 3 V
SDA
SCL
73
c) Dacă dispozitivele cu nivele fixe ale tensiunii de intrare sunt amestecate pe magistrală
cu dispozitive care au nivelele de intrare referite la VDD , acestea din urmă trebuie conectate
la o linie de alimentare comună, de 5 V ± 10% şi, de asemenea, trebuie să aibă obligatoriu
rezistoare pull-up conectate la pinii lor SDA şi SCL, aşa cum este arătat în figura 6.3.
VDD3 depinde de dispozitiv (ex. 12 V)
VDD1 = dependente de dispozitiv (de ex: 12 )
VDD–1 = 5 V 10%
5 V 10% DD–2
VDD2 –3
VVDDDD3
V
SDA
SCL
SCL
Noile dispozitive de mod rapid sau înaltă frecvenţă trebuie să aibă nivele de intrare
raportate la tensiunea de alimentare, după cum s-a precizat şi în tabelele 6.1 şi 6.3. Nivelele
de intrare sunt definite în aşa fel încât:
- limita admisă de zgomot pe nivelul LOW este 0.1VDD;
- limita admisă de zgomot pe nivelul HIGH este 0.2VDD;
Rezistorii serie (Rs) cu valoarea (de exemplu) de 300 Ω pot fi folosiţi împotriva
şpiţurilor de înaltă tensiune care apar pe liniile SDA şi SCL (provenite, de exemplu, de la o
descărcare -conturnare - de la un tub cinescop TV).
VDD VDD
DISP. DISP.
I2C I2C
RP RP
RS RS RS RS
SDA
SCL
Fig. 6.4 Rezistoare serie (Rs) pentru protecţia împotriva şpiţurilor de înaltă
tensiune
74
Vom prezenta în cele ce urmează rolul fiecăruia dintre parametrii enumeraţi.
Tensiunea de alimentare limitează valoarea minimă a rezistorului Rp datorită
curentului derivat minim de 3 mA, la o valoare V0Lmax = 0.4 V pentru etajele de ieşire.
Dependenţa valorii rezistorului Rp în funcţie de tensiunea de alimentare VDD este
reprezentată grafic în figura 6.5. Valoarea rezistorului de protecţie creşte liniar odată cu
creşterea tensiunii. În figură s-au considerat două situaţii: Rs = 0 şi Rs = maxim. Rezistorul
Rp trebuie ales de valori mai mari în cazul în care nu există rezistor serie (Rs = 0).
Figura 6.6 prezintă modul de alegere a valorii rezistorului de protecţie Rp în funcţie
de rezistorul serie Rs în cazul în care la magistrala serială I2C sunt conectate dispozitive care
au valori diferite ale tensiunii de alimentare (de exemplu: 2.5 V, 5 V, 10 V şi 15 V).
Şi în acest caz, rezistorul Rp variază liniar. Pentru dispozitivele conectate la
magistrala serială, care sunt alimentate la tensiuni mai mici (de exemplu VDD = 2.5 V),
rezistorul Rp trebuie ales de valoare mai mare chiar pentru Rs < 400 . Atunci când
dispozitivul necesită o tensiune de alimentare mai mare, rezistorul Rp trebuie ales de o
valoare mai mică la acelaşi Rs şi creşte odată cu creşterea lui Rs . De exemplu, pentru Rs =
400 , se alege Rp = 2,3 k la o tensiune VDD = 5 V.
6 10
Rp Rp
[k] [k] VDD = 2.5V 5V
5
8
RS = 0
4
6
15 V
3
4
max. RS 10 V
2
2
1
0 0
0 4 8 12 16 0 400 800 1200 1600
VDD [V] Rs []
75
20 20
Rp max
Rp [k]
Rp max
[k] [k]
16 16
12 12
RS = 0 VDD = 15 V
8 8
10 V
4 RS max 4
@ VDD=5V 5V
0 0
2. . 5 V
0 100 200 300 400 0 40 80 120 160 200
capacitate magistrală Cb [pF] curent total pe nivel high [A]
Fig. 6.7 Valoarea maximă Rp în funcţie de Fig. 6.8 Curentul total de intrare pe nivel
capacitatea magistralei HIGH în funcţie de Rp şi tensiunea de
I2C standard alimentare
76
VDD
circ. de intrare
SDA sau
SCL
VSS
77
nY VDD
1/44 HCT 4066 5 V 10%
nE VCC
P N
nZ
GND 1.7 kΩ RP1
1.3 kΩ RP2 SDA sau
SCL
100Ω RS 100Ω RS
I/O I/O Cb
400 pF
max.
N N
VSS
Dispozitive I2C de mod F
Fig. 43
Fig. 6.11 pull-up dede
Circuit pull-up
Circuit comutaţie
comutaţie
SDA
VDD
VSS
SCL
b) Dacă liniile de magistrală includ doar linia VSS, atunci modelul conexiunilor este:
SDA
VSS
SCL
78
În al doilea caz, toate cele trei linii se aleg de aceeaşi grosime, pentru a obţine
sarcini capacitive identice pentru liniile de magistrală SDA şi SCL. Liniile VSS şi VDD pot fi
omise dacă se foloseşte cablaj imprimat pentru VSS şi/sau VDD.
c) Dacă liniile de magistrală sunt de tip “pereche răsucită”, atunci fiecare linie trebuie să
fie răsucită cu VSS. Alternativ, linia SCL poate fi răsucită cu VSS, şi linia SDA răsucită cu
VDD. În cel de-al doilea caz, se impune folosirea unor condensatoare pentru a decupla linia
VDD de la linia VSS şi pentru a decupla ambele capete de sfârşit ale perechilor răsucite.
d) Pentru a reduce şi mai mult interferenţele pe linii, se încapsulează liniile de magistrală
(carcasa fiind conectată la VSS). Chiar şi în acest caz, cablul ecranat trebuie să fie prevăzut
cu condensatoare de valoare redusă de cuplaj între liniile SDA şi SCL.
7.5
Rp max
[k]
6.0
4.5
RS = 0
3.0
RS max
1.5
@ VDD=5V
0
0 100 200 300 400
capacitate magistrală Cb [pF]
80
VDD = 3.3 V VDD = 5 V
RP TR1 RP RP
RP g
SDA1 s d SDA2
g
TR2
SCL1 SCL2
s d
Dispozitivele din fiecare secţiune au pini I/O cu nivele logice de intrare referite la
tensiunea de alimentare şi o configuraţie de ieşire de tip open drain.
Comutatorul de nivel pentru fiecare linie a magistralei este identic şi conţine unul
din tranzistorii MOS – FET cu canal N; TR1 este pentru linia serială de date SDA şi TR2 este
pentru linia seriala de clock SCL. Porţile (g) trebuie să fie conectate la cea mai scăzută
tensiune de alimentare VDD1, sursele (s) trebuie conectate la liniile magistralei din secţiunea
de tensiune scăzută şi drenele (d) trebuie conectate la liniile de magistrală din secţiunea de
tensiune ridicată. Multe tranzistoare de tip MOS-FET au substratul conectat intern cu
propria sursă; în caz că aceasta nu există, se poate realiza o conexiune externă. De
asemenea, fiecare MOS-FET are o diodă integrată (o joncţiune n - p) între drenă şi substrat.
k, f pagewidth
82
CAPITOLUL 7
Tabelul 7.1
PWM VPWM 10-Bit bit-stuf L-MAN E- MFM
NRZ NRZ MAN
variabilă nu da Nu da nu nu Nu
sincroniz. da da Nu nu da nu Da
arbitrare da da Da da da da Da
tranziţii/bit 2 1 1.25 1.015 2 1.25 1
viteza max 7.1 K 11.2 K 13.5 K 16.6 K 8.4 K 13.5 K 16.8 K
toleranţă osc. ±29.2% ±29.2% ±5.1% ±9.7% ±29.2% ±9.7% ±10.7%
integritate date perfect bună satisf. satisf. perfectă satisf. superb
83
impulsurilor în durată (VPWM) şi NRZ cu biţi de umplutură (Bit-Stuf NRZ) au amândouă
viteză de repetiţie pe byte variabilă (variabilitatea datelor).
Sincronizarea - este asigurată de modulaţia impulsurilor în durată (PWM),
modulaţia variabilă a impulsurilor în durată (VPWM), L-MAN, şi modulaţia cu frecvenţă
modificată (MFM). De exemplu, PWM are două tranziţii pe bit cu 1/3 timp de bit între
transmisii. Tehnica NRZ are un maxim de o tranziţie pe bit, dar este mărită pentru a asigura
sincronizarea. Câteva tehnici de codificare pentru comanda discurilor, cum ar fi modulaţia
cu frecvenţă modificată (MFM) sunt sincrone cu puţin peste o tranziţie pe bit.
Unele tehnici de codificare a biţilor sincronizează pe tranziţii care încep sau se
încheie în interiorul graniţelor bitului. De exemplu, NRZ de 10 biţi, Bit-Stuf NRZ şi E-
MAN folosesc tranziţii adăugate pentru realizarea sincronizării (sincronizarea clock-ului).
Arbitrarea - toate tehnicile de codificare din pot realiza arbitrarea bit cu bit.
Excepţie face codificarea în frecvenţă modificată (MFM). Arbitrarea bit cu bit este calculată
prin numărul de tranziţii de bit al datelor.
Viteza maximă de transmisie a datelor -. pentru a face o comparaţie între tehnicile
de codificare, s-au folosit aceleaşi viteze nominale de bit sau viteza medie de bit, cum ar fi
în cazul codificării VPWM. Mica descreştere a vitezei datelor pentru 10-Bit NRZ, Bit-Stuf
NRZ şi E-MAN este în mod normal neglijabilă, fiind folosită viteza Baud.
O cerinţă importantă în alegerea unei tehnici convenabile pentru codificarea datelor
în vederea transmiterii, este ca aceasta să nu genereze nivele excesive ale radiaţiilor
electromagnetice.
În mod uzual, standardul CISPR este considerat adecvat (CISPR/D/WG2 - Radiated
Emission Antenna & Probe Test Document a fost în general interpretat de majoritatea
inginerilor de RF pentru a specifica un punct de frângere la 500 kHz de -60 dBV). Acest
factor determină viteza maximă permisă a datelor codificate, cu scopul de a menţine un
nivel al interferenţei electromagnetice (EMI) sub punctul de frângere al standardului
CISPR, adică de -60 dBV la 500 kHz.
De exemplu, pentru a calcula nivelele EMI radiate de un singur fir într-un arbore de
cablu al unui vehicul s-a folosit forma de undă trapezoidală reprezentată în figura 7.1,
pentru care s-a calculat seria Fourier.
Amplitudine
[V]
t0 t1 t2 t3 Timp
T
2 n
1 freq , unde n este un număr întreg.
T T
84
a n 1 t1
b n 1 t 2
c n 1 t 3
Vamp
MAG 20 log R2 F 2 (7.1)
(2 n ) 2
PW max PW min IT
Tol % 100 (7.2)
PW max PW min
85
Figura 7.2 ilustrează clock-ul cel mai rapid maxim şi clock-ul cel mai lent minim
care pot determina valoarea "1" logic sau respectiv "0" logic, pentru simbolul decodat de
către decodorul de simbol.
Timpul de integrare (IT) este timpul de incertitudine în determinarea lăţimii
impulsului.
Toleranţa reală poate fi afectată de aplicaţie şi de hardware-ul specific folosit în
reţea. Variabilităţile introduse de către hardware-ul specific impun ajustarea parametrilor în
ecuaţia (6.2), în vederea găsirii toleranţei finale a oscilatorului pentru dispozitivul care
transmite date.
PW max PW min
Clock nominal
("1" logic)
PW min PW max
Clock nominal
("0" logic)
PW max PW min
Clock rapid
("1" logic)
PW min PW max
Clock lent
("0" logic)
86
Figura 7.3 arată variabilitatea evoluţiei în timp a lăţimii impulsului introdusă de
decalajul masei.
Max
Decalaj Nom
Min
87
1. Filtrarea trece jos presupune trecerea bitului de date print-un filtru trece jos (un
integrator); cu cât este mai lungă cea mai scurtă durată a impulsului, cu atât este mai
eficientă filtrarea.
2. Testul pentru detecţia zgomotului în salvă controlează duratele reduse ale EMI.
3. Două teste independente ale bitului de date confirmă datele valabile. De exemplu,
PWM are două perioade de eşantionare unice pe bit şi ambele perioade trebuie să se
complementeze una pe cealaltă.
Activ
Pasiv
T1 T2 T1 T2
Valoare logică a bitului: "0" "1"
Tehnica PWM are abilitatea de a realiza arbitrarea bit cu bit. Figura 7.5 arată cum
un bit "0" domină şi are prioritate faţă de un bit "1" logic.
Activ
Bit "0" logic
Pasiv
Activ
Bit "1" logic
Pasiv
fereastră 1 2 3
eroare 1+ X X
activ lung 0 1+ X
activ scurt 0 0 1+
Cu toate că eficienţa filtrului trece-jos este redusă, codificarea PWM are capabilităţi
foarte bune de testare a biţilor nevalabili, deoarece are două din trei teste de validare (de
exemplu, confirmarea perioadelor duble ale datelor transmise şi zgomotul salvă).
PWM este o tehnică de codificare "perfectă" folosită cu succes de exemplu, pentru
multiplexare în electronica pentru automobile, electronica militară sau în electronica
medicală, atunci când integritatea datelor reprezintă prioritatea cea mai înaltă.
Ca un dezavantaj, PWM are tranziţii multiple pe bit şi nu permite funcţionarea la
viteze ale datelor lângă limitele naturale ale EMI pentru un mediu de transmisie pe un
singur fir sau pe fire răsucite.
89
Variabilitatea lungimii impulsului, introdusă de factori cum ar fi decalajul masei şi
variaţii ale sincronizării driverului de ieşire pot fi adunate la temporizarea duratei (lăţimii)
impulsului, fără o reducere severă a toleranţei oscilatorului, ceea ce reprezintă unul dintre
avantajele codificării VPWM.
În figura 7.7 este reprezentat un bit “0” logic codificat în tehnica VPWM.
Pasiv
T1 T2
90
Un simbol lung este în acelaşi mod sesizat prin nedectarea unei tranziţii în fereastra 1 sau 2
şi detectarea unei tranziţii (1 + ) şi fază adecvată în fereastra 3.
Activ
Un pasiv scurt este
definit ca bit "0"
logic Pasiv
Activ
Un pasiv lung este
definit ca bit "1"
logic Pasiv
Detectarea fazei adecvate la o tranziţie, este folosită pentru a verifica dacă secvenţa
nu a fost amestecată şi, de asemenea, pentru a defini nivelul logic recepţionat ("0" sau "1").
VPWM a fost apreciată cu o integritate "bună" a datelor deoarece filtrarea trece-jos
a lăţimii impulsurilor de date este bună. Fiecare tranziţie este validată de o fereastră de
eşantionare a erorii, iar măsurătorile de durată a impulsurilor sunt validate de testul de fază
adecvată, adică, două din trei teste de bit nevalabil.
Formatul codificării 10-Bit NRZ standard este prezentat în figura 7.10. Formatul are 10 biţi
pe byte de date de tip asincron serial (UART standard).
Pentru realizarea sincronizării byte-ului de date, au fost adaugaţi un bit de START şi
un bit de STOP.
91
START DATA STOP
7 0 1 2 3 4 5 6 7 0
UART standard folosit în interfaţa serială RS232 este de tipul cu biţi ordonaţi, în
care LSB este primul. Reţelele multiplexate care folosesc 10-bit NRZ folosesc hardware-ul
cu pin I/O asincron, adică interfaţa de comunicaţii disponibilă pe multe microcomputere.
Arbitrarea pentru 10-bit NRZ se poate analiza din figura 7.11, care prezintă
arbitrarea valorii 28H de la transmiţătorul #1, cu valoarea 44H de la transmiţătorul #2.
Un "0" activ câştigă arbitrarea în faţa unui "1" pasiv.
START 0 0 0 1 0 1 0 0 STOP
1
XMIT 1
0 1 2 3 4 5 6 7 0
0
0 0 1 0 0 0 1 0
1
XMIT 2 0 1 2 3 4 5 6 7 0
0
0 0 0 1 0 1 0 0
Magistrală 1
0 1 2 3 4 5 6 7 0
0
92
Codificarea 10-Bit NRZ are o integritate a datelor "satisfăcătoare", deoarce
adăugarea unei tranziţii între bitul STOP şi bitul STAT nu este unică în secvenţă şi
detectorul hardware s-ar putea "agăţa". Adăugând detecţia unui bit nevalabil pentru
zgomotul salvă între biţii de date, se îmbunătăţeşte integritatea datelor, dar nu poate fi
validat fiecare bit.
Curent de bit
original 0 1 0 0 1 1 1 1 1 1 1 0 0 1 0 0 0 1
(transmiţător)
Curent de bit
pe magistrală 0 1 0 0 0 0 0 1 0 1 1 1 0 0 1 0 0 0 1
Cu cât este mai mare numărul de biţi învecinaţi înainte de a introduce un bit de
umplutură, cu atât mai bună trebuie să fie toleranţa de sincronizare a oscilatorului, dar cu
atât este mai mică EMI. Numărul biţilor de umplutură într-un cadru depinde de valoarea
datei, iar timpul de transmisie pentru un byte de date depinde de valoarea datei. De aceea,
trebuie cunoscut numărul mediu de bytes de date pe bit de umplutură. Deducerea numărului
mediu de biţi de umplutură se face cu ajutorul ecuaţiilor 7.3. În mod normal, un bit de date
dintr-un mesaj are probabilitate egală de a fi "1" sau "0".
93
Probabilitatea de a exista un bit de umpultură Bi în algoritmul de umplere când
numărul biţilor egali alăturaţi este ales X = 5 este:
B0 B1 Bi Bn1
0 cand i 5
pi 1 / 32 cand i 5
1 / 64 cand i 5
N
F (N ) n 1
= Numărul de BYTES / UMPLUTURĂ
p
i 0
i
Fereastră 1 2 3 4 5 6
Data Dn Dn+1 Dn+2 Dn+3 Dn+4
Eroare 1+ X X X X X
Bit 1 0 1+ X X X X
Bit 2 0 0 1+ X X X
Bit 3 0 0 0 1+ X X
Bit 4 0 0 0 0 1+ X
Bit 5 0 0 0 0 0 1+
94
Eşantionarea trebuie să se adapteze de la unul la cinci biţi de date în mod secvenţial
şi să sincronizeze pe bitul de umplutură. Toţi biţii de date anteriori eşantionării unei tranziţii
au atribuit acelaşi nivel logic ca şi nivelul detectat de detectorul de tranziţie şi fază. Dacă
este detectată tranziţia în fereastra #1, datorată zgomotului salvă, mesajul trebuie înlăturat.
Detectorul poate îmbunătăţi integritatea datelor, dar nu poate valida fiecare bit. Ca şi în
celelalte tehnici de codificare prezentate, data este trecută printr-un filtru trece-jos. Totuşi,
filtrarea pentru NRZ este foarte eficientă datorită duratei lungi a impulsului de date.
Codificarea NRZ cu biţi de umplutură are integritatea datelor "satisfăcătoare",
deoarece adăugarea unui bit de umplutură pentru sincronizare nu este unică în secvenţă şi
detectorul hardware ar putea agăţa.
CLOCK
Activ
Pasiv
95
CLOCK
7 6 5 4 3 2 1 0
Activ
Pasiv
Data 0 1 1 0 0 0 1 0
Arbitrarea pentru L-MAN se observă în figura 5.16. Un bit "0“ logic câştigă
întotdeauna arbitrarea cu un "1" logic. Situaţia este posibilă deoarece porţiunea activă a
semnalului se suprapune peste porţiunea pasivă şi decuplează concurentul pasiv înainte ca
acesta să devină activ.
Activ
Pasiv
Activ
Pasiv
Pasiv
96
eşantionare 1 de detectează o tranziţie de orice fază, data a fost denaturată şi mesajul este
îndepărtat.
Codificarea L-MAN are integritatea datelor "perfectă”, chiar dacă eficienţa filtrului
trece-jos este redusă. Pe de altă parte, are două din cele trei teste de validare:
- validarea dublă a datelor prin perioadele adecvate la graniţa bitului şi
- testul de zgomot salvă la fiecare bit. L-MAN este o tehnică de codificare "perfectă"
folosită în multe aplicaţii de transfer de date pe magistrală multiplexată, atunci când
integritatea datelor are cea mai înaltă prioritate.
Totuşi, această tehnică are tranziţii multiple pe bit şi nu permite funcţionarea la
viteze ale datelor lângă limitele naturale EMI pentru medii de transmisie cu fir unic sau
pereche răsucită.
CLOCK
Pasiv
Pe timpul arbitrării, un activ ("0" logic) are prioritate faţă de şablonul opus ("1"
logic) atât pentru biţii de sincronizare codificaţi NRZ cât şi pentru L - MAN. Dominaţia
unui "0" logic asupra unui "1" logic este posibilă deoarece porţiunea activă a semnalului se
suprapune peste partea pasivă şi astfel deconectează ieşirea concurentului pasiv înainte ca
acesta să devină activ.
Avantajele tehnicii de codificare E – MAN:
- cea mai scurtă durată de impuls la 10.4 Kb/s este 76.8 µs şi permite un procent de
42% a timpului de creştere de 32.3 µs comparativ cu 32 µs durata scurtă a
impulsului şi 13 µs timp de creştere la codificarea PWM convenţional sau VPWM;
- timpul de creştere al formei de undă este mai mare;
- are o îmbunătăţire de 11-dBV în EMI faţă de PWM;
- viteza datelor pe byte transmis este constantă faţă de codificarea VPWM, în care
viteza datelor era variabilă;
97
- viteza de polling a transmiţătorului / receptorului microcomputerului care transferă
date codificate E-MAN trebuie să fie o constantă de valoare mai mică decât 768 µs
pe byte.
Bit 7 6 5 4 3 2 1 0
Timp C D C D C D C D C D C D C D C D C
Data 1 1 0 1 0 0 0 1
Formă
de undă
C D C D C
Regula 2 - Unda "A": Unda "B" 0 0
Dacă bitul anterior a fost un "0" activ, codând Activ
bitul urmărtor ca un "1" va domina întotdeauna Pasiv
Unda "A" 0 1
Activ
Pasiv
C D C D C
Regula 3 - Unda "A": Unda "B" 1 0
Dacă bitul anterior a fost un "1" pasiv, codând Activ
bitul urmărtor ca un "1" va domina întotdeauna Pasiv
Unda "A" 1 1
Activ
Pasiv
C D C D C
Regula 4 - Unda "A": Unda "B"
Activ 1 1
Dacă bitul anterior a fost un "1" activ, codând
Pasiv
bitul urmărtor ca un "0" va domina întotdeauna
Unda "A" 1 0
Activ
Pasiv
Fig. 7.19 Cele patru reguli pentru câştigarea arbitrării la codificarea MFM
100
Fereastră 1 2 3 4
Clock Dn C Dn+1
Data C Dn C Dn+1
Eroare 1+ X X X
Bit 1 0 1+ X X
Bit 1½ 0 0 1+ X
Bit 2 0 0 0 1+
101
CAPITOLUL 8
8.1 Introducere
102
VPWM CSC fantă simbol TTP VAN
Chrysler, GM Chrysler Universitatea ISO
Afiliere GM
Viena
Aplicaţii auto auto auto auto auto
pe vehicul pe vehicul pe vehicul pe vehicul pe vehicul
Mediu de fir unic fir unic pereche pereche pereche
transmisie răsucită/ răsucită/ răsucită
fibră optică fibră optică
Codificare VPWM NRZ analog NRZ cu biţi MFM L-MAN
biţi şi PWM umplutură E-MAN
Acces competiţie master/slave fantă simbol declanşare competiţie
timp
Detecţie CRC paritate CRC CRC CRC
erori
Lungime 0-8 bytes 1-32 biţi 0-256 bytes 2-8 bytes 0-8 bytes
câmp date
Confirmare da da da da
în mesaj
Viteză max. 10.4 Kb/s 1 Kb/s 2 Mb/s 1 Mb/s definită de
de bit utilizator
Lungime 40 m nespecificată nespecificată nespecificată 20 m
maximă tipic > 40m tipic 30 m tipic 20 m
magistrală
Nr. max. de nespecificat nespecificat 32 (capacitate nespecificat 16
noduri de transmisie)
Hardware da da nu nu da
disponibil
103
Format mesaje - câmpurile care formează mesajul (sau mesajele) de bază folosit
(folosite) în protocol. Aceasta include ordinea, numele şi dimensiunea câmpurilor.
Stabilire legătură (engl. handshaking) - descrie interacţiunea nodurilor în interiorul
unei reţele, în vederea efectuării unei transmisii de date. Aceasta poate include o serie de
procedee cum ar fi confirmarea pozitivă sau negativă şi confirmare în mesaj.
Administrarea detectării erorilor - tipurile de erori detectate de protocoale şi
tehnicile de reconstituire: eroare de lungime a mesajelor şi CRC.
Toleranţa la defect - capacitatea protocolului respectiv de a continua funcţionarea,
posibil la un nivel degradat, atunci când diferite părţi ale stratului fizic sau ale mediului
reţelei pe care operează protocoalele se defectează (adică, conexiunile nodului sunt rupte,
firele magistralei sunt în gol, firele magistralei sunt scurt-circuitate la masă sau la tensiunea
bateriei sistemului).
Viteză de transmisie - identifică viteza maximă de transmisie a datelor pe
magistrală, asigurată de către protocol.
Antet de cadrare - arată cantitatea de nondate ale antetului (antetul de cadrare)
asociat cu protocolul dat şi modul de calculul pentru dimensiunea antetului. Deoarece unele
protocoale oferă formate şi/sau dimensiuni diferite, anumite calcule ale antetelor pot fi
necesare pentru a da o imagine clară a necesităţilor pentru antetul protocolului.
Latenţă - descrie factorii care afectează întârzierea între disponibilitatea unui mesaj
de a fi transmis şi începutul recepţionării acelui mesaj de receptor. Prin definiţie, latenţa
repezintă intervalul de timp între momentul începerii transmisiei datelor pe magistrală şi
momentul de timp la care datele au fost recepţionate corect. Latenţa va fi cu atât mai mică,
cu cât tansmisia datelor se face cu viteză mai mare şi datele sunt recepţionate fără erori.
Reducerea puterii - informaţii generale despre modurile de funcţionare care cer mai
puţină putere decât funcţionarea normală. Ca un minim, se identifică cel mai redus nivel.
104
- un bit NC/DAT, care indică dacă este vorba despre un mesaj de date sau mesaj de
comandă;
- un identificator de 11 biţi;
- 16 biţi de date şi
- 2 biţi de STOP (STP0 şi STP1).
8 EŞANTIOANE
CLOCK
. . . . . . . .
θ 1 1 1 1 1 1 θ
X θ 1 1 1 1 1 1
X X θ 1 1 1 1 1
VALABIL
X X X θ 1 1 1 1
X X X X θ 1 1 1
X X X X X θ 1 1
X X X X X X θ 1
X X X X X X X θ
magistrală
mers în gol NC/DAT
1 1 11 16 2
magistrală
START IDENTIFICATOR DATE STOP mers în gol
ID10 ID9 ID8 ID7 ID6 ID5 ID4 ID3 ID2 ID1 ID0
CÂMP IDENTIFICATOR
CÂMP DE DATE
STP0 STP1
ANTET CADRARE
(8.1)
MESAJ CADRARE DATE
106
Protocolul A-BUS foloseşte abitrarea nedestructivă bit cu bit în competiţie, pentru a
determina accesul pe magistrală. În cazul a două sau a mai multor dispozitive care încep
simultan transmisia, mesajul cu cea mai înaltă prioritate va câştiga arbitrarea şi va continua
transmisia. Latenţa maximă pentru mesajul cu cea mai înaltă prioritate este numărul de biţi
în mesajul de lungime maximă multiplicat cu timpul de bit. De exemplu, un mesaj cu
lungimea de 31 biţi are nevoie de 64 μs la o viteză maximă de transmisie de 500 Kbiţi/s.
Mesajele cu prioritate mică au întârzieri suplimentare dacă pierd arbitrarea. Latenţa
lor se determină prin analiza statistică a sistemului, încărcării magistralei, priorităţii, etc.
Consumul de putere al circuitului integrat A-BUS poate fi redus la (10 – 100) μA
prin folosirea modului "somn", când oscilatorul este oprit. Modul somn este iniţiat de către
microprocesorul gazdă. Integratul se "trezeşte" printr-un reset sau prin activitatea de pe
magistrală, dar va trece printr-un reset în ambele cazuri. După reset, sunt necesare 50 ms
pentru ca oscilatorul să funcţioneze corect; primul mesaj acţionează ca un "ceas
deşteptător", nefiind recepţionat complet.
Protocolul CAN (engl.: Controller Area Network) este unul dintre cele mai utilizate
protocoale pentru transmisii de date pe magistrală multiplexată. Se poate utiliza atât în
formatul de mesaj standard (S) cât şi în fomatul extins (E).
Mediul de transmisie nu este specificat de producător, însă majoritatea proiectanţilor
de sisteme cu CAN folosesc magistrală cu fir ecranat sau neecranat, uneori cu fibră optică.
Interfaţa fizică este de cele mai multe ori definită de utilizator.
Codificarea biţilor se face prin tehnica NRZ (Nonreturn to Zero) cu biţi de
umplutură (figura 8.3) unde, nivelul logic este constant pentru întregul câmp de bit, fie "1",
fie "0". Dacă în secvenţa transmisă apar cinci biţi consecutivi de aceeaşi stare, atunci
transmiţătorul inserează un bit de stare opusă este inserat în curentul de bit. Receptoarele
îndepărtează bitul din curentul de bit, rezultând restaurarea curentului de date original.
Implementarea este programată să permită fie trei, fie un eşantion pe bit şi să specifice
plasarea eşantioanelor în interiorul unui bit.
curent de bit
(transmiţător)
0 1 0 0 1 1 1 1 1 1 1 0 0 1 0 0 0 1
Şapte biţi "1" alăturaţi
curent de bit
pe magistrală
0 1 0 0 1 1 1 1 1 0 1 1 0 0 1 0 0 0 1
Bit opus "umplut" în curent
curent de bit
(receptor)
0 1 0 0 1 1 1 1 1 1 1 0 0 1 0 0 0 1
107
Accesul la reţea se face prin competiţie, prin arbitrare nedistructivă bit cu bit. Când
magistrala este la mers în gol, orice dispozitiv conectat la magistrală poate transmite. În
cazul transmisiilor simultane pe magistrală, arbitrarea se rezolvă prin valoarea din câmpul
identificator, deoarece prioritatea oricărui mesaj este definită în identificatorul propriu.
Fiecare mesaj are un identificator unic, deci o prioritate unică. Aceşti identificatori /
priorităţi sunt definiţi de utilizator (proiectantul de sistem).
Există patru tipuri primare de mesaje, reprezentate în figurile următoare:
a) cadru DATE, figura 8.4, are următoarea alcătuire:
- 1 bit START cadru;
- câmp de abitrare, format din 12 biţi pentru formatul standard şi din 32 de biţi pentru
formatul extins;
- câmp de control, format din 6 biţi;
- câmp de date, în care se pot transmite de la 0 la 64 biţi;
- câmp CRC, format din 16 biţi şi unde se realizează detecţia erorilor;
- câmp de confirmare ACK (engl. Acknowledge) cu 2 biţi şi
- câmp sfârşit de cadru, alcătuit din 7 biţi.
Cadrul DATE se poate transmite atunci când magistrala este la mers în gol (idle).
După cadrul DATE urmează un spaţiu intercadre format din 3 biţi.
Magistrală
la mers Spaţiu
CADRU DATE
în gol intercadre
1 S=12-E=32 6 0 la 64 16 2 7 3
108
Magistrală
la mers CADRU DISTANŢĂ Spaţiu
în gol intercadre
1 S=12-E=32 6 16 2 7 3
După un cadru DISTANŢĂ urmează un spaţiu intercadre alcătuit din 3 biţi. Atât
cadrul DATE cât şi cadrul DISTANŢĂ au aceeaşi structură, singura diferenţă fiind câmpul
de DATE de la cadrul DATE, cuprins între câmpul de control şi câmpul CRC.
c) cadru EROARE, reprezentat în figura 8.6, are următoarea strutură:
- un flag eroare, transmis de staţia X, format din 6 biţi;
- o porţiune din flagul eroare de la staţia Y, cu 0 până la 6 biţi şi
- un câmp delimitator de eroare, care are 8 biţi.
Spaţiu
CADRU EROARE intercadre
Cadru date
6 0-6 8
Delimitator eroare
Porţiune a flagului
eroare
Flag eroare de la staţia Y
de la staţia X
109
Sfârşit cadru sau
delimitator eroare
sau delimitator Spaţiu
suprasarcină CADRU SUPRASARCINĂ
intercadre
6 0-6 8
Delimitator surasarcină
Porţiune a flagului suprasarcină
de la staţia Y
Flag suprasarcină
de la staţia X
110
Pentru mesajul cu cea mai înaltă prioritate, dacă un alt mesaj tocmai a început şi
mesajul respectiv stă la coadă, latenţa va fi de la 111 / 131 μs şi până la maximum 222 / 262
μs, până când transmisia mesajului este completă.
Timpul maxim între mesaje cu 4 bytes de date este de 79 biţi pentru formatul
standard şi 99 biţi pentru formatul extins. De notat că acesta include şi spaţiul intercadre.
Protocolul D2B (Magistrala de date digitale) este un produs Philips pentru utilizare
în comunicaţii audio/video, periferice de computer şi în electronica pentru automobile
Pentru transmisii de date, se recomandă utilizarea firelor în pereche răsucită.
Interfaţa fizică este reprezentată în figura 8.8 (pereche diferenţială flotantă).
Codificarea biţilor pentru protocolul D2B se face în tehnica PWM (impulsuri
modulate în durată).
Formatul general al bitului este reprezentat în figura 8.9 şi conţine patru secţiuni:
perioada de pregătire, perioada de sincronizare, perioada de date şi perioada de stop.
Duratele perioadelor şi ale biţilor depind de viteza de lucru a magistralei şi de tipul biţilor.
111
V alimentare
de la
logică I
Ct + Cd
+
Rb
la logică Rt Rt
Rb
-
+ Ct + Cd
Vcmd
I - UNITATE
Ct + Cd
Perioadă de
sincronizare
112
Fantă de timp
P P A P A E P A
Câmp Câmp
bit Câmp Câmp Câmp date
START mod master slave control n bytes
P = bit paritate
A = confirmare transmisie
E = Bit sfârşit date
Protocolul D2B permite trei moduri viteză diferite pentru transmisie şi arbitrează
adresele dispozitivelor competitoare o singură dată într-un mod viteză. Astfel, un dispozitiv
care are atribuită prioritate scăzută pe magistrală poate avea timpi de latenţă mari faţă de
medie. Latenţa este afectată de capacitatea unui master de a bloca un dispozitiv slave;
113
dispozitivul blocat nu va răspunde la nici un mesaj şi, în anumite situaţii, aceasta poate
degrada performanţa globală a sistemului.
Modurile de reducere a puterii sunt disponibile pentru controlerele de magistrală.
+
TRANSMISIE
ARBITRARE DETECTOR
DETECTOR CIOCNIRE POLARIZARE
MAGISTRALA -
TERMINARE
RECEPŢIE FILTRU
MAGISTRALA +
DIGITAL POLARIZARE
SINCRO
CLOCK
TIMING
- Stabilizator
DETECŢIE TRANCEIVER +5V
MERS ÎN GOL DIFERENŢIAL
mers
în gol
7 0 1 2 3 4 5 6 7 0
Trebuie menţionat că, perioade de mers în gol, adică separaţii interbyte (IBS), sunt
permise între fiecare byte de date, facilitând controlul firmware şi conectarea directă la
portul asincron serial I/O al microcomputerului gazdă.
Accesul la reţea se face prin competiţie, prin arbitrare bit cu bit nedestructivă.
Pentru stabilirea legăturilor, circuitul integrat foloseşte o interfaţă serială universală
de cost scăzut spre majoritatea microcomputerelor, prin trei moduri de operare care sunt
asigurate într-un dispozitiv: SCI, SPI şi SPI bufferat.
115
Circuitele interfeţei circuitului integrat folosit când s-a conectat intrarea SCI a
microcomputerului sunt de bază pentru funcţionarea tuturor celorlalte moduri de
comunicaţii seriale. Deci, acest mod va fi explicat primul.
Componentele dispozitivului (figura 8.11) includ: un transciever diferenţial care
permite competiţia, un detector de ciocnire şi un circuit de timing şi sincronizare.
Cu un detector de ciocnire, detecţia ciocnirii datelor are loc deoarece ieşirea
transceiverului este reflectată înapoi la intrările sale. Coordonarea acestei eşantionări este
determinată de circuitul de timing. Când detectorul de ciocnire găseşte că un bit "1" logic a
fost transmis, dar s-a recepţionat un "0" logic, el blochează semnalul transmis. În acest
mod, detectorul de ciocnire va permite numai interfeţei cu prioritatea cea mai înaltă şă-şi
continuie transmisia. Acţiunea detectorului de ciocnire de a bloca transmisia este resetată
la detectarea mersului în gol a magistralei (10 biţi de mers în gol consecutivi).
Detectorul de arbitrare funcţionează în conjuncţie cu circuitele de timing şi
sincronizare pentru a arbitra între startul unei date care trebuie transmisă şi startul unui
mesaj recepţionat de pe magistrală. Detectorul de arbitrare blochează o transmisie care ar
putea modifica un mesaj aflat în desfăşurare. De asemenea, permite dispozitivului care
începe primul transmisia, după un mers în gol al magistralei, să-şi treacă datele prin
interfaţă şi să le plaseze pe magistrală. În toate celelalte dispozitive netransmiţătoare,
detectorul de arbitrare blochează transmisia datelor până la detectarea unei condiţii de
magistrală la mers în gol.
Când mai mult de un dispozitiv vor să transmită date pe magistrală, la aproximativ
acelaşi moment de timp, decalat cu mai mult de ¼ din timpul de bit, detectorul de arbitrare
va permite transmisia pe baza regulii primul sosit - primul servit.
Dacă mai multe dispozitive încearcă să transmită date în apropierea sincronismului -
adică, mai puţin sau egal cu ¼ din timpul de bit - detectorul de arbitrare va permite
transmisia dar, numai dispozitivul cu cea mai înaltă prioritate îşi poate continua transmisia.
Detectorul de arbitrare este de asemenea resetat prin detecţia mersului în gol al magistralei.
Un filtru digital trece jos, plasat între transceiver şi ieşirea datelor recepţionate,
filtrează orice EMI recepţionat de semnalul de date digitale, înainte de a fi procesat de alte
circuite ale interfeţei.
Funcţia circuitului detector magistrală la mers în gol este de a detecta când
magistrala este la mers în gol (inactivă) sau ocupată (activă) şi apoi de a transmite această
informaţie înapoi la microcomputer. Detecţia mersului în gol se face prin sesizarea unui bit
stop recepţionat, urmat de 10 biţi de mers în gol continuu sau un "1" logic. În mod normal,
o perioadă activă sau ocupată urmează după o perioadă de mers în gol. Pe durata condiţiilor
neuzuale, cum ar fi de exemplu pornire dispozitiv, orice tranziţie de la "1" logic la "0" logic
care este menţinută pentru o perioadă mai lungă de ¼ dintr-un timp de bit setează flagul
activ sau ocupat.
Circuitul de sincronizare şi timing foloseşte un clock extern pentru viteza Baud. Mai
întâi sincronizează pe frontul negativ al bitului de START şi apoi generează un semnal de
timing la centrul fiecărui bit (la ½ din timpul de bit). Acest semnal de timing este folosit de
către circuitele de arbitrare şi ciocnire pentru a eşantiona datele recepţionate. Semnalul de
timing este folosit de circuitul de detecţie a mesului în gol, pentru a găsi momentele de timp
în care magistrală este la mers în gol.
116
Pentru a detecta o eroare în mesajul de date, se foloseşte o schemă firmware cu
sumă de control. Numărul corect de bytes într-un cadru este validat de firmware-ul
microcumputerului şi, în unele aplicaţii, flagurile depăşire byte date sunt folosite de
hardware-ul microcomputerului.
Toleranţa la defect a protocolului se manifestă printr-o continuare a funcţionării
reţelei, când un dispozitiv pierde alimentarea sau este deconectat de la reţea.
Rata Baud indicată de producător pentru transmisia datelor este 7812.5.
- 4 biţi de START;
- 4 biţi de STOP;
- 8 biţi sumă de control (CRC) şi
- 10 biţi sfârşit de mesaj.
În total sunt 34 biţi de cadrare, fără a include separaţiile interbyte (IBS). Secvenţa
DATA = 16 biţi.
ANTET CADRARE
MESAJ (CADRARE DATE )
ANTET 34
68% , neincluzând IBS
MESAJ (34 16)
117
V alim
R4
Q2
Q3
R1 D2
+
Rx X1 R2 R3
- MAGISTRALA -
R5 D1
R6
Tx Q1
Abordarea stratului fizic se face prin atac în tensiune, pe fir dublu. Mediul de
transmisie pentru fire duble este fie o pereche răsucită, fie o pereche paralelă.
Codificarea biţilor foloseşte tehnica PWM, figura 8.15. Toţi biţii sunt codificaţi în
acest mod, cu excepţia câtorva simboluri unice diferite prin timingul impulsurilor: start
cadru (SOF), sfârşit date (EOD) şi sfârşit cadru (EOF).
> Tp 3 Tp 1
Dominant
Pasiv
> Tp 3 Tp 2
Dominant
Pasiv
118
Accesul la reţea se face printr-un proces de arbitrare bit cu bit, prioritizată şi
nedestructivă.
Lungimea maximă pentru un cadru mesaj este de 101 timpi de bit (figura 8.16).
Bytul detector de eroare este inclus în câmpul de date, la dispoziţia proiectantului. O altă
posibilă utilizare a câmpului de date ar putea fi un identificator mesaj/adresă. Bytul răspuns
este explicat mai pe larg în paragraful următor, care se referă la stabilirea legăturilor.
Spaţierea intercadre nominală este de 2 timpi de bit.
MERS
2 0 - 64 8 1 0 sau mai mulţi 1 2 ÎN
GOL
IMS
Sfârşit cadru
Bytes răspuns
Sfârşit date
Byte detecţie eroare (ERR)
Bytes date (DATA)
Start cadru (SOF)
Cadrul mesaj începe cu START cadru (SOF), format din 2 biţi. Urmează bytesii de
date (DATA), care au o lungime de 0 până la 64 biţi. În acest câmp se transmit datele.
Câmpul următor este reprezentat de un byte (8 biţi) pentru detecţia erorilor (ERR). Se
transmite apoi 1 bit care marchează sfârşitul datelor (EOD). Cadrul mesaj continuă cu
bytesii răspuns (0 sau mai mulţi), 1 bit de sfârşit de cadru (EOF) şi 2 biţi pentru spaţierea
intercadre nominală (IMS). După aceasta, magistrala trece în modul “idle” (mers în gol).
Confirmarea este asigurată în cadrul mesaj folosind bytesii răspuns. Bytul răspuns
apare după bitul de sfârşit date (EOD). Dacă nu se aşteptată o confirmare, atunci nu se va
transmite un byte răspuns şi magistrala va rămâne în stare pasivă, semnificând un sfârşit de
cadru (EOF). Dacă este activă caracteristica confirmare/răspuns în mesaj, atunci bytul
răspuns este un identificator de cofirmare de 8 biţi sau unul ori mai mulţi bytesi răspuns
urmaţi de un byte ERR. Unul sau mai multe dispozitive slave pot încearca să răspundă
dispozitivului master solicitant şi arbitrarea va avea loc pe durata de timp a răspunsului.
Administrarea detecţiei erorilor include detecţia valorii de bit nevalabile şi a
structurii nevalabile de mesaj. Un bit nevalabil sau un mesaj nevalabil va provoca
terminarea procesului de recepţie până la următorul START cadru (SOF).
Câmpul detector de eroare în mesaj (ERR) foloseşte CRC de 8 biţi bazat pe
polinomul x8 + x4 + x3 + x2 + 1.
Toleranţa la defect a interfeţei pentru retea de comunicaţii date este explicată astfel:
Comunicaţiile pot fi întrerupte spre un dispozitiv sau de la un dispozitiv în unul din
următoarele cazuri:
- dacă acesta îşi pierde alimentarea;
- dacă există un scurtcircuit la masă a magistralei;
- dacă magistrala este scurtcircuitată la baterie;
119
- dacă s-a detectat un defect al dispozitivului transmiţător, însă nu va exista nici o
defectare a nici unui alt dispozitiv conectat la magistrală.
Trebuie menţionat că, dispozitivele rămase conectate în continuare la magistrală
sunt capabile de comunicaţii chiar şi atunci când un dispozitiv îşi pierde alimentarea, există
un defect al transmiţătorului sau pierde conectarea la reţea.
Viteza de bit specificată de producător pentru interfată este de 41.6 Kbit/s.
Pentru calculul antetului de cadrare, considerăm lungimea totală pentru cadru mesaj
de 101 timpi de bit, la care se adaugă 2 biţi pentru IMS. Lungimea totală pentru calcul
devine 103 biţi. Data permisă totală este de 80 biţi pentru forma de un byte al antetului, un
identificator mesaj şi 64 biţi pentru o formă de trei bytes ai header-ului.
Procentajul antetului este deci
Standardul SAE J1850 (eng.l: Data Communication Network Interface SAE J1850
VPWM) defineşte două versiuni ale reţelelor multiplexate pentru vehicule. Acest paragraf
acoperă transmisii de date codificate VPWM (modulaţia impulsurilor cu durată variabilă),
la o viteză de 10.4 Kbit/s. În paragraful precedent (6.6) s-a prezentat codificarea datelor cu
modulaţia impulsurilor în durată (PWM) într-o versiune la 41.6 Kbit/s
Schema circuitului pentru interfaţa fizică receptor/ transmiţător VPWM este
prezentată în figura 8.17.
Stratul fizic pentru versiunea VPWM defineşte pentru mediul de transmisie un
singur fir, aşezat aleator, cu atac în tensiune.
Codificarea biţilor se face astfel: fiecare bit sau simbol se codifică cu impulsuri cu
durată variabilă (exceptând ruptura) şi este definit de timpul între două tranziţii consecutive
şi nivelul magistralei, dominant sau pasiv. Prin urmare, există un simbol pe tranziţie şi o
tranziţie pe simbol. Sfârşitul simbolului precedent startează simbolul curent.
Codificarea biţilor "1" logic şi "0" logic este reprezentată în figura 8.18.
120
V alim
Tx FORMATOR Q1
R1 D1
Rx x1 MAGISTRALA +
R2
Dominant
SAU scurt
lung
Pasiv
Bit "1"
Dominant
scurt SAU lung
Pasiv
Bit "0"
Un bit "1" este fie un impuls pasiv lung de 128 μs sau un impuls dominant scurt de
64 μs. Dimpotrivă, un bit "0" este fie un impuls pasiv scurt, fie un impuls dominant lung.
Lăţimile impulsurilor se schimbă între stările pasivă şi dominantă ale magistralei în
vederea adaptării la cerinţele de arbitrare şi prioritate.
Start cadru (SOF) din figura 8.19, este un impuls dominant cu durata de 200 μs.
Dominant
200 μs
Pasiv
"SOF"
Sfârşit date (EOD), din figura 8.20, este un impuls pasiv cu durata de 200 μs.
Sfâşit cadru (EOF), figura 8.21, este un impuls pasiv cu durata de 280 μs.
121
Dominant Dominant
200 μs 280 μs
Pasiv Pasiv
"EOD" "EOF"
Fig. 8.20 Simbolul Sfârşit date Fig. 8.21 Simbolul Sfârşit cadru
(EOD) (EOF)
Dominant Ultimul
bit de
date EOD scurt sau lung primul bit răspuns
MERS ÎN
2 0 - 64 8 0 sau mai mulţi
GOL
IMS
Sfârşit cadru(EOF)
Bytes răspuns
Bit normalizare
Sfârşit date
Byte detecţie eroare (ERR)
Bytes date (DATA)
Start cadru (SOF)
122
Cadrul mesaj seamănă cu cadrul mesaj de la interfaţa reţea pentru transmisie date
codificate PWM, deosebirea constând în prezenţa bitului de normalizare, după sfârşit date.
Confirmarea este asigurată în cadrul mesaj prin bytesii răspuns, care apar
întotdeauna după EOD (sfârşit date). Dacă nu se aşteptată o confirmare, nu se trimite un
byte răspuns şi magistrala va rămâne în starea semnificând un EOF. Dacă este activă
caracteristica de confirmare în mesaj/răspuns, atunci bytul răspuns este un identificator de
confirmare de 8 biţi sau unul ori mai mulţi bytes de răspuns urmaţi de un byte ERR.
Dacă unul sau mai multe dispozitive slave încearcă să răspundă masterului care a
lansat cererea pe magistrală, atunci arbitrarea va avea loc pe durata de timp a răspunsului.
Administrarea detecţiei erorilor include detecţia magistralei de comunicaţii în afara
domeniului, valoarea nevalabilă a biţilor transmişi şi o structură de mesaj nevalabilă.
Un bit nevalabil sau un mesaj nevalabil determină încheierea recepţiei datelor până
la următorul SOF (început de cadru).
Câmpul pentru detecţia erorilor (ERR) foloseşte un CRC de 8 biţi pe baza
polinomului x8 + x4 + x3 + x2 + 1.
Toleranţa la defecte a interfeţei se manifestă astfel:
Comunicaţiile pot fi întrerupte spre / de la un dispozitiv în următoarele situaţii:
- dacă un dispozitiv conectat la magistrală îşi pierde alimentarea;
- dacă există un scurtcircuit la masă a magistralei;
- dacă magistrala este scurtcircuitată la baterie;
- dacă se detectează un defect al dispozitivului care transmite date pe magistrală, dar nu
va exista nici o defecţiune a nici unui alt dispozitiv de pe magistrală.
Observaţie: Toate celelalte dispozitive rămase conectate la magistrală pot efectua
transferuri de date când un dispozitiv îşi pierde alimentarea şi este deconectat de la reţea.
Viteza specificată pentru transferul datelor este de 10.4 Kbit/s.
Pentru calculul antetului de cadrare, la lungimea totală a cadrului mesaj (101 timpi
de bit) se adaugă 2 biţi pentru IMS, lungimea totală de calcul devenind de 103 timpi de bit.
Data permisă totală este de 80 biţi pentru forma de 1 byte al antetului (identificator mesaj)
şi 64 biţi pentru o formă de 3 bytes ai headerului. Prin urmare, procentajul antetului este:
Într-un sistem în care acesul la magistrală se câştigă prin arbitrare nedestructivă bit
cu bit, cea mai înaltă prioritate mesaj/adresă câştigă accesul la magistrală.
Într-un sistem cu prioritate mesaj, un dispozitiv conectat la magistrală şi care
transferă date, va avea mărimi variate ale latenţei, în funcţie de prioritatea medie a
mesajului transmis.
Într-un sistem cu prioritate după adresă, un dispozitiv care solicită accesul la
magistrală va avea o întârziere proporţională cu nivelul de prioritate al adresei sale şi cu
activitatea pe magistrală. De exemplu, un dispozitiv cu prioritate scăzută, va avea latenţă
mai mare decât media pe durata perioadelor cu încărcări mari ale magistralei.
Un dispozitiv conectat la magistrală poate intra în modul putere redusă (starea de
“somn”) dacă magistrala este la mers în gol pentru mai mult de 500 ms. "Deşteptarea" are
loc la orice activitate pe magistrală.
123
8.8 Sensori şi control Chrysler (CSC), SAE J2058
Magistrala Sensori şi Control Chrysler (CSC - engl.: Chrysler Sensor and Control)
reprezintă o tehnică de multiplexare cu o mare flexibilitate şi cu posibilitatea de expansiune.
Componentele de magistrală CSC au fost dezvoltate pentru a asigura comunicaţii
simple dar fiabile, între un modul gazdă master şi sensorii şi dispozitivele sale de acţionare.
Schema aleasă permite comunicarea atât în modul polling cât şi în moduri de
adresare directă, folosind conectoare mici pentru module şi reducerea numărului de fire care
umplu arii aglomerate, fără a introduce mai multe module.
Magistrala CSC este un tip de multiplexare care reuneşte aceste obiective şi permite
proiectarea de bază a vehicului, în timp ce determină costul complet al caracteristicilor
opţionale ca o funcţie de opţiune.
Componentele CSC sunt disponibile în următoarele variante:
(1) magistrală CSC cu 2 pini; magistrală CSC pentru sensori cu efect Hall;
Allegro P/N A3054 U şi
(2) interfaţă master driver / receptor, Cherry Semiconductor, Automotive IC
Data Book, P/N CS-8425 Hall-Effect Sensor.
Magistrala CSC foloseşte pentru transmisii de date un singur fir, aşezat aleator.
Interfaţa master driver / receptor limitează timpul de creştere (t r) şi timpul de cădere
(tf). Dacă tranziţiile formei de undă de la ieşirea interfeţei depăşesc 20 μs la o viteză de
transfer a datelor pe magistrală de 1 Kbit/s, nivelele EMI sunt acceptabile (figura 8.24).
V alim MAGISTRALA
A
Micro MUX DISPOZITIV DE
B ACŢIONARE
MAGISTRALA
A/D CSC
Soluţia preferată este adaptarea senzorilor CSC la masa interfeţei master driver/
receptor, eliminând astfel curentul longitudinal de zgomot şi reducând semnificativ efectele
tensiunii de decalaj a masei.
124
În producţia de vehicule, returnarea referinţelor senzorilor CSC la modulul master în
mod uzual nu adaugă un circuit cu fire, deoarece aceşti sensori au un fir de retur
independent la caroserie sau şasiu. Îmbunătăţirea în continuare a performanţelor în ceea ce
priveşte susceptibilitatea la EMI se poate realiza prin plasarea unui mic condensator de la
magistrala CSC la sensor.
În figra 8.25 este reprezentată forma de undă a tensiunii folosită pentru comunicarea
pe magistrala CSC, în modul poling continuu. Sensorii folosesc curent pentru a răspunde
dispozitivului master care a generat forma de undă de tensiune.
Exemplu
≈ 1 ms
9V
6V
Adresă Adresă Adresă Adresă Adresă
1 2 3 4 N
0V
4V
A B C D E F G H I J
1V
0V
126
9V
6V
3V
0V
Forma de undă a tensiunii pentru modul polling magistrala CSC dispozitive de acţionare
4V
1V
0V
A B C D E F
6V
1 1 0 1 0 1
3V
Adresă Date
0V
6V
1V
0V A B C D E F G H
Toţi cei 6 biţi sunt transmişi în acelaşi mod, descris anterior. Pe durata porţiunii de 3
V a celui de-al cincilea bit şi a bitului final de adresă, prin măsurarea mărimii curentului
care este tras, masterul determină dacă un dispozitiv de acţionare şi-a recunoscut adresa.
Pentru accesul la reţea, magistrala CSC foloseşte un protocol master-slave, deoarece
masterul este în mod uzual modulul prezent cu caracteristică majoră, iar sensorii şi
dispozitivele de acţionare asociate sunt slave-i. Microcomputerul modul caracteristic este
gazda spre circuitul integrat al interfeţei driver/receptor.
Circuitul integrat interfaţă master driver/receptor - magistrală CSC conţine circuitele
necesare pentru a asigura o formă de undă de tensiune de decalaj în curent continuu.
Această ieşire este controlată de două intrări digitale CMOS: A şi B, asigurate de un
microcomputer gazdă şi funcţionează ca nişte "creiere" ale modului de control master.
Circuitul integrat sesizează curentul magistralei CSC şi-l converteşte într-o tensiune
analogică, la ieşirea circuitului integrat spre intrarea analogică a microcomputerului.
128
Masterul comunică cu sensorii şi dispozitivele de acţionare conectaţi la magistrala
CSC printr-o formă de undă de tensiune.
Un sensor este adresat prin pollingul succesiv şi ordonat al fiecărei adrese (fantă de
timp sau perioadă) în ordine crescătoare:
Atât sensorii cât şi dispozitivele de acţionare răspund nodului master când sunt
testaţi sau adresaţi direct, cu un curent răspuns care informează masterul că a fost
recunoscută o adresă.
Datele pentru dispozitivele de acţionare sunt protejate de acţiuni nedorite de un bit
de paritate în mesajul comandă. Pentru eliminarea susceptibilităţii EMI, care poate cauza
date false de la sensori, datele sunt filtrate software, în modulul de control master.
Pentru a valida adresarea corectă a unui sensor sau dispozitiv de acţionare într-un
mediu zgomotos de pe vehicul, se sugerează următoarea procedură:
- Dacă valoarea curentului nu este în vecinătatea curentului de referinţă măsurat,
sensorul nu este prezent şi nu este ascultat nici un dispozitiv de acţionare.
- Dacă sunt ascultaţi doi sau mai mulţi sensori sau dispozitive de acţionare
(determinat de dublul răspuns în curent), masterul resetează magistrala CSC (ieşire 0 V).
- Dacă masterul detectează că sensorul sau dispozitivul de acţionare adresat nu este
în starea corectă, comanda poate fi reluată sau retransmisă.
Stabilirea legăturii între master şi sensori permite funcţionarea şi detecţia situaţiei în
care sunt îndepărtaţi din reţea (de pe magistrală) sensori sau dispozitive de acţionare.
Driverul/receptor are o limită de curent care îl protejează de un scurtcircuit pe magistrală.
Referitor la viteza de transmisie a datelor pe magistrala CSC, aceasta este
determinată de software-ul modulului master şi nu trebuie să fie fixă. Se recomandă o
viteză de transfer de 1 Kbit/s.
ANTET CADRARE
MESAJ (CADRARE DATE )
ANTET 1
50%
MESAJ 2
129
Masterul este în control şi poate înterupe comanda de polling a sensorilor sau
dispozitivelor de acţionare pentru a comanda un singur dispozitiv de acţionare în câteva ms
sau 32 sensori în 32 ms, sau cu o viteză de 1 Kbit/s.
De asemenea, dispozitivul master poate controla alimentarea sistemului cu
magistrală CSC prin netestarea sau neadresarea reţelei; în acest caz, curentul tras va fi cel
corespunzător alimentării de aşteptare a sensorului.
Protocolul fantă simbol a fost dezvoltat de General Motors (engl.: Token Slot
Protocol) şi este destinat controlului şi informării generale distribuită a vehiculelor de înaltă
performanţă.
Mediul de transmisie nu este specificat de producător însă, se recomandă folosirea unei
perechi răsucite sau fibră optică, la viteza de 1 Mbit/s.
Interfaţa fizică este nespecificată, dar este necesar un acces multiplu la magistrală.
Reţeaua cu magistrala este deschisă, cu structură de tip multimaster. Este de tip non
competiţie şi foloseşte o tehnică cu fantă de timp, cu trecerea simbolurilor (figura 8.28).
Fig. 8.28 Atribuire de dispozitiv fantă simbol şi şablon ciclu secvenţă fantă
130
Caracteristicile principale ale acestui protocol sunt următoarele:
- garantează transmisia periodică pe magistrală a mesajelor de către fiecare
dispozitiv conectat;
- asigură ca magistrala să rămână operaţională când sunt adăugate sau
eliminate în mod dinamic dispozitive;
- asigură revenirea rapidă din condiţiile de eroare.
După ce un anumit dispozitiv de pe magistrală a transmis în trafic mesajul său
complet, o explorare în secvenţe de timp scurte, egale (fante) oferă magistralei posibilităţi
de transmisie spre posesorii de dispozitive fantă (figura 8.29).
Fante simbol cu numerele relative ale fantelor indicate
paritate pară
fantă mers
simbol în mers mers fantă
SLN SLN SLN SLN SLN Mesaj Mesaj simbol
SLN 5 gol 6 7 31 0 1 în în
1 gol 2 gol SLN 1
131
Există trei tipuri de mesaje de bază care pot fi deosebite de un câmp de control de 2 biţi
ce se găseşte în primul byte:
Trecere simbol (token slot), figurile 8.29 şi 8.30, este un mesaj de 1 byte care conţine
câmpul control mesaj (2 biţi), numărul curent al fantei (5 biţi) şi un bit de paritate
(paritate impară). Este urmat de un delimitator linie mers în gol (8 biţi).
Date, figurile 8.31 şi 8.32, include câmpul de control mesaj (2 biţi), câmpul identificator
de mesaj ID de 14 biţi, până la 256 bytes de date, un câmp de 16 biţi verificare
redundanţă ciclică (CRC) şi o linie delimitator mesaj magistrală mers în gol (8 biţi).
Câmpul de control mesaj este folosit pentru a cere un mesaj de confirmare.
timp
aşteptare confirmare
confirmare
Confirmare, figura 8.33, este un mesaj fix, de un singur byte (Hex D5) şi o linie
delimitator de mers în gol de 8 biţi (16 biţi în total). Este iniţializat de câmpul de control
al mesajului precedent.
132
Orice mesaj de date poate fi programat în mod dinamic pentru a comanda un mesaj
de confirmare, care să fie returnat imediat de la unul din dispozitivele receptoare de pe
magistrală. Dacă după un scurt interval de aşteptare confirmarea cerută nu a fost
recepţionată, transmiţătorul poate reîncerca şi/sau continuă să transmită alte mesaje.
Dispozitivul care răspunde nu posedă simbolul.
Atât dispozitivele receptoare cât şi cele transmiţătoare supraveghează în mod
independent transmisiile de pe magistrală. Dispozitivul transmiţător verifică mesajul pentru
o corespondenţă 1 la 1 a biţilor receptionaţi şi transmişi.
Toate dispozitivele verifică timing-ul corect, CRC, spaţiile dintre mesaje şi, dacă se
cere, trimit un mesaj de confirmare. Dispozitivele receptoare nu confirmă mesajele eronate.
Câmpul CRC de 16 biţi are următoarele funcţii:
- detectează toate erorile de 1 bit;
- detectează toate erorile de paritate;
- detectează toate erorile de salvă cu o lungime mai mică de 17 biţi.
Pentru erori în salvă mai lungi de 16 biţi, rata nereuşitelor câmpului CRC este de
0.0015 procente din erori, deci foarte mică.
Un transmiţător detectează dacă are loc o eroare time out magistrală (BTO) când
magistrala merge în gol pentru mai mult decât o perioadă completă a unei secvenţe fantă
simbol. Dacă este detectată o eroare BTO, toate nodurile încep o nouă secvenţă trecere
fantă simbol, cu începere de la fanta 0.
Erorile de magistrală sau ciocnirile determină ca dispozitivul care le-a detectat să
genereze un semnal de tip magistrală presată, semnal care reprezintă o linie dominantă
pentru 8 timpi de bit, înaintea liniei mers în gol de sfârşit mesaj. Acesta declară operaţia
curentă sau mesajul nevalabil şi instruieşte toate celelalte dispozitive conectate la
magistrală să înceapă o nouă secvenţă trecere fantă simbol, cu începere de la fanta 0.
Fiecare dispozitiv transmiţător supraveghează propriile transmisii de date pe
magistrală, starea magistralei, istoricul defectelor şi controlează operaţiile în modul de
degradare corespunzător.
Pierderea oricărui dispozitiv sau chiar separarea lui de magistrală, precum şi
adăugarea altor dispozitive noi la magistrală nu afectează funcţionarea continuă a
magistralei cu dispozitivele rămase conectate.
Protocolul fantă simbol lucrează cu viteze maxime de transmisie a datelor de până la
2 MHz. Deoarece viteza de transfer a datelor este limitată doar de lăţimea benzii
magistralei, este posibilă creşterea ulterioară a vitezei datelor.
Modul de calcul al antetului de cadrare mesaj este prezentat în Tabelele 8.2 şi 8.3.
Tabelul 8.2 Antetul fantei trecere simbol în timpi de bit (figurile 8.29 şi 8.30)
133
Tabelul 8.3 Antetul mesajului date fantă simbol (figurile 8.31, 8.32 şi 8.33)
Bit sincronizare 1
Identificator ID 16
Date (limită de terminată de sistem, de exemplu 0 - 256 bytes) variabil
Verificare redundanţă ciclică CRC 16
Spaţiu delimitare intermesaje 8
Răspuns confirmare (dacă se cere) + spaţiu 16 .
Antet pe mesaj - cu confirmare ACK 57 biţi
Sau antet pe mesaj - făra confirmare ACK 41 biţi
Bit sincronizare 1
Identificator ID 16
Date (limită determinată de sistem - bytes) 0 - 256 bytes
CRC 16
Spaţiu delimitare intermesaj 8
Răspuns confirmare (dacă se cere) + spaţiu 16
----------------
Antet pe mesaj - cu confirmare ACK 57 bt
Sau antet pe mesaj - fără confirmare ACK 41 bt
Calculul buclei de timp – (P dispozitive transmit N bucle de mesaj cu M bytes date/ mesaj
134
Exemplu de calcul al timingului pentru fantă simbol
135
programat în modul înainte de lansarea în producţie. Marele avantaj al protocolului TTP
(engl.: Time Triggered Protocol TTP) este controlul distribuit de timp real de mare viteză
cu timp declanşat a sistemelor.
Protocolul TTP a fost dezvoltat de Institutul pentru Informatică Tehnică,
Universitatea Tehnică din Viena şi este un protocol integrat de comunicaţii pentru aplicaţii
pe vehicule, care furnizează toate serviciile cerute pentru implementarea unui sistem de
control de timp real de mare viteză, distribuit, cu toleranţă la defect
Mediul de transmisie foloseşte o pereche de fire răsucite sau fibră optică.
Structura sistemului de bază I/O pentru interfaţare conţine dispozitive conectate prin
două interfeţe fizice redundante la reţele duale, pentru protecţia la defecte de cablare,
contacte, conectori, etc. Pentru a tolera un defect de dispozitiv, două dispozitive sunt
conectate în paralel. Codificarea biţilor nu este specificată de proiectant, dar este sugerată
tehnica de codificare MFM, deoarece are mai puţin de o tranziţie pe bit.
Accesul la reţea se face prin acces multiplu, cu divizare de timp (TDMA) şi este
controlat de o bază de timp globală generată de protocolul TTP. Un TDMA complet este
definit ca fiind un ciclu complet pe durata căruia fiecărui modul al vehiculului i s-a acordat
cel puţin o dată acces pentru transferul de date. Toate informaţiile transmise pe un canal de
comunicaţii pot fi cadrate în mod corespunzător.
În figura 8.35 sunt prezentate patru configuraţii posibile: clasă I, clasă II, clasă III şi
clasă IV. Pentru efienticizare, în configuraţia de clasă IV se introduc dispozitive fantomă.
< >
< >
Configuraţia clasă I
< >
< >
Configuraţia clasă II şi III
Dispozitive
fantomă
< >
< >
Configuraţia clasă IV
136
În figura 8.36 este prezentat un cadru TTP.
biţi confirmare
mod schimbare biţi
bit iniţializare
137
date. Deoarece receptorul ştie a priori timpul de trimitere al fiecărui cadru, nu este necesar
să se transfere în cadru valoarea timpului de trimitere.
Între oricare două cadre TTP există un delimitator intercadre, notat IFD, necesar
pentru sincronizarea biţilor transmiţătorului şi receptorului.
Aşa cum s-a arătat în figura 6.35, două dispozitive sunt conectate în paralel pentru a
tolera defectul unui dispozitiv în canale duplicate de comunicaţii pe vehicul. Aceste canale
duplicate înregistrează aceleaşi schimbări de stare la aproximativ aceleaşi momente de timp
şi sunt sincronizate cu o precizie cunoscută de protocolul TTP.
Pentru administrarea erorilor, protocolul TTP se bazează pe canalele de comunicaţii
care realizează numai omisiunea defectelor şi a dispozitivelor care detectează o stare de
defect (un cod de defect); de exemplu, furnizează rezultate corecte sau de loc rezultate, ceea
ce ajută la restrângerea ariei de eroare la nivelul sistemului.
Într-un proces de transfer de date, un transmiţător ataşează un câmp CRC fiecărui
cadru iar un receptor poate detecta când un cadru a fost afectat şi înlătură acel cadru.
Pentru o funcţionare corectă, protocolul TTP trebuie să asigure detectarea tuturor
defectelor interne ale unui dispozitiv şi oprirea lor, înainte de a fi transmis un mesaj de
ieşire eronat. Acest lucru se realizează prin folosirea redundanţei de spaţiu sau timp. Mai
mult, protocolul TTP are un serviciu care poate detecta defectul de omisiune a verigilor din
comunicaţiile care vin şi pleacă pe magistrală.
În concluzie, cu magistrale duale duplex şi canale de comunicaţii cu dispozitive
redundante, capacitatea de toleranţă la defect a protocolului TTP este excelentă.
În Tabelul 8.4 se arată capacitatea de toleranţă la defect realizată cu o configuraţie
clasa IV, prezentată anterior în figura 6.35. Intervalul de restabilire pentru un eveniment
tranzitoriu depinde de lungimea perioadei tranzitorii de întrerupere şi de timpul cerut de
protocolul TTP pentru a detecta, monitoriza şi restabili din întrerupere. Acest timp este de
ordinul ms.
138
Pentru stabilirea antetului de cadrare, se calculează lungimea totală a mesajului
transmis, în biţi, cu formula:
- pentru un mesaj transmis de 4 bytes (32 biţi) de date, antetul de cadrare este:
Protocolul denumit Arie de Reţea pe Vehicul (VAN - Vehicle Area Network) este un
protocol de magistrală multiplexată, propus pentru aplicaţii multiplexate pe vehicule.
Mediul de transmisie este specificat, recomandându-se perechea de fire răsucite.
Transmisia se face pe pereche diferenţială, folosind surse de curent. Pentru creşterea
imunităţii la zgmot, s-a prevăzut un filtru analogic opţional. Interfaţa este reprezentată în
figura 8.37.
Pentru acest protocol sunt permise două tehnici de codificare, selectate de utilizator,
şi anume: L-Manchester şi E-Manchester (figura 8.38).
În codificarea L-Manchester, toţi biţii din cadru sunt codificaţi Manchester.
Încodificarea E-Manchester, biţii sunt codificaţi NRZ cu excepţia unltimului bit din
fiecare secvenţă, care va fi codificat L-MAN.
Câmpurile IMS şi SOF sunt codificate prin mers în gol E-Manchester, iar NRZ şi
ACK sunt codificate L-Manchester.
Accesul la reţea se face prin arbitrare nedestructivă prioritizată, bit cu bit, folosind
câmpul identificator unic de 12 biţi, al cărui format este definit de utilizator.
139
MAGISTRALA + RI RECEPŢIE
FILTRU
ANALOGIC RI
MAGISTRALA -
CONTROL
POL
EMISIE
FIXARE CURENT
CLOCK
dominant
pasiv
valoare logică bit 0 1
REPREZENTARE BIŢI L - MANCHESTER
CLOCK
pasiv
REPREZENTARE BIŢI E - MANCHESTER
Protocolul VAN permite accesul în cadru pe baza unei linii de acces la mediu R.
Orice dispozitiv conectat la magistrală poate accesa cadrul, cu condiţia ca R-1 biţi anteriori
ai câmpului de arbitrare să fi fost emişi şi ca fanta de timp precedentă să fi fost recesivă.
Pentru definirea formatului mesajului, analizăm cadrul mesaj, format din 8 câmpuri:
- Start cadru (SOF), furnizează o referinţă de timp comună tuturor dispozitivelor de pe
magistrală, permiţând acestora să-şi sincronizeze clock-ul local; bitul start mesaj are
rolul de a iniţializa cadrul;
- Câmpul identificare cadru, de 2 bytes, include identificatorul mesaj unic de 12 biţi
urmat de 3 biţi de control (CRC) şi bitul cerere transmisie la distanţă (RTR). Bitul RTR
140
specifică dacă în cadrul transmis sunt incluse date (bit RTR = 0) sau dacă se cer date
(bit RTR = 1). De asemenea, bitul RTR permite răspunsul imediat în cadru sau, mai
târziu, într-un cadru separat.
- Câmpul de date, care este format din (0 – 64) biţî de date;
- Câmpul CRC, format din 15 biţi, pentru detecţia erorilor;
- Un bit sfârşit date;
- Un bit confirmare;
- Câmpul EOF (sfrrşit cadru) de 4 biţi şi
- Identificatorul de cadru (IFS – Identifier Frame Single).
Formatul cadrului de mesaj tip single este prezentat în figura 8.39.
6 16 0 – 64 15 1 1 4 2
( x 8 x 4 x 3 x 2 1)
( x 7 1)
141
Dimensiunea totală a cadrului (incluzând datele) este 109 biţi. Dimensiunea
cadrului total include biţii START, STOP şi mers în gol.
Cantitatea de date permisă pentru transfer într-un cadru este de maxim 64 biţi.
Considerând toate aceste valori, obţinem pentru procentajul antetului:
142
CAPITOLUL 9
Header-ul este un câmp de unul, doi sau trei bytes în interiorul unui cadru şi conţine
informaţii despre:
- sursa mesajului (dispozitivul transmiţător),
- adresa ţintei (dispozitivului de pe magistrală căruia îi este destinat mesajul respectiv),
- prioritatea mesajului (mesajele de alarmă şi mesajele de tip Sync sunt prioritare),
- tipul mesajului (funcţional, fizic, condus de eveniment, etc.) şi
- răspunsul în cadru.
Selectarea header-ului se face în funcţie de arhitectura aleasă pentru sistem (uni-
reţea sau multi-reţea) şi în funcţie de tipul mesajului care trebuie transferat pe magistrală
(mesaj funcţional sau mesaj fizic).
Pentru sistemele cu arhitectură multi-reţea şi în care se transferă mesaje
funcţionale sunt recomandate de obicei headere de un singur byte, a căror structură este
reprezentată în figura 9.1 a). Un astfel de header îndeplineşte funcţia de identificator de
mesaj (ID), oferind toate informaţiile necesare despre mesajul respectiv. Este folosit pentru
transferul mesajelor funcţionale de tip difuzare (broadcast), nefiind necesară specificarea
sursei sau destinaţia mesajelor deoarece recepţionarea lor este responsabilitatea exclusivă a
dispozitivului receptor.
Pentru sistemele cu arhitectură multi-reţea, în care se transferă mesaje fizice, se
recomandă alegerea unui header de doi bytes-i. Primul byte este identificatorul de mesaj
(ID) şi conţine informaţiile de bază, iar cel de-al doilea byte reprezintă adresa ţintei
(dispozitivului de pe magistrală căruia îi este destinat). Structura unui astfel de header este
reprezentată în figura 9.1 b).
ID Data 1 ...
a) Header pentru cadre de mesaj funcţional
Comutator capotă
Comutator portbagaj
Claxon vehicul
Modul alarmă
Masă
antifurt vehicul
147
MUX
MUX
Claxon
Comutator
MUX
manual Modul alarmă Masă
antifurt a vehiculului
Comutator Comutator
MUX
portieră şofer MUX portieră pasager
Comutator
MUX
MUX
cheie Comutator
cheie
Comutator Comutator
MUX
MUX
portieră portieră
stânga spate dreapta spate
Computer pentru
caroserie
Magistrală
Masă
Grup de Centru de
instrumente mesaje
150
Nivel lichid răcire Faruri aprinse
Lichid de frână Benzină puţină
Nivel ulei Comutator ştergător
Lichid transmisie Comutator cheie
Lichid parbriz Centuri siguranţă
Capotă deschisă
Grup de
instrumente
Computer
Nod motor
caroserie
Magistrală
Masă
151
Stabilizator de
Baterie tensiune
Masă
Mâner portieră
Magistrală
Cilindru cheie Microcontroler Circuit
Integrat Masă
Uşă închisă
J1850
Uşă deschisă
Până acum au fost descrise diferite structuri de sisteme complexe cu arhitecturi uni-
reţea pentru conectarea multiplexată. Arhitectura multi-reţea este cea de-a doua strategie
folosită de proiectanţii de sisteme, pentru rezolvarea problemelor ce apar în sistemelor cu
conectare multiplexată.
Această arhitectură necesită dezvoltarea mai multor tipuri de componente hardware
pentru reţele specializate, în scopul deservirii eficiente a fiecărei aplicaţii. Componentele
hardware sunt conectate printr-o poartă de acces la reţeaua Clasă B, pentru semnalele
trimise de sensori (în scopuri de diagnosticare). În figura 9.8 este reprezentată această
soluţie sub forma unei reţele de arie locală (LAN – Local Area Network) clasă A, fără
adăugarea de noi componente la sistemul vehiculului.
Arhitectura multi-reţea integrează electronica în senzori, dispozitive de acţionare şi
motoare electrice, astfel încât acestea să poată comunica pe un singur fir, în interiorul
modulului care le comandă. Datorită electronicii suplimentare, se elimină instalarea şi
conectarea separată a modulului de multiplexare. Spre deosebire de strategia arhitecturii cu
reţea unică, se îmbunătăţeşte diagnosticarea senzorilor deoarece stările şi condiţiile acestora
pot fi raportate direct modulului de control.
LAN-ul Clasă A elimină necesitatea nodului pentru compartimentul motor şi a
modulului senzor două uşi, păstrând avantajul reducerii cablării la punctele de uzură (de
exemplu, balamalele uşilor). Arhitectura multiplexată din figura 9.8 simplifică sistemul din
figura 7.6, prin separarea reţelei Clasă B – orientată spre comunicaţiile între module, de
comunicaţiile Clasă A, înre sensori şi modulul de comandă.
LAN-ul Clasă A conectează în paralel toate componentele multiplexate. Cerinţele
porturilor de intrare/ieşire susţin conexiunile cu ramificaţii în T, care au un înalt grad de
automatizare în producţia arborilor de cabluri.
152
COMPARTIMENT MOTOR
Motor
Nivel Lichid de Nivel Lichid Lichid Capotă ştergătoare
lichid răcire frână ulei transmisie parbriz deschisă parbriz
MUX
MUX
MUX
MUX
MUX
MUX
MUX
M
MUX
MUX
Mâner portieră Mâner portieră
MUX
MUX
MUX
MUX
MUX
MUX
Magistrală
Masă
Grup de Centru de
instrument mesaje
e
MUX
MUX
M
Masă
Portieră închisă
MUX
MUX
Portieră închisă
Portieră deschisă
MUX
Portieră deschisă
MUX
Magistrală
Masă
Grup de Centru de
instrumente mesaje
Fig. 9.9 Vehicul bază cu legătură de date Clasă B, computer pentru caroserie, grup
de instrumente, centru de mesaje şi reţea Clasă A pentru senzori
Spre deosebire de această situaţie, un vehicul real are un număr redus de dispozitive
de acţionare şi câţiva senzori conectaţi la computerul pentru caroserie. Există aproximativ
şapte sensori conectaţi la fiecare dispozitiv de acţionare în sistemul unui vehicul real. În
exemplul considerat, au fost reprezentaţi mai mulţi sensori (14 sensori) şi un dispozitiv de
acţionare (motorul ştergătoarelor de parbriz), pentru a evidenţia posibilitaea de expandare a
sistemului multiplexat fără afectarea hardware-ului iniţial şi fără a modifica software-ul.
Principiile descrise anterior se pot aplica oricărui număr de dispozitive de acţionare
şi oricărui număr de senzori.
155
CAPITOLUL 10
10.1 Introducere
Primele două straturi (stratul obiect şi stratul transfer) conţin toate serviciile şi
funcţiile stratului de legături de date (data link) definite de modelul ISO/OSI. Astfel,
domeniul stratului obiect include:
- găsirea acelor mesaje care trebuie transmise
- luarea deciziei asupra mesajelor care, recepţionate de stratul transfer, trebuie utilizate;
- asigurarea unei interfeţe cu stratul aplicaţie – din punct de vedere hardware.
Stratul de transfer reprezintă miezul protocolului CAN. El prezintă mesajele
recepţionate stratului obiect şi acceptă mesajele care trebuie transmise de la stratul obiect.
Stratul de transfer este în principal protocolul de transfer, fiind responsabil de timingul de
bit şi sincronizarea clock-ului sistemului, formarea cadrelor de mesaj, realizarea arbitrării
pe magistrală, confirmare, detectarea şi semnalizarea erorilor şi limitarea defectelor.
În interiorul stratului de transfer se decide momentul în care magistrala este liberă
(starea de mers în gol), pentru declanşarea unei noi trasmisii de date, de la un dispozitiv
transmiţător de pe magistrală sau în care tocmai a început o recepţie de date de către un
dispozitiv receptor conectat la magistrală. De asemenea, anumite caracteristici de timing
pentru bit sunt privite ca o parte a stratului de transfer. Aceasta face parte din natura
stratului transfer şi nu poate fi modificat.
Stratul fizic se referă la transferul curent al biţilor între diferite dispozitive conectate
la magistrală, cu respectarea tuturor proprietăţilor electrice ale acestora. Stratul fizic
defineşte modul în care sunt transmise în realitate semnalele. În specificaţia protocolului
CAN nu se defineşte stratul fizic, pentru a permite optimizarea mediului de transmisie a
157
datelor şi implementarea nivelelor pentru aplicaţie.
Se impune ca, în interiorul unei reţele, stratul fizic să fie acelaşi pentru toate
dispozitivele transmiţătoare sau receptoare de date de pe magistrală. Spre deosebire de
stratul de transfer, în care nu se puteau face modificări, pentru stratul fizic există o mare
libertate în selectare, în funcţie de aplicaţia deservită de protocolul CAN, de tipul mesajelor
vehiculate pe magistrală şi de încărcarea acesteia.
Mesaje
Informaţia pe magistrală este transmisă în mesaje cu format fix, de lungimi diferite,
dar limitate. Când magistrala este liberă, orice dispozitiv conectat poate începe transmisia
unui mesaj nou.
Fluxul informaţiilor
Orice dispozitiv conectat la magistrala multiplexată nu foloseşte informaţiile
referitoare la configuraţia sistemului (de exemplu, adresele staţiilor). Aceasta are câteva
consecinţe importante, şi anume:
- Flexibilitatea sistemului: se pot adăuga dispozitive (noduri) la reţeaua CAN fără a fi
necesară nici o modificare software sau hardware a nodurilor din stratul aplicaţie;
- Fluxul mesajelor: conţinutul unui mesaj este precizat de un identificator. Acesta nu
indică destinaţia mesajului, dar descrie semnificaţia datelor astfel încât, dispozitivele
din reţea pot decide, prin filtrarea mesajului, dacă datele acţionează sau nu asupra lor;
- Multicast: Ca o consecinţă a filtrării mesajelor, mai multe dispozitive pot recepţiona şi
acţiona simultan asupra aceluiaşi mesaj, fără a influenţa funcţionarea celorlalte
dispozitive;
- Consistenţa datelor: Protocolul CAN garantează că un mesaj este acceptat simultan de
toate dispozitivele conectate la magistrală sau nu este acceptat de nici unul. În acest fel,
consistenţa sistemului este obţinută prin conceptele multicast şi manipularea erorilor.
Viteza de bit
Viteza protocolului CAN poate fi diferită în sisteme diferite. Totuşi, într-un sistem
de date, viteza de transfer pe bit este uniformă şi fixă.
Priorităţi
Identificatorul (ID) defineşte prioritatea statică a mesajului, pe toată durata
accesului la magistrală.
Structură multimaster
Când magistrala este liberă, orice dispozitiv conectat poate transmite un mesaj.
Dacă două sau mai multe unităţi încep să transmită mesaje în acelaşi timp, conflictul de
acces pe magistrală se rezolvă printr-o arbitrare la nivel de bit, folosind identificatorul.
158
Mecanismul arbitrării garantează faptul că nu se pierde nici o informaţie în timpul
transferului şi nici timp.
Dacă un cadru de date şi un cadru distanţă sunt iniţiate în acelaşi timp, cadrul de
date are întâietate faţă de cadrul distanţă. Pe durata arbitrării, fiecare unitate transmiţătoare
compară nivelul bitului transmis cu nivelul bitului care este pe magistrală. Dacă aceste
nivele sunt egale, unitatea continuă să transmită. Când se transmite un nivel “recesiv” şi pe
magistrală se observă un nivel “dominant”, înseamnă că unitatea a pierdut arbitrarea şi
trebuie să se retragă fără a mai transmite nici un bit.
Siguranţa în funcţionare
Pentru obţinerea siguranţei transferului de date pe magistrală, în fiecare dispozitiv
conectat sunt implementate măsuri severe pentru detectarea şi semnalarea defectelor,
precum şi procedee de autoverificare şi autodetecţie.
Detecţia erorilor
Pentru detecţia erorilor s-au luat următoarele măsuri:
- monitorizare (dispozitivele transmiţătoare compară nivelele de bit care se transmit, cu
nivele de bit aflate pe magistrală);
- verificarea redundanţei ciclice, cu ajutorul unui câmp CRC (cyclic redundancy check);
- folosirea tehnicii de codificare a datelor cu biţi de umplutură (bit stuffing), atunci când
secvenţele de date transferate pe magistrală conţin mai mulţi biţi “1” sau “0” alăturaţi.
Inserarea biţilor de umplutură se face prin tehnica de codificare Bit-Stuf NRZ.
- verificarea cadrului mesaj.
Limitarea defectelor
Dispozitivele conectate la magistrală pot face distincţie între perturbaţiile de scurtă
durată şi defectele permanente. Dispozitivele care sunt detectate defecte sunt deconectate în
mod automat de la magistrală, fără a fi afectată în vreun fel funcţionarea sistemului.
Conexiunile
La magistrala serială CAN se pot conecta un număr nelimitat de dispozitive dar
numărul lor este limitat de timpii de întârziere şi/sau de sarcinile electrice de pe magistrală.
159
Canal unic
Magistrala are un canal unic care transportă biţii de date. De la acesta se poate
obţine informaţia de date resincronizate. Modul în care se realizează implementarea
canalului nu este fixat prin specificaţiile de catalog, proiectantul având libertatea să aleagă
modul de implementare, în funcţie de aplicaţia deservită. De exemplu, poate alege:
- un singur fir (plus masă);
- două fire diferenţiale;
- fibre optice, etc.
Valorile de bit
Magistrala CAN poate avea pentru bit două valori logice complementare: “bit
dominant” şi “bit recesiv”. În cazul transmisiei simultane a biţilor ”dominant” şi “recesiv”,
valoarea rezultată pe magistrală este un “bit dominant”. De exemplu, în cazul implementării
de tip ŞI cablat, nivelul “dominant” este reprezentat de un “0” logic iar nivelul “recesiv”
este reprezentat de un “1” logic.
Stările fizice (de exemplu tensiune, lumină) care reprezintă nivelele logice, nu sunt
precizate de specificaţia de catalog.
Confirmare
Dispozitivele receptoare de pe magistrală verifică consistenţa mesajelor recepţionate
şi, confirmă un mesaj consistent sau semnalează un mesaj inconsistent.
Un cadru de date conţine 7 câmpuri diferite: start cadru, câmp de abitrare, câmp de
date, câmp verifcare redundanţă ciclică (CRC), câmp de confirmare (ACK) şi sfârşit cadru.
În cazul în care nu se transmit date, câmpul de date are lungimea zero. Structura
unui cadru de date este prezentată în figura 10.1.
spaţiu spaţiu
intercadre CADRU DATE intercadre
sau
cadru
start cadru suprasarcină
câmp arbitrare
câmp control
câmp date
câmp CRC
câmp confirmare (ACK)
sfârşit cadru
identificator
bit RTR
Pentru formatul standard, lungimea identificatorului (ID) este de 11 biţi. Aceşti biţi
sunt transmişi în ordinea ID-10 până la ID-0, cel mai puţin semnificativ bit fiind ID-0.
Primii 7 cei mai semnificativi biţi (ID-10 … ID-4) nu trebuie să fie toţi “recesivi”.
Bitul RTR - este bit de cerere transmisie la distanţă "Remote Transmission Request".
Câmpul de control (CRC) are şase biţi (figura 10.3). El include cadrul lungime date
şi 2 biţi rezervaţi pentru extinderi ulterioare ale câmpului. Aceşti biţi rezervaţi trebuie
transmişi “dominanţi”. Dispozitivele receptoare de pe magistrala CAN acceptă biţii
dominanţi şi recesivi în toate combinaţiile.
161
CÂMP
câmp CONTROL câmp
arbitrare date
sau
r1 r0 DCL3 DCL2 DCL1 DCL0 câmp CRC
biţi
rezervaţ cod lungime date
i
Fig. 10.3 Câmp de control
Codul lungime date indică numărul de bytes din câmpul de date. Este transmis în
interiorul câmpului de control şi conţine 4 biţi, notaţi DCL3, DCL2, DCL1, DCL0.
Într-un cadru de date se pot transmite {0, 1, 2, 3, 4, 5, 6, 7 sau 8} bytes de date, alte
valori nefiind permise. Codificarea numărului bytesilor de date în codul lungime date este
precizată în tabelul 10.1, unde s-au folosit prescurtările: d – pentru “bit dominant” şi r –
pentru “bit recesiv”.
Tabelul 10.1
Număr bytes de
DCL3 DCL2 DCL1 DCL0
date
0 d d d d
1 d d d r
2 d d r d
3 d d r r
4 d r d d
5 d r d r
6 d r r d
7 d r r r
8 r d d d
date câmp
CÂMP CRC
sau ACK
câmp de
control
Secvenţa CRC are rolul de verificare a cadrului şi derivă dintr-un cod cu redundanţă
ciclică (Cyclic Redundancy Code), recomandat pentru cadre ce numără mai puţin de 127
biţi (cod BCH). Pentru calculul CRC, polinomul care trebuie împărţit are coeficienţii daţi
162
de curentul de biţi - din care s-au scos biţii de umplutură - constând din: start cadru, câmp
de arbitrare, câmp de control, câmp de date (dacă este prezent), pentru cei 15 coeficienţi de
cel mai scăzut ordin, valoarea fiind 0. Acest polinom este împărţit (coeficienţii sunt
calculaţi modulo 2) la polinomul generator, care este de forma:
După transmisia / recepţia ultimului bit din câmpul de date, CRC_RG conţine
secvenţa CRC, urmată de delimitatorul CRC, care constă dintr-un singur bit de tip recesiv.
Câmpul de confirmare (ACK) are o lungime de 2 biţi şi conţine fanta ACK şi
delimitatorul ACK (figura 10.5).
câmp sfârşit
CÂMP ACK
CRC cadru
fantă ACK
delimitator ACK
163
10.5.1.2 Cadrul distanţă
sau
cadru
start cadru suprasarcină
câmp arbitrare
câmp control
câmp CRC
câmp confirmare (ACK)
sfârşit cadru
Polaritatea bitului RTR indică dacă un cadru transmis este un câmp de date (bitul
RTR este de tip dominant) sau un cadru distanţă (când bitul RTR este de tip recesiv).
Cadrul eroare conţine două câmpuri diferite. Primul câmp este dat de suprapunerea
flagurilor eroare cu care contribuie diferitele dispozitive conectate la magistrala CAN. Cel
de-al doilea câmp care urmează este delimitatorul de eroare (figura 10.7).
cadru CADRU
EROARE spaţiu
date intercadre
flag eroare sau cadru
suprasarcină
suprapunere flaguri
eroare
delimitator eroare
Pentru a termina în mod corect cadrul eroare, un dispozitiv de tip “eroare pasivă”
are nevoie ca magistrala să fie la modul de mers în gol pentru cel puţin 3 perioade de bit
(dacă există o eroare locală la un receptor “eroare pasivă”). Ca urmare, magistrala nu
trebuie să fie încărcată la capacitatea maximă de 100%.
Există două forme ale flagului eroare: un flag eroare activă şi un flag eroare pasivă.
164
1. Flagul eroare activă conţine şase biţi dominanţi consecutivi.
2. Flagul eroare pasivă conţine şase biţi recesivi, dacă nu este suprascris cu biţi dominanţi
de la alte dispozitive de pe magistrala CAN.
Un dispozitiv “eroare activă” care detectează o condiţie de eroare semnalizează
aceasta prin transmisia unui flag eroare activă. Flagurile eroare încalcă legea bitului de
umplutură (bit stuffing) aplicată tuturor câmpurilor de la start cadru până la delimitatorul
CRC sau distruge forma fixată a câmpurilor de confirmare (ACK) sau sfârşit cadru. De
aceea, toate celelalte dispozitive vor detecta o condiţie de eroare şi la rândul lor încep
transmisia unui flag eroare. Astfel, secvenţa de biţi dominanţi, de pe magistrală, rezultă din
suprapunerea diferitelor flaguri eroare transmise de dispozitivele individuale. Lungimea
totală a acestei secvenţe variază între minimum 6 şi maximum 12 biţi.
Un dispozitiv “eroare pasivă” care detectează o condiţie de eroare, încearcă să
semnaleze aceasta prin transmisia unui flag eroare pasivă. Dispozitivul eroare pasivă
aşteaptă şase biţi consecutivi de polaritate identică, începând cu startul flagului eroare
pasivă. Acesta este completat atunci când s-au detectat aceşti 6 biţi identici.
Delimitatorul eroare conţine opt biţi recesivi.
După transmiterea unui flag eroare, fiecare dispozitiv de pe magistrală transmite biţi
recesivi şi supraveghează magistrala până când detectează un bit recesiv. După aceea
începe transmiterea a încă 7 biţi recesivi.
CADRU
sfârşit cadru spaţiu
SUPRASARCINĂ
sau intercadre
intermisiune
mers în gol magistrală
166
SPAŢIU
cadru INTERCADRE cadru
intermisiune
suspendare transmisie
mers în gol magistrală
Momentul în care un mesaj este preluat ca fiind valabil, diferă pentru dispozitivul
transmiţător şi cele receptoare.
Mesajul este considerat valabil pentru dispozitivul transmiţător, dacă nu există erori
până la sfârşit cadru. Dacă mesajul a fost afectat (s-au înregistrat erori, a fost pierdut, etc.)
retransmisia va urma automat şi în concordanţă cu priorităţile stabilite prin protocolul CAN.
Pentru ca mesajul să poată concura la accesul la magistrală cu alte mesaje, retransmisia
trebuie declanşată de îndată ce magistrala este la modul de mers în gol.
Mesajul este valabil pentru dispozitivele receptoare, dacă nu sunt semnalate erori
până la penultimul bit din sfârşit cadru.
Segmentele cadrului (start cadru, câmp de arbitrare, câmp de control, câmp de date
şi secvenţă CRC) sunt codificate prin metoda biţilor de umplutură. Când un transmiţător
detectează 5 biţi consecutivi de valoare identică în curentul de bit, el introduce în mod
automat un bit complementar în curentul de biţi iniţial. Câmpurile de biţi rămase din cadrul
de date sau cadrul distanţă (delimitator CRC, câmp ACK şi sfârşit cadru) au format fix şi nu
sunt umplute cu biţi.
167
Cadrul eroare şi cadrul suprasarcină au de asemenea de formă fixată şi nu se
codifică prin metoda biţilor de umplutură.
Curentul de biţi dintr-un mesaj este codificat prin metoda NRZ (Non-Return-to-
Zero) adică, pe durata totală de bit, nivelul de bit generat este fie dominant, fie recesiv.
Orice dispozitiv de pe magistrala CAN trebuie să fie în una din următoarele stări:
“eroare activă”;
“eroare pasivă”;
“magistrală deconectată”.
Un dispozitiv eroare activă poate participa la comunicaţiile de pe magistrala CAN
şi transmite un flag eroare activă de îndată ce a detectat o eroare.
168
Un dispozitiv eroare pasivă nu trebuie să transmită un flag eroare activă. El
participă la comunicţiile pe magistrala CAN dar, când s-a detectat o eroare, se transmite
numai un flag eroare pasivă. Astfel, după o transmisie, un dispozitiv eroare pasivă va
aştepta înainte de a iniţia o nouă transmisie (suspendare transmisie).
Un dispozitiv care a fost deconectat de la magistrala CAN nu are permisiunea să
influenţeze în vreun fel magistrala (de exemplu, driverele de ieşire deconectate). Pentru
limitarea defectelor sunt implementate două conturi în fiecare unitate de magistrală:
- Cont erori transmisie şi
- Cont erori recepţie.
Aceste conturi sunt modificate conform următoarelor reguli:
1. Când un dispozitiv receptor detectează o eroare, contul erori recepţie este incrementat
cu 1, excepţie fiind situaţia în care eroarea detectată a fost o eroare de bit pe durata
transmiterii unui flag eroare activă sau flag suprasarcină.
2. Când un dispozitiv receptor detectează un bit dominant ca prim bit după transmiterea
unui flag eroare, contul erori recepţie este crescut cu 8.
3. Când un dispozitiv transmiţător transmite un flag eroare, contul erori transmisie este
crescut cu 8.
Excepţia 1: Dacă dispozitivul transmiţător este de tip eroare pasivă şi detectează o
eroare de confirmare din cauza nedetectării unui ACK dominant şi nu detectează un bit
dominant în timp ce transmite propriul flag eroare pasivă.
Excepţia 2: Dacă dispozitivul transmiţător trransmite un flag eroare datorat unei erori de
umplere produsă pe durata arbitrării, cum bitul de umplutură este plasat înaintea bitului
RTR şi ar trebui să fie recesiv, a fost transmis ca recesiv, dar observat ca dominant.
În excepţiile 1 şi 2, contul erori transmisie nu se modifică.
4. Dacă un dispozitiv transmiţător detectează o eroare de bit în timp ce transmite un flag
eroare activă sau un flag suprasarcină, contul erori transmisie este crescut cu 8.
5. Dacă un dispozitiv receptor detectează o eroae de bit în timp ce transmite un flag eroare
activă sau un flag suprasarcină, contul eroare recepţie este crescut cu 8.
6. Orice dispozitiv de pe magistrala CAN tolerează până la 7 biţi consecutivi dominanţi,
după transmiterea unui flag eroare activă, flag eroare pasivă sau flag suprasarcină. După
detectarea celui de-al 14-lea bit dominant consecutiv (în cazul unui flag eroare activă
sau un flag suprasarcină) sau după detectarea celui de-al 8-lea bit dominant consecutiv
urmând după un flag eroare pasivă, fiecare dispozitiv transmiţător de pe magistrala
CAN creşte propriul cont erori transmisie cu 8 şi fiecare dispozitiv receptor creşte
propriul cont erori recepţie cu 8.
7. După transmisia cu succes a unui mesaj transmisie fără eroare până la fanta ACK şi
ransmiterea cu succes a bitului ACK), contul erorilor de transmisie este decrementat cu
1, mai puţin pentru situaţia în care este deja 0.
8. După recepţia cu succes a unui mesaj (recepţie fără eroare până la fanta ACK şi
transmiterea cu succes a bitului ACK), contul erorilor de recepţie este scăzut cu 1, dacă
acesta era între 1 şi 127. Dacă valoarea contului era 0, atunci rămâne 0, iar dacă
valoarea lui a fost mai mare de 127, el va fi setat la o valoare între 119 şi 127.
9. Un dispozitiv de pe magistrala CAN este de tip eroare pasivă atunci când contul erori
de transmisie egalează sau depăşeşte valoarea 128. O condiţie de eroare care lasă un
dispozitiv să devină eroare pasivă, îl determină să transmită un flag eroare pasivă.
10. Un dispozitiv de pe magistrala CAN este deconectat atunci când contul erorilor de
transmisie este mai mare sau egal cu 256.
11. Un dispozitiv eroare pasivă devine eroare activă din nou, atunci când contul erori de
transmisie şi contul erori de recepţie sunt mai mici sau egale cu 127.
169
12. Un dispozitiv care a fost deconectat de la magistrala CAN poate deveni eroare activă
(nu mai este deconectat) cu ambele conturi ale sale setate la 0 după ce au fost observate
pe magistrală 128 de evenimente de 11 biţi recesivi.
punct de eşantionare
Cuanta de timp = m * Cuanta de timp minimă, unde m = valoarea din circ. de prescalare.
Numărul cuantelor de timp într-un timp de bit este programat cel puţin de la 8 la 25.
Sincronizarea:
După o sincronizare hard, timpul intern de bit este restartat cu SYNC_SEG. Astfel,
sincroniarea hard forţează plasarea frontului care a provocat-o în interiorul segmentului de
sincronizare al timpului de bit restartat.
Lungime salt resincronizare: Ca rezultat al resincronizării, PHASE_SEG1 poate fi
lungit sau PHASE_SEG2 poate fi scurtat. Lungirea sau scurtarea segmentelor buffer fază
are ca limită superioară lungimea saltului de resincronizare, valoare programată între 1 şi
min (4, PHASE_SEG1).
Informaţiile de clock derivă din tranziţiile de la o valoare de bit la alta. Proprietatea
ca numai un număr fix maxim de biţi succesivi să aibă aceeaşi valoare oferă posibilitatea
resincronizării unei unităţi de magistrală cu curentul de bit, pe durata unui cadru. Lungimea
maximă între două tranziţii folosite pentru resincronizare este de 29 timpi de bit.
Eroarea de fază pentru un front depinde de poziţia frontului raportată la
SYNC_SEG, măsurată în cuante de timp. Semnul erorii de fază este definit astfel:
e = 0 dacă frontul este plasat în interiorul SYNC_SEG;
e > 0 dacă frontul este plasat înaintea punctului de eşantionare;
e < 0 dacă frontul este plasat după punctul de eşantionare a bitului precedent.
Efectul unei resincronizări este acelaşi cu al sincronizării hard, când magnitudinea
erorii de fază a frontului care provoacă resincronizarea este mai mică sau egală cu valoarea
programată a lungimii saltului de resincronizare. Când dimensiunea erorii de fază este mai
mare decât lungimea saltului de resincronizare,
şi dacă eroarea de fază este pozitivă, atunci PHASE_SEG1 este lungit cu o cantitate
egală cu lungimea saltului de resincronizare
şi dacă eroarea de fază este negativă, atunci PHASE_SEG2 este scurtat cu o cantitate
egală cu lungimea saltului de resincronizare.
Reguli de resincronizare
Sincronizarea hard şi resincronizarea sunt cele două forme ale sincronizării şi se
supun următoarelor reguli:
1. În interiorul unui timp de bit este permisă o singură sincronizare.
2. O tranziţie poate fi folosită pentru sincronizare doar dacă valoarea detectată la punctul
de eşantionare anterior (valoarea anterioară citită de pe magistrală) diferă de valoarea
magistralei imediat după front.
3. Sincronizarea hard este realizată ori de câte ori există un front de la recesiv la dominant,
pe durata cât magistrala este la mers în gol.
4. Toate celelalte fronturi de la recesiv la dominant (şi opţional de la dominant la recesiv
în cazul vitezelor de bit scăzute) îndeplinind regulile 1 şi 2, se folosesc pentru
resincronizare, cu excepţia situaţiei când un dispozitiv care transmite un bit dominant
nu realizează o resincronizare ca rezultat al unui frront de la recesiv la dominant cu o
eroare de fază pozitivă, dacă numai fronturile de la recesiv la dominant sunt folosite
pentru rersincronizare.
171
10.11 Creşterea toleranţei oscilatorului CAN
172
CAPITOLUL 11
PROTOCOLUL CANopen
173
De la versiunea 4.01, specificaţia CANopen CiA DS-301 include şi precizarea
reţelei de aplicaţie.
Reţelele CANopen sunt folosite în multe câmpuri de aplicaţii, alături de sistemele
complexe de control. Sunt instalate cu succes în vehicule, nave, echipamente medicale,
sisteme de informare a pasagerilor, mecanisme de jocuri electronice, automate pentru cafea
sau în fabrici, la automatizarea unor procese de producţie şi în construcţii. În sistemele de
control electronic pentru lifturi gasim, de asemenea, protocolul CANopen ca şi în
congelatoarele din supermarket-uri sau în instalaţiile de încălzire pentru plante. CANopen a
fost ales şi de companiile care realizează sisteme de control electronic pentru uşi,
locomotive şi camioane.
Power / Reset
Comunicaţii
Nu
Bit 0
Obiect Master NMT ? Intră în
1F80h modul
Da SLAVE
Da
LSS cerut ?
Execută LSS
Nu
Da
Obiect Bit 4 Păstrează noduri
1F81h cu biţi funcţionali
setati ?
Nu
După cum se obseră şi din figură., la început, toate nodurile slave sunt resetate,
aceasta garantând că ele se află într-o stare bine definită. Următorul pas este operaţia boot-
up pentru toate dispozitivele slave. Operaţia poate fi făcută secvenţial sau în paralel, însă
procedeul secvenţial cere mai puţin efort managerial.
176
A
Începe procesul
de bootare
slave-uri Obiect
1F81h
Bit 0,3
Opreste procedura Nu
Toate slave-urile
de bootare mandatare bootate? Obiect
reţea 1F80h
Da Bit 2
Nu
Intru singur Intru operational
operational automat de la aplicatia
?
Nu
primita?
Da
Da
Intru singur
operational ?
Bit 1,3
Porneste Obiect
Nu slave-urile cu “NMT 1F80h
start toate nodurile”
Da
Protocolul CANopen include mecanisme care pot detecta nodurile lipsă din reţea,
realizează controlul erorilor şi a mesajelor de urgenţă.
Sunt definite două mecanisme folosite pentru detecţia nodurilor deconectate.
Serviciile pentru controlul erorilor sunt asigurate prin transmiterea unor mesaje CAN
specifice. Mesajul de control eroare, folosit de ambele mecanisme ale protocolului, are un
identificator CAN neschimbat, lungimea de un byte şi conţine codul stării NMT curente.
a) Mecanismul de supraveghere a funcţionării este bazat pe cadre distanţă transmise
periodic de masterul NMT. Slave NMT corespunzător răspunde acestui cadru distanţă cu un
mesaj de control eroare (supraveghere nod).
Dacă masterul NMT nu cere mesajul de control eroare într-un timp specificat
(lifetime), atunci slave NMT presupune că masterul este deconectat (life guarding) şi va
indica un eveniment supraveghere funcţionare (life guarding). În cazul în care slave NMT
nu răspunde cererii la distanţă, masterul NMT va indica un eveniment supraveghere nod
(node guarding).
Timpul de supraveghere (100Ch) reprezintă perioada de transmisie a mesajului de
control eroare, iar timpul de viaţă (funcţionare) (100Dh) specifică timpul în care este
asigurată funcţionarea corectă. Timpul de supraveghere şi timpul de funcţionare pot fi
diferiţi pentru fiecare slave NMT. Mesajul control eroare corespunzător conţine un bit-
toggle, care indică dacă aplicaţia (microcontrolerul) funcţionează încă.
b) Clock-ul central al sistemului (Heartbeat) este cel de-al doilea mecanism al
protocolului. Acesta foloseşte acelaşi mesaj control eroare, transmis periodic de slave-ul
NMT. Unul sau mai mulţi consumatori ai clock-ului central primesc mesajul şi indică
aceasta aplicaţiei. Perioada de transmisie reprezintă timpul de producere a clock-ului central
(117h). Timpul consumatorului de clock central (1016h) reprezintă timpul limită de
aşteptare pentru un mesaj control eroare clock central. Dacă acest timp expiră, atunci stiva
protocolului CANopen (evenimentul clock central) informează aplicaţia.
Nici un dispozitiv conectat în reţea nu poate folosi ambele mecanisme de control al
erorilor în acelaşi timp. Dacă timpul de producere a clock-ului central este diferit de zero,
atunci înseamnă că mecanismul heartbeat şi-a îndeplinit rolul cu succes.
Pentru aplicaţii noi, se recomandă folosirea celui de-al doilea mecanism.
178
11.5.2 Erori interne ale dispozitivelor
Un dispozitiv poate fi în una din cele două stări de urgenţă, după cum sunt transmise
mesajele de urgenţă în tranziţie. Trebuie menţionat că nu este permisă cererea unui mesaj
de urgenţă de cadrele distanţă CAN. Legăturile dintre stările de urgenţă şi stările NMT sunt
definite în profilul fiecărui dispozitiv.
După resetarea pornirii, dispozitivul intră în starea fără erori dacă nu s-a detectat
nici o eroare. Când dispozitivul detectează o eroare internă, el intră automat în starea de
eroare şi va transmite un mesaj eroare care are codul eroare înscris în registrul de erori.
Codul eroare este de asemenea încărcat şi în locaţia câmpului eroare predefinit (1003h).
Dacă, din anumite motive, dispare una din cauzele care au provocat eroarea (dar nu
toate cauzele), atunci se transmite un mesaj eroare care conţine codul eroare 0000 (Reset
eroare) împreună cu erorile rămase în registrul eroare şi în câmpul eroare specificat de
producător. Când se produce o nouă eroare la dispozitiv, acesta rămâne în starea eroare şi
transmite un mesaj de urgenţă şi codul eroare corespunzător. Noul cod eroare este înărcat în
vârful stivei care conţine codurile eroare (1003h). Producătorul garantează că toate codurile
eroare sunt aranjate într-o secvenţă temporală (cea mai veche eroare la cel mai înalt sub-
index). Când toate erorile au fost corectate, dispozitivul intră în starea fără erori şi va
transmite o urgenţă de tip ‘cod eroare 'reset eroare/nici o eroare'.
179
Eveniment clock central cu stare permisă
Erorile severe ale dispozitivelor pot fi cauzate atât de factori externi cât şi de
defectele interne ale dispozitivelor. Este important să se cunoască modul de comportare al
erorilor, deoaree ele pot fi corectate prin mecanismele adecvate şi se pot diminua efectele
nedorite ale acestor erori în funcţionaea reţelei.
Maparea obiectelor de aplicaţie face parte prin configurarea sistemului şi este foarte
importantă pentru optimizarea transferurilor de date pe magistrală, aceasta devenind o
cerinţă obligatorie în cazul datelor de proces de lungimi diferite şi în pachete.
Obiectele mapate sunt descrise cu ajutorul unor parametri de comunicaţie, variabili
în funcţie de natura obietului sau de tipul de aplicaţie. Setul de parametri variabili conţine
pentru fiecare dată de proces mapată adresa celui de-al 32-lea bit (un index de 24 biţi şi un
sub-index de 8 biţi) al dicţionarului de obiecte şi lungimea datei respective. Un pachet
(mesaj) poate conţine până la 64 obiecte cu lungimea de 1 bit. Maparea dinamică permite
optimizarea pachetelor de obiecte. Proiectantul trebuie să realizeze maparea astfel încât un
mesaj să conţină cât mai multe date de proces, în scopul minimizării încărcării magistralei.
Există şi o contradicţie, şi anume, nu are sens maparea datelor de proces transmise
foarte des în obiecte de aplicaţie care se schimbă foarte rar.
Fiecare dispozitiv compatibil CANopen poate susţine doar 512 obiecte de aplicaţie
transmise şi 512 obiecte de aplicaţie recepţionate. Dacă numărul dispozitielor conectate în
reţeaua CANopen nu este suficient sau nu mai sunt disponibli idntificatori CAN, atunci se
realizează multiplexarea obiectelor de aplicaţie. M-PDO conţine în primii 4 bytes indexul
de 16 biţi, indexul de 8 biţi precum şi câţia biţi de control, deci sunt disponibili doar 4 bytes
pentru transmiterea datelor de proces.
Centrul unui dispozitiv CANopen este dicţionarul de obiecte care, pune la dispoziţia
utilizatorului toate obiectele aplicaţiei ce urmează să fie transferate în sistemul multiplexat,
prin reţeaua CAN. Pentru adresarea oricărui obiect din dicţionar, se foloseşte un index de
16 biţi şi un sub-index de 8 biţi, independenţi de idenfificatorii CAN (tabel 9.1).
Se observă că indexul 0000 (hex) nu este utilizat. Dicţionarul de obiecte are de
asemenea adrese de index rezervate pentru diverse utilizări viitoare: aceste adrese sunt de la
00A0 - 0FFF şi A000 – FFFF.
Obiectele de aplicaţie sunt structurate în funcţie de tipul datelor de proces pe care le
conţin (statice sau complexe) şi de profilul de utilizate.
Datele statice de la adresele de index 0001 – 001F conţin definiţiile unor tipuri de
date standard, de exemplu: date standard din algebra Booleeană, date standard întregi
(integer), puncte de referinţă (temperatură, presiune, punct de plutire), raţia unui şir
algebric, etc. Aceste date sunt incluse în dicţionar doar pentru referinţă, ele nu pot fi citite
sau scrise.
Datele complexe de la adresele 0020-003F sunt structuri pre-definite, formate din
date standard şi sunt comune pentru toate dispozitivele conectate în reţeaua multiplexată a
sistemului.
Datele complexe specifice producătorului, de la adresele 0040-005F, sunt structuri
formate din date standard dar sunt speifice unui anumit dispozitiv particular.
Datele statice sau complexe care se găsesc în dicţionar la adresele de index 0060-
007F şi 0080-009F sunt specifice unui anumit tip de dispozitiv care poate fi conectat
adiţional în reţeaua sistemului. Dacă este configurat, un dispozitiv din sistem poate furniza
opţional structura tipurilor de date complexe pe care le conţine, împreună cu accesul la
citire la indexul corespunzător. Sub-indexul 0 indică apoi numărul de intrări la acest index,
iar următorii sub-indici conţin tipul de date codate în format Unsigned16t.
184
Aria profilului de comunicaţie are alocate adresele de index 1000 - 1FFF în
dicţionarul de obiecte şi oferă informaţii referitoare la parametrii specifici de comunicaţie
pentru reţeaua multiplexată CAN. Aceste intrări de index sunt comune pentru toate
dispozitivele conectate în reţeaua sistemului.
Dicţionarul de obiecte face parte din trăsăturile opţionale ale dispozitivului, ceea ce
înseamnă că producătorul nu trebuie să asigure o anume funcţionalitate extinsă pentru
dispozitivele sale. Dacă doreşte însă acest lucru, trebuie să pre-definească dispozitivul sau
clasa de dispozitive. Aria de profile specifice pentru producător (adresele de index 2000-
5FFF) este folosită pentru descrierea funcţiilor specifice.
Aria profilului dispozitivului standard (adrese de index 6000-9FFF) conţine toate
obiectele de aplicaţie care pot fi citite sau scrise prin reţea de o anumită clasă de
dispozitive. Aria descrie parametrii dispozitivului şi funcţionalitatea sa. În acest mod, pot fi
descrise până la 8 dispozitive diferite. Într-un astfel de caz, dispozitivele sunt considerate
module ale unui dispozitiv multiplu denominat (MDM – Multiple Device Module). MDM-
urile sunt formate din cel mult 8 segmente de profil de dispozitiv. Folosind această
caracteristică, se pot construi dispozitive cu funcţionalitate multiplă. Intrările diferite ale
profilului dispozitivului sunt schimbate cu 800h.
În tabelul 9.2 sunt date adresele de intrare pentru segmentele de dispozitive din
MDM. Proiectantul poate astfel accesa intrarea într-un anumit segment de dispozitiv pentru
efectuarea unui transfer de date pe magistrală.
Accesul la citire şi scriere pentru obiectele din dicţionarul de obiecte al unui anumit
dispozitiv este asigurat prin serviciile SDO (Service Data Objects). Deoarece intrările în
dicţionar pot conţine date de mărimi arbitrare şi tipuri diferite, serviciile SDO sunt de multe
ori folosite pentru transferul seturilor de date mutiple de la un client către server şi invers.
Fiecare set de date multiple conţine un bloc de date de mărime arbitrară şi tipuri diferite
(statice, complexe, etc.).
185
Clientul poate verifica ce set de date urmează să fie transferat, accesând
multiplexorul (indexul şi sub-indexul dicţionarului de obiecte).
Conţinutul setului de date este definit prin dicţionarul de obiecte. Uzual, serviciile
SDO transferă seturile de date multiple ca o secvenţă de segmente. Înainte de a transfera
segmentele trebuie să existe o fază de iniţializare, în care clientul şi serverul pregătesc
transferul. Lungimea maximă a setului de date care poate fi transfeat în sistemul multiplexat
este de până la patru bytes în timpul fazei de iniţializare. Acest mecanism de transfer este
numit transfer expediat.
Opţional, serviciile SDO pot transfera o secvenţă de blocuri de date în care fiecare
bloc are cel mult 127 segmente. Fiecare secvenţă are un număr de identificare iar transferul
blocului de date este mai rapid decât transferul fragmentat al unui set mare de date.
Pentru evitarea încărcării maxime a reţelei de comunicaţie, proiectantul trebuie să
aleagă mecanismul prin care se va efectua transferul de date. De multe ori, în transferul de
blocuri de date este posibil ca mărimea setului de date să nu justifice folosirea unui transfer
în bloc, datorită depăşirii protocolului implicat. În aceste cazuri, trebuie implementat un
mecanism de susţinere a fragmentării transferului expediat în faza de iniţializare.
Presupunănd o mărime minimă pentru setul de date pentru care un transfer în bloc este prea
mare, celelalte tipuri de transfer depind de parametrii variabili pe care îi stabileşte clientul.
Pentru toate tipurile de transfer, clientul este cel care stabileşte condiţiile de realizare a
transferului de date.
Deţinătorul dicţionarului de obiecte accesat este serverul din SDO. Fie clientul, fie
serverul poate abandona transferul de date prin serviciul SDO, dacă decide că s-au depăşit
parametrii impuşi în faza de iniţializare a sistemului.
Printr-un SDO se poate stabili un canal de comunicaţie de tip pereche-pereche între
două dispozitive ale reţelei CANopen.
Eficienţa unui serviciu SDO este dată de raportul dintre bytesii folosiţi şi bytesii
transmişi. Deoarece, prin serviciile SDO toate mesajele sunt transmise cu un câmp de date
de 8 bytes, eficienţa uni transfer SDO expediat va fi de 0.25, pentru un obiect de 4 bytes şi
doar 0.0625 pentru un obiect de 1 byte. Utilizarea serviciilor SDO pentru transferuri
fragmentate şi a transferurilor în bloc sporeşte eficienţa acestora.
Dacă trebuie transferat un set de date de mărime mare, se preferă transferul în bloc
SDO deoaece este mai rapid decât transferul fragmentat SDO.
Citirea datelor la recepţie se face prin descărcarea blocurilor de date transfeate prin
SDO. În ultimul bloc este transmisă opţional de o secvenţă CRC de 16 biţi, pentru
verificarea corectitudinii datelor.
186
CAPITOLUL 12
Pupitru de comandă
NT
CP IO
U
RETEA
Blocuri
IO
Blocuri
finale Blocuri finale Blocuri finale
188
Panou de
comandǎ
panou
I/O I/O
distribuit distribuite
Magistralǎ e
CAN
Camera de Bloc final Bloc final Bloc final
control
Fig. 12.2 Unitate centrala CPU cu module I/O conectate la magistrala CAN
189
Panou comandǎ
Operaţii şi monitorizare
Panou
Operaţiuni şi monitorizare
Panou
Reţea Reţea
distribuitǎ distribuitǎ
Magistralǎ
CAN
Bloc final
Bloc final Bloc final
Magistralǎ Funcţie de
CAN internǎ poziţionare
+24V Motor
Magistralǎ
CAN
externǎ Sensor
CPU de +24V Motor
organizare
+24V Motor
192