SISTEME ÎNCORPORATE CU FPGA PENTRU · PDF fileSISTEME ÎNCORPORATE CU FPGA PENTRU...

78
UNIVERSITATEA TEHNICĂ “GHEORGHE ASACHI” DIN IAŞI Şcoala Doctorală a Facultăţii de Automatică şi Calculatoare SISTEME ÎNCORPORATE CU FPGA PENTRU CONTROLUL PROCESELOR RAPIDE - REZUMATUL TEZEI DE DOCTORAT - Conducător de doctorat: Prof. univ. dr. ing. Alexandru Onea Doctorand: Ing. Bogdan Alecsa IAŞI - 2011

Transcript of SISTEME ÎNCORPORATE CU FPGA PENTRU · PDF fileSISTEME ÎNCORPORATE CU FPGA PENTRU...

Page 1: SISTEME ÎNCORPORATE CU FPGA PENTRU · PDF fileSISTEME ÎNCORPORATE CU FPGA PENTRU CONTROLUL PROCESELOR RAPIDE - REZUMATUL TEZEI DE DOCTORAT - ... POSDRU/6/1.5/S/9, ID 6681, este un

 

 

 

 

UNIVERSITATEA TEHNICĂ “GHEORGHE ASACHI” DIN IAŞI 

Şcoala Doctorală a Facultăţii de

Automatică şi Calculatoare  

SISTEME ÎNCORPORATE CU FPGA PENTRU CONTROLUL PROCESELOR RAPIDE

- REZUMATUL TEZEI DE DOCTORAT -

                                                                                       

                                                                                  

Conducător de doctorat: Prof. univ. dr. ing. Alexandru Onea

Doctorand: Ing. Bogdan Alecsa

IAŞI - 2011

Page 2: SISTEME ÎNCORPORATE CU FPGA PENTRU · PDF fileSISTEME ÎNCORPORATE CU FPGA PENTRU CONTROLUL PROCESELOR RAPIDE - REZUMATUL TEZEI DE DOCTORAT - ... POSDRU/6/1.5/S/9, ID 6681, este un
Page 3: SISTEME ÎNCORPORATE CU FPGA PENTRU · PDF fileSISTEME ÎNCORPORATE CU FPGA PENTRU CONTROLUL PROCESELOR RAPIDE - REZUMATUL TEZEI DE DOCTORAT - ... POSDRU/6/1.5/S/9, ID 6681, este un

UNIUNEA EUROPEANĂ GUVERNUL ROMÂNIEI

MINISTERUL MUNCII, FAMILIEI ŞI PROTECŢIEI SOCIALE

AMPOSDRU

Fondul Social European POSDRU 2007-2013

Instrumente Structurale 2007-2013

OIPOSDRU UNIVERSITATEA TEHNICĂ “GHEORGHE ASACHI”

DIN IAŞI

UNIVERSITATEA TEHNICĂ “GHEORGHE ASACHI” DIN IAŞI

Şcoala Doctorală a Facultăţii de Automatică şi Calculatoare

SISTEME ÎNCORPORATE CU FPGA PENTRU CONTROLUL PROCESELOR RAPIDE

- REZUMATUL TEZEI DE DOCTORAT -

Conducător de doctorat: Prof. univ. dr. ing. Alexandru Onea

Doctorand: Ing. Bogdan Alecsa

IAŞI - 2011

Page 4: SISTEME ÎNCORPORATE CU FPGA PENTRU · PDF fileSISTEME ÎNCORPORATE CU FPGA PENTRU CONTROLUL PROCESELOR RAPIDE - REZUMATUL TEZEI DE DOCTORAT - ... POSDRU/6/1.5/S/9, ID 6681, este un

UNIUNEA EUROPEANĂ GUVERNUL ROMÂNIEI

MINISTERUL MUNCII, FAMILIEI ŞI PROTECŢIEI SOCIALE

AMPOSDRU

Fondul Social European POSDRU 2007-2013

Instrumente Structurale 2007-2013

OIPOSDRU UNIVERSITATEA TEHNICĂ “GHEORGHE ASACHI”

DIN IAŞI

Teza de doctorat a fost realizată cu sprijinul financiar al

proiectului „Burse Doctorale - O Investiţie în Inteligenţă (BRAIN)”.

Proiectul „Burse Doctorale - O Investiţie în Inteligenţă (BRAIN)”,

POSDRU/6/1.5/S/9, ID 6681, este un proiect strategic care are ca

obiectiv general „Îmbunătăţirea formării viitorilor cercetători în cadrul

ciclului 3 al învăţământului superior - studiile universitare de doctorat

- cu impact asupra creşterii atractivităţii şi motivaţiei pentru cariera în

cercetare”.

Proiect finanţat în perioada 2008 - 2011.

Finanţare proiect: 14.424.856,15 RON

Beneficiar: Universitatea Tehnică “Gheorghe Asachi” din Iaşi

Partener: Universitatea “Vasile Alecsandri” din Bacău

Director proiect: Prof. univ. dr. ing. Carmen TEODOSIU

Responsabil proiect partener: Prof. univ. dr. ing. Gabriel LAZĂR

Page 5: SISTEME ÎNCORPORATE CU FPGA PENTRU · PDF fileSISTEME ÎNCORPORATE CU FPGA PENTRU CONTROLUL PROCESELOR RAPIDE - REZUMATUL TEZEI DE DOCTORAT - ... POSDRU/6/1.5/S/9, ID 6681, este un

UNIUNEA EUROPEANĂ GUVERNUL ROMÂNIEI

MINISTERUL MUNCII, FAMILIEI ŞI PROTECŢIEI SOCIALE

AMPOSDRU

Fondul Social European POSDRU 2007-2013

Instrumente Structurale 2007-2013

OIPOSDRU UNIVERSITATEA TEHNICĂ “GHEORGHE ASACHI”

DIN IAŞI

Page 6: SISTEME ÎNCORPORATE CU FPGA PENTRU · PDF fileSISTEME ÎNCORPORATE CU FPGA PENTRU CONTROLUL PROCESELOR RAPIDE - REZUMATUL TEZEI DE DOCTORAT - ... POSDRU/6/1.5/S/9, ID 6681, este un

4

Page 7: SISTEME ÎNCORPORATE CU FPGA PENTRU · PDF fileSISTEME ÎNCORPORATE CU FPGA PENTRU CONTROLUL PROCESELOR RAPIDE - REZUMATUL TEZEI DE DOCTORAT - ... POSDRU/6/1.5/S/9, ID 6681, este un

5

Cuvânt înainte Lucrarea de faţă este rezultatul a trei ani de studii în cadrul Şcolii Doctorale a Facultăţii

de Automatică şi Calculatoare, Universitatea Tehnică “Gheorghe Asachi” din Iaşi, studii sprijinite prin programul “Burse doctorale – o investiţie în inteligenţă” BRAIN.

Elaborarea acestei lucrări s-a făcut sub îndrumarea atentă şi competentă a domnului prof. dr. ing. Alexandru Onea, căruia autorul îi mulţumeşte pentru încurajarea formării unei atitudini independente şi, în acelaşi timp, direcţionarea avizată către rezultate semnificative.

Autorul se simte îndatorat în mare măsură şi faţă de colectivul Catedrei de Automatică şi Informatică Aplicată, şi în special faţă de conducătorul acestuia, domnul prof. dr. ing. Corneliu Lazăr, pentru discuţiile constructive şi trimiterile bibliografice valoroase.

O pondere importantă în această lucrare o are activitatea de cercetare desfăşurată la Anglia Ruskin University, în Cambridge, UK, la invitaţia şi sub supravegherea domnului prof. dr. ing. Marcian Cîrstea, fără a cărui implicare această lucrare ar fi fost mult mai săracă. De asemenea, atitudinea profesionistă şi prietenoasă a domnului dr. ing. Alin Tisan, din acelaşi colectiv, a făcut posibilă realizarea cu succes a experimentelor de laborator.

Atât ideea acestei lucrări, cât şi primii paşi în această direcţie, au fost rezultatul unor discuţii aprinse şi fructuoase cu domnul dr. ing. fiz. Aleodor Daniel Ioan, care a abordat anterior o direcţie de cercetare conexă.

Nu în ultimul rând, această lucrare este rezultatul unui mediu competitiv şi prietenos, pentru care autorul mulţumeşte colegilor doctoranzi.

Publicarea unora din rezultatele acestei lucrări a fost posibilă datorită eforturilor deosebite de gestionare a fondurilor grant-ului SICONA-12100/2008, în care autorul este membru, ale directorului de proiect, domnul prof. dr. ing. Corneliu Lazăr.

Autorul recunoaşte că lucrarea poate fi îmbunătăţită şi este conştient de unele stângăcii în

exprimare şi lipsuri în explicaţii. Se presupune totuşi o oarecare familiaritate a cititorului cu domeniul abordat, deşi acesta este la confluenţa dintre automatică, inginerie electrică şi ingineria calculatoarelor, care să-l ajute să treacă peste micile neajunsuri.

Pe parcursul lucrării, toate acronimele folosite au fost definite la prima utilizare. Adesea, s-a reexplicat un acronim dacă acesta a fost definit într-o secţiune anterioară mai îndepărtată. În general, s-a preferat utilizarea acronimului din limba engleză, foarte cunoscut şi în literatura de specialitate de limbă română, scăzând riscul de confuzii. Tot pentru evitarea confuziilor, termenii traduşi din limba engleză pentru care încă nu există un echivalent consacrat în literatura de specialitate de limbă română au fost specificaţi în paranteză în original. De asemenea, unii termeni au fost păstraţi în engleză pe tot parcursul lucrării, fără a se încerca traducerea (de exemplu: hardware, software).

Page 8: SISTEME ÎNCORPORATE CU FPGA PENTRU · PDF fileSISTEME ÎNCORPORATE CU FPGA PENTRU CONTROLUL PROCESELOR RAPIDE - REZUMATUL TEZEI DE DOCTORAT - ... POSDRU/6/1.5/S/9, ID 6681, este un

6

Cuprins

1. Introducere............................................................................................................................. 7 2. Dispozitive FPGA în controlul maşinilor electrice ............................................................. 11

2.1 Evoluţia dispozitivelor FPGA .......................................................................................... 11 2.2 Arhitecturi actuale de FPGA ............................................................................................ 12 2.3 Metodologia de proiectare a unui sistem de control implementat în hardware pe FPGA13 2.4 Sisteme de control pentru motoare electrice implementate în FPGA............................... 15 2.5 Concluzii........................................................................................................................... 18

3. Unelte de dezvoltare pentru dispozitive FPGA ................................................................... 19 3.1 Prezentare generală a uneltelor de proiectare pentru FPGA............................................. 19 3.2 Proiectarea în mediul Simulink a structurilor hardware folosind blockset-ul System Generator.................................................................................................................................. 21 3.3 Unelte de depanare pentru sisteme implementate în FPGA ............................................. 24 3.4 Studii de caz...................................................................................................................... 25 3.5 Concluzii........................................................................................................................... 35

4. Proiectarea sistemelor cu procesoare soft încorporate în FPGA ......................................... 37 4.1 Consideraţii privind proiectarea de procesoare soft pentru FPGA ................................... 37 4.3 Co-proiectarea hardware-software în sisteme de control – studiu de caz........................ 39 4.4 Concluzii........................................................................................................................... 41

5. Metode moderne de modulaţie pentru controlul invertorului trifazic şi implementarea lor în FPGA ............................................................................................................................................ 41

5.1 Modulaţia PWM sinusoidală ............................................................................................ 42 5.2 Implementarea în FPGA a modulatorului PWM sinusoidal cu injecţie de semnal la punctul neutru (ZSS) ................................................................................................................ 45 5.3 Modulaţia bazată pe vectori spaţiali ................................................................................. 48 5.4 Implementarea în FPGA a modulatorului bazat pe vectori spaţiali.................................. 51 5.5 Comparaţie între cele două modulatoare .......................................................................... 53 5.6 Îmbunătăţirea rezoluţiei modulatorului SVM................................................................... 54 5.7 Concluzii........................................................................................................................... 55

6. Proiectarea unui sistem de control al vitezei pentru motorul PMSM implementabil în hardware pe FPGA ....................................................................................................................... 56

6.1 Modelarea motorului PMSM............................................................................................ 56 6.2 Proiectarea sistemului de control al vitezei pentru motorul PMSM................................. 58 6.3 Validarea sistemului de control în continuu ..................................................................... 60 6.4 Discretizarea sistemului de control................................................................................... 62 6.5 Factorizarea şi implementarea algoritmului de control .................................................... 63 6.6 Interfaţarea senzorilor....................................................................................................... 65 6.7 Implementarea în FPGA şi rezultate experimentale......................................................... 67 6.8 Concluzii........................................................................................................................... 68

7. Concluzii generale ............................................................................................................... 70 8. Bibliografie selectivă........................................................................................................... 71

Page 9: SISTEME ÎNCORPORATE CU FPGA PENTRU · PDF fileSISTEME ÎNCORPORATE CU FPGA PENTRU CONTROLUL PROCESELOR RAPIDE - REZUMATUL TEZEI DE DOCTORAT - ... POSDRU/6/1.5/S/9, ID 6681, este un

7

1. Introducere Lucrarea de faţă îşi propune cercetarea metodelor de proiectare a sistemelor încorporate

bazate pe dispozitive de tip FPGA (Field Programmable Gate Array) în vederea realizării de sisteme de control rapide, de înaltă performanţă. 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”, o traducere aproximativă a mult mai cunoscutului şi acceptatului termen “embedded” din limba engleză, se poate aplica unui sistem din mai multe puncte de vedere:

• De obicei, aceste sisteme electronice sunt încorporate din punct de vedere fizic în produsul final, formând un tot unitar cu elementele 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 şi de date şi circuite periferice. De obicei, aceste cipuri sunt microcontrolere 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 deci cu periferice puternice, 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).

• 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 nu este reprezentat doar de circuitele electronice ce-l compun, ci încorporează şi software-ul ce se execută pe el.

În această lucrare, însă, se va discuta despre sisteme încorporate cu dispozitive FPGA. Aşadar, centrul sistemului va fi un FPGA, nu un microcontroler sau DSC. Deşi acest lucru poate părea în contradicţie cu punctele al doilea şi al treilea enunţate mai sus, o privire mai atentă asupra dispozitivelor FPGA va estompa această contradicţie. Aceasta deoarece FPGA-urile reprezintă actualmente 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 la apariţia lor, când se utilizau ca logică de legătură în sistemele cu procesor. Acum, pe un 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 extraordinară. Aşadar, FPGA-ul poate constitui unitatea de procesare a sistemului încorporat. Aceasta se poate realiza prin implementarea algoritmului de control direct în hardware pe FPGA, deşi se poate apela şi la varianta clasică: în FPGA se poate implementa un procesor soft, iar pe acesta va rula în software algoritmul.

Faptul că dispozitivele FPGA pot constitui maşini de calcul performante a condus şi la interesul acordat acestor dispozitive în domeniul controlului automat, domeniu în care algoritmii se pretează la paralelizare şi timpii de calcul pot fi critici. Acest interes este subliniat de secţiuni speciale în IEEE Transactions on Industrial Electronics, jurnalul numărul 1 în categoria Thomson Reuters Automation & Control Systems [1], consacrate utilizării FPGA-urilor în sisteme de control industriale (volumul 54, numărul 4, august 2007 şi volumul 55, numărul 4, aprilie 2008).

Page 10: SISTEME ÎNCORPORATE CU FPGA PENTRU · PDF fileSISTEME ÎNCORPORATE CU FPGA PENTRU CONTROLUL PROCESELOR RAPIDE - REZUMATUL TEZEI DE DOCTORAT - ... POSDRU/6/1.5/S/9, ID 6681, este un

8

Industria dispozitivelor FPGA este, în prezent, cea mai profitabilă dintre ramurile industriei electronice (conform unui studiu publicat de Forbes, cu date de la Audit Integrity, FT Interactive Data, Thomson IBES, Thomson Reuters, Worldscope, Bloomberg, Standard & Poor’s, Thomson One Analytics, Value One), două dintre cele patru companii din industria electronică din top sunt producătorii de FPGA-uri Altera şi Xilinx) [2]. Este, de asemenea, cea mai inovativă din punct de vedere tehnologic, actualmente cele mai noi procese de producţie a semiconductorilor fiind testate pe dispozitive FPGA. Succesul acestei industrii se datorează în primul rând unui nou mod de a pune problema: dispozitivele FPGA oferă elemente integrate de complexitatea celor posibile în circuitele integrate orientate pe aplicaţie (ASIC - Application Specific Integrated Circuit), cu avantajul programabilităţii, sau, mai bine zis, al configurabilităţii. Se impune precizarea acestui termen: deşi în denumirea FPGA apare cuvântul “programabil”, acesta duce cu gândul la un program software ce rulează pe un procesor şi ce poate fi modificat. Or, în ceea ce priveşte FPGA-urile, această situaţie este un caz particular nu foarte răspândit: de cele mai multe ori, sarcinile sunt executate în hardware pe FPGA. De aceea, este mai clar termenul „configurabil” în legătură cu posibilitatea de a redefini funcţionalitatea îndeplinită de circuitul FPGA.

Lucrarea este structurată pe cinci capitole şi se ocupă de conturarea unei metodologii originale de proiectare a unui sistem bazat pe FPGA pentru controlul motorului sincron cu magneţi permanenţi (PMSM – Permanent Magnet Synchronous Machine). Sunt prezentate sintetic şi informaţii conexe, de la arhitectura dispozitivelor FPGA şi software-ul System Generator la metode de optimizare a proiectării structurilor numerice ţinând cont de particularităţile dispozitivelor FPGA.

Al doilea capitol prezintă locul dispozitivelor FPGA în sistemele de control moderne pentru motoare electrice. Pentru atingerea acestui scop, se începe cu o prezentare sumară a dispozitivelor FPGA, începând cu un scurt istoric şi ajungând la detaliile arhitecturale ale dispozitivelor actuale. Astfel, în primul subcapitol este punctată istoric evoluţia dispozitivelor FPGA, împărţită în patru etape ce se pot separa pe baza apariţiei unor noi caracteristici ale dispozitivelor şi uneltelor de dezvoltare pentru ele. Cel de-al doilea subcapitol reprezintă o trecere în revistă succintă, de sinteză, a familiilor actuale de FPGA-uri produse de Xilinx. Se insistă pe elementele arhitecturale ale fiecărei familii, evidenţiindu-se faptul că aceste dispozitive nu sunt simple arii de porţi logice interconectabile, ci integrează elemente complexe de procesare. În al treilea subcapitol este prezentată o metodologie generală de proiectare a sistemelor de control automat implementate în FPGA. Aceasta se bazează pe trei principii fundamentale: 1) rafinarea algoritmului, 2) modularitatea şi reutilizabilitatea, 3) potrivirea optimă algoritm-hardware. În finalul capitolului, un subcapitol este dedicat prezentării sistemelor bazate pe FPGA pentru controlul motoarelor electrice recent apărute în literatură. Această prezentare constituie un studiu al stadiului actual al cercetării, util atât pentru a sublinia originalitatea şi validitatea rezultatelor obţinute cu această teză, cât şi pentru a o înscrie în tendinţele din cercetare în domeniu la nivel internaţional.

Capitolul 3 descrie uneltele de dezvoltare disponibile pentru proiectarea sistemelor bazate pe FPGA. În primul subcapitol, după o prezentare a evoluţiei uneltelor de dezvoltare legată de evoluţia dispozitivelor FPGA, ce a fost expusă în capitolul anterior, sunt trecute în revistă principalele unelte disponibile, grupate pe trei categorii: nuclee IP, unelte pentru sisteme încorporate, unelte pentru nuclee DSP. Al doilea subcapitol constituie un studiu mai amănunţit al software-ului System Generator produs de Xilinx, ce permite proiectarea de module hardware direct implementabile în FPGA din mediul Matlab Simulink. Este prezentată de asemenea metoda de importare a unor module proiectate prin alte metode în Simulink şi co-simularea lor folosind combinaţia de unelte Simulink-ModelSim. Cel de-al treilea subcapitol este o scurtă trecere în revistă a uneltelor de depanare pentru sisteme bazate pe FPGA.

În finalul capitolului se prezintă trei studii de caz originale, ilustrative pentru metodele de proiectare (şi combinarea lor) folosind dispozitive FPGA. Primul dintre acestea urmăreşte proiectarea unui sistem de control al vitezei pentru motorul de curent continuu integrându-l într-o

Page 11: SISTEME ÎNCORPORATE CU FPGA PENTRU · PDF fileSISTEME ÎNCORPORATE CU FPGA PENTRU CONTROLUL PROCESELOR RAPIDE - REZUMATUL TEZEI DE DOCTORAT - ... POSDRU/6/1.5/S/9, ID 6681, este un

9

buclă cu calare pe fază. În acest sens s-a proiectat un detector de fază şi frecvenţă original, ce a fost validat prin simulare în ModelSim. Apoi s-a proiectat un filtru de buclă de tip proporţional-integrator şi s-a integrat întreg sistemul în FPGA. Proiectarea s-a realizat la nivel de schemă logică. Sistemul a fost verificat experimental, dovedind că este capabil de calare pe fază şi deci de control al vitezei.

În al doilea studiu de caz s-a proiectat un sistem de control al vitezei pentru motorul de curent continuu folosind algoritmul deadbeat. Acesta a fost proiectat ca un filtru cu răspuns infinit la impuls în Simulink, folosind blocuri System Generator. A fost validat prin simulare, folosind un model al motorului, apoi a fost implementat pe FPGA şi verificat experimental. Răspunsul sistemului experimental s-a dovedit în perfectă concordanţă cu cel al sistemului simulat. Pentru proiectare s-a folosit captura de schemă logică pentru interfaţa cu convertoarele analog-numeric şi numeric-analogic, mediul StateCAD pentru proiectarea maşinilor cu stări de control şi System Generator pentru regulator.

Cel de-al treilea studiu de caz s-a ocupat de proiectarea unui sistem de control al vitezei pentru motorul BLDC (Brushless DC). Spre deosebire de motorul de curent continuu clasic, motorul BLDC se caracterizează prin faptul că tensiunea de comandă trebuie comutată între perechi de înfăşurări ale statorului. În acest scop s-a proiectat în FPGA un set de module originale pentru comutarea tensiunii în motor în funcţie de poziţia rotorului. Acestea, proiectate la nivel de schemă logică, au fost combinate cu un algoritm de control de tip PI, proiectat în Simulink. Întregul sistem a fost validat prin co-simulare Simulink-ModelSim şi verificat experimental.

Originalitatea şi actualitatea sistemelor de control prezentate în acest capitol au condus la redactarea şi publicarea a 6 lucrări: [102], [103], [105], [109], [110], [111].

În Capitolul 4 este abordat domeniul procesoarelor soft implementabile în FPGA. Prin procesor soft se înţelege un procesor implementat în resursele de uz general ale unui FPGA. În primul subcapitol sunt expuse câteva consideraţii teoretice cu privire la proiectarea de procesoare soft în vederea implementării pe dispozitive de tip FPGA, subliniindu-se modul în care proiectarea trebuie să ţină cont de arhitectura specifică a FPGA-ului, destul de diferită de cea a unui ASIC. Cum până la redactarea acestui capitol, autorul şi-a format deja o părere privind perspectivele implementării în hardware a algoritmilor de control, mult superioară din punctul de vedere al vitezei de execuţie faţă de implementarea în software, s-a găsit o nişă unde procesoarele soft prezintă interes în aplicaţiile de control: sarcinile de monitorizare. Astfel, în ultimul subcapitol se prezintă un studiu de caz original: co-proiectarea hardware-software în sisteme de control. Sistemul de control al vitezei pentru motorul BLDC, prezentat în finalul capitolului precedent, a fost completat cu sarcini de monitorizare: parametrii regulatorului sunt vizualizaţi pe un afişor alfanumeric cu cristale lichide şi sunt transmişi serial pe o interfaţă RS232 la un calculator gazdă, împreună cu valorile instantanee ale semnalelor de comandă şi de răspuns. Problema a fost partiţionată între software şi hardware: algoritmul de control se execută în hardware proiectat special pentru aplicaţie (prezentat deja), iar sarcinile de monitorizare, cu restricţii de temporizare mult mai relaxate, se execută prin software pe procesoare PicoBlaze. Sistemul de control prezentat la sfârşitul capitolului anterior a fost aşadar extins cu două sisteme cu procesor soft. Fiecare se ocupă cu una singură din cele două sarcini, uşurându-se astfel dezvoltarea software-ului şi interfaţarea fiecărui sistem cu resursele hardware. S-a obţinut astfel un sistem complex pe un singur cip, conţinând atât elemente hardware, cât şi software, originale şi proiectate pentru aplicaţia exemplificată. Sistemul s-a verificat experimental, obţinându-se pe calculatorul gazdă o interfaţă în timp real cu motorul BLDC controlat.

Sistemul a fost descris în lucrarea publicată [122]. Ultimele două capitole sunt dedicate atingerii scopului declarat al lucrării: proiectarea

unui sistem de control al vitezei pentru motorul sincron cu magneţi permanenţi. Cum acest tip de motor necesită tensiuni sinusoidale de alimentare a fazelor statorului, au fost studiate mai întâi tehnici de modulaţie pentru obţinerea eficientă a acestora.

În acest sens, în Capitolul 5 se prezintă 2 tehnici de modulaţie moderne şi eficiente

Page 12: SISTEME ÎNCORPORATE CU FPGA PENTRU · PDF fileSISTEME ÎNCORPORATE CU FPGA PENTRU CONTROLUL PROCESELOR RAPIDE - REZUMATUL TEZEI DE DOCTORAT - ... POSDRU/6/1.5/S/9, ID 6681, este un

10

pentru controlul digital al invertoarelor trifazate: modulaţia sinusoidală cu injecţie de semnal la punctul neutru şi modulaţia bazată pe vectori spaţiali.Astfel, în primul subcapitol sunt prezentate câteva aspecte teoretice ale modulaţiei sinusoidale în lăţimea impulsurilor, pentru ca în al doilea subcapitol să se discute implementarea pe un dispozitiv FPGA a acestei tehnici de modulaţie, îmbunătăţită prin injecţia de semnal triunghiular la punctul neutru. Modulatorul prezentat a fost proiectat folosind System Generator, implementat pe FPGA şi testat experimental.

În al treilea subcapitol este prezentată modulaţia bazată pe vectori spaţiali, urmată în subcapitolul patru de proiectarea modulatorului şi implementarea sa folosind System Generator. Pentru proiectare s-a folosit o variantă a algoritmului bazată pe calcule geometrice simple şi s-au fructificat la maximum posibilităţile de paralelizare a operaţiilor, obţinându-se o implementare cu un timp de calcul foarte scurt, de doar 160ns la o frecvenţă de tact de 50MHz. Şi acest modulator a fost implementat fizic şi testat experimental. Al cincilea subcapitol face o comparaţie între cele două modulatoare proiectate, având în vedere că din punctul de vedere al rezultatului ele sunt echivalente. Concluzia acestui studiu comparativ este că modulatorul bazat pe vectori spaţiali este mult mai potrivit pentru utilizarea într-un sistem de control pentru un motor de curent alternativ trifazat, datorită faptului că se execută mai repede, are nevoie de mai puţine multiplicatoare hardware (o resursă critică în FPGA-urile de cost redus) şi se aplică reprezentării bifazate a semnalelor de intrare, mai apropiată de reprezentarea internă într-un sistem de control decât cea trifazată. În subcapitolul şase s-a extins rezoluţia modulatorului bazat pe vectori spaţiali prin tehnici caracteristice dispozitivelor FPGA, şi anume utilizarea de semnale de tact defazate de o unitate de gestionare a semnalelor de tact din FPGA pentru sincronizarea fronturilor impulsurilor de ieşire din modulator. Modulatorul astfel îmbunătăţit a fost testat experimental pentru controlul unui motor de inducţie, folosind tehnica în buclă deschisă V/Hz.

Originalitatea studiilor prezentate în acest capitol şi validitatea rezultatelor experimentale obţinute au condus la redactarea şi publicarea a 4 lucrări: [143], [144], [145], [146].

În sfârşit, în Capitolul 6 se expune proiectarea unui sistem de control al vitezei pentru motorul sincron cu magneţi permanenţi. În primul subcapitol este prezentată modelarea motorului în sistemul de coordonate rotitor sincron cu rotorul. Această abordare simplifică foarte mult modelul motorului, eliminând parametrii variabili în timp din ecuaţiile ce-l descriu, dar complică sistemul de control, ce va trebui să realizeze transformările de coordonate în timp real. În al doilea subcapitol se prezintă proiectarea sistemului de control, folosind trei regulatoare: două regulatoare PI pentru curenţi şi un regulator combinat PI-P pentru viteză. Parametrii regulatoarelor sunt derivaţi prin metoda alocării polilor, ţinând cont de modelul motorului. În al treilea subcapitol, sistemul de control analogic (continuu) a fost validat prin simulare în Simulink. Apoi, în cel de-al patrulea subcapitol, sistemul de control a fost discretizat şi implementat folosind blocuri System Generator. În acest moment, s-a verificat că prin discretizare comportarea sistemului de control rămâne la fel cu comportarea sistemului de control continuu. Deşi în acest stadiu sistemul de control realizat cu blocuri System Generator este direct implementabil în FPGA, el nu este utilizabil în această formă deoarece ar necesita prea multe resurse (mai multe multiplicatoare decât sunt disponibile în dispozitivul ţintă, Spartan-3E XC3S500E), şi ar avea nevoie de un semnal de tact separat, de 20kHz. De aceea, sistemul este factorizat pentru a folosi doar 4 multiplicatoare şi reproiectat pentru a fi sincron cu semnalul de tact global, de 50MHz. Acest proces de proiectare, care este şi contribuţia originală majoră a capitolului, este prezentat în subcapitolul cinci. În subcapitolul şase sunt prezentaţi succint senzorii utilizaţi în sistem (de curent şi de poziţie/viteză) şi modulele hardware proiectate pentru interfaţarea lor, iar în ultimul subcapitol sunt descrise rezultatele experimentale după implementarea sistemului de control în FPGA. Acestea sunt în perfectă concordanţă cu rezultatele obţinute anterior prin simulare.

Aşadar, s-a realizat cu succes implementarea pe un dispozitiv FPGA de cost redus a unui sistem complet de control al vitezei pentru motorul sincron cu magneţi permanenţi. Acesta conţine patru bucle de reacţie şi se execută în doar 2.14μs, incluzând timpul necesar interfaţării cu senzorii de curent. Aşadar, s-a demonstrat că dispozitivele FPGA pot implementa foarte

Page 13: SISTEME ÎNCORPORATE CU FPGA PENTRU · PDF fileSISTEME ÎNCORPORATE CU FPGA PENTRU CONTROLUL PROCESELOR RAPIDE - REZUMATUL TEZEI DE DOCTORAT - ... POSDRU/6/1.5/S/9, ID 6681, este un

11

eficient algoritmi de control complecşi pentru procese rapide (chiar dacă motorul are un timp de răspuns de câteva ms, variaţia curenţilor prin motor este foarte rapidă, cu timpi de răspuns de ordinul zecilor de μs). În plus, paşii prezentaţi în acest capitol pentru obţinerea unui sistem implementabil dintr-un model teoretic constituie o metodologie originală de proiectare ce se poate aplica la implementarea oricărui sistem de control.

Sistemul de control prezentat în acest capitol a fost descris în lucrarea [161], acceptată spre publicare.

Fiecare capitol este încheiat cu un subcapitol de concluzii, în care se subliniază rezultatele obţinute şi contribuţiile originale. În finalul lucrării, un capitol de concluzii generale sintetizează aceste contribuţii şi lansează câteva direcţii viitoare de cercetare.

Din acest rezumat au fost eliminate subcapitole şi porţiuni de subcapitole conţinând informaţii mai generale, insistându-se pe secţiunile ce prezintă elemente de proiectare, principala componentă de originalitate a tezei. Menţiuni referitoare la paragrafele eliminate au fost păstrate în secţiunile de introducere şi concluzii, constituind o invitaţie pentru cititor să răsfoiască versiunea completă a tezei. Numerotarea secţiunilor rămase (ca şi a figurilor, tabelelor şi ecuaţiilor) s-a păstrat ca în teză, în scopul corelării uşoare între rezumat şi teză pentru cititorul care va dori să parcurgă versiunea completă.

2. Dispozitive FPGA în controlul maşinilor electrice 2.1 Evoluţia dispozitivelor FPGA Primul dispozitiv de tip FPGA a fost lansat de firma Xilinx în 1984. Acesta conţinea 64

de blocuri logice interconectate printr-o matrice de conexiuni programabile, avea 58 de pini de intrare/ieşire şi era implementat în tehnologie de 2μm, folosind 85000 de tranzistoare [4]. Avantajul acestei arhitecturi era scalabilitatea: odată cu îmbunătăţirea procesului de fabricaţie, mai multe elemente de bază puteau fi integrate pe acelaşi cip, crescând posibilităţile oferite de acesta. Astfel, de-a lungul anilor 1980, producătorii de FPGA-uri au continuat să crească numărul de blocuri logice, numărul nivelelor de interconectare şi numărul pinilor de intrare/ieşire.

Perioada 1985 – 1991 poate fi astfel considerată perioada “copilăriei” dispozitivelor FPGA. Aceasta este caracterizată prin faptul că FPGA-urile erau folosite ca logică de legătură în sisteme mai mari şi programele software ce implementau circuitele proiectate în FPGA erau relativ simple şi uşor de îmbunătăţit.

În curând însă s-a dovedit că această abordare nu era suficientă: odată cu creşterea numărului de blocuri logice, interconexiunile lungi şi complexe dintre ele deveneau factorul limitativ al performanţelor dispozitivului. De aceea, având în vedere că tehnologia de fabricaţie permitea integrarea a tot mai multor tranzistoare, a apărut ideea încorporării de hardware dedicat. Astfel, la mijlocul anilor 1990 apar primele FPGA-uri cu blocuri de memorie RAM încorporate. Tot atunci apar primele tehnici de creştere pe cip a frecvenţei de lucru, prin integrarea de circuite cu calare pe fază (PLL – Phase Locked Loop) de multiplicare a frecvenţei. Perioada 1992 – 1999 poate fi considerată perioada de expansiune a dispozitivelor FPGA. La începutul acestei perioade, multe firme producătoare se retrag din domeniu (Plessey, Toshiba, Motorola, IBM) pentru că arhitecturile propuse de ele nu fac faţă scalabilităţii permise de avansarea rapidă a tehnologiei de producţie. În această perioadă, creşterea rapidă a complexităţii circuitelor pune presiune pe dezvoltarea de software de sinteză automată care să permită proiectarea uşoară şi folosirea eficientă a resurselor hardware. Totodată, FPGA-urile încep să fie folosite în aplicaţii mai complexe, în domeniul comunicaţiilor şi calculelor aritmetice.

Perioada 2000 – 2007 poate fi considerată perioada de acumulare a dispozitivelor FPGA: se integrează din ce în ce mai multe şi mai sofisticate blocuri hardware: de la microprocesoare la circuite de comunicaţie rapidă, de la funcţii aritmetice specializate la blocuri dedicate procesării digitale de semnal (DSP - Digital Signal Processing), bazate pe multiplicatoare hardware şi acumulatoare. În 2000 apare primul FPGA cu procesor hardware încorporat, bazat pe arhitectura

Page 14: SISTEME ÎNCORPORATE CU FPGA PENTRU · PDF fileSISTEME ÎNCORPORATE CU FPGA PENTRU CONTROLUL PROCESELOR RAPIDE - REZUMATUL TEZEI DE DOCTORAT - ... POSDRU/6/1.5/S/9, ID 6681, este un

12

ARM. De asemenea, odată cu creşterea numărului de blocuri logice integrate, a apărut tendinţa producătorilor de FPGA-uri de a dezvolta procesoare soft, implementabile economic în blocurile logice din FPGA.

În prezent, FPGA-urile au devenit platforme sistem: ambii mari producători de FPGA-uri îşi descriu dispozitivele complexe în astfel de termeni. Familia Virtex 6 de la Xilinx este descrisă ca FPGA platformă. Familia Stratix IV de la Altera este comercializată ca FPGA high end, capabilă să implementeze un întreg sistem pe un cip (SoC - System on a Chip). Astfel, de la epoca blocurilor logice interconectate prin conexiuni programabile, s-a ajuns la dispozitive configurabile complexe, capabile să implementeze un întreg sistem digital pe un cip, sistem compus din mai multe procesoare hard sau soft, din motoare de procesare dedicate DSP, coprocesoare matematice, periferice de control al memoriei sau de comunicaţie [5].

Ce rezervă viitorul? Conform [7], se pare că începând din 2007 am intrat în perioada specializării: familii diverse de FPGA-uri, bazate pe arhitecturi diferite, vor oferi dispozitive specializate pentru diferite tipuri de aplicaţii. De asemenea, programele software de sinteză la nivel înalt se vor specializa pe domenii diferite de aplicaţii.

2.2 Arhitecturi actuale de FPGA Această secţiune va prezenta pe scurt opţiunile arhitecturale şi tehnologice ale firmei

Xilinx, unul din principalii producători actuali de dispozitive FPGA. Xilinx oferă două familii principale de dispozitive FPGA, Spartan şi Virtex. În acest rezumat se prezintă doar familia Spartan.

Arhitectura familiei Spartan 6 se bazează pe felii logice (slice), grupate în blocuri logice 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.

Tot un sfert din feliile logice 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. 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

Page 15: SISTEME ÎNCORPORATE CU FPGA PENTRU · PDF fileSISTEME ÎNCORPORATE CU FPGA PENTRU CONTROLUL PROCESELOR RAPIDE - REZUMATUL TEZEI DE DOCTORAT - ... POSDRU/6/1.5/S/9, ID 6681, este un

13

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 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.

Fiecare circuit PLL are 5 ieşiri de tact. Circuitele DCM îmbunătăţesc caracteristicile semnalului de tact prin eliminarea asimetriilor sau pot fi folosite pentru generarea de semnale de tact defazate (maximum 8 faze: 0°, 45°, 90°, 135°, 180°, 225°, 270°, 315°) şi multiplicare sau divizare de frecvenţă. Circuitele DCM se bazează pe bucle cu calare pe întârziere (DLL – Delay Locked Loop).

Unele circuite din familia Spartan 6, şi anume cele din 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.

Informaţiile prezentate în această secţiune au rolul de a evidenţia extraordinarele

posibilităţi oferite de circuitele FPGA actuale. Ele au caracter introductiv, şi cititorul este îndrumat către vasta bibliografie specifică firmelor producătoare: [11], [12], [13], [14], din care s-a sintetizat aici, pentru informaţii mai detaliate.

Din cele prezentate în această secţiune se pot trage 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 complexe pentru a permite aceasta. În plus, 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 de 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. Altfel, la ce bun o multitudine de resurse, dacă nimeni nu reuşeşte să le folosească în întregime?

2.3 Metodologia de proiectare a unui sistem de control implementat în hardware pe FPGA

Dispozitivele FPGA permit proiectarea de arhitecturi hardware specializate, cu avantajul flexibilităţii mediului programabil în care se realizează implementarea. Acest lucru oferă un grad de libertate în plus în proiectarea de sisteme de control numeric faţă de folosirea microprocesoarelor, deoarece arhitectura hardware a sistemului de control nu e impusă a priori.

De multe ori, însă, proiectarea acestei arhitecturi este realizată intuitiv şi euristic şi nu este adaptată implementării de algoritmi din ce în ce mai complecşi. Din acest motiv se impune folosirea unei metodologii de proiectare eficiente. O astfel de metodologie se bazează pe trei principii majore [19]: rafinarea algoritmului de control, modularitatea şi potrivirea optimă între algoritmul ce trebuie implementat şi arhitectura hardware aleasă. Aceste trei concepte sunt prezentate în cele ce urmează.

2.3.1 Rafinarea algoritmului 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

Page 16: SISTEME ÎNCORPORATE CU FPGA PENTRU · PDF fileSISTEME ÎNCORPORATE CU FPGA PENTRU CONTROLUL PROCESELOR RAPIDE - REZUMATUL TEZEI DE DOCTORAT - ... POSDRU/6/1.5/S/9, ID 6681, este un

14

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). Un astfel de exemplu este algoritmul CORDIC (COordinate Rotation DIgital Computer), care se bazează doar pe operaţiile aritmetico-logice de adunare şi deplasare pentru a calcula o multitudine de funcţii trigonometrice, hiperbolice, liniare şi logaritmice. Un alt exemplu îl reprezintă algoritmii de aritmetică distribuită, ce folosesc în multe cazuri tabele de căutare şi a căror implementare este, în consecinţă, foarte potrivită arhitecturilor de FPGA-uri bazate pe LUT-uri. Î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. În acest sens, în [23] este prezentată o metodologie de calcul a numărului de biţi necesari pentru reprezentarea fiecărei cantităţi a sistemului de control, metodologie bazată pe normele ∞l şi 1l . A fost dezvoltat, de asemenea, un toolbox Matlab pentru analiza efectelor implementării filtrelor digitale şi a sistemelor de control folosind reprezentarea numerică în virgulă fixă [23], ce permite optimizarea alegerii reprezentării.

2.3.2 Modularitatea şi reutilizabilitatea Pentru proiectarea sistemelor complexe, principiul modularităţii este esenţial. 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.

Principiul modularităţii poate însemna şi folosirea de blocuri IP deja proiectate, testate şi sintetizate de alţii. În această categorie intră, de exemplu, procesoarele soft şi blocurile IP destinate operaţiilor specifice DSP.

Un modul poate fi definit ca un element al unei biblioteci, ce poate fi instanţiat direct, fără a trebui proiectat sau modificat. Astfel, reutilizabilitatea constă în folosirea elementelor de bibliotecă celor mai potrivite pentru o anumită aplicaţie. Modulele pot fi împărţite în biblioteci de diferite nivele de abstracţie, de exemplu la nivel RTL sau la nivel comportamental (behavioral). Reutilizabilitatea poate fi întâlnită la nivel de descriere HDL, la nivel de captură de schemă sau la nivele de proiectare mai abstracte, de exemplu la nivelul proiectării sistemelor DSP în Simulink.

2.3.4 Potrivirea optimă algoritm-hardware 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 prezentată în [24] şi numită metodologia AAA (sau 3A ). Prescurtarea AAA provine de la Algorithm Architecture Adequation, iar termenul adequation are sensul francez de potrivire eficientă, nu sensul cuvântului englezesc adequacy, ce implică 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

Page 17: SISTEME ÎNCORPORATE CU FPGA PENTRU · PDF fileSISTEME ÎNCORPORATE CU FPGA PENTRU CONTROLUL PROCESELOR RAPIDE - REZUMATUL TEZEI DE DOCTORAT - ... POSDRU/6/1.5/S/9, ID 6681, este un

15

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.

Pentru ilustrarea metodei se va folosi un exemplu din [19]: se consideră că trebuie implementată o operaţie matriceală simplă de forma:

⎥⎦

⎤⎢⎣

⎡⋅⎥⎦

⎤⎢⎣

⎡−−

=⎥⎦

⎤⎢⎣

b

a

q

d

XX

AAAA

XX

)()()()(

2221

1211

θθθθ (2.1)

Figura 2.11. DFG corespunzător ecuaţiei (2.1) [19].

Graful fluxului de date (DFG – Data Flow Graph) corespunzător ecuaţiei (2.1) este prezentat în Fig. 2.11. Fiecare nod al grafului reprezintă o operaţie şi fiecare muchie reprezintă o dependenţă de date între operaţii.

Structurile repetitive din DFG pot fi factorizate apoi conform metodologiei AAA [24], pentru a satisface constrângerile hardware. Fig. 2.12, reprodusă tot din [19], prezintă patru posibilităţi de implementare derivate din posibilităţile de factorizare ale DFG-ului.

Figura 2.12. Posibilităţi de implementare a operaţiilor descrise de (2.1) [19]. Operaţiile sunt înlocuite de circuite operatoare hardware, iar fiecare operator are un cost,

deoarece consumă resurse hardware. Cele 4 posibilităţi pot fi comparate din punctul de vedere al latenţei (timpul după care rezultatele sunt disponibile, exprimat în cicli de tact), al vitezei (timpul care trece între disponibilitatea a 2 rezultate consecutive la ieşire) şi al ariei ocupate, iar cea care prezintă compromisul cel mai avantajos este aleasă.

Este evident din Fig. 2.12 că structura ALU-1 este cea mai rapidă, dar consumă şi cele mai multe resurse. De obicei, resursele critice sunt operatorii complecşi, de tipul multiplicatoarelor, şi nu registrele sau multiplexoarele. Este de asemenea evident că structura ALU-4 ocupă cele mai puţine resurse hardware, dar va avea nevoie de un timp de procesare de 4 ori mai lung decât ALU-1. ALU-2 şi ALU-3 sunt soluţii intermediare atât din punctul de vedere al costurilor hardware, cât şi al timpului de procesare.

Aşadar, aceste trei principii ar trebui să ghideze încercările de implementare a algoritmilor de control automat în hardware pe dispozitive FPGA.

2.4 Sisteme de control pentru motoare electrice implementate în FPGA Această secţiune se ocupă cu trecerea în revistă a câtorva sisteme de control pentru

motoare electrice bazate pe FPGA apărute în literatură. Această trecere în revistă formează o idee cu privire la stadiul actual al cercetării în domeniu şi permite situarea rezultatelor obţinute prin această teză în contextul cercetării internaţionale.

Articolele [4], [19], [25] şi [26] sunt astfel de treceri în revistă, cu un spectru ceva mai larg. Totuşi, având în vedere că au apărut în 2007, trebuie completate cu cercetări bibliografice mai recente.

Astfel, în [27] se prezintă o abordare “integrată” a modelării şi implementării în FPGA a

Page 18: SISTEME ÎNCORPORATE CU FPGA PENTRU · PDF fileSISTEME ÎNCORPORATE CU FPGA PENTRU CONTROLUL PROCESELOR RAPIDE - REZUMATUL TEZEI DE DOCTORAT - ... POSDRU/6/1.5/S/9, ID 6681, este un

16

unui sistem de control fără senzori de viteză/poziţie pentru motorul de inducţie. Folosind un observator în spaţiul stărilor şi un sistem de control bazat pe reţele neuronale, autorii prezintă modelarea întregului sistem (inclusiv a motorului, de aici termenul de modelare “integrată”) folosind limbajul VHDL. După validarea prin simulare, sistemul este verificat experimental.

În [28] este prezentat un sistem de control partiţionat între hardware şi software pentru motorul PMSM. Autorii propun o abordare combinată între un regulator adaptiv de viteză bazat pe logică fuzzy, implementat în software pe un procesor soft, şi regulatoare vectoriale de curent, implementate în hardware.

În [29] este descrisă o bibliotecă de componente dezvoltate folosind software-ul System Generator, utilizabile în proiectarea de sisteme de control pentru motoare de curent continuu şi BLDC implementabile pe FPGA. Este prezentat de asemenea un sistem de control complet, incluzând o interfaţă pentru Simulink bazată pe paradigma “hardware în buclă” (HIL – hardware in the loop).

Articolul [30] descrie un sistem de control fără senzor de poziţie pentru motorul de inducţie, folosind metoda DTC (– Direct Torque Control) şi un observator de stare. Sistemul de control a fost proiectat folosind mediul LabView FPGA şi implementat pe o placă National Instruments RIO PXI-7831R ce conţine un FPGA din familia Virtex-II.

În [31] se prezintă un sistem de control al mişcării pe două axe bazat pe co-proiectare hardware-software: buclele de curent pentru motoarele PMSM sunt implementate în hardware pe FPGA, în timp ce buclele de viteză şi generarea traiectoriei sunt realizate prin software pe un procesor soft NiosII pe acelaşi FPGA.

O aplicaţie asemănătoare este prezentată în [32]: un sistem modular de control al mişcării multi-axe. Astfel, pentru motorul de curent continuu efector de pe fiecare din cele 4 axe este proiectat câte un regulator PID (proporţional – integrator – derivator) implementat în hardware, iar traiectoria este generată prin software ce rulează pe un procesor soft în acelaşi FPGA.

La fel, în [33] mişcarea unui robot omnidirecţional este controlată de un FPGA: controlul curenţilor prin trei motoare de curent continuu este efectuat de module hardware independente, iar controlul vitezei şi al traiectoriei este realizat prin software pe un procesor Nios II.

În [34], autorii propun un sistem de control simplu pentru motorul de curent continuu fără perii (BLDC – Brushless DC). Acesta se bazează pe alternarea a doar două valori pentru factorul de umplere al semnalului modulat în lăţimea impulsurilor (PWM – Pulse Width Modulation) aplicat motorului, simplificând proiectarea şi implementarea regulatorului. Conceptul este verificat prin simulări şi experimente.

În [35] şi [36] este prezentat un sistem de control pentru un motor PMSM dotat cu un rezolver analogic de poziţie. În FPGA sunt implementate regulatoare de curent cu histerezis pentru cele 3 faze ale motorului şi un modul de procesare a semnalelor provenite de la rezolver, modul bazat pe algoritmul CORDIC. O particularitate a sistemului prezentat este faptul că foloseşte un FPGA produs de firma Actel ce integrează periferice de conversie analog-digitală: circuite analogice de scalare a semnalelor, multiplexor analogic şi convertor analog-numeric (CAN).

În [37] se prezintă un algoritm de control PID pentru un servomotor de curent continuu, implementat în software (în limbaj de asamblare) pe un procesor soft PicoBlaze. În jurul procesorului s-a construit un întreg sistem de periferice descrise în VHDL şi implementate în hardware pe acelaşi FPGA: un circuit temporizator, un modul de interfaţare cu un amplificator analogic şi un CAN cu interfaţă serială SPI (Serial Peripheral Interface), un modul de generare de semnal PWM, un modul de comunicaţie serială RS232.

Articolul [38] prezintă un sistem cu procesor hard PowerPC modular şi scalabil bazat pe un FPGA XC2VP30ff896-6, aplicat pentru controlul în timp real al unui motor de curent continuu. S-au evaluat două sisteme de operare embedded de timp real, µC/OS-II şi Xilkernel.

În [39] se descrie proiectarea şi dezvoltarea unui sistem de control embedded pentru aplicaţii de robotică, bazat pe FPGA, sistemul de operare de timp real MontaVista Linux şi biblioteca specializată OROCOS (Open Robot Control Software). S-au integrat de asemenea o

Page 19: SISTEME ÎNCORPORATE CU FPGA PENTRU · PDF fileSISTEME ÎNCORPORATE CU FPGA PENTRU CONTROLUL PROCESELOR RAPIDE - REZUMATUL TEZEI DE DOCTORAT - ... POSDRU/6/1.5/S/9, ID 6681, este un

17

serie de module hardware oferite de proiectul Opencores. Lucrarea [40] descrie un sistem de control pentru motoare PMSM reconfigurabil în timp

real: în funcţie de cerinţe şi de aplicaţie, sistemul poate folosi implementări mai complete sau mai puţin complete ale algoritmului de control: control orientat după câmp (FOC – Field Orientated Control), FOC cu compensarea tensiunii electromotoare induse, FOC cu compensarea tensiunii induse şi cu decuplare între axe, control direct al cuplului (DTC). De asemenea, sistemul poate alege între implementarea pe un procesor soft sau implementarea în hardware. În funcţie de decizia sistemului, o parte din FPGA poate fi reconfigurată cu o altă implementare, aceasta este iniţializată, apoi i se dă controlul.

Articolul [41] prezintă proiectarea în Simulink, folosind software-ul DSP Builder, a unui sistem de control pentru PMSM implementabil în FPGA. Sistemul se bazează pe regulatoare cu histerezis pentru curenţi şi regulator PI de viteză. Algoritmul de control utilizează 56 de blocuri DSP de 9x9 biţi din FPGA (Altera Stratix II EP2S60F1024C4).

În [42] se propune controlul fără senzor de poziţie pentru motorul sincron folosind filtrul Kalman extins pentru estimarea poziţiei şi vitezei. Se folosesc regulatoare PI pentru curenţi, iar tensiunile trifazate se aplică prin modulaţie sinusoidală cu injecţie de semnal la punctul neutru. Cea mai complicată parte a sistemului este filtrul Kalman extins, datorită operaţiilor de înmulţire şi împărţire de matrice. De aceea, a fost optimizat în mod special, prin factorizare, ajungând totuşi să ocupe 36 de multiplicatoare hardware pe 18x18 biţi.

În [43] se prezintă un sistem de control al vitezei pentru un motor cu reluctanţă comutată (SRM – Switched Reluctance Motor) implementat pe principiul co-proiectării hardware-software: regulatorul de viteză, cu o dinamică mai înceată, este implementat prin software pe un procesor soft Nios II, iar regulatoarele de curent, cu o dinamică rapidă, sunt implementate în hardware.

Aceeaşi idee de co-proiectare hardware-software se regăseşte şi în [44], pentru implementarea unui sistem de control al vitezei pentru motorul de curent continuu. Diferenţa constă în faptul că se folosesc două procesoare hard IBM PowerPC 405, unul pentru regulatorul de viteză şi al doilea pentru emularea sistemului controlat (motorul de curent continuu). Regulatorul de curent, implementat ca modul hardware ataşat la primul procesor, este proiectat în Impulse C.

Articolul [45] prezintă un sistem combinat de control fără senzori de poziţie pentru motorul BLDC: startarea motorului se realizează în buclă deschisă, iar începând cu o anumită viteză se închide bucla folosind tensiunea electromotoare indusă. Pentru implementare s-a folosit un sistem combinat, bazat pe FPGA şi DSP.

În [46] este prezentat un algoritm de control fără senzor de poziţie pentru PMSM. Estimarea poziţiei se realizează cu ajutorul injecţiei unui semnal de frecvenţă înaltă în semnalul de comandă al motorului şi estimarea inductanţei momentane a statorului prin intermediul unei bucle cu calare pe fază (PLL – Phase Locked Loop). Atât bucla PLL, cât şi algoritmul de modulaţie bazat pe vectori spaţiali (SVM – Space Vector Modulation) utilizat pentru aplicarea tensiunilor pe cele 3 faze ale motorului se folosesc de algoritmi CORDIC pentru calcularea funcţiilor trigonometrice.

Lucrarea [47] realizează o comparaţie între implementarea în hardware şi cea pur software pe un procesor soft Cortex-M1 din familia ARM, a unui regulator de curent cu histerezis pentru PMSM. Pe lângă regulator şi transformările de coordonate asociate, s-a implementat şi un modul de procesare a semnalelor provenite de la un rezolver analogic pentru extragerea informaţiei de poziţie.

În [48] se prezintă o arhitectură de calcul modulară şi ierarhică bazată pe o unitate aritmetică ce realizează înmulţirea unei matrice cu un vector. Modulele alcătuiesc o bibliotecă de componente pentru controlul unui vehicul electric cu motoare de inducţie.

Articolul [49] prezintă un sistem de control fără senzor de poziţie pentru PMSM partiţionat între hardware şi software: regulatoarele PI de curent, transformările de coordonate, algoritmul SVM şi estimatorul de poziţie bazat pe un observator sliding mode sunt realizate în

Page 20: SISTEME ÎNCORPORATE CU FPGA PENTRU · PDF fileSISTEME ÎNCORPORATE CU FPGA PENTRU CONTROLUL PROCESELOR RAPIDE - REZUMATUL TEZEI DE DOCTORAT - ... POSDRU/6/1.5/S/9, ID 6681, este un

18

hardware, în timp ce estimarea vitezei şi reglarea ei sunt efectuate prin software pe procesorul soft Nios II.

În [50] este prezentat un sistem de control pentru motorul de inducţie alimentat de o punte invertoare prin intermediul unui circuit rezonant. Sistemul este descris folosind AHDL (Altera HDL) şi constă din regulatoare PI de viteză şi curent, circuit de măsurare a vitezei, circuite de transformare între sistemele de coordonate, circuit de aplicare a modulaţiei SVM modificate. Întregul sistem foloseşte 76 de multiplicatoare pe 9x9 biţi.

Se observă aşadar o multitudine de abordări pentru implementarea pe FPGA a sistemelor

de control pentru motoare electrice. Multe dintre acestea sunt dedicate motoarelor de curent alternativ, datorită complexităţii controlului acestora, şi deci a cerinţelor computaţionale pentru sistemul de timp real.

Scopul acestei lucrări, acela de a proiecta un sistem de control pentru motorul PMSM implementabil într-un circuit FPGA, se înscrie aşadar într-o tendinţă în cercetare la nivel internaţional. Ceea ce va particulariza sistemul proiectat va fi modul de proiectare, uneltele folosite pentru proiectare şi validare, şi mai ales constrângerile de proiectare impuse de dispozitivul FPGA ţintă: acesta este unul de cost redus, din familia Xilinx Spartan-3E, cu numai 20 de multiplicatoare integrate.

După cum se poate observa din articolele [37], [40], [43], [44], [47], [49] citate mai sus, în care o parte din sistemul de control rulează în software pe microprocesoare soft sau hard, implementarea prin software este net inferioară unei implementări în hardware din punctul de vedere al vitezei de execuţie. Aceasta deoarece se pierde principalul avantaj oferit de FPGA: posibilitatea de a profita de resurse hardware multiple şi independente pentru a realiza calcule în paralel. Această concluzie se desprinde şi din [57], unde se compară implementarea în hardware pe FPGA cu o implementare în software pe un procesor DSP. În [58], comparaţia se extinde şi la o implementare prin software pe un procesor soft MicroBlaze, cu rezultate asemănătoare: implementarea software pe MicroBlaze este mai lentă decât implementarea pe DSP, iar aceasta este de 11 ori mai lentă decât implementarea în hardware.

Studierea bibliografiei a condus deci la o direcţie de urmat pentru restul tezei: sistemul de control va fi proiectat pentru implementare în hardware pe FPGA, datorită performanţelor înalte posibile. Totuşi, procesoarele soft rămân o soluţie viabilă pentru anumite sarcini greu de implementat în hardware şi fără constrângeri stringente de timp de execuţie. Astfel de sarcini sunt cele de monitorizare într-un sistem de control, care trebuie să afişeze parametrii sau să realizeze comunicaţia cu un calculator gazdă. De aceea, un capitol al tezei va fi consacrat şi sistemelor cu procesoare soft.

2.5 Concluzii În prima parte a acestui capitol se punctează evoluţia în timp a dispozitivelor FPGA. Se

pare că aceasta s-a derulat în mai multe epoci delimitabile: 1985-1991 – epoca apariţiei (sau “copilăriei”) FPGA-urilor, care vede definirea arhitecturii generale şi o multitudine de producători; 1992-1999 – epoca de expansiune, când încep să se integreze elemente hardware dedicate şi creşte mult capacitatea circuitelor, mulţi producători fiind eliminaţi din cauza lipsei scalabilităţii arhitecturilor propuse de ei; 2000-2007 – epoca de acumulare, când se integrează tot mai multe elemente hardware dedicate, inclusiv procesoare hard; 2007-prezent – epoca de specializare: familii diferite, bazate pe arhitecturi diferite, se adresează unor domenii diferite de aplicaţii, sprijinite de medii de proiectare specializate.

În secţiunea a doua sunt prezentate succint caracteristicile arhitecturii actuale de FPGA-uri de cost scăzut produse de Xilinx. Secţiunea reprezintă o selecţie relevantă de informaţie din sute de pagini de documentaţie [11], [12], [13], [14], necesară pentru a crea o imagine asupra capabilităţilor dispozitivelor FPGA actuale.

În cea de-a treia secţiune este prezentată o metodologie de proiectare a sistemelor de control bazate pe FPGA, sintetizată din [19] şi bazată pe 3 principii majore: rafinarea

Page 21: SISTEME ÎNCORPORATE CU FPGA PENTRU · PDF fileSISTEME ÎNCORPORATE CU FPGA PENTRU CONTROLUL PROCESELOR RAPIDE - REZUMATUL TEZEI DE DOCTORAT - ... POSDRU/6/1.5/S/9, ID 6681, este un

19

algoritmului de control, modularitatea şi potrivirea optimă între algoritmul ce trebuie implementat şi arhitectura hardware aleasă.

Ultima secţiune a capitolului reprezintă un studiu bibliografic extins asupra sistemelor de control pentru motoare electrice implementate în FPGA. În urma acestuia se constată:

• Implementarea algoritmilor de control în hardware pe FPGA este mult mai eficientă din punctul de vedere al timpului de execuţie decât implementarea prin software [57], [58];

• Procesoarele soft sunt totuşi utile datorită posibilităţii de a porta aplicaţii deja dezvoltate şi de a implementa mai uşor sarcini fără constrângeri stringente de timp de execuţie;

• Majoritatea algoritmilor de control prezentaţi în literatură folosesc foarte multe resurse din FPGA, trebuind revizuiţi serios pentru implementarea în dispozitive FPGA de cost redus, cu doar câteva zeci de multiplicatoare integrate;

• În majoritatea abordărilor din literatură există o ruptură între proiectarea sistemului de control şi validarea sa prin simulare şi implementarea pe FPGA şi verificarea experimentală; doar uneori (de exemplu [27], [41]) se propune o abordare “integrată” pentru simulare şi proiectare/implementare.

Aşadar, direcţia propusă pentru cercetare, de a implementa un sistem de control pentru motorul PMSM în FPGA, se înscrie în tendinţele actuale de cercetare în domeniu la nivel internaţional. De asemenea, există o nişă pe care ar putea-o acoperi: proiectarea într-un mediu de nivel înalt, care să permită validarea prin simulare, având ca ţintă un dispozitiv FPGA de cost redus, deci implicând optimizarea la maximum a arhitecturii hardware a algoritmului de control.

3. Unelte de dezvoltare pentru dispozitive FPGA Acest capitol prezintă o scurtă trecere în revistă a metodelor de proiectare şi a uneltelor

software disponibile pentru dezvoltarea sistemelor bazate pe dispozitive FPGA. Capitolul este împărţit în 4 subcapitole sau secţiuni. Astfel, în Secţiunea 3.1 sunt prezentate în general uneltele de dezvoltare disponibile pentru proiectarea de sisteme în FPGA. În Secţiunea 3.2 este prezentat software-ul System Generator, produs de Xilinx, ce permite proiectarea integrată în mediul Simulink a sistemelor implementabile în FPGA. În Secţiunea 3.3 sunt prezentate pe scurt unelte software şi hardware de depanare a sistemelor proiectate în FPGA. Capitolul se încheie cu o secţiune dedicată prezentării câtorva aplicaţii originale, dezvoltate cu uneltele prezentate pe parcursul capitolului şi implementate în FPGA.

3.1 Prezentare generală a uneltelor de proiectare pentru FPGA 3.1.2 Nuclee IP Nucleele IP sunt module dezvoltate pentru a efectua o anumită funcţie. Dezvoltarea lor

include testarea completă şi optimizarea pentru o anumită arhitectură. În acest fel, folosirea acestor nuclee predefinite reduce timpul de proiectare – sinteză – verificare. Adesea, nucleele IP sunt parametrizate, pentru a putea fi uşor folosite şi înglobate în alte proiecte.

Un număr mare de nuclee IP sunt disponibile liber sau contra cost de la firme producătoare de FPGA-uri (Xilinx, Altera), firme producătoare de unelte software de dezvoltare (Synopsys, Cadence, Mentor Graphics, Altium) sau firme specializate în anumite domenii de aplicaţii (Modelware, QuickFlex) [4]. Mediul academic este de asemenea foarte prolific în această direcţie [5]. O clasă specială de nuclee IP o reprezintă microprocesoarele soft. Acestea sunt microprocesoare proiectate pentru a putea fi implementate în dispozitive FPGA, folosind resursele logice ale acestora. Există procesoare proiectate special în acest scop, pentru a folosi cât mai economic resursele FPGA-ului (de exemplu, PicoBlaze şi MicroBlaze de la Xilinx, Nios şi Nios II de la Altera, ZPU de la Zylin AS, Mico32 de la Lattice), sau nuclee IP derivate din (şi compatibile la nivel de instrucţiune cu) procesoare disponibile de ceva timp în industrie (de exemplu, TSK80 bazat pe Z80, TSK51 bazat pe Intel 8051, TSK3000A bazat pe MIPS R3000, toate de la Altium; LEON 3 bazat pe Sparc V8, de la Aeroflex Gaisler; Cortex-M1 de la ARM,

Page 22: SISTEME ÎNCORPORATE CU FPGA PENTRU · PDF fileSISTEME ÎNCORPORATE CU FPGA PENTRU CONTROLUL PROCESELOR RAPIDE - REZUMATUL TEZEI DE DOCTORAT - ... POSDRU/6/1.5/S/9, ID 6681, este un

20

compatibil cu ARM7, ARM9, ARM11). Nucleele IP reprezintă, împreună cu uneltele software pentru integrarea lor în proiecte

complexe, unul din motoarele care împing înainte dezvoltarea soluţiilor bazate pe FPGA-uri în ritmul alert în care aceasta are loc.

3.1.3 Unelte de dezvoltare pentru sisteme încorporate în FPGA FPGA-urile actuale au devenit platforme pentru întregi sisteme de calcul, deschizând o

nouă epocă în istoria sistemelor implementate pe un singur cip (SoC - System on a Chip). Implementarea de astfel de sisteme încorporate eterogene presupune sarcini foarte complexe pentru proiectanţii de hardware şi software [72]. Din punctul de vedere al hardware-ului, principala problemă o constituie integrarea eficientă a nucleelor IP, ceea ce înseamnă proiectare, sinteză, simulare şi verificare. Din punctul de vedere al software-ului, principala problemă o constituie depanarea sistemului software, compus din sistem de operare în timp real (RTOS - Real Time Operating System), driver-e şi aplicaţie, în cadrul real al sistemului hardware proiectat.

Producătorii de FPGA-uri au dezvoltat şi unelte software pentru proiectarea de sisteme bazate pe propriile microprocesoare hard sau soft. Aceste unelte includ nuclee IP pentru periferice, unelte de modificare/adaptare a nucleului de procesare soft, unelte pentru dezvoltarea de programe software (editor, asamblor, compilator, editor de legături (linker), depanator), depanatoare hardware/software, unelte de verificare a hardware-ului, biblioteci, exemple de hardware şi software (reference designs) pentru plăci de dezvoltare. Exemple de astfel de unelte de dezvoltare sunt Xilinx EDK (Embedded Development Kit), Nios II IDE (Integrated Development Enviroment) şi SoPC Builder de la Altera, System Designer de la Atmel, QuickWorks de la QuickLogic.

Sunt disponibile şi unelte de co-verificare hardware/software, ca Seamless de la Mentor Graphics şi Active-HDL de la Aldec. Seamless permite simularea procesorului încorporat la nivel de instrucţiune (ISS - Instruction Set Simulator) şi simularea componentelor hardware din jurul procesorului într-un mediu integrat. Active-HDL permite verificarea sistemelor bazate pe Nios II folosind un simulator logic pentru componentele hardware şi o placă cu FPGA conectată la depanatorul din Nios II IDE pentru simularea procesorului.

O categorie deosebită de unelte de dezvoltare pentru FPGA-uri permit proiectarea de SoC-uri în limbajul de programare C. Acestea se bazează pe diferite subseturi ale limbajului C şi pe librării specifice asociate, cum ar fi Impulse C [73] sau Handel C [74]. Exemple de unelte de dezvoltare bazate pe limbajul C: DK Design Suite de la Agility, CoDeveloper de la Impulse Accelerated Technologies, Catapult C Synthesis de la Mentor Graphics.

Aceste unelte de dezvoltare, ce permit proiectarea abstractizată la nivel înalt, de sistem, şi ascunderea detaliilor arhitecturilor fizice pe care se realizează implementarea, sunt denumite generic unelte de proiectare ESL (Electronic System Level).

3.1.4 Unelte de dezvoltare pentru nuclee DSP în FPGA Aşa cum rezultă din prezentarea arhitecturilor FPGA-urilor actuale din Secţiunea 2.2,

dispozitivele FPGA permit un înalt grad de paralelizare a operaţiilor aritmetice folosite în procesarea digitală de semnal. Era normal ca pentru utilizarea acestor resurse hardware să apară unelte de dezvoltare cât mai specializate. Cum Matlab este platforma favorită pentru dezvoltarea algoritmilor DSP, era firesc să se încerce realizarea unor unelte de legătură între codul scris în Matlab sau modelul realizat în Simulink şi hardware-ul disponibil în dispozitivele FPGA. Ideea a fost mai întâi implementată cu succes în cazul generării de cod pentru procesoare DSP direct din modele Simulink, de către dSPACE, cu TargetLink [77].

Astfel, ambii producători mari de FPGA-uri oferă şi software pentru generare de module IP din scheme Simulink: Xilinx oferă System Generator for DSP, iar Altera – DSP Builder. Ambele unelte preiau un model Simulink realizat cu blocuri din toolbox-uri specifice şi le translatează în descrieri hardware sintetizabile în FPGA, ce pot fi mai departe prelucrate de uneltele de implementare (Xilinx ISE, respectiv Altera Quartus II). Avantajul major al metodei

Page 23: SISTEME ÎNCORPORATE CU FPGA PENTRU · PDF fileSISTEME ÎNCORPORATE CU FPGA PENTRU CONTROLUL PROCESELOR RAPIDE - REZUMATUL TEZEI DE DOCTORAT - ... POSDRU/6/1.5/S/9, ID 6681, este un

21

constă în faptul că hardware-ul obţinut şi modelul Simulink sunt echivalente, simularea în Simulink a modelului realizat fiind exactă la nivel de bit şi ciclu (bit and cycle accurate) [19]. Un dezavantaj al acestor unelte este faptul că implementările sunt realizate folosind reprezentarea numerică în virgulă fixă. Însă pentru aplicaţiile reale de procesare de semnal gama dinamică şi amplitudinea semnalelor este suficient de limitată pentru ca o reprezentare în virgulă fixă pe destui biţi să dea rezultate mai mult decât acceptabile.

Pe lângă oferta producătorilor de FPGA-uri, există şi firme specializate în unelte de proiectare care oferă capabilităţi asemănătoare. De exemplu, Synplify DSP de la Synplicity generează cod RTL din modele Simulink. Reprezentarea numerelor este tot în virgulă fixă, dar software-ul optimizează conversia din virgulă mobilă în virgulă fixă. Un alt exemplu este Signal Processing Designer de la CoWare, care oferă un mediu de modelare şi simulare grafic bazat pe scheme bloc asemănător cu Simulink. Blocurile sunt scrise în limbajul C, dar se pot apela şi funcţii Matlab sau se pot trimite rezultatele simulării în Matlab, pentru analiză.

3.2 Proiectarea în mediul Simulink a structurilor hardware folosind blockset-ul System Generator

În general, proiectarea structurilor numerice de control în FPGA implică realizarea unui hardware specializat ce execută un anumit algoritm de control. Avantajul major al dispozitivelor FPGA constă în faptul că o multitudine de resurse pot fi folosite în paralel, pentru operaţii diferite. Un algoritm de control implementat în FPGA poate fi văzut ca o serie de unităţi aritmetico-logice specializate ce lucrează în paralel sau într-o anumită secvenţă. În vreme ce o unitate aritmetico-logică de uz general oferă foarte multe posibilităţi de utilizare şi configurare, fiind de obicei necesară microprogramarea pentru implementare, unităţile de calcul specializate, fiind mai simple, pot fi implementate mult mai uşor, folosind logică combinaţională sau secvenţiatoare simple.

Proiectarea acestor structuri hardware poate fi realizată şi prin metodele clasice: captură de schemă sau descriere într-un limbaj de descriere hardware (HDL - Hardware Description Language) [80], dar şi prin metode mai noi, cum ar fi descrierea într-un limbaj de programare consacrat, ca C [73], [74] sau Matlab [5]. În vreme ce descrierea algoritmilor în C sau Matlab poate fi foarte folositoare deoarece permite un nivel înalt de detaliere, iar metodele de proiectare sunt bine cunoscute şi cercetate, proiectarea în Simulink oferă avantaje majore: un nivel de abstractizare mult mai înalt decât proiectarea la nivel de captură de schemă logică, cu păstrarea totuşi a caracterului vizual al informaţiei, foarte uşor de urmărit şi înţeles; simularea facilă, cu generarea automată a vectorilor de test şi vizualizarea rapidă a rezultatelor; posibilitatea interfaţării cu alte unelte software, cum ar fi simulatoare HDL sau asambloare/compilatoare pentru procesoare soft încorporate în FPGA. Din aceste motive, proiectarea în Simulink a structurilor hardware implementate în FPGA este foarte folosită.

Acest subcapitol prezintă pe scurt utilizarea software-ului System Generator, produs de Xilinx, pentru proiectarea de structuri hardware folosite în control automat, precum şi metode de integrare a structurilor astfel obţinute în proiecte complexe. Se prezintă de asemenea procedeul de importare în Simulink şi simulare a modulelor proiectate prin metode de nivel mai jos, cum ar fi captura de schemă logică sau descrierea HDL.

Software-ul System Generator permite definirea de hardware specific pentru un anumit dispozitiv fizic într-un mediu cu un nivel înalt de abstractizare. În System Generator, semnalele nu sunt doar biţi, ci numere cu semn sau fără semn, întregi sau reale reprezentate în virgulă fixă, cu lăţime variabilă. O schimbare în proiect se traduce automat în modificări ale formatelor de reprezentare. Blocurile nu sunt doar reprezentări pentru elemente hardware, ci îşi modifică în funcţie de setări şi context rezultatele pe care le oferă şi hardware-ul pe care îl generează.

System Generator poate fi folosit pentru implementarea unei anumite părţi dintr-un proiect mai complex. În acest sens, System Generator este foarte potrivit pentru a implementa căi de date şi hardware de control pentru ele, dar este mai puţin potrivit pentru definirea de interfeţe externe ce au cerinţe de temporizare sofisticate. În aceste situaţii, se poate folosi System

Page 24: SISTEME ÎNCORPORATE CU FPGA PENTRU · PDF fileSISTEME ÎNCORPORATE CU FPGA PENTRU CONTROLUL PROCESELOR RAPIDE - REZUMATUL TEZEI DE DOCTORAT - ... POSDRU/6/1.5/S/9, ID 6681, este un

22

Generator pentru a implementa o porţiune din proiect, iar o altă porţiune poate fi implementată prin metode clasice, mai orientate către detalii (captură de schemă sau descriere HDL), iar apoi modulele pot fi integrate într-un întreg. În ceea ce priveşte implementarea unui întreg sistem în System Generator, din Simulink se poate obţine o descriere HDL a întregului proiect, ce poate fi apoi procesată de uneltele obişnuite de sinteză şi implementare.

3.2.2 Blockset-ul Xilinx Un blockset Simulink reprezintă o bibliotecă de blocuri ce pot fi conectate în editorul de

scheme bloc Simulink pentru a crea modele funcţionale ale sistemelor dinamice. Pentru modelare, blocurile System Generator sunt folosite ca şi oricare alte blocuri Simulink. Blocurile oferă o reprezentare la un nivel de abstractizare mai înalt pentru funcţii matematice, funcţii tipice de procesare digitală de semnal, elemente logice, memorii, etc. De asemenea, există blocuri ce permit interfaţarea cu alte unelte software, cum ar fi ModelSim şi FDATool. Blocurile System Generator sunt precise la nivel de bit şi ciclu (bit and cycle accurate). Precizia la nivel de bit înseamnă că valorile rezultate în Simulink sunt aceleaşi cu valorile corespunzătoare returnate de hardware. Precizia la nivel de ciclu înseamnă că valorile rezultate sunt produse la momente de timp ce corespund momentelor la care reacţionează hardware-ul (ciclu de tact).

Odată instalat System Generator, în vizualizorul de biblioteci Simulink apare blockset-ul Xilinx, cu bibliotecile corespunzătoare. Blockset-ul Xilinx conţine blocuri de bază ale System Generator. Blocurile utilizate des sunt incluse în mai multe biblioteci, pentru găsirea mai uşoară. Toate blocurile sunt incluse în biblioteca numită Index. În Tabelul 3.1 este prezentată o descriere sumară pentru fiecare bibliotecă.

Tabelul 3.1 Bibliotecile blockset-ului Xilinx. Biblioteca Descriere

Basic Elements Blocuri de bază pentru construcţia de module de logică digitală. Communication Blocuri corectoare de erori şi modulatoare, utilizate adesea în sisteme de

comunicaţie digitale. Control Logic Blocuri pentru circuite de control şi maşini cu stări finite. Data Types Blocuri pentru conversia datelor între diferite formate şi moduri de

reprezentare. DSP Blocuri pentru funcţii de procesare digitală de semnal. Index Conţine toate blocurile din blockset-ul Xilinx. Math Blocuri pentru funcţii matematice. Memory Blocuri pentru implementarea şi accesarea memoriei. Shared Memory

Blocuri pentru implementarea şi accesarea de memorii partajate.

Tools Blocuri pentru controlul simulării, vizualizarea şi analiza datelor, interfaţarea cu alte unelte.

Pe lângă blockset-ul Xilinx, System Generator include şi un blockset numit Xilinx Reference Blockset, conţinând funcţii compuse din blocuri Xilinx ce acoperă o arie largă de funcţionalităţi. Fiecare bloc din acest blockset este implementat ca un subsistem cu mască, configurabil prin intermediul parametrilor. Bibliotecile din Xilinx Reference Blockset sunt prezentate pe scurt în Tabelul 3.2.

Tabelul 3.2 Bibliotecile blockset-ului Xilinx Reference. Biblioteca Descriere

Communication Blocuri utilizate adesea în sisteme de comunicaţie digitale. Control Logic Blocuri logice pentru circuite de control şi maşini cu stări finite. DSP Blocuri pentru funcţii de procesare digitală de semnal. Imaging Blocuri pentru procesare de imagini. Math Blocuri ce implementează funcţii matematice.

Page 25: SISTEME ÎNCORPORATE CU FPGA PENTRU · PDF fileSISTEME ÎNCORPORATE CU FPGA PENTRU CONTROLUL PROCESELOR RAPIDE - REZUMATUL TEZEI DE DOCTORAT - ... POSDRU/6/1.5/S/9, ID 6681, este un

23

3.2.5 Biblioteci ale blockset-ului Xilinx Biblioteca Basic Elements conţine reprezentări pentru diferite configuraţii de circuite

secvenţiale (Addressable Shift Register, Counter, Delay, LFSR, Parallel to Serial, Register, Serial to Parallel, Time Division Demultiplexer, Time Division Multiplexer) sau combinaţionale (Bit Basher, Concat, Constant, Convert, Expression, Inverter, Logical, Mux, Relational, Slice). De asemenea, include diferite blocuri pentru controlul şi verificarea ratelor de prelucrare a datelor (Clock Enable Probe, Down Sample, Reset Generator, Up Sample), precum şi a formatului de reprezentare (Assert, Reinterpret). Blocul Black Box permite încorporarea unui modul HDL proiectat în alt mod (fie rezultat după captură de schemă, fie descris direct în HDL) în Simulink pentru co-simulare folosind un simulator extern bazat pe HDL.

Pe lângă blocurile Black Box, Constant, Counter, Expression, Inverter, Logical, Mux, Register, Relational, Slice, deja prezentate, biblioteca Control Logic include şi blocuri pentru instanţierea de memorii (Dual Port RAM, FIFO, ROM, Single port RAM) şi de procesoare (EDK Processor, PicoBlaze Microcontroller). Blocul MCode permite executarea de cod Matlab în Simulink, iar blocul Shift realizează operaţia de deplasare.

Biblioteca Data Types grupează blocuri folosite pentru manipularea semnalelor, trecerea dintr-un format de reprezentare în altul, extragerea de biţi sau grupuri de biţi, etc. Aceste blocuri (cu o singură excepţie, Scale, ce scalează valoarea de la intrare cu un factor putere a lui 2 prin ajustarea poziţiei virgulei fixe în reprezentare) se găsesc şi în bibliotecile deja prezentate, şi au fost grupate aici pentru uşurarea găsirii lor.

Biblioteca Math permite instanţierea de operatori aritmetici (Accumulator, AddSub, Cmult, Mult, Threshold) sau realizarea unor funcţii matematice uzuale folosind nuclee configurabile (Complex Multiplier 3.0, CORDIC 4.0, Divider Generator 2.0, SineCosine).

Biblioteca Memory grupează blocuri folosite pentru implementarea diverselor tipuri de module de memorie în Simulink. Aceste blocuri (cu o excepţie, Shared Memory, ce implementează o memorie RAM ce poate fi partajată între mai multe proiecte sau secţiuni ale aceluiaşi proiect) se găsesc şi în bibliotecile deja prezentate, şi au fost grupate aici pentru uşurarea găsirii lor.

Biblioteca Tools conţine diferite unelte de control şi verificare a simulării (Clock Probe, Configurable Subsystem Manager, Disregard Subsystem, Indeterminate Probe, Multiple Subsystem Generator, Pause Simulation, Sample Time, Simulation Multiplexer, Single-Step Simulation, Toolbar, WaveScope), de interfaţă pentru depanare (ChipScope, ModelSim) sau proiectare (FDA Tool), de estimare a resurselor (Resource Estimator). Aceste blocuri nu au în general corespondent în hardware, fiind utile pentru simulare şi depanare la proiectare.

Din prezentarea bibliotecilor System Generator se poate trage concluzia că această unealtă de proiectare poate fi folosită atât pentru proiectare la nivel înalt, instanţiind nuclee IP, cât şi pentru proiectare la nivel de transfer între registre, oferind flexibilitate maximă. De altfel, în [87] se arată că un sistem complex proiectat cu System Generator este comparabil ca performanţe cu unul proiectat în HDL, având chiar unele avantaje în ceea ce priveşte posibilităţile de ajustare ulterioară.

3.2.12 Importarea în Simulink a unui modul proiectat prin captură de schemă Folosind unealta software System Generator, în mediul Simulink se pot proiecta structuri

numerice ce pot fi apoi implementate direct în hardware, pe dispozitive de tip FPGA. Această metodă de proiectare permite un nivel de abstractizare mai înalt decât metodele de proiectare obişnuite (captură de schemă sau descriere HDL) dar are dezavantajul că nu se poate aplica pentru module hardware cu pretenţii speciale de temporizare, de exemplu interfeţe externe cu memoria sau cu dispozitive periferice. De asemenea, în funcţie de experienţa proiectantului, metodele de proiectare la nivel jos pot da rezultate mai bune în ceea ce priveşte resursele ocupate şi timpii de execuţie. Din aceste motive, este foarte utilă o modalitate de combinare a metodelor de proiectare la nivel jos cu proiectarea la nivel înalt în Simulink.

Unealta System Generator permite importarea unui modul HDL într-o schemă bloc

Page 26: SISTEME ÎNCORPORATE CU FPGA PENTRU · PDF fileSISTEME ÎNCORPORATE CU FPGA PENTRU CONTROLUL PROCESELOR RAPIDE - REZUMATUL TEZEI DE DOCTORAT - ... POSDRU/6/1.5/S/9, ID 6681, este un

24

Simulink. Acest modul poate proveni fie dintr-o descriere directă în limbaj HDL, fie dintr-o traducere în limbaj HDL a unei scheme logice capturate. Prin importarea modulului, acesta poate fi simulat folosind un simulator HDL extern, apelat direct din Simulink. Avantajul este evident: simulatorul HDL primeşte la intrare vectori de test generaţi automat de Simulink, iar semnalele de ieşire pot fi vizualizate direct în mediul Simulink, împreună cu semnalele din restul schemei bloc. Realizarea unei co-simulări Simulink-HDL presupune importarea în Simulink a modulului proiectat printr-o altă metodă, folosind blocul Black Box din biblioteca Basic Elements.

3.2.13 Co-simularea Simulink-HDL a unui modul proiectat prin captură de schemă După definirea modulului Black Box, acesta este în starea Inactive. Acest lucru înseamnă

că simularea Simulink nu-l va activa, deci nu se va ţine cont de el. Dacă se doreşte simularea funcţionalităţii blocului, atunci se va alege o altă opţiune pentru câmpul Simulation Mode. Dacă se alege ISE Simulator, atunci se va folosi pentru co-simulare un simulator HDL produs de Xilinx şi inclus în pachetul ISE. O altă opţiune este folosirea unui simulator extern mai performant. În caz că se alege această opţiune, trebuie să existe instalat simulatorul ModelSim, produs de Mentor Graphics, iar în schema bloc Simulink trebuie adăugat blocul ModelSim. Dacă se foloseşte limbajul Verilog, atunci trebuie să se bifeze opţiunea Include Verilog unisim library pentru blocul ModelSim. De asemenea, biblioteca Unisim, conţinând elementele de bază pentru proiectarea de hardware în FPGA şi fiind oferită de Xilinx, trebuie compilată în simulatorul ModelSim sub numele unisims_ver.

Simulatorul ModelSim permite vizualizarea formelor de undă ale semnalelor de intrare şi ieşire ale modulului simulat, dar permite şi vizualizarea semnalelor interne ale modulului, ceea ce este foarte important pentru depanare.

3.3 Unelte de depanare pentru sisteme implementate în FPGA Cele mai avantajoase unlte de depanare pentru proiectarea bazată pe FPGA-uri sunt

analizoarele logice “virtuale”. Acestea sunt nuclee IP ce se implementează în resursele nefolosite din FPGA. Modul de lucru este următorul: se definesc semnalele ce trebuie analizate, se defineşte dimensiunea ferestrei de analiză (numărul de eşantioane, în strânsă legătură cu memoria disponibilă în FPGA), se defineşte un eveniment de declanşare a analizei (trigger, o condiţie ce trebuie îndeplinită de unul sau mai multe din semnalele urmărite), se defineşte perioada de eşantionare. Semnalele urmărite sunt salvate în memoria internă din FPGA (rămasă nefolosită de către aplicaţie) începând cu momentul în care condiţia de trigger este îndeplinită. Apoi sunt transferate pe un calculator gazdă, unde pot fi vizualizate şi analizate folosind programe software specializate. Exemple de astfel de unelte proiectate de producătorii de FPGA-uri sunt SignalTap II de la Altera, ChipScope Pro de la Xilinx, ispTRACY de la Lattice. Astfel de unelte sunt disponibile şi de la alte firme specializate: Identify de la Synplicity, FPGAView de la First Silicon Solutions. Altium Designer oferă biblioteci de instrumente virtuale pentru depanare, ce se implementează în FPGA şi sunt afişate prin interfaţa software-ului de proiectare.

Există posibilitatea folosirii blocurilor IP interne cu instrumente specializate externe. De exemplu, software-ul B4655A FPGA Dynamic Probe de la Agilent Technologies se poate combina cu ChipScope Pro sau EDK şi se poate folosi cu analizoare logice din familiile 16900, 16800, 1680, 1690 de la Agilent, pentru FPGA-urile Xilinx. Agilent oferă şi B4656A FPGA Dynamic Probe, care, în combinaţie cu Quartus II Logic Analyzer Interface şi aceleaşi familii de analizoare logice, se poate folosi pentru FPGA-urile Altera. De asemenea, Agilent oferă E9524A MicroBlaze Trace Toolset, ce, în combinaţie cu aceleaşi familii de analizoare logice, poate fi folosit pentru urmărirea fluxului de date şi program a unul sau mai multe procesoare MicroBlaze implementate în FPGA-uri Xilinx. FPGAView de la First Silicon Solutions poate fi combinat cu Quartus II Logic Analyzer Interface şi analizoare logice Tektronix din familiile TLA600, TLA5000, TLA700, TLA7000 sau MSO4000 pentru depanarea sistemelor bazate pe FPGA-uri Altera, sau cu Logic Analyzer Core şi aceleaşi familii de analizoare logice pentru depanarea sistemelor bazate pe FPGA-uri Xilinx.

Page 27: SISTEME ÎNCORPORATE CU FPGA PENTRU · PDF fileSISTEME ÎNCORPORATE CU FPGA PENTRU CONTROLUL PROCESELOR RAPIDE - REZUMATUL TEZEI DE DOCTORAT - ... POSDRU/6/1.5/S/9, ID 6681, este un

25

3.4 Studii de caz În continuare se vor prezenta trei studii de caz originale, aplicaţii de control automat

implementate pe FPGA. Acestea servesc la a exemplifica aplicarea metodologiei şi utilizarea uneltelor de proiectare prezentate. De asemenea, au avut un rol esenţial în familiarizarea autorului cu uneltele de proiectare şi dezvoltarea unor abilităţi de lucru cu dispozitivele FPGA, absolut necesare pentru a atinge obiectivul final propus al tezei.

3.4.1 Controlul motorului de curent continuu folosind bucla cu calare pe fază Bucla cu calare pe fază (PLL – Phase Locked Loop) este probabil cel mai răspândit

exemplu de sistem de reglare automată în buclă închisă. O utilizare mai puţin răspândită, deşi introdusă în anii 1970, a buclei PLL este controlul vitezei motoarelor de curent continuu [93].

Bucla PLL constă dintr-un detector de fază, un filtru şi un oscilator controlat în tensiune (VCO – Voltage Controlled Oscillator). Semnalul de ieşire al oscilatorului controlat în tensiune este comparat cu un semnal de referinţă de către circuitul detector de fază. Ieşirea filtrată a acestuia comandă VCO-ul. Bucla PLL lucrează în sensul minimizării erorii de fază dintre cele două semnale. În cazul controlului vitezei unui motor de curent continuu folosind bucla PLL, acesta trebuie inclus în buclă: driver-ul, motorul şi codificatorul optic de poziţie formează DCO-ul (DCO – Digitally Controlled Oscillator) buclei. Diferenţa faţă de un DCO obişnuit constă în faptul că combinaţia motor - codificator este un sistem de ordinul 2, şi acest lucru trebuie luat în consideraţie când se proiectează bucla.

Schema bloc a sistemului de control al motorului este prezentată în Fig. 3.7. Acesta constă dintr-un detector de fază şi frecvenţă (PFD – Phase Frequency Detector), un filtru de buclă şi motorul cu codificatorul incremental de poziţie (tahometru optic).

Figura 3.7. Schema bloc a sistemului de control PLL. Funcţia de transfer a motorului, incluzând proprietatea de integrator a tahometrului, este

dată de (3.1), unde mK este amplificarea, iar mT este constanta de timp a motorului. Dacă se foloseşte un filtru de ordinul I, cum se procedează de obicei, sistemul în buclă

închisă va avea trei poli. Aceasta înseamnă că este nevoie de un filtru cu un zero. Altfel, faza funcţiei de transfer în buclă închisă va depăşi 180° la frecvenţe înalte şi sistemul va pierde stabilitatea. Din acest motiv se foloseşte un filtru de tip PI, a cărui funcţie de transfer este (3.2),

unde 1

2

ττ

=PK , 1

=IK .

)1()(

m

m

sTsK

sH+

= , (3.1)s

ss

KKsF I

P1

2 1)(

ττ +

=+= . (3.2)

Întreaga buclă de control a fost proiectată pentru a fi implementată în FPGA. Pentru aceasta, a fost proiectat un circuit secvenţial original detector de fază, iar filtrul a fost discretizat şi implementat prin operatori aritmetici. De asemenea, a fost proiectat un circuit generator de semnal modulat în durata impulsurilor (PWM – Pulse Width Modulation), cu rol de convertor numeric-analogic, pentru controlul tensiunii aplicate motorului. Schema bloc a detectorului de fază este prezentată în Fig. 3.8.

Figura 3.8. Schema bloc a detectorului de fază.

Page 28: SISTEME ÎNCORPORATE CU FPGA PENTRU · PDF fileSISTEME ÎNCORPORATE CU FPGA PENTRU CONTROLUL PROCESELOR RAPIDE - REZUMATUL TEZEI DE DOCTORAT - ... POSDRU/6/1.5/S/9, ID 6681, este un

26

Detectorul de fază semnalează atât magnitudinea erorii de fază, cât şi direcţia erorii (phase lead sau phase lag). De asemenea, şi o eroare de frecvenţă este reflectată de comportarea circuitului, acesta putând fi considerat detector de fază şi frecvenţă (PFD – Phase Frequency Detector). Ieşirea detectorului de fază este liniară în intervalul [-π;+π) şi este neliniară în cazul erorii de frecvenţă. Detectorul de fază este deci un convertor analog-numeric pentru eroarea de fază, a cărui funcţie de transfer pentru intervalul [-π;+π) este (3.3). Detectorul de fază proiectat oferă avantajul unei reprezentări foarte precise, pe 16 biţi, a defazajului. Este astfel superior altor circuite prezentate în literatură [101], bazate pe automate de stări.

În ceea ce priveşte filtrul de buclă, acesta este proiectat în domeniul digital pornind de la ecuaţia (3.2). Prin discretizarea acesteia, incluzând caracteristica de extrapolator de ordin 0 a detectorului de fază, se ajunge la (3.4), care conduce la (3.5), unde T este perioada de eşantionare, adică perioada semnalului de referinţă. Dacă se exprimă (3.5) în 1−z , se obţine (3.6). Notând ieşirea filtrului cu u[k] şi intrarea cu ε[k], atunci (3.6) conduce la o relaţie de calcul pentru u[k], (3.9), trecând prin (3.7) şi (3.8).

π265536

=dK (3.3) ⎥⎦

⎤⎢⎣

−+

−−

=⎭⎬⎫

⎩⎨⎧ +

−= 22 )1(1

11)(z

TzKz

zKz

zsK

sKZ

zzzF IPIP (3.4)

1)(

−+=

zTK

KzF IP (3.5)

1

1

1)(

−+=

zTzK

KzF IP (3.6)

)()()()()( 11 zEzKTKzEKzUzzU PIP−− −+=− (3.8)

1

1

1)(

)()(

−−+

=Ε z

zKTKKzzU PIP (3.7)

]1[)(][]1[][ −−++−= kKTKkKkuku PIP εε . (3.9)

Schema bloc a filtrului digital, adică structura hardware dedicată ce implementează ecuaţia cu diferenţe (3.9) este prezentată în Fig. 3.9. Filtrul este implementat folosind multiplicatoarele dedicate pe 18 biţi ale dispozitivului FPGA Spartan-3E XC3S500E, de la Xilinx, care s-a utilizat la efectuarea experimentelor. După fiecare operator aritmetic este implementată o structură hardware de detectare a depăşirii şi saturare a rezultatului la valoarea maximum pozitivă sau maximum negativă reprezentabilă pe 16 biţi. Acest lucru permite evitarea efectelor catastrofale ale depăşirilor [82], chiar dacă saturaţia, atunci când este atinsă, introduce neliniarităţi.

Pentru determinarea factorilor de amplificare ai elementelor proporţional şi integrator s-a aplicat metoda proiectării în domeniul frecvenţă, folosind diagramele Bode, ca în [97]. Zeroul din funcţia de transfer trebuie plasat astfel încât faza să rămână sub 180° la frecvenţa unde amplificarea trece prin 0. Considerând o rezervă de 30º, frecvenţa de tăiere a termenului )1( 2 sτ+ trebuie să fie mult sub frecvenţa de tăiere mT/1 :

maT=2τ , ( 1>a ). Alegând un factor a=10 şi cunoscând

sTm 1= pentru motorul considerat, se ajunge la

s102 =τ . Figura 3.9. Schema bloc a filtrului digital.

Pentru a găsi valoarea lui 1τ , trebuie ales factorul de amplificare total al buclei astfel încât amplificarea să fie 0 la frecvenţa de tăiere mT/1=ω . Această constrângere conduce la un factor de amplificare total al buclei K=0,14. Cunoscând valorile celorlalţi factori de amplificare ( dK , amplificarea detectorului de fază; mK , amplificarea motorului; aK , amplificarea circuitului

Page 29: SISTEME ÎNCORPORATE CU FPGA PENTRU · PDF fileSISTEME ÎNCORPORATE CU FPGA PENTRU CONTROLUL PROCESELOR RAPIDE - REZUMATUL TEZEI DE DOCTORAT - ... POSDRU/6/1.5/S/9, ID 6681, este un

27

PWM şi a driver-ului, prezentată mai jos; zK , amplificarea tahometrului; NK , amplificarea divizorului programabil), s-a determinat valoarea lui 1τ :

14614.0

50160

60320

6553620

265536

1 ≈⋅⋅⋅⋅

== πτK

KKKKK Nzmad . (3.11)

Astfel, parametrii filtrului PI sunt: 068.014610

1

2 ===ττ

pK , 0068.0146

11

1===

τIK . S-a ales o

valoare a divizorului programabil N=50, ceea ce conduce la 50/1=NK . Pentru efectuarea experimentelor, s-a considerat că viteza de referinţă a motorului variază în jurul valorii de 600 rot/min, adică o frecvenţă de 12 Hz. Semnalul de referinţă este generat în FPGA de la semnalul oscilatorului cu cuarţ de 50 MHz prin divizare cu 222 , obţinându-se 11.92Hz. Perioada de eşantionare este deci T=0,084s, ceea ce conduce la factorul de multiplicare

0674288.0068.00005712.0 −=−=− PI KTK . Operaţiile de înmulţire au fost implementate folosind multiplicatoarele dedicate pe 18 biţi

ale dispozitivului FPGA, după scalarea intrărilor, prin deplasări la dreapta, pentru atingerea valorilor subunitare necesare. Proiectarea sistemului hardware implementat în FPGA s-a realizat prin captură de schemă logică folosind Xilinx ISE. Pentru experimente s-a folosit un motor de curent continuu de 24V de tip Leybold Didactic 73411 Motor-Generator Set. Acesta este controlat prin aplicarea tensiunii de alimentare modulată în durata impulsurilor. Tensiunea de alimentare de 20 V este obţinută cu ajutorul a două blocuri de amplificare: Leybold Didactic 73419 Gain and Offset Adjust Block şi Leybold Didactic 73413 Power Amplifier Block. Circuitul de generare a impulsurilor PWM, împreună cu blocurile de amplificare, pot fi văzute ca un

convertor numeric-analogic cu funcţia de transfer 65536

2022016

==aK .

În acest experiment, întreaga buclă de reglare a fost implementată numeric în FPGA, fără a fi nevoie de circuite externe de conversie analog-numerică şi numeric-analogică. Acest lucru a fost posibil datorită proiectării detectorului de fază şi a circuitului PWM, numai cu componente logice, ce pot fi sintetizate în FPGA. Bucla proiectată diferă de alte abordări total digitale din literatură [93] prin aceea că este structural asemănătoare cu o buclă analogică, deci mult mai uşor de analizat şi modelat. Rezultatele experimentale au dovedit că se poate obţine calare pe fază, şi deci control al vitezei motorului, dacă acesta are viteză apropiată de referinţă. Dacă diferenţa dintre semnalul de referinţă şi cel controlat este mare, bucla nu reuşeşte să atingă întotdeauna calarea pe fază. Comportamentul detectorului de fază trebuie studiat mai amănunţit şi comportamentul în caz de eroare de frecvenţă trebuie îmbunătăţit.

O variantă iniţială, pe 8 biţi, a acestui studiu de caz a fost publicată în [102]. Varianta îmbunătăţită, prezentată aici, a fost publicată în [103].

3.4.2 Implementarea în hardware a algoritmului de control deadbeat Algoritmul de control deadbeat este prezentat în multe lucrări internaţionale de referinţă,

ca şi în [82]. Acesta se bazează pe proiectarea în domeniul timp, impunând un anumit răspuns sistemului în buclă închisă şi folosind un model discretizat al părţii fixate. Pentru studiul de caz, s-a ales tot controlul motorului de curent continuu, descris de (3.15), unde mK este amplificarea, iar mT este constanta de timp a motorului. Răspunsul dorit al sistemului la aplicarea unui semnal treaptă la intrare este impus sub forma (3.16). În aceste condiţii, funcţia de transfer discretă a sistemului în buclă închisă este (3.17). Discretizând (3.15) cu o perioadă de eşantionare

0.67108864=sT şi cunoscând 66,0=mK şi mT =1,2s se obţine (3.18). Perioada de eşantionare s-a ales multiplu de 40ns, care este perioada de tact a sistemului implementat în FPGA, pentru a simplifica circuitul de obţinere a ei. De asemenea, perioada de eşantionare trebuie să respecte relaţia (3.19), recomandată în [82], fTΣ fiind suma constantelor de timp ale părţii fixate.

Perioada de eşantionare influenţează şi valoarea iniţială a semnalului de comandă. S-a

Page 30: SISTEME ÎNCORPORATE CU FPGA PENTRU · PDF fileSISTEME ÎNCORPORATE CU FPGA PENTRU CONTROLUL PROCESELOR RAPIDE - REZUMATUL TEZEI DE DOCTORAT - ... POSDRU/6/1.5/S/9, ID 6681, este un

28

verificat prin simulare că, pentru sistemul propus, valoarea semnalului de comandă nu depăşeşte limitele de saturaţie ale dispozitivelor fizice folosite la experimente. Funcţia de transfer a regulatorului se obţine din (3.17) şi (3.18) folosind relaţia (3.20). Notând cu u[k] semnalul de ieşire al regulatorului (semnalul de comandă) şi cu ε[k] semnalul de intrare al regulatorului (semnalul de eroare), se obţine (3.21), cu 00 =q ; 2.82971 =q ; -0.73332 =q ; -0.68233 =q ;

0.10114 =q . Din (3.21) se obţine o relaţie de calcul pentru u[k], sub forma (3.22).

m

mp sT

KsG

+=

1)( . (3.15) y[T]=0; y[2T]=0.8; y[3T]=1.05; y[4T]=y[5T]=...=1 (3.16)

4

2

005.025.08.0)(

zzzzG −+

= (3.17) 5716.02827.0)(

−=

zzG p (3.18)

36.0≥Σf

s

TT (3.19)

)(1)(

)(1)( 1

0

10

11

−−

−=

zGzG

zGzG

pR (3.20)

432

44

33

22

110

1

1

05.025.08.01)()(

−−−

−−−−

+−−++++

=Ε zzz

zqzqzqzqqzzU (3.21) ]4-k[05.0]3-k[25.0]2-k[8.0

]4-k[3]-[kq2]-[kq1]-[kq][ 4321

uuuqku

−+++++= εεεε (3.22)

Această ecuaţie cu diferenţe recurentă descrie un sistem cu răspuns infinit la impuls (IIR – Infinite Impulse Response). Forma directă I [104] de implementare este prezentată în Fig. 3.10. Aceasta este derivată direct din (3.22). Pentru implementarea fizică sunt posibile şi alte structuri, descrise în [104], cum ar fi: forma directă II, structura de tip cascadă, paralel, încrucişată (lattice) sau încrucişată în scară (lattice-ladder).

Figura 3.10. Forma directă I a regulatorului deadbeat. Având în vedere că în FPGA registrele (pentru implementarea întârzierilor numerice) nu

sunt o resursă critică şi că operaţiile se fac pe suficienţi biţi pentru ca erorile de cuantizare să fie nesemnificative, s-a ales forma directă I pentru implementare. Avantajul acesteia este că stadiile de adunare şi înmulţire sunt independente. Aceasta permite precizie fixă la operaţia de înmulţire, dar precizie crescândă la operaţiile de adunare, eliminând acumularea de erori de cuantizare. La sfârşit, rezultatul este trunchiat la precizia dorită. Paralelismul potenţial al algoritmului poate fi observat direct din forma prezentată în Fig. 3.10. Este evident că cea mai rapidă implementare va efectua în paralel toate înmulţirile şi cât mai multe dintre adunări. Pentru înmulţire se folosesc multiplicatoarele pe 18 biţi integrate în dispozitivele Spartan-3E. Toate operaţiile sunt realizate folosind aritmetică în virgulă fixă cu semn (reprezentare în complement faţă de 2). Implementarea s-a realizat în mediul Simulink, cu ajutorul utilitarului Xilinx System Generator. Avantajul metodei, aşa cum s-a menţionat în secţiunea 3.2, este posibilitatea simulării precise a structurii hardware ce va fi apoi sintetizată automat. Fig. 3.11 prezintă implementarea regulatorului cu blocuri specifice System Generator în Simulink. Regulatorul implementat astfel a fost simulat împreună cu un model Simulink în virgulă mobilă, dublă precizie. Rezultatele simulării au arătat că diferenţa între cele două implementări este foarte mică din punctul de vedere al valorilor ieşirilor.

Semnalul de reacţie este primit de la un convertor analog-numeric (CAN) pe 14 biţi, cu ieşirea cu semn în complement faţă de 2. Viteza motorului fiind convertită într-o tensiune cuprinsă între 0V şi 8V, intrarea CAN-ului va fi pozitivă. De aceea, se va renunţa la bitul de

Page 31: SISTEME ÎNCORPORATE CU FPGA PENTRU · PDF fileSISTEME ÎNCORPORATE CU FPGA PENTRU CONTROLUL PROCESELOR RAPIDE - REZUMATUL TEZEI DE DOCTORAT - ... POSDRU/6/1.5/S/9, ID 6681, este un

29

semn, ca şi la bitul cel mai puţin semnificativ, interpretând valoarea de intrare ca un număr în virgulă fixă fără semn, cu 3 biţi pentru partea întreagă şi 9 biţi pentru partea fracţionară. Semnalul de ieşire va fi trimis unui convertor numeric-analogic (CNA) pe 12 biţi. Pentru aceasta va fi trunchiat la 12 biţi de la reprezentarea internă a motorului de calcul, de 18 biţi. Datorită faptului că semnalul de comandă se saturează la 13V din cauza amplificatoarelor fizice folosite, ieşirea Gateway Out va fi interpretată ca 4 biţi ai părţii întregi şi 8 biţi ai părţii fracţionare.

Figura 3.11. Implementarea regulatorului deadbeat în System Generator. Interpretarea semnalelor de intrare şi de ieşire ca fiind numere în virgulă fixă de un

anumit format este un exemplu de simplificare computaţională importantă. Aşa cum s-a menţionat în Secţiunea 2.3, primul pas în implementarea unui algoritm în hardware este rafinarea lui. Prin alegerea inteligentă a formatului reprezentării în virgulă fixă a intrărilor şi ieşirilor se evită calculele de interpretare a valorii recepţionate de la CAN (înmulţirea numărului întreg citit cu valoarea cuantei) şi cele de convertire a valorii rezultate în urma aplicării algoritmului la un număr întreg din gama de intrare a CNA-ului.

Diferenţa între implementarea în Matlab a regulatorului, în virgulă mobilă cu dublă precizie, şi implementarea în FPGA, în virgulă fixă pe 18 biţi, poate fi analizată prin simulare. Aceasta a fost de ordinul 310− şi se datorează în mare măsură erorilor de cuantizare ale CAN şi CNA, şi mai puţin erorilor de cuantizare a parametrilor regulatorului.

Întregul sistem de control a fost proiectat în hardware şi constă din 3 entităţi: circuitul de control al CAN, circuitul de procesare de semnal şi circuitul de control al CNA. S-au folosit convertoare cu cost scăzut, cu interfaţă serială, ceea ce complică în oarecare măsură circuitele de interfaţare. Interfeţele seriale au fost proiectate în totalitate în hardware, fără a folosi vreun procesor soft. S-a proiectat câte un automat cu stări finit (FSM – Finite State Machine) pentru fiecare din cele 3 entităţi. Comunicaţia între ele este realizată cu ajutorul semnalelor de protocol (handshake) de tip ready/strobe. Această abordare este diferită de cea prezentată în [26], unde un FSM global controla fluxul de date între diferitele entităţi.

Toate elementele de logică secvenţială sunt sincrone, fiind pilotate de un semnal de tact de 25 MHz. Fiecare entitate rămâne în starea idle până când sunt disponibile date de procesat de la entitatea anterioară. Entitatea de control al CAN-ului este activată de un semnal Ts, corespunzător perioadei de eşantionare. Aceasta este obţinută tot din semnalul de tact de 25 MHz, prin divizare cu 242 , cu ajutorul a două numărătoare binare cascadate, unul pe 16 şi celălalt pe 8 biţi. Perioada de eşantionare este aşadar aproximativ 0,6711s, respectând restricţia (3.19). Din schema Simulink cu blocuri System Generator s-a generat automat un modul Verilog, ce constituie centrul entităţii de procesare de semnal. Conversia analog-numerică şi citirea datelor din CAN durează aproximativ 80 de cicli de tact, transmiterea datelor CNA durează aproximativ 40 de cicli de tact, iar calculele pentru următorul eşantion de ieşire se realizează într-un singur ciclu de tact. Folosind în paralel multiplicatoarele integrate în FPGA, ecuaţia (3.22) este calculată în mai puţin de 40ns. Acest lucru permite obţinerea de performanţe extraordinare

Page 32: SISTEME ÎNCORPORATE CU FPGA PENTRU · PDF fileSISTEME ÎNCORPORATE CU FPGA PENTRU CONTROLUL PROCESELOR RAPIDE - REZUMATUL TEZEI DE DOCTORAT - ... POSDRU/6/1.5/S/9, ID 6681, este un

30

pentru sistemele de control digitale, limitate doar de perioada de eşantionare (performanţele CAN-ului, CNA-ului).

Pentru experimente s-a folosit un motor de curent continuu de 24 V de tip Leybold Didactic 73411 Motor Generator Set, împreună cu amplificatoare Leybold Didactic 73413 Power Amplifier Block şi Leybold Didactic 73419 Gain and Offset Adjust Block. În Fig. 3.13 este prezentată o comparaţie între rezultatele simulării regulatorului în Simulink şi rezultatele experimentale obţinute după implementarea în FPGA. Se observă caracteristica regulatorului deadbeat şi performanţe asemănătoare ale implementării cu cele aşteptate după simulare.

Figura 3.13. Comparaţie între rezultatele simulării şi cele experimentale.

Implementarea în FPGA foloseşte 7 multiplicatoare în paralel şi doar 9% din resursele logice disponibile în dispozitivul Xilinx Spartan-3E XC3S500E. Implementarea în FPGA a algoritmului de control deadbeat a fost publicată în lucrarea [105].

3.4.3 Proiectarea, simularea şi implementarea pe FPGA a unui sistem de control al vitezei pentru motorul de curent continuu fără perii

În această secţiune se va prezenta un studiu de caz original privind implementarea în FPGA a unui sistem de control al vitezei pentru motorul fără perii de curent continuu (BLDC – Brushless Direct Current). Pe lângă un regulator de viteză de tip PI, s-au implementat şi o serie de module hardware pentru conducerea motorului şi determinarea vitezei acestuia.

Conducerea motorului BLDC Motoarele BLDC fac parte din categoria motoarelor sincrone: câmpul magnetic generat

de stator şi câmpul magnetic generat de rotor se rotesc cu aceeaşi frecvenţă. Din punct de vedere constructiv, motoarele BLDC se încadrează în categoria motoarelor cu magneţi permanenţi. Avem aşadar de a face cu un motor sincron cu magneţi permanenţi (PMSM – Permanent Magnet Synchronous Motor). Un PMSM este constituit dintr-un rotor cu magnet permanent şi un stator electromagnetic. Datorită faptului că rotorul nu trebuie alimentat electric, se elimină periile ce ar trebui să transmită curentul electric rotorului. În funcţie de cum sunt realizate înfăşurările statorului, tensiunea electromagnetică indusă (BEMF – Back Electromotive Force) poate prezenta o formă de undă sinusoidală sau trapezoidală. Motoarele a căror BEMF este sinusoidală sunt cunoscute în literatură ca motoare BLAC (Brushless Alternative Current), în vreme ce motoarele a căror BEMF este trapezoidală sunt cunoscute ca motoare BLDC. Adesea, pentru motoarele BLAC se foloseşte termenul PMSM, deşi acesta este mai general.

Formele de undă tipice pentru un motor BLDC trifazic sunt prezentate în Fig. 3.14. Aşa cum se poate observa, tensiunea electromagnetică indusă pe fiecare înfăşurare a motorului este constantă pentru 120° şi variază liniar cu unghiul rotorului înainte şi după porţiunea constantă. Pentru ca puterea de ieşire să fie constantă, fiecare înfăşurare trebuie alimentată pe durata în care tensiunea indusă este constantă [34].

Figura 3.14. Forme de undă tipice pentru un motor BLDC trifazic. Există mai multe topologii de circuite driver folosite în aplicaţiile cu motoare BLDC.

Cele mai folosite sunt convertorul trifazic de tip Buck şi puntea invertoare trifazică [34]. O punte invertoare trifazică tipică pentru conducerea unui motor BLDC este prezentată în Fig. 3.15. Puntea este alcătuită din 6 comutatoare electronice. În practică se folosesc tranzistoare cu efect de câmp construite în tehnologie metal–oxid–semiconductor (MOSFET – Metal–Oxide–

Page 33: SISTEME ÎNCORPORATE CU FPGA PENTRU · PDF fileSISTEME ÎNCORPORATE CU FPGA PENTRU CONTROLUL PROCESELOR RAPIDE - REZUMATUL TEZEI DE DOCTORAT - ... POSDRU/6/1.5/S/9, ID 6681, este un

31

Semiconductor Field–Effect Transistor) sau tranzistoare bipolare cu baza izolată (IGBT – Insulated Gate Bipolar Transistor). Tranzistoarele MOSFET au pierderi de comutaţie mai mici decât tranzistoarele IGBT, dar au rezistenţă internă (şi deci putere disipată) mai mare în conducţie. Tranzistoarele IGBT se folosesc de obicei în aplicaţiile ce implică puteri sau tensiuni mari.

Figura 3.15. Punte invertoare trifazică pentru conducerea unui motor BLDC. Spre deosebire de motoarele de curent continuu cu perii, la motoarele BLDC comutaţia

curentului prin înfăşurări nerealizându-se automat prin comutare mecanică, trebuie realizată electronic. Pentru a roti motorul, înfăşurările statorului trebuie alimentate într-o anumită secvenţă. Aşa cum s-a menţionat în paragraful anterior, fiecare fază (înfăşurare) este alimentată pe durata celor 120° cât tensiunea indusă este constantă. Aşa cum se poate constata din Fig. 3.14, apare necesitatea unei comutaţii la fiecare 60°. Sistemul de control trebuie aşadar să dispună de informaţii cu privire la poziţia rotorului pentru a alimenta corect înfăşurările. Există două posibilităţi de a obţine aceste informaţii: citirea poziţiei rotorului cu ajutorul unor senzori cu efect Hall şi estimarea poziţiei rotorului în funcţie de trecerea prin zero a tensiunii induse. Prima metodă este mai uşor de implementat folosind doar circuite digitale, dar a doua metodă implică costuri mai scăzute, deoarece, eliminându-se necesitatea senzorilor, construcţia motorului este mai simplă. De obicei, motorul BLDC este echipat cu 3 senzori cu efect Hall ce oferă o informaţie codificată pe 3 biţi despre poziţia rotorului la un moment dat. Pe baza acestor coduri, înfăşurările corespunzătoare sunt alimentate, controlându-se starea comutatoarelor punţii invertoare.

Tabelul 3.10 prezintă corespondenţa tipică între codurile citite de la senzorii cu efect Hall, direcţia curentului prin înfăşurări şi starea comutatoarelor pentru o rotire în direcţia acelor de ceasornic a motorului BLDC. Comutatoarele sunt identificate conform notaţiilor din Fig. 3.15. Pentru a controla viteza motorului BLDC, tensiunea aplicată înfăşurărilor trebuie variată. Variaţia tensiunii medii poate fi obţinută uşor folosind doar circuite digitale prin variaţia factorului de umplere al unui semnal dreptunghiular periodic de perioadă constantă, tehnică cunoscută sub denumirea de modulaţie în lăţimea impulsurilor (PWM – Pulse Width Modulation). De obicei semnalul PWM este injectat comutatoarelor de pe ramura de jos.

Controlul vitezei necesită cunoaşterea vitezei motorului la un moment dat. Semnalele provenite de la senzorii Hall pot fi folosite pentru a determina viteza motorului, dar rezoluţia este destul de redusă, având în vedere că unei rotaţii complete a motorului îi corespund doar 6 sau 12 coduri (în funcţie de numărul perechilor de poli magnetici ai rotorului). De obicei, motoarele sunt echipate cu un traductor de viteză (tahometru) cu rezoluţie mai mare. Acesta poate fi un tahogenerator, ce oferă la ieşire o tensiune proporţională cu viteza de rotaţie, sau un tahometru optic, ce furnizează la ieşire două semnale digitale codificate în cuadratură (QEP – Quadrature Encoded Pulses). Acest tip de traductor este preferat în proiectarea sistemelor de control numerice, deoarece oferă direct o interfaţă digitală. Semnalele QEP pot oferi informaţii atât despre direcţia de rotaţie, cât şi despre viteza de rotaţie. În plus, rezoluţia este mult mai înaltă decât dacă se folosesc semnalele provenite de la senzorii Hall.

Tabelul 3.10. Secvenţa de comutaţie pentru rotirea motorului BLDC. Intrări de la senzorii Hall Comutatoare activate Direcţia curentului prin înfăşurare

1 2 3 Ramura de sus Ramura de jos A B C 1 0 0 Q1 Q4 DC+ DC- OFF 1 1 0 Q1 Q6 DC+ OFF DC- 0 1 0 Q3 Q6 OFF DC+ DC- 0 1 1 Q3 Q2 DC- DC+ OFF 0 0 1 Q5 Q2 DC- OFF DC+ 1 0 1 Q5 Q4 OFF DC- DC+

Page 34: SISTEME ÎNCORPORATE CU FPGA PENTRU · PDF fileSISTEME ÎNCORPORATE CU FPGA PENTRU CONTROLUL PROCESELOR RAPIDE - REZUMATUL TEZEI DE DOCTORAT - ... POSDRU/6/1.5/S/9, ID 6681, este un

32

Proiectarea sistemului de control şi implementarea în FPGA Din informaţiile prezentate în secţiunea precedentă se poate contura o schemă bloc a

sistemului de control. Sistemul este total digital şi se interfaţează cu motorul BLDC prin intermediul unei punţi invertoare trifazice de tipul celei din Fig. 3.15, a trei senzori Hall şi a unui tahometru optic cu ieşiri QEP. Regulatorul de viteză este de tip proporţional-integrator (PI) discret, acest tip de regulator având o utilizare de tradiţie în controlul motoarelor.

Fig. 3.16 prezintă schema bloc a sistemului de control al vitezei.

Figura 3.16. Schema bloc a sistemului de control al vitezei pentru motorul BLDC. Sistemul de control a fost proiectat pentru a fi implementat direct în hardware pe un

dispozitiv FPGA Spartan-3E. Sistemul este sincron, pilotat de un semnal de tact de 50MHz. Modulele logice au fost implementate prin captură de schemă, cu excepţia regulatorului PI, ce a fost implementat şi simulat în mediul Simulink, folosind software-ul Xilinx System Generator. Câteva din blocurile din schema din Fig. 3.16 sunt prezentate în continuare din punctul de vedere al implementării.

Logica de comutaţie Pe baza Tabelului 3.10 s-a proiectat modulul ce implementează generarea secvenţei de

comutaţie. Pe lângă intrările provenite de la senzorii Hall s-a adăugat o intrare de validare folosită pentru a insera un timp mort între comutările a două tranzistoare de pe aceeaşi parte (partea de sus sau partea de jos) a punţii. Logica de comutaţie are la ieşire 6 semnale, fiecare semnal reprezentând starea unuia din cele 6 tranzistoare ale punţii. Logica de comutaţie este implementată prin 6 celule de memorie ROM de 16 biţi fiecare. Codul furnizat de senzorii Hall şi intrarea de validare reprezintă adresa pentru memoriile ROM. Conţinutul fiecărei memorii ROM reprezintă starea tranzistorului corespunzător pentru fiecare combinaţie posibilă de intrare.

Logica de estimare a vitezei Schema bloc a circuitului de estimare a vitezei este prezentată în Fig. 3.18. Pentru o

rezoluţie mai bună a măsurării vitezei, atât fronturile crescătoare, cât şi cele căzătoare ale ambelor semnale QEP sunt contorizate. Se utilizează câte un circuit de detecţie pentru fiecare front. Acest circuit este un automat cu stări finit de tip Mealy, foarte simplu, implementat cu un singur bistabil, ca în [80]. Ieşirea fiecărui circuit de detecţie a frontului se activează când intrarea monitorizată şi conţinutul bistabilului, care este de fapt valoarea intrării din ciclul de tact anterior, respectă secvenţa dorită (0-1 sau 1-0). Ieşirea circuitului de detecţie a frontului este activă exact un ciclu de tact. Toate ieşirile sunt trecute printr-o poartă SAU a cărei ieşire constituie intrarea de validare a tactului pentru un numărător. În acest fel, fronturile semnalelor QEP sunt contorizate prin incrementarea numărătorului la fiecare impuls de detecţie de front.

Deoarece semnalele QEP provin de la o sursă externă nesincronizată, frontul semnalului QEP ar putea apare foarte aproape de frontul crescător al semnalului de tact al elementelor sincrone. Frontul semnalului QEP ar fi în acest caz detectat (ieşirea automatului de detecţie a frontului se activează, automatul fiind de tip Mealy), dar timpul de propagare al ieşirii (prin poarta SAU) ar putea fi mai lung decât diferenţa în timp între frontul semnalului QEP şi frontul crescător al semnalului de tact. Acest hazard ar putea duce la “ratarea” incrementării numărătorului din când în când, în mod aleator, chiar dacă circuitul de detecţie a frontului funcţionează corect. Pentru a contracara această problemă s-au introdus bistabili de tip D pe semnalele QEP, sincronizându-le cu semnalul de tact.

Page 35: SISTEME ÎNCORPORATE CU FPGA PENTRU · PDF fileSISTEME ÎNCORPORATE CU FPGA PENTRU CONTROLUL PROCESELOR RAPIDE - REZUMATUL TEZEI DE DOCTORAT - ... POSDRU/6/1.5/S/9, ID 6681, este un

33

Astfel, toate semnalele din schemă sunt sincrone cu un singur semnal de tact, eliminându-se hazardul şi uşurându-se analiza de temporizare a sistemului. Semnalul de tact este generat în FPGA de la un oscilator cu cuarţ de 50MHz. Faptul că toate circuitele folosesc acelaşi semnal de

tact reprezintă un avantaj pentru proiectarea în FPGA, deoarece structura internă a dispozitivului prevede resurse speciale de rutare globală pentru semnalul de tact, asigurându-se cea mai mică asimetrie (clock skew) posibilă a semnalului de tact [5]. Pentru ca aceste resurse să fie alocate la implementare, este necesar ca proiectarea să fi fost făcută corect.

Figura 3.18. Modulul de estimare a vitezei motorului. Conţinutul numărătorului este salvat într-un registru la fiecare perioadă de eşantionare.

Perioada de eşantionare este obţinută prin divizarea semnalului de tact. Pentru o perioadă de tact nsTclock 20= şi o perioadă de eşantionare dorită msTs 1= rata de divizare este

0xC35050000/_ === clocks TTCONSTDIV . (3.28)

Divizorul de tact e implementat printr-un numărător binar pe 16 biţi, pilotat de semnalul de tact de 50MHz. Când ieşirea numărătorului atinge o anumită combinaţie, dată de (3.28) şi detectată de un comparator de egalitate, numărătorul este resetat şi se generează un impuls TS de o perioadă de tact ce semnalizează celorlalte elemente din sistem începutul unei noi perioade de eşantionare. După salvarea în registru a valorii ce corespunde numărului de impulsuri QEP, numărătorul acestor impulsuri trebuie resetat. Acest lucru se realizează cu o întârziere de o perioadă de tact faţă de impulsul TS ce salvează valoarea, întârziere implementată cu un bistabil de tip D ca în Fig. 3.18.

Funcţionarea circuitului de estimare a vitezei este prezentată în Fig. 3.19. Formele de undă au fost capturate folosind analizorul logic virtual ChipScope ILA (Integrated Logic Analyzer) şi modulul de comunicaţie şi control ChipScope ICON (Integrated Controller), disponibile ca nuclee IP, produse de Xilinx [107].

Acestea au fost instanţiate în schemă şi conectate la semnalele ce trebuie monitorizate. Semnalele capturate au fost vizualizate şi analizate pe un calculator gazdă folosind utilitarul ChipScope Pro Analyzer, produs tot de Xilinx.

Figura 3.19. Semnalele circuitului de estimare a vitezei. În Fig. 3.19 se observă cele 2 semnale QEP provenind de la tahometru în funcţionarea

reală. De asemenea se observă că fiecare front pe fiecare semnal QEP este detectat şi produce o

Page 36: SISTEME ÎNCORPORATE CU FPGA PENTRU · PDF fileSISTEME ÎNCORPORATE CU FPGA PENTRU CONTROLUL PROCESELOR RAPIDE - REZUMATUL TEZEI DE DOCTORAT - ... POSDRU/6/1.5/S/9, ID 6681, este un

34

incrementare a numărătorului de impulsuri QEP. La expirarea perioadei de eşantionare, semnalizată de un impuls pe linia TS_tick, numărătorul este resetat după ce valoarea a fost salvată într-un alt registru, al cărui conţinut poate fi observat pe linia CNTR_ms.

Regulatorul PI discret Pentru motorul folosit la partea experimentală, coeficienţii regulatorului PI s-au ales

0.531_ =IK , 004.01_ =PK . Aceste valori asigură un regim tranzitoriu de aproximativ 20ms şi o suprareglare minimă. Plecând de la aceste valori şi ţinând cont că unul din principiile fundamentale ale adecvării arhitecturii algoritmului pentru implementarea directă în hardware este simplificarea computaţională [24], se calculează constantele ce vor fi folosite în implementare. Astfel, ţinându-se cont de faptul că ieşirea regulatorului nu reprezintă direct valoarea tensiunii de comandă a motorului, ci intrarea în circuitul PWM, acesta din urmă se modelează ca o amplificare în serie cu regulatorul, cu factorul de amplificare dat de

12 −= w

sPWM

UA , unde sU este tensiunea de alimentare a motorului şi w este lăţimea cuvântului

(numărul de biţi) circuitului de generare a semnalului PWM. În cazul particular al echipamentului folosit tensiunea de alimentare nominală este de 19.1V. Circuitul PWM lucrează

pe 11 biţi, deci 2047

1.19=PWMA . De asemenea, ţinând cont de faptul că circuitul de estimare a

vitezei nu raportează viteza motorului în RPM, ci numărul de fronturi ale semnalelor QEP contorizate într-o ms, şi acest lucru trebuie modelat ca o amplificare pe calea directă, cu factorul

de amplificare 1000*60_

CPRA estspeed = , unde CPR este numărul de fronturi QEP generate de o rotaţie

completă a motorului, iar numitorul provine din raportarea vitezei nu la minut (ca RPM), ci la ms, deoarece astfel se face măsurarea. Motorul folosit este echipat cu un tahometru optic cu 500

de linii, deci 20004*500 ==CPR , ceea ce implică 301

_ =estspeedA .

Pentru a elimina efectul acestor amplificări pe calea directă, acestea sunt contrabalansate direct în factorii de amplificare ai regulatorului PI. Acest lucru simplifică mult calculele, nefiind necesară obţinerea valorii vitezei, apoi aplicarea algoritmului de reglare, şi apoi calculul valorii de intrare în circuitul PWM. Factorii regulatorului PI obţinuţi prin simplificarea computaţională sunt daţi de (3.36) şi (3.37).

003.1704_

1_ ==estspeedPWM

II AA

KK (3.36) 8604.12

_

1_ ==estspeedPWM

PP AA

KK (3.37)

Pentru implementarea regulatorului trebuie determinată o relaţie de calcul a ieşirii în funcţie de intrare, la fiecare perioadă de eşantionare, pornind de la reprezentarea în domeniul s a regulatorului PI dată de (3.38), unde U(s) este ieşirea de comandă, iar E(s) este intrarea regulatorului (eroarea). Folosind transformarea biliniară (3.39) se ajunge la funcţia de transfer discretă în domeniul z (3.40). Exprimând (3.40) în 1−z rezultă (3.41). Revenind în domeniul timp, se obţine relaţia (3.42) de calcul pentru u[k]. Se observă că (3.42) descrie un sistem numeric cu răspuns infinit la impuls (valoarea anterioară a ieşirii intervine în calculul valorii curente).

sK

KsEsUsG I

pR +==)()()( (3.38)

112

+−

=zz

Ts

s (3.39)

11

2)()()(

+−

+==zzTK

KzEzUzG sI

pR (3.40)1

1

1

1

1

)2

()2

(

)()(

−++=

z

zKTK

KTK

zEzU P

sIP

sI

(3.41)

]1[][)2

(][)2

(][ −+−++= kukKTK

kKTK

ku PsI

PsI εε (3.42)

Regulatorul s-a implementat în Simulink, folosind blocuri System Generator. Acest lucru

Page 37: SISTEME ÎNCORPORATE CU FPGA PENTRU · PDF fileSISTEME ÎNCORPORATE CU FPGA PENTRU CONTROLUL PROCESELOR RAPIDE - REZUMATUL TEZEI DE DOCTORAT - ... POSDRU/6/1.5/S/9, ID 6681, este un

35

a permis simularea împreună cu un model în virgulă mobilă, dublă precizie, şi evaluarea erorilor introduse de procesul de cuantizare. Pentru reprezentarea coeficienţilor regulatorului s-au folosit cuvinte de 18 biţi, cu poziţia virgulei aleasă astfel încât să permită o precizie cât mai bună ţinând cont de magnitudinea numerelor. S-au ales 18 biţi pentru a profita de precizia multiplicatoarelor dedicate în FPGA. Pentru circuitul de sumare nu s-au introdus limitări de reprezentare, lucrându-se pe 27 de biţi şi neintroducându-se niciun fel de erori. Singura limitare este impusă pentru reacţie, reintroducerea în calcul a valorii anterioare a ieşirii folosind 24 de biţi. Precizia calculelor s-a dovedit foarte bună, erorile de cuantizare fiind datorate nu coeficienţilor, ci reprezentărilor intrării (pe 9 biţi, deoarece nu se contorizează mai mult de 256 de fronturi QEP într-o ms) şi ieşirii (pe 11 biţi fără semn, datorită implementării circuitului PWM). Limitările de format s-au făcut cu saturaţie la detecţia depăşirii.

Simularea şi integrarea sistemului Modulele proiectate prin captură de schemă logică au fost co-simulate folosind Simulink

şi ModelSim. S-au folosit facilităţile oferite de System Generator, instanţiindu-se fiecare modul în câte un Black Box. Deşi avantajele co-simulării Simulink-ModelSim sunt certe, oferind posibilitatea validării modulelor cu generarea automată a secvenţelor de intrare probabile şi în realitate, metoda este destul de consumatoare de timp şi resurse (necesită un calculator gazdă cu mare putere de calcul). Din această cauză se preferă adesea o depanare a sistemului în funcţionarea reală, folosind faptul că dispozitivul FPGA poate constitui el însuşi o parte a uneltei de depanare. Astfel, prin folosirea analizorului logic virtual ChipScope ILA şi a utilitarului ChipScope Pro Analyzer [107], se pot observa semnalele interne ale sistemului. Este posibilă exportarea datelor din ChipScope în format ASCII şi importarea lor în Matlab ca şi vectori. În acest fel, se pot analiza datele capturate de pe sistemul hardware rulând în timp real pe FPGA. De exemplu, Fig. 3.24 prezintă un grafic, obţinut în Matlab, ce reprezintă variaţia comenzii factorului de umplere (cu albastru) şi viteza observată de sistem (în fronturi ale semnalelor QEP pe ms) la modificarea referinţei de viteză de la 50 la 100 (corespunzător în RPM: de la 1500RPM la 3000RPM).

Figura 3.24. Variaţia semnalului de comandă şi a vitezei la modificarea treaptă a referinţei. Pentru experimente s-a folosit un motor de 19.1V de tipul Pittman 3411, produs de

Ametek, şi un circuit de comandă a motorului (punte invertoare trifazată) PM50v3.1, produs de Technosoft. Sistemul de control pentru motorul BLDC prezentat aici diferă de cel prezentat în [108] prin faptul că logica de comutaţie este implementată foarte eficient, prin celule de memorie ROM, nu prin automate cu stări. Metoda de validare prin co-simulare Simulink/ModelSim a mai fost folosită în literatură [32], dar metoda de proiectare în Simulink a regulatorului şi apoi integrarea acestuia într-un proiect mai mare realizat prin captură de schemă este originală.

Sistemul de control pentru BLDC a fost publicat în forma prezentată aici în [109]. O formă îmbunătăţită prin reproiectarea regulatorului PI după paradigma automat cu cale de date [80] a fost publicată în [110]. În [111] a fost publicată metoda de analizare a caracteristicilor dinamice ale motorului folosind ChipScope. Metoda este aplicabilă analizei oricăror procese rapide interfaţate prin semnale digitale, folosind analizoare logice virtuale implementate în FPGA.

3.5 Concluzii În prima secţiune a acestui capitol s-a făcut o trecere în revistă a uneltelor de dezvoltare

disponibile pentru proiectare în vederea implementării în circuite FPGA. S-au discutat nucleele IP ca module refolosibile, precum şi uneltele de dezvoltare pentru sisteme încorporate şi pentru nuclee DSP. Trecerea în revistă este destul de sumară, având rolul de a da cititorului o idee

Page 38: SISTEME ÎNCORPORATE CU FPGA PENTRU · PDF fileSISTEME ÎNCORPORATE CU FPGA PENTRU CONTROLUL PROCESELOR RAPIDE - REZUMATUL TEZEI DE DOCTORAT - ... POSDRU/6/1.5/S/9, ID 6681, este un

36

despre complexitatea sistemelor ce se pot implementa într-un dispozitiv FPGA şi despre gradul de abstractizare la care se poate face proiectarea pentru FPGA. În continuare, în a doua secţiune, este prezentat ceva mai detaliat software-ul System Generator, produs de Xilinx, ce permite proiectarea de hardware implementabil în FPGA direct din mediul Matlab Simulink. Prezentarea este o sinteză din sute de pagini de documentaţie [85]. Nu are pretenţia unei prezentări exhaustive, ci insistă pe acele biblioteci ce au aplicabilitate în cazul proiectării de structuri hardware pentru control automat. Tot în această secţiune s-a prezentat modalitatea de co-simulare Simulink-HDL a unui modul proiectat prin alte metode decât folosind System Generator (captură de schemă logică sau descriere HDL). Deşi co-simularea este destul de dificilă deoarece trebuie făcută cu un pas foarte fin, deci necesită putere de calcul mare şi implică un timp lung de simulare, avantajele sunt semnificative: vectorii de test sunt generaţi automat de către Simulink; simulatorul HDL poate afişa semnalele interne ale modulului simulat, deci acesta se poate verifica amănunţit; sistemul ca întreg format din partea proiectată în Simulink cu blocuri System Generator şi partea proiectată prin alte metode poate fi validat într-un mod unitar.

Cea de-a treia secţiune reprezintă o scurtă trecere în revistă a uneltelor de depanare pentru sistemele proiectate în FPGA. Din nou, această trecere în revistă are rolul de a evidenţia interesul acordat de producătorii de echipamente de testare dispozitivelor FPGA, precum şi avantajele oferite de aceste dispozitive faţă de alte alternative, ca microcontrolerele sau DSC-urile. Astfel, trebuie neapărat subliniat faptul că dispozitivul FPGA poate constitui el însuşi o platformă pentru depanare, datorită reconfigurabilităţii sale: semnalele interne pot fi rutate la pini nefolosiţi şi urmărite din exterior; în resursele din FPGA rămase nefolosite de aplicaţie se poate implementa un analizor logic “virtual” care să captureze eşantioane ale semnalelor interne; acestea pot fi apoi descărcate şi vizualizate/analizate pe un calculator gazdă sau pe un alt echipament de laborator.

În cea de-a patra secţiune a capitolului sunt prezentate trei studii de caz originale: trei sisteme de control automat implementate în FPGA:

• Un sistem de control al vitezei motorului de curent continuu folosind bucla PLL; sistemul implementat în FPGA constă dintr-un detector de fază şi frecvenţă de concepţie originală, dintr-un filtru de buclă de tip PI şi dintr-un circuit de generare de semnal PWM; sistemul a fost proiectat prin captură de schemă logică şi validat prin simulare în ModelSim, apoi verificat experimental.

• Un sistem de reglare a vitezei motorului de curent continuu bazat pe algoritmul deadbeat; s-au implementat în FPGA module de control pentru CAN şi CNA cu interfeţe seriale, proiectate la nivel de schemă logică; algoritmul deadbeat a fost proiectat ca un filtru IIR, în Simulink, folosind System Generator, şi validat prin simulare; sistemul a fost apoi integrat şi verificat experimental, obţinându-se aceeaşi comportare ca la simulare.

• Un sistem de reglare a vitezei pentru motorul BLDC. Partea de conducere a motorului a fost proiectată prin captură de schemă logică. Algoritmul de control, de tip PI, a fost proiectat în Simulink cu System Generator. Întreg sistemul a fost verificat prin simulare în Simulink, importându-se blocurile proiectate prin schemă şi folosind ModelSim pentru co-simulare Simulink-HDL. Sistemul a fost verificat experimental, folosind analizorul logic “virtual” ChipScope pentru capturarea şi vizualizarea semnalelor interne.

Aşadar, pe lângă contribuţiile teoretice legate de sistematizarea unor informaţii vaste despre unelte de proiectare pentru FPGA, acest capitol prezintă importante contribuţii aplicative ce ilustrează utilizarea acestora. Merită subliniat că toate aplicaţiile prezentate au fost realizate fizic şi verificate experimental, rezultatele obţinute fiind în concordanţă cu simulările din stadiul de validare. Deşi aplicaţiile prezentate nu reprezintă cu adevărat o provocare pentru puterea de calcul ce se poate obţine folosind dispozitivele FPGA, datorită dinamicii destul de lente a părţii fixate, ele au constituit un pas esenţial în familiarizarea autorului cu uneltele specifice şi caracteristicile dispozitivului FPGA în vederea atingerii obiectivului propus al tezei. De

Page 39: SISTEME ÎNCORPORATE CU FPGA PENTRU · PDF fileSISTEME ÎNCORPORATE CU FPGA PENTRU CONTROLUL PROCESELOR RAPIDE - REZUMATUL TEZEI DE DOCTORAT - ... POSDRU/6/1.5/S/9, ID 6681, este un

37

asemenea, au reprezentat pretexte pentru a experimenta cu diferite unelte, în vederea elaborării ulterioare a unei metodologii de lucru.

Originalitatea şi actualitatea sistemelor de control prezentate în acest capitol au condus redactarea şi publicarea a 6 lucrări: [102], [103], [105], [109], [110], [111].

4. Proiectarea sistemelor cu procesoare soft încorporate în FPGA Un atu al dispozitivelor FPGA este faptul că oferă suficiente resurse pentru

implementarea de procesoare soft în interiorul dispozitivului FPGA. Prin procesor soft se înţelege un procesor realizat folosind resursele generale ale unui dispozitiv programabil, spre deosebire de procesoarele hard, implementate ca nuclee hardware specifice şi ne-reconfigurabile. Aşa cum s-a menţionat şi în secţiunea 3.1.2, atât producătorii de FPGA-uri, cât şi firme specializate în dezvoltarea de unelte de proiectare oferă procesoare optimizate pentru implementarea în FPGA, împreună cu suportul software necesar pentru programarea respectivelor procesoare. În vreme ce folosirea dispozitivelor FPGA pentru implementarea în hardware a algoritmilor este evident cea mai avantajoasă utilizare a resurselor, cu rezultatele cele mai bune din punctul de vedere al timpului de calcul, există aplicaţii în care utilizarea unui procesor este preferabilă. Procesorul oferă avantajul unui flux de proiectare cunoscut, pe o platformă verificată. În plus, în unele aplicaţii timpul de procesare nu este critic. Timpul de dezvoltare a unei aplicaţii software pe o platformă cunoscută poate fi mult mai scurt decât timpul necesar proiectării unei părţi de execuţie şi a unei părţi de control implementate în hardware. O altă nişă a sistemelor cu procesor implementate pe FPGA o constituie integrarea pe acelaşi FPGA a unui sistem ce înainte era constituit dintr-un procesor şi un dispozitiv logic programabil: datorită creşterii capabilităţilor dispozitivelor FPGA, astfel de sisteme pot fi integrate pe un singur cip, fără a fi necesare modificări majore ale software-ului.

4.1 Consideraţii privind proiectarea de procesoare soft pentru FPGA Până spre sfârşitul anilor 1990, procesoarele soft implementate în dispozitive FPGA

prezentau interes doar în mediul academic datorită costurilor ridicate şi performanţelor scăzute: un procesor soft ocupa cam în totalitate resursele unui FPGA al acelei epoci, pe când un procesor obişnuit era mai ieftin, mai rapid şi deja proiectat. În ziua de astăzi, un procesor soft poate ocupa mai puţin de 1% din resursele unui FPGA şi poate oferi performanţe de peste 200 DMIPS (Dhrystone Million Instructions per Second) [112]. De fapt, procesoarele soft ocupă atât de puţine resurse, încât de obicei pot fi implementate în resursele nefolosite de aplicaţia principală din FPGA, ceea ce înseamnă că practic costul lor este nul.

4.1.1 Procesoare configurabile Atât procesoarele implementate în FPGA, cât şi cele implementate în ASIC, oferă

proiectanţilor posibilitatea de a configura procesorul la momentul generării structurii sale hardware. Se poate astfel alege modul de implementare a benzii de asamblare (pipeline), dimensiunea memoriei intermediare (cache), implementarea circuitelor de înmulţire şi împărţire, etc. Faptul că dispozitivele FPGA sunt reconfigurabile oferă un mare avantaj în proiectarea de sisteme cu procesor configurate la generare: în vreme ce verificarea şi evaluarea performanţelor unui procesor implementat într-un FPGA se poate face direct pe dispozitivul FPGA ţintă, verificarea şi evaluarea unui procesor implementat într-un ASIC se face pe o simulare, necesitând mai mult timp şi fiind mai puţin precisă. Acest avantaj este evidenţiat de faptul că producătorii de FPGA-uri oferă de obicei configuraţii multiple ale benzii de asamblare a procesorului soft, astfel încât acesta să se potrivească cât mai bine cerinţelor. Acest lucru nu se întâmplă de obicei în cazul procesoarelor implementate pe ASIC-uri din cauza dificultăţii de a testa şi valida mai multe variante de bandă de asamblare.

Spre exemplu, procesorul Nios II, produs de Altera pentru FPGA-urile lor, este oferit în trei configuraţii ale benzii de asamblare: Nios II/f (fast – rapid), Nios II/s (standard) şi Nios II/e (economy – economic) [112]. Diferenţele între cele 3 tipuri de benzi de asamblare sunt de maximum 3 ori în ceea ce priveşte aria ocupată şi de maximum 9 ori în ceea ce priveşte

Page 40: SISTEME ÎNCORPORATE CU FPGA PENTRU · PDF fileSISTEME ÎNCORPORATE CU FPGA PENTRU CONTROLUL PROCESELOR RAPIDE - REZUMATUL TEZEI DE DOCTORAT - ... POSDRU/6/1.5/S/9, ID 6681, este un

38

performanţele obţinute. Varianta Nios II/f oferă o bandă de asamblare pe 6 niveluri, cu memorie cache opţională pentru instrucţiuni, memorie cache opţională pentru date şi predicţie dinamică a salturilor folosind o tabelă cu 2 biţi de istorie [113]. Varianta Nios II/s are o bandă de asamblare cu doar 5 niveluri, cu memorie cache de instrucţiuni dar fără memorie cache de date şi mecanism de predicţie statică a salturilor. Nios II/s foloseşte cu 20% mai puţine resurse decât Nios II/f, dar performanţele scad cu aproximativ 40% [113]. Varianta Nios II/e nu mai oferă paralelism la nivelul instrucţiunii, execuţia unei instrucţiuni necesitând 6 cicli de tact, nu oferă memorie cache de instrucţiuni sau date şi nici mecanism de predicţie a ramificaţiilor. Astfel, performanţele obţinute de procesor sunt foarte scăzute faţă de varianta Nios II/s, dar şi spaţiul ocupat este de două ori mai mic [113].

4.1.2 Dificultăţi în proiectarea de procesoare implementate în FPGA Proiectarea procesoarelor implementate în FPGA este asemănătoare în multe privinţe cu

proiectarea procesoarelor implementate pe ASIC-uri. De fapt, procesoarele implementate pe ASIC-uri sunt adesea prototipizate pe FPGA-uri pe parcursul dezvoltării lor. Aceste prototipuri nu sunt însă utilizabile în aplicaţii comerciale, fiind utile doar pentru validarea şi testarea unor concepte de proiectare. Proiectarea procesoarelor implementabile în FPGA trebuie să reformuleze cerinţele de procesare astfel încât soluţiile obţinute să fie potrivite pentru implementarea în FPGA. Adoptarea soluţiilor folosite în proiectarea pentru ASIC-uri conduce rareori la rezultate satisfăcătoare la implementarea în FPGA.

O provocare a proiectării de procesoare pentru FPGA constă în a ţine cont de performanţele relative ale resurselor dispozitivului FPGA (elemente logice, memorii RAM, multiplicatoare, elemente programabile de interconectare), foarte diferite de performanţele relative ale resurselor unui ASIC (porţi logice, memorii RAM şi trasee cablate) [112]. De exemplu, performanţele memoriei RAM din FPGA sunt apropiate de performanţele memoriei RAM din ASIC, pe când performanţele elementelor logice din FPGA sunt mult mai slabe decât performanţele porţilor logice din ASIC. Din cauza diferenţelor de performanţe relative, folosirea unor tehnici utilizate pentru îmbunătăţirea performanţelor procesoarelor implementate pe ASIC-uri s-ar putea să conducă la deprecierea performanţelor procesoarelor la implementarea în FPGA. De exemplu, arhitecturile superscalare şi VLIW (Very Long Instruction Word) nu sunt potrivite pentru implementare în FPGA datorită limitărilor în ceea ce priveşte accesarea multi-port a bancurilor de registre. De asemenea, tehnica de execuţie re-ordonată a instrucţiunilor (out-of-order execution) nu este utilizabilă la implementarea în FPGA datorită performanţelor relativ scăzute ale logicii de control implementate folosind elemente logice.

4.1.3 Avantaje la proiectarea de procesoare implementate în FPGA Deşi FPGA-urile sunt dezavantajate de costurile mai mari şi performanţele inferioare

ASIC-urilor, faptul că sunt reconfigurabile oferă avantaje nete la proiectarea de procesoare. Procesoarele implementate pe ASIC au mulţi parametri configurabili la rulare prin intermediul unor registre de control, parametri ce pot fi setaţi prin software în timpul funcţionării sistemului. Procesorul oferă astfel resurse ce acoperă toate posibilităţile de comportare a unui modul, iar registrele de control definesc comportarea modulului la un moment dat. O mare parte din posibilităţile de comportare nu vor fi însă folosite dinamic, în timpul rulării sistemului. Ele vor fi configurate la iniţializarea sistemului şi îşi vor păstra aceeaşi configuraţie pe toată durata utilizării sistemului. Astfel, procesorul oferă resurse care în unele aplicaţii nu vor fi niciodată utilizate. Această risipă de resurse este evitată în cazul implementării procesoarelor pe dispozitive FPGA: parametrii configurabili la rulare care nu se schimbă dinamic în timpul utilizării sistemului pot fi transformaţi în parametri de generare ai procesorului. Astfel, procesorul oferă doar resursele necesare unei aplicaţii, ocupând mai puţin spaţiu. În cazul unei aplicaţii care are nevoie de un alt mod de utilizare a unui modul, procesorul poate fi re-generat cu alţi parametri şi reîncărcat în FPGA. Exemple de parametri configurabili la rulare în procesoarele implementate pe ASIC-uri care pot fi transformaţi în parametri de generare pentru procesoarele implementate pe FPGA, şi care au un impact semnificativ asupra resurselor ocupate

Page 41: SISTEME ÎNCORPORATE CU FPGA PENTRU · PDF fileSISTEME ÎNCORPORATE CU FPGA PENTRU CONTROLUL PROCESELOR RAPIDE - REZUMATUL TEZEI DE DOCTORAT - ... POSDRU/6/1.5/S/9, ID 6681, este un

39

de procesor, sunt parametrii ce definesc comportarea memoriilor cache (validată/invalidată, mod de scriere pentru memoria cache de date (scriere întârziată (write-back) sau scriere directă (write-through))) şi parametrii ce definesc facilităţile de depanare oferite de procesor (execuţie pas cu pas, inserarea de puncte de suspendare a execuţiei (breakpoints), examinarea/modificarea conţinutului memoriei şi registrelor) [112].

4.3 Co-proiectarea hardware-software în sisteme de control – studiu de caz În acest subcapitol va fi prezentat studiul de caz al co-proiectării hardware-software a

unui sistem de control pentru motorul de curent continuu fără perii (BLDC). Sistemului de control efectiv, implementat în hardware, prezentat în secţiunea 3.4.3, i s-a adăugat funcţionalitatea de monitorizare, constând în afişarea pe un dispozitiv LCD a parametrilor de control şi comunicarea cu un calculator gazdă folosind o interfaţă serială RS232 bidirecţională. Având în vedere că aceste funcţii de monitorizare nu sunt critice din punctul de vedere al timpului de execuţie şi, în plus, interacţionează cu elemente hardware lente, s-a dovedit oportună implementarea lor prin software pe procesoare soft. Astfel, sistemul de control este format dintr-o parte hardware proiectată special pentru aplicaţia amintită şi din două sisteme cu procesor soft PicoBlaze, fiecare implementând o altă funcţionalitate. Problema iniţială a fost partiţionată între hardware şi software, ilustrând conceptul din ce în ce mai răspândit în proiectarea cu FPGA-uri, acela de sistem pe un singur cip (SoC - System on a Chip). Uneori, pentru a evidenţia caracterul reconfigurabil al dispozitivelor FPGA, se foloseşte terminologia de sistem pe un cip programabil (SoPC – System on a Programmable Chip).

Folosirea de procesoare PicoBlaze, în detrimentul unora cu putere de calcul superioară, ca MicroBlaze, este pe deplin justificată de funcţiile care trebuie îndeplinite: aşa cum s-a amintit, funcţia de procesare de date (algoritmul de control) este realizată în hardware. Aşadar, în software se implementează doar nişte maşini de stare care vehiculează date (parametrii algoritmului, valori instantanee de semnale) între algoritm şi dispozitive de interfaţă cu utilizatorul. Deşi aceste maşini de stare ar putea fi implementate direct în hardware, complexitatea lor şi viteza mică la care lucrează ar ridica dificultăţi în implementare şi verificare.

De asemenea, utilizarea în paralel a mai multor procesoare simple poate fi mai economică decât utilizarea unui procesor mai complex, atât din punctul de vedere al resurselor folosite, cât şi din cel al timpului de dezvoltare pentru software. De altfel, această abordare este comună [118], [119], [120], iar cazul în care procesoarele sunt conectate între ele conduce la conceptul de reţea pe un singur cip (NoC – Network on Chip).

Sistemul pe un cip implementat în FPGA şi proiectat pentru controlul motorului BLDC este prezentat în Fig. 4.11. SoC-ul constă din algoritmul de control implementat în hardware şi modulele logice de suport necesare lui, analizorul logic virtual folosit pentru depanare şi verificare şi două sisteme cu procesor soft PicoBlaze. SoC-ul se interfaţează cu motorul folosind doar semnale digitale. Astfel, motorul este comandat prin intermediul unei punţi invertoare trifazice, tensiunea de alimentare aplicată înfăşurărilor fiind controlată digital prin tehnica de modulaţie a lăţimii impulsurilor (PWM). Informaţia de poziţie şi viteză se obţine de la motor prin intermediul a 3 senzori Hall şi a unui codificator optic incremental de poziţie, oferind la ieşire impulsuri digitale codificate în cuadratură (QEP). Rezoluţia codificatorului optic (caracterizat prin construcţie de 500 de linii pe suprafaţa urmărită de detectorii optici, ceea ce conduce la o rezoluţie de 2000 de impulsuri pe revoluţie) este foarte bună: poziţia rotorului se poate determina cu o rezoluţie de 360°/2000=0.18°.

Figura 4.11. SoC pentru controlul BLDC.

Page 42: SISTEME ÎNCORPORATE CU FPGA PENTRU · PDF fileSISTEME ÎNCORPORATE CU FPGA PENTRU CONTROLUL PROCESELOR RAPIDE - REZUMATUL TEZEI DE DOCTORAT - ... POSDRU/6/1.5/S/9, ID 6681, este un

40

Deşi analizorul logic virtual este o unealtă foarte puternică şi utilă şi permite o analiză destul de detaliată a performanţelor sistemului de control, acesta are totuşi câteva limitări:

• Poate captura doar număr limitat de eşantioane la un moment dat; • Semnalele pot fi doar extrase şi vizualizate, nu se pot modifica valorile registrelor

în timp real; • Semnalele vizualizate sunt eşantioane capturate începând cu un anumit moment,

determinat de un eveniment (trigger), nu sunt valori observate în timp real; În plus, analizorul logic virtual ocupă multe din blocurile RAM din FPGA; în cazul unor

proiecte complexe, aceste resurse s-ar putea să nu fie disponibile. Din aceste motive, s-a dovedit necesară o interfaţă în timp real. Aceasta constă dintr-un afişaj, pentru vizualizarea valorilor parametrilor de control şi a valorilor semnalelor, şi o legătură serială bidirecţională de tip RS232 cu un calculator gazdă, folosită pentru vehicularea aceloraşi date. Cele două interfeţe au fost realizate cu ajutorul a două sisteme cu microprocesor soft PicoBlaze. Acestea sunt total independente. Această abordare diferă de cea prezentată în [32], unde un singur procesor MicroBlaze controlează mai multe dispozitive periferice de comunicaţie şi afişare.

Primul sistem cu procesor soft, notat cu I în Fig. 4.11, are rolul de a citi parametrii algoritmului de control din registrele acestuia şi de a-i afişa pe un LCD alfanumeric. De asemenea, poate afişa valoarea vitezei motorului la un moment dat. Al doilea sistem cu procesor soft se ocupă exclusiv cu comunicaţia serială cu un calculator gazdă pe o interfaţă RS232. În acest scop, sistemul cu procesor foloseşte 2 module UART (Universal Asynchronous Receiver/Transmitter) implementate în FPGA, unul pentru transmisie, uart_tx, şi unul pentru recepţie, uart_rx. Aceste module sunt oferite de către Xilinx ca şi descrieri HDL (sunt disponibile atât versiunea VHDL, cât şi cea Verilog) şi sunt instanţiate în schema sistemului. Aşadar, sistemul cu procesor II ilustrează conectarea unui procesor soft cu hardware implementat în FPGA şi proiectat ca şi nucleu IP reutilizabil. Sistemul preia de la algoritmul de control valorile vitezei şi comenzii PWM pentru a le transmite serial. De asemenea, sistemul recepţionează serial noi valori pentru parametrii algoritmului de control, a0 şi a1, şi le scrie în registrele acestuia. Valorile parametrilor a0 şi a1 sunt asamblate de către procesor în registre externe, prin trei scrieri succesive în porturi de ieşire. A treia scriere activează şi un semnal de ready ce semnalizează algoritmului de control că valoarea parametrului este validă şi poate fi citită. Atunci când algoritmul de control preia valoarea, activează un semnal strobe, ce resetează registrul indicatorului ready. Sistemul cu procesor II transmite date calculatorului gazdă la fiecare perioadă de eşantionare. În acest scop, intrarea de întrerupere a procesorului PicoBlaze este conectată la semnalul Ts_tick, ce semnalizează în întreg sistemul de control începerea unei noi perioade de eşantionare (funcţia sa principală fiind activarea algoritmului de control).

Aplicaţia ce rulează pe calculatorul gazdă a fost realizată vizual, folosind mediul LabView. De altfel, LabView este o unealtă foarte puternică şi include actualmente un modul ce permite proiectarea vizuală de sisteme hardware implementabile direct în FPGA, la un nivel de abstractizare destul de înalt. Acest lucru deschide noi posibilităţi în implementarea pe FPGA a sistemelor complexe, utilizând unelte vizuale, un exemplu fiind prezentat în [121]. Instrumentul virtual ce rulează pe calculatorul gazdă, a cărui interfaţă este prezentată în Fig. 4.18, permite observarea comportării sistemului în buclă închisă în timp real şi modificarea parametrilor de control pentru ajustarea performanţelor. Instrumentul virtual constă din două grafice pe care se afişează în timp real valorile vitezei motorului BLDC şi ale comenzii PWM. Datele sunt afişate după asamblarea lor din octeţii recepţionaţi serial. La fiecare perioadă de eşantionare se recepţionează 6 octeţi: doi pentru sincronizare, doi ce formează valoarea vitezei şi doi ce formează valoarea comenzii. Pentru o perioadă de eşantionare în jurul valorii de 1ms, este necesară o rată de transfer serial de 115200 bps (biţi pe secundă). Datele sunt transmise de sistemul II în continuu. Dacă se doreşte îngheţarea imaginii pe grafice, pentru analiză, se întrerupe recepţia, folosind un buton de pe interfaţă. Când se doreşte reluarea afişării în timp real, se apasă butonul “continue”. Datele vor fi din nou asamblate şi afişate după recepţionarea primului set de doi octeţi de sincronizare. Aceştia au valori ce nu se pot regăsi între octeţii de

Page 43: SISTEME ÎNCORPORATE CU FPGA PENTRU · PDF fileSISTEME ÎNCORPORATE CU FPGA PENTRU CONTROLUL PROCESELOR RAPIDE - REZUMATUL TEZEI DE DOCTORAT - ... POSDRU/6/1.5/S/9, ID 6681, este un

41

date şi sunt astfel recunoscuţi de software. Instrumentul virtual permite actualizarea parametrilor regulatorului. Astfel, prin editarea valorilor unor câmpuri ce reprezintă factorul de amplificare proporţional şi factorul de amplificare integrator, şi folosind valoarea fixată pentru perioada de eşantionare, sunt calculaţi automat coeficienţii algoritmului de control (implementat ca filtru cu răspuns infinit la răspuns, a se vedea secţiunea 3.4.3). Prin apăsarea butonului Send, aceşti coeficienţi sunt transmişi prin interfaţa RS232 sistemului de control.

Figura 4.18. Interfaţa instrumentului virtual ce rulează pe calculatorul gazdă.

4.4 Concluzii Un interes deosebit în utilizarea dispozitivelor FPGA îl reprezintă integrarea unui întreg

sistem de procesare pe un singur cip, conducând la conceptul de SoC, sau chiar a unei matrice de elemente de procesare, conducând la conceptul de NoC. Din punctul de vedere al controlului automat, însă, revenirea la o structură de procesare fixă nu este un beneficiu [47], [57] decât în măsura uşurării proiectării sistemului: uneori, sistemul de control este mai uşor de implementat prin software ce rulează pe un procesor, decât direct în hardware. Acest lucru se datorează faptului că proiectarea de hardware orientat pe aplicaţie este un domeniu ce necesită cunoştinţe interdisciplinare destul de complexe, iar uneltele de dezvoltare şi metodele de lucru nu sunt încă standardizate. Proiectarea la nivele de abstractizare mai înalte, denumită proiectare ESL (Electronic System Level) va impune cu siguranţă răspândirea utilizării dispozitivelor FPGA ca platforme hardware.

Totuşi, există aplicaţii în care proiectarea de hardware specific nu se justifică, în aceste cazuri implementarea unui sistem cu procesor soft şi proiectarea de software pentru el fiind mult mai avantajoasă. Aceste aplicaţii sunt cele de monitorizare şi interfaţă cu utilizatorul într-un sistem de control, care sunt necritice din punctul de vedere al timpului de execuţie. În plus, de obicei aceste aplicaţii utilizează hardware lent şi care necesită secvenţe complexe de iniţializare şi comunicaţie. Implementarea de automate hardware pentru aceste secvenţe este complicată şi nu se justifică, deoarece o scurtă rutină software poate face exact acelaşi lucru.

Prezentul capitol reprezintă un studiu al metodelor de optimizare a procesoarelor soft implementabile în FPGA, ţinând cont de diferenţele între arhitectura acestui tip de dispozitive şi arhitectura ASIC-urilor, ce sunt de obicei folosite pentru implementarea de procesoare. În finalul capitolului se prezintă un sistem pe un cip cu două procesoare PicoBlaze independente, proiectate în jurul unui sistem de control hardware. Se exemplifică, aşadar, modul de co-proiectare hardware-software, prin partiţionarea proiectului în funcţionalităţi critice, executate de hardware, şi funcţionalităţi mai puţin critice, executate prin software. De asemenea, se exemplifică proiectarea unui sistem pe un cip FPGA, constând din hardware specific aplicaţiei, sisteme cu procesor soft ce funcţionează independent şi interacţionează, şi software-ul ce rulează pe procesoarele soft.

Rezultatele prezentate în acest capitol au fost publicate în [121], [122].

5. Metode moderne de modulaţie pentru controlul invertorului trifazic şi implementarea lor în FPGA

Invertorul trifazic, sau puntea invertoare trifazată, este o componentă cheie a sistemelor moderne de control al motoarelor de curent alternativ (AC – Alternative Current) trifazate.

Page 44: SISTEME ÎNCORPORATE CU FPGA PENTRU · PDF fileSISTEME ÎNCORPORATE CU FPGA PENTRU CONTROLUL PROCESELOR RAPIDE - REZUMATUL TEZEI DE DOCTORAT - ... POSDRU/6/1.5/S/9, ID 6681, este un

42

Aceasta deoarece permite controlarea atât a amplitudinii, cât şi a frecvenţei tensiunii aplicate motorului. Atunci când este controlat în tensiune, invertorul este cunoscut în literatura de specialitate anglo-saxonă şi sub acronimul VSI (Voltage Source Inverter). Puntea invertoare trifazată a fost prezentată deja în Fig. 3.15. Deşi aceasta are o structură foarte simplă, controlul precis al activării comutatoarelor ce o formează reprezintă o problemă serioasă. Acestea trebuie activate în aşa fel încât consumatorul de la ieşirea punţii să primească tensiune trifazată sinusoidală, de amplitudine şi frecvenţă reglabile. Cea mai folosită tehnică pentru controlul punţii invertoare este modulaţia PWM, realizată de obicei cu ajutorul unui procesor dotat cu periferice speciale. Există mai multe moduri de aplicare a modulaţiei PWM la controlul invertoarelor trifazate. Lucrarea de faţă nu îşi propune prezentarea tuturor posibilităţilor, ci doar a celor două cele mai răspândite, insistând asupra avantajelor oferite de dispozitivele FPGA în implementarea acestor modulatoare.

Pentru explicaţiile ce urmează, se vor defini câţiva termeni utilizaţi ulterior. Astfel, puntea invertoare din Fig. 3.15 poate fi văzută ca fiind alcătuită din două părţi, partea superioară, formată din tranzistoarele Q1, Q3 şi Q5, şi partea inferioară, formată din tranzistoarele Q2, Q4, Q6. În acelaşi timp, puntea poate fi văzută ca fiind alcătuită din 3 ramuri, fiecare făcând legătura între dcV şi masă. Cele 3 ramuri sunt alcătuite respectiv din tranzistoarele Q1 şi Q2, Q3 şi Q4, Q5 şi Q6. Este evident din Fig. 3.15 că cele două tranzistoare ale aceleiaşi ramuri nu se pot afla în conducţie în acelaşi timp, deoarece acest lucru ar conduce la scurtcircuitarea sursei de alimentare şi distrugerea tranzistoarelor. Astfel, starea invertorului poate fi descrisă complet doar de starea a trei dintre tranzistoare, cele ale părţii superioare sau cele ale părţii inferioare, considerând că celelalte trei sunt în starea complementară. În plus, deoarece tranzistoarele au un timp de răspuns ne-neglijabil, între comanda de blocare a unui tranzistor şi comanda de saturare a celuilalt de pe aceeaşi ramură ar trebui introdus un timp mort care să acopere timpii de răspuns ai tranzistoarelor.

Simplificarea amintită poate reprezenta puntea invertoare ca fiind formată din 3 comutatoare bipoziţionale. Astfel, fiecare dintre fazele consumatorului poate fi conectată la un moment dat fie la valoarea pozitivă a tensiunii continue de intrare, fie la cea negativă. Prin modulaţie PWM, impulsuri de frecvenţă fixă şi lăţime variabilă sunt aplicate la intrările de comandă ale comutatoarelor punţii. Tensiunea medie pe faza consumatorului conectată la un comutator va fi dată de lăţimea impulsurilor aplicate. De obicei, lăţimea impulsurilor este dată de un semnal cu o frecvenţă mult mai joasă decât frecvenţa impulsurilor. Acesta din urmă este semnalul purtător, în vreme ce primul este semnalul modulat. Pe lângă semnalul modulat, la ieşirea punţii se vor regăsi multe din armonicele superioare ale acestuia. De obicei acestea sunt filtrate de însuşi consumator, ce are o caracteristică de tip filtru trece-jos. Pentru a minimiza efectul armonicelor, frecvenţa semnalului purtător ar trebui să fie cât mai înaltă. Ea este însă limitată de unitatea de control (rezoluţia elementelor digitale) şi de capabilităţile tranzistoarelor de putere (pierderi de comutaţie, distorsiuni introduse de inserarea timpilor morţi).

Există mai multe tehnici de modulaţie PWM ce se aplică punţilor invertoare. Două dintre cele mai cunoscute vor fi prezentate şi în cele ce urmează: modulaţia PWM sinusoidală şi modulaţia bazată pe vectori spaţiali. Prima tehnică poate fi implementată şi folosind doar componente analogice; a doua, însă, este apanajul sistemelor digitale.

5.1 Modulaţia PWM sinusoidală Modulaţia PWM sinusoidală constă în generarea unui tren de impulsuri de frecvenţă fixă

a cărui caracteristică este că factorul de umplere (lăţimea impulsurilor) variază după o funcţie sinusoidală. Modulaţia PWM sinusoidală se obţine prin compararea unui semnal de referinţă sinusoidal cu o purtătoare cu formă de undă triunghiulară sau dinţi de fierăstrău. Procesul de modulaţie PWM sinusoidală este prezentat în Fig. 5.2. Atunci când se foloseşte o purtătoare cu formă de undă triunghiulară, semnalul rezultat la ieşire este simetric faţă de perioada semnalului purtător. Aceasta se datorează faptului că impulsul PWM nu este aliniat cu vârful pozitiv sau negativ al semnalului purtător, ci este simetric în jurul unuia dintre ele. De exemplu, în Fig. 5.2,

Page 45: SISTEME ÎNCORPORATE CU FPGA PENTRU · PDF fileSISTEME ÎNCORPORATE CU FPGA PENTRU CONTROLUL PROCESELOR RAPIDE - REZUMATUL TEZEI DE DOCTORAT - ... POSDRU/6/1.5/S/9, ID 6681, este un

43

impulsurile negative în semnalul rezultat sunt simetrice faţă de vârfurile pozitive ale semnalului purtător. În cazul purtătoarei cu formă de undă dinţi de fierăstrău, impulsul PWM e aliniat cu vârful negativ al semnalului purtător. Aceasta conduce la o formă de undă asimetrică a semnalului rezultat. De obicei, se preferă modulaţia PWM simetrică, deoarece produce mai puţine distorsiuni armonice de curent şi tensiune. Purtătoarea cu formă de undă dinţi de fierăstrău este totuşi mai întâlnită în sistemele digitale mai vechi sau de cost redus, deoarece este mai uşor de obţinut folosind periferice simple, de tip numărător binar. Producerea purtătoarei triunghiulare necesită un periferic mai special, de tip numărător binar reversibil (bidirecţional).

Figura 5.2. Procesul de modulaţie PWM sinusoidală. Aşa cum se poate observa din Fig. 5.2, amplitudinea semnalului sinusoidal de referinţă

este limitată de amplitudinea semnalului purtător la 2/dcV , unde dcV este tensiunea continuă aplicată punţii invertoare. Dacă se alege prin convenţie ca tensiunea aplicată punţii să fie bipolară, atunci tensiunea aplicată fazei consumatorului la saturarea tranzistorului superior al ramurii va fi 2/dcV+ , iar tensiunea aplicată fazei consumatorului la saturarea tranzistorului inferior al ramurii va fi 2/dcV− . Aşadar, dacă amplitudinea semnalului modulator (de referinţă) depăşeşte amplitudinea semnalului purtător, modulaţia nu mai funcţionează corect. De altfel, raportul dintre amplitudinea semnalului modulator, refV , şi amplitudinea semnalului purtător,

purtV , reprezintă indexul de modulaţie: purt

ref

VV

m = . Pentru o modulaţie corectă, este necesar ca

1≤m . În cazul în care nu se respectă această constrângere, în semnalul de ieşire vor apărea armonice superioare nedorite, fenomenul numindu-se supramodulaţie.

Principalul inconvenient al modulaţiei PWM sinusoidale constă în folosirea neperformantă a energiei sursei de alimentare datorită limitării amplitudinii semnalului modulator la 2/dcV . O altă problemă este faptul că pentru modulaţia trifazată, semnalele modulatoare pe cele trei faze sunt tratate independent, ceea ce conduce la schimbări superflue ale stărilor comutatoarelor, crescând pierderile în tranzistoarele de putere şi conţinutul armonic în semnalele de ieşire. O metodă de a îmbunătăţi folosirea energiei sursei de alimentare în cazul punţilor invertoare trifazate folosind modulaţia PWM sinusoidală se bazează pe faptul că de obicei consumatorul de la ieşirea punţii (de exemplu un motor de CA trifazat) nu are nevoie de tensiuni sinusoidale pe fiecare fază în parte, ci de tensiuni sinusoidale între faze (producând curenţi sinusoidali). Semnalul modulator de pe fiecare fază poate fi aşadar modificat într-un mod convenabil, cu condiţia ca această modificare să nu afecteze semnalul diferenţial între faze.

Există mai multe metode de a obţine acest lucru, mai multe scheme de modulaţie. Acestea se bazează pe injecţia unui semnal ales potrivit în semnalul modulator al fiecărei faze. Acest semnal injectat va putea fi observat în punctul neutru al consumatorului (punctul de conectare în stea a fazelor acestuia) şi din această cauză procesul se numeşte injecţie de semnal la punctul neutru (ZSS – Zero Sequence Signal injection).

Un exemplu cunoscut de semnal ZSS este a treia armonică a semnalului sinusoidal modulator. Aceasta poate avea amplitudinea 1/4 sau 1/6 din amplitudinea semnalului iniţial. Primul caz conduce la o îmbunătăţire cu 15,5 % a amplitudinii semnalului de ieşire fără supramodulaţie, iar al doilea conduce la o îmbunătăţire cu 12 %, dar cu minimizarea conţinutului

Page 46: SISTEME ÎNCORPORATE CU FPGA PENTRU · PDF fileSISTEME ÎNCORPORATE CU FPGA PENTRU CONTROLUL PROCESELOR RAPIDE - REZUMATUL TEZEI DE DOCTORAT - ... POSDRU/6/1.5/S/9, ID 6681, este un

44

spectral al curentului în consumator [124]. Această metodă este însă destul de greu de implementat în practică datorită complexităţii.

Semnalul ZSS este de obicei extras din semnalele modulatoare de pe cele trei faze, fiind în relaţie strânsă cu acestea. Faptul că cele trei semnale modulatoare sunt folosite împreună pentru generarea semnalului ZSS va conduce la o tratare unitară a lor, eliminând şi al doilea inconvenient amintit la modulaţia PWM sinusoidală pură. După cum se observă în Fig. 5.3, preluată din [125], există o multitudine de metode de modulaţie PWM sinusoidală cu inserţie de ZSS, fiecare oferind anumite avantaje. Cea mai cunoscută metodă constă în injecţia unui semnal triunghiular conţinând toate armonicele de ordin 3 (a doua imagine din coloana din stânga în Fig. 5.3). Această metodă de modulaţie a fost obţinută şi prin modulaţia digitală bazată pe vectori spaţiali, şi de aceea este atât de răspândită.

Figura 5.3. Metode de modulaţie PWM sinusoidală cu injecţie de ZSS [125]. Din punctul de vedere al implementării, schema de principiu a modulaţiei PWM

sinusoidale cu injecţie de ZSS triunghiular este reprezentată în Fig. 5.4. Cele trei semnale modulatoare sunt semnale sinusoidale şi provin de la un generator de semnal. Din cele trei semnale, se calculează ZSS, iar acest semnal se adună la fiecare din cele trei semnale iniţiale. Semnalele rezultate vor fi de fapt semnalele modulatoare, iar modulaţia se aplică ca şi cea PWM sinusoidală simplă, cu ajutorul unor comparatoare, semnalului purtător triunghiular, acelaşi pentru toate cele trei faze. În final, semnalele modulate sunt folosite pentru a controla stările celor 6 tranzistoare ale punţii invertoare. Aşa cum s-a menţionat, este necesară inserţia unui timp mort la schimbarea stării tranzistoarelor de pe aceeaşi ramură a punţii.

Figura 5.4. Schema de principiu a modulaţiei PWM sinusoidale cu injecţie de ZSS. Pentru injecţia de semnal triunghiular, calcularea ZSS constă în determinarea semnalului

de magnitudine minimă din cele trei semnale modulatoare. Acest semnal este apoi scalat cu 0.5 şi constituie ZSS [125]. Aşadar,

⎪⎩

⎪⎨

===

=.),,min(,;),,min(,;),,min(,

ccbac

bcbab

acbaa

ZSS

vvvvifvvvvvifvvvvvifv

v (5.3)

Pentru a uşura implementarea digitală, scutind modulatorul de a calcula valoarea absolută a magnitudinii semnalelor sinusoidale, necesară în (5.3), se poate face observaţia că pentru semnale sinusoidale trifazate echilibrate (cu defazaj egal între ele, de 120°), la orice moment dat, cele două semnale de magnitudini mai mari au semne opuse. Aşadar, semnalul ce are valoarea momentană în mijloc, nici cea mai mare, nici cea mai mică dintre cele trei, va fi cel de magnitudine minimă. Aşadar, valoarea ZSS poate fi calculată cu formula:

)).,min(),,min(),,max(min(*5.0 cbcabaZSS vvvvvvv = (5.4)

Page 47: SISTEME ÎNCORPORATE CU FPGA PENTRU · PDF fileSISTEME ÎNCORPORATE CU FPGA PENTRU CONTROLUL PROCESELOR RAPIDE - REZUMATUL TEZEI DE DOCTORAT - ... POSDRU/6/1.5/S/9, ID 6681, este un

45

Aceasta este mult mai uşor de implementat, folosind direct valorile semnalelor şi eliminând astfel câţiva paşi din calcule. Dacă semnalele sinusoidale trifazate nu sunt echilibrate, (5.4) nu se poate folosi fără o analiză prealabilă a aplicabilităţii. În cazul cel mai general, se va căuta aplicarea formulei (5.3).

5.2 Implementarea în FPGA a modulatorului PWM sinusoidal cu injecţie de semnal la punctul neutru (ZSS)

În cele ce urmează se va prezenta implementarea în timp real pe FPGA a modulatorului PWM sinusoidal cu injecţie de ZSS. Modulul rezultat va putea fi ulterior integrat într-un sistem de control pentru un motor de CA implementat pe FPGA.

Modulatorul a fost proiectat într-o manieră modulară, fiind constituit din: • Un modul generator controlat de semnal sinusoidal; • Un modul de calculare a valorii de prag pentru comanda tranzistoarelor, incluzând

logica de generare şi injecţie a ZSS; • Un modul de generare a semnalului purtător triunghiular, incluzând

comparatoarele PWM. Toate modulele au fost validate prin simulare individual, apoi integrate şi simulate ca

întreg. Sistemul a fost apoi implementat pe FPGA şi verificat experimental. În acest rezumat, se va prezenta detaliat doar modulul de calculare a valorilor de prag, ce

constituie partea cea mai importantă a modulatorului. 5.2.1 Modulul generator controlat de semnal sinusoidal Generatorul de semnal sinusoidal se bazează pe o tabelă de căutare implementată într-o

memorie ROM (Read Only Memory), în care se păstrează valorile funcţiei sinus. Fiecare cuvânt păstrat într-o locaţie ROM are o lăţime de 18 biţi. Valorile memorate sunt reprezentate în format în virgulă fixă cu semn, cu 2 biţi pentru partea întreagă şi 16 biţi pentru partea fracţionară. S-a ales o lăţime a cuvântului de memorie de 18 biţi deoarece memoria bloc RAM din FPGA este organizată în blocuri de 18kb, fiecare bloc putând fi accesat ca o memorie de 1024x18 biţi [126]. Tabela de căutare are o adâncime de 4096 ( 122 ) de valori, deci oferă o rezoluţie în timp de 12 biţi şi o rezoluţie în amplitudine de 18 biţi.

Formele de undă pentru toate cele trei faze ale semnalului modulator sunt obţinute folosind aceeaşi memorie ROM, accesând-o de 3 ori, la adrese diferite. Adresele diferă între ele cu o valoare ce corespunde unui defazaj de 2π/3. Cele trei accese consecutive sunt secvenţiate de un automat de stări, prin intermediul unui multiplexor 3 la 1 care selectează între adrese. De altfel, automatul de stări secvenţiază toate operaţiile din generatorul de semnal modulator. Acesta este un automat de tip Moore, instanţiat ca un bloc Registered Moore State Machine din librăria Xilinx Reference Blockset. Stările şi tranziţiile automatului sunt definite prin matricele stării următoare şi ieşirii, ce sunt translate automat în memorii ROM. S-ar putea folosi metode avansate de proiectare manuală mai eficientă a automatului [127], [128], însă efortul de proiectare trebuie îndreptat către calea de date, mult mai complexă şi cu un potenţial de optimizare mult mai ridicat. Automatul este destul de simplu şi deci uşor de descris prin această metodă. Automatul rămâne în starea 0 (zero) până când generatorul de semnal este activat de un semnal extern, ce semnalizează începutul unei noi perioade PWM. După activarea acestui semnal, automatul trece dintr-o stare în următoarea fără nicio condiţie, activând în fiecare stare un semnal de validare pentru un registru sau un set de registre ce salvează un pas din calculele asociate generatorului. În unele stări sunt modificate şi ieşirile de selecţie pentru multiplexorul de pe adresa memoriei ROM. Ieşirile sunt codificate sub forma “one hot”, un singur bit fiind 1 la un moment dat, cu excepţia celor de selecţie. Această codificare elimină nevoia de decodificator extern, folosindu-se doar blocuri Slice pentru a extrage biţii necesari din magistrala de ieşire, cum se poate vedea în Fig. 5.9. Tactul automatului (nu apare în figură, fiind considerat implicit), ca şi al tuturor elementelor sincrone din sistem (registre, numărătoare, memorii), este de 50MHz. Automatul are 10 stări, deci modulul de generare a semnalelor modulatoare are nevoie de 10 paşi (10 perioade de tact) pentru a-şi executa sarcina. Ţinând cont de simetria formei de undă a

Page 48: SISTEME ÎNCORPORATE CU FPGA PENTRU · PDF fileSISTEME ÎNCORPORATE CU FPGA PENTRU CONTROLUL PROCESELOR RAPIDE - REZUMATUL TEZEI DE DOCTORAT - ... POSDRU/6/1.5/S/9, ID 6681, este un

46

funcţiei sinus, memoria ROM ar putea păstra doar un sfert de perioadă, iar prin calcule suplimentare asupra adresei şi ieşirii s-ar putea obţine întreaga perioadă. Această abordare este folosită în [129]. O altă abordare, descrisă în [130], foloseşte multiplicatoare şi relaţii trigonometrice pentru a minimiza şi mai mult consumul de memorie. Implementarea acestor metode ar complica structura modulului şi ar implica mai mulţi paşi de calcul. Or, numărul de paşi de calcul este foarte important într-o implementare în timp real, iar dispozitivul FPGA folosit pentru experimente are suficiente blocuri de memorie RAM.

Figura 5.9. Automatul de stări ce secvenţiază operaţiile. 5.2.2 Modulul de calculare a valorilor de prag pentru comanda tranzistoarelor Acest modul este partea din sistem cea mai solicitantă din punctul de vedere al puterii de

calcul şi, în consecinţă, al resurselor folosite. Implementarea în FPGA este foarte eficientă în ceea ce priveşte timpul de execuţie atât datorită faptului că poate folosi multiplicatoarele integrate, cu un timp de propagare sub 5ns [126], cât şi din cauză că calculele pentru cele trei faze pot fi realizate în paralel, de către elemente hardware independente. Valorile de prag calculate vor fi folosite mai departe de către comparatoarele PWM în modulul de generare a semnalului purtător triunghiular. În acest scop, cele trei semnale sinusoidale de intrare, după injecţia de ZSS, vor trebui aduse în acelaşi domeniu de valori ca şi semnalul triunghiular. Se va vedea în secţiunea următoare că acest domeniu este cuprins între 0 (zero) şi o constantă întreagă notată cu cnt_scale. Procesul de aducere a semnalelor modulatoare în intervalul [0;cnt_scale] se desfăşoară în mai mulţi paşi. Mai întâi, aceste semnale sunt normalizate prin multiplicare cu

dcV/2 , unde dcV este tensiunea continuă de alimentare a punţii invertoare. Semnalele, aflate acum în intervalul [-1;+1], sunt inversate, deplasate în jurul valorii 1 şi scalate cu 1/2. După aceste operaţii, semnalele modulatoare vor avea valori în intervalul [0;+1]. Prin înmulţire cu cnt_scale, vor fi aduse în acelaşi interval ca şi semnalul purtător. Circuitul care realizează aceste operaţii este prezentat în Fig. 5.11. După cum se poate observa, circuitul foloseşte 6 multiplicatoare integrate. Fiecare pas de calcul este salvat într-un registru.

Figura 5.11. Circuitul de translare a intervalului semnalelor modulatoare.

Semnalul ZSS injectat este calculat conform (5.4). În acest scop, cele 3 semnale sinusoidale sunt scăzute două câte două, iar biţii de semn ai rezultatelor sunt folosiţi pentru a selecta care dintre cele trei semnale este ZSS. Acesta este rutat mai departe prin intermediul unui multiplexor 3 la 1, este scalat cu 0.5 şi este adunat la cele 3 semnale sinusoidale. Se obţin astfel cele 3 semnale modulatoare.

Ca şi în cazul modulului generator de semnal modulator, şi modulul de calculare a valorii de prag este controlat de un automat de stări. Acesta activează în fiecare stare o ieşire de validare pentru un set de registre, salvând rezultatele unui pas din calcul. Automatul stă în starea 0 (zero) până când este activat de un semnal extern. Automatul are 9 stări, deci calcularea valorii de prag necesită 9 cicli de tact. Toate calculele din cadrul acestui modul sunt realizate pe 18 biţi,

Page 49: SISTEME ÎNCORPORATE CU FPGA PENTRU · PDF fileSISTEME ÎNCORPORATE CU FPGA PENTRU CONTROLUL PROCESELOR RAPIDE - REZUMATUL TEZEI DE DOCTORAT - ... POSDRU/6/1.5/S/9, ID 6681, este un

47

profitând de lăţimea multiplicatoarelor integrate în FPGA [126]. O reprezentare schematică a întregului modul este prezentată în Fig. 5.13. Modulul este

proiectat după paradigma automat cu cale de date (FSMD – Finite State Machine with Datapath) [131]. Calea de date este reprezentată de fluxul orizontal de date din Fig. 5.13. Automatul de stări controlează de fapt calea de date. În Fig. 5.13, dreptunghiurile notate cu variabile reprezintă registre, iar toate registrele aliniate vertical sunt validate de acelaşi semnal al automatului. Ultimul pas computaţional din Fig. 5.13 ajustează pragurile calculate prin adăugarea unei constante la valorile de prag ale tranzistoarelor din partea superioară a punţii şi prin scăderea unei constante din valorile de prag ale tranzistoarelor din partea inferioară a punţii. Aceste valori sunt ajustabile şi au rolul de a introduce mici întârzieri (timpi morţi) între schimbările stărilor tranzistoarelor de pe aceeaşi ramură a punţii. Necesitatea introducerii acestor timpi morţi a fost deja discutată. Prin faptul că cele două constante sunt diferite, se pot compensa asimetriile în răspunsul tranzistoarelor (de obicei, timpii de răspuns la comanda de saturare şi la cea de blocare ai tranzistoarelor de putere sunt diferiţi).

Figura 5.13. Schema bloc a modulului de calculare a valorilor de prag.

5.2.3 Modulul de generare a semnalului purtător şi a semnalelor de comandă a tranzistoarelor

Semnalul purtător triunghiular necesar modulaţiei PWM este obţinut numeric folosind un numărător bidirecţional. Un circuit suplimentar schimbă direcţia de numărare atunci când se ating nişte constante prestabilite. Numărarea în jos se face până la 0 (zero). Constanta limită superioară este dată de raportul dintre frecvenţa semnalului de tact al sistemului şi frecvenţa dorită pentru semnalul PWM:

.21_

PWM

clk

ff

scalecnt = (5.9)

Factorul 1/2 din (5.9) se datorează faptului că o perioadă a semnalului purtător corespunde unui ciclu complet de numărare, de la 0 (zero) la cnt_scale şi înapoi la 0 (zero). Pentru cazul particular folosit în experimente în care MHzfclk 50= şi kHzf PWM 20= , rezultă

.1250_ =scalecnt Semnalul purtător va fi chiar semnalul de la ieşirea numărătorului. Aşa cum s-a menţionat, semnalele modulatoare sunt translate în acelaşi interval de valori, pentru a face posibile comparaţiile (intersectarea semnalelor) din Fig. 5.2.

Modulul de generare a semnalului purtător este responsabil şi cu generarea semnalelor de control pentru tranzistoarele punţii. În acest scop, valorile de prag calculate de modulul discutat în secţiunea anterioară sunt comparate, folosind comparatoare de egalitate, cu semnalul purtător. Pentru tranzistoarele superioare ale punţii, egalitatea dintre valoarea de prag şi semnalul purtător pe panta crescătoare a acestuia conduce la saturarea tranzistorului, iar aceeaşi egalitate pe panta negativă a semnalului purtător conduce la blocarea tranzistorului. Pentru tranzistoarele inferioare, lucrurile stau exact vice-versa.

Aşa cum s-a menţionat, modulul de generare a semnalelor sinusoidale şi cel de calculare a valorilor de prag sunt activate de semnale externe. Aceste semnale sunt generate din modulul

Page 50: SISTEME ÎNCORPORATE CU FPGA PENTRU · PDF fileSISTEME ÎNCORPORATE CU FPGA PENTRU CONTROLUL PROCESELOR RAPIDE - REZUMATUL TEZEI DE DOCTORAT - ... POSDRU/6/1.5/S/9, ID 6681, este un

48

de generare a semnalului purtător, fiind legate de acest semnal: astfel, modulul de generare a semnalelor sinusoidale va fi activat cu 19 cicli de tact înainte de terminarea perioadei curente a semnalului purtător, iar modulul de calculare a valorilor de prag – cu 10 cicli de tact înainte. În acest fel, toate calculele se termină exact în momentul începerii unei noi perioade a semnalului purtător, valorile de prag fiind valide pentru comparaţii pe durata acestei perioade. Cele două semnale de activare sunt generate tot folosind comparatoare de egalitate şi ţinând cont de semnalul de direcţie a numărării.

5.2.4 Implementarea pe FPGA şi rezultate experimentale Modulele sistemului descris au fost proiectate folosind System Generator şi validate prin

simulare folosind Simulink. Sistemul a fost verificat prin simulare ca întreg, apoi implementat în FPGA şi verificat experimental. Tabelul 5.2 prezintă resursele ocupate de modulator într-un dispozitiv FPGA Spartan-3E XC3S500E. Pentru experimente s-a folosit acest dispozitiv şi o punte invertoare cu tranzistoare MOSFET de tipul Technosoft PM50. Ieşirile au fost filtrate folosind filtre pasive RC trece jos pentru a elimina frecvenţele superioare datorate comutaţiei tranzistoarelor. Fig. 5.18 prezintă o captură de osciloscop cu cele trei tensiuni de fază obţinute după filtrare. În prima parte a imaginii, modulaţia a fost pur sinusoidală. Apoi, folosind un buton controlat de utilizator, s-a comutat pe modulaţie sinusoidală cu injecţie de ZSS. Se observă că amplitudinea semnalului cu injecţie de ZSS este cu aproximativ 15% mai redusă decât cea a semnalului sinusoidal. Acest lucru nu afectează însă tensiunea dintre faze, calculată de osciloscop şi prezentată în partea de jos a imaginii, care rămâne sinusoidală şi îşi păstrează amplitudinea. Tot în partea de sus a imaginii se observă semnalul de punct neutru, obţinut prin conectarea celor trei faze în stea prin rezistenţe de valori mari. Acesta prezintă o formă de undă triunghiulară, în concordanţă cu aşteptările.

Figura 5.18. Semnalele sinusoidale trifazice, fără şi cu injecţie de ZSS. Tabelul 5.2. Resursele ocupate în Spartan-3E XC3S500E de modulator.

LUT-uri Bistabili D Felii logice Multiplicatoare Blocuri RAM 698 din 9312

(7%) 511 din 9312

(5%) 478 din 4656

(10%) 8 din 20 (40%) 4 din 20 (20%)

Se poate concluziona, aşadar, că s-a proiectat cu succes un modulator sinusoidal cu injecţie de ZSS în vederea implementării în FPGA. Resursele ocupate din FPGA sunt în jur de 10% din disponibil, ceea ce permite integrarea, alături de modulator, a unui sistem complex de control pentru un motor de CA trifazat, obiectivul final al acestei lucrări.

5.3 Modulaţia bazată pe vectori spaţiali Modulaţia bazată pe vectori spaţiali (SVM – Space Vector Modulation) este tot o tehnică

de modulaţie PWM, dar este pur digitală. Spre deosebire de tehnica de modulaţie PWM sinusoidală prezentată anterior, ce foloseşte trei modulatoare sinusoidale independente, modulaţia bazată pe vectori spaţiali tratează vectorul spaţial de referinţă complex ca întreg. Astfel este exploatată interacţiunea dintre cele trei faze, ele nefiind tratate independent. Aşa cum s-a văzut însă, injecţia de ZSS la modulaţia sinusoidală introduce o măsură a interacţiunii între faze în procesul de modulaţie. De altfel, se va arăta şi prin rezultatele experimentale că modulaţia sinusoidală cu injecţie de ZSS triunghiular (prezentată anterior) este echivalentă ca rezultat cu modulaţia bazată pe vectori spaţiali.

SVM se bazează pe reprezentarea folosind vectorul spaţial complex a mărimilor electrice. Aşa cum se va evidenţia în secţiunile următoare, motoarele trifazate pot fi modelate în mai multe sisteme de coordonate. În general, se preferă modelarea lor într-un sistem de două axe, echivalându-le cu motoare bifazice. Există două sisteme bifazice de coordonate, unul fix, legat

Page 51: SISTEME ÎNCORPORATE CU FPGA PENTRU · PDF fileSISTEME ÎNCORPORATE CU FPGA PENTRU CONTROLUL PROCESELOR RAPIDE - REZUMATUL TEZEI DE DOCTORAT - ... POSDRU/6/1.5/S/9, ID 6681, este un

49

de stator, şi unul rotativ, de obicei sincron cu rotorul. Această din urmă abordare este avantajoasă pentru că mărimile ce caracterizează motorul sunt constante în sistemul de coordonate rotativ.

Suprapunând sistemul staţionar de două coordonate, α/β, peste planul complex şi alegând α ca axa reală şi β ca axa imaginară, vectorul spaţial ce reprezintă tensiunea este dat de (5.10). Se poate arăta că dacă unei maşini trifazice i se aplică o tensiune sinusoidală trifazată echilibrată de valoare medie pătratică (RMS – Root Mean Square) mV şi pulsaţie ω, atunci vectorul spaţial V

r

va avea magnitudinea mV şi se va roti pe o orbită circulară cu viteza unghiulară ω [124]. Şi variabilele trifazice pot fi exprimate sub formă vectorială ca în (5.11), unde 3/2πjea =

şi 3/22 πjea −= pot fi interpretaţi ca vectori unitate aliniaţi cu axele b şi c. Totuşi, se preferă modelarea în spaţiul α/β.

θβα

jmeVjvvV =+=

r (5.10) )(

32 2

cba vaavvV ++=r

(5.11)

Atunci când se foloseşte o punte invertoare trifazată, vectorul spaţial de referinţă (dorit) trebuie obţinut printr-o combinaţie a stărilor posibile ale punţii. Aşa cum s-a menţionat, datorită faptului că starea tranzistoarelor superioare trebuie să fie complementară stării tranzistoarelor inferioare, starea punţii poate fi descrisă doar de starea tranzistoarelor superioare. Puntea se poate afla deci în 8 ( 32 ) stări posibile, prezentate în Tabelul 5.3 împreună cu valorile corespunzătoare ale tensiunilor pe axele α/β.

Tabelul 5.3. Stările posibile ale punţii invertoare. Când sunt reprezentate în

planul α/β, cele 8 stări posibile ale punţii invertoare devin 8 vectori spaţiali, dintre care doi sunt nuli. Ceilalţi 6 definesc un hexagon şi îl împart în 6 sectoare, cum se poate vedea în Fig. 5.19.

Tehnica modulaţiei SVM constă în reconstruirea unui vector spaţial de referinţă dat folosind vectorii spaţiali de bază

din Fig. 5.19. De fapt, doar 3 din cei 8 vectori spaţiali sunt necesari la un moment dat: cei doi vectori adiacenţi vectorului de referinţă, ce definesc sectorul în care acesta se găseşte, şi unul din vectorii nuli. De obicei, se folosesc ambii vectori nuli, pentru utilizarea simetrică a tranzistoarelor superioare şi

inferioare ale punţii. Vectorii spaţiali de bază se combină folosind tehnica PWM. Din această cauză, algoritmul SVM mai este cunoscut şi sub denumirea SVPWM.

Figura 5.19. Hexagonul definit de vectorii spaţiali de bază. Figura 5.20. Descompunerea unui vector spaţial situat în sectorul S3 în vectorii de bază.

Spre exemplu, un vector spaţial cu magnitudinea şi orientarea ca în Fig. 5.20 va fi reconstruit folosind vectorii de bază 001 şi 011. Perioada de timp cât fiecare din aceşti vectori este aplicat este proporţională cu mărimea proiecţiei vectorului de referinţă pe vectorul de bază respectiv. Restul perioadei semnalului PWM este alocat vectorilor nuli. Figura 5.21. Reconstrucţia vectorului din Fig. 5.20 prin PWM.

Starea tranzistoarelor

Componentele vectorului spaţial

Starea punţii

Q1 Q3 Q5 αv βv v 000 OFF OFF OFF 0 0 0 100 ON OFF OFF 3/2 dcV 0 3/2 dcV 110 ON ON OFF 3/dcV 3/dcV 3/2 dcV 010 OFF ON OFF 3/dcV− 3/dcV 3/2 dcV 011 OFF ON ON 3/2 dcV− 0 3/2 dcV 101 ON OFF ON 3/dcV 3/dcV− 3/2 dcV 111 ON ON ON 0 0 0

Page 52: SISTEME ÎNCORPORATE CU FPGA PENTRU · PDF fileSISTEME ÎNCORPORATE CU FPGA PENTRU CONTROLUL PROCESELOR RAPIDE - REZUMATUL TEZEI DE DOCTORAT - ... POSDRU/6/1.5/S/9, ID 6681, este un

50

În Fig. 5.21 este prezentată reconstrucţia vectorului din Fig. 5.20 folosind tehnica PWM. Ordinea în care se activează vectorii de bază într-o perioadă PWM este foarte importantă. Aşa cum se poate observa în Fig. 5.21, vectorii de bază sunt aplicaţi în aşa fel încât o singură ramură a punţii îşi modifică starea la un moment dat, minimizându-se astfel pierderile de comutaţie şi conţinutul armonic al semnalelor de ieşire.

Algoritmul de implementare a SVM trebuie să îndeplinească următoarele sarcini: • Să determine orientarea vectorului de referinţă; de fapt, doar sectorul în care se

află vectorul este important, pentru a afla vectorii de bază adiacenţi ce vor participa la reconstrucţia lui;

• Să determine mărimea proiecţiilor vectorului de referinţă pe vectorii de bază şi, deci, factorul de umplere pentru aplicarea vectorilor de bază;

• Să determine ordinea de aplicare a vectorilor de bază; • Să genereze semnalul purtător PWM şi să aplice modulaţia.

Deşi aceste sarcini par foarte complexe, ele au fost reduse la probleme simple de geometrie plană: comparaţii de segmente şi calcularea lungimilor lor, fără a fi necesar apelul la funcţii trigonometrice. Deşi această abordare apare în diferite forme în literatură [124], [133], [134] ea nu este suficient de cunoscută, dovadă fiind multitudinea de lucrări ce folosesc o abordare bazată pe funcţii trigonometrice, mai complicată: [28], [46], [48], [49]. Pornind de la componentele α/β ale vectorului de referinţă, se determină sectorul şi apoi se calculează raporturile de activare a, b şi c pentru fiecare ramură a punţii. Un raport de activare a=1 corespunde tranzistorului superior continuu saturat al primei ramuri a punţii. Valoarea a=0 implică o distribuţie egală a timpului de activare între tranzistorul superior şi cel inferior ai primului braţ., în timp ce valorii a=–1 îi corespunde situaţia în care tranzistorul inferior al primului braţ este continuu saturat (activat). Similar, valorile b şi c corespund stărilor celorlalte ramuri ale punţii, respectiv. Pentru calcularea valorilor raporturilor de activare a, b şi c se foloseşte algoritmul schiţat în Fig. 5.24 [124]: mai întâi, în funcţie de valorile componentelor α/β ale tensiunii, se determină sectorul în care se află vectorul. Apoi se calculează valorile a, b şi c aplicând nişte formule de calcul specifice fiecărui sector. Acestea ţin cont de unghiul dintre axele α/β şi vectorii spaţiali de bază ce definesc sectorul.

Figura 5.24. Algoritmul de calculare a valorilor raporturilor de activare. Datorită simetriei hexagonului, formulele de calcul pentru raporturile de activare sunt

aceleaşi pentru sectoarele 1 şi 4, 2 şi 5, 3 şi 6, respectiv, şi sunt reprezentate de ecuaţiile (5.12), (5.13), (5.14).

.3

1

;3

3

;3

1

βα

βα

βα

vvc

vvb

vva

−−=

+−=

+=

(5.12) .

32

;3

2;2

β

β

α

vc

vb

va

−=

=

=

(5.13)

.3

3

;3

1

;3

1

βα

βα

βα

vvc

vvb

vva

−−=

+−=

−=

(5.14)

Factorii de umplere pentru semnalele PWM se calculează apoi din valorile raporturilor de activare:

Page 53: SISTEME ÎNCORPORATE CU FPGA PENTRU · PDF fileSISTEME ÎNCORPORATE CU FPGA PENTRU CONTROLUL PROCESELOR RAPIDE - REZUMATUL TEZEI DE DOCTORAT - ... POSDRU/6/1.5/S/9, ID 6681, este un

51

%100]2

1;2

1;2

1[,, ⋅+++

=cbadc cba . (5.15)

Pornind de la cele prezentate poate fi derivată implementarea în timp real pe FPGA a algoritmului de modulaţie SVM. Spre deosebire de implementarea pe un microcontroler sau DSP, implementarea pe FPGA e mult mai rapidă, deoarece multe operaţii se pot executa în paralel. De asemenea, operaţiile executate nu sunt limitate de o arhitectură aritmetico-logică fixată, ci pot fi definite după nevoi, ceea ce oferă multă flexibilitate la implementarea algoritmului. În cazul algoritmului descris, se poate observa că rezultatele operaţiilor de comparaţie ce conduc la determinarea sectorului în care se află vectorul pot fi folosite după aceea: ultimele 4 condiţii de decizie din Fig.5.24 pot fi regăsite în formulele de calcul (5.12) şi (5.14). De exemplu, a doua condiţie de decizie din Fig.5.24, dată de (5.16), poate fi rescrisă ca (5.17). La fel, cealaltă condiţie poate fi rescrisă ca (5.18). Aşadar, decizia este luată în funcţie de semnul operaţiei (5.17), iar rezultatul acesteia este folosit ulterior pentru a calcula factorul a în (5.14). Se poate observa de asemenea că celelalte operaţii din (5.12) şi (5.14) sunt combinaţii liniare între termenii daţi de condiţiile de decizie, ca (5.17) şi (5.18), şi factorii b şi c din (5.13). Aşadar, odată aceşti termeni calculaţi, ei vor facilita calcularea celorlalţi.

βα vv3

1≥ (5.16) 0

31

≥− βα vv (5.17) 03

1≥+ βα vv (5.18)

Având în vedere disponibilitatea de resurse din FPGA, o abordare inteligentă este să se calculeze a priori toate valorile posibile pentru a, b şi c şi, în momentul în care s-a decis sectorul, adică care dintre trei-uple este cea validă, să se ruteze aceasta la ieşire. Astfel, calculele pot fi efectuate în paralel şi între ele, şi cu procesul de decizie, scurtându-se timpul de execuţie a algoritmului.

5.4 Implementarea în FPGA a modulatorului bazat pe vectori spaţiali Ca şi modulatorul sinusoidal cu injecţie de ZSS prezentat anterior, modulatorul SVM a

fost proiectat modular, având o structură asemănătoare. Este compus, aşadar, dintr-un modul generator de semnal, un modul de calculare a factorilor de umplere şi un modul generator de semnal purtător PWM.

5.4.1 Structura modulară Modulul generator de semnal va genera un vector spaţial rotitor în planul complex,

adică va fi tot un generator controlat de semnal sinusoidal trifazat. Diferenţa faţă de generatorul de semnal sinusoidal din Secţiunea 5.2 constă în faptul că modulatorul SVM lucrează cu reprezentarea α/β a semnalului trifazat. Aşadar, modulul generator de semnal va realiza şi transformarea din sistemul de coordonate trifazat în cel bifazat:

⎪⎪⎩

⎪⎪⎨

−=

−−=

]).[][(33][

]);[][][2(31][

kvkvkv

kvkvkvkv

cb

cba

β

α (5.19)

Aceasta presupune un pas de calcul (adică un ciclu de tact) în plus şi utilizarea unor resurse suplimentare (multiplicatoare şi sumatoare).

Modulul de calculare a factorilor de umplere va implementa algoritmul discutat în secţiunea anterioară şi schiţat in Fig. 5.24. Algoritmul este implementat tot folosind paradigma automat cu cale de date: paşii de calcul sunt secvenţiaţi de către un automat de stări de tip Moore, acesta generând semnale de validare pentru registrele ce memorează rezultatele intermediare. Schema bloc a modulului de calculare a factorilor de umplere este prezentată în Fig. 5.26. Algoritmul din Fig. 5.26 începe cu normalizarea componentelor α/β ale tensiunii trifazate. Prin înmulţire cu )*2/(3 dcV , cele două valori de intrare sunt aduse în intervalul [-1;+1]. Trebuie observat că în toate formulele componenta de pe axa β este înmulţită cu 3/1 , datorită unghiului dintre vectorii spaţiali de bază şi axa β. Aşadar, normalizarea componentei βv include

Page 54: SISTEME ÎNCORPORATE CU FPGA PENTRU · PDF fileSISTEME ÎNCORPORATE CU FPGA PENTRU CONTROLUL PROCESELOR RAPIDE - REZUMATUL TEZEI DE DOCTORAT - ... POSDRU/6/1.5/S/9, ID 6681, este un

52

şi înmulţirea cu acest factor, eliminându-se o operaţie superfluă. Următorul pas este determinarea condiţiilor (5.17) şi (5.18). Acestea se calculează folosind sumatoare, iar rezultatele sunt salvate în registre. Vor fi utilizate ulterior pentru calculul unor termeni din formulele (5.12) şi (5.14), folosind tot sumatoare şi operaţii de negare (în complement faţă de 2), reprezentate prin “x(-1)” în Fig. 5.26.

Figura 5.26. Schema bloc a modulului de calculare a factorilor de umplere.

Biţii de semn ai valorilor corespunzătoare operaţiilor (5.17) şi (5.18), împreună cu bitul de semn al componentei βv normalizată, sunt folosiţi pentru a realiza selecţia valorilor corecte ce vor fi rutate la ieşire dintre cele calculate în paralel. Acest lucru este realizat de un circuit logic combinaţional. În momentul în care valorile precalculate au fost selectate şi rutate la ieşire de multiplexoare, ele vor fi salvate în registrele notate a, b, c în Fig. 5.26. Acestea sunt raporturile de activare discutate în secţiunea anterioară. În pasul următor, aceste raporturi de activare conduc la valorile factorilor de umplere pentru semnalele PWM, conform (5.15). Similar ca la modulatorul PWM sinusoidal, aceşti factori de umplere sunt transformaţi în valori de prag folosite la comparaţii cu semnalul purtător prin încă doi paşi computaţionali: primul scalează valorile factorilor de umplere, translându-i din intervalul [0;+1] în intervalul în care variază semnalul purtător. Acest lucru se realizează prin înmulţire cu constanta cntr_scale. Al doilea pas modifică uşor valorile de prag, pentru a introduce un timp mort între comutarea tranzistoarelor de pe acelaşi braţ al punţii. Această problemă a mai fost discutată în Secţiunea 5.2, iar implementarea soluţiei este exact la fel, deci nu va mai fi detaliată.

Ieşirea acestui modul este reprezentată aşadar de 6 valori de prag, fiecare corespunzând controlului semnalului de activare a unui transistor al punţii.

Modulul generator de semnal purtător PWM are exact aceeaşi structură cu modulul omonim discutat în secţiunea 5.2.3. Semnalul purtător, tot triunghiular periodic, este comparat cu valorile de prag generate de modulul anterior, în felul acesta derivându-se semnalele de comandă pentru tranzistoare. Tot acest modul este responsabil şi cu generarea semnalelor de activare pentru celelalte două module.

5.4.2 Implementarea pe FPGA şi rezultate experimentale Modulatorul prezentat a fost implementat într-un dispozitiv FPGA Spartan-3E. S-a folosit

reprezentarea numerelor în virgulă fixă, cu o precizie de 18 biţi la operaţiile de înmulţire (limitată de lăţimea intrărilor multiplicatoarelor încorporate în FPGA) şi 24 de biţi pentru celelalte operaţii. Algoritmul de calculare a valorilor de prag se execută în 8 paşi, adică în 160ns la o frecvenţă a semnalului de tact de 50MHz.

În Tabelul 5.4 se prezintă comparativ resursele ocupate de modulatorul prezentat (doar algoritmul de modulaţie, fără generatorul de semnal de intrare) şi alte două versiuni din literatură [136], [28]. Implementările comparate sunt realizate cu dispozitive FPGA cu arhitecturi bazate pe celule logice cu LUT-uri cu 4 intrări, deci comparabile. După cum rezultă din Tabelul 5.4, modulatorul prezentat ocupă cu 45% mai multe resurse decât cel prezentat în [136], dar are o

Page 55: SISTEME ÎNCORPORATE CU FPGA PENTRU · PDF fileSISTEME ÎNCORPORATE CU FPGA PENTRU CONTROLUL PROCESELOR RAPIDE - REZUMATUL TEZEI DE DOCTORAT - ... POSDRU/6/1.5/S/9, ID 6681, este un

53

rezoluţie de 3 ori mai mare, şi este cu 32% mai economic decât cel prezentat în [28], având şi rezoluţie dublă faţă de acesta. În plus, modulatoarele prezentate în literatură folosesc funcţii trigonometrice pentru a determina sectorul în care se află vectorul, deci au nevoie de o memorie ROM pentru a păstra eşantioanele funcţiei sinus. De asemenea, având în vedere că acele implementări folosesc forma trifazată a vectorului spaţial, în implementarea unui sistem de control orientat după câmp pentru un motor de CA modulatorul prezentat este mai avantajos, deoarece realizează modulaţia direct din reprezentarea α/β a tensiunii de comandă, folosită şi de sistemul de control. Celelalte implementări vor avea nevoie de operaţii în plus pentru realizarea transformării din spaţiul α/β în cel trifazat.

Tabelul 5.4. Resursele ocupate de modulatorul SVM. Implementare Dispozitiv FPGA Resurse ocupate:

LUT-uri/bistabili Rezoluţia

Prezentată aici Xilinx Spartan-3E / XC3S500E 830/510 24 biţi Prezentată în [136] Xilinx Spartan-2 / n.a. 573/n.a. 8 biţi Prezentată în [28] Altera Cyclone / EP1C20 1221/n.a. 12 biţi

După sinteză, mapare şi rutare, uneltele de analiză a temporizării au raportat că sistemul prezentat este capabil să ruleze la o frecvenţă maximă de 77MHz. El a fost testat efectiv la frecvenţa de 50MHz.

Pentru testare, modulatorul a fost conectat la generatorul de semnale sinusoidale. În Fig. 5.28 este prezentată o captură de osciloscop a semnalelor de la ieşirea punţii invertoare, filtrate cu filtre trece-jos pasive. Se observă că formele de undă sunt la fel cu cele obţinute prin modulaţie sinusoidală cu injecţie de ZSS triunghiular din Fig. 5.18, evidenţiindu-se astfel prin rezultate experimentale echivalenţa celor două tehnici de modulaţie [138].

Figura 5.28. Semnalele filtrate de la ieşirea punţii invertoare. 5.5 Comparaţie între cele două modulatoare În scopul comparării celor două modulatoare şi a alegerii celui mai potrivit pentru

integrarea în sistemul de control, ambele sisteme descrise au fost realizate cu aceeaşi precizie, de 18 biţi. Pentru rigurozitate, modulatorul sinusoidal cu injecţie de ZSS a fost realizat folosind formula (5.3), şi nu simplificarea (5.4). Acest lucru presupune un pas de calcul în plus, pentru determinarea valorii absolute. În Tabelul 5.5 sunt prezentate comparativ resursele ocupate de cele două sisteme.

Tabelul 5.5. Resursele ocupate de cele 2 sisteme cu modulator. Sistem cu modulator Resurse

SPWM-ZSS SVM LUT-uri cu 4 intrări 833 (8%) 957 (10%)

Bistabili D 548 (5%) 585 (6%) Felii logice 560 (12%) 605 (12%)

Multiplicatoare 8 (40%) 9 (45%) Blocuri RAM 4 (20%) 4 (20%)

Frecvenţa maximă 90 MHz 124 MHz Se observă din Tabelul 5.5 că o scădere a preciziei calculelor de la 24 la 18 biţi pentru

modulatorul SVM conduce la o creştere semnificativă a frecvenţei de lucru, de la 77MHz la 124MHz. Din Tabelul 5.5 rezultă, la prima vedere, că modulatorul SPWM-ZSS ar fi mai potrivit pentru implementarea în FPGA şi încorporarea într-un sistem de control datorită faptului că ocupă mai puţine resurse. Trebuie totuşi sesizat că în tabel sunt prezentate resursele ocupate de întreg sistemul, incluzând generatorul de semnal. Această observaţie este importantă, deoarece la

Page 56: SISTEME ÎNCORPORATE CU FPGA PENTRU · PDF fileSISTEME ÎNCORPORATE CU FPGA PENTRU CONTROLUL PROCESELOR RAPIDE - REZUMATUL TEZEI DE DOCTORAT - ... POSDRU/6/1.5/S/9, ID 6681, este un

54

integrarea într-un sistem de control acest modul dispare, semnalele fiind generate de către algoritmul de control. Fără a include generatoarele de semnal, se observă că cele două modulatoare ocupă cam aceleaşi resurse, modulatorul SVM fiind totuşi preferabil deoarece:

• Are nevoie de mai puţini paşi pentru a realiza calculele; • Are ca valori de intrare componentele α/β ale tensiunii trifazate; cum, în general,

sistemele de control performante pentru motoare de CA folosesc reprezentarea într-un sistem de referinţă bifazat legat de rotor, aceasta este mai apropiată de reprezentarea în sistemul bifazat legat de stator, α/β. Deci sistemul de control va avea nevoie de mai puţine operaţii pentru a trece de la reprezentarea internă la reprezentarea folosită de algoritmul SVM, decât pentru a ajunge de la reprezentarea internă la cea trifazată. Cu alte cuvinte, în cazul SPWM-ZSS va mai fi necesar cel puţin un pas de calcul, inversa transformării (5.19). Pe lângă timpul de calcul, această transformare implică şi utilizarea unor resurse suplimentare, inclusiv a 2 multiplicatoare.

• Foloseşte mai puţine multiplicatoare, 5 în loc de 6. Având în vedere şi punctul anterior, şi ţinând cont că multiplicatoarele sunt o resursă critică pe FPGA, acest punct este destul de important. Desigur, există metode de a multiplexa în timp folosirea resurselor hardware, în speţă a multiplicatoarelor, dar acest lucru implică complicarea sistemului şi introducerea unor paşi suplimentari de calcul.

• Funcţionează la o frecvenţă ceva mai mare. Deşi se poate îmbunătăţi frecvenţa de lucru şi pentru modulatorul SPWM-ZSS prin căutarea căilor critice şi inserarea de registre, acest lucru implică mărirea numărului de paşi ai algoritmului, deci implică un timp de calcul mai lung.

Este, aşadar, important de subliniat că algoritmul SVM este preferabil algoritmului SPWM-ZSS la implementarea pe FPGA. Singurul inconvenient este că dacă se doreşte o altă schemă de modulaţie, de exemplu folosind unul singur din vectorii nuli, algoritmul SVM se modifică total (se modifică formulele de calcul, deci şi calea de date). O altă schemă de modulaţie afectează doar o mică parte în algoritmul SPWM-ZSS, anume aceea de calculare a ZSS. Deci se poate considera că algoritmul SPWM-ZSS este mai flexibil.

5.6 Îmbunătăţirea rezoluţiei modulatorului SVM Problema modulatoarelor PWM, atât a celui sinusoidal cât şi a modulatorului SVM,

constă în faptul că rezoluţia cu care se pot obţine impulsurile PWM este limitată de rezoluţia numărătorului ce generează purtătoarea PWM. Aşa cum rezultă din (5.9), aceasta este invers proporţională cu frecvenţa semnalului purtător. Avem deci de-a face cu constrângeri contradictorii: pe de o parte, frecvenţa purtătoarei ar trebui să fie cât mai mare, pentru a scădea perioada de eşantionare a sistemului de control digital şi deci lăţimea sa de bandă; pe de altă parte, rezoluţia modulatorului ar trebui să fie cât mai mare, cel puţin egală cu rezoluţia senzorilor de curent şi viteză, pentru a avea un sistem de control stabil şi performant.

Din această cauză s-a căutat mereu îmbunătăţirea rezoluţiei modulatorului PWM prin alte metode decât scăderea frecvenţei purtătoarei. Cea mai simplă soluţie, vizibilă uşor şi din (5.9), constă în a creşte frecvenţa semnalului de tact aplicat numărătorului ce generează purtătoarea PWM. De obicei, această abordare nu este suficientă şi se caută îmbunătăţirea ei prin introducerea de întârzieri precise, ce reprezintă multipli ai unei fracţiuni din perioada semnalului de tact. Atunci când se utilizează dispozitive FPGA, aceste întârzieri pot fi obţinute cu precizie foarte ridicată folosind elementele de gestionare a semnalelor de tact integrate în FPGA [139], [140], [141], despre care s-a amintit în Secţiunea 2.2. Ca şi circuitele din familia Xilinx prezentată în Secţiunea 2.2, şi circuitul Spartan-3E XC3S500E ce s-a folosit la experimente dispune de blocuri DCM.

În această secţiune se prezintă o generalizare a circuitului din [141], care are avantajul faţă de cele prezentate în [139] şi [140] că este sincron. Circuitul prezentat în [141] a fost modificat pentru a folosi purtătoarea PWM triunghiulară, a fost extins la 6 canale (fiecare

Page 57: SISTEME ÎNCORPORATE CU FPGA PENTRU · PDF fileSISTEME ÎNCORPORATE CU FPGA PENTRU CONTROLUL PROCESELOR RAPIDE - REZUMATUL TEZEI DE DOCTORAT - ... POSDRU/6/1.5/S/9, ID 6681, este un

55

tranzistor al punţii invertoare este controlabil independent) şi i s-a îmbunătăţit liniaritatea prin reproiectarea multiplexoarelor pentru o mai bună simetrie. Fig. 5.30 prezintă circuitul proiectat.

Blocurile DCM, numărătorul şi cei 4 bistabili din partea de sus sunt pilotaţi de acelaşi semnal de tact de 200MHz, ce nu mai este reprezentat pentru a nu încărca figura. Cei 16 bistabili din partea de jos sincronizează semnalele de set şi reset cu 8 semnale de tact defazate de către blocurile DCM. Bistabilii din FPGA permit selectarea frontului de tact la care reacţionează [126], deci s-au folosit doar câte două ieşiri din fiecare DCM. Acest lucru oferă două avantaje majore: (i) este eliminată o sursă de posibile asimetrii datorită defazajelor imperfecte; (ii) toate semnalele de tact pot folosi resurse de rutare globale speciale (numărul buffer-elor speciale de tact este redus), asigurându-se întârzieri minime pe liniile de tact.

Figura 5.30. Schema de principiu a circuitului generator de PWM cu rezoluţie înaltă. Pentru testare, circuitul prezentat, proiectat prin captură de schemă, a fost implementat în

FPGA. Folosind un osciloscop cu lăţime de bandă mare, de 500MHz, s-au efectuat măsurători. Modulatorul SVM, îmbunătăţit cu circuitul prezentat în această secţiune, a fost testat

pentru comanda simplă, în buclă deschisă, după metoda V/Hz, a unui motor de inducţie, comandat de o punte invertoare trifazată cu IGBT-uri (Fig. 5.34). S-a putut astfel verifica experimental corectitudinea funcţionării modulatorului proiectat.

Figura 5.34. Standul experimental cu punte invertoare de putere şi motor de inducţie.

5.7 Concluzii În acest capitol s-au prezentat două metode de modulaţie PWM folosite în controlul

punţii invertoare trifazate: modulaţia PWM sinusoidală cu injecţie de semnal triunghiular la punctul neutru şi modulaţia bazată pe vectori spaţiali. Din punctul de vedere al rezultatului, metodele sunt echivalente. Din punctul de vedere al implementării, însă, cele două metode sunt foarte diferite: în vreme ce modulaţia PWM sinusoidală este foarte veche, fiind iniţial implementată folosind componente analogice, modulaţia bazată pe vectori spaţiali este relativ recentă, apărând odată cu evoluţia sistemelor de control digitale şi fiind apanajul acestora.

După prezentarea generală a metodelor de modulaţie, s-a făcut o analiză a lor din punctul de vedere al implementării pe FPGA. S-au proiectat, într-o manieră originală, modulatoarele corespunzătoare, ţinând cont de posibilităţile de paralelizare a operaţiilor în FPGA. Pentru proiectare, s-a folosit mediul Simulink şi software-ul System Generator, ceea ce a permis validarea conceptului prin simulare. Fiecare modulator a fost integrat într-un sistem de testare, conţinând un generator controlat de semnal trifazat, respectiv bifazat. Astfel, s-au putut verifica experimental. Experimentele au dovedit echivalenţa funcţională a celor două metode de modulaţie.

Page 58: SISTEME ÎNCORPORATE CU FPGA PENTRU · PDF fileSISTEME ÎNCORPORATE CU FPGA PENTRU CONTROLUL PROCESELOR RAPIDE - REZUMATUL TEZEI DE DOCTORAT - ... POSDRU/6/1.5/S/9, ID 6681, este un

56

Cele două modulatoare au fost comparate din punctul de vedere al resurselor ocupate şi al vitezei de lucru. Deşi ambele modulatoare ocupă cam aceeaşi cantitate de resurse logice din FPGA, modulatorul bazat pe vectori spaţiali s-a dovedit mai potrivit pentru integrare într-un sistem de control pentru un motor de CA trifazat datorită faptului că se execută în mai puţini paşi, foloseşte mai puţine multiplicatoare dedicate (o resursă critică în FPGA-urile de cost redus) şi se aplică direct componentelor α/β ale tensiunii de intrare. Această concluzie este semnificativă, deoarece multe abordări din literatură [42], [57], [142] preferă modulaţia sinusoidală sub pretextul că este mai uşor de implementat.

În final, s-a realizat îmbunătăţirea la 16 biţi a rezoluţiei modulatorului PWM prin folosirea a trei blocuri DCM şi a unei scheme originale. Schema a fost obţinută în doi paşi, prin reproiectarea uneia prezentate în literatură astfel încât să funcţioneze cu semnal purtător triunghiular.

Modulatorul SVM prezentat aici a fost prezentat în [143]. O modificare a acestuia, cu folosirea doar a vectorului nul 000, a fost prezentată în [144]. Modulatorul SPWM-ZSS a fost prezentat în [145]. Schema pentru creşterea rezoluţiei modulatorului PWM a fost publicată în [143].

6. Proiectarea unui sistem de control al vitezei pentru motorul PMSM implementabil în hardware pe FPGA

6.1 Modelarea motorului PMSM Motorul sincron cu magneţi permanenţi este un motor fără perii cu distribuţie sinusoidală

a înfăşurărilor statorului. Din acest motiv, mai este cunoscut în literatură sub denumirea de motor fără perii de CA, sau motor BLAC (Brushless AC). Spre deosebire de motorul BLDC, în care o tensiune continuă se comută în anumite înfăşurări ale statorului în funcţie de poziţia rotorului, într-un PMSM tensiunea în înfăşurări trebuie să fie sinusoidală. Amplitudinea şi frecvenţa acestei tensiuni este legată de viteza rotorului, iar faza sinusului trebuie să fie în concordanţă cu poziţia rotorului.

Un PMSM cu doi poli rotorici şi trei înfăşurări statorice este reprezentat în Fig. 6.1 [147]. Se observă că perpendicular pe cele 3 înfăşurări statorice se definesc 3 axe. Paralel cu polii magnetici ai rotorului, pe direcţia polului nord, se defineşte axa d, iar perpendicular pe aceasta, în direcţia acelor de ceasornic, axa q. Poziţia rotorului faţă de stator se defineşte prin unghiul dintre axele q şi as, rθ , iar viteza unghiulară a rotorului se notează rω .

Figura 6.1. Reprezentarea schematică a unui PMSM [147]. Ecuaţiile electrice ale motorului sunt:

⎥⎥⎥⎥⎥⎥

⎢⎢⎢⎢⎢⎢

+′

−′

+⎥⎥⎥

⎢⎢⎢

⎥⎥⎥⎥⎥⎥

⎢⎢⎢⎢⎢⎢

+−−

−+−

−−+

+⎥⎥⎥

⎢⎢⎢

⎥⎥⎥

⎢⎢⎢

⎡=

⎥⎥⎥

⎢⎢⎢

)3

2sin(

)3

2sin(

sin

21

21

21

21

21

21

000000

πθλ

πθλ

θλ

rm

rm

rm

cs

bs

as

AlsAA

AAlsA

AAAls

cs

bs

as

s

s

s

cs

bs

as

dtd

iii

LLLL

LLLL

LLLL

dtd

iii

rr

r

vvv

, (6.1)

unde csbsas vvv ,, reprezintă căderile de tensiune pe înfăşurările notate cu csbsas ,, în Fig. 6.1, csbsas iii ,, reprezintă curenţii prin înfăşurări, sr reprezintă rezistenţa înfăşurării statorice, lsL este inductanţa de pierdere (leakage) a înfăşurării statorice, mλ′ este amplitudinea legăturilor de

Page 59: SISTEME ÎNCORPORATE CU FPGA PENTRU · PDF fileSISTEME ÎNCORPORATE CU FPGA PENTRU CONTROLUL PROCESELOR RAPIDE - REZUMATUL TEZEI DE DOCTORAT - ... POSDRU/6/1.5/S/9, ID 6681, este un

57

flux stabilite de magneţii permanenţi, iar g

rlNL s

A0

2

2πμ

⎟⎠

⎞⎜⎝

⎛= este definit pentru a exprima mai uşor

inductanţele proprii şi mutuale ale statorului în a doua matrice din (6.1); sN reprezintă numărul de spire al înfăşurării, 0μ este permeabilitatea magnetică a vidului (şi o aproximează pe cea a aerului), r este raza internă a statorului, l este lungimea axială a motorului, iar g reprezintă grosimea spaţiului dintre rotor şi stator (air gap, întrefier). Se presupune că spaţiul dintre rotor şi stator este uniform, adică rotorul este rotund. În caz contrar, inductanţele maşinii vor avea încă o componentă, variabilă, dependentă de unghiul dintre stator şi rotor.

Cuplul electromagnetic este dat de (6.3), unde P este numărul de poli magnetici ai rotorului. Şi formula (6.3) este valabilă dacă rotorul este perfect rotund, altfel trebuind introduse componente datorate inductanţelor variabile. Ecuaţia mecanică a motorului este dată de relaţia (6.4), unde J este momentul de inerţie a rotorului şi a sarcinii, F este factorul de fricţiune, iar LT este cuplul mecanic de încărcare.

]sin)(23cos)

21

21[(

2 rcsbsrcsbsasme iiiiiPT θθλ −+−−′= (6.3) Lrre TP

Fdtd

PJT ++= ωω 22 (6.4)

Relaţiile (6.1) şi (6.3), ce modelează motorul PMSM, au dezavantajul major că mărimile electrice şi mecanice depind de poziţia rotorului. Dacă rotorul nu ar fi rotund, lucrurile ar fi şi mai complicate, deoarece în (6.1) şi (6.3) ar apărea şi inductanţe variabile în funcţie de poziţia rotorului. În aceste condiţii proiectarea unui sistem de control pentru PMSM este foarte dificilă. O cale de a evita lucrul cu mărimile variabile în timp este aceea, propusă de R. H. Park încă din 1929, de a realiza o transformare din sistemul de coordonate trifazat legat de stator în sistemul bifazat legat de rotor. Astfel, aplicând matricea de transformare dată de (6.5) vectorilor mărimilor trifazate se obţin reprezentările lor în sistemul de coordonate q/d, (6.6) şi (6.7).

⎥⎥⎥⎥⎥⎥

⎢⎢⎢⎢⎢⎢

−−−−−

+−

=

21

21

21

)3

2sin()3

2sin(sin

)3

2cos()3

2cos(cos

32 πθπθθ

πθπθθ

sK (6.5)⎥⎥⎥

⎢⎢⎢

⎡⋅=

⎥⎥⎥

⎢⎢⎢

cs

bs

as

s

s

ds

qs

vvv

Kvvv

0

(6.6)⎥⎥⎥

⎢⎢⎢

⎡⋅=

⎥⎥⎥

⎢⎢⎢

cs

bs

as

s

s

ds

qs

iii

Kiii

0

(6.7)

Aplicând transformarea dată de (6.5) întregii ecuaţii electrice a motorului (6.1), rezultă:

⎥⎥⎥

⎢⎢⎢

⎡′+

⎥⎥⎥

⎢⎢⎢

⎥⎥⎥

⎢⎢⎢

⎡+

⎥⎥⎥

⎢⎢⎢

⎡−

′++

⎥⎥⎥

⎢⎢⎢

⎥⎥⎥

⎢⎢⎢

⎡=

⎥⎥⎥

⎢⎢⎢

0

0

000000

0000000

000

m

s

ds

qs

ls

d

q

qsq

mdsd

r

s

ds

qs

s

s

s

s

ds

qs

dtd

iii

LL

L

dtdiL

iL

iii

rr

r

vvv

λλ

ω , (6.8)

unde Alsq LLL23

+= este inductanţa echivalentă pe axa q, iar dL este inductanţa

echivalentă pe axa d şi este egală cu qL în cazul PMSM cu rotor rotund. Dacă rotorul nu este rotund, cele două inductanţe echivalente nu mai sunt egale, dar sunt în orice caz invariabile.

Ecuaţia (6.8) poate fi explicitată în (6.9), (6.10), (6.11). Aplicând transformarea dată de (6.5) ecuaţiei de cuplu a motorului (6.3) se obţine (6.12) [147]. Se observă că în cazul PMSM cu rotor rotund, cum inductanţele echivalente pe cele două axe sunt egale, (6.12) se simplifică în (6.13). Aşadar, lucrând în sistemul de coordonate q/d, ecuaţiile electrice ale motorului nu mai conţin mărimi dependente de poziţia rotorului. De asemenea, ecuaţia de cuplu se simplifică foarte mult. Transformarea sistemului de coordonate se dovedeşte astfel crucială pentru proiectarea unui sistem de reglare a cuplului sau vitezei motorului PMSM.

qsqmrdsdrqssqs idtdLiLirv +′++= λωω (6.9) dsdqsqrdssds i

dtdLiLirv +−= ω (6.10)

slssss idtdLirv 000 += (6.11) ))((

223

dsqsqdqsme iiLLiPT −+′= λ (6.12) qsme iPT λ′=22

3 (6.13)

Page 60: SISTEME ÎNCORPORATE CU FPGA PENTRU · PDF fileSISTEME ÎNCORPORATE CU FPGA PENTRU CONTROLUL PROCESELOR RAPIDE - REZUMATUL TEZEI DE DOCTORAT - ... POSDRU/6/1.5/S/9, ID 6681, este un

58

În literatură, transformarea din sistemul trifazat fixat pe stator în sistemul bifazat rotitor fixat pe rotor dată de (6.14) este adesea văzută ca o serie de 2 transformări succesive. Prima este transformata Clarke, din sistemul trifazat fixat pe stator într-un sistem bifazat fixat tot pe stator. Această transformare corespunde echivalării maşinii trifazate cu una bifazată, abordare foarte folosită pentru simplificarea analizei maşinii. Transformata Clarke este descrisă de matricea de transformare din (6.15). Matricea este 3x3, ceea ce înseamnă că în urma transformării rezultă 3 componente, şi nu două, componentele α/β. Cea de-a treia componentă este secvenţa de zero şi este de obicei nulă, deoarece suma celor 3 curenţi din înfăşurările unui motor este nulă dacă punctul neutru al motorului (punctul de conectare în stea) este izolat.

A doua transformare, transformarea Park, conduce de la sistemul de coordonate α/β, fix, legat de stator, la un sistem de coordonate tot bifazat, dar legat de rotor, rotindu-se sincron cu acesta, q/d. Transformarea Park este dată de matricea din (6.16). Se observă din (6.16) că secvenţa de zero rămâne nemodificată prin transformarea Park şi nu influenţează celelalte componente. Dacă se efectuează calculele, se poate verifica faptul că transformarea iniţială este echivalentă cu transformările Clarke şi Park efectuate succesiv, adică se verifică (6.17).

⎥⎥⎥⎥⎥⎥⎥

⎢⎢⎢⎢⎢⎢⎢

−−

=

21

21

21

23

230

21

211

32C (6.15)

⎥⎥⎥

⎢⎢⎢

⎡−=

1000cossin0sincos

θθθθ

P (6.16) CPK s ⋅= (6.17)

Transformărilor directe le corespund transformări inverse, date de inversele matricelor prezentate: (6.18), (6.19), (6.20).Din nou, se poate arăta că se verifică (6.21).

⎥⎥⎥⎥⎥⎥

⎢⎢⎢⎢⎢⎢

+−+

−−−

=−

1)3

2sin()3

2cos(

1)3

2sin()3

2cos(1sincos

1

πθπθ

πθπθθθ

sK (6.18)

⎥⎥⎥⎥⎥⎥

⎢⎢⎢⎢⎢⎢

−−

−=−

123

21

123

21

1011C (6.19)

⎥⎥⎥

⎢⎢⎢

⎡ −=−

1000cossin0sincos

1 θθθθ

P (6.20) 111 −−− ⋅= PCK s (6.21)

Aşadar, motorul PMSM cu rotor rotund poate fi modelat foarte convenabil în sistemul de coordonate q/d, fiind descris de ecuaţiile electrice (6.9), (6.10) (ecuaţia (6.11) poate fi ignorată, deoarece componenta secvenţă de zero este nulă), de ecuaţia de cuplu (6.13) şi de ecuaţia mecanică (6.4). Se observă că ecuaţiile (6.13) şi (6.4) sunt liniare. Ecuaţiile (6.9) şi (6.10) sunt neliniare, existând un cuplaj între componentele q şi d.

6.2 Proiectarea sistemului de control al vitezei pentru motorul PMSM Aşa cum motorul se modelează uşor în sistemul de coordonate q/d, şi sistemul de control

se modelează în acelaşi sistem. Dar din cauză că motorul este controlat prin intermediul tensiunilor aplicate pe cele trei faze, iar bucla de reacţie foloseşte senzori pentru a măsura curenţii ce trec prin cele trei înfăşurări, algoritmul de control trebuie să efectueze transformările între sistemul de coordonate trifazat fixat pe stator şi sistemul de coordonate bifazat rotitor sincron cu rotorul în timp real.

În sistemul de coordonate q/d ecuaţiile electrice ale motorului descriu funcţii de transfer de ordinul I, dacă se elimină cuplajul ce apare între cele 2 axe şi componenta datorată tensiunii electromotoare induse. Cel mai adesea sunt folosite regulatoare simple de tip PI (proporţional-integrator) pentru controlul curenţilor prin motor [149]. Conform (6.4), viteza este controlată prin intermediul cuplului electromagnetic, iar acesta este controlat, conform (6.13), controlând componenta de pe axa q a curentului. Curentul pe axa d este menţinut la 0 (zero) pentru viteze

Page 61: SISTEME ÎNCORPORATE CU FPGA PENTRU · PDF fileSISTEME ÎNCORPORATE CU FPGA PENTRU CONTROLUL PROCESELOR RAPIDE - REZUMATUL TEZEI DE DOCTORAT - ... POSDRU/6/1.5/S/9, ID 6681, este un

59

mai mici decât viteza nominală a motorului. Curenţii pe axele q şi d sunt controlaţi prin intermediul tensiunilor pe axele q şi d, conform (6.9) şi (6.10). Algoritmul de control trebuie să compenseze cuplajul dintre cele două axe ce apare în aceste ecuaţii, precum şi componenta datorată tensiunii electromotoare induse ce apare în (6.9).

Din cauză că de obicei momentul de inerţie al motorului are valori mult mai mari decât factorul de fricţiune, făcându-l pe acesta din urmă practic neglijabil, partea mecanică a motorului are o comportare aproape de a unui integrator, ceea ce face dificilă alegerea parametrilor unui regulator PI pentru viteză. Din acest motiv, în literatură s-a propus utilizarea unui regulator cu buclă dublă de reacţie, de tip PI-P [150]. Această abordare îmbunătăţeşte performanţele sistemului, cu dezavantajul creşterii complexităţii algoritmului de control.

Metoda de control a motoarelor sincrone în spaţiul q/d este cunoscută sub denumirea de control orientat după câmp (FOC – Field Orientated Control) sau control vectorial [153]. Fig. 6.3 prezintă schema bloc a sistemului de control al vitezei pentru motorul PMSM, aşa cum rezultă în urma discuţiei din paragrafele de mai sus. Motorul este alimentat de o punte invertoare trifazată (VSI). Aceasta este controlată prin modulaţie bazată pe vectori spaţiali (SVM sau SVPWM), iar algoritmul de modulaţie foloseşte componentele α/β ale tensiunii de referinţă. Pentru reacţie, pe lângă curenţii ce trec prin înfăşurările motorului, se foloseşte informaţia despre poziţia rotorului derivată cu ajutorul unui codificator optic cu ieşiri digitale în cuadratură. Ieşirile acestuia (cele două semnale în cuadratură şi un impuls de index) sunt prelucrate pentru a obţine unghiul şi viteza rotorului, ambele necesare în algoritmul de control.

Figura 6.3. Schema de control al vitezei pentru motorul PMSM. 6.2.1 Alegerea parametrilor pentru regulatoarele de curent Pentru ambele regulatoare de curent s-a aplicat aceeaşi metodă de proiectare analitică. Se

va prezenta aşadar detaliat doar proiectarea regulatorului pentru curentul de pe axa q. După decuplare, ce echivalează cu eliminarea termenilor ce conţin rω din ecuaţia (6.9), aceasta devine o ecuaţie diferenţială liniară de ordinul I. Considerând curentul ca variabilă de ieşire şi tensiunea ca variabilă de intrare şi aplicând transformata Laplace, din (6.9) se derivă funcţia de transfer echivalentă părţii electrice a motorului pe axa q, conform (6.22). Punând funcţia de transfer a regulatorului PI sub forma (6.23), parametrul iτ se va alege astfel încât să compenseze polul funcţiei )(sGq , ca în (6.24). Funcţia de transfer în buclă închisă se reduce la (6.25). Această funcţie de transfer descrie un element de întârziere de ordinul I şi poate fi ajustată pentru comportarea dorită a sistemului.

srLr

sG

s

q

sq

+=

1

1

)( (6.22)s

sKsG

i

iPIPI ττ 1

)(+

= (6.23)

s

qiq r

L=τ (6.24) 1

1

1

1)(+

=+

=s

sK

rsG

q

PIq

siqcq ττ

(6.25)

Perioada de eşantionare a sistemului este dată de către frecvenţa purtătoarei modulatorului SVM. Aceasta a fost fixată pentru experimente la 20kHz, rezultând perioada de

Page 62: SISTEME ÎNCORPORATE CU FPGA PENTRU · PDF fileSISTEME ÎNCORPORATE CU FPGA PENTRU CONTROLUL PROCESELOR RAPIDE - REZUMATUL TEZEI DE DOCTORAT - ... POSDRU/6/1.5/S/9, ID 6681, este un

60

eşantionare dată de (6.26). Constanta de timp a sistemului în buclă închisă a fost aleasă de 4 ori mai mare decât perioada de eşantionare, rezultând pentru parametrul PIK valoarea din (6.27). Asemănător, pentru regulatorul de curent de pe axa d rezultă parametrii din (6.28), (6.29).

sTs μ50= (6.26) s

qPIq T

LK

4= (6.27)

s

did r

L=τ (6.28)

s

dPId T

LK

4= (6.29)

6.2.2 Alegerea parametrilor pentru regulatorul de viteză Considerând că motorul PMSM are rotorul rotund, iar cuplul de încărcare este constant în

regim staţionar (este văzut ca mărime de perturbaţie, nu ca mărime de intrare), din (6.13) şi (6.4) rezultă funcţia de transfer din (6.30) pentru partea mecanică a motorului, având la intrare curentul pe axa q şi la ieşire viteza. După cum se poate vedea şi din Fig. 6.3, sistemul de control al vitezei conţine două bucle de reacţie şi două regulatoare, unul de tip P şi unul de tip PI. Sistemul de control se va proiecta deci în doi paşi. Mai întâi, regulatorul de tip P va poziţiona polii sistemului în buclă închisă. Pentru alegerea factorului de amplificare al regulatorului P, notat cu ωK ′ , se pleacă de la funcţia de transfer a sistemului în buclă deschisă (6.31), considerând pentru partea electrică funcţia de transfer din (6.25). Având în vedere că qττω >> (datorită faptului că momentul de inerţie al motorului este mult mai mare decât factorul de fricţiune, ωτ are valori foarte mari), rezultă că se poate aproxima ωω τττ ≅+ q şi funcţia de transfer în buclă închisă devine cea din (6.32). Factorul de amplificare pentru regulatorul P se alege astfel încât funcţia de transfer în buclă închisă să aibă un pol dublu în

qs

τ21

−= , rezultând (6.33).

Următorul pas constă în alegerea parametrilor regulatorului PI. Ca şi la regulatorul de curent, parametrul iτ se va alege astfel încât să anuleze un pol al funcţiei )(sGcω , conform (6.34). Funcţia de transfer în buclă deschisă rămasă este dată de (6.35). Rezultă o funcţie de transfer în buclă închisă (6.36) ce descrie un sistem de ordinul II. Factorul de amplificare ωPIK se determină în funcţie de comportarea dorită a sistemului.

11

43

)(+

=+

′=

sK

sFJFP

sGm

ω

ωω τ

λ (6.30)

111)(

++′=

sK

sKsG

qo

ω

ωωω ττ

(6.31)

ω

ωω

ω

ωω

ω

τττ

ττ

qq

qc KK

ss

KK

sG ′++

=1

)(2

(6.32) .34 qmq P

JK

Kτλτ

τ

ω

ωω ′

==′ (6.33) qi ττ ω 2= (6.34)

)12(1)(1 +

=ss

KsGqi

PIo ττ ωωω (6.35)

22

21

421

14

)(

q

PI

q

q

PIc K

ss

KsG

τττ ω

ωω

++= (6.36)

6.3 Validarea sistemului de control în continuu Sistemul de control proiectat conform secţiunii anterioare a fost implementat în Simulink

şi verificat prin simulare, folosind un model al motorului PMSM din librăria SimPowerSystems. S-au folosit parametrii motorului Pittman 3441 de 19.1V. Schema Simulink a sistemului de reglare în acest stadiu este prezentată în Fig. 6.4. Parametrii motorului sunt prezentaţi în Tabelul 6.1. Puntea invertoare ce alimentează motorul este înlocuită în acest stadiu al simulării de surse controlate de tensiune tot din librăria SimPowerSystems. Acestea primesc la intrare valori corespunzând celor trei tensiuni sinusoidale va, vb, vc. Se observă că sistemul de control realizează atât transformarea directă din sistemul de coordonate trifazat legat de stator în sistemul de coordonate bifazat rotitor sincron cu rotorul, abc2qd, pentru a putea lucra în spaţiul

Page 63: SISTEME ÎNCORPORATE CU FPGA PENTRU · PDF fileSISTEME ÎNCORPORATE CU FPGA PENTRU CONTROLUL PROCESELOR RAPIDE - REZUMATUL TEZEI DE DOCTORAT - ... POSDRU/6/1.5/S/9, ID 6681, este un

61

q/d, cât şi transformarea inversă din sistemul de coordonate q/d în sistemul trifazat, qd2abc, pentru a putea comanda motorul. Aceste transformări se folosesc de poziţia rotorului, prin funcţiile sin şi cos aplicate unghiului măsurat.

Tabelul 6.1. Parametrii motorului PMSM. Trebuie precizat că unghiul măsurat este unghiul

mecanic al rotorului ( mθ ), iar acesta diferă de unghiul electric ( eθ ). Această diferenţă apare şi în ceea ce priveşte viteza, şi este dată de numărul de poli magnetici ai rotorului conform (6.37), (6.38). În toate ecuaţiile motorului s-au considerat mărimile electrice, deci acestea trebuie obţinute de către sistemul de control din mărimile mecanice măsurabile. Ţinând cont de parametrii motorului, pentru regulatoarele de curent s-au obţinut parametrii din (6.39), (6.40), conform (6.24), (6.26), (6.27). Factorii de amplificare pentru elementele proporţional şi

integrator ale regulatoarelor rezultă cei din (6.41), (6.42).

Figura 6.4. Schema Simulink a sistemului de reglare.

Într-o primă fază de validare, regulatoarele de curent au fost testate separat, prin întreruperea buclei de reglare a vitezei şi impunerea unei referinţe de curent. În a doua fază de validare, a fost simulată şi bucla de reglare a vitezei. Parametrii regulatoarelor au fost determinaţi ţinând cont de parametrii motorului. Astfel, pentru bucla internă, pentru factorul de amplificare al regulatorului de tip P rezultă, conform (6.33), valoarea din (6.43). Pentru bucla externă, pentru parametrul ωτ i rezultă, conform (6.34), valoarea din (6.44). Parametrul ωPIK se alege (a se vedea (6.45)) astfel încât sistemul în buclă închisă rezultat să aibă un timp de creştere de aproximativ 15ms la o comandă de tip treaptă. În aceste condiţii, sistemul rezultat este de ordin II, având poli reali în s=-330 şi s=-2523, deci cu un pol dominant. Rezultă pentru regulatorul PI parametrii din (4.46), (4.47).

Parametru Valoare sr 2.625 ohm dL 0.00046 H qL 0.00046 H

Constanta de tensiune

2.62 V/krpm

J 9.9e-7 kg.m^2 F 0.175e-6 N.m.s P 2

meP θθ2

= (6.37) .2 mePωω = (6.38) 00017524.0== idiq ττ (6.39)

3.2== PIdPIq KK (6.40) 3.2== PdPq KK (6.41) 13125== IdIq KK (6.42)

0.0571=′ωK (6.43) 00035048.0=ωτ i (6.44) 1024.0=ωPIK (6.45)

Page 64: SISTEME ÎNCORPORATE CU FPGA PENTRU · PDF fileSISTEME ÎNCORPORATE CU FPGA PENTRU CONTROLUL PROCESELOR RAPIDE - REZUMATUL TEZEI DE DOCTORAT - ... POSDRU/6/1.5/S/9, ID 6681, este un

62

Răspunsul la treaptă al sistemului de reglare a vitezei simulat în Simulink este prezentat în Fig. 6.8.

6.4 Discretizarea sistemului de control Deoarece sistemul de control va fi

implementat numeric pe un dispozitiv FPGA, acesta trebuie discretizat în timp, iar semnalele din sistem vor trebui discretizate în amplitudine. Aşa cum s-a menţionat, pentru perioada de eşantionare a sistemului a fost aleasă valoarea sTs μ50= , în concordanţă cu frecvenţa semnalului purtător PWM. Aceasta nu poate fi foarte înaltă, fiind limitată de frecvenţa de comutaţie a tranzistoarelor de putere din componenţa punţii invertoare.

Regulatoarele PI au fost discretizate folosind aproximarea de tip trapez (metoda Tustin), fiind descrise în timp discret de ecuaţia cu diferenţe (6.48), unde ε este intrarea regulatorului, iar u este ieşirea.

Figura 6.8. Răspunsul sistemului simulat la o comandă de tip treaptă de viteză. Deoarece sistemul de control are acces la curenţii prin cele 3 înfăşurări statorice, dar

controlul se realizează pe baza curenţilor în sistemul de coordonate q/d, acesta trebuie să realizeze transformările de coordonate din sistemul trifazat fixat pe stator în sistemul bifazat rotitor sincron cu rotorul. Acestea sunt implementate prin două transformări succesive, a/b/c la α/β (6.49) şi α/β la q/d (6.50), conform celor prezentate în secţiunea precedentă. Deoarece sistemul de control aplică comanda motorului prin intermediul tensiunilor de pe cele 3 faze, acesta trebuie să realizeze şi transformarea inversă, din sistemul de coordonate q/d în sistemul trifazat. Cum tensiunile trifazate se aplică prin SVM, iar algoritmul de modulaţie foloseşte reprezentarea bifazată α/β a vectorului spaţial ca intrare, sistemul de control nu trebuie să realizeze decât transformarea de la q/d la α/β, conform (6.51). Aceasta este exact la fel cu transformarea directă, de la α/β la q/d, dată de (6.50), doar că se aplică tensiunilor. Blocul de decuplare a dependenţei între curenţii pe cele două axe şi de compensare a tensiunii electromotoare induse realizează operaţiile din (6.52).

Ecuaţiile discrete ale regulatoarelor PI şi P, precum şi transformările (6.49)-(6.51) şi operaţia de decuplare (6.52) au fost implementate folosind blocuri System Generator. S-a folosit reprezentarea în virgulă fixă, cu limitare la 18 biţi pentru intrările multiplicatoarelor şi 24 de biţi pentru celelalte operaţii. Toate limitările s-au făcut cu hardware suplimentar pentru saturaţie în caz de depăşire, asigurându-se comportarea corectă a sistemului chiar şi atunci când se ating limitele reprezentării numerice.

1024.0=ωPK (6.46) 256=ωIK (6.47)

]1[]1[)2

(][)2

(][ −+−−++= kukKTK

kKTK

ku PsI

PsI εε (6.48)

⎪⎪⎩

⎪⎪⎨

−=

−−=

]),[][(33][

]);[][][2(31][

kikiki

kikikiki

cb

cba

β

α (6.49)

⎩⎨⎧

−=+=

].[])[cos(][])[sin(][];[])[sin(][])[cos(][

kikkikkikikkikki

eed

eeq

βα

βα

θθθθ

(6.50)

⎩⎨⎧

−=+=

].[])[cos(][])[sin(][];[])[sin(][])[cos(][

kvkkvkkvkvkkvkkv

deqe

deqe

θθθθ

β

α (6.51)⎩⎨⎧

−=

′+=.][][][

;][][][][

_

_

qqedecd

meddedecq

LkikkvkLkikkv

ωλωω

(6.52)

Page 65: SISTEME ÎNCORPORATE CU FPGA PENTRU · PDF fileSISTEME ÎNCORPORATE CU FPGA PENTRU CONTROLUL PROCESELOR RAPIDE - REZUMATUL TEZEI DE DOCTORAT - ... POSDRU/6/1.5/S/9, ID 6681, este un

63

Simularea a fost reluată, folosind o perioadă de evaluare pentru blocul System Generator de 50μs. În acest stadiu, algoritmul SVM a fost înlocuit cu transformarea de coordonate de la α/β la a/b/c. Partea de comandă a motorului s-a păstrat la fel ca la simularea în continuu. Prin simulare, s-au obţinut rezultate asemănătoare cu cele obţinute la simularea sistemului continuu. Totuşi, pentru a se valida procesul de discretizare, sistemul discret a fost simulat împreună cu sistemul continuu, calculându-se diferenţa între semnalele din sistemul continuu şi cele din sistemul discret. Astfel, s-au evaluat erorile de discretizare (datorate erorilor de cuantizare, aproximării integratoarelor prin metoda Tustin şi extrapolatoarelor de ordin 0 (zero) de pe ieşiri), iar acestea s-au dovedit acceptabile. Spre exemplu, pentru o schimbare de tip treaptă a referinţei de viteză de la 0rad/s la 200rad/s şi o durată a simulării de 0.5s, suficientă pentru a se atinge regimul staţionar, abaterea rădăcină medie pătratică (RMSD – Root Mean Square Deviation) de viteză (între viteza motorului controlată de sistemul discret şi viteza controlată de sistemul continuu) este de aproximativ 0.25rad/s. Abaterea RMSD pentru curentul pe axa q este de aproximativ 0.008A. S-au efectuat simulări cu diferite formate de reprezentare pentru semnalele interne, cu precizii diferite. S-a constatat faptul că creşterea preciziei la mai mult de 18 biţi nu aduce avantaje vizibile, erorile de cuantizare fiind mult sub celelalte efecte ale procesului de discretizare. Scăderea perioadei de eşantionare ar îmbunătăţi comportarea sistemului discret, însă aceasta este limitată datorită pierderilor de comutaţie din puntea invertoare.

Deşi blocurile System Generator sunt direct sintetizabile în hardware pe FPGA, iar sistemul de control rezultat în FPGA ar avea exact aceeaşi comportare ca şi cel simulat (simularea fiind precisă la nivel de bit şi ciclu de tact), algoritmul nu poate fi implementat direct în această formă din două motive:

1. Algoritmul are nevoie de un semnal de tact cu frecvenţa de 20kHz, obţinut din semnalul de tact global al sistemului de 50MHz; valorile de ieşire ale algoritmului sunt verificate să fie valide sincron cu acest semnal de tact. Desigur, rezultatele sunt valide mult mai repede, în funcţie de timpul de propagare pe nivelurile de logică combinaţională ce implementează algoritmul, dar restul sistemului (în speţă, algoritmul de modulaţie SVM) ar trebui să se asigure că citeşte date valide. În plus, nu este recomandat să se folosească mai multe semnale de tact într-un sistem digital implementat pe FPGA, atât din cauza problemelor de sincronizare, cât, mai ales, din cauza structurii dispozitivului FPGA, ce prevede trasee globale de rutare a tactului (în cazul în care există mai multe semnale de tact, doar unul va putea folosi traseele speciale, celelalte trebuind să folosească trasee de uz general, nepotrivite pentru această utilizare).

2. În această formă, algoritmul de control va utiliza resurse hardware independente pentru toate operaţiile. În vreme ce acest lucru nu reprezintă o problemă majoră în ceea ce priveşte operaţiile logice sau cele de adunare/scădere, este un inconvenient serios atunci când vine vorba despre resurse hardware limitate, ca multiplicatoarele integrate sau blocurile de memorie RAM. În plus, multe operaţii depind de rezultatele altor operaţii, deci ar putea folosi secvenţial acelaşi hardware.

Din aceste motive, algoritmul a fost factorizat şi transformat într-un automat sincron pilotat de semnalul de tact global, păstrând totuşi un grad înalt de paralelism pentru a asigura un timp de execuţie foarte scurt.

6.5 Factorizarea şi implementarea algoritmului de control Scopul procesului de factorizare este acela de a reorganiza algoritmul astfel încât să se

utilizeze doar 4 multiplicatoare. Celelalte operaţii vor fi efectuate de circuite hardware independente, dar multiplicatoarele reprezintă o resursă critică în dispozitivele FPGA de cost scăzut. De obicei, factorizarea se realizează folosind graful de fluenţă a datelor (DFG – Data Flow Graph). Pentru algoritmul prezentat, graful de fluenţă este foarte complex, aşa că această metodă este greu de aplicat. S-a folosit în schimb o metodă mai simplă şi intuitivă: multiplicatoarele din fiecare bloc funcţional implementat cu resurse System Generator au fost reprezentate şi aliniate vertical în funcţie de fluxul de date din bloc, iar blocurile au fost aliniate în funcţie de dependenţa de date dintre ele. Astfel, a rezultat reprezentarea din Fig. 6.11.

Page 66: SISTEME ÎNCORPORATE CU FPGA PENTRU · PDF fileSISTEME ÎNCORPORATE CU FPGA PENTRU CONTROLUL PROCESELOR RAPIDE - REZUMATUL TEZEI DE DOCTORAT - ... POSDRU/6/1.5/S/9, ID 6681, este un

64

Înmulţirile din blocul de decuplare între axe au fost aliniate cu cele din blocul regulatorului de viteză pentru a sublinia posibilitatea grupării lor împreună. Din Fig. 6.11 este evident că algoritmul poate folosi eficient 4 multiplicatoare, păstrând un grad înalt de paralelism. Deşi regulatorul de viteză nu are nevoie de valorile curenţilor, ieşirea lui nu poate fi folosită înainte ca acestea să fie disponibile. Aşadar, înmulţirile din regulatorul PI-P pot fi grupate împreună cu cele din blocul de decuplare între axe fără a afecta timpul total de execuţie.

Figura 6.11. Reprezentarea grafică pentru factorizarea înmulţirilor. Problema principală asociată cu utilizarea în comun a multiplicatoarelor de către mai

multe blocuri funcţionale constă în creşterea complexităţii căii de date şi a circuitului de control al ei. Astfel, fiecare din cele 2 intrări ale fiecărui multiplicator va fi conectată la un multiplexor 6 la 1. Cele 6 intrări corespund celor 6 utilizări posibile ale multiplicatorului. Circuitul de control al căii de date va controla intrările de selecţie ale multiplexoarelor şi va salva valorile selectate în registrele de intrare ale multiplicatoarelor. Fiecare celulă de multiplicare va avea deci structura din Fig. 6.12. Ieşirea multiplicatorului se distribuie la toate blocurile funcţionale ce-l utilizează.

Circuitul de control al căii de date este responsabil cu salvarea rezultatului înmulţirii în blocul funcţional potrivit prin validarea registrului corespunzător. Ca şi în cazul modulatoarelor prezentate în primele secţiuni, circuitul de control al căii de date este o maşină de stări de tip Moore. Aceasta rămâne în starea 0 (zero) până când este activată, apoi trece necondiţionat dintr-o stare în alta. În fiecare stare se activează una sau două variabile de stare şi se setează o anume combinaţie de selecţie pentru multiplexoarele celulelor de multiplicare. Circuitul de control nu face decât să secvenţieze operaţiile din blocurile funcţionale. Operaţii asociate cu unele blocuri se suprapun cu operaţii asociate altor blocuri, executându-se în paralel de către resurse hardware independente.

Figura 6.12. Celula de multiplicare ce permite utilizarea în comun a multiplicatorului. Blocurile funcţionale au fost transformate prin inserarea de registre după fiecare operaţie.

Registrele sunt controlate prin intermediul intrării de validare de către circuitul de control al căii de date. Astfel, fluxul de date al algoritmului este controlat sincron cu semnalul de tact global al sistemului. În 7 din cele 25 de stări ale automatului apar suprapuneri între blocuri, deci paralelism în execuţie.

Pentru exemplificare, în Fig. 6.14 este prezentat regulatorul de viteză PI-P. Se observă (cu magenta) legăturile (de tip „go to”) către şi de la celulele de multiplicare 1 şi 2. Aşa cum rezultă din Fig. 6.11, celulele de multiplicare 3 şi 4 (şi 2 în pasul secund) sunt folosite în acelaşi timp de către blocul de decuplare între axe. Se mai observă semnalele (tot de tip „go to”, cu albastru deschis) de la circuitul de control al căii de date. În Fig. 6.14 sunt două căi de date orizontale. Cea de mai jos se află din punct de vedere al fluxului de date în continuarea celei de mai sus. Cea mai de sus reprezintă regulatorul PI şi implementează (6.48). Semnalul de intrare de eroare este calculat ca diferenţa între semnalul de referinţă pentru viteză şi valoarea măsurată a vitezei. Apoi, valoarea actuală a erorii şi valoarea de la momentul anterior de eşantionare sunt

Page 67: SISTEME ÎNCORPORATE CU FPGA PENTRU · PDF fileSISTEME ÎNCORPORATE CU FPGA PENTRU CONTROLUL PROCESELOR RAPIDE - REZUMATUL TEZEI DE DOCTORAT - ... POSDRU/6/1.5/S/9, ID 6681, este un

65

înmulţite cu factorii corespunzători din (6.48) folosind celulele de multiplicare 1 şi 2. Se folosesc blocuri de tip “Reinterpret” pentru a face reprezentarea numerelor transparentă pentru multiplicatoare, deoarece reprezentarea numerelor (poziţia virgulei fixe) diferă între blocurile funcţionale ce folosesc aceleaşi celule de multiplicare. De aceea, fiecare bloc trebuie să transmită celulelor de multiplicare numere întregi fără virgulă şi să reinterpreteze rezultatul înmulţirii poziţionând corect virgula. Rezultatele înmulţirilor sunt adunate între ele, iar rezultatului i se adună valoarea ieşirii de la momentul anterior de eşantionare. În final, ieşirea regulatorului PI, având însemnătatea fizică de viteză intermediară, este salvată în registrul Reg6. Calea de date din partea de jos este regulatorul P. Acesta calculează eroarea de viteză intermediară folosind viteza măsurată şi ieşirea regulatorului PI, apoi o înmulţeşte cu factorul de amplificare şi o salvează în registrul Reg8. Regulatorul P foloseşte tot celula de multiplicare 1. Toate operaţiile sunt secvenţiate de semnalele provenite de la circuitul de control al căii de date, grupate în partea din stânga a Fig. 6.14. Aceeaşi idee este folosită în toate blocurile funcţionale.

Figura 6.14. Implementarea în Simulink a regulatorului PI-P de viteză.

Algoritmul de control al vitezei pentru motorul PMSM se execută în doar 25 cicli de tact. În această fază, sistemul de control din Simulink poate fi implementat direct în FPGA,

fiind sincron cu semnalul de tact global. Sistemul de control poate fi şi simulat, rezultatele simulării validând corectitudinea paşilor de factorizare şi conceptul cale de date/automat de control. Totuşi, simularea în acest caz va dura foarte mult şi va fi imposibilă urmărirea unui număr mare de semnale, datorită pasului de simulare foarte fin, impus de perioada semnalului de tact global. Cum însă factorizarea nu afectează în niciun fel precizia algoritmului, nu ar trebui să existe diferenţe în comportarea sistemului faţă de pasul anterior.

6.6 Interfaţarea senzorilor 6.6.1 Senzorii de curent Schema de măsurare a curenţilor folosită în standul experimental se bazează pe

măsurarea căderii de tensiune pe rezistoare înseriate cu tranzistoarele inferioare ale punţii invertoare trifazate. Deşi simplă şi economică din punctul de vedere al hardware-ului, ea necesită o sincronizare precisă între momentele de măsurare şi starea punţii invertoare. Pe scurt, algoritmul trebuie să se asigure că, în momentul eşantionării, curenţii prin partea inferioară a punţii sunt chiar curenţii ce trec prin înfăşurările motorului. Aceasta înseamnă că ar trebui să se măsoare curenţii exact în timpul aplicării vectorului spaţial nul 000 de către modulatorul SVM. Cel mai potrivit moment de eşantionare ar fi chiar vârful de jos al semnalului purtător PWM (triunghiular) utilizat în SVM.

Sincronizarea exactă cu vârful de jos al semnalului PWM este posibilă doar dacă eşantionarea se realizează în perioada de eşantionare anterioară celei în care se execută algoritmul de control. Această metodă este preferată în cazul implementării algoritmului de control pe procesoare (microcontroler sau DSP), deoarece durata de execuţie a algoritmului este comparabilă cu perioada de eşantionare. În cazul implementării pe FPGA, datorită eficienţei crescute a structurii de calcul proiectate special pentru aplicaţie, timpul de calcul este foarte mic

Page 68: SISTEME ÎNCORPORATE CU FPGA PENTRU · PDF fileSISTEME ÎNCORPORATE CU FPGA PENTRU CONTROLUL PROCESELOR RAPIDE - REZUMATUL TEZEI DE DOCTORAT - ... POSDRU/6/1.5/S/9, ID 6681, este un

66

în comparaţie cu perioada de eşantionare. Se va căuta deci folosirea în algoritm a valorilor curenţilor din aceeaşi perioadă de eşantionare. Acest lucru se poate realiza impunând o mică limitare amplitudinii vectorului spaţial, pentru a asigura o durată de timp suficientă în care se aplică vectorul nul 000.

Schema de măsurare a curentului printr-o fază a motorului este prezentată în Fig. 6.15. Căderea de tensiune pe rezistenţă este amplificată, apoi polarizată şi scalată pe placa punţii trifazate. Apoi este achiziţionată cu ajutorul unui convertor analog/numeric (CAN) cu interfaţă serială rapidă de tipul ADCS7476. S-a folosit un automat de stări pentru a implementa interfaţa serială cu convertorul şi pentru a secvenţia operaţiile aritmetice necesare transformării codului citit de la CAN în valoarea corespunzătoare a curentului.

Figura 6.15. Schema de măsurare a curentului printr-o fază a motorului. 6.6.2 Măsurarea unghiului şi a vitezei Măsurarea unghiului şi a vitezei se realizează prin intermediul unui codificator cu ieşiri în

cuadratură (QEP – Quadrature Encoded Pulse). Acesta se bazează pe doi detectori optici ce urmăresc o bandă cu 500 de linii. Numărul de linii stabileşte rezoluţia codificatorului. Avantajul codificatorului cu ieşiri QEP constă în faptul că se interfaţează direct cu circuite digitale şi oferă o rezoluţie destul de bună, cu costuri mai mici decât un codificator absolut sau decât un rezolver analogic. Totuşi, extragerea informaţiei de unghi şi viteză este ceva mai complicată. Aceasta se realizează însă eficient prin proiectarea de hardware dedicat implementat în FPGA.

Cum algoritmul de control nu necesită cunoaşterea unghiului (poziţiei) rotorului, ci foloseşte valorile funcţiilor trigonometrice sin şi cos aplicate unghiului pentru realizarea transformărilor de coordonate, ieşirile circuitului de măsurare a unghiului sunt de fapt valorile pentru sin şi cos. Acestea sunt determinate folosind o singură memorie ROM ce păstrează eşantioane ale funcţiei sin. Problema măsurării unghiului se reduce la acumularea numărului de impulsuri QEP folosind un numărător reversibil (bidirecţional). Direcţia de numărare este dată de un circuit de detecţie a direcţiei de rotaţie a motorului. Acesta stabileşte direcţia de rotaţie în funcţie de direcţia defazajului între cele două canale QEP. Cum motorul folosit în experimente are 2 perechi de poli, unghiul electric folosit în transformări va fi dublul unghiului mecanic măsurat, conform (6.37). Aşadar, ultimul bit al ieşirii numărătorului ce dă unghiul este ignorat la adresarea memoriei, aceasta necesitând un număr înjumătăţit de eşantioane. Deci, ţinând cont de rezoluţia codificatorului, memoria ROM necesită doar 1000 de locaţii, fiind implementată într-un singur bloc de memorie RAM pe FPGA. Rezoluţia eşantioanelor s-a ales de 18 biţi, ţinând cont de organizarea memoriei RAM în FPGA.

Circuitul de măsurare a unghiului este controlat de un automat Moore ce secvenţiază operaţiile necesare extragerii atât a eşantionului pentru sin, cât şi pentru cos. Memoria este accesată de două ori, mai întâi folosind o adresă derivată direct din ieşirea numărătorului, şi apoi folosind adresa modificată prin adunarea valorii 500, corespunzătoare unui defazaj de 90°. O serie de alte operaţii aritmetico-logice asigură comportarea corectă a circuitului şi atunci când apare depăşire la operaţia de obţinere a adresei pentru cos.

Măsurarea vitezei se bazează pe metoda măsurării perioadei dintre două fronturi consecutive ale semnalelor QEP. Această metodă este cunoscută în literatură [154] sub denumirea de metoda T, spre deosebire de metoda măsurării frecvenţei semnalelor QEP (metoda M) prin numărarea fronturilor ce apar într-o unitate de timp. Metoda M, folosită în studiul de caz din Subcapitolul 3.4.3 este mai puţin potrivită aici datorită faptului că perioada de eşantionare a sistemului de control este destul de mică, comparabilă cu perioada semnalelor QEP, ceea ce ar conduce la erori semnificative de măsurare [155]. La metoda T, erorile de măsurare sunt

Page 69: SISTEME ÎNCORPORATE CU FPGA PENTRU · PDF fileSISTEME ÎNCORPORATE CU FPGA PENTRU CONTROLUL PROCESELOR RAPIDE - REZUMATUL TEZEI DE DOCTORAT - ... POSDRU/6/1.5/S/9, ID 6681, este un

67

acceptabile pe întreaga plajă a vitezei motorului, ce este limitată la aproximativ 7000 de rotaţii pe minut (RPM).

Calcularea vitezei prin metoda T necesită o operaţie de împărţire. Aceasta a fost implementată folosind un nucleu IP din System Generator, Divider Generator 3.0. Operaţia de împărţire este destul de costisitoare în ceea ce priveşte timpul de execuţie, necesitând 30 de cicli de tact la o precizie a rezultatului de 18 biţi. Această latenţă nu va afecta însă timpul de execuţie al algoritmului de control, deoarece calcularea vitezei se realizează sincron cu apariţia fronturilor semnalelor QEP, nu cu începerea unei noi perioade de eşantionare pentru algoritmul de control. S-ar putea folosi un alt circuit, mai rapid, pentru operaţia de împărţire [157], însă Divider Generator 3.0 are avantajul integrării uşoare în restul sistemului proiectat cu System Generator şi al adaptării rapide la necesităţile computaţionale (număr de biţi ai operanzilor).

Circuitul de măsurare a vitezei, precum şi cel de calculare a funcţiilor trigonometrice asociate cu poziţia rotorului au fost implementate folosind tot Simulink şi System Generator şi verificate prin simulare separat, înainte de a fi integrate cu algoritmul de control.

6.7 Implementarea în FPGA şi rezultate experimentale Sistemul de control prezentat în paragrafele de mai sus a fost integrat cu modulatorul

SVM, sintetizat şi implementat într-un FPGA Spartan-3E XC3S500E. Pe lângă algoritmul de control şi hardware-ul de interfaţare cu senzorii, în FPGA s-a implementat şi un analizor logic virtual ChipScope, folosit pentru a captura semnalele interne ale sistemului. Nucleul ChipScope este pilotat de un semnal de tact cu frecvenţa de 20kHz, astfel că semnalele capturate pot fi folosite pentru a observa comportarea sistemului de control în perioadele de eşantionare.

Sistemul de control proiectat este sincron, folosind un semnal de tact de 50MHz. Algoritmul de control are nevoie de 25 de cicli de tact pentru a-şi termina execuţia, iar algoritmul SVM de 8 cicli de tact. Aceasta înseamnă că toate calculele, începând cu transformările de axe, continuând cu regulatoarele şi sfârşind cu modulaţia SVM, sunt efectuate în doar 33 de cicli de tact, adică în 0.66μs. Totuşi, ţinând cont că achiziţia valorilor curenţilor se face folosind un CAN cu interfaţă serială, iar citirea acestuia necesită 74 de cicli de tact, timpul total de execuţie a unei iteraţii a algoritmului este de 107 cicli de tact, adică 2.14μs. Acesta este totuşi foarte scurt faţă de perioada de eşantionare de 50μs. Datorită timpului foarte scurt de execuţie a algoritmului de control, achiziţia datelor, prelucrarea şi aplicarea comenzii se pot efectua în aceeaşi perioadă de eşantionare. Acest lucru este cu deosebire important datorită metodei de măsurare a curenţilor prin motor: aceştia pot fi măsuraţi doar pe perioada aplicării vectorului nul 000 de către modulatorul SVM. Aşadar, pentru a putea executa algoritmul de control în aceeaşi perioadă de eşantionare cu achiziţia curenţilor, vectorul nul 000 trebuie aplicat pe întreaga durată a acestor operaţii. Datorită faptului că operaţiile durează foarte puţin (mai puţin de 5% din perioada de eşantionare) limitarea impusă amplitudinii vectorului spaţial (astfel încât durata aplicării vectorului nul 000 să acopere timpul de efectuare a operaţiilor) este foarte mică, neafectând comportarea per ansamblu a sistemului de reglare a vitezei.

Resursele ocupate de către sistemul de control implementat pe FPGA sunt prezentate în Tabelul 6.1. Frecvenţa maximă la care poate lucra circuitul este de 77MHz.

Tabelul 6.1. Resursele ocupate în Spartan-3E XC3S500E de sistemul de control al vitezei.

LUT-uri Bistabili de tip D Felii logice Multiplicatoare Blocuri RAM 2679 din 9312

(28%) 2655 din 9312

(29%) 2211 din 4656

(48%) 11 din 20

(55%) 1 din 20 (5%)

După implementare, sistemul de control a fost testat experimental folosind o punte invertoare trifazată Technosoft PM50 şi un motor PMSM Pittman 3441 de 19.1V. Ca şi validarea prin simulare, testarea experimentală s-a efectuat în 2 paşi. Mai întâi s-a verificat comportarea regulatoarelor de curent prin întreruperea buclei de control a vitezei şi impunerea unei referinţe de curent. Răspunsul sistemului la o schimbare de tip treaptă a referinţei de curent pe axa q, de la 0A la 0.75A este prezentat în Fig. 6.17, aşa cum a fost capturat de analizorul ChipScope pe

Page 70: SISTEME ÎNCORPORATE CU FPGA PENTRU · PDF fileSISTEME ÎNCORPORATE CU FPGA PENTRU CONTROLUL PROCESELOR RAPIDE - REZUMATUL TEZEI DE DOCTORAT - ... POSDRU/6/1.5/S/9, ID 6681, este un

68

FPGA şi reprezentat grafic pe calculator folosind software-ul ChipScope Pro Analyzer. Se observă răspunsul caracteristic unui sistem de ordinul I, cu un timp de creştere de aproximativ 0.8ms, în perfectă concordanţă cu rezultatele obţinute la simulare.

În Fig. 6.18 este prezentată comportarea sistemului de reglare a curentului la o schimbare a referinţei de la +0.25A la -0.5A. Se observă că curentul controlat, cel de pe axa q, reprezentat cu verde, urmăreşte referinţa (reprezentată cu roşu). Curenţii prin cele trei înfăşurări au forme de undă sinusoidale. Se observă că forţarea unei valori negative a curentului pe axa q provoacă schimbarea direcţiei de rotaţie a motorului, deductibilă din formele de undă ale curenţilor pe cele 3 faze.

Figura 6.17. Răspunsul sistemului la o treaptă de curent.

Figura 6.18. Curenţii pe cele trei faze şi curentul pe axa q la o treaptă negativă a referinţei.

După ce s-a verificat funcţionarea corectă a regulatoarelor de curent, s-a închis bucla de control al vitezei şi s-a testat întregul sistem. În Fig. 6.19 este prezentată comportarea sistemului la aplicarea unei trepte pe semnalul de referinţă a vitezei de la 200rad/s la 400rad/s. Se observă caracteristica unui sistem de ordin II cu poli reali, cu un timp de creştere de aproximativ 15ms, în perfectă concordanţă cu rezultatele obţinute prin simulare (a se vedea Fig. 6.8).

Aşadar, sistemul de control implementat fizic respectă întru totul comportarea sistemului modelat şi simulat în Simulink. Acest lucru confirmă validitatea metodei de proiectare propusă de această lucrare: proiectarea în Simulink, folosind blocuri System Generator, a sistemelor de control implementate în FPGA.

Figura 6.19. Răspunsul sistemului la o treaptă de viteză. 6.8 Concluzii Acest capitol conferă o finalitate celor precedente. Prin latura mai mult aplicativă

justifică prezentarea metodelor de proiectare din capitolele anterioare, utilizându-le în cel mai

Page 71: SISTEME ÎNCORPORATE CU FPGA PENTRU · PDF fileSISTEME ÎNCORPORATE CU FPGA PENTRU CONTROLUL PROCESELOR RAPIDE - REZUMATUL TEZEI DE DOCTORAT - ... POSDRU/6/1.5/S/9, ID 6681, este un

69

înalt grad. Prin complexitatea aplicaţiei alese şi rezultatele experimentale obţinute, justifică afirmaţiile emise privind locul dispozitivelor FPGA în proiectarea sistemelor de control automat moderne.

Meritele acestui capitol nu sunt legate doar de partea aplicativă, originală şi performantă. Trebuie subliniat faptul că paşii urmaţi în proiectarea sistemului de control al vitezei motorului PMSM constituie o metodologie de proiectare pentru orice sistem automat implementat în FPGA. Proiectarea în mediul Simulink a sistemului de reglare, apoi implementarea lui cu blocuri System Generator, factorizarea algoritmului şi proiectarea sistemului sincron după paradigma automat cu cale de date conduc în mod cert la obţinerea unui sistem de control funcţional şi performant. Avantajul principal al metodei este viziunea de ansamblu a sistemului ca întreg. Astfel, sistemul de control implementat în FPGA se poate simula împreună cu modele verificate, de librărie, ale proceselor controlate. Rafinarea algoritmului de control poate fi validată faţă de o implementare la nivel de principiu. Iar sistemul de control implementat în hardware pe FPGA se va comporta exact ca şi cel simulat.

Prin exemplele prezentate, s-au pus în evidenţă clar avantajele folosirii dispozitivelor FPGA faţă de sistemele cu procesor (microcontroler sau DSP):

• În FPGA se pot implementa circuite hardware specifice aplicaţiei, care să efectueze eficient anumite operaţii (de exemplu, circuitele de interfaţare cu semnalele QEP, de măsurare a vitezei, de obţinere a funcţiilor trigonometrice).

• În FPGA se poate profita din plin de paralelismul inerent algoritmului de implementat, scurtându-se la minimum timpul de execuţie.

• În FPGA, precizia cu care se efectuează calculele este la latitudinea proiectantului, nefiind supusă constrângerilor legate de o arhitectură fixă de procesare.

De altfel, chiar atunci când se foloseşte un procesor DSP pentru implementarea algoritmului de control, acesta trebuie de obicei asistat de un circuit logic programabil, adesea CPLD, pentru implementarea unor structuri hardware complementare, a căror funcţionalitate nu poate fi obţinută prin software. De exemplu, în [160] se foloseşte un CPLD pentru inserarea timpului mort în comanda tranzistoarelor.

Aşa cum rezultă din exemplul sistemului de control al vitezei motorului PMSM, timpul de execuţie obţinut pentru algoritm este extraordinar de scurt, valoarea mărimii de comandă fiind obţinută aproape instantaneu. Acest lucru conduce la posibilitatea creşterii frecvenţei de eşantionare, deci a lăţimii de bandă a sistemului de control. Totuşi, frecvenţa de eşantionare se poate să fie limitată de alţi factori din sistem, cum este frecvenţa de comutaţie a tranzistoarelor de putere în aplicaţia prezentată. Chiar în acest caz, timpul de execuţie scurt se dovedeşte extraordinar de avantajos.

Deşi există numeroase alte implementări ale unor algoritmi asemănători în FPGA, după cum se poate vedea din secţiunea 2.4, cea prezentată aici este originală şi avantajoasă din mai multe puncte de vedere:

• Foloseşte un număr redus de multiplicatoare; spre exemplu, abordările prezentate în [41], [42], [50] utilizează numere de ordinul zecilor de multiplicatoare pentru implementarea algoritmului, în vreme ce sistemul dezvoltat aici foloseşte doar 4;

• Propune o abordare integrată în Simulink pentru proiectare, validare şi definitivare a conceptului după paradigma FSMD;

• Foloseşte o versiune optimizată din punctul de vedere al cerinţelor computaţionale a algoritmului de modulaţie SVM, foarte eficientă la implementare în FPGA;

• Foloseşte o schemă hardware avantajoasă din punctul de vedere al costurilor pentru măsurarea curenţilor, impunând o mică limitare algoritmului SVM.

Sistemul de control al vitezei motorului PMSM va fi publicat în [161].

Page 72: SISTEME ÎNCORPORATE CU FPGA PENTRU · PDF fileSISTEME ÎNCORPORATE CU FPGA PENTRU CONTROLUL PROCESELOR RAPIDE - REZUMATUL TEZEI DE DOCTORAT - ... POSDRU/6/1.5/S/9, ID 6681, este un

70

7. Concluzii generale Această lucrare abordează domeniul proiectării sistemelor de control pentru motoare

electrice folosind dispozitive FPGA, domeniu de mare actualitate, situat la confluenţa dintre automatică, inginerie electrică şi ingineria calculatoarelor. Pe parcursul elaborării lucrării s-au încercat diferite unelte şi metode de proiectare pentru FPGA, începând de la metodele clasice bazate pe captură de schemă logică şi descriere în limbaj HDL şi terminând cu metodele moderne bazate pe mediul Simulink. De asemenea, s-au combinat aceste metode de proiectare şi s-au utilizat unelte de simulare multiple. S-au definit şi abordat diferite studii de caz în controlul motoarelor electrice, de complexităţi diferite, folosind ca pretexte pentru explorarea spaţiului de proiectare. Toate problemele de proiectare propuse au fost finalizate prin realizarea de bancuri experimentale (cu unelte de laborator didactic, de performanţe şi costuri reduse, dar perfect valide) şi verificarea prin experimente reale a rezultatelor. Această multitudine de studii de caz rezolvate, culminând cu cel al controlului orientat după câmp al motorului sincron cu magneţi permanenţi, a condus la formularea unei metodologii de proiectare şi validare a sistemelor de control bazate pe FPGA, folosind mediul Simulink.

Deşi lucrarea are un pronunţat caracter aplicativ, ea aduce şi o serie de contribuţii teoretice:

• Prezentarea sintetică a arhitecturilor familiilor de dispozitive FPGA actuale ale principalilor 2 mari producători, Altera şi Xilinx;

• Realizarea unei treceri în revistă concludente a sistemelor de control pentru motoare electrice bazate pe FPGA din literatura recentă din domeniu;

• Prezentarea succintă a uneltei software Xilinx System Generator, ce permite proiectarea în mediul Simulink de structuri hardware implementabile în FPGA;

• Derivarea de structuri de tip filtru digital cu răspuns infinit la impuls pentru algoritmii de control deadbeat şi PI, structuri uşor de implementat în hardware;

• Sintetizarea din mai multe surse bibliografice a unor consideraţii privind optimizarea de structuri hardware pentru proiectarea de procesoare soft în FPGA;

• Analiza modulaţiei PWM sinusoidale cu injecţie de semnal triunghiular la punctul neutru din punctul de vedere al implementării în hardware;

• Analiza algoritmului de modulaţie bazată pe vectori spaţiali din punctul de vedere al implementării în hardware;

• Prezentarea succintă a modelării motorului sincron cu magneţi permanenţi în sistemul de coordonate rotitor sincron cu rotorul;

• Proiectarea unui sistem de control orientat după câmp pentru motorul PMSM, incluzând alegerea parametrilor regulatoarelor de curent şi viteză prin metoda alocării polilor;

• Proiectarea originală a algoritmului de control după paradigma automat cu cale de date;

• Trasarea unei metodologii de proiectare a sistemelor de control bazate pe FPGA urmărind paşii următori: modelarea în continuu, discretizarea şi evaluarea abaterii faţă de modelul continuu, factorizarea algoritmului de control, reproiectarea acestuia după paradigma automat cu cale de date, verificarea experimentală folosind un analizor logic “virtual”.

Dintre contribuţiile aplicative, merită amintite: • Realizarea unui sistem de control al vitezei motorului de curent continuu prin

includerea acestuia într-o buclă cu calare pe fază proiectată în mod original pe un dispozitiv FPGA;

• Realizarea în FPGA a unui sistem pentru controlul vitezei motorului de curent continuu bazat pe algoritmul deadbeat;

• Realizarea a diferite module hardware pentru controlul motorului de curent continuu fără perii, validarea acestora prin combinarea mai multor metode de

Page 73: SISTEME ÎNCORPORATE CU FPGA PENTRU · PDF fileSISTEME ÎNCORPORATE CU FPGA PENTRU CONTROLUL PROCESELOR RAPIDE - REZUMATUL TEZEI DE DOCTORAT - ... POSDRU/6/1.5/S/9, ID 6681, este un

71

simulare şi integrarea într-un sistem funcţional pe FPGA; • Realizarea unui sistem pe un cip FPGA conţinând atât elemente hardware, cât şi

software rulând pe procesoare soft; • Realizarea pe FPGA a unui modulator PWM sinusoidal cu injecţie de semnal

triunghiular la punctul neutru; s-a respectat principiul modularităţii, unele module fiind reutilizate ulterior;

• Realizarea pe FPGA a unui modulator bazat pe vectori spaţiali, optimizat din punctul de vedere al complexităţii computaţionale, toate calculele executându-se în doar 160ns;

• Reproiectarea etajului de ieşire al modulatorului astfel încât să se atingă o rezoluţie de 16 biţi;

• Validarea prin simulare a sistemului de control orientat după câmp pentru motorul PMSM atât în continuu, cât şi după discretizare;

• Factorizarea algoritmului de control şi implementarea sa ca automat cu cale de date;

• Proiectarea în FPGA de interfeţe originale pentru senzorii de curent şi de poziţie/viteză;

• Realizarea în FPGA a sistemului de control orientat după câmp pentru motorul PMSM, conţinând 4 bucle de reglare şi executându-se în doar 2.14µs.

Rezultatele obţinute au fost diseminate prin publicarea a 14 lucrări: [102], [103], [105], [109], [110], [111], [121], [122], [143], [144], [145], [146], [157], [161].

S-a atins, aşadar, prin rezultatele conexe acestei teze, scopul enunţat în titlul ei: acela de proiectare de sisteme de control încorporate pentru procese rapide folosind dispozitive FPGA. Deşi motorul electric nu are o dinamică foarte rapidă, având un timp de răspuns de ordinul milisecundelor, procesele electrice din motor sunt foarte rapide, cu timpi de răspuns de ordinul zecilor de microsecunde. La fel de importantă ca şi realizarea propriu-zisă a unui sistem de control performant este şi formularea unei metodologii de proiectare a sistemelor de control cu FPGA, metodologie bazată pe utilizarea software-ului System Generator pentru validare şi pe reproiectarea algoritmului de control după paradigma automat cu cale de date.

Având în vedere că dispozitivele FPGA evoluează mereu, puterea lor “virtuală” de calcul fiind fantastică, s-ar putea formula câteva direcţii de cercetare pe viitor:

• Abordarea unor metode de reglare bazate pe algoritmi şi mai complecşi, de exemplu algoritmi adaptivi pentru estimarea unor parametri necunoscuţi;

• Abordarea unor procese mai rapide, pur electrice, cum ar fi controlul convertoarelor DC-DC;

• Controlul multi-sistem; • Folosirea unor tehnici care să crească cantitatea de date procesate, cum ar fi

supraeşantionarea (oversampling).

8. Bibliografie selectivă [1] Highlights of IEEE Trans. on Industrial Electronics, available online:

http://tie.ieee-ies.org/tie/Highlights2.pdf. [2] De Carlo S., Reifman S.Z., Wang J.I., Zajac B., “Cele mai bune companii din

lume”, Forbes România, nr. 4, mai 2009. [4] Rodriguez-Andina J.J., Moure M.J., Valdes M.D., “Features, design tools and

application domains of FPGAs”, IEEE Transactions on Industrial Electronics, vol. 54, no. 4, august 2007.

[5] Woods R., McAllister J., Lightbody G., Yi Y., FPGA-based implementation of signal processing systems, John Wiley and Sons, 2008.

[7] Trimberger S., “Redefining the FPGA for the next generation”, International Conference on Field Programmable Logic and Applications, FPL 2007, Amsterdam, Olanda,

Page 74: SISTEME ÎNCORPORATE CU FPGA PENTRU · PDF fileSISTEME ÎNCORPORATE CU FPGA PENTRU CONTROLUL PROCESELOR RAPIDE - REZUMATUL TEZEI DE DOCTORAT - ... POSDRU/6/1.5/S/9, ID 6681, este un

72

august 2007. [11] Spartan 6 family overview, Xilinx, iunie 2009. [12] Spartan 6 FPGA configurable logic block user guide, Xilinx, iunie 2009. [13] Spartan 6 FPGA block RAM resources user guide, Xilinx, iunie 2009. [14] Spartan 6 FPGA DSP48A1 slice user guide, Xilinx, august 2009. [19] Monmasson E., Cirstea M.N., “FPGA design methodology for industrial control

systems – a review”, IEEE Transactions on Industrial Electronics, vol. 54, no. 4, august 2007. [23] Hilaire T., Menard D., Sentieys O., “Bit accurate roundoff noise analysis of fixed

point linear controllers”, IEEE International Symposium on Computer-Aided Control System Design, CACSD 2008, San Antonio, Texas, SUA, septembrie 2008.

[24] Grandpierre T., Lavarenne C., Sorel Y., “Optimized rapid prototyping for real-time embedded heterogeneous multiprocessors”, Proceedings of International Workshop on Hardware/Software Co-Design, CODES ’99, Roma, Italia, mai 1999.

[25] Dubey R., Agarwal P., Vasantha M.K., “Programmable logic devices for motion control – a review”, IEEE Transactions on Industrial Electronics, vol. 54, no. 1, februarie 2007.

[26] Naouar M.-W., Monmasson E., Naassani A.A., Slama-Belkhodja I., Patin N., “FPGA-based current controllers for AC machine drives – a review”, IEEE Transactions on Industrial Electronics, vol. 54, no. 4, august 2007.

[27] Cirstea M.N., Dinu A., “A VHDL holistic modeling approach and FPGA implementation of a digital sensorless induction motor control scheme”, IEEE Transactions on Industrial Electronics, vol. 54, no. 4, august 2007.

[28] Kung Y.-S., Tsai M.-H., “FPGA-based speed control IC for PMSM drive with adaptive fuzzy control”, IEEE Transactions on Power Electronics, vol. 22, no. 6, noiembrie 2007.

[29] Mic D., Oniga S., Micu E., Lung C., “Complete hardware / software solution for implementing the control of the electrical machines with programmable logic circuits”, Proceedings of the 11th International Conference on Optimization of Electrical and Electronic Equipment, OPTIM 2008, Braşov, Romania, mai 2008.

[30] Lis J., Kowalski C.T., Orlowska-Kovalska T., “Sensorless DTC control of the induction motor using FPGA”, Proceedings of the 2008 IEEE International Symposium on Industrial Electronics, ISIE 2008, Cambridge, UK, iunie-iulie 2008.

[31] Kung Y.-S., Fung R.-F., Tai T.-Y., “Realization of a motion control IC for x-y table based on novel FPGA technology”, IEEE Transactions on Industrial Electronics, vol. 56, no. 1, ianuarie 2009.

[32] Astarloa A., Lazaro J., Bidarte U., Jimenez J., Zuloaga A., “FPGA technology for multi-axis control systems”, Mechatronics, vol. 19, no. 2, martie 2009.

[33] Huang H.-C., Tsai C.-C., “FPGA implementation of an embedded robust adaptive controller for autonomous omnidirectional mobile platform”, IEEE Transactions on Industrial Electronics, vol. 56, no. 5, mai 2009.

[34] Sathyan A., Milivojevic M., Lee Y.-J., Krishnamurthy M., Emadi A., “An FPGA-based novel digital PWM control scheme for BLDC motor drives”, IEEE Transactions on Industrial Electronics, vol. 56, no. 8, august 2009.

[35] Idkhajine L., Prata A., Monmasson E., Naouar M.-W., “System on chip controller for electrical actuator”, Proceedings of the 2008 IEEE International Symposium on Industrial Electronics, ISIE 2008, Cambridge, UK, iunie-iulie 2008.

[36] Idkhajine L., Monmasson E., Naouar M.W., Prata A., Bouallaga K., “Fully integrated FPGA-based controller for synchronous motor drive”, IEEE Transactions on Industrial Electronics, vol. 56, no. 10, octombrie 2009.

[37] Das A., Banerjee K., “Fast prototyping of a digital PID controller on a FPGA based soft-core microcontroller for precision control of a brushed DC servo motor”, Proceedings of the 35th Annual Conference of the IEEE Industrial Electronics Society, IECON 2009, Porto, Portugalia, noiembrie 2009.

Page 75: SISTEME ÎNCORPORATE CU FPGA PENTRU · PDF fileSISTEME ÎNCORPORATE CU FPGA PENTRU CONTROLUL PROCESELOR RAPIDE - REZUMATUL TEZEI DE DOCTORAT - ... POSDRU/6/1.5/S/9, ID 6681, este un

73

[38] Ben Salem A.K., Ben Othman S., Ben Saoud S., Litayem N., “Servo drive system based on programmable SoC architecture”, Proceedings of the 35th Annual Conference of the IEEE Industrial Electronics Society, IECON 2009, Porto, Portugalia, noiembrie 2009.

[39] Litayem N., Ghrissi M., Ben Salem A.K., Ben Saoud S., “Designing and building embedded environment for robotic control application”, Proceedings of the 35th Annual Conference of the IEEE Industrial Electronics Society, IECON 2009, Porto, Portugalia, noiembrie 2009.

[40] Paiz C., Hagemeyer J., Pohl C., Porrmann M., Rueckert U., Schulz B., Peters W., Boecker J., “FPGA-Based Realization of Self-Optimizing Drive-Controllers”, Proceedings of the 35th Annual Conference of the IEEE Industrial Electronics Society, IECON 2009, Porto, Portugalia, noiembrie 2009.

[41] Carbone S., Delli Colli V., Di Stefano R., Figalli G., Marignetti F., “Design and implementation of high performance FPGA control for permanent magnet synchronous motor”, Proceedings of the 35th Annual Conference of the IEEE Industrial Electronics Society, IECON 2009, Porto, Portugalia, noiembrie 2009.

[42] Idkhajine L., Monmasson E., Maalouf A., “Fully FPGA-based sensorless control for AC drive using an Extended Kalman Filter”, Proceedings of the 35th Annual Conference of the IEEE Industrial Electronics Society, IECON 2009, Porto, Portugalia, noiembrie 2009.

[43] Hilairet M., Hannoun H., Marchand C., “Design of an optimized SRM control architecture based on a hardware/software partitioning”, Proceedings of the 35th Annual Conference of the IEEE Industrial Electronics Society, IECON 2009, Porto, Portugalia, noiembrie 2009.

[44] Ben Othman S., Ben Salem A.K., Ben Saoud S., “Hw acceleration for FPGA-based drive controllers”, Proceedings of the 2010 IEEE International Symposium on Industrial Electronics, ISIE 2010, Bari, Italia, iulie 2010.

[45] Ungurean A., Coroban-Schramel V., Boldea I., “Sensorless control of a BLDC PM motor based on I-f starting and Back-EMF zero-crossing detection”, Proceedings of the 12th International Conference on Optimization of Electrical and Electronic Equipment, OPTIM 2010, Braşov, Romania, mai 2010.

[46] Maragliano G., Marchesoni M., Vaccaro L., “FPGA Implementation of a Sensorless PMSM Drive Control Algorithm Based on Algebraic Method”, Proceedings of the 2010 IEEE International Symposium on Industrial Electronics, ISIE 2010, Bari, Italia, iulie 2010.

[47] Bahri I., Monmasson E., Verdier F., Ben Khelifa M.E.-A., “SoPC-based current controller for permanent magnet synchronous machines drive”, Proceedings of the 2010 IEEE International Symposium on Industrial Electronics, ISIE 2010, Bari, Italia, iulie 2010.

[48] de Castro R., Araujo R.E., Feitas D., “Reusable IP cores library for EV propulsion systems”, Proceedings of the 2010 IEEE International Symposium on Industrial Electronics, ISIE 2010, Bari, Italia, iulie 2010.

[49] Kung Y.-S., Huang C.-C., Huang L.-C., “FPGA-realization of a sensorless speed control IC for IPMSM drive”, Proceedings of the 36th Annual Conference of the IEEE Industrial Electronics Society, IECON 2010, Phoenix, Arizona, SUA, noiembrie 2010.

[50] Kedarisetti J., Mutschler P., “FPGA based control of quasi resonant DC-link inverter and induction motor drive”, Proceedings of the 2011 IEEE International Symposium on Industrial Electronics, ISIE 2011, Gdansk, Polonia, iunie 2011.

[57] Idkhajine L., Monmasson E., Maalouf A., “Extended Kalman filter for AC drive sensorless speed controller - FPGA-based solution or DSP-based solution”, Proceedings of the 2010 IEEE International Symposium on Industrial Electronics, ISIE 2010, Bari, Italia, iulie 2010.

[58] Monmasson E., Idkhajine L., Cirstea M.N., Bahri I., Tisan A., Naouar M.W., “FPGAs in industrial control applications”, IEEE Transactions on Industrial Informatics, vol. 7, no. 2, mai 2011.

Page 76: SISTEME ÎNCORPORATE CU FPGA PENTRU · PDF fileSISTEME ÎNCORPORATE CU FPGA PENTRU CONTROLUL PROCESELOR RAPIDE - REZUMATUL TEZEI DE DOCTORAT - ... POSDRU/6/1.5/S/9, ID 6681, este un

74

[72] Dubey R., Introduction to embedded system design using field programmable gate arrays, London: Springer Verlag, 2009.

[73] Pellerin D., Thibault S., Practical FPGA programming in C, Prentice Hall, 2005. [74] Kamat R.K., Shinde S.A., Shelake V.G., Unleash the system on chip using

FPGAs and Handel C, Springer, 2009. [77] Hansselmann H., Kiffmeier U., Koester L., Meyer M., Ruekgauer A., “Production

quality code generation from Simulink block diagrams”, Proceeding of the 1999 IEEE International Symposium on Computer Aided Control System Design, CACSD 1999, Kohala Coast, Hawaii, SUA, august 1999.

[80] Chu P.P., FPGA prototyping by Verilog examples, John Wiley and Sons, 2008. [82] Onea A., Prelucrarea semnalelor, Politehnium, 2006. [85] System Generator for DSP reference guide, v11.4, Xilinx, decembrie 2009. [87] Costas L., Colodron P., Rodriguez-Andina J.J., Farina J., Chow M.-Y., “Analysis

of two FPGA design methodologies applied to an image processing system”, Proceedings of the 2010 IEEE International Symposium on Industrial Electronics, ISIE 2010, Bari, Italia, iulie 2010.

[93] Machida H., Kobayashi F., “PLL/PID motor control system by using time-domain operation of PWM signal”, Proceedings of the International Conference on Instrumentation, Control and Information Technology, SICE Annual Conference 2007, Kagawa, Japonia, septembrie 2007.

[97] Best R.E., Phase-locked loops: design, simulation and applications, McGraw-Hill, 5th Edition, 2003.

[101] Adkins C.A., Marra M.A., Walcott B.L., “Modified phase-frequency detector for improved response of PLL servo controller”, Proceedings of the 2002 American Control Conference, Anchorage, Alaska, SUA, mai 2002.

[102] Alecsa B., Onea A., “An FPGA implementation of an all digital phase locked loop for control applications”, Proceedings of IEEE 5th International Conference on Intelligent Computer Communication and Processing, ICCP 2009, Cluj-Napoca, România, august 2009.

[103] Alecsa B., Onea A., “A FPGA implementation of a phase locked loop for DC motor control”, Buletinul Institutului Politehnic din Iaşi, Tomul LV(LIX), Fasc. 1, 2009, Secţia Automatică şi Calculatoare.

[104] Proakis J., Manolakis D., Digital signal processing: principles, algorithms, and applications, 3rd Edition, Prentice-Hall, 1996.

[105] Alecsa B.C., Onea A., “An FPGA implementation of the time domain deadbeat algorithm for control applications”, Proceedings of IEEE Norchip 2009, Trondheim, Norvegia, noiembrie 2009.

[107] ChipScope Pro 12.1 software and cores user guide, Xilinx, aprilie 2010. [108] Mic D., Contribuţii la dezvoltarea unui mediu integrat hardware-software pentru

controlul motoarelor electrice cu circuite logice programabile, teză de doctorat, Universitatea “Transilvania” din Braşov, 2007.

[109] Alecsa B., Onea A., “An FPGA implementation of a brushless DC motor speed controller”, Proceedings of 2010 IEEE 16th International Symposium for Design and Technology in Electronic Packaging, SIITME 2010, Piteşti, România, septembrie 2010.

[110] Alecsa B., Onea A., “Design, validation and FPGA implementation of a brushless DC motor speed controller”, Proceedings of the 17th IEEE International Conference on Electronics, Circuits, and Systems, ICECS2010, Atena, Grecia, decembrie 2010.

[111] Alecsa B., Onea A., “Output analysis of digital interface plants based on FPGA rapid prototyping”, Proceedings of the 14th International Conference on System Theory and Control, ICSTC 2010, Sinaia, România, octombrie 2010.

[112] Nurmi J. (editor), Processor design: system-on-chip computing for ASICs and FPGAs, Dordrecht: Springer, 2007.

[113] Nios II Processor Reference Handbook, Altera, 2010.

Page 77: SISTEME ÎNCORPORATE CU FPGA PENTRU · PDF fileSISTEME ÎNCORPORATE CU FPGA PENTRU CONTROLUL PROCESELOR RAPIDE - REZUMATUL TEZEI DE DOCTORAT - ... POSDRU/6/1.5/S/9, ID 6681, este un

75

[118] Yu P., Schaumont P., “Executing hardware as parallel software for PicoBlaze networks”, Proceedings of International Conference on Field Programmable Logic and Applications, FPL‘06, Madrid, Spania, august 2006.

[119] Oniga S., Tisan A., Lung C., Buchman A., Orha I., “Adaptive hardware-software co-design platform for fast prototyping of embedded systems”, Proceedings of the 12th International Conference on Optimization of Electrical and Electronic Equipment, OPTIM2010, Braşov, România, mai 2010.

[120] Lung C., Sabou S., Orha I., Buchman A., “ZigBee smart sensors networks”, Proceedings of 2010 IEEE 16th International Symposium for Design and Technology in Electronic Packaging, SIITME 2010, Piteşti, România, septembrie 2010.

[121] Alecsa B., Radu B., Onea A., Bârleanu A., “A FPGA implementation of an active noise cancellation system”, Proceedings of the 14th International Conference on System Theory and Control, ICSTC 2010, Sinaia, România, octombrie 2010.

[122] Alecsa B., Onea A., “Combined hardware-software approach for BLDC motor speed controller design”, Proceedings of the International Conference on Mechanical Engineering, Robotics and Aerospace, ICMERA 2010, Bucureşti, România, decembrie 2010.

[124] Teroerde G., Electrical drives and control techniques, Leuven: Academische Cooperative Vennootschap, 2004.

[125] Hava A., Kerkman R., Lipo T., “Simple analytical and graphical methods for carrier-based PWM-VSI drives”, IEEE Transactions on Power Electronics, vol. 14, no. 1, ianuarie 1999.

[126] Spartan-3E family: complete data sheet, Xilinx, 2008. [127] Ioan A.D., Contribuţii la implementarea structurilor hardware cu circuite

numerice programabile CPLD şi FPGA, teză de doctorat, Universitatea Tehnică “Gheorghe Asachi” din Iaşi, 2010.

[128] Ioan A.D., “New techniques for implementation of hardware algorithms inside FPGA circuits”, Advances in Electrical and Computer Engineering, Vol. 10, No. 2, 2010.

[129] Cirstea M.N., Dinu A., Khor J.G., McCormick M., Neural and fuzzy logic control of drives and power systems, Elsevier, 2002.

[130] Cardarilli G.C., D’Alessio M., Di Nunzio L., Fazzolari R., Murgia D., Re M., “FPGA implementation of a low-area/high-SFDR DDFS architecture”, Proceedings of the 10th International Symposium on Signals, Circuits and Systems, ISSCS 2011, Iaşi, România, iunie-iulie 2011.

[131] Schaumont P.R., A practical introduction to hardware/software codesign, Springer, 2010.

[133] Quang N.P., Dittrich J.-A., Vector control of three-phase AC machines, Berlin: Springer, 2008.

[134] Filho N.P., Pinto J.O.P., Silva L.E.B., Bose B.K., “A simple and ultra-fast DSP-based space vector PWM algorithm and its implementation on a two-level inverter covering undermodulation and overmodulation”, Proceedings of the 30th Annual Conference of the IEEE Industrial Electronics Society, IECON 2004, Busan, Coreea de Sud, noiembrie 2004.

[136] Pongiannan R.K., Yadaiah N., “FPGA based space vector PWM control IC for three phase induction motor drive”, Proceedings of 2006 IEEE International Conference on Industrial Technology, ICIT 2006, Mumbai, India, decembrie 2006.

[138] Zhou K., Wang D., “Relationship between space-vector modulation and three-phase carrier-based PWM: a comprehensive analysis”, IEEE Tansactions on Industrial Electronics, vol. 49, no. 1, februarie 2002.

[139] Quintero J., Sanz M., Barrado A., Lazaro A., “FPGA based digital control with high-resolution synchronous DPWM and high-speed embedded A/D converter”, Proceedings of 24th Annual IEEE Applied Power Electronics Conference and Exposition, APEC 2009, Washington, DC, SUA, februarie 2009.

[140] Scharrer M., Halton M., Scanlan T., “FPGA-based digital pulse width modulator

Page 78: SISTEME ÎNCORPORATE CU FPGA PENTRU · PDF fileSISTEME ÎNCORPORATE CU FPGA PENTRU CONTROLUL PROCESELOR RAPIDE - REZUMATUL TEZEI DE DOCTORAT - ... POSDRU/6/1.5/S/9, ID 6681, este un

76

with optimized linearity”, Proceedings of 24th Annual IEEE Applied Power Electronics Conference and Exposition, APEC 2009, Washington, DC, SUA, februarie 2009.

[141] Navarro D., Barragan L.A., Artigas J.I., Urriza I., Lucia O., Jimenez O., “FPGA-based high resolution synchronous digital pulse width modulator”, Proceedings of IEEE International Symposium on Industrial Electronics, ISIE 2010, Bari, Italia, iulie 2010.

[142] Idkhajine L., Fully FPGA-based sensorless control for synchronous AC drive using an extended Kalman filter, teză de doctorat, Universitatea Cergy Pontoise, Franţa, 2010.

[143] Alecsa B, Onea A., Cirstea M., “An efficient FPGA implementation of the space vector modulation algorithm”, Proceedings of the 10th International Symposium on Signals, Circuits and Systems, ISSCS2011, Iaşi, România, iunie-iulie 2011.

[144] Alecsa B., Onea A., “An optimized FPGA implementation of the modified space vector modulation algorithm for AC drives control”, Proceedings of 21st International Conference on Field Programmable Logic and Applications, FPL2011, Chania, Grecia, septembrie 2011.

[145] Alecsa B., Ioan A., “FPGA implementation of a sinusoidal PWM generator with zero sequence insertion”, Proceedings of the 7th International Symposium on Advanced Topics in Electrical Engineering, ATEE2011, Bucureşti, România, mai 2011.

[146] Alecsa B., Tisan A., Cirstea M., “High resolution 6 channels pulse width modulator for FPGA-based AC motor control”, Proceedings of 2011 International Conference on Applied Electronics, AE2011, Pilsen, Cehia, septembrie 2011.

[147] Krause P., Wasynczuk O., Sudhoff S., Analysis of electrical machinery and drive systems, 2nd Edition, IEEE Press, 2002.

[149] Krishnan R., Permanent magnet synchronous and brushless DC motor drives, Boca Ratorn: CRC Press, Taylor and Francis Group, 2010.

[150] Naouar W., Naasani A., Monmasson E., Slama Belkhodja I., “FPGA-based speed control of synchronous machine using a P-PI controller”, Proceedings of 2006 IEEE International Symposium on Industrial Electronics, ISIE’06, Montreal, Canada, iulie 2006.

[153] Boldea I., Nasar S.A., Electric drives, 2nd edition, Boca Raton: CRC Press, Taylor and Francis Group, 2006.

[154] Tsuji T., Hashimoto T., Kobayashi H., Mizuoki M., Ohnishi K., “A wide-range velocity measurement method for motion control”, IEEE Transactions on Industrial Electronics, vol. 56, no. 2, februarie 2009.

[155] Petrella R., Tursini M., Peretti L., Zigliotto M., “Speed measurement algorithms for low-resolution incremental encoder equipped drives: a comparative analysis”, Proceedings of 2007 International Aegean Conference on Electrical Machines and Power Electronics, ACEMP’07, Bodrum, Turkey, septembrie 2007.

[157] Alecsa B.C., Ioan A.D., “FPGA implementation of a matrix structure for integer division”, Proceedings of the 3rd International Symposium on Electrical and Electronics Engineering, Galaţi, România, septembrie 2010.

[160] Răţoi M.C., Contribuţii la perfecţionarea comenzii sistemelor de acţionare electrică cu motoare de curent alternativ, teză de doctorat, Universitatea Tehnică “Gheorghe Asachi” din Iaşi, 2010.

[161] Alecsa B., Cirstea M., Onea A., “Holistic modeling and FPGA implementation of a PMSM speed controller”, Proceedings of the 37th Annual Conference of the IEEE Industrial Electronics Society, IECON 2011, Melbourne, Australia, noiembrie 2011, acceptată spre prezentare.