Documente Academic
Documente Profesional
Documente Cultură
Introducere
chache ROM
µP RAM
DMA
Nucleul sistemului
RS232 HDD
USB
Placa Video
Placa de retea
etc…..
Porturi de Intrare/Ieşire
3
➢ Ultima comandă dintr-un set de comenzi care gestionează funcționalitatea de
bază a unui sistem cu microcontroler. Deși nu are SO, acesta permite operații
destul de primitive, cum ar fi încărcarea programului în memorie, lansarea în
execuție a programului, etc.
După cum se vede din Fig.1.2, după încărcarea sistemului de operare în RAM mai
rămâne o zonă liberă folosită pentru programele utilizator. Când spunem că extragem
octeţi din memoria RAM practic procesorul preia octeţi şi îi copiază în registre
interne.
adrese octeti
0
1 BIOS ROM
2
3
μP
SO
M.cache
e RAM Memoria
CS-seg.cod
Prg. Incarcat in
Programe internă
DS-seg.date utilizator
memorie care
este rulat SS-seg.stiva
ES-seg.date
Mem. HDD
Virtuală
HDD2
CD/DVD Memoria
Externă
Flash memory-stick
OBS: Procesorul poate executa direct doar instrucțiuni din memoria RAM(…adică
memoria internă, mai precis memoria din nucleul sistemului), ceea ce înseamnă că
tot blocul de program ce se execută la un moment de timp trebuie să fie în circuitul
de memorie RAM.
4
Dacă registrele interne ale unui processor sunt pe 8 biţi atunci procesorul
poatre număra/adresa până la 256 de octeţi(28).
Dacă registrele interne ale procesorului sunt pe 16 biţi procesorul poate
număra/adresa 64535 octeţi = 64 KO (216 Octeţi=64Kilo Octeţi)
Dacă registrele sunt pe 32 de biţi procesorul poate accesa 4GO(232
Octeţi=4Giga Octeţi).
Datorită faptului că procesoarele actuale au registrele chiar de la 64 de biţi în
sus, pot accesa/adresa memorie foarte mare, de ordinul TeraOcteţi. Totuși, deoarece
circuitele uzuale de memorie RAM sunt abia în jurul valorii de 4 GO, s-a încercat
implementarea unui mecanism în care procesorul să îşi folosească această capacitate.
Acest mecanism este implementat ca memorie virtuală ce este realizată fizic pe o
zonă de pe harddisk (dispozitiv care nu face parte din memoria internă), în felul
acesta procesorul fiind “păcălit” că ar avea la dispoziție o zonă de memorie mult mai
mare, ca memorie internă. Cum orice program ce rulează trebuie obligatoriu să fie
încărcat în totalitate în memoria internă, se crează posibilitatea de a lansa în execuție
programe mari, sau chiar mai multe programe simultan, ce ocupă o zonă de memorie
mai mare decât capacitatea circuitului fizic RAM. Mai mult, se știe că procesorul
rulează efectiv doar cod din circuitul fizic de memorie RAM. Astfel, pentru a se
putea executa efectiv cod, Sistemul de Operare (SO) aduce în mod dinamic din
memoria virtuală (HDD) în memoria RAM segmente de cod independente, sau chiar
pagini independente (de dimensiune 4 KO). Gestiunea memorie virtuale și comutarea
a ceea ce se execută în memoria RAM, este realizată de către SO.
Datorită acestei “pacăleli” cu memoria virtuală, pot fi rulate de către processor
la un anumit timp mult mai multe programe ce depăşesc ca dimensiune memoria
fizică RAM şi sunt stocate în memoria virtuală (deci pe HDD). Totusi, in realitate,
procesorul nu rulează decât instructiuni care sunt stocate în afara memoriei RAM, şi
astfel, deși există programe lansate in execuție și stocate în memoria virtuală (deci pe
HDD), pentru a fi rulate, acestea trebuie transferate în memoria RAM.
Bineânțeles că aceste transferuri ocupă timp, dar este preţul plătit pentru a avea
lansate in execuție mai multe programe și totodată programe de dimensiune mare.
Segmentarea memoriei (impartirea programului in zone distincte) pentru cod si
pentru date, a mai fost încă odata imparțită in zone mai mici (pagini) de dimensiuni
de 4Kocteti, practic mecanismul numindu-se paginare. Într-un sistem fără paginare și
numai cu segmentare, un segment al programului ce este rulat trebuie obligatoriu sa
îcapă în memoria RAM disponibilă. Acolo unde pe lângă segmentare apare si
mecanismul de paginare, atunci tot segmentul poate fi în memoria virtuală, dar numai
pagina ce include in sectiunea sa, datele vehiculate sau codul ce urmează să se
execute, trebuie adusă in memoria RAM.
Practic memoria ROM, circuitul RAM, şi Memoria Virtuală formează
memoria internă a microprocesorului. Celelalte dispozitive de stocare : - restul de
harddisk, CD-ROM, memory-stick, DVD-ROM, etc… reprezintă memoria externă a
microprocesorului.
Obs:
➢ Un program care este rulat de către microprocessor trebuie să se regăsească în
totalitate în memoria internă.
5
➢ În cadrul programelor actuale, un OCTET (de date sau cod) are mai multe
adrese care conduc la adresa fizică unde este plasat efectiv în memoria RAM:
• Adresa de segment – este adresa fizică unde începe segmentul respectiv
(segment de date, de cod, de stivă)
• Adresa de off-set în cadrul segmentului – relativ la începutul
segmentului, numărătoarea/adresarea octeților începe de la valoarea “0”,
dacă nu se folosește paginarea.
• Adresa de pagină - este adresa fizică în cadrul segmentului (de off-set)
unde începe pagina respectivă
• Adresa de off-set în cadrul paginii – relativ la începutul paginii,
numărătoarea/adresarea octeților începe de la valoarea “0”
Astfel un octet din memoria internă, are adresa formată din concatenarea
următoarelor adrese:
Adresa_FIZICĂ=>
Adresa_SEGMENT @ Adresa_PAGINĂ @ Adresa_OFFSET_Pagină
Operatorul @ poate fi o simplă adunare, dar poate fi și compunere mai complexă a
adeselor, în conformitate cu arhitectura nucleului de sistem cu microprocesor
respectiv. Faptul că adresarea se referențiază față de începutul segmentului și
eventual al paginii, segmentele, respectiv paginile pot fi plasate oricum în memoria
RAM.
6
Aceste transformări sunt realizate de către niște programe utilitare executabile,
dezvoltate de obicei de firmele producătoare de procesoare și de către firmele care
furnizează mediile de dezvoltare (limbaje de nivel superior):
➢ Editor de text
➢ Compilator/Asamblor
➢ Linkeditor
Programul utilitar executabil numit compilator realizează traducerea octet cu
octet a fisierului cod sursă (fişier ce conține instrucțiunile programului scris de către
programator) in limbajul cod maşină.
Fisierul cod obiect obtinut nu poate să fie rulat de către procesor deoarece nu
are formatul binar pe care il recunoaste procesorul. Acum intervine un alt program
executabil numit linkeditor (editorul de legături) care leagă acest fișier cod obiect cu
alte fisiere cod obiect din bibliotecile de funcţii, cu alte programe realizate mai vechi,
astfel încât, în final să se obțină fișierul cod executabil. Acesta are un format binar
care poate fi executat de catre processor. Acest format binar nu poate fi modificat,
daca vrem sa imbunatăţim programul.
Ca regulă, atunci cand se cumpară un program de la o firmă de soft, eu
recomand să se ceară fișierul cod obiect, fiind astfel posibil, ca ulterior, acest fișier să
fie prelucrat împreună cu alte fișiere ce reprezinta modificari, după care să fie
Linkeditate împreună. Se obține astfel un nou program, ce reprezinta o variantă nouă
de aplicație, ce include practic aplicația veche nemodificată (...poate între timp firma
de software a dat faliment).
O altă recomandare ar fi, dacă lucrați la Cernavodă (centrala nucleară)
programul cumpărat trebuie să fie la nivel de cod sursă pentru a avea controlul total a
ceea ce se întâmplă în codul respectiv.
Cea mai ieftină variantă este să cumpărați codul executabil, dar nu aveți control
a ceea ce face programul și pt. orice modificare trebuie să apelați la firma de
software. Acest lucru nu este rău, dar dacă între timp firma a dat faliment, lucrurile
sunt greu de gestionat....
7
Cap.2. Evolutia arhitecturilor de sisteme cu µP (un mic istoric care introduce
evoluția tehnologiilor de implementare)
>>În anul 1979 este realizat, de firma Intel, primul µP de 16 biţi (8086).
Acesta a păstrat resursele procesoarelor anterioare, pentru a păstra compatibilitatea
cu softul deja scris pentru ele, dar arhitectura sa internă conţine 2 unităţi ce
lucrează în paralel:
-unitatea de executie EU (Execution Unit), care realizează prelucrarea
efectivă a datelor.
-unitatea de interfaţă cu magistrala BIU (Bus Interface Unit) care realizează
comunicaţia cu lumea externă.
Odată cu acest procesor este produs şi procesorul 8088, cu aceeaşi structură
cu 8086, dar care comunică în exterior printr-o magistrală de 8 biţi, şi nu de 16 biţi
ca la 8086. Aparent, acesta ar trebui să lucreze cu o viteză de 2 ori mai mică decât
8086, deoarece trebuie să execute 2 accese la memorie, faţă de 8086 care va
executa un singur acces. Lucrurile nu se întâmplă astfel, deorece unitatea BIU
gestionează o memorie de tip coadă în care se găsesc, aproape în permanenţă,
următorii 6 octeţi ai instrucţiunilor ce urmeză să se execute. Singurele momente în
care coada trebuie iniţializată, şi deci EU trebuie să aştepte efectiv citirea unei
instrucţiuni, sunt cele ce urmează după execuţia unei instrucţiuni de salt. În acest
mod, diferenţa de viteză dintre 8086 şi 8088 este doar de 20%.
Aceste procesoare au introdus noţiunea de segmentare a memoriei (doar în
„modul real”), adică registrele de 16 biti sunt folosite ca indici de adresă într-un
segment fizic de memorie cu mărimea de 64KØ. Procesorul putea realiza 330.000
op/s la o frecvenţă de 4,77 MHz, și putea avea acces, printr-un mecanism
hardware, la 1MØ de memorie.
>>În 1982 sunt realizate procesoarele 80186 şi 80286. Primul este de fapt un
8086 mai rapid, prevăzut cu o serie de circuite auxiliare pentru a realiza
1
calculatoare compatibile IBM PC/XT (External Technology). Începând din anii
`80, termenul de microprocessor a fost substituit cu cel de procesor datorită
complexitătii din ce in ce mai mari a acestor cipuri.
În schimb, procesorul 80286 reprezintă o etapa nouă în arhitectura
procesoarelor, deoarece o serie de concepte clasice din domeniul calculatoarelor
mari (mainframe) au fost transferate la acesta: multiprelucrare şi multiacces, care
utilizează mecanisme pentru gestiunea memoriei virtuale şi pentru protecţia
memoriei atribuite unui proces(task). Spaţiul de memorie fizică este şi el mărit de
la 1MØ la 16 MØ.
Odată cu procesorul 80286 a apărut termenul de ”mod protejat ”. Acest mod
nou de lucru, utilizează conţinutul registrului segment (nu ca adresa de bază a
segmentului, ca in modul real) ci ca un selector(index) într-o tabelă a
descriptorilor de segment. Un descriptor de segment conţine adresa fizică de bază
a segmentului (pe 24 de biti, oferind deci un spatiu de memorie de 16MØ).
Mecanismele de protecţie a memoriei cuprind:
- verificarea limitei adresabile a unui segment;
- segmente ce pot fi doar citite;
- segmente ce pot fi doar executate;
- opţiuni – drepturi de acces intr-un segment;
- 4 niveluri de protecţie a codului sistemului de operare faţă de programele
de aplicaţie şi cele utilizator;
- mecanisme de comutare de task-uri şi tabele descriptori locali, care
permit sistemului de operare să protejeze aplicaţiile sau programele unele
faţă de altele;
2
În plus, posibilitatea de a defini segmente de lungime egală cu spaţiul de
adresare, împreună cu mecanismul de paginare, permit crearea unui spaţiu de
adrese liniar protejat, mod folosit intens de sistemele de operare UNIX.
Pe langă acestea, s-au dezvoltat în arhitectura procesoarelor, tehnici de
procesare (prelucrare) paralelă. Astfel, dacă la 8086 erau doar 2 unităţi
funcţionale care lucrau în paralel, 80286 – 4 unităţi funcţionale, iar 386 conţine 6
unităţi funcţionale ce lucrează în paralel.
Cele 6 unităţi sunt:
- Unitatea de interfaţa cu magistrala BIU(Bus Interface Unit);
- Unitatea de citire în avans a intstrucţiunii (Code Prefetch Unit), care ia
codul obiect al instrucţiunii din memorie şi îl depune într-o coadă de 16
biţi;
- Unitatea de decodificare a instrucţiunii, care decodifică codul obiect din
coadă de instrucţiuni în microcod;
- Unitatea de execuţie;
- Unitatea de translatare a adreselor (Segment Unit), care translatează
adresele logice, în adrese liniare şi realizează verificările de protecţie;
- Unitatea de paginare (Paging Unit), care translatează adresele liniare în
adrese fizice şi realizează verificările de protecţie legate de pagini.
Aceasta unitate mai conţine o memorie cache cu informaţii de lucru
pentru cel mult 32 de pagini, cele mai recent accesate.
Coprocesorul matematic asociat, 80387 este şi el îmbunătăţit, adăugându-se
noi operaţii cum ar fi funcţiile trigonometrice.
3
Cercetările şi testele au arătat că o suită de instrucţiuni simple se poate
executa mai rapid decât o instrucţiune complexă, iar diminuarea numărului de
comenzi şi a complexităţii lor permite reducerea spaţiului utilizat de acestea în
procesor, având ca şi consecinţă creşterea vitezei de lucru. Arhitectura RISC a fost
dezvoltată inițial, la nivel de concept, începând cu anii `70, iar setul de instrucţiuni
într-o variantă RISC, constă doar în instrucţiuni simple, cu moduri de adresare
evident limitate. Ideea de bază a fost ca, în locul unei sumedenii de operaţii,
procesorul să ofere un set restrâns de operaţii, pe care le poate executa foarte rapid.
Cele mai multe instrucţiuni se execută într-un singur ciclu. Arhitectura hardware a
următorului procesor Pentium este de tip RISC. Pe langă setul redus de
instrucţiuni, procesoarele RISC mai oferă următoarele avantaje:
- operaţii cu registre mari și multe, minimizând astfel necesarul de acces la
memorie;
- memorie cache integrata pe chip, evitându-se lucrul cu memoria;
- un modul pipeline, pentru a permite procesarea mai multor instrucţiuni
într-un ciclu.
>>O altă variantă a fost Pentium MMX, apărut în 1997, care cuprinde un set
de 57 de noi instrucţiuni, 4 noi tipuri de date şi un nou set de registre, pentru a
extinde performanţele multimedia şi de comunicaţie. Tehnologia MMX (Multi –
Media-Extension) are la bază o arhitectură SIMD (Single Instruction Multiple
Data) care permite extinderea aplicaţiilor multimedia: grafică 2D, 3D, video,
procesare de imagini-sunet. Această tehnologie folosește algoritmi de calcul
intensivi (calcule multe și complexe) asupra unor siruri de date simple.
Elementele noi care au apărut faţă de vechiul Pentium (fără MMX) sunt:
memorie tampon L1 dublată la 32 KØ, algoritm de predicţie pentru salturi (execuţie
speculativă îmbunătaţită), structura pipeline îmbunătăţită şi evident suportul
MMX.
Mediile de lucru grafice şi aplicaţiile multimedia complexe impun cerinţe
deosebit de severe în privinţa puterii de calcul a procesorului. Una din căile de
îmbunătăţire a performanţei procesorului, este realizarea unor îmbunătăţiri ale
arhitecurii interne. În acest scop au fost identificate rutinele cele mai costisitoare,
din punct de vedere al timpului de execuţie, şi s-au identificat o serie de asemănări
7
între aplicaţii: algoritmii sunt deosebit de complecşi, cer o putere de calcul ridicată
şi se aplică repetitiv pentru zone de date diferite; majoritatea operaţiilor sunt de tip
aritmetic şi logic; ele se execută în paralel şi manipulează în buclă date relativ mici
(tipic 16 biţi audio si 8 biţi grafică). Din acest motiv s-au introdus noi registre,
asemanătoare cu cele de la DSP-uri (Digital Signal Procesor – procesor de semnale
numerice (digitale)), s-au definit tipuri de date specifice şi instrucţiuni
suplimentare aferente, care să manipuleze aceste date.
Unele aplicaţii, scrise special pentru aceste procesoare puteau să-si măreasca
viteza de lucru cu pânâ la 200%, dar numărul acestora era destul de mic la vremea
respectiva, astfel că în realitate, cresterea performanţei globale pentru Pentium
MMX a fost doar 20%, indiferent dacă erau sau nu folosite facilitaţile respective.
În principal, creşterea de performanţă s-a datorat măririi cache-ului intern, creşterii
eficienţei algoritmului de predicţie a salturilor, precum şi a benzii de asamblare. In
ciuda afirmatiilor făcute de Intel, instrucţiunile MMX nu au reprezentat un salt
important din punct de vedere tehnologic, ci doar comercial.
>>În 1999 este lansat un nou membru al familiei, procesorul Pentium III
care se bazează pe arhitecturile procesoarelor Pentium Pro şi Pentium II. El adaugă
setului de instrucţiuni existent încă 70 de noi instrucţiuni, care se adresează
unităţilor funcţional existente şi noi, unităţi în virgulă mobilă SIMD (Single
Instruction, Multiple Data), care permitea realizări de operaţii aritmetice şi logice
asupra unor valori în virgulă mobilă, simplă precizie (32 de biti), împachetate în
cuvinte de 128 biţi, denumită SSE (Streaming SIMD Extension). Aceste
instrucţiuni sporesc viteza aplicaţiilor multimedia, dacă există o colaborare cu
suportul software. O versiune mai ieftină a acestui procesor a fost Celeron, care
avea cache L1 de 64 KØ, iar cache L2 de 128 KØ, care era destinat calculatoarelor
ieftine, având performanţe cu 20-40 % mai slabe decât Pentium III.
>>Procesorul Intel Itanium, apărut tot în 2001, este primul dintr-o noua
familie bazată pe arhitectura Itanium, ISA (Itanium Instruction Set Arhitecture),
care este proiectată pentru a satisface cerinţele staţiilor de lucru şi a serverelor de
mare performanţă. Aceasta arhitectură se bazeaza pe RISC si CISC (mai precis este
o arhitectură CISC peste RISC), prin combinarea pe scară largă a resurselor
microprocesorului şi compilatoarele inteligente care permit explicit execuţie
paralelă, predictivă si speculativă.
Altfel spus, procesorul utilizează conceptele de proiectare EPIC (Explicty
Parallel Instruction Computing) pentru o cuplare mai strânsa între hardware şi
software. Resursele sale mari se combină cu predicţia şi speculaţia pentru a valida
optimizarea pentru aplicaţii de mare performanţă ce ruleaza pe Windows XP
(editia de 64 de biţi) sau Linux. Procesorul a fost conceput pentru a suporta sisteme
foarte mari, inclusiv cele care utilizează câteva mii de procesoare. Faţă de
procesoarele anterioare, posedă şi nivelul L3 cache, care poate avea 2 sau 4 MØ, şi
care este asociativă, cu o dimensiune a liniei de 64 KØ.
Resursele sale constau din 4 unităţi întregi , 4 unităţi multimedia, 2 unităţi de
încărcare/măsurare, 3 unităţi de ramificare, 2 unităţi în virgulă mobilă de precizie
extinsă şi 2 unităţi suplimentare în virgulă mobilă de simplă precizie. Unităţile în
virgulă mobilă pot opera la 3 Gflops (pentru precizie extinsă) şi 6 Gflops (pentru
dublă precizie). Procesorul poate citi, transmite, executa şi extrage 6 instrucţiuni la
fiecare ciclu de ceas procesor. [flops=floating-point operation per second]
Arhitectura Itanium este cea mai seminificativă şi avansată, de la procesorul
Intel 386, prezentă la acel moment. În 2002 a a apărut urmaşul acestui procesor
Itanium 2 care mareşte performanţa procesorului anterior de 1,5 → 2 ori, prin
extinderea semnificativă a performanţei peste sisteme bazate pe RISC, pentru
aplicaţii foarte mari.
Creşterea frecvenţei procesoarelor este principalul mijloc de extindere a
performanţelor alături de îmbunătăţirea arhitecturii. Astfel, dacă primul PC avea
frecvenţa de 4,77 MHz, în continuare acesta a evoluat rapid: 33 MHz(1991), 400
MHz(1998), peste 3GHz(2002).
Procesoarele următoare se caracterizează şi prin imbunătăţirea şi extinderea
arhitecturii RISC, completată corespunzator cu partea sofware.
9
>>Procesoarele actuale, cum ar fi I5, I7, Intel Atom, sunt în principal
realizate în tehnologia “CISC peste RISC”. Acest lucru se traduce prin realizarea
unui nucleu hardware de tip RISC, cu schemă electronică simplificată, care se
încălzesc mai puțin, etc. iar extensia către arhitectura CISC se emulează software.
Concluzie: Deși tehnologia pe siliciu și-a atins limite cu mulți ani în urmă,
procesoarele au continuat și continuă să se extindă folosind diverse artificii
tehnice/tehnologii:
✓Creștere forțată a frecvenței cu dezavantajele corespunzătoare:
✓Adăugarea mai multor nuclee în aceeași capsulă de procesor (multicore);
✓CISC peste RISC;
Emularea software (CISC peste RISC), alături de tehnologia circuitelor FPGA
(Field Programmable Gate Array....va fi descrisă într-un capitol viitor) va permite
pe viitor dezvoltări fabuloase, pe care azi, poate, nici nu ni le imaginăm.
10
Practic, o arhitectură este legătura sau interfaţa între 2 module funcţionale.
Ea poate fi definită ca o vedere funcţională a sistemului printr-o interfaţă pentru
utilizator care se situează deasupra nivelului respectiv. În principiu, un utilizator
care se plasează pe un anumit nivel este interesat numai de detaliile de
implementare de la nivelul imediat inferior.
Arhitectura globală este interfaţa între întregul sistem de calcul şi lumea
exterioară care este numită arhitectura sistemului. Undeva, mai jos, este interfaţa
între procesorul de aplicaţie şi limbajul de programare de nivel înalt. Această
denumire defineşte arhitectura limbajului de programare. De obicei, programatorul
se plasează pe acest nivel. În continuare, este interfaţa între limbajul de programare
şi diferite funcţii de administrare a resurselor, în timpul execuţiei, care sunt
furnizate de către sistemul de operare. Acest nivel este definit ca arhitectura
sistemelor de operare.
Următoarea interfaţă este deosebit de importantă, deoarece ea defineşte
limita dintre hardware şi software. Acesta este nivelul elementar, la care
instrucţiunile recunoscute de calculator sunt decodificate şi executate.
Celelalte 2 niveluri inferioare de arhitecturi (microcod şi la nivel de porti)
definesc în detaliu alte funcţii primitive, dar care nu sunt interesante pentru cei mai
mulţi dintre programatori decât în cadrul unor aplicaţii de timp real.
În general, termenul de arhitectura calculatoarelor defineşte graniţa dinte
hardware si software. Arhitectura este nivelul sistemelor cu microprocesor ce este
văzut de un programator în limbaj de asamblare sau de unul care scrie un
compilator.
O separare pe orizontala a componentelor permite definirea de sisteme
multiprocesor sau distribuite.
Sisteme distribuite
11
Cap.3. Sisteme pentru procesarea numerică a semnalelor
DSP -> Digital Signal Processing (Prelucrari numerice de semnale) – set de tehnici de
procesare a semnalelor
DSP -> Digital Signal Processor (Procesoare digitale de semnale) – echipament hardware
dedicat pentru procesarea semnalelor
Analogic sau numeric?
➢ procesarea informaţiei în format numeric oferă o serie întreagă de avantaje:
− flexibilitate: un sistem de prelucrare numerică a semnalelor poate fi adaptat
pentru implementarea a mai multor tipuri de aplicaţii. Modificările sunt în marea
1
majoritate a cazurilor doar de natură software, cu adaptari minime legate de
hardware.
− reproductibilitate: o aplicaţie în tehnologie DSP rulează identic pe orice
dispozitiv. De exemplu un filtru FIR în tehnologie DSP nu îşi modifică funcţia de
transfer la transpunerea de pe un procesor pe altul;
− fiabilitate: performanţele unui sistem DSP se degradează foarte puțin în Timp
(…cel puțin așa se dorește);
− complexitate: un sistem DSP permite implementarea de algoritmi complecşi de
procesare pe un acelaşi chip de mică putere.
➢ principalele dezavantaje ale procesării în format numeric:
− viteza de procesare este limitată de frecvenţa de eşantionare şi de echipamentele
periferice conectate în circuit
− algoritmii DSP operează pe un număr predefinit de biţi cu o precizie şi o gamă
dinamică limitată, iar erori aritmetice pot apărea ca urmare a procesării numerice
− reprezentarea informaţiei analogice în format digital, ceea ce inseamna o pierdere
de informatie (analogică) între 2 perioade de eșantionare.
− presupune utilizarea unei operaţii de cuantizare ce este la rândul său o sursă de
erori (erori de cuantizare)
Procesoare numerice de semnale sunt microprocesoare proiectate pentru procesarea secvenţială a
semnalelor în format digital. Procesarea numerică a semnalelor a devenit atractivă încă din anii
1960, odată cu introducerea tehnicilor digitale. Ulterior a devenit o alternativă în procesarea
semnalelor, pe măsură ce structurile digitale hardware au evoluat, au devenit mai rapide, mai
uşor de utilizat, mai ieftine şi tot mai răspândite pe piaţă.
Încă din 1979, firma Intel a introdus primul DSP (2920) care avea o arhitectură şi un set
de instrucţiuni special adaptate pentru aplicaţii de procesare numerică a semnalelor. Astăzi, piaţa
producătorilor de DSP-uri şi de soluţii pentru DSP-uri este extrem de aglomerată, oferta este
foarte diversificată, iar preţul (mai corect spus, raportul preţ / performanţă) este tot mai mic.
Dacă iniţial DSP-ul a apărut ca o cerinţă a pieţii, acum, performanţele DSP-urilor oferite
au făcut ca domeniile de aplicare practic să explodeze. Preţul în scădere, suportul hardware şi
software oferit ca fiind tot mai complex şi puterea de procesare tot mai mare, au făcut ca
utilizarea DSP-urilor în tot mai multe aplicaţii să devină un fapt obişnuit: modemuri de mare
viteză, telefoane fără fir sau celulare, playere audio sau video, camere digitale - sunt produse a
căror funcţionare se bazează aproape exclusiv pe prelucrarea numerică a semnalelor.
Un semnal este definit ca o cantitate fizică dependentă de timp, pentru informații de
poziţie, presiune, temperatură, etc. (de exemplu, tensiunea de ieşire furnizată de către un
microfon este strâns legată de presiunea acustică a sunetului ca funcţie de timp). Obiectivele
urmărite în procesarea semnalelor sunt acelea de a transmite mai departe sau de a memora
semnale, de a îmbunătăţi anumite componente ale unui semnal şi de a extrage informaţiile utile
transportate de semnale.
În aplicaţiile practice, majoritatea dintre semnalele întâlnite sunt analogice, deci prezente
la fiecare moment de timp şi având amplitudini diferite. Pentru a prelucra, astfel de semnale
continue în timp folosind DSP-uri, este necesar ca acestea să fie eşantionate şi cuantizate pentru
a produce o secvenţă numerică. Ăceastă secvenţă discretă în timp, cu o amplitudine de valoare
tot discretă, reprezentată pe un număr finit de biţi, poartă numele de semnal digital.
Exemplu:
- muzica înregistrată pe o casetă audio - semnal continuu;
- muzica înregistrată pe un CD - semnal digital.
2
Practic, semnalele digitale pot fi memorate pe diferite medii de stocare un timp nedefinit fără a
pierde din informaţii (exemplu: discuri magnetice, discuri optice, etc.). Pe de altă parte,
semnalele analogice memorate se deteriorează în timp şi nu mai pot fi readuse complet la
formele iniţiale.
Teoria procesării numerice a semnalelor se bazează pe semnale şi sisteme discrete în
timp, ceea ce permite o manipulare mai uşoară din punct de vedere matematic. Semnalele
discrete pot fi obţinute prin eşantionare (fără cuantizare) a semnalelor analogice. Semnalele
discrete sunt prezente în fiecare moment discret de timp şi pot avea orice amplitudine. Ele
necesită un număr infinit de biţi pentru reprezentarea fiecărui eşantion, ceea ce nu se poate
realiza fizic în structuri digitale. Mai mult, cea mai mare parte a algoritmilor de procesare
numerică a semnalelor au fost iniţial dezvoltaţi folosind calculatoare de uz general, pentru care
viteza de modificare şi testare a algoritmilor era mai importantă decât cea de execuţie a
algoritmilor. Pentru a utiliza aceşti algoritmi în aplicaţiile actuale folosind cuvinte numerice de
lungime finită, trebuie avute în vedere hardware-ul folosit, viteza de execuţie şi complexitatea
algoritmilor. Datele reale (eşantionate) obţinute într-o aplicaţie trebuie utilizate astfel încât să se
realizeze o rafinare a algoritmului.
Aşa cum se poate vedea în Fig.3.1, sistemele de procesare numerică a semnalelor
utilizează un DSP şi o structură hardware digitală, precum şi două convertoare, unul analog-
numeric (ADC - Analog-to-Digital Converter) şi unul numeric-analogic (DAC - Digital-to-
Analog Converter) pentru a înlocui dispozitivele analogice standard, precum: amplificatoare,
modulatoare şi filtre.
Fig.3.1.
Semnalul analogic ce trebuie procesat este mai întâi eşantionat şi codificat într-un semnal digital
în formă binară prin blocul ADC. Procesorul DSP realizează operaţii matematice bazate pe un
anumit algoritm de prelucrare numerică a semnalelor, implementat în software. Semnalul digital
obţinut la ieşire poate fi convertit înapoi în formă analogică prin blocul DAC. De asemenea, un
procesor DSP poate prelucra şi semnale digitale primite la intrare de la alte structuri numerice şi
poate furniza în exterior comenzi digitale către alte sisteme. În unele aplicaţii, un sistem DSP
poate crea intern semnale digitale. De exemplu, se poate sintetiza o pereche de semnale
sinusoidale (dial tones - tonuri de apel) pentru apeluri telefonice.
Algoritmii de tip DSP pot fi implementaţi pe o mare varietate de structuri digitale,
folosind limbaje de programare diverse (de exemplu: C, C++). Unele structuri DSP pot fi
realizate prin sisteme logice programabile sau neprogramabile, microprocesoare şi
microcontrolere de uz general şi prin procesoare numerice de semnal de uz general. De exemplu,
este posibil să se integreze sisteme DSP bazate pe algoritmi sofisticaţi, ca de exemplu algoritmii
de codare şi decodare video, pe un singur cip VLSI (Very Large Scale Integration - cu Integrare
pe Scară Foarte Largă). Totuşi, soluţiile hardware sunt orientate către rezolvarea unor aplicaţii
specifice. Astfel de soluţii sunt mai rapide şi de mai mici dimensiuni decât soluţiile
3
programabile, însâ necesită un timp mult mai mare pentru proiectare, un cost ridicat pentru
dezvoltare şi sunt dificil de modificat sau upgradat (actualizat).
Procesorul “programabil” poate fi programat pentru o multitudine de task-uri (sarcini). Se
utilizează pentru sisteme complexe şi care sunt prea dificil de realizat pe seama circuitelor
neprogramabile, pentru produse care ncesită un timp de dezvoltare foarte scurt şi un cost de
punere la punct scăzut, sisteme care trebuie upgradate periodic, pe baza unor noi algoritmi şi
standarde. Totuși, pentru o sarcină specifică, procesorul este mai lent decât cip-ul VLSI care ar
realiza acelaşi task.
Microprocesoarele şi microcontrolerele de uz general sunt astfel concepute încât să poată
realiza procesări în forme extrem de generale, folosind o arhitectură von Neumann, la care există
un spaţiu unitar de memorie, atât pentru instrucţiuni, cât şi pentru date. Prin contrast, o
arhitectură Harvard separă spaţiul de memorie în memoria program şi memoria de date, astfel
încât ambele să poată fi accesate simultan. Cea mai mare parte a DSP-urilor utilizează o
arhitectură Harvard modificată şi sunt optimizate pentru a efectua operaţii repetate de înmulţire
şi sumare care accesează în mod secvenţial datele stocate în locaţii consecutive ale memoriei.
Sistemele de tip DSP au înlocuit în mare parte sistemele de procesare analogică şi au
permis extinderea considerabilă a ariei aplicaţiilor. Principalul avantaj al DSP-urilor este
programabilitatea lor. Un sistem DSP permite utilizatorului să modifice task-urile prin scrierea
unui nou cod în memoria sistemului. De asemenea, permite actualizarea parametrilor sistemului
pe baza unor noi algoritmi pentru o mai bună adaptare la mediul în continuă schimbare.
Sistemele DSP se bucură de performanţe deosebite întrucât atât memoria, cât şi procesorul, sunt
practic independente de temperatură şi pot reacţiona corect în diferite medii externe pe întreaga
durată de viaţă a produsului. Mai mult, un acelaşi algoritm DSP poate fi transpus în diverse
limbaje şi poate fi rulat pe diferite arhitecturi hardware cu aceleaşi rezultate. Costul sistemelor
DSP este în continuă scădere, în timp ce performanţele continuă să crească de la o generaţie la
alta. Puterea consumată de către un DSP a scăzut spectaculos de la o generaţie la următoarea,
astfel încât astăzi dispozitivele realizate se pretează foarte bine a fi incluse în structuri portabile.
În plus, unele operaţii complexe de procesare a semnalelor nici nu mai pot fi implementate pe
baza tehnicilor analogice.
În paralel cu avantajele oferite de tehnologiile hardware digitale, s-au dezvoltat cercetări
pentru îmbunătăţirea algoritmilor de lucru şi pentru a extinde aria de aplicabilitate. În ce priveşte
creşterea performanţelor algoritmilor de operare, aceştia au în vedere şi scăderea complexităţii
sistemului, ceea ce a permis dezvoltarea unor noi tehnici DSP, precum filtrarea adaptivă pentru
mediu necunoscut sau variabil în timp şi algoritmi rapizi, precum transformarea Fourier rapidă
(FFT - Fast Fourier Transform) pentru calculul transformatelor Fourier discrete.
Pe măsură ce arhitecturile DSP au evoluat, iar performanţele algoritmilor au crescut, şi
cerinţele de procesare au devenit tot mai mari, ceea ce a determinat dezvoltarea unor sisteme cu
performanţe superioare care includ algoritmi de calcul tot mai sofisticaţi pentru noile generaţii de
aplicaţii. În aceste aplicaţii, factorii cheie care asigură creşterea duratei de aplicabilitate ale
sistemelor DSP proiectate sunt flexibilitatea şi upgradabilitatea (posibilitatea de dezvoltare /
modernizare pe structura existentă). Multe dintre standardele industriale în domeniul DSP-urilor
şi a sistemelor DSP sunt încă în faza de dezvoltare, ele trebuind să rămână compatibile cu alte
standarde (de exemplu, cu cele din domeniul structurilor numerice, a circuitelor integrate, pentru
reprezentarea algoritmilor, etc.). Un bun exemplu este cel al telefoniei celulare, pentru care
standardele au trecut foarte rapid prin mai multe generaţii: 2G, 2.5G, 3G, 4G și se pregătește
4
asiduu 5G. În noile proiecte se includ cu precădere procesoare DSP programabile care asigură
mai multe moduri de operare şi posibilitatea upgradării ulterioare.
Recunoaştere vocală: Scrisoare vocală (Voice Mail), Recunoaştere după voce, Verificare
amprentă vocală, Îmbunătăţirea vorbirii, Sinteza vocală, Controlul incintelor acustice, Conversia
text / vorbire (Text-to-Speech), Videoconferinţe, Protocoale de transfer voce pe Internet (Voice
Over Internet).
6
Comandă şi control: Automatizări, Controlul discului, Comandă servo, Comanda roboţilor,
Imprimante laser, Comanda motoarelor, Filtre Kalman.
8
Fig.3.2. Arhitectura nucleului pentru procesoarele TMS320
Cele două blocuri externe principale necesare sunt memoria (de program şi/sau de date)
şi perifericele. De obicei, procesoarele DSP dispun de o mică memorie cache on-chip, o memorie
de program de tip ROM, memorie RAM şi periferice. Perifericele precum convertoarele A/N şi
N/A pot fi conectate fie la magistrala de date, utilizând adrese dedicate (specifice), fie la interfaţa
serială, dacă cipul dispune de porturi seriale.
În aplicaţiile DSP, procesorul este interfaţat cu lumea externă pentru a efectua transfer de
date. Sunt disponibile mai multe tipuri de dispozitive comerciale de tip I/O. Aceste dispozitive
I/O sunt selectate şi validate prin semnale de control decodificate din magistrala de adrese (biţii
inferiori) şi prin linii de control specifice. Un semnal de control suplimentar este necesar pentru a
distinge între adresarea memoriei şi adresare I/O. Sarcina software-ului este de a stabili adresa
corectă a dispozitivului extern şi de a activa linia de control a transferului I/O.
3.4.1 Introducere
Marea majoritate a procesoarelor DSP sunt proiectate să realizeze operaţii repetitive de
tip MAC (multiply-add computation), precum filtrarea răspunsului la impuls finit (FIR - Finite-
Impulse Response), definită prin relaţia:
9
Calculul ieşirii y(n) necesită parcurgerea următorilor paşi:
1. Aducerea a doi operanzi, bi şi x(n-i) din memorie
2. Înmulţirea lui bi cu x(n-i)
3. Adunarea rezultatului bi*x(n-i) la acumulator
4. Repetarea paşilor 1, 2 şi 3 pentru i=0,1,2,...,L-1
5. Transferul rezultatului y(n) din acumulator în memorie
6. Actualizarea indicatorilor (pointerilor) pentru bi şi x(n-i) şi repetarea paşilor de la 1 la
5 pentru următorul eşantion de intrare.
Arhitectura internă generală a unui procesor DSP este prezentată în Fig.3.3. Această structură
este optimizată pentru operaţiile de filtrare FIR descrise în relaţia (2.1). Marea majoritate a
procesoarelor DSP utilizează blocuri funcţionale similare, deşi interconectarea internă şi
operaţiile efectuate pot varia.
Prin comparaţie cu microprocesoarele de uz general, trăsătura specifică a DSP-urilor
constă în puternicul paralelism utilizat în vederea îmbunătăţirii vitezei de procesare. DSP-urile
dispun de unităţi speciale de prelucrare deservite prin magistrale specifice multiple, multe dintre
acestea putând lucra independent şi în mod complementar. Aşa cum se vede în Fig.3.3, unitatea
logico-aritmetică (ALU - Arithmetic Logic Unit) realizează adunarea, scăderea şi operaţii logice.
Registrul de deplasare este utilizat pentru scalarea datelor, iar multiplicatorul şi acumulatoarele
hardware realizează operaţii MAC. Generatoarele de adrese pentru date (DAGENs – Data
Address Generators) definesc adresele operanzilor utilizaţi în instrucţiuni. Cu aceste resurse
disponibile, procesorul DSP atinge o viteză ridicată de execuţie, realizând operaţiile în aceste
unităţi în mod simultan.
Majoritatea procesoarelor DSP utilizează o arhitectură Harvard modificată, cu două sau
trei magistrale de memorie (una de program şi încă una sau două pentru date). Este facilitat astfel
accesul simultan la coeficienţii filtrului şi la semnalul de intrare în acelaşi ciclu de ceas. Totuşi,
utilizarea arhitecturii Harvard crează unele dificultăţi în scrierea programelor în C care utilizează
întreaga capacitate a structurii MAC şi a accesurilor repetate la memorie.
10
Fig.3.3. Arhitectura generală a unui procesor DSP
Multiplicarea cu acumulare
Operaţiile de înmulţire necesită mai multe cicluri de ceas într-un microprocesor sau
microcontroler, acolo unde ele sunt efectuate prin operaţii repetate de deplasare şi sumare. Pentru
a atinge viteza cerută de algoritmii DSP bazaţi pe multiple operaţii de înmulţire (vezi de exemplu
filtrarea FIR din relaţia (2.1)), procesoarele TMS320 utilizează un multiplicator hardware cu
operare paralelă, care poate înmulţi doi termeni (date) într-un singur ciclu de ceas. În acelaşi
timp, un sumator plasat imediat după multiplicator adună rezultatul înmulţirii anterioare la
conţinutul unui acumulator cu dublă-precizie. Unele procesoare, precum C55x, dispun de două
unităţi MAC şi 4 acumulatoare de 40 biţi. O serie de instrucţiuni specifice care pot realiza
înmulţirea, acumularea, deplasarea datelor şi operaţiile de actualizare a pointerilor (indicatorilor)
într-o singură instrucţiune sunt prevăzute pentru algoritmii de filtrare şi de corelare. Aceste
instrucţiuni se bazează pe arhitectura paralelă pentru a realiza o execuţie foarte rapidă.
11
Unitatea logico-aritmetică (ALU)
Operaţiile aritmetice de bază realizate de procesoarele DSP sunt adunarea, scăderea, etc.
Unitatea logică realizează operaţii logice booleene, precum AND, OR şi NOT, asupra biţilor
individuali ai unui cuvânt de date şi execută deplasări logice ale întregului cuvânt de date. Atât
blocul logic, cât şi cel aritmetic, sunt cuprinse de obicei într-o singură unitate ALU. Împărţirea
binară este de obicei implementată printr-o rutină software deoarece ea necesită o serie repetată
de operaţii de deplasare şi de scădere condiţionată.
Paralelismul
Instrucţiunile care controlează operaţiile efectuate de un procesor DSP necesită mai mulţi
paşi pentru a fi executate. Mai întâi, este generată adresa instrucţiunii, iar conţinutul locaţiei de
memorie program de la adresa indicată este citit şi decodificat. În funcţie de instrucţiunea
decodificată, unul sau mai mulţi operanzi sunt extraşi pentru a dispune de datele cerute de
instrucţiune. În sfârşit, rezultatul este stocat, iar adresa următoarei instrucţiuni este calculată.
Fiecare instrucţiune poate necesita mai multe cicluri de ceas pentru a executa mai mulţi paşi de
preextragere, decodificare, extragere operand, execuţie şi scriere a rezultatului. Aceşti paşi pot fi
executaţi succesiv în structuri paralele.
Observație: Aspectele prezentate sunt pur principiale și nu există o delimitare foarte clară între
tipurile de aplicații, dar o abordare profesională ar trebui să țină cont de acestea. Cum o soluție
de control automat nu este unică, așa și abordarea nu este unică. Astfel putem realiza aplicații
de baze de date cu microcontrolere, sau computer de injecție la un automobil cu calculatorul
PC, etc. aplicații ce pot chiar să funcționeze corespunzător. Asta nu înseamnă că am
arhitecturat cea mai bună soluție hardware pentru aplicația noastră, dar se poate...
13
Cap.4. Prezentarea principiului unor structuri distribuite şi ierarhizate
de achiziţie de date şi control bazate pe multiprelucrare
OBS: Introducerea din acest capitol se adresează mai mult studenților masteranzi
care nu au absolvit specializarea Automatică și Informatică Aplicată
La momentul actual începe să se încetăţenească ideea (puţin improprie) de
traductoare şi elemente de execuţie numerice. Schema-bloc principială este
prezentată în Fig.4.1. Ca idee, elementul sensibil este influenţat direct de către
mărimea fizică de proces. Semnalul respectiv este prelucrat de adaptorul analogic
şi după aceea este prelucrat de către un element de prelucrare numerică. Astfel,
informaţia despre mărimea fizică respectivă este tradusă direct într-o mărime
numerică ce este apoi transmisă blocului următor-> interfaţa hardware de proces.
Într-un mod asemănător stă lucrurile şi în cazul elementelor de execuţie.
Traductor
Proces fizic Proces Proces Proces
Element de Execuţie
Comanda
*
2
4.1.Arhitectura unui sistem de prelucrare numerică
La nivel de schemă-bloc, arhitectura principială a unui sistem de reglare
numerică(buclă de reglare numerică) ce funcţionează în timp real, este următoarea:
Referinta ALGORITM NUMERIC DE REGLARE
(sistem cu microprocesor)
Semnal numeric Limitare
Unitati ingineresti
Normare/Prelucrare 0...100% Denormare/Prelucrare
Semnal numeric
0...4095
CAN12 Demultiplexor numeric
Semnal analogic
Multiplexor analogic
CNA12 CNA12
T1 Tn EE1 EEn
Marimi masurate Comenzi
Date preluate din proces Comenzi catre proces
PROCESUL REAL
Fig.4.4
3
Blocurile “NORMARE/PRELUCRARE” şi
“DENORMARE/PRELUCRARE” reprezintă operaţia de transformare a
domeniului mărimii de ieşire din unităţi CAN şi CNA(adică din domeniul 0...4095
pe 12 biti) în unităţi inginereşti(de ex: 0..20000C; 0..380V), sau cel mai probabil în
domenii procentuale 0..100%.
Blocul limitare reprezintă blocul ce adaptează informaţia de ieşire din
algoritmul numeric la condiţiile reale ale procesului(rezultatul poate fi un număr şi
în interiorul sistemului cu microprocesor se pot reprezenta numere destul de mari
în comparaţie cu realitatea semnalului din proces).
Sistem Ierarhizarea
distribuit şi prelucrării
ierarhizat informaţiei
Nivel 3
Sistem de calcul Coordonare şi Sistem de calcul
coordonator Conducere Producţie coordonator
Nivel 2
Sistem de calcul Sistem de calcul Supraveghere, Sistem de calcul Sistem de calcul
supervizor supervizor Supervizare Proces supervizor supervizor
Nivel 1
Sistem Sistem Sistem Reglare, Alarmare, Sistem Sistem
cu µP cu µP cu µP Protecţie cu µP cu µP
5
În cadrul acestei structuri se poate observa modularitatea ansamblului, în
care comunicaţia între echipamente de acelaşi nivel şi între nivele se realizează
prin magistrale specializate tocmai pentru a creşte viteza de vehiculare a
informaţiei. Prin această conducere distribuită se asigură o distribuţie a sarcinilor şi
totodată o specializare a echipamentelor sau programelor de conducere, ceea ce
permite prelucrarea în paralel a informaţiei, conducând la creşterea vitezei de lucru
a ansamblului. Deşi viteza de lucru a procesoarelor a ajuns să fie destul de mare,
adică timpi de prelucrare foarte mici, totuşi creşterea vitezei de prelucrare a
ansamblului ce formează un proces complex nu se mai poate face decât prin
prelucrarea distribuită şi realizarea în paralel a mai multor sarcini. Pentru realizarea
acestor cerinţe, odată cu dezvoltarea sistemelor numerice bazate pe o structură
monoprocesor sau multiprocesor, s-au dezvoltat arhitecturi de sisteme ierarhizate şi
distribuite cu mai multe sisteme de calcul grupate pe mai multe nivele ierarhice.
Fiecare nivel, conform detaliilor prezentate în lucrarea[83], realizează o
categorie de sarcini specifice şi totodată asigură specializarea nivelelor, atât ca
echipamente hardware cât şi ca programe de aplicaţie.
Nivelul 0: Reprezintă nivelul de bază ce corespunde echipamentelor de achiziţie şi
prelucrare primară a semnalelor(datelor) şi elementele de execuţie ce intervin
direct în instalaţia tehnologică. Aceste echipamente asigură informaţiile necesare
funcţionării celorlalte nivele şi transmit comenzile elaborate direct către instalaţia
tehnologică. De fiabilitatea şi precizia acestor elemente depinde funcţionarea
tuturor celorlalte nivele. Datorită faptului că aceste echipamente(traductoare şi
elemente de execuţie) sunt plasate în instalaţia tehnologică, acestea trebuie alese
astfel încât să îndeplinească următoarele cerinţe:
-să aibă o fiabilitate ridicată şi să fie adaptate condiţiilor de lucru specifice în
mediul industrial(umiditate, pericol de explozie, vibraţii, praf, temperatură ridicată,
câmpuri electromagnetice...)
-să fie dublate sau chiar triplate(eventual pe principii diferite de măsură)
traductoarele din punctele importante de măsură ale unui proces ce necesită cerinţe
mari de securitate în funcţionare.
-elementele de execuţie trebuie dotate şi cu elemente de măsură locală
independente pentru a ne asigura că o valoare a comenzii transmise a fost cu
adevărat realizată.
Nivelul 1: Reprezintă nivelul de conducere directă a procesului şi asigură funcţiuni
de reglare automată a parametrilor tehnologici prin bucle de reglare în circuit
închis sau deschis(comenzi secvenţiale) pe baza sarcinilor primite de la nivelele
superioare. Acesta este nivelul care trebuie să asigure conducerea în timp real al
procesului. Din această cauză se preferă controlul unui număr mic de bucle de
reglare cu o aceeaşi unitate cu microprocesor, astfel încât la apariţia unei
defecţiuni, funcţiunile sale să poată fi preluate de către operator(se poate trece pe
comandă manuală) sau de celelalte nivele superioare. Numărul mic de bucle de
reglare se datorează şi faptului că trebuie îndeplinite condiţiile de timp real.
O idee interesantă, este ideea de “Server flotant” într-un sistem distribuit.
Aceasta înseamnă, că pe un acelaşi nivel(şi de obicei pe Nivelul 1), pe lângă
coordonarea primită de la nivelele superioare, poate fi implementată şi o
6
coordonare pe orizontală între echipamentele distribuite, în sensul că, la un
moment dat, unul din procesoare poate prelua facilităţi de coordonare temporare,
atunci când are de executat taskuri mai lente, şi predă controlul coordonării altui
procesor de pe nivelul respectiv care se eliberează temporar de o prelucrare critică.
Astfel, aparent, pare că algoritmul de coordonare se mută permanent în reţeaua
respectivă, iar avantajele sunt semnificative, deoarece se evită comunicaţia cu
nivelul superior(care de obicei este mai lentă) şi se poate realiza în timp real ideea
funcţionării sistemului chiar în condiţiile în care apare o defectare a unei
componente distribuite.
Nivelele 2 şi 3: Prin aceste nivele se asigură procesului determinarea unor condiţii
optime de lucru, prezentând următoarele funcţiuni:
-conducerea optimă a procesului, în principiu bazată pe modele matematice ale
instalaţiilor în regim dinamic sau staţionar.
-se asigură condiţii de performanţă optimă pentru instalaţie în funcţie de restricţiile
globale existente la un moment de timp, sau apărute chiar pe parcursul funcţionării.
-se determină mărimile de referinţă pentru buclele de reglare şi se transmit
nivelului 1.
-se poate realiza conducerea adaptivă la nivel de bucle de reglare bazate pe
estimarea valorii parametrilor procesului, precum şi parametrii optimi ai legilor de
reglare pentru regulatoare şi transmiterea acestora către nivelul 1.
-coordonarea optimă a instalaţiilor tehnologice şi a secţiilor, bazată pe planul de
producţie, materii prime şi consumuri energetice.
-monitorizarea performanţelor instalaţiilor, rapoarte, statistici privind starea
utilajelor şi a reviziilor.
-detectarea şi localizarea defectelor în utilajele tehnologice, în echipamentele de
automatizare, sau în transmisia şi prelucrarea datelor. Detecţia se poate realiza fie
prin compararea valorilor măsurate cu nişte limite date, fie prin simularea
funcţionării bazată pe modelul matematic al instalaţiei şi compararea cu valorile
reale, eventual prin semnale de test trimise către instalaţie şi către echipamentele
de automatizare şi compararea răspunsului cu modelul cunoscut.
Nivelul 4: Acest nivel corespunde managementului tehnic al uzinei şi realizează
funcţiuni legate de gestiunea ansamblului de instalaţii ce prelucrează întregul flux
tehnologic al procesului.
În continuare, se va prezenta principiul arhitecturii de sistem distribuit şi
ierarhizat pe 5 nivele expus mai sus, implementat de către de firma Siemens în
cadrul conceptului propriu TIA(Totally Integrated Automation). După cum se
poate observa în Fig.4.17.[91], echipamentele de automatizare puse la dispoziţie de
firma Siemens oferă o puternică flexibilitate de configurare specifică unei anumite
aplicaţii, ceea ce oferă posibilitatea realizării unui sistem distribuit(pe orizontală)
în scopul realizării cerinţelor de timp real. Totodată, prin arhitecturile de reţele
industriale pe care le are la dispoziţie[11], permite configurarea unei aplicaţii de
automatizare complexă, având şi posibilitatea ierarhizării pe verticală a prelucrării
informaţiei. Conceptul TIA se referă la posibilitatea realizării cu echipamente
Siemens a tuturor nivelelor necesare unei arhitecturi de sistem de automatizare
ierarhizat şi distribuit. Această cerinţă a fost dezvoltată în idea realizării unei
7
configuraţii unitare, a unui efort minim de programare şi configurare, ceea ce se
traduce prin faptul că echipamente diferite, plasate pe diferite nivele ale sistemului
distribuit şi ierarhizat pot să comunice între ele(“să se înţeleagă”) în timp real şi
fără a realiza blocaje ce pot fi catastrofale în anumite situaţii. Această comunicaţie
între echipamente inteligente(echipamente bazate pe un nucleu cu microprocesor)
se realizează prin intermediul unor configuraţii de reţele industriale, cum ar fi:
-Industrial Ethernet(IEEE 802.3)-este un standard industrial bazat pe
standardul internaţional Ethernet putându-se construi o reţea puternică de
comunicaţii peste o arie extinsă geografic.
-Profinet(IEC 61158/61784)-arhitectura deschisă de standard industrial
Ethernet pentru automatizări, ce permite comunicaţii în timp real cu nivelul de
conducere directă a procesului şi totodată integrează şi nivelul de gestiune şi
planificare a producţiei.
-Industrial Wireless LAN(IEEE 802.11)-standard industrial pentru
comunicaţii wireless bazat pe standarde internaţionale.
-Profibus(IEC 61158/61784)-standard industrial pentru nivelul de câmp,
care este un lider mondial pentru sistemele de tip Fieldbus. Acest standard permite
comunicaţia între echipamente de pe nivelul de conducere directă a procesului,
având facilităţi de timp real şi siguranţa comunicaţiei.
-IO-Link-standard pentru conectarea traductoarelor şi elementelor de
execuţie inteligente din nivelul de câmp, cu nivelul superior.
Standardizarea protocoalelor de comunicaţie permite totodată inserarea în
arhitectura sistemului distribuit şi a altor echipamente NON-Siemens, de la
traductoare şi elemente de execuţie inteligente până la echipamente de calcul care
nu sunt în portofoliul Siemens. Aceasta înseamnă că arhitectura distribuită de
echipamente Siemens se încearcă a fi una deschisă(Open Arhitecture), şi nu una
proprietar care să fie specifică numai propriilor echipamente.
8
(Nivelul 4 Planificare)
(Nivelul 3 Organizare)
(Nivelul 2 Operare)
(Nivelul 0 de câmp)
Fig.4.7.Conceptul TIA(Totally Integrated Automation) 2016. Configurarea unei aplicaţii ierarhizată şi distribuită cu echipamente Siemens
9
4.3.Cloud Computing
4.3.1.Introducere
Conceptul de cloud computing a fost enunţat în anul 1961 de profesorul John
McCarthy, care a sugerat că o tehnologie de partajare temporală a resurselor unui
calculator ar putea duce la implementarea unui model de afaceri în care anumite
aplicaţii ar putea fi vândute ca servicii utilitare. Popularitatea acestei tehnologii a
crescut în ultimii ani, pe măsură ce o paradigmă computaţională a fost dezvoltată,
prin care se oferă acces mai multor departamente IT şi mai multor utilizatori la
server virtualizate.
Cloud computing este un concept global. Diferenţa între acest lucru şi noţiunea
de Internet global, este ca Internetul oferă globalizare doar legăturilor de
comunicare deja stabilite şi negociate, pe când cloud computing oferă acces la
resurse nelimitat. Deşi încă la începuturi, cloud computing devine foarte important
în contextul în care mediile IT actuale sunt nevoite să crească capacităţile sau să
adauge capacităţi noi în mod dinamic infrastructurilor existente, fără investiţii
majore în achiziţionarea de echipamente noi. Soluţia cloud computingului pentru
aceste necesităţi este o arhitectură care se axează pe utilizarea unui anumit serviciu
şi nu pe serviciu în sine.
Din punct de vedere topologic o soluţie cloud computing este compusă din mai
multe componente, fiecare cu un rol important în oferirea unei aplicaţii de tip
cloud:
➢ clienţi
➢ centrul de date
➢ servere distribuite
Internet
Centre de Date
Servere Distribuite
Clienți
4.3.2.Evoluţie
Cloud computingul are ca predecesori arhitecturi de tip client-server şi peer-
to-peer. Tot conceptul este de fapt modalitatea prin care stocarea centralizată
facilitează colaborarea şi cum un grup de calculatoare lucrează împreună pentru a
mări puterea computaţională.
Arhitectura client-server
În acest tip de arhitectură toate aplicaţiile software şi datele se află în cadrul
unor servere. Pentru ca un utilizator să acceseze resursele respective era necesar ca
acesta să se conecteze la serverul respectiv, să obţină acces şi drepturile necesare şi
apoi să efectueze operaţiile dorite prin „închirierea” programului respectiv.
Utilizatorii se conectează prin intermediul unui terminal, care nu are multă
memorie, spaţiu de stocare sau putere de procesare. Este doar un dispozitiv care
permitea clientului să se conecteze la server. Accesul nu este imediat şi nici nu este
posibil ca mai mulţi utilizatori să acceseze aceeaşi resursă simultan.
Din această cauză arhitectura client-server, deşi similară cu cloud computing
prin stocarea centralizată, are ca diferenţă majoră lipsa de concentrare asupra
utilizatorului.
Partajarea resurselor
În cadrul arhitecturii client-server, serverul reprezenta o posibilitate de blocaj
în sistem, deoarece orice comunicare între clienţii reţelei trecea prin server. A
apărut astfel nevoia de conectare directă între clienţi. Arhitectura peer-to-peer
defineşte o topologie de reţea în care fiecare client are capabilităţi şi
responsabilităţi egale. Astfel, fiecare calculator este pe rând client şi server
permiţându-se astfel schimbul de resurse şi de servicii direct.
Controlul este descentralizat, conţinutul fiind dispersat printre calculatoare
diferite.
Cea mai notabilă implementare a acestei arhitecturi este Internetul în starea
iniţială. Mesajele erau propagate între calculatoare. În starea actuală, fiecare site de
11
pe Internet, este servit de un grup de calculatoare, iar vizitatorii folosesc softuri
client (navigatoare web) să îl acceseze. Aproape tot conţinutul este centralizat, tot
controlul este centralizat, iar clienţii nu au autonomie sau control asupra
procesului.
12
În Fig.4.10. este descrisă dispunerea unui sistem tranzacţional de
disponibilitate ridicată. În cadrul unui astfel de sistem, un server de aplicaţii
modelează datele stocate într-o bază de date şi le prezintă, prin intermediul unei
interfeţe afişate într-un navigator web, iar utilizatorul poate manipula datele
respective după cum doreşte. Majoritatea aplicaţiilor web implementează un astfel
de sistem tranzacţional. Pentru disponibilitate ridicată, componentele pot forma un
grup, iar nivelul logic de prezentare să fie ascuns în spatele unui load
balancer(sistem de planificare si încărcare a aplicațiilor).
Integrarea unui sistem tranzacţional într-un cloud este un proces mai complex
decât integrarea unei arhitecturi de tip grid. Una din cerinţele principale ale unui
astfel de sistem este ca media temporală de eroare a unui server virtual să fie mai
mică decât media temporală a hardware-ului suport. Numărul nodurilor fizice
determină media temporală de eroare, şi din cauza micşorării numărului de noduri
fizice din cloud, acea medie este mai mare pentru oricare nod dintr-un sistem cu
procesare tranzacţională.
Clouduri comunitare
Cloudurile comunitare presupun împărţirea infrastructurii de cloud computing
între organizaţii din aceeaşi comunitate. Un exemplu ar putea fi toate organizaţiile
guvernamentale dintr-o regiune care pot împarţi o infrastructură pentru a
supraveghea şi administra datele persoanelor care locuiesc în acea regiune.
13
Clouduri private
În acest tip de cloud, infrastructura acestuia este dedicată unei singure
organizaţii, iar accesul persoanelor din afară companiei este strict interzis.
Cloudurile private pot fi de asemenea de două tipuri: clouduri găzduite local,
în clădirea organizaţiei respective şi clouduri găzduite extern într-o locaţie a unei
companii care oferă servicii de cloud computing.
Componentele cloudului
Infrastructura este compusă din clienţi, reţea şi servicii. Un loc foarte important
îl ocupă şi securitatea.
Clienţi
Nivelul client reprezintă modalitatea de interacţiune cu cloudul. Există mai
multe tipuri de clienţi şi fiecare dintre acestea oferă o modalitate diferită de
comunicare cu cloudul. Modul de interacţiune este determinat de nevoile
contextuale şi de limitările pe care fiecare tip de client le prezintă.
Clienti mobili
Gama de clienţi mobili variază de la laptopuri la PDA-uri şi telefoane
inteligente, cum ar fi Iphone sau Blackberry. Posibilităţile de a rula o aplicaţie
robustă de dimensiuni mari pe un telefon mobil sunt momentan reduse, însă
utilizatorii care folosesc laptopuri se pot conecta la cloud şi să acceseze aplicaţii
care se vor comporta ca şi aplicaţii native.
Principalele probleme întâmpinate de clienţii mobili sunt conectivitatea şi
securitatea. Deoarece clienţii se vor conecta la cloud din locaţii diferite, aceştia nu
vor avea o conexiune optimizată şi astfel nu se pot aştepta la viteza egale cu cele
întâlnite la clienţii desktop. Însă nu toate aplicaţiile au nevoie de conexiuni foarte
bune pentru a transfera un volum mare de date(evident NU în timp-real), iar
posibilitatea de a crea aplicaţii de către toată lumea, deschide posibilitatea
dezvoltării unor aplicaţii croite pentru clienţii mobili. O a doua problemă este cea
de securitate, dar există şi un avantaj. Prin natura lor, clienţii mobili pot fi pierduţi
sau furaţi şi astfel datele stocate pe dispozitive sunt vulnerabile, însă daca datele
14
sunt stocate pe cloud şi utilizatorul manipulează doar fişierele de care a avut nevoie
la momentul respectiv, restul datelor vor fi protejate în cazul pierderii/furtului
dispozitivului.
15
Procesare paralelă
Procesarea paralelă este realizată prin execuţia simultană a instrucţiunilor unui
program, care au fost alocate mai multor procesoare cu scopul de a micşora timpul
de execuţie al programului respectiv. Pentru a creşte performanţele, formele
iniţiale de procesare paralelă, permiteau execuţia întreţesută a mai multor programe
simultan.
Următoarea etapă în procesarea paralelă a fost multiprogramarea. Într-un astfel
de sistem, mai multe programe au dreptul de a utiliza exclusiv procesorul pentru un
anumit interval de timp. Această abordare este cunoscută sub numele de „round
robin” şi este unul din cel mai vechi, simplu şi mai des folosit algoritm de
planificare. De fiecare dată când un proces primeşte control asupra procesorului
are loc o schimbare de context, care induce o solicitare în plus în sistem. În acest
timp utilizatorul are impresia că programele sunt executate simultan. O problemă
caracteristică al acestui algoritm este competiţia pentru resurse.
Procesare vectorială
Următoarea etapă în evoluţia procesării paralele a fost introducerea procesării
multiple. În această abordare, două sau mai multe procesoare împart o slujbă
comună. Primele versiuni ale acestei metode au fost proiectate după principiul de
master-slave, în care procesorul master era responsabil pentru toate procesele din
sistem şi trimitea procesele slave-ului în funcţie de un prag prestabilit, conform
căruia procesele puteau fi mutate pentru a creşte performanţele.
Procesarea vectorială a fost dezvoltată pentru a creşte performanţele de
procesare printr-o funcţionare într-o manieră multitask. Au fost adăugate operaţii
matriciale pentru a permite unei singure instrucţiuni să manipuleze două şiruri de
numere care realizau operaţii aritmetice. Această abordare era avantajoasă în
aplicaţii în care datele erau reprezentate sub formă de vectorială sau matricială
Tehnologie
Eucalyptus a fost creat astfel încât să fie uşor de instalat şi cât mai maleabil la
reţeaua în care urmează să fie integrat. Cadrul software este unul foarte modular,
combinând diverse servicii web, care inter-operează folosind protocoale standard
de comunicare. Prin acest cadru platforma implementează maşini şi resurse de
stocare virtualizate care sunt interconectate prin intermediul unei reţele de nivel 2
OSI (Open System Interconnect) izolate.
Din perspectiva unei aplicaţii care rulează la nivelul client, interfaţa de
programare a aplicaţiei este compatibilă cu interfaţa AWS (Automatic Warning
System), existând suport atât pentru SOAP (Simple Object Access Protocol este o
specificatie de protocol pentru schimbul de informatii structurate în
implementările serviciilor web sau a rețelelor de calculatoare, cu scopul de a
induce extensibilitate, neutralitate și independență) cât şi pentru
REST(Representational State Transfer). Prin customizare se pot integra şi alte
interfeţe.
Fiecare componentă de nivel înalt a fost implementată ca un serviciu web
independent, având avantajul că fiecare serviciu web expune o interfaţă de
programare sub forma unui document WSDL(Web Services Definition Language),
care conţine atât operaţii care le poate efectua serviciul web respectiv, cât şi
structuri de date de intrare şi ieşire. De asemenea, se pot integra şi particularităţile
existente ale serviciului web, cum ar fi politicile pentru comunicare ce se sigură
între componente.
În Eucalyptus există patru componente de nivel înalt, fiecare cu interfaţa de
serviciu web propie:
• Controlerul de nod care se ocupă cu execuţia, administrarea şi terminarea
instanţelor de maşini virtuale de pe nodul de reţea pe care rulează.
• Controlerul de grup se ocupă cu acumularea de informaţii şi cu programarea
execuţiei maşinilor virtuale de pe anumite controlere de nod, dar şi cu
administrarea instanţei virtuale a reţelei.
• Controlerul de stocare (Walrus) este un serviciu de stocare/interogare, care
implementează interfaţa Amazon S3, oferind un mecanism pentru salvarea şi
accesarea imaginilor de maşini virtuale şi a datelor utilizatorilor.
• Controlerul de nor este punctul de intrare în nor pentru utilizatori şi
administrator. El interoghează agenţii administratori de noduri, ia decizii
legate de planificarea de nivel înalt şi implementează agenţii administratori
de noduri prin efectuarea de cereri către controlerii de grup.
17
Fig.4.12. Arhitecutra Eucalyptus
Controlerul de nod
Un controler de nod se execută pe fiecare nod desemnat pentru acomodarea
maşinilor virtuale. Un astfel de controler interoghează şi controlează software-ul
sistemului, ca răspuns la interogările şi comenzile de control primite de la
controlerul de grup.
Această entitate interoghează nodul pentru a afla informaţii legate de resursele
fizice ale nodului respectiv, cum ar fi numărul de procesoare, dimensiunea
memoriei, spaţiul pe disc, dar şi informaţii legate de starea instanţelor maşinilor
virtuale de pe nodul respectiv. Informaţiile colectate se vor propaga la controlerul
de grup ca răspuns la cereri de tip „describeResource” şi „describeInstances”.
Controlerele de grup administrează instanţele maşinilor virtuale de pe un nod
prin efectuarea de cereri „runInstance” şi „terminateInstance” către controlerul de
nod. După verficarea autorizaţiilor, deoarece doar un administrator al instanţei are
dreptul de a termina instanţa respectivă, şi după confirmarea disponibilităţilor
resurselor, controlerul de nod execută cererea. Pentru a porni o instanţă un
controler de nod efectuează o operaţie de copiere a imaginilor instanţei (kernelul,
sistemul de fişiere de root şi imaginea ramdisk), fie dintr-o sursă la distanţă, fie din
memoria cache locală, creând astfel o nouă intrare în reţeaua virtuală. Pentru a opri
o instanţă, controlerul de nod lansează o cerere către hipervizor de a termina
instanţa maşinii virtuale, acesta ştergând intrarea în reţeaua virtuală şi şterge
fişierele asociate cu instanţa respectivă.
Controlerul de grup
Această entitate se execută în general, pe o maşină din cluster care este
interconectată atât cu un controlerul de nod cât şi cu o maşină pe care rulează
controlerul de cloud. Multe din operaţiile controlerului de grup sunt similare cu
cele ale entităţii prezentate anterior, diferenţa fiind că se adresează mai multor
entităţi.
Controlerul de grup are trei funcţionalităţi:
• Planificare pe controlere de nod a rulării instanţelor primite
18
• Controlează acoperirea reţelei virtuale
• Adună seturi de statistici de la anumite controlere de nod.
Controlerul de nor
Resursele virtuale care compun cloudul Eucalyptus sunt administrate de
controlerul de cloud. Această entitate este o colecţie de servicii web care pot fi
grupate, în funcţie de atribuţii, în trei categorii:
• Servicii de resurse, care realizează arbitrarea alocării resurselor, permit
utilizatorilor să manipuleze proprietăţile maşinilor virtuale şi ale reţelei, şi
monitorizează atât componentele sistemului, cât şi resursele virtuale
• Serviciile de date controlează datele sistemului şi oferă un mediu
configurabil pentru utilizator prin care să se formuleze metode de alocare de
resurse
• Serviciile de interfaţă prezintă interfeţele prin care utilizatorul poate
interacţiona cu sistemul, având ca atribuţii autentificarea şi translaţia de
protocol.
Epilog:
După cum se poate observa din prezentarea acestui subcapitol, există o
multitudine de tehnologii specializate anumitor clase de aplicații. Din păcate,
pentru noi, ca ingineri automatiști, pare un păienjeniș de tehnologii software,
DAR, toate au la bază noțiuni standard, multiprelucrare, virtualizare,
controler de nod, controler de grup, etc....
Aceste tehnologii încep să coboare spre zona aplicațiilor de timp-real
specifice aplicațiilor de control abordate pentru procese din ce în ce mai
complexe. Conceptul de cloud computing este o componentă importantă
pentru abordările actuale din noul concept Industry 4.0.
20
După ce soluţia de control proiectată a fost testată şi validată, se trece la proiectarea
sistemului hardware care va încorpora într-un mod foarte dedicat numai soluţia respectivă.
Fig.4.14. Arhitectura sistemului pentru testare şi validare pentru ECU (Electronic Control Unit)
O altă etapă foarte importantă este testarea soluţiei hardware şi software proiectată, etapă
denumită Hardware In the Loop(HIL). Platforma cu arhitectură deschisă şi flexibilă bazată pe
echipamente National Instruments permite configurarea rapidă şi consistentă în funcţie de nevoile
unui proiect inovativ. Acest lucru permite realizarea celor mai complexe teste ale algoritmilor de
21
control deja implementaţi hardware, prin care se emulează, in timp real, condiţiile de funcţionare
a autoturismului. Arhitectura principială este prezentată în Fig.4.15.
22
Criterii de Perturbatii
Program calitate
impus Mărimi de
Obiectul conducător Decizii Sistemul de
comandă Obiectul
(Dispozitivul de transmitere şi condus Mărimi de
conducere) aplicare a (instalaţia calitate
REGULATOR deciziilor Output
Comenzi
EE Marimi de automatizată)
IT
executie
Mărimi de
reacție Feed-back
Mărimi
Sistem
măsurate
informaţional
(traductoare)
TR
Alg.de conducere Partea fixă a sistemului de conducere
automată Fig.4.16.Structura unui sistem de conducere automată
Obiectul conducător, prin prelucrarea unui algoritm de conducere pe baza informaţiilor din
proces furnizate de traductor - TR, a mărimii de referinţă şi criterii de calitate impuse, elaborează
decizii care se transmit către elementele de execuţie - EE. Elementele de execuţie aplică aceste
decizii direct procesului sub formă de comenzi.
Deciziile de conducere au ca scop îndeplinirea de către obiectul condus a unui program
impus, în condiţiile îndeplinirii unor criterii de calitate, a satisfacerii unor restricţii de
funcţionare, în condiţiile în care asupra obiectului condus acţionează inevitabil o serie de
perturbaţii. Structura de mai sus este o structură de conducere în circuit închis >>Feed-Back<<
deoarece deciziile aplicate la un moment dat sunt dependente şi de efectul deciziilor anterioare
(reprezentat de mărimile de ieşire ca efect). Aceasta exprimă circuitul închis al informaţiilor prin
mărimile de reacţie: fenomenul de reacţie sau feed-back. Dacă lipseşte legătura de reacţie,
sistemul este în circuit deschis şi se numeşte sistem de comandă.
Un sistem de conducere în structura de mai sus se numeste sistem de conducere automată,
deoarece este capabil sa elaboreze decizii folosind mijloace proprii de informare. Totodată se
poate observa din Fig.4.16. că o parte a structurii de conducere automată reprezintă partea fixă,
iar cealaltă parte este reprezentată de algoritmul de conducere. Partea fixă este reprezentată de
procesul real împreună cu totalitatea traductoarelor şi elementelor de execuţie prezente la nivelul
instalaţiei tehnologice. Denumirea de “parte fixă”, provine din faptul că în activitatea de
proiectare a unei structuri de conducere, procesul real împreună cu elementele de execuţie şi
traductoarele sunt luate ca atare, rezultatul proiectării fiind algoritmul de conducere. Astfel,
algoritmul de conducere este de fapt o parte “variabilă”, în sensul că este o soluţie obţinută în
cadrul unei activităţi de proiectare.
Această soluţie de conducere proiectată pentru un proces real nu este unică şi astfel
proiectarea unei suluţii de conducere “mai bună” pentru acelaşi proces rămâne în continuare o
provocare actuală pentru inginerii automatişti. Datorită faptului că soluţia de control este de fapt
acel algoritm de conducere (“o funcţie matematică”), se poate spune că o structură de conducere
are şi o componentă virtuală în strânsă legătură cu componenta fizică a procesului. Astfel,
structura din Fig.4.17.a) se va transforma în blocul din Fig.4.17.b).
23
Criterii de
calitate Perturbații
Program
impus
Obiectul Sistemul de Mărimi de Obiectul
Decizii
conducător transmitere şi execuție condus
Alg. de control aplicare a (PROCES) Mărimi de
Alg(...) deciziilor IT(...) calitate
EE(...)
Mărimi de
reacție Feed-back Fig.4.17.a).
Mărimi Structura
măsurate unui sistem
(traductoare)
TR(...)
de conducere
automată
24
Fig.4.18.Evoluţia performanţelor proceselor
prin implementarea de soluţii de control avansate
Din relaţia generică (4.1), se poate obţine o altă relaţie generică:
Alg(...) = g H (...), PF (...) (4.2)
Relaţia (4.2) exprimă principiul care stă la baza proiectării structurilor de conducere şi exprimă
ideea că Alg(...) -algoritmul de conducere proiectat depinde în mare măsură de ceea ce vrem să se
întâmple cu procesul, adică H (...) , şi cât de bine este cunoscut în realitate procesul PF (...) . Cum
presupunem că ştim ce vrem, adică H (...) este bine definit, problema care rămâne este gradul de
aproximare al părţii fixe (procesul real) cu un model matematic PF (...) . În funcţie de precizia de
modelare a procesului fizic real, Alg(...) -algoritmul de conducere poate influenţa performanţele
obţinute, mergând de la “ceva foarte bun”, până la “ceva foarte prost” sau chiar instabilitate.
De aceea, ca o concluzie foarte importantă, apare ideea că soluţia de automatizare NU ESTE
UNICĂ şi astfel poate fi îmbunătăţită în continuu în timp.
4.4.2.Tehnologii FPGA
Circuitele FPGA (Field Programmable Gate Array) sunt arii de elemente logice
independente, configurabile, interconectate printr-o reţea de rutare şi matrici de comutare
configurabile. Acestea sunt echipamente hardware ce permit de asemenea implementarea de
algoritmi de procesare numerică a semnalelor. Spre deosebire de DSP(Digital Signal Processor)
circuitele FPGA reprezintă soluţii hardware reconfigurabile.
25
Fig.4.19.Arhitectura FPGA
Date Date
de Algoritm.exe de
intrare ieșire
➢ Bloc de Memorie
➢ Configurare Logică Date Date
➢ Procesare Digitală de de
intrare ieșire
➢ Interconexiuni
programabile
➢ Bloc Intrări/Ieșiri
Date Task 1 Date
de de
intrare ieșire
Task 2
Avantajul principal al FPGA: viteză extrem de mare de procesare complexă pentru o anumită
aplicaţie +determinism la nivel de prelucrare.
Dezavantajul principal al FPGA: implementarea de algoritmi complecşi presupune utilizarea de
circuite FPGA de capacitate mare şi, implicit, consumuri mari de putere în comparaţie cu
implementarea pe procesoare DSP.
În acest context a apărut ideea unei tehnologii de tip SoPC (System on a Programable Chip),
care:
➢ permit dezvoltarea de aplicaţii folosind microprocesoare impreuna cu hardware
programabil realizat în tehnologie FPGA
➢ procesoarele pot fi “hardware” – circuite integrate sau “software” – implementate în
tehnologie FPGA pe aceeaşi arie logică programabilă ce implementează circuitele
hardware.
26
O astfel de tehnologie a fost implementată în urma cu 5 ani de firma National Instruments
pe Platforma NI PAC (Programable Automation Controller), ce se poate programa în mediul de
dezvoltare grafică LabVIEW, şi combină fiabilitatea şi robusteţea automatelor programabile
(PLC - Programmable Logic Controller), cu performanţele unui PC (Personal Computer), cu
flexibilitatea circuitelor FPGA (Field Programmable Gate Array)
Acest sistem are o construcţie robustă, ce permite plasarea acestuia în mediul industrial în
apropierea procesului fizic. Noutatea pe care o introduce este posibilitatea prelucrării complexe a
semnalelor achiziţionate la nivel hardware, fară a mai fi obligatorie transmitearea semnalului
achiziţionat la distanţă pentru a fi prelucrat de un sistem de calcul puternic. Astfel, rezultatele
prelucrării se obţin în timp real, ceea ce conduce la obţinerea de decizii complexe pentru proces,
tot în timp real.
Arhitectura sistemului prezentată în Fig.4.22. se bazează pe inserarea unui circuit FPGA
între arhitectura de sistem cu microprocesor NI-9074 şi sistemul de achiziţie. In general, o
arhitectură cu microprocesor, presupune o operaţie de extragere instrucţiune din memorie,
decodificare, prelucrare, depunere rezultate în memorie. In contrast, execuţia unei instructiuni la
nivelul unui circuit FPGA se realizează direct la nivel hardware, avînd cel mai mic timp de
prelucrare posibil. Totodată, la nivelul circuitului FPGA se realizează prelucrarea mai multor
canale de achiziţie simultan, ceea ce permite prelucrări de complexitate mare pentru informaţia
eşantionată din procesul real.
Cu tehnologia FPGA se pot dezvolta aplicaţii de achiziţie de date de viteză foarte mare,
procesarea complexă a datelor din proces în timp real, sincronizarea foarte precisă a aplicaţiei în
raport cu anumite evenimente, prelucrarea în paralel (practic simultan) a mai multor semnale
provenite de la senzori plasaţi în instalaţie. Pentru actiunile de control automat, algoritmii de
control avansat se pot rula direct în circuitul FPGA pentru a minimiza întârzierile şi a maximiza
viteza de baleere a buclelor de reglare. Soluţiile actuale de control avansat necesită prelucrări
matematice complexe dar şi execuţie în timp real, unde vine cu un sprijin important această
arhitectură.
Principalul avantaj al platformei este faptul că realizează o combinaţie a modularităţii
canalelor de Intrare/Ieşire, procesare real-time şi programare într-un mediu de dezvoltare de nivel
înalt cum este LabVIEW. Totodată, dezvoltarea aplicaţiei de prelucrare în timp real folosind un
mediu de dezvoltare de nivel superior (cum este mediul de dezvoltare LabVIEW), aduce o
creştere de productivitate la nivel software dar şi implementarea de prelucrări matematice
complexe.
Noutatea pe care o introduce este posibilitatea prelucrarii complexe a semnalului la acest
nivel fară a mai fi obligatorie transmitearea semnalului achiziţionat la distanţă, pentru a fi
27
prelucrat de un sistem de calcul puternic. Astfel rezultatele prelucrării se obţin în timp real, ceea
ce conduce la obţinerea de decizii complexe pentru instalaţie tot în timp real. Totodată se elimină
necesităţile de transmisie şi de stocare a unor mari cantităţi de date (eşantioanele semnalului de
vibraţie) pentru prelucrări complexe ce se vor realiza ulterior. Prelucrarea ulteriara a datelor
stocate evident nu se realizeaza în timp real.
28
Organizarea unei aplicatii la nivel software se bazează pe realizarea unui proiect în mediul de
dezvoltare LabView, conform Fig.4.23. care ţine cont de configuraţia hardware.
Corespunzător circuitului FPGA avem fişierul FPGA.vi ce va fi compilat şi încărcat chiar
în circuitul FPGA. Prelucrările complexe ce pot fi făcute sunt: generare semnal, funcţii de
interpolare, control liniar şi neliniar, PID, lucrul cu matrice, funcţii trigonometrice, transformata
Z, transformata Fourier, diverse filtre, bucle temporizate, timere de timp real, funcţii de
comunicaţie, etc.
Fisierul RT.vi, corespunde procesorului ce lucrează în timp real la nivelul sistemului
CompactRIO, ce poate realiza operaţii complexe, specifice procesoarelor CISC. La nivelul
acestui procesor se realizează gestiunea rezultatelor prelucrării de timp real şi obţinerea unor
decizii corespunzătoare şi comunicarea cu un sistem de calcul de pe un nivel superior pentru
coordonare. Pe portul serial RS 232 se poate conecta şi un afisor ce poate afişa diverse informaţii
local.
Fisierul GUI.vi, este instrumentul virtual ce reprezintă aplicaţia rulată pe calculatorul
gazdă. Acesta poate realiza funcţiuni de prelucrare suplimentară a semnalelor eşantionate, a
rezultatelor primite de la sistemul NI CompactRIO, prelucrarea/prezentarea la nivelul unui
sistem SCADA/HMI a informaţiei, gestiunea unei baze de date.
La nivel de
calculator
Fig.4.23.Aplicatia
la nivel software
de achizitie si prelucrare
in timp real
La nivel de procesor
cRIO
Cu ajutorul configuratorului on-line de la National Instruments se propune o arhitectura,
ca exemplu, ce poate achizitiona un numar mare de semnale de vibratii. Sistemul multicore NI
cRIO-9082 este prezentat în Fig.4.24. şi este organizat în jurul unui procesor dual-core Intel i7,
cu port de ieşire VGA pentru conectare terminale grafice. Sistemul utilizează opţional ca sisteme
29
de operare Microsoft Windows Embedded Standard 7 (WES7) sau LabVIEW Real-Time. În
configuratia propusă se pot insera 8 module de achiziţie vibraţii NI-9234 cu 4 canale fiecare,
ceea ce înseamnă un numar de 32 de semnale de vibraţii achiziţionate. Folosind extensia cu 14
sloturi, se pot insera încă 14 module de achiziţie vibraţii NI-9234 cu 4 canale fiecare, ceea ce
înseamnă 56 de semnale. În total, cu configuraţia propusă pot fi achiziţionate și prelucrate 88
semnale de vibraţii simultan. Noutatea introdusă de sistem este faptul că se obţin prelucrări de
semnale sincrone de vibraţii, ceea ce înseamnă informaţii deosebit de importante şi complete,
despre structura mecanică analizată.
Prelucrare Achiziţie şi Prelucrare
30
Fig.4.25. Sistemul NI CompactRIO
31
4.4.3.Principiul și aplicabilitatea IoT
În mare IoT(internetul obiectelor) se bazează pe faptul că toate echipamentele actuale din jurul
nostru se bazează pe câte un sistem cu microprocesor ce evident poate foarte ușor să comunice
cu celelalte, ca în Fig.4.28
Dacă inițial ideea a fost valorificată masiv în aplicații de telefonie mobilă, domotică, etc. tendința
actuală(deja cu un procent mare de implementare) este trecerea spre sisteme industriale, mai
precis, aplicații de timp real valorificate de domeniului Automatică în toate domeniile tehnice
consacrate, ca în Fig.4.29
Termenul de “Smart”(inteligent) deși este specific doar sistemelor biologice, începe să capete
utilizare tot mai mare:
➢ Smart grid
➢ Smart City
➢ Smart Machines......etc.
32
Toate aceste abordări au în comun ideea de sistem cu procesor care poate comunica cu alte
procesoare din jurul lui.
Totuși, cu toate astea apare problema că nu pot fi prelucrate decât un procent foarte mic de date
din multitudinea de date existente în lumea reală. Practic procesoarele și unitățile de stocare sunt
inundate de volumul mare de date ce trebuie prelucrate. Evident că pe perioada de timp cât se
prelucrează, datele apărute sunt pierdute. În concluzie, cu toată puterea de prelucrare a
procesoarelor actuale nu pot fi prelucrate decât un procent în jurul a 5%.
33
Epilog:
Principiile IoT au migrat, la ora actuală, foarte mult spre zona industrială, ca aplicații de
timp-real și pot fi puse în evidență foarte multe exemple:
➢ Se cercetează și se lucrează intens în domeniul Automotive ca automobilele să
comunice între ele și să ia decizii. Ideea se extinde rapid în domeniul aviatic, mașini
agricole.....
➢ La nivelul unei fabrici utilajele se sincronizează între ele pentru a realiza diverse
prelucrări, așteptând unele după altele sau optimizând consumul de energie sau timpii
de prelucrare totali. De exemplu acolo unde pe o linie tehnologică sunt multe motoare
mari, ele pot fi pornite în cascada în momentul când produsul prelucrat a ajuns la
postul de lucru respectiv. pornirea simultană introduce armonici în sistemul energetic
cu costuri/pierderi imense
Noțiuni generale
Noțiunea de automatizări industriale a căpătat valențe greu de imaginat în urmă cu 10 ani.
Multitudinea de echipamente de procesare, traductoare și elemente de execuție existentă pe piață
conduce la o problemă foarte mare, legată de interoperabilitatea, conectarea și comunicarea
acestora. Totodată procesele abordate sunt din ce în ce mai complexe și au nevoie de informații
de la cele mai diverse traductoare. Chiar dacă s-a încercat o anumita standardizare de-a lungul
timpului, datorită evoluției exponențiale de echipamente din punct de vedere tehnic a fost
perpetuată acestă problemă. Conceptul TIA (Totally Integrated Automation) dezvoltat de firma
Siemens încearcă să rezolve acestă problemă. Astfel, Siemens încearcă să ofere echipamente la
nivel hardware, de la traductoare, elemente de execuție până la sisteme de calcul care să acopere
o plaja foarte largă de aplicații, dar care să comunice între ele într-un mod sigur, eficient, în
timp-real. La o primă vedere, acest lucru ar însemna că “te cam forțează să cumperi numai de la
ei”. Totuși, Siemens nu exclude ceilalți producători deoarece furnizează drivere software pentru
conectarea și a altor echipamente conform standardelor actuale, dar nu garantează(și nu au cum
să facă asta) eficiența unei comunicații cu echipamente NON-Siemens.
În general orice echipament Siemens este de cel mai multe ori cam de 10 ori mai scump
decât orice alt echipament similar produs de altă firmă. Totuși, prin abordarea unei aplicații
complexe de automatizare distribuită și ierarhizată folosind echipamente Siemens, prețul total
poate să fie chiar mai mic. Acest lucru de datorează chiar optimizărilor la nivel de eficență în
comunicații(rețele industriale), traductoare și elemente de execuție inteligente care se conectează
direct în rețea, optimizări la nivel de mentenanță (identificare de defecte funcționale),
ierarhizarea echipamentelor hardware pe nivelele consacrate ale sistemului ierarhizat, timp-real
global foarte bun, etc. Acest lucru se repercutează în eficiență și productivitate la nivelul
mediului industrial, deoarece se elimină timpi de staționare accidentală deoarece s-a blocat o
comunicație între 2 echipamente create de 2 furnizori diferiți. Totodată, în mediul industrial este
nevoie de o anumită flexibilitate în reconfigurarea unei aplicații în funcție de un nou produs care
se realizează. De exemplu în industria de autoobile se realizează un model nou la fiecare cîteva
luni.
Principalele avantaje ale implementării unei aplicații complexe mari bazată pe acest
principiu ar fi:
➢ Eficiență în proiectarea unei aplicații de control distribuită și ierarhizată cu avantaje de timp
scurt de realizare și costuri reduse
➢ Minimizarea timpilor de întreruperi în funcționarea procesului prin funcții de diagnosticare
integrate
➢ O mare flexibilitate prin sistemul de comunicație integrat
34
➢ Securitate la nivel de rețea și proces prin funcțiile de securitate integrate direct în
echipament
➢ Protecția personalului, a utilajelor și mediului prin funcțiile de securitate integrate
➢ Creșterea calității activității de control/reglare prin consistența datelor(Orice sistem de
control se bazează pe informații obținute de la anumiți senzori sau direct din rețea.
Informații necalibrate sau care nu sunt disponibile în timp real mai mult încurcă decât să
ajute un sistem de reglare)
➢ Performanțe de ansamblu mărite prin interoperabilitatea componentelor de sistem ce a fost
testată în prealabil de Siemens
35
Fig.4.32. Sistemul distribuit și ierarhizat la nivel hardware pentru un proces industrial complex
36
Fig.4.33. Arhitectura de sistem distribuit și ierarhizat la nivel hardware
37
➢ Siguranță integrată(protecția personalului, instalației și mediului>>>este implementată
pe rețele de comunicație standard și mai nou prin Wi-Fi)
✓ SIMATIC STEP 7 este cel mai cunoscut și mai folosit în lume mediu de dezvoltare
pentru automatizări industriale bazat pe echipamente de tip PLC(Programmable
Logic Controller, adică automate programabile pe Oltenește). Noul mediu de
dezvoltare disponibil în TIA portal prezintă funcționalități îmbunătățite în raport cu
noile arhitecturi de procesoare.
✓ SIMATIC WinCC este un mediu de dezvoltare pentru interfețe grafice legate de
procesul condus, dar are și funcționalități de dezvoltare sisteme SCADA(Supervisory
Control and Data Aquisition). Acest mediu de dezvoltare pune la dispoziție unelte
software puternice pentru creare aplicații HMI(Human Machine Interface) , integrare
și conectivitate cu diverse baze de date și sisteme de achiziție produse de Siemens
sau de alți furnizori.
✓ SINAMICS Startdrive este un mediu de configurare și integrare intuitivă a
convertizoarelor de frecvență în aplicațiile distribuite și ierarhizate.
✓ SIMOTION Scout TIA este un mediu de configurare, optimizare și control cu
precizie a mișcării(sunt de fapt servomotoare folosite la strunguri, linii flexibile de
fabricație)
✓ SIMOCODE este un mediu de dezvoltare pentru configurarea, monitorizarea,
protecția motoarelor prin mentenață predictivă, etc.
38
✓ Power distribution este un mediu de dezvoltare prin care se realizează gestiunea
furnizării de energie din stațiile electrice, protecții, interblocaje.
Epilog:
▪ Sistemele Siemens acoperă în lume cea mai mare paletă de domenii și aplicații, DAR
nu trebuie subestimat și alte firme ce pe anumite zone mai înguste din anumite
domenii au echipamente la fel sau chiar mai performante(ABB, Honeywell, Alley-
Brandley, Oron, Moeller-Eaton, Emerson, National Instruments, etc.).
▪ Prezentarea principială a sistemelor și conceptelor Siemens din acest capitol a fost
făcută în contextul în care astfel de echipamente se gasesc într-un procent semnificativ
în mediul industrial (chiar și din Oltenia): Heineken, Pirelli, Ford, Reno-Dacia Pitesti,
Stații de transformare Cez, Complexul Energetic Oltenia, Continental-producție
sisteme electronice, Stații de Epurare, Hidrocentrale, Platforme petroliere, etc.
39
Fig.4.36. Arhitectura hardware a sistemului DCS Ovation
După cum se poate vedea din Fig.4.36. arhitectura sistemului distribuit dezvoltat de firma
Emerson seamănă cu arhitectura ISO/OSI de la rețelele standard pe care a îmbunătățit-o cu
nivele și structuri dedicate aplicațiilor abordate. Cu toate că este diferit punctul de vedere, totuși
aceleași principii sunt folosite ce diferă doar modul de abordare și evident detaliile de
implementare.
40
Fig.4.37. Principiul arhitecturii ierarhizată a sistemului DCS Ovation
Epilog:
❖ Conceptele prezentate în aceste subcapitole precum și firmele respective sunt oarecum
abordări de referință din domeniul automatizărilor, dar evident nu sunt singurele
firme....
❖ Firma Siemens s-a concentrat pe obținerea de echipamente foarte fiabile pentru
mediul industrial, pe care le oferă dezvoltatorilor de aplicații de automatizare. Practic
există “un catolog” de unde un inginer automatist poate să facă o configurație
hardware și software conform aplicației dorite.
❖ Firma Emerson dezvoltă soluții de aplicații, folosind, pe lângă echipamentele proprii,
orice echipamente furnizate de diverși. Mai mult decât atât, în funcție de soluția pe
care o abordează poate să proiecteze noi echipamente care nu sunt pe piață în acel
moment.
❖ O comparație puțin exagerată, dar care exprimă mai bine ideea:
✓ Siemens seamănă cu Microsoft, adică totul este pe câteva CD-uri de unde
utilizatorul instalează ce dorește să folosească.
✓ Emerson seamănă cu sistemele UNIX, unde utilizatorul merge la inginerii
specialiști care întreabă ce aplicație urmează să se implementeze și
configurează ei echipamentul hardware(sistemul PC) și sistemul de
operare(compilează corespunzător SO). Practic, firma Emerson preia aplicații
foarte complexe și caută soluții de abordare.
41
4.7.Industrie 4.0
Noțiunea de “Smart Industry” sau “Industrie 4.0”, înseamnă trecerea de la sisteme
embedded (sisteme încapsulate) la sisteme inteligente(cyber-phisical systems sau smart
embedded sistems) care comunică între ele pentru realizarea unui anumit task cu productivitate
mult mai mare. Mai simplu, Industrie 4.0 reprezintă cu adevărat o nouă revoluție industrială,
bazată pe noile tehnologii de tip IoT(Internet of Things), gestiunea globală a datelor prin stocarea
în Cloud și servicii inovative aplicate proceselor industriale. Totodată, Idustrie 4.0 reprezintă o
un compromis între “DESCENTRALIZARE” și “CENTRALIZARE” la nivel de producție
industrială, cu scopul generării de productivități la un nivel foarte înalt. Astfel instalațiile
industriale comunică între ele pentru realizarea unui anumit task.
Încapsularea între componenta virtuală a unui sistem de control(soluția de control) și a
procesului real/fizic conduc la un nou sistem mai performant. Mai mult, comunicarea între
instalațiile dintr-o fabrică conduc la noul concept de fabrică inteligentă(smart factory). Cum
orice sistem de control automat se bazează pe informație, prin comunicație smart(inteligentă) se
realizează accesul la acestă informație on-line și relativ în timp real, iar prin tehnologiile Cloud
se realizează accesul la informația off-line. Fuziunea acestei cantități mari de informație on-line
și off-line conduce la dezvoltarea unor soluții de control forte bine documentate ce coduc la
performanțe inimaginabile în urmă cu numai cățiva ani.
Pe scurt, paradigma industrie 4.0 poate fi percepută ca având la dispoziție posibilități
hardware imense(sisteme de achiziție, traductoare inteligente, elemente de execuție inteligente)
și o “inundație” de unelte software, se crează premisa dezvoltării unor soluții de control cu
adevărat “advanced”. Percepția este că rolul ideii de automatică/control/reglare este miezul
acestei paradigme. După cum se știe de la ingineria reglării automate, soluția de control nu este
unică și astfel rolul generației actuale de ingineri automatiști este de a găsi cea mai bună soluție
de decizie pentru procesul condus. Fără a greși, se poate spune că INDUSTRI4.0 =
AUTOMATICĂ în cea mai mare parte. Avem hardware, avem software, avem comunicație,
rămâne să vedem ce facem cu ele....
Industrie 1.0 este considerată prima revoluție industrială, generată de turbina cu abur, ce
a deschis calea unor dezvoltări tehnologice deosebite.
42
Fig.4.39. Dezvoltări tehnologice deosebite în contextul Industrie 1.0
A doua revoluție industrială sau Industrie 2.0 este considerată descoperirea energiei electrice,
care din nou a fost motorul unor dezvoltări tehnologice deosebite.
A treia revoluție industrială sau Industrie 3.0 a fost generată de electronică și tehnologia
informației(IT) care a cunoscut o dezvoltare foarte mare în ultimii 20 de ani. Prin 1996 se vorbea
deja de atingerea limitei tehnologice în circuitele integrate cu siliciu(demonstrații matematice) și
chiar erau idei de a dezvolta procesoare biologice(în acestă idee au fost dezvoltate concepte de
43
rețele neuronale), se pare că evoluția nu a fost cea estimată. Totuși puterea de calcul a crescut
foarte mult prin evoluția conceptului de Tehnologia Informației, ce a permis concatenarea acelor
tehnologii limitate în tehnologii “multicore”. Avem astăzi procesoare quad-core, octo-core, etc.
Mai mult, procesoarele actuale sunt tehnologii CISC(Complete Set Instruction Set) peste
RISC(Reduced Set Instruction Set). Mai pe oltenește, nucleul procesoarelor actuale este RISC,
iar completarea cu instrucțiuni se face în mod emulat software. Se poate observa că acolo unde
tehnologia hardware a fost limitată s-a mers mai departe cu extinderea funcționalităților în mod
virtual, prin software.
44
Fig.4.44. Industrie 4.0
Epilog:
➢ În contextul celor expuse, Industrie 4.0 este o paradigmă deschisă de principii, care va
fi în perioada următoare direcția de abordare în mediul industrial și nu numai.
➢ Avem hardware, avem software, avem comunicație, rămâne să vedem cum le vom
valorifica pentru a adăuga tuturor echipamentelor industriale dar și funcționării
societății, apelativul “SMART”
➢ O soluție de control nu este nici hardware (cum ar spune inginerii hardware) nu este
nici software (cum ar spune IT-iștii), ci este o funcție matematică/algoritm pe care îl
descoperă/proiectează doar inginerii automatiști. Evident că soluția de control este
implementată și „pe” hardware, și „în” software. În acest context, automatica fără
celelalte meserii NU EXISTĂ, dar nici celelalte meserii NU SUNT COMPLETE în
ziua de azi fără să fie legate împreună de un inginer automatist.
➢ Dezvoltarea unei aplicații în direcția Industrie 4.0 înseamnă că inginerul automatist va
colabora cu: inginerii hardware, inginerii software, matematicieni, biologi, sociologi,
inginerii tehnologi (chimiști, energeticieni, mecanici, etc.)
➢ Fără a greși, se poate spune că INDUSTRI4.0 = AUTOMATICĂ în cea mai mare
parte, prin ideea proiectării unor soluții de control advanced (smart).
➢ Valabil pentru inginerii automatiști:
45
Cap.5.Sisteme programabile bazate pe circuite FPGA
Introducere
Sistemele încorporate (embedded systems) au devenit deja o direcție de bază în electronică și
automatică. Prin sistem încorporat se înţelege un sistem electronic digital de dimensiuni reduse, proiectat
pentru o aplicaţie specifică, lucrând sub incidenţa unor constrângeri de timp real. Termenul “încorporat”,
este o traducere aproximativă a mult mai cunoscutului şi acceptatului termen “embedded” din limba engleză
și se poate aplica unui sistem din mai multe puncte de vedere:
➢ Aceste sisteme electronice încorporează, din punct de vedere fizic, o soluție de control automat sau
un algoritm de prelucrare într-un produs efectiv, formând un tot unitar cu elementele electronice,
electrice şi mecanice cu care interacţionează.
➢ Dintr-o altă perspectivă, termenul se aplică adesea cu privire la sistemul de calcul ce formează
centrul sistemului digital: acesta nu este un procesor obişnuit, de tipul celor utilizate în
calculatoarele personale, ci încorporează pe un singur cip şi memorie de program, de date şi circuite
periferice. De obicei, aceste cipuri sunt microcontrolere (un calculator într-un chip) sau controlere
digitale de semnal (DSC – Digital Signal Controller). Acest din urmă termen este folosit recent
pentru desemnarea unor circuite complexe de tip microcontroler, dotate cu periferice puternice
(interfețe hardware de proces), al căror procesor este însă proiectat special pentru a realiza eficient
operaţii specifice domeniului prelucrării digitale de semnal. DSC-urile sunt aşadar o combinaţie
între microcontrolere şi procesoare digitale de semnal (DSP – Digital Signal Processor).
➢ O a treia accepţiune a termenului “încorporat” se referă la faptul că aceste sisteme sunt de obicei
bazate pe un procesor, iar acesta rulează un program ce execută sarcinile sistemului. Aşadar,
sistemul încorporat nu este reprezentat doar de circuitele hardware ce-l compun, ci încorporează şi
algoritmul software ce se execută pe el.
În acest context, circuitele FPGA (Field Programmable Gate Array) reprezintă la momentul actual
platforme pentru sisteme digitale complexe şi oferă elemente computaţionale din ce în ce mai sofisticate şi
mai numeroase. Termenul FPGA, tradus în româneşte prin matrice sau arie de porţi logice re-programabilă,
are o conotaţie mai mult istorică, pentru că dispozitivele FPGA nu mai sunt doar circuite reconfigurabile
ce pot implementa funcţii logice complexe, cum erau inițial la apariţia lor, când se utilizau doar ca logică
de legătură în sistemele cu procesor.
Acum, pe un circuit FPGA se integrează blocuri de memorie RAM (Random Access Memory) şi
multiplicatoare hardware sau chiar celule DSP bazate pe operaţia combinată înmulţire-acumulare (MAC –
Multiply-Accumulate). Pe lângă faptul că densitatea de integrare a dus la construirea de FPGA-uri cu
milioane de porţi logice echivalente, aceste elemente computaţionale avansate (pe un FPGA pot fi de la
câteva zeci la câteva mii de celule DSP) permit transformarea FPGA-ului într-o maşină de calcul cu putere
de procesare extrem de mare și cu timpi de execuție foarte mici. Aşadar, tehnologia circuitelor FPGA va
constitui pe viitor unitatea principală de procesare în structura unui sistem încorporat.
Aceasta se poate realiza prin implementarea algoritmului de control direct în hardware la nivel de circuit
FPGA, sau chiar mergând mai departe, prin abordarea unei variante oarecum clasică, adică în circuitul
FPGA se poate implementa chiar un procesor software, iar pe acesta va rula algoritmul software
implementat pentru o anumită aplicație.
Faptul că dispozitivele FPGA pot constitui maşini de calcul performante, a condus la interesul acordat
acestor dispozitive în domeniul controlului automat, ce necesită lucru în timp real, domeniu în care
algoritmii se pretează la paralelizare, iar timpul de calcul poate fi o componentă critică.
Deși sunt mai multe firme care dezvoltă circuite FPGA, există 2 mari companii importante și de referință
din industria electronică de top ce sunt producători de circuite FPGA: Altera şi Xilinx. Aceste firme au
dezvoltat adevărate familii de circuite FPGA, evidenţiindu-se faptul că aceste dispozitive nu mai sunt
simple arii de porţi logice interconectabile, ci integrează elemente complexe de procesare.
O concluzie importantă este faptul că dispozitivele FPGA actuale au “virtual” o putere de calcul
fantastică. Aceasta este “virtuală” deoarece trebuie folosită prin proiectarea unui adevărat sistem “software
în hardware” care să utilizeze resursele disponibile, altfel acestea ne-având însemnătate. Lucrurile stau la
fel cu un procesor capabil să execute un anumit număr de operaţii pe secundă: trebuie dezvoltat software-
ul care să facă acest lucru. Diferenţa este însă crucială: proiectarea de software pentru un procesor este un
domeniu matur, cunoscut, studiat de foarte mult timp şi stabilit în direcții de abordare clare. Proiectarea de
hardware pentru FPGA, deşi utilizând de foarte mult timp unelte şi metode “clasice”, cum ar fi limbaje low-
level de tip HDL(Hardware Description Language) şi proiectarea la nivel de transfer între registre, are parte
de o reinventare în ultimul timp prin introducerea unor metode şi unelte noi, la un nivel de abstractizare
mult mai înalt: limbaje de tip C sau scheme bloc în Matlab/Simulink, Labview-FPGA.
Se merge la momentul actual chiar la implementarea de procesoare software direct în circuite FPGA.
Prin procesor software se înţelege un procesor implementat în resursele de uz general ale unui FPGA. Au
existat chiar şi FPGA-uri ce conţineau procesoare hard, adică nuclee fixe, ne-reconfigurabile, dar capabile
să se interfaţeze uşor cu restul resurselor din FPGA.
O idee interesantă este dată de faptul că, la momentul actual, cele mai noi tipuri de procesoare sunt
dezvoltate/testate/emulate mai înainte pe dospozitive FPGA, înainte de a fi introduse în producția de serie.
Este normal că prototiparea unui procesor nou, implică proiectare și teste laborioase, ceea ce conduce la
faptul că primul procesor nou dintr-o familie, are costuri cu proiectarea de peste 1 milion de EU. Dacă s-a
omis un “gate”(o simplă poartă logică) în arhitectura acestuia, va trebui reluată validarea/testarea de la
capăt, cu aceleași costuri. De aceea, există deja consacrată practica actuală, ca procesoarele noi ce se
lansează pe piață, să fie inițial emulate într-un circuit FPGA în procesul de prototipare.
După cum se poate observa în Fig.1, elementele funcționale de bază pentru un circuit FPGA sunt:
• Blocuri logice (Logic Blocks) ce sunt blocurile fizice elementare, implementate la nivelul circuitelor
FPGA. În principiu, acestea sunt porți logice fizice sau blocuri de memorie ce implementează
diverse funcții logice standard sau speciale. Mai mult, un anumit număr de blocuri elementare este
grupat din fabricație, sau mai bine-zis sunt optimizate legăturile, astfel încât să implementeze o
arhitectură dedicată de DSP(Digital Signal Procesor). Astfel grupul de blocuri poate fi folosit efectiv
ca un DSP sau ca blocuri elementare.
• Conexiunile programabile (Programmable Interconect), ce este reprezentată de așa numita matrice
programabilă de rutare care este configurată prin programare și realizează conexiunile între
blocurile hardware logice. Este echivalentul traseelor care leacă componentele electronice pe un
cablaj imprimat PCB(Printed Circuit Board). Frumusețea tehnică este că, în cazul circuitelor FPGA,
aceste conexiuni sunt programabile și astfel ne putem dezvolta diverse arhitecturi hardware….doar
prin programare (…fără pistolul de lipit).
• Blocurile de Intrare/Ieșire (I/O Blocks) sunt formate din grupuri de blocuri elementare conectate la
pinii de I/O astfel încât să relizeze conectări configurabile cu diverse circuite sau echipamente
exteriore (Traductoare sau Elemente de Execuție). La fel și aceste blocuri pot fi folosite/programate
ca blocuri compacte de prelucrare (pentru diverse funcții de condiționare de semnal) sau ca blocuri
elementare cu care să realizăm o multitudine de funcții logice de care are nevoie aplicația.
De reținut, dezvoltarea unei aplicații folosind programarea unui circuit FPGA, înseamnă de fapt să realizăm
efectiv (prin programare) conexiunile între blocurile logice elementare sau grupurile de blocuri dedicate(de
tip DSP). Practic, programarea unui circuit FPGA, este achivalentă simultan cu realizarea componentei
hardware și software din dezvoltarea unei aplicații standard cu microprocesor. Se mai spune chiar că, la
nivelul unui circuit FPGA, implementăm programul direct… hardware.
Fig.2. flip-flops
Diferite familii FPGA diferă în modul în care flip-flop-urile și LUT-urile sunt ambalate împreună
la nivel hardware, adică trebuie să știm cum le vom putea conecta prin programare, folosind evident
matricea de rutare. Astfel este foarte important să înțelegem ce înseamnă aceste blocuri, cum pot fi legate
și cum sunt organizate.
De reținut, toate aceste detalii arhitecturale sunt descrise în fișierul datasheet.pdf ce contine toată
documentația aferentă circuitului FPGA ales.
De exemplu, banala funcție logică AND, prezentată în Fig.4, poate fi implementată fizic într-o
tabelă de memorie LUT, conform tabelei de adevăr din Fig.5.
Fig.4. Funcția logică AND
Mulți algoritmi de procesare de semnal implică inmultiri cu numere mari si astfel, FPGA-urile cu
performanțe superioare, cum ar fi Xilinx Virtex-5 FPGA, au circuitele de multiplicare-acumulare
predefinite. Aceste blocuri de procesare pre-construite, sunt cunoscute și sub denumirea de DSP48 Slice,
ce integrează un rezultat de multiplicare pe 25 biți, adică realizeaza operatii in virgula fixa pe 18 biți, la
care se adaugă și circuite de insumare.
➢ Blocuri de memorie RAM
Resursele de memorie efectivă, sunt o altă specificație cheie de luat în considerare atunci când se
selecteaza un circuit FPGA. Memoria RAM definită de utilizator, încorporată pe întregul cip FPGA, este
utilă pentru stocarea seturilor de date sau transmiterea valorilor între task-uri executate în mod paralel sau
iterativ. În funcție de familia FPGA, se poate configura memoria RAM integrată în blocuri de 16 sau 36
kb. Există în continuare opțiunea de a implementa seturi de date de tip tablouri, folosind celule de tip flip-
flops, dar cu toate acestea, matricile mari devin rapid prea extinse pentru resursele logice FPGA. De
exemplu, o matrice de 100 de elemente de numere pe 32 de biți poate consuma mai mult de 30% din flip-
flop-uri într-un Virtex-II 1000 FPGA, sau poate ocupa mai puțin de 1% din blocul RAM încorporat.
Algoritmii de procesare a unui semnal digital trebuie adesea să țină evidența unui bloc mare de date sau a
coeficienților unei ecuații complexe și, fără o zonă de memorie consistentă disponibilă, multe funcții de
procesare pot să nu se încadreze în logica configurabilă a unui circuit FPGA.
De reținut, Execuția inerent paralelă la nivelul unui circuit FPGA, permite ca elemente independente de
logică hardware să fie coordonate/sincronizate cu semnale de ceas diferite. Trecerea datelor între o logică
care rulează componente la viteze diferite poate fi dificilă, iar memoria disponibilă poate fi utilizată pentru
a permite transferul folosind buffere de memorie FIFO (first-in-first-out).
În figura de mai jos se poate observa folosirea resurselor hardware ale circuitului FPGA, Xilinx
Kintex-7 7K325T, diponibil în sistemul prezentat la laborator, NI cRIO 9039, pentru aplicația de
achiziție/prelucrare vibrații. Detaliile de potrivire a algoritmilor de prelucrare peste arhitectura FPGA a fost
realizată automat de către mediul de dezvoltare Labview-FPGA, ceea ce ne-a scutit pe noi, ca programatori,
de această proiectare extrem de laborioasă.
Care ar fi diferența?
Descrierea pur principială a unor elemente din arhitectura circuitelor FPGA de la Xilinx
Compania Xilinx oferă deja mai multe familii principale de dispozitive FPGA: Spartan, Artix,
Virtex, și cea mai nouă Kintex. Fără a avea pretenția unei prezentări detaliate, în continuare se prezintă, ca
exemplu, câteva caracteristici arhitecturale principale ale acestor circuite.
Arhitectura familiei Spartan 6 se bazează pe felii logice (slice), grupate în mai multe blocuri logice
elementare configurabile (CLB – Configurable Logic Block). Fiecare CLB conţine 2 felii alăturate. Fiecare
felie conţine 4 LUT-uri, 8 bistabili şi logică complementară. Există 3 tipuri de felii logice în arhitectura
Spartan 6: SLICEM, SLICEL şi SLICEX.
Un sfert din feliile logice ale unui dispozitiv Spartan 6 sunt de tipul SLICEM. Fiecare din cele 4
LUT-uri ale unui SLICEM poate fi configurat ca un singur LUT cu 6 intrări şi o ieşire sau ca 2 LUT-uri cu
câte 5 intrări şi ieşiri independente. LUT-urile pot fi folosite şi ca memorie RAM distribuită de 64 de biţi,
configurată ca 64x1 sau 32x2, sau ca registre de deplasare: un registru de 32 de biţi (SRL32 – Shift Register
Logic) sau 2 registre de 16 biţi (SRL16). Ieşirea fiecărui LUT poate fi salvată într-un bistabil. Pentru operaţii
aritmetice, un lanţ de propagare a transportului de mare viteză leagă între ele feliile logice de pe aceeaşi
coloană din FPGA. Arhitectura unui slice de tip SLICEM al familie Spartan 6, este prezentată în Fig.8.
Fig.8. Arhitectura unui slice de tip SLICEM al familie Spartan 6
Încă un sfert din feliile logice (slice) ale unui dispozitiv Spartan 6 sunt de tipul SLICEL. Acestea au
aceeaşi structură ca şi SLICEM, cu excepţia posibilităţii de configurare ca memorie distribuită sau registru
de deplasare. Celelalte felii logice dintr-un Spartan 6 sunt de tipul SLICEX, care elimină din structura
SLICEL logica de generare a transportului şi multiplexoarele.
FPGA-urile Spartan 6 conţin şi blocuri de memorie RAM cu port dual de 18 kbiţi. Accesurile la
memorie sunt sincrone cu semnalul de tact. Fiecare port poate fi configurat ca 16Kx1, 8Kx2, 4Kx4, 2Kx8
(sau x9), 1Kx16 (sau x18), sau 512x32 (sau x36). Cele două porturi de acces la un bloc de memorie pot
avea lăţimi diferite. Configuraţiile x9, x18 şi x36 includ biţi de paritate. Fiecare bloc de RAM poate fi
configurat ca două jumătăţi de 9kbiţi independente.
Unele dispozitive ale familiei includ blocuri de control al memoriei externe (MCB – Memory
Controller Block), fiecare putându-se interfaţa la un cip de memorie DRAM de tipul DDR, DDR2, DDR3
sau LPDDR (Low Power DDR) şi putând atinge rate de transfer de 800 Mb/s.
Dispozitivele Spartan 6 dispun şi de blocuri dedicate operaţiilor DSP, numite DSP48A1. Fiecare
astfel de bloc este alcătuit dintr-un multiplicator dedicat 18x18, ce lucrează cu numere reprezentate în
complement faţă de 2, şi un acumulator de 48 de biţi şi poate opera la o frecvenţă de lucru de 250 MHz.
Arhitectura internă a unui DSP48A1 este prezentată în Fig.9.
Blocul DSP48A1 oferă posibilitatea folosirii registrelor interne pentru implementarea de pipeline-
uri. De asemenea, astfel de blocuri pot fi cascadate datorită multiplelor facilităţi de înlănţuire a propagării
transportului. Acumulatorul poate fi folosit şi pe post de numărător sincron, iar multiplicatorul poate fi
folosit pentru implementarea unui circuit de deplasare cu pas selectabil (barrel shifter).
Dispozitivele familiei Spartan 6 dispun și de circuite speciale pentru generarea semnalelor de tact.
Acestea sunt numite blocuri de gestionare a tactului (CMT – Clock Management Tile) şi sunt alcătuite
fiecare din câte un circuit PLL şi două circuite digitale de gestionare a tactului (DCM – Digital Clock
Manager). Aceste componente pot fi conectate între ele prin trasee dedicate, dar pot opera şi independent.
Circuitul PLL poate fi folosit pentru sintetizarea frecvenţelor de tact şi filtrarea fluctuaţiilor semnalelor de
tact externe sau interne.
Unele circuite din familia Spartan 6, de exemplu sub-familia Spartan 6 LXT, conţin circuite dedicate
de transmisie/recepţie serială de mare viteză. Acestea suportă rate de transfer între 614 Mbps şi 3,125 Gbps.
Familia de dispozitive FPGA de înaltă performanţă a firmei Xilinx este numită Virtex 6. Comparativ
cu familia Spartan 6, şi familia Virtex 6 are la bază LUT-uri cu 6 intrări grupate în felii de tipul SLICEM
sau SLICEL, grupate la rândul lor în CLB-uri. Tipul SLICEX lipseşte de la familia Virtex 6.
Blocurile de memorie RAM ale circuitelor familiei Virtex 6 sunt de 36 kbiţi, cu accesare prin port
dual şi operare sincronă. Fiecare port poate fi configurat ca 32Kx1, 16Kx2, 8Kx4, 4Kx8 (sau x9), 2Kx16
(sau x18), 1Kx32 (sau x36), 512x64 (sau 72). Cele două porturi de acces ale aceluiaşi bloc pot avea lăţimi
diferite. Fiecare bloc poate fi împărţit în două blocuri complet independente de 18 kbiţi. Două blocuri de
36 kbiţi pot fi cascadate pentru a forma un bloc 64Kx1 fără altă logică suplimentară.
La familia Virtex 6, în jurul blocurilor de memorie RAM sunt implementate circuite logice de
control al accesului de tip FIFO. Acestea elimină nevoia ocupării de CLB-uri pentru implementarea
numărătoarelor de adrese, a comparatoarelor şi logicii de generare a indicatorilor de stare (flags) pentru
implementarea de tampoane de memorie FIFO. Logica FIFO dedicată poate opera sincron sau asincron, cu
tact dual, separat pentru citire şi scriere. În Fig.10, se prezintă schema-bloc, a unui bloc de memorie de tip
FIFO, dedicat al familiei Virtex 6.
Dispozitivele familiei Virtex 6 dispun de 200 până la 2000 de blocuri dedicate pentru operaţii DSP,
numite DSP48E1. Acestea sunt grupate câte două, împreună cu magistrale locale de interconectare pentru
optimizarea vitezei şi minimizarea puterii disipate. Arhitectura unui bloc DSP48E1 este prezentată în
Fig.11. Acesta este construit în jurul unui motor de multiplicare-acumulare, foarte folositor în aplicaţiile de
procesare de semnal. Pe lângă operaţia de multiplicare-acumulare (MACC – multiply-accumulate), blocul
DSP48E1 permite şi operaţii de multiplicare, multiplicare-adunare, adunare de 3 termeni, deplasare
multiplă,
Fig.11. Arhitectura unui bloc DSP48E1 al familiei Virtex 6
Rafinarea algoritmului este un pas necesar în proiectarea sistemelor de control cu FPGA. Implementarea
operaţiilor aritmetice în virgulă mobilă este posibilă în FPGA, dar utilizarea resurselor nu este optimă în
acest caz, datorită arhitecturii de tip “matrice de celule logice”. Această “matrice de celule logice” este
foarte potrivită pentru implementarea de operaţii aritmetice simple de tipul sumator/scăzător pentru numere
reprezentate în complement faţă de 2, dar utilizarea reprezentării în virgulă mobilă implică structuri mult
mai complexe, cu căi multiple de date, logică de luare a deciziilor şi activare a anumitor căi, registre de
deplasare pentru normalizare, etc. Aceste structuri complexe consumă foarte multe resurse, în vreme ce
reprezentarea numerelor în virgulă fixă nu necesită niciun fel de resurse adiţionale faţă de reprezentarea
numerelor întregi în complement faţă de 2. Din aceste motive s-au formulat două direcţii de lucru:
1. Simplificarea computaţională: mai ales la începutul dezvoltării dispozitivelor FPGA, când
densitatea celulelor logice era limitată, au apărut algoritmi ce propuneau soluţii inteligente de
evitare a folosirii operatorilor a căror implementare necesita ocuparea unui procent semnificativ
din resursele disponibile (înmulţire, împărţire). În general, atunci când nu se folosesc astfel de
algoritmi speciali, simplificarea computaţională se poate obţine prin remodelarea algoritmului de
implementat pentru a reduce numărul operaţiilor ce trebuie realizate.
2. Folosirea unui format optimizat de reprezentare a numerelor în virgulă fixă: aşa cum s-a menţionat
mai sus, reprezentarea în virgulă fixă este foarte potrivită pentru implementare în FPGA, dar trebuie
găsit cel mai avantajos compromis între numărul de biţi ai fiecărei variabile de control şi respectarea
specificaţiilor de control, De exemplu, există un toolbox Matlab pentru analiza efectelor
implementării filtrelor digitale şi a sistemelor de control folosind reprezentarea numerică în virgula
fixă, ce permite optimizarea alegerii reprezentării.
Modularitatea este esențială pentru dezvoltarea sistemelor complexe. Acest principiu se bazează pe
conceptele de ierarhizare şi regularitate. Ierarhizarea împarte un sistem mare sau complex în entităţi mai
uşor realizabile denumite module. Regularitatea este direcţionată spre maximizarea reutilizării modulelor
deja proiectate. O bună modelare şi ierarhizare a unui sistem, precum şi folosirea de module deja existente,
poate reduce timpul de proiectare mult mai mult decât o stăpânire perfectă a uneltelor de proiectare. Un
modul poate fi definit ca un element al unei biblioteci, ce poate fi instanţiat direct, fără a trebui re-proiectat
sau modificat. Astfel, reutilizabilitatea constă în folosirea elementelor de bibliotecă cele mai potrivite
pentru o anumită aplicaţie. Modulele pot fi împărţite în biblioteci de diferite nivele de abstracţie,
Reutilizabilitatea poate fi întâlnită la nivel de descriere HDL, dar și pentru limbaje de dezvoltare de nivel
înalt.
Potrivirea optimă dintre algoritmul ce trebuie implementat şi structura hardware, mai ales atunci când
aceasta din urmă nu este fixată, este o problemă cheie. O metodologie de găsire a acestei potriviri optime
este metodologia AAA (sau A3 ). Prescurtarea AAA provine de la Algorithm Architecture Adequation, iar
termenul adequation are sensul de potrivire eficientă, nu sensul doar potrivirea suficientă. Atunci când
vorbim despre proiectare în FPGA, scopul metodologiei AAA este de a găsi o arhitectură hardware
optimizată pentru un anumit algoritm, respectând în acelaşi timp constrângerile de timp de execuţie şi arie
ocupată. Metodologia AAA se bazează pe modelarea algoritmilor cu ajutorul grafurilor, analiza pe graf a
paralelismului potenţial al algoritmului şi potrivirea acestuia pe paralelismul disponibil al arhitecturii
hardware alese.
Toate informaţiile prezentate în acest capitol au rolul de a evidenţia o mică parte principială din
extraordinarele posibilităţi oferite de circuitele FPGA actuale. Ele au caracter introductiv, iar documentația
completă se găsește disponibilă la firmele producătoare, aferentei fiecărei familii de circuite FPGA
abordată.
Din cele prezentate în această secţiune se pot extrage câteva concluzii:
✓ Dispozitivele FPGA au devenit într-adevăr platforme pentru implementarea de sisteme complexe în
întregime pe un singur cip. Chiar şi familiile cu preţ scăzut integrează destule componente pentru a
permite prelucrări destul de complexe.
✓ Dezvoltarea unei aplicații cu circuite FPGA, folosind limbaje Low-Level(de tip HDL), necesită studiul
în amănunt a arhitecturii pentru a putea “mapa” optim aplicația software peste partea hardware.
✓ Dezvoltarea unei aplicații cu circuite FPGA, folosind limbaje High-Level(de ex. Labview-FPGA),
este foarte simplă, deoarece nu ne mai interesează detaliile arhitecturale ale circuitului. Prețul plătit
pentru acest lucru este faptul că prelucrarea nu este implementată în mod optim în raport cu proiectul
gândit de noi. Mai precis, nu prea avem controlul total al implementării.
✓ Folosirea resurselor disponibile implică cunoştinţe din multe domenii conexe, de la procesare de
semnal la microcontrolere şi proiectare de software pentru sisteme încorporate, de la proiectare de
structuri digitale la descriere în limbaje HDL şi simulare a acestora. De aici presiunea foarte mare
asupra producătorilor de dispozitive FPGA pentru a aduce uneltele software de proiectare la un nivel
cât mai înalt, cât mai abstract, pentru a permite dezvoltarea cât mai rapidă de proiecte complexe. Se
pune chiar problema că, la ce bun o multitudine de resurse, dacă nimeni nu reuşeşte să le folosească în
întregime?
Ca o concluzie finală, dezvoltarea de aplicații de timp real, folosind sisteme FPGA, se pretează foarte
bine unui inginer electronist, deoarece, deși se folosește doar “tastatura” pentru implementare, sunt
necesare abilități și cunoștințe consistente în domeniul electronicii.
Totodată, datorită limbajelor de nivel înalt dezvoltate în ultimii ani, ideea folosirii circuitelor FPGA de
către un inginer automatist este foarte valoroasă. De toate detaliile de arhitecturare hardware se ocupă
mediul de dezvoltare, cum este de exemplu Labview, Matlab.
SUCCES !!!