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

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

UNIUNEA EUROPEANĂ GUVERNUL ROMÂNIEI MINISTERUL MUNCII.856. Proiectul „Burse Doctorale .15 RON Beneficiar: Universitatea Tehnică “Gheorghe Asachi” din Iaşi Partener: Universitatea “Vasile Alecsandri” din Bacău Director proiect: Prof. ing. ing.cu impact asupra creşterii atractivităţii şi motivaţiei pentru cariera în cercetare”. Carmen TEODOSIU Responsabil proiect partener: Prof. univ.O Investiţie în Inteligenţă (BRAIN)”. dr.studiile universitare de doctorat . dr.O Investiţie în Inteligenţă (BRAIN)”. Proiect finanţat în perioada 2008 . 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 . Finanţare proiect: 14.2011.424. Gabriel LAZĂR . univ. 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 .

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 .

4 .

fără a cărui implicare această lucrare ar fi fost mult mai săracă. Marcian Cîrstea. în care autorul este membru. în acelaşi timp. foarte cunoscut şi în literatura de specialitate de limbă română. ale directorului de proiect. Elaborarea acestei lucrări s-a făcut sub îndrumarea atentă şi competentă a domnului prof. s-a reexplicat un acronim dacă acesta a fost definit într-o secţiune anterioară mai îndepărtată. Adesea. inginerie electrică şi ingineria calculatoarelor. De asemenea. 5 . Universitatea Tehnică “Gheorghe Asachi” din Iaşi. 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. Autorul se simte îndatorat în mare măsură şi faţă de colectivul Catedrei de Automatică şi Informatică Aplicată. Alexandru Onea. domnul prof. Alin Tisan. Atât ideea acestei lucrări. În general. ing. Publicarea unora din rezultatele acestei lucrări a fost posibilă datorită eforturilor deosebite de gestionare a fondurilor grant-ului SICONA-12100/2008. dr. fiz. care să-l ajute să treacă peste micile neajunsuri. Pe parcursul lucrării. scăzând riscul de confuzii. Corneliu Lazăr. domnul prof. în Cambridge. au fost rezultatul unor discuţii aprinse şi fructuoase cu domnul dr. atitudinea profesionistă şi prietenoasă a domnului dr. studii sprijinite prin programul “Burse doctorale – o investiţie în inteligenţă” BRAIN. dr. O pondere importantă în această lucrare o are activitatea de cercetare desfăşurată la Anglia Ruskin University. s-a preferat utilizarea acronimului din limba engleză. deşi acesta este la confluenţa dintre automatică. fără a se încerca traducerea (de exemplu: hardware. ing. care a abordat anterior o direcţie de cercetare conexă. De asemenea. la invitaţia şi sub supravegherea domnului prof. a făcut posibilă realizarea cu succes a experimentelor de laborator. căruia autorul îi mulţumeşte pentru încurajarea formării unei atitudini independente şi. Corneliu Lazăr. unii termeni au fost păstraţi în engleză pe tot parcursul lucrării. ing. ing. dr. Aleodor Daniel Ioan. această lucrare este rezultatul unui mediu competitiv şi prietenos. 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. ing. direcţionarea avizată către rezultate semnificative. pentru discuţiile constructive şi trimiterile bibliografice valoroase. ing. software). Nu în ultimul rând. Tot pentru evitarea confuziilor. toate acronimele folosite au fost definite la prima utilizare. pentru care autorul mulţumeşte colegilor doctoranzi.Cuvânt înainte Lucrarea de faţă este rezultatul a trei ani de studii în cadrul Şcolii Doctorale a Facultăţii de Automatică şi Calculatoare. Se presupune totuşi o oarecare familiaritate a cititorului cu domeniul abordat. cât şi primii paşi în această direcţie. şi în special faţă de conducătorul acestuia. UK. dr. din acelaşi colectiv.

............................................................................................... 41 5.......................................................... 42 5....................................1 Prezentare generală a uneltelor de proiectare pentru FPGA......................... 35 4.................................................7 Concluzii.......................................... 39 4.................................................................................................................................................... 53 5...............5 Concluzii..................................................... Proiectarea unui sistem de control al vitezei pentru motorul PMSM implementabil în hardware pe FPGA ................................. 11 2..............4 Studii de caz.................................. 6 ...........................................................................5 Comparaţie între cele două modulatoare ................................................4 Implementarea în FPGA a modulatorului bazat pe vectori spaţiali............................................Cuprins Introducere................................................ 45 5.............................6 Îmbunătăţirea rezoluţiei modulatorului SVM.............................................................................................. 37 4...1 Evoluţia dispozitivelor FPGA .......... 7 Dispozitive FPGA în controlul maşinilor electrice ................................... 24 3...........................................1 Modelarea motorului PMSM.....................................4 Discretizarea sistemului de control.............. 12 2..........................5 Factorizarea şi implementarea algoritmului de control ........................................................................... 70 8....................................................... 21 3......................................................................................................................................8 Concluzii.................................5 Concluzii.. 60 6.................................... 68 7............................................................................................................................................... 71 1....................................................... Proiectarea sistemelor cu procesoare soft încorporate în FPGA ............................................ Unelte de dezvoltare pentru dispozitive FPGA .........................7 Implementarea în FPGA şi rezultate experimentale..........2 Implementarea în FPGA a modulatorului PWM sinusoidal cu injecţie de semnal la punctul neutru (ZSS) ..........................3 Co-proiectarea hardware-software în sisteme de control – studiu de caz....... 54 5. 58 6......................................... 65 6................................................................... 48 5............................................................................................................................................................................. 2....................... 56 6.........................................3 Unelte de depanare pentru sisteme implementate în FPGA .................2 Proiectarea sistemului de control al vitezei pentru motorul PMSM.................4 Concluzii.................................................................................................... Concluzii generale .................................................... 41 5...... 37 4.... Bibliografie selectivă.....................6 Interfaţarea senzorilor............................4 Sisteme de control pentru motoare electrice implementate în FPGA.......... 19 3..................................................................................... Metode moderne de modulaţie pentru controlul invertorului trifazic şi implementarea lor în FPGA ........................................................... 55 6.............................................................................. 56 6.................................. 11 2.............. 62 6......2 Arhitecturi actuale de FPGA ......................................... 18 3.................3 Modulaţia bazată pe vectori spaţiali ........ 25 3. 67 6............1 Modulaţia PWM sinusoidală . 51 5.........................................................3 Metodologia de proiectare a unui sistem de control implementat în hardware pe FPGA13 2..............................1 Consideraţii privind proiectarea de procesoare soft pentru FPGA ................... 63 6............................................... 15 2.....................................................................................3 Validarea sistemului de control în continuu ....................2 Proiectarea în mediul Simulink a structurilor hardware folosind blockset-ul System Generator... 19 3...........

În această lucrare. proiectat pentru o aplicaţie specifică. se va discuta despre sisteme încorporate cu dispozitive FPGA. cum erau la apariţia lor. centrul sistemului va fi un FPGA. Acest din urmă termen este folosit recent pentru desemnarea unor circuite complexe de tip microcontroler. • a treia accepţiune a termenului “încorporat” se referă la faptul că aceste sisteme sunt de obicei bazate pe un procesor. 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ţireacumulare (MAC – Multiply-Accumulate). august 2007 şi volumul 55. sistemul nu este reprezentat doar de circuitele electronice ce-l compun. 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. Aşadar. De obicei. de tipul celor utilizate în calculatoarele personale.1. aprilie 2008). de înaltă performanţă. aceste sisteme electronice sunt încorporate din punct de vedere fizic în produsul final. 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ă. numărul 4. domeniu în care algoritmii se pretează la paralelizare şi timpii de calcul pot fi critici. când se utilizau ca logică de legătură în sistemele cu procesor. Faptul că dispozitivele FPGA pot constitui maşini de calcul performante a condus şi la interesul acordat acestor dispozitive în domeniul controlului automat. lucrând sub incidenţa unor constrângeri de timp real. ci încorporează pe un singur cip şi memorie de program şi de date şi circuite periferice. însă. • Dintr-o altă perspectivă. consacrate utilizării FPGA-urilor în sisteme de control industriale (volumul 54. Termenul FPGA. ci încorporează şi software-ul ce se execută pe el. 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. FPGA-ul poate constitui unitatea de procesare a sistemului încorporat. formând un tot unitar cu elementele electrice şi mecanice cu care interacţionează. 7 . tradus în româneşte prin matrice sau arie de porţi logice re-programabilă. Aceasta se poate realiza prin implementarea algoritmului de control direct în hardware pe FPGA. 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). jurnalul numărul 1 în categoria Thomson Reuters Automation & Control Systems [1]. Acest interes este subliniat de secţiuni speciale în IEEE Transactions on Industrial Electronics. Deşi acest lucru poate părea în contradicţie cu punctele al doilea şi al treilea enunţate mai sus. pentru că dispozitivele FPGA nu mai sunt doar circuite reconfigurabile ce pot implementa funcţii logice complexe. Termenul “încorporat”. Pe lângă faptul că densitatea de integrare a dus la construirea de FPGA-uri cu milioane de porţi logice echivalente. numărul 4. Acum. Aşadar. nu un microcontroler sau DSC. iar acesta rulează un program ce execută sarcinile sistemului. o privire mai atentă asupra dispozitivelor FPGA va estompa această contradicţie. Prin sistem încorporat se înţelege un sistem electronic digital de dimensiuni reduse. aceste cipuri sunt microcontrolere sau controlere digitale de semnal (DSC – Digital Signal Controller). iar pe acesta va rula în software algoritmul. dotate deci cu periferice puternice. termenul se aplică adesea cu privire la sistemul de calcul ce formează centrul sistemului digital: acesta nu este un procesor obişnuit. o traducere aproximativă a mult mai cunoscutului şi acceptatului termen “embedded” din limba engleză. are o conotaţie mai mult istorică. deşi se poate apela şi la varianta clasică: în FPGA se poate implementa un procesor soft. Aşadar. se poate aplica unui sistem din mai multe puncte de vedere: • De obicei.

această situaţie este un caz particular nu foarte răspândit: de cele mai multe ori. Se impune precizarea acestui termen: deşi în denumirea FPGA apare cuvântul “programabil”. Această prezentare constituie un studiu al stadiului actual al cercetării. ilustrative pentru metodele de proiectare (şi combinarea lor) folosind dispozitive FPGA. unelte pentru sisteme încorporate. 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). 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. 2) modularitatea şi reutilizabilitatea. sunt trecute în revistă principalele unelte disponibile. a familiilor actuale de FPGA-uri produse de Xilinx. În finalul capitolului se prezintă trei studii de caz originale. cea mai profitabilă dintre ramurile industriei electronice (conform unui studiu publicat de Forbes. grupate pe trei categorii: nuclee IP. 3) potrivirea optimă algoritm-hardware. Thomson One Analytics. În finalul capitolului. În al treilea subcapitol este prezentată o metodologie generală de proiectare a sistemelor de control automat implementate în FPGA. ce a fost expusă în capitolul anterior. actualmente cele mai noi procese de producţie a semiconductorilor fiind testate pe dispozitive FPGA. Se insistă pe elementele arhitecturale ale fiecărei familii. Value One). Sunt prezentate sintetic şi informaţii conexe. în prezent. în primul subcapitol este punctată istoric evoluţia dispozitivelor FPGA. este mai clar termenul „configurabil” în legătură cu posibilitatea de a redefini funcţionalitatea îndeplinită de circuitul FPGA. Worldscope. al configurabilităţii. începând cu un scurt istoric şi ajungând la detaliile arhitecturale ale dispozitivelor actuale. acesta duce cu gândul la un program software ce rulează pe un procesor şi ce poate fi modificat. Pentru atingerea acestui scop. ce permite proiectarea de module hardware direct implementabile în FPGA din mediul Matlab Simulink. sau. Cel de-al doilea subcapitol reprezintă o trecere în revistă succintă. ci integrează elemente complexe de procesare. de asemenea. 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. unelte pentru nuclee DSP. FT Interactive Data. Thomson Reuters. mai bine zis. cât şi pentru a o înscrie în tendinţele din cercetare în domeniu la nivel internaţional. Astfel. î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. Or. cu avantajul programabilităţii. Thomson IBES. în ceea ce priveşte FPGA-urile. Capitolul 3 descrie uneltele de dezvoltare disponibile pentru proiectarea sistemelor bazate pe FPGA. Al doilea capitol prezintă locul dispozitivelor FPGA în sistemele de control moderne pentru motoare electrice. Bloomberg. evidenţiindu-se faptul că aceste dispozitive nu sunt simple arii de porţi logice interconectabile. se începe cu o prezentare sumară a dispozitivelor 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 . Aceasta se bazează pe trei principii fundamentale: 1) rafinarea algoritmului. În primul subcapitol.Application Specific Integrated Circuit). Este.Industria dispozitivelor FPGA este. Primul dintre acestea urmăreşte proiectarea unui sistem de control al vitezei pentru motorul de curent continuu integrându-l într-o 8 . Standard & Poor’s. cu date de la Audit Integrity. util atât pentru a sublinia originalitatea şi validitatea rezultatelor obţinute cu această teză. Cel de-al treilea subcapitol este o scurtă trecere în revistă a uneltelor de depanare pentru sisteme bazate pe FPGA. un subcapitol este dedicat prezentării sistemelor bazate pe FPGA pentru controlul motoarelor electrice recent apărute în literatură. De aceea. după o prezentare a evoluţiei uneltelor de dezvoltare legată de evoluţia dispozitivelor FPGA. de sinteză. două dintre cele patru companii din industria electronică din top sunt producătorii de FPGA-uri Altera şi Xilinx) [2]. sarcinile sunt executate în hardware pe FPGA. cea mai inovativă din punct de vedere tehnologic. Al doilea subcapitol constituie un studiu mai amănunţit al software-ului System Generator produs de Xilinx.

folosind un model al motorului. originale şi proiectate pentru aplicaţia exemplificată. [111]. Sistemul de control al vitezei pentru motorul BLDC. cu restricţii de temporizare mult mai relaxate. destul de diferită de cea a unui ASIC. Acesta a fost proiectat ca un filtru cu răspuns infinit la impuls în Simulink. [109]. Acestea. subliniindu-se modul în care proiectarea trebuie să ţină cont de arhitectura specifică a FPGA-ului. 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. mult superioară din punctul de vedere al vitezei de execuţie faţă de implementarea în software. Sistemul de control prezentat la sfârşitul capitolului anterior a fost aşadar extins cu două sisteme cu procesor soft.buclă cu calare pe fază. Răspunsul sistemului experimental s-a dovedit în perfectă concordanţă cu cel al sistemului simulat. Î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. Cum acest tip de motor necesită tensiuni sinusoidale de alimentare a fazelor statorului. În acest sens. în Capitolul 5 se prezintă 2 tehnici de modulaţie moderne şi eficiente 9 . proiectat în Simulink. Sistemul a fost verificat experimental. Problema a fost partiţionată între software şi hardware: algoritmul de control se execută în hardware proiectat special pentru aplicaţie (prezentat deja). împreună cu valorile instantanee ale semnalelor de comandă şi de răspuns. [110]. S-a obţinut astfel un sistem complex pe un singur cip. Sistemul s-a verificat experimental. Originalitatea şi actualitatea sistemelor de control prezentate în acest capitol au condus la redactarea şi publicarea a 6 lucrări: [102]. Spre deosebire de motorul de curent continuu clasic. proiectate la nivel de schemă logică. autorul şi-a format deja o părere privind perspectivele implementării în hardware a algoritmilor de control. iar sarcinile de monitorizare. în ultimul subcapitol se prezintă un studiu de caz original: co-proiectarea hardware-software în sisteme de control. obţinându-se pe calculatorul gazdă o interfaţă în timp real cu motorul BLDC controlat. [105]. Întregul sistem a fost validat prin co-simulare Simulink-ModelSim şi verificat experimental. mediul StateCAD pentru proiectarea maşinilor cu stări de control şi System Generator pentru regulator. În Capitolul 4 este abordat domeniul procesoarelor soft implementabile în FPGA. folosind blocuri System Generator. apoi a fost implementat pe FPGA şi verificat experimental. Apoi s-a proiectat un filtru de buclă de tip proporţionalintegrator şi s-a integrat întreg sistemul în 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. În al doilea studiu de caz s-a proiectat un sistem de control al vitezei pentru motorul de curent continuu folosind algoritmul deadbeat. Pentru proiectare s-a folosit captura de schemă logică pentru interfaţa cu convertoarele analog-numeric şi numeric-analogic. Fiecare se ocupă cu una singură din cele două sarcini. dovedind că este capabil de calare pe fază şi deci de control al vitezei. Sistemul a fost descris în lucrarea publicată [122]. prezentat în finalul capitolului precedent. conţinând atât elemente hardware. Proiectarea s-a realizat la nivel de schemă logică. uşurându-se astfel dezvoltarea software-ului şi interfaţarea fiecărui sistem cu resursele hardware. Cum până la redactarea acestui capitol. au fost studiate mai întâi tehnici de modulaţie pentru obţinerea eficientă a acestora. cât şi software. Prin procesor soft se înţelege un procesor implementat în resursele de uz general ale unui FPGA. ce a fost validat prin simulare în ModelSim. 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ă. Astfel. În acest sens s-a proiectat un detector de fază şi frecvenţă original. motorul BLDC se caracterizează prin faptul că tensiunea de comandă trebuie comutată între perechi de înfăşurări ale statorului. Cel de-al treilea studiu de caz s-a ocupat de proiectarea unui sistem de control al vitezei pentru motorul BLDC (Brushless DC). [103]. au fost combinate cu un algoritm de control de tip PI. se execută prin software pe procesoare PicoBlaze. s-a găsit o nişă unde procesoarele soft prezintă interes în aplicaţiile de control: sarcinile de monitorizare. A fost validat prin simulare.

de 50MHz. 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. Şi acest modulator a fost implementat fizic şi testat experimental. În subcapitolul şase s-a extins rezoluţia modulatorului bazat pe vectori spaţiali prin tehnici caracteristice dispozitivelor FPGA. obţinându-se o implementare cu un timp de calcul foarte scurt. În acest moment. [144]. În al doilea subcapitol se prezintă proiectarea sistemului de control. sistemul este factorizat pentru a folosi doar 4 multiplicatoare şi reproiectat pentru a fi sincron cu semnalul de tact global. În al treilea subcapitol este prezentată modulaţia bazată pe vectori spaţiali. sistemul de control analogic (continuu) a fost validat prin simulare în Simulink. dar complică sistemul de control. Acestea sunt în perfectă concordanţă cu rezultatele obţinute anterior prin simulare. şi ar avea nevoie de un semnal de tact separat. eliminând parametrii variabili în timp din ecuaţiile ce-l descriu. incluzând timpul necesar interfaţării cu senzorii de curent. mai apropiată de reprezentarea internă într-un sistem de control decât cea trifazată. În primul subcapitol este prezentată modelarea motorului în sistemul de coordonate rotitor sincron cu rotorul. ce va trebui să realizeze transformările de coordonate în timp real. implementat pe FPGA şi testat experimental. De aceea. Parametrii regulatoarelor sunt derivaţi prin metoda alocării polilor. pentru ca în al doilea subcapitol să se discute implementarea pe un dispozitiv FPGA a acestei tehnici de modulaţie.14μs. care este şi contribuţia originală majoră a capitolului. 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. 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. [146]. 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. ş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.Astfel. ţinând cont de modelul motorului. În sfârşit. iar în ultimul subcapitol sunt descrise rezultatele experimentale după implementarea sistemului de control în FPGA. Î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.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. Acest proces de proiectare. [145]. de 20kHz. Această abordare simplifică foarte mult modelul motorului. este prezentat în subcapitolul cinci. Originalitatea studiilor prezentate în acest capitol şi validitatea rezultatelor experimentale obţinute au condus la redactarea şi publicarea a 4 lucrări: [143]. Apoi. în cel de-al patrulea subcapitol. Aşadar. sistemul de control a fost discretizat şi implementat folosind blocuri System Generator. Aşadar. folosind trei regulatoare: două regulatoare PI pentru curenţi şi un regulator combinat PI-P pentru viteză. folosind tehnica în buclă deschisă V/Hz. s-a demonstrat că dispozitivele FPGA pot implementa foarte 10 . Spartan-3E XC3S500E). Acesta conţine patru bucle de reacţie şi se execută în doar 2. îmbunătăţită prin injecţia de semnal triunghiular la punctul neutru. în primul subcapitol sunt prezentate câteva aspecte teoretice ale modulaţiei sinusoidale în lăţimea impulsurilor. datorită faptului că se execută mai repede. Modulatorul astfel îmbunătăţit a fost testat experimental pentru controlul unui motor de inducţie. Modulatorul prezentat a fost proiectat folosind System Generator. Deşi în acest stadiu sistemul de control realizat cu blocuri System Generator este direct implementabil în FPGA. de doar 160ns la o frecvenţă de tact de 50MHz. el nu este utilizabil în această formă deoarece ar necesita prea multe resurse (mai multe multiplicatoare decât sunt disponibile în dispozitivul ţintă. având în vedere că din punctul de vedere al rezultatului ele sunt echivalente. În al treilea subcapitol. în Capitolul 6 se expune proiectarea unui sistem de control al vitezei pentru motorul sincron cu magneţi permanenţi. Al cincilea subcapitol face o comparaţie între cele două modulatoare proiectate. urmată în subcapitolul patru de proiectarea modulatorului şi implementarea sa folosind System Generator. s-a verificat că prin discretizare comportarea sistemului de control rămâne la fel cu comportarea sistemului de control continuu.

Sistemul de control prezentat în acest capitol a fost descris în lucrarea [161]. 2. folosind 85000 de tranzistoare [4]. Totodată. Dispozitive FPGA în controlul maşinilor electrice 2. FPGA-urile încep să fie folosite în aplicaţii mai complexe. Din acest rezumat au fost eliminate subcapitole şi porţiuni de subcapitole conţinând informaţii mai generale.1 Evoluţia dispozitivelor FPGA Primul dispozitiv de tip FPGA a fost lansat de firma Xilinx în 1984. mai multe elemente de bază puteau fi integrate pe acelaşi cip. având în vedere că tehnologia de fabricaţie permitea integrarea a tot mai multor tranzistoare. cu timpi de răspuns de ordinul zecilor de μs).eficient algoritmi de control complecşi pentru procese rapide (chiar dacă motorul are un timp de răspuns de câteva ms. numărul nivelelor de interconectare şi numărul pinilor de intrare/ieşire. Toshiba. De aceea. Avantajul acestei arhitecturi era scalabilitatea: odată cu îmbunătăţirea procesului de fabricaţie.Digital Signal Processing). În curând însă s-a dovedit că această abordare nu era suficientă: odată cu creşterea numărului de blocuri logice. acceptată spre publicare. În această perioadă. crescând posibilităţile oferite de acesta. Motorola. multe firme producătoare se retrag din domeniu (Plessey. producătorii de FPGA-uri au continuat să crească numărul de blocuri logice. 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 care se subliniază rezultatele obţinute şi contribuţiile originale. interconexiunile lungi şi complexe dintre ele deveneau factorul limitativ al performanţelor dispozitivului. un capitol de concluzii generale sintetizează aceste contribuţii şi lansează câteva direcţii viitoare de cercetare. Fiecare capitol este încheiat cu un subcapitol de concluzii. Menţiuni referitoare la paragrafele eliminate au fost păstrate în secţiunile de introducere şi concluzii. a apărut ideea încorporării de hardware dedicat. 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. variaţia curenţilor prin motor este foarte rapidă. insistându-se pe secţiunile ce prezintă elemente de proiectare. În 2000 apare primul FPGA cu procesor hardware încorporat. 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. bazat pe arhitectura 11 . în scopul corelării uşoare între rezumat şi teză pentru cititorul care va dori să parcurgă versiunea completă. Numerotarea secţiunilor rămase (ca şi a figurilor. Astfel. la mijlocul anilor 1990 apar primele FPGA-uri cu blocuri de memorie RAM încorporate. Perioada 1985 – 1991 poate fi astfel considerată perioada “copilăriei” dispozitivelor FPGA. Acesta conţinea 64 de blocuri logice interconectate printr-o matrice de conexiuni programabile. În plus. bazate pe multiplicatoare hardware şi acumulatoare. avea 58 de pini de intrare/ieşire şi era implementat în tehnologie de 2μm. Perioada 1992 – 1999 poate fi considerată perioada de expansiune a dispozitivelor FPGA. Astfel. de-a lungul anilor 1980. tabelelor şi ecuaţiilor) s-a păstrat ca în teză. În finalul lucrării. La începutul acestei perioade. constituind o invitaţie pentru cititor să răsfoiască versiunea completă a tezei. principala componentă de originalitate a tezei. de la funcţii aritmetice specializate la blocuri dedicate procesării digitale de semnal (DSP . în domeniul comunicaţiilor şi calculelor aritmetice. IBM) pentru că arhitecturile propuse de ele nu fac faţă scalabilităţii permise de avansarea rapidă a tehnologiei de producţie. 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ă. 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.

Acumulatorul poate fi folosit şi pe 12 . s-a ajuns la dispozitive configurabile complexe. 2Kx8 (sau x9). coprocesoare matematice. un lanţ de propagare a transportului de mare viteză leagă între ele feliile logice de pe aceeaşi coloană din FPGA. DDR3 sau LPDDR (Low Power DDR) şi putând atinge rate de transfer de 800 Mb/s. Cele două porturi de acces la un bloc de memorie pot avea lăţimi diferite. din motoare de procesare dedicate DSP. De asemenea. Fiecare port poate fi configurat ca 16Kx1. x18 şi x36 includ biţi de paritate. FPGA-urile au devenit platforme sistem: ambii mari producători de FPGA-uri îşi descriu dispozitivele complexe în astfel de termeni. Astfel. Ieşirea fiecărui LUT poate fi salvată într-un bistabil. DDR2. capabilă să implementeze un întreg sistem pe un cip (SoC . Unele dispozitive ale familiei includ blocuri de control al memoriei externe (MCB – Memory Controller Block). Celelalte felii logice dintr-un Spartan 6 sunt de tipul SLICEX. Familia Virtex 6 de la Xilinx este descrisă ca FPGA platformă. 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. astfel de blocuri pot fi cascadate datorită multiplelor facilităţi de înlănţuire a propagării transportului. fiecare putându-se interfaţa la un cip de memorie DRAM de tipul DDR. cu excepţia posibilităţii de configurare ca memorie distribuită sau registru de deplasare. de la epoca blocurilor logice interconectate prin conexiuni programabile. SLICEL şi SLICEX. Arhitectura familiei Spartan 6 se bazează pe felii logice (slice). 8 bistabili şi logică complementară. ce lucrează cu numere reprezentate în complement faţă de 2. Fiecare CLB conţine 2 felii alăturate. implementabile economic în blocurile logice din FPGA. odată cu creşterea numărului de blocuri logice integrate. unul din principalii producători actuali de dispozitive FPGA. De asemenea. se pare că începând din 2007 am intrat în perioada specializării: familii diverse de FPGA-uri. sistem compus din mai multe procesoare hard sau soft. Configuraţiile x9. Tot un sfert din feliile logice ale unui dispozitiv Spartan 6 sunt de tipul SLICEL. Ce rezervă viitorul? Conform [7].2 Arhitecturi actuale de FPGA Această secţiune va prezenta pe scurt opţiunile arhitecturale şi tehnologice ale firmei Xilinx. şi un acumulator de 48 de biţi şi poate opera la o frecvenţă de lucru de 250 MHz. FPGA-urile Spartan 6 conţin şi blocuri de memorie RAM cu port dual de 18 kbiţi. bazate pe arhitecturi diferite. sau ca registre de deplasare: un registru de 32 de biţi (SRL32 – Shift Register Logic) sau 2 registre de 16 biţi (SRL16). Fiecare astfel de bloc este alcătuit dintr-un multiplicator dedicat 18x18. care elimină din structura SLICEL logica de generare a transportului şi multiplexoarele. Pentru operaţii aritmetice. Un sfert din feliile logice ale unui dispozitiv Spartan 6 sunt de tipul SLICEM. Blocul DSP48A1 oferă posibilitatea folosirii registrelor interne pentru implementarea de pipeline-uri. a apărut tendinţa producătorilor de FPGA-uri de a dezvolta procesoare soft.System on a Chip). Spartan şi Virtex. capabile să implementeze un întreg sistem digital pe un cip. Xilinx oferă două familii principale de dispozitive FPGA. configurată ca 64x1 sau 32x2. Accesurile la memorie sunt sincrone cu semnalul de tact. programele software de sinteză la nivel înalt se vor specializa pe domenii diferite de aplicaţii. Acestea au aceeaşi structură ca şi SLICEM. LUT-urile pot fi folosite şi ca memorie RAM distribuită de 64 de biţi. numite DSP48A1.ARM. Fiecare felie conţine 4 LUT-uri. vor oferi dispozitive specializate pentru diferite tipuri de aplicaţii. De asemenea. 1Kx16 (sau x18). sau 512x32 (sau x36). Dispozitivele Spartan 6 dispun şi de blocuri dedicate operaţiilor DSP. Există 3 tipuri de felii logice în arhitectura Spartan 6: SLICEM. grupate în blocuri logice configurabile (CLB – Configurable Logic Block). Familia Stratix IV de la Altera este comercializată ca FPGA high end. În prezent. 8Kx2. Fiecare bloc de RAM poate fi configurat ca două jumătăţi de 9kbiţi independente. 4Kx4. 2. În acest rezumat se prezintă doar familia Spartan. periferice de control al memoriei sau de comunicaţie [5].

Fiecare circuit PLL are 5 ieşiri de tact. 2.post de numărător sincron. şi cititorul este îndrumat către vasta bibliografie specifică firmelor producătoare: [11].3. Din acest motiv se impune folosirea unei metodologii de proiectare eficiente. însă. modularitatea şi potrivirea optimă între algoritmul ce trebuie implementat şi arhitectura hardware aleasă. cu căi multiple de date. cu avantajul flexibilităţii mediului programabil în care se realizează implementarea. 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°. Acestea suportă rate de transfer între 614 Mbps şi 3. dar utilizarea reprezentării în virgulă mobilă implică structuri mult mai complexe. 90°. Aceste trei concepte sunt prezentate în cele ce urmează. proiectarea acestei arhitecturi este realizată intuitiv şi euristic şi nu este adaptată implementării de algoritmi din ce în ce mai complecşi. [13].1 Rafinarea algoritmului Rafinarea algoritmului este un pas necesar în proiectarea sistemelor de control cu FPGA. Acest lucru oferă un grad de libertate în plus în proiectarea de sisteme de control numeric faţă de folosirea microprocesoarelor. de la procesare de semnal la microcontrolere şi proiectare de software pentru sisteme încorporate. iar multiplicatorul poate fi folosit pentru implementarea unui circuit de deplasare cu pas selectabil (barrel shifter). Informaţiile prezentate în această secţiune au rolul de a evidenţia extraordinarele posibilităţi oferite de circuitele FPGA actuale. deoarece arhitectura hardware a sistemului de control nu e impusă a priori. dar utilizarea resurselor nu este optimă în acest caz. pentru a permite dezvoltarea cât mai rapidă de proiecte complexe. 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. de la proiectare de structuri digitale la descriere în limbaje HDL şi simulare a acestora. O astfel de metodologie se bazează pe trei principii majore [19]: rafinarea algoritmului de control. [12]. Unele circuite din familia Spartan 6. 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. 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. folosirea resurselor disponibile implică cunoştinţe din multe domenii conexe. [14]. De multe ori.125 Gbps. la ce bun o multitudine de resurse. În plus. registre de deplasare pentru 13 .3 Metodologia de proiectare a unui sistem de control implementat în hardware pe FPGA Dispozitivele FPGA permit proiectarea de arhitecturi hardware specializate. 225°. Aceste componente pot fi conectate între ele prin trasee dedicate. 315°) şi multiplicare sau divizare de frecvenţă. 135°. conţin circuite dedicate de transmisie/recepţie serială de mare viteză. 180°. 45°. Circuitul PLL poate fi folosit pentru sintetizarea frecvenţelor de tact şi filtrarea fluctuaţiilor semnalelor de tact externe sau interne. din care s-a sintetizat aici. Ele au caracter introductiv. Circuitele DCM se bazează pe bucle cu calare pe întârziere (DLL – Delay Locked Loop). cât mai abstract. logică de luare a deciziilor şi activare a anumitor căi. Altfel. dar pot opera şi independent. 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). Dispozitivele familiei Spartan 6 dispun de circuite speciale pentru generarea semnalelor de tact. dacă nimeni nu reuşeşte să le folosească în întregime? 2. pentru informaţii mai detaliate. şi anume cele din sub-familia Spartan 6 LXT. 270°. Implementarea operaţiilor aritmetice în virgulă mobilă este posibilă în FPGA. Chiar şi familiile cu preţ scăzut integrează destule componente complexe pentru a permite aceasta. datorită arhitecturii de tip “matrice de celule logice”.

A fost dezvoltat. atunci când nu se folosesc astfel de algoritmi speciali. Din aceste motive s-au formulat două direcţii de lucru: 1. 2. Ierarhizarea împarte un sistem mare sau complex în entităţi mai uşor realizabile denumite module. este o problemă cheie. scopul metodologiei AAA este de a găsi o arhitectură hardware optimizată pentru un anumit algoritm. Un alt exemplu îl reprezintă algoritmii de aritmetică distribuită. simplificarea computaţională se poate obţine prin remodelarea algoritmului de implementat pentru a reduce numărul operaţiilor ce trebuie realizate. mai ales atunci când aceasta din urmă nu este fixată. O bună modelare şi ierarhizare a unui sistem. ce permite optimizarea alegerii reprezentării.3. Modulele pot fi împărţite în biblioteci de diferite nivele de abstracţie.normalizare. O metodologie de găsire a acestei potriviri optime este prezentată în [24] şi numită metodologia AAA (sau A 3 ). ce implică doar potrivirea suficientă.3. Reutilizabilitatea poate fi întâlnită la nivel de descriere HDL. 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. Folosirea unui format optimizat de reprezentare a numerelor în virgulă fixă: aşa cum sa menţionat mai sus. de asemenea. Astfel. procesoarele soft şi blocurile IP destinate operaţiilor specifice DSP. 2. Simplificarea computaţională: mai ales la începutul dezvoltării dispozitivelor FPGA. de exemplu la nivel RTL sau la nivel comportamental (behavioral).2 Modularitatea şi reutilizabilitatea Pentru proiectarea sistemelor complexe. etc. la nivel de captură de schemă sau la nivele de proiectare mai abstracte. Regularitatea este direcţionată spre maximizarea reutilizării modulelor deja proiectate. reprezentarea în virgulă fixă este foarte potrivită pentru implementare în FPGA. împărţire). Un astfel de exemplu este algoritmul CORDIC (COordinate Rotation DIgital Computer). Acest principiu se bazează pe conceptele de ierarhizare şi regularitate. 2. 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.4 Potrivirea optimă algoritm-hardware Potrivirea optimă dintre algoritmul ce trebuie implementat şi structura hardware. Un modul poate fi definit ca un element al unei biblioteci. fără a trebui proiectat sau modificat. metodologie bazată pe normele l∞ şi l1 . în consecinţă. hiperbolice. un toolbox Matlab pentru analiza efectelor implementării filtrelor digitale şi a sistemelor de control folosind reprezentarea numerică în virgulă fixă [23]. Atunci când vorbim despre proiectare în FPGA. î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. principiul modularităţii este esenţial. În această categorie intră. care se bazează doar pe operaţiile aritmetico-logice de adunare şi deplasare pentru a calcula o multitudine de funcţii trigonometrice. Aceste structuri complexe consumă foarte multe resurse. ce folosesc în multe cazuri tabele de căutare şi a căror implementare este. Principiul modularităţii poate însemna şi folosirea de blocuri IP deja proiectate. când densitatea celulelor logice era limitată. În acest sens. ce poate fi instanţiat direct. î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. În general. precum şi folosirea de module deja existente. respectând în 14 . foarte potrivită arhitecturilor de FPGA-uri bazate pe LUT-uri. poate reduce timpul de proiectare mult mai mult decât o stăpânire perfectă a uneltelor de proiectare. nu sensul cuvântului englezesc adequacy. liniare şi logaritmice. de exemplu la nivelul proiectării sistemelor DSP în Simulink. Prescurtarea AAA provine de la Algorithm Architecture Adequation. de exemplu. iar termenul adequation are sensul francez de potrivire eficientă. reutilizabilitatea constă în folosirea elementelor de bibliotecă celor mai potrivite pentru o anumită aplicaţie. testate şi sintetizate de alţii.

exprimat în cicli de tact). pentru a satisface constrângerile hardware. 2. prezintă patru posibilităţi de implementare derivate din posibilităţile de factorizare ale DFG-ului. Astfel. Totuşi.1) [19]. având în vedere că au apărut în 2007.12 că structura ALU-1 este cea mai rapidă. deoarece consumă resurse hardware.acelaşi timp constrângerile de timp de execuţie şi arie ocupată. Fig. în [27] se prezintă o abordare “integrată” a modelării şi implementării în FPGA a 15 . Aşadar. trebuie completate cu cercetări bibliografice mai recente. Graful fluxului de date (DFG – Data Flow Graph) corespunzător ecuaţiei (2. [19]. dar consumă şi cele mai multe resurse.12. dar va avea nevoie de un timp de procesare de 4 ori mai lung decât ALU-1.1) este prezentat în Fig.1) Figura 2. 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]. Posibilităţi de implementare a operaţiilor descrise de (2.12. aceste trei principii ar trebui să ghideze încercările de implementare a algoritmilor de control automat în hardware pe dispozitive FPGA. cu un spectru ceva mai larg. 2.11. 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. ALU-2 şi ALU-3 sunt soluţii intermediare atât din punctul de vedere al costurilor hardware. iar fiecare operator are un cost. De obicei. Pentru ilustrarea metodei se va folosi un exemplu din [19]: se consideră că trebuie implementată o operaţie matriceală simplă de forma: ⎡ X d ⎤ ⎡ − A11 (θ ) ⎢X ⎥ = ⎢ ⎣ q ⎦ ⎣− A21 (θ ) A12 (θ ) ⎤ ⎡ X a ⎤ ⋅ A22 (θ )⎥ ⎢ X b ⎥ ⎦ ⎣ ⎦ (2. 2.1) [19]. resursele critice sunt operatorii complecşi. 2. Articolele [4]. analiza pe graf a paralelismului potenţial al algoritmului şi potrivirea acestuia pe paralelismul disponibil al arhitecturii hardware alese. şi nu registrele sau multiplexoarele.11. cât şi al timpului de procesare. DFG corespunzător ecuaţiei (2. iar cea care prezintă compromisul cel mai avantajos este aleasă. Este evident din Fig. reprodusă tot din [19]. Este de asemenea evident că structura ALU-4 ocupă cele mai puţine resurse hardware.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ă. [25] şi [26] sunt astfel de treceri în revistă. de tipul multiplicatoarelor. Operaţiile sunt înlocuite de circuite operatoare hardware. Metodologia AAA se bazează pe modelarea algoritmilor cu ajutorul grafurilor. al vitezei (timpul care trece între disponibilitatea a 2 rezultate consecutive la ieşire) şi al ariei ocupate. Figura 2. Cele 4 posibilităţi pot fi comparate din punctul de vedere al latenţei (timpul după care rezultatele sunt disponibile.

unui sistem de control fără senzori de viteză/poziţie pentru motorul de inducţie. implementat în software (în limbaj de asamblare) pe un procesor soft PicoBlaze. Î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. Este prezentat de asemenea un sistem de control complet. După validarea prin simulare. În [39] se descrie proiectarea şi dezvoltarea unui sistem de control embedded pentru aplicaţii de robotică. autorii prezintă modelarea întregului sistem (inclusiv a motorului. modul bazat pe algoritmul CORDIC. implementat în software pe un procesor soft. În [29] este descrisă o bibliotecă de componente dezvoltate folosind software-ul System Generator. 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. sistemul este verificat experimental. iar traiectoria este generată prin software ce rulează pe un procesor soft în acelaşi FPGA. autorii propun un sistem de control simplu pentru motorul de curent continuu fără perii (BLDC – Brushless DC). S-au integrat de asemenea o 16 . şi regulatoare vectoriale de curent. un modul de generare de semnal PWM. incluzând o interfaţă pentru Simulink bazată pe paradigma “hardware în buclă” (HIL – hardware in the loop). iar controlul vitezei şi al traiectoriei este realizat prin software pe un procesor Nios II. La fel. Autorii propun o abordare combinată între un regulator adaptiv de viteză bazat pe logică fuzzy. aplicat pentru controlul în timp real al unui motor de curent continuu. Articolul [38] prezintă un sistem cu procesor hard PowerPC modular şi scalabil bazat pe un FPGA XC2VP30ff896-6. Î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 comunicaţie serială RS232. În [37] se prezintă un algoritm de control PID pentru un servomotor de curent continuu. µC/OS-II şi Xilkernel. Conceptul este verificat prin simulări şi experimente. 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. În [34]. de aici termenul de modelare “integrată”) folosind limbajul VHDL. simplificând proiectarea şi implementarea regulatorului. Folosind un observator în spaţiul stărilor şi un sistem de control bazat pe reţele neuronale. Î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 [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. în timp ce buclele de viteză şi generarea traiectoriei sunt realizate prin software pe un procesor soft NiosII pe acelaşi FPGA. În [28] este prezentat un sistem de control partiţionat între hardware şi software pentru motorul PMSM. implementate în hardware. sistemul de operare de timp real MontaVista Linux şi biblioteca specializată OROCOS (Open Robot Control Software). multiplexor analogic şi convertor analog-numeric (CAN). 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. S-au evaluat două sisteme de operare embedded de timp real. 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. În [35] şi [36] este prezentat un sistem de control pentru un motor PMSM dotat cu un rezolver analogic de poziţie. Astfel. utilizabile în proiectarea de sisteme de control pentru motoare de curent continuu şi BLDC implementabile pe FPGA. un modul de interfaţare cu un amplificator analogic şi un CAN cu interfaţă serială SPI (Serial Peripheral Interface). bazat pe FPGA. Articolul [30] descrie un sistem de control fără senzor de poziţie pentru motorul de inducţie. O aplicaţie asemănătoare este prezentată în [32]: un sistem modular de control al mişcării multi-axe.

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). a unui regulator de curent cu histerezis pentru PMSM. Articolul [41] prezintă proiectarea în Simulink. cu o dinamică mai înceată. pentru implementarea unui sistem de control al vitezei pentru motorul de curent continuu. folosind software-ul DSP Builder. apoi i se dă controlul. cu o dinamică rapidă. 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. Regulatorul de curent. FOC cu compensarea tensiunii induse şi cu decuplare între axe. 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. În [42] se propune controlul fără senzor de poziţie pentru motorul sincron folosind filtrul Kalman extins pentru estimarea poziţiei şi vitezei. Aceeaşi idee de co-proiectare hardware-software se regăseşte şi în [44]. De asemenea. FOC cu compensarea tensiunii electromotoare induse. Î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. 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 tensiunile trifazate se aplică prin modulaţie sinusoidală cu injecţie de semnal la punctul neutru. iar regulatoarele de curent. Pe lângă regulator şi transformările de coordonate asociate. sistemul poate alege între implementarea pe un procesor soft sau implementarea în hardware. De aceea. În funcţie de decizia sistemului. Pentru implementare s-a folosit un sistem combinat. s-a implementat şi un modul de procesare a semnalelor provenite de la un rezolver analogic pentru extragerea informaţiei de poziţie. iar începând cu o anumită viteză se închide bucla folosind tensiunea electromotoare indusă. Lucrarea [40] descrie un sistem de control pentru motoare PMSM reconfigurabil în timp real: în funcţie de cerinţe şi de aplicaţie. Cea mai complicată parte a sistemului este filtrul Kalman extins. datorită operaţiilor de înmulţire şi împărţire de matrice. 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). prin factorizare. Lucrarea [47] realizează o comparaţie între implementarea în hardware şi cea pur software pe un procesor soft Cortex-M1 din familia ARM. sunt implementate în hardware. aceasta este iniţializată. Modulele alcătuiesc o bibliotecă de componente pentru controlul unui vehicul electric cu motoare de inducţie. bazat pe FPGA şi DSP.serie de module hardware oferite de proiectul Opencores. Sistemul se bazează pe regulatoare cu histerezis pentru curenţi şi regulator PI de viteză. Î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 hardwaresoftware: regulatorul de viteză. a unui sistem de control pentru PMSM implementabil în FPGA. Se folosesc regulatoare PI pentru curenţi. este implementat prin software pe un procesor soft Nios II. Atât bucla PLL. transformările de coordonate. a fost optimizat în mod special. este proiectat în Impulse C. algoritmul SVM şi estimatorul de poziţie bazat pe un observator sliding mode sunt realizate în 17 . În [46] este prezentat un algoritm de control fără senzor de poziţie pentru PMSM. 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). Algoritmul de control utilizează 56 de blocuri DSP de 9x9 biţi din FPGA (Altera Stratix II EP2S60F1024C4). o parte din FPGA poate fi reconfigurată cu o altă implementare. implementat ca modul hardware ataşat la primul procesor. control direct al cuplului (DTC). ajungând totuşi să ocupe 36 de multiplicatoare hardware pe 18x18 biţi.

bazate pe arhitecturi diferite. mulţi producători fiind eliminaţi din cauza lipsei scalabilităţii arhitecturilor propuse de ei. inclusiv procesoare hard. iar aceasta este de 11 ori mai lentă decât implementarea în hardware. sprijinite de medii de proiectare specializate. implementarea prin software este net inferioară unei implementări în hardware din punctul de vedere al vitezei de execuţie. se înscrie aşadar într-o tendinţă în cercetare la nivel internaţional. în timp ce estimarea vitezei şi reglarea ei sunt efectuate prin software pe procesorul soft Nios II. datorită performanţelor înalte posibile. Multe dintre acestea sunt dedicate motoarelor de curent alternativ. [12]. în care o parte din sistemul de control rulează în software pe microprocesoare soft sau hard. De aceea. se adresează unor domenii diferite de aplicaţii. unde se compară implementarea în hardware pe FPGA cu o implementare în software pe un procesor DSP. Această concluzie se desprinde şi din [57]. Ceea ce va particulariza sistemul proiectat va fi modul de proiectare. În [50] este prezentat un sistem de control pentru motorul de inducţie alimentat de o punte invertoare prin intermediul unui circuit rezonant. care vede definirea arhitecturii generale şi o multitudine de producători. [44]. După cum se poate observa din articolele [37]. 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ă. [49] citate mai sus. 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. sintetizată din [19] şi bazată pe 3 principii majore: rafinarea 18 . cu rezultate asemănătoare: implementarea software pe MicroBlaze este mai lentă decât implementarea pe DSP. când se integrează tot mai multe elemente hardware dedicate. când încep să se integreze elemente hardware dedicate şi creşte mult capacitatea circuitelor. Se observă aşadar o multitudine de abordări pentru implementarea pe FPGA a sistemelor de control pentru motoare electrice. şi deci a cerinţelor computaţionale pentru sistemul de timp real. În secţiunea a doua sunt prezentate succint caracteristicile arhitecturii actuale de FPGAuri de cost scăzut produse de Xilinx. În [58]. 1992-1999 – epoca de expansiune.5 Concluzii În prima parte a acestui capitol se punctează evoluţia în timp a dispozitivelor FPGA. În cea de-a treia secţiune este prezentată o metodologie de proiectare a sistemelor de control bazate pe FPGA. circuit de măsurare a vitezei. Totuşi. [13]. şi mai ales constrângerile de proiectare impuse de dispozitivul FPGA ţintă: acesta este unul de cost redus. din familia Xilinx Spartan-3E. 2. Sistemul este descris folosind AHDL (Altera HDL) şi constă din regulatoare PI de viteză şi curent. [47]. 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. Întregul sistem foloseşte 76 de multiplicatoare pe 9x9 biţi. [40]. un capitol al tezei va fi consacrat şi sistemelor cu procesoare soft. cu numai 20 de multiplicatoare integrate. 2007-prezent – epoca de specializare: familii diferite. necesară pentru a crea o imagine asupra capabilităţilor dispozitivelor FPGA actuale. [43]. comparaţia se extinde şi la o implementare prin software pe un procesor soft MicroBlaze. datorită complexităţii controlului acestora. uneltele folosite pentru proiectare şi validare. circuit de aplicare a modulaţiei SVM modificate. acela de a proiecta un sistem de control pentru motorul PMSM implementabil într-un circuit FPGA. 2000-2007 – epoca de acumulare. circuite de transformare între sistemele de coordonate. Secţiunea reprezintă o selecţie relevantă de informaţie din sute de pagini de documentaţie [11]. [14]. Scopul acestei lucrări.hardware. Se pare că aceasta s-a derulat în mai multe epoci delimitabile: 1985-1991 – epoca apariţiei (sau “copilăriei”) FPGA-urilor. 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.

[41]) se propune o abordare “integrată” pentru simulare şi proiectare/implementare. nucleele IP sunt parametrizate. având ca ţintă un dispozitiv FPGA de cost redus. În Secţiunea 3. TSK3000A bazat pe MIPS R3000. pentru a putea fi uşor folosite şi înglobate în alte proiecte.3 sunt prezentate pe scurt unelte software şi hardware de depanare a sistemelor proiectate în FPGA. în Secţiunea 3. 19 . Există procesoare proiectate special în acest scop. folosind resursele logice ale acestora. dezvoltate cu uneltele prezentate pe parcursul capitolului şi implementate în FPGA. Mentor Graphics. Dezvoltarea lor include testarea completă şi optimizarea pentru o anumită arhitectură. toate de la Altium. care să permită validarea prin simulare. Astfel. [58]. Capitolul este împărţit în 4 subcapitole sau secţiuni. firme producătoare de unelte software de dezvoltare (Synopsys. LEON 3 bazat pe Sparc V8.1 Prezentare generală a uneltelor de proiectare pentru FPGA 3. de la Aeroflex Gaisler. Capitolul se încheie cu o secţiune dedicată prezentării câtorva aplicaţii originale. O clasă specială de nuclee IP o reprezintă microprocesoarele soft. trebuind revizuiţi serios pentru implementarea în dispozitive FPGA de cost redus. se înscrie în tendinţele actuale de cercetare în domeniu la nivel internaţional. Adesea. Cadence. • Î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ă. În acest fel. 3. TSK51 bazat pe Intel 8051. • Majoritatea algoritmilor de control prezentaţi în literatură folosesc foarte multe resurse din FPGA.2 este prezentat software-ul System Generator. 3. PicoBlaze şi MicroBlaze de la Xilinx. Altera).2 Nuclee IP Nucleele IP sunt module dezvoltate pentru a efectua o anumită funcţie. Nios şi Nios II de la Altera. TSK80 bazat pe Z80. Altium) sau firme specializate în anumite domenii de aplicaţii (Modelware. 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. de a implementa un sistem de control pentru motorul PMSM în FPGA.1. Ultima secţiune a capitolului reprezintă un studiu bibliografic extins asupra sistemelor de control pentru motoare electrice implementate în FPGA. modularitatea şi potrivirea optimă între algoritmul ce trebuie implementat şi arhitectura hardware aleasă. sau nuclee IP derivate din (şi compatibile la nivel de instrucţiune cu) procesoare disponibile de ceva timp în industrie (de exemplu. folosirea acestor nuclee predefinite reduce timpul de proiectare – sinteză – verificare. doar uneori (de exemplu [27]. În Secţiunea 3. produs de Xilinx. Mico32 de la Lattice). Acestea sunt microprocesoare proiectate pentru a putea fi implementate în dispozitive FPGA. ZPU de la Zylin AS. cu doar câteva zeci de multiplicatoare integrate. Mediul academic este de asemenea foarte prolific în această direcţie [5]. Î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]. QuickFlex) [4]. direcţia propusă pentru cercetare.algoritmului de control. Un număr mare de nuclee IP sunt disponibile liber sau contra cost de la firme producătoare de FPGA-uri (Xilinx. Aşadar. pentru a folosi cât mai economic resursele FPGA-ului (de exemplu. Cortex-M1 de la ARM. există o nişă pe care ar putea-o acoperi: proiectarea într-un mediu de nivel înalt. ce permite proiectarea integrată în mediul Simulink a sistemelor implementabile în FPGA. De asemenea. • 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.1 sunt prezentate în general uneltele de dezvoltare disponibile pentru proiectarea de sisteme în FPGA. deci implicând optimizarea la maximum a arhitecturii hardware a algoritmului de control.

de sistem. cu TargetLink [77].1. iar Altera – DSP Builder. O categorie deosebită de unelte de dezvoltare pentru FPGA-uri permit proiectarea de SoC-uri în limbajul de programare C. ARM9. Era normal ca pentru utilizarea acestor resurse hardware să apară unelte de dezvoltare cât mai specializate. Nios II IDE (Integrated Development Enviroment) şi SoPC Builder de la Altera. Exemple de astfel de unelte de dezvoltare sunt Xilinx EDK (Embedded Development Kit). sunt denumite generic unelte de proiectare ESL (Electronic System Level). Din punctul de vedere al hardware-ului.compatibil cu ARM7. exemple de hardware şi software (reference designs) pentru plăci de dezvoltare. Cum Matlab este platforma favorită pentru dezvoltarea algoritmilor DSP. sinteză. Astfel. Aceste unelte includ nuclee IP pentru periferice. compilator. biblioteci. 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. 3. împreună cu uneltele software pentru integrarea lor în proiecte complexe. dispozitivele FPGA permit un înalt grad de paralelizare a operaţiilor aritmetice folosite în procesarea digitală de semnal. ARM11). Exemple de unelte de dezvoltare bazate pe limbajul C: DK Design Suite de la Agility. Nucleele IP reprezintă. QuickWorks de la QuickLogic. CoDeveloper de la Impulse Accelerated Technologies.System on a Chip). driver-e şi aplicaţie. asamblor. ambii producători mari de FPGA-uri oferă şi software pentru generare de module IP din scheme Simulink: Xilinx oferă System Generator for DSP. depanator). ceea ce înseamnă proiectare. unul din motoarele care împing înainte dezvoltarea soluţiilor bazate pe FPGA-uri în ritmul alert în care aceasta are loc. ce permit proiectarea abstractizată la nivel înalt. ca Seamless de la Mentor Graphics şi Active-HDL de la Aldec.1. unelte de modificare/adaptare a nucleului de procesare soft. unelte de verificare a hardware-ului. principala problemă o constituie integrarea eficientă a nucleelor IP. Catapult C Synthesis de la Mentor Graphics. şi ascunderea detaliilor arhitecturilor fizice pe care se realizează implementarea. respectiv Altera Quartus II). Din punctul de vedere al software-ului. Sunt disponibile şi unelte de co-verificare hardware/software. cum ar fi Impulse C [73] sau Handel C [74]. 3. Avantajul major al metodei 20 .2. Seamless permite simularea procesorului încorporat la nivel de instrucţiune (ISS . de către dSPACE. 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. principala problemă o constituie depanarea sistemului software. Aceste unelte de dezvoltare. depanatoare hardware/software.Instruction Set Simulator) şi simularea componentelor hardware din jurul procesorului într-un mediu integrat. Producătorii de FPGA-uri au dezvoltat şi unelte software pentru proiectarea de sisteme bazate pe propriile microprocesoare hard sau soft.4 Unelte de dezvoltare pentru nuclee DSP în FPGA Aşa cum rezultă din prezentarea arhitecturilor FPGA-urilor actuale din Secţiunea 2. Implementarea de astfel de sisteme încorporate eterogene presupune sarcini foarte complexe pentru proiectanţii de hardware şi software [72].3 Unelte de dezvoltare pentru sisteme încorporate în FPGA FPGA-urile actuale au devenit platforme pentru întregi sisteme de calcul. simulare şi verificare. Ideea a fost mai întâi implementată cu succes în cazul generării de cod pentru procesoare DSP direct din modele Simulink. compus din sistem de operare în timp real (RTOS Real Time Operating System). deschizând o nouă epocă în istoria sistemelor implementate pe un singur cip (SoC . Acestea se bazează pe diferite subseturi ale limbajului C şi pe librării specifice asociate. System Designer de la Atmel. 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. unelte pentru dezvoltarea de programe software (editor. în cadrul real al sistemului hardware proiectat. editor de legături (linker).

cum ar fi captura de schemă logică sau descrierea HDL. System Generator este foarte potrivit pentru a implementa căi de date şi hardware de control pentru ele. În System Generator. 3. se poate folosi System 21 . De exemplu. Un alt exemplu este Signal Processing Designer de la CoWare. [74] sau Matlab [5]. folosind logică combinaţională sau secvenţiatoare simple. există şi firme specializate în unelte de proiectare care oferă capabilităţi asemănătoare. Se prezintă de asemenea procedeul de importare în Simulink şi simulare a modulelor proiectate prin metode de nivel mai jos. 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ţă. Avantajul major al dispozitivelor FPGA constă în faptul că o multitudine de resurse pot fi folosite în paralel. cum ar fi descrierea într-un limbaj de programare consacrat. precum şi metode de integrare a structurilor astfel obţinute în proiecte complexe. Un dezavantaj al acestor unelte este faptul că implementările sunt realizate folosind reprezentarea numerică în virgulă fixă. pentru proiectarea de structuri hardware folosite în control automat. Acest subcapitol prezintă pe scurt utilizarea software-ului System Generator. pot fi implementate mult mai uşor. Din aceste motive. cu păstrarea totuşi a caracterului vizual al informaţiei. produs de Xilinx.constă în faptul că hardware-ul obţinut şi modelul Simulink sunt echivalente. dar este mai puţin potrivit pentru definirea de interfeţe externe ce au cerinţe de temporizare sofisticate. Software-ul System Generator permite definirea de hardware specific pentru un anumit dispozitiv fizic într-un mediu cu un nivel înalt de abstractizare. ci îşi modifică în funcţie de setări şi context rezultatele pe care le oferă şi hardware-ul pe care îl generează. dar se pot apela şi funcţii Matlab sau se pot trimite rezultatele simulării în Matlab. În acest sens.2 Proiectarea în mediul Simulink a structurilor hardware folosind blockset-ul System Generator În general. fiind de obicei necesară microprogramarea pentru implementare. Proiectarea acestor structuri hardware poate fi realizată şi prin metodele clasice: captură de schemă sau descriere într-un limbaj de descriere hardware (HDL . ca C [73]. foarte uşor de urmărit şi înţeles. simularea în Simulink a modelului realizat fiind exactă la nivel de bit şi ciclu (bit and cycle accurate) [19]. ci numere cu semn sau fără semn. fiind mai simple. O schimbare în proiect se traduce automat în modificări ale formatelor de reprezentare. pentru operaţii diferite. Î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. unităţile de calcul specializate. Î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. System Generator poate fi folosit pentru implementarea unei anumite părţi dintr-un proiect mai complex. pentru analiză. proiectarea structurilor numerice de control în FPGA implică realizarea unui hardware specializat ce execută un anumit algoritm de control. simularea facilă. posibilitatea interfaţării cu alte unelte software. În aceste situaţii. care oferă un mediu de modelare şi simulare grafic bazat pe scheme bloc asemănător cu Simulink. Blocurile nu sunt doar reprezentări pentru elemente hardware. dar software-ul optimizează conversia din virgulă mobilă în virgulă fixă. Synplify DSP de la Synplicity generează cod RTL din modele Simulink. cum ar fi simulatoare HDL sau asambloare/compilatoare pentru procesoare soft încorporate în FPGA. Reprezentarea numerelor este tot în virgulă fixă. dar şi prin metode mai noi. Blocurile sunt scrise în limbajul C. cu lăţime variabilă. proiectarea în Simulink oferă avantaje majore: un nivel de abstractizare mult mai înalt decât proiectarea la nivel de captură de schemă logică. cu generarea automată a vectorilor de test şi vizualizarea rapidă a rezultatelor. În vreme ce o unitate aritmetico-logică de uz general oferă foarte multe posibilităţi de utilizare şi configurare. semnalele nu sunt doar biţi. proiectarea în Simulink a structurilor hardware implementate în FPGA este foarte folosită. Pe lângă oferta producătorilor de FPGA-uri.Hardware Description Language) [80]. întregi sau reale reprezentate în virgulă fixă.

Communication Blocuri corectoare de erori şi modulatoare. Memory Tools Blocuri pentru controlul simulării. Blocurile System Generator sunt precise la nivel de bit şi ciclu (bit and cycle accurate). Biblioteca Descriere Basic Elements Blocuri de bază pentru construcţia de module de logică digitală. Precizia la nivel de bit înseamnă că valorile rezultate în Simulink sunt aceleaşi cu valorile corespunzătoare returnate de hardware.1 Bibliotecile blockset-ului Xilinx. În ceea ce priveşte implementarea unui întreg sistem în System Generator. Pe lângă blockset-ul Xilinx. vizualizarea şi analiza datelor. Math Blocuri pentru funcţii matematice. blocurile System Generator sunt folosite ca şi oricare alte blocuri Simulink.2. din Simulink se poate obţine o descriere HDL a întregului proiect. elemente logice. Tabelul 3. Control Logic Blocuri pentru circuite de control şi maşini cu stări finite. În Tabelul 3. Fiecare bloc din acest blockset este implementat ca un subsistem cu mască. Data Types Blocuri pentru conversia datelor între diferite formate şi moduri de reprezentare. DSP Blocuri pentru funcţii de procesare digitală de semnal. Shared Blocuri pentru implementarea şi accesarea de memorii partajate. Pentru modelare. Blocurile oferă o reprezentare la un nivel de abstractizare mai înalt pentru funcţii matematice. Bibliotecile din Xilinx Reference Blockset sunt prezentate pe scurt în Tabelul 3. pentru găsirea mai uşoară. Toate blocurile sunt incluse în biblioteca numită Index. interfaţarea cu alte unelte. 3. există blocuri ce permit interfaţarea cu alte unelte software.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. ce poate fi apoi procesată de uneltele obişnuite de sinteză şi implementare. System Generator include şi un blockset numit Xilinx Reference Blockset.Generator pentru a implementa o porţiune din proiect. Tabelul 3. în vizualizorul de biblioteci Simulink apare blockset-ul Xilinx. conţinând funcţii compuse din blocuri Xilinx ce acoperă o arie largă de funcţionalităţi. mai orientate către detalii (captură de schemă sau descriere HDL). Imaging Blocuri pentru procesare de imagini. iar apoi modulele pot fi integrate într-un întreg. 22 . 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). DSP Blocuri pentru funcţii de procesare digitală de semnal. etc. cu bibliotecile corespunzătoare. Control Logic Blocuri logice pentru circuite de control şi maşini cu stări finite. configurabil prin intermediul parametrilor. Blocurile utilizate des sunt incluse în mai multe biblioteci. memorii. iar o altă porţiune poate fi implementată prin metode clasice. Index Conţine toate blocurile din blockset-ul Xilinx. De asemenea. Odată instalat System Generator. cum ar fi ModelSim şi FDATool. Math Blocuri ce implementează funcţii matematice.1 este prezentată o descriere sumară pentru fiecare bibliotecă. utilizate adesea în sisteme de comunicaţie digitale. funcţii tipice de procesare digitală de semnal. Memory Blocuri pentru implementarea şi accesarea memoriei. Blockset-ul Xilinx conţine blocuri de bază ale System Generator.2 Bibliotecile blockset-ului Xilinx Reference. Biblioteca Descriere Communication Blocuri utilizate adesea în sisteme de comunicaţie digitale.

5 Biblioteci ale blockset-ului Xilinx Biblioteca Basic Elements conţine reprezentări pentru diferite configuraţii de circuite secvenţiale (Addressable Shift Register.2. Indeterminate Probe. Pe lângă blocurile Black Box. Biblioteca Math permite instanţierea de operatori aritmetici (Accumulator. Logical. Convert. de exemplu interfeţe externe cu memoria sau cu dispozitive periferice. în mediul Simulink se pot proiecta structuri numerice ce pot fi apoi implementate direct în hardware. WaveScope). Delay. Threshold) sau realizarea unor funcţii matematice uzuale folosind nuclee configurabile (Complex Multiplier 3.0. Time Division Multiplexer) sau combinaţionale (Bit Basher. biblioteca Control Logic include şi blocuri pentru instanţierea de memorii (Dual Port RAM. Shared Memory. FIFO. CORDIC 4. Aceste blocuri (cu o singură excepţie. pe dispozitive de tip FPGA. Din aceste motive. şi au fost grupate aici pentru uşurarea găsirii lor. Slice. Counter. trecerea dintr-un format de reprezentare în altul. Expression. LFSR. Biblioteca Data Types grupează blocuri folosite pentru manipularea semnalelor. Unealta System Generator permite importarea unui modul HDL într-o schemă bloc 23 .12 Importarea în Simulink a unui modul proiectat prin captură de schemă Folosind unealta software System Generator. Simulation Multiplexer. fie descris direct în HDL) în Simulink pentru co-simulare folosind un simulator extern bazat pe HDL. Inverter. în funcţie de experienţa proiectantului. 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. Divider Generator 2. Toolbar. Aceste blocuri nu au în general corespondent în hardware. Reinterpret). Inverter. De asemenea. De asemenea. Sample Time. etc. precum şi a formatului de reprezentare (Assert. AddSub. extragerea de biţi sau grupuri de biţi. Reset Generator. Single port RAM) şi de procesoare (EDK Processor. Down Sample. Mux.0.3. fiind utile pentru simulare şi depanare la proiectare. De altfel.0. Mux. este foarte utilă o modalitate de combinare a metodelor de proiectare la nivel jos cu proiectarea la nivel înalt în Simulink. 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. Aceste blocuri (cu o excepţie. şi au fost grupate aici pentru uşurarea găsirii lor. oferind flexibilitate maximă. cât şi pentru proiectare la nivel de transfer între registre. instanţiind nuclee IP. Scale. Multiple Subsystem Generator. include diferite blocuri pentru controlul şi verificarea ratelor de prelucrare a datelor (Clock Enable Probe. Configurable Subsystem Manager. Concat. PicoBlaze Microcontroller). Pause Simulation. 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. Counter. metodele de proiectare la nivel jos pot da rezultate mai bune în ceea ce priveşte resursele ocupate şi timpii de execuţie. în [87] se arată că un sistem complex proiectat cu System Generator este comparabil ca performanţe cu unul proiectat în HDL. ROM. Biblioteca Memory grupează blocuri folosite pentru implementarea diverselor tipuri de module de memorie în Simulink. Constant. Slice). Expression. având chiar unele avantaje în ceea ce priveşte posibilităţile de ajustare ulterioară. Register. Time Division Demultiplexer. 3. Relational. Constant. SineCosine). Mult. Biblioteca Tools conţine diferite unelte de control şi verificare a simulării (Clock Probe. iar blocul Shift realizează operaţia de deplasare. Single-Step Simulation. de interfaţă pentru depanare (ChipScope. Disregard Subsystem. Serial to Parallel. Relational. de estimare a resurselor (Resource Estimator). Up Sample). Parallel to Serial. Din prezentarea bibliotecilor System Generator se poate trage concluzia că această unealtă de proiectare poate fi folosită atât pentru proiectare la nivel înalt. deja prezentate. Blocul MCode permite executarea de cod Matlab în Simulink. Cmult. Blocul Black Box permite încorporarea unui modul HDL proiectat în alt mod (fie rezultat după captură de schemă. Logical. Register. ModelSim) sau proiectare (FDA Tool).2.

24 . produs de Mentor Graphics. se defineşte un eveniment de declanşare a analizei (trigger. FPGAView de la First Silicon Solutions. ispTRACY de la Lattice. TLA7000 sau MSO4000 pentru depanarea sistemelor bazate pe FPGA-uri Altera. 3. În caz că se alege această opţiune. ChipScope Pro de la Xilinx. conţinând elementele de bază pentru proiectarea de hardware în FPGA şi fiind oferită de Xilinx. TLA700. 1680. Modul de lucru este următorul: se definesc semnalele ce trebuie analizate. Dacă se alege ISE Simulator. Acest lucru înseamnă că simularea Simulink nu-l va activa. 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. Exemple de astfel de unelte proiectate de producătorii de FPGAuri sunt SignalTap II de la Altera. poate fi folosit pentru urmărirea fluxului de date şi program a unul sau mai multe procesoare MicroBlaze implementate în FPGA-uri Xilinx. se defineşte perioada de eşantionare.Simulink. deci nu se va ţine cont de el. Apoi sunt transferate pe un calculator gazdă. iar semnalele de ieşire pot fi vizualizate direct în mediul Simulink. Există posibilitatea folosirii blocurilor IP interne cu instrumente specializate externe. în strânsă legătură cu memoria disponibilă în FPGA). Simulatorul ModelSim permite vizualizarea formelor de undă ale semnalelor de intrare şi ieşire ale modulului simulat. se poate folosi pentru FPGA-urile Altera. atunci se va alege o altă opţiune pentru câmpul Simulation Mode. în combinaţie cu Quartus II Logic Analyzer Interface şi aceleaşi familii de analizoare logice. o condiţie ce trebuie îndeplinită de unul sau mai multe din semnalele urmărite). folosind blocul Black Box din biblioteca Basic Elements. Realizarea unei co-simulări Simulink-HDL presupune importarea în Simulink a modulului proiectat printr-o altă metodă. Prin importarea modulului. împreună cu semnalele din restul schemei bloc.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”. care. în combinaţie cu aceleaşi familii de analizoare logice. apelat direct din Simulink. fie dintr-o traducere în limbaj HDL a unei scheme logice capturate. trebuie să existe instalat simulatorul ModelSim. Acest modul poate proveni fie dintr-o descriere directă în limbaj HDL. O altă opţiune este folosirea unui simulator extern mai performant.13 Co-simularea Simulink-HDL a unui modul proiectat prin captură de schemă După definirea modulului Black Box. Agilent oferă şi B4656A FPGA Dynamic Probe. acesta este în starea Inactive. iar în schema bloc Simulink trebuie adăugat blocul ModelSim. Acestea sunt nuclee IP ce se implementează în resursele nefolosite din FPGA. De asemenea. se defineşte dimensiunea ferestrei de analiză (numărul de eşantioane. Agilent oferă E9524A MicroBlaze Trace Toolset. Dacă se foloseşte limbajul Verilog. sau cu Logic Analyzer Core şi aceleaşi familii de analizoare logice pentru depanarea sistemelor bazate pe FPGA-uri Xilinx. TLA5000. 16800. Dacă se doreşte simularea funcţionalităţii blocului.2. atunci trebuie să se bifeze opţiunea Include Verilog unisim library pentru blocul ModelSim. 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ă. trebuie compilată în simulatorul ModelSim sub numele unisims_ver. Avantajul este evident: simulatorul HDL primeşte la intrare vectori de test generaţi automat de Simulink. 1690 de la Agilent. De exemplu. ce. pentru FPGA-urile Xilinx. Astfel de unelte sunt disponibile şi de la alte firme specializate: Identify de la Synplicity. unde pot fi vizualizate şi analizate folosind programe software specializate. dar permite şi vizualizarea semnalelor interne ale modulului. Altium Designer oferă biblioteci de instrumente virtuale pentru depanare. atunci se va folosi pentru co-simulare un simulator HDL produs de Xilinx şi inclus în pachetul ISE. biblioteca Unisim. De asemenea. acesta poate fi simulat folosind un simulator HDL extern. 3. FPGAView de la First Silicon Solutions poate fi combinat cu Quartus II Logic Analyzer Interface şi analizoare logice Tektronix din familiile TLA600. ceea ce este foarte important pentru depanare. ce se implementează în FPGA şi sunt afişate prin interfaţa software-ului de proiectare.

deşi introdusă în anii 1970. (3. motorul şi codificatorul optic de poziţie formează DCOul (DCO – Digitally Controlled Oscillator) buclei. aplicaţii de control automat implementate pe FPGA. Figura 3.8. O utilizare mai puţin răspândită. De asemenea. Dacă se foloseşte un filtru de ordinul I. KI = . cu rol de convertor numericanalogic. un filtru de buclă şi motorul cu codificatorul incremental de poziţie (tahometru optic).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ă.2) Întreaga buclă de control a fost proiectată pentru a fi implementată în FPGA.4 Studii de caz În continuare se vor prezenta trei studii de caz originale. Schema bloc a sistemului de control al motorului este prezentată în Fig. au avut un rol esenţial în familiarizarea autorului cu uneltele de proiectare şi dezvoltarea unor abilităţi de lucru cu dispozitivele FPGA. Figura 3.codificator este un sistem de ordinul 2. Pentru aceasta. 3. un filtru şi un oscilator controlat în tensiune (VCO – Voltage Controlled Oscillator).7. Bucla PLL lucrează în sensul minimizării erorii de fază dintre cele două semnale. iar filtrul a fost discretizat şi implementat prin operatori aritmetici. 25 . 3. unde K m este amplificarea.8. Acestea servesc la a exemplifica aplicarea metodologiei şi utilizarea uneltelor de proiectare prezentate. pentru controlul tensiunii aplicate motorului. incluzând proprietatea de integrator a tahometrului. Aceasta înseamnă că este nevoie de un filtru cu un zero. acesta trebuie inclus în buclă: driver-ul. Diferenţa faţă de un DCO obişnuit constă în faptul că combinaţia motor . Altfel. a fost proiectat un circuit secvenţial original detector de fază. Schema bloc a sistemului de control PLL. Din acest motiv se foloseşte un filtru de tip PI.4.2). Bucla PLL constă dintr-un detector de fază. absolut necesare pentru a atinge obiectivul final propus al tezei.1). Schema bloc a detectorului de fază. s τ 1s (3.1) F (s) = K P + K I τ 2 s +1 = . Semnalul de ieşire al oscilatorului controlat în tensiune este comparat cu un semnal de referinţă de către circuitul detector de fază. sistemul în buclă închisă va avea trei poli. a cărui funcţie de transfer este (3. unde K P = τ2 1 . şi acest lucru trebuie luat în consideraţie când se proiectează bucla.3. 3. În cazul controlului vitezei unui motor de curent continuu folosind bucla PLL. τ1 τ1 H (s) = Km s (1 + sTm ) . este dată de (3. De asemenea. cum se procedează de obicei. a fost proiectat un circuit generator de semnal modulat în durata impulsurilor (PWM – Pulse Width Modulation). faza funcţiei de transfer în buclă închisă va depăşi 180° la frecvenţe înalte şi sistemul va pierde stabilitatea. Acesta constă dintr-un detector de fază şi frecvenţă (PFD – Phase Frequency Detector).7. Schema bloc a detectorului de fază este prezentată în Fig. Funcţia de transfer a motorului. Ieşirea filtrată a acestuia comandă VCO-ul. iar Tm este constanta de timp a motorului. a buclei PLL este controlul vitezei motoarelor de curent continuu [93].

care s-a utilizat la efectuarea experimentelor.14. Notând ieşirea filtrului cu u[k] şi intrarea cu ε[k]. introduce neliniarităţi. de la Xilinx. amplificarea motorului. pe 16 biţi. Prin discretizarea acesteia. ca în [97]. acesta este proiectat în domeniul digital pornind de la ecuaţia (3. În ceea ce priveşte filtrul de buclă. ( a > 1 ). folosind diagramele Bode. adică perioada semnalului de referinţă.2).6) (3. Pentru determinarea factorilor de amplificare ai elementelor proporţional şi integrator s-a aplicat metoda proiectării în domeniul frecvenţă. frecvenţa de tăiere a termenului (1 + τ 2 s) trebuie să fie mult sub frecvenţa de tăiere 1 / Tm : τ 2 = aTm .+π) este (3. 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. bazate pe automate de stări. Acest lucru permite evitarea efectelor catastrofale ale depăşirilor [82]. adică structura hardware dedicată ce implementează ecuaţia cu diferenţe (3. Această constrângere conduce la un factor de amplificare total al buclei K=0. (3. Cunoscând valorile celorlalţi factori de amplificare ( K d . şi o eroare de frecvenţă este reflectată de comportarea circuitului.9). trebuie ales factorul de amplificare total al buclei astfel încât amplificarea să fie 0 la frecvenţa de tăiere ω = 1 / Tm .5) în z −1 . 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.+π) şi este neliniară în cazul erorii de frecvenţă.7) F ( z) = z − 1 ⎧ KP KI ⎫ z − 1 ⎡ KP z K Tz ⎤ + I Z⎨ + 2 ⎬= ⎢ ⎥ z s z ⎣ z − 1 ( z − 1) 2 ⎦ s ⎭ ⎩ (3. 3.3). Kd = 65536 2π KIT z −1 (3.4). Filtrul este implementat folosind multiplicatoarele dedicate pe 18 biţi ale dispozitivului FPGA Spartan-3E XC3S500E.5) (3.Detectorul de fază semnalează atât magnitudinea erorii de fază. care conduce la (3.8). Considerând o rezervă de 30º.8) (3.9) F ( z) = K P + F ( z) = K P + K I Tz −1 1 − z −1 U ( z ) K P + ( K I T − K P ) z −1 = Ε( z ) 1 − z −1 U ( z ) − z −1U ( z ) = K P E ( z ) + ( K I T − K P ) z −1E ( z ) u[k ] = u[k − 1] + K P ε [k ] + ( K I T − K P )ε [k − 1] . K m .3) (3. amplificarea detectorului de fază. atunci când este atinsă. Ieşirea detectorului de fază este liniară în intervalul [-π.9. incluzând caracteristica de extrapolator de ordin 0 a detectorului de fază. se ajunge la τ 2 = 10s . trecând prin (3. chiar dacă saturaţia. amplificarea circuitului 26 . se obţine (3. a defazajului. Schema bloc a filtrului digital. Este astfel superior altor circuite prezentate în literatură [101]. K a . Alegând un factor a=10 şi cunoscând Tm = 1s pentru motorul considerat.9.7) şi (3.4) (3. cât şi direcţia erorii (phase lead sau phase lag).6). unde T este perioada de eşantionare.9) este prezentată în Fig. Dacă se exprimă (3. a cărui funcţie de transfer pentru intervalul [-π. Schema bloc a filtrului digital. Pentru a găsi valoarea lui τ 1 . Figura 3.6) conduce la o relaţie de calcul pentru u[k]. Detectorul de fază proiectat oferă avantajul unei reprezentări foarte precise. acesta putând fi considerat detector de fază şi frecvenţă (PFD – Phase Frequency Detector).5). atunci (3. De asemenea. se ajunge la (3. Detectorul de fază este deci un convertor analog-numeric pentru eroarea de fază.

funcţia de transfer discretă a sistemului în buclă închisă este (3. De asemenea. fără a fi nevoie de circuite externe de conversie analog-numerică şi numeric-analogică. s-a determinat valoarea lui τ 1 : K K K K K τ1 = d a m z N = K 65536 20 320 1 ⋅ ⋅ ⋅ 60 ⋅ 2π 65536 60 50 ≈ 146 . Operaţiile de înmulţire au fost implementate folosind multiplicatoarele dedicate pe 18 biţi ale dispozitivului FPGA.0068 . impunând un anumit răspuns sistemului în buclă închisă şi folosind un model discretizat al părţii fixate. K I = = = 0. după scalarea intrărilor. S-a ales o τ 1 146 τ 1 146 valoare a divizorului programabil N=50. care este perioada de tact a sistemului implementat în FPGA.14 (3. O variantă iniţială. ca şi în [82]. perioada de eşantionare trebuie să respecte relaţia (3. descris de (3. prin deplasări la dreapta.0674288 .2s se obţine (3. amplificarea tahometrului. Varianta îmbunătăţită. s-a considerat că viteza de referinţă a motorului variază în jurul valorii de 600 rot/min. 3.PWM şi a driver-ului. Comportamentul detectorului de fază trebuie studiat mai amănunţit şi comportamentul în caz de eroare de frecvenţă trebuie îmbunătăţit.2 Implementarea în hardware a algoritmului de control deadbeat Algoritmul de control deadbeat este prezentat în multe lucrări internaţionale de referinţă. Răspunsul dorit al sistemului la aplicarea unui semnal treaptă la intrare este impus sub forma (3.068 . Perioada de eşantionare este deci T=0. şi deci control al vitezei motorului.19). Dacă diferenţa dintre semnalul de referinţă şi cel controlat este mare.0005712 − 0.18). ce pot fi sintetizate în FPGA.15). iar Tm este constanta de timp a motorului. Rezultatele experimentale au dovedit că se poate obţine calare pe fază. parametrii filtrului PI sunt: K p = τ 2 10 1 1 = = 0. Proiectarea sistemului hardware implementat în FPGA s-a realizat prin captură de schemă logică folosind Xilinx ISE.92Hz. Pentru studiul de caz. S-a 27 . împreună cu blocurile de amplificare. K N . Perioada de eşantionare influenţează şi valoarea iniţială a semnalului de comandă. Circuitul de generare a impulsurilor PWM. Acesta se bazează pe proiectarea în domeniul timp. ceea ce conduce la factorul de multiplicare K I T − K P = 0. pentru atingerea valorilor subunitare necesare.16). Discretizând (3. ceea ce conduce la K N = 1 / 50 . unde K m este amplificarea. întreaga buclă de reglare a fost implementată numeric în FPGA. dacă acesta are viteză apropiată de referinţă. pentru a simplifica circuitul de obţinere a ei.66 şi Tm =1.67108864 şi cunoscând K m = 0. a acestui studiu de caz a fost publicată în [102]. Perioada de eşantionare s-a ales multiplu de 40ns. amplificarea divizorului programabil).11) Astfel. bucla nu reuşeşte să atingă întotdeauna calarea pe fază. s-a ales tot controlul motorului de curent continuu. Acest lucru a fost posibil datorită proiectării detectorului de fază şi a circuitului PWM.17). pot fi văzute ca un convertor numeric-analogic cu funcţia de transfer K a = 20 2 16 = 20 65536 .15) cu o perioadă de eşantionare Ts = 0. prezentată mai jos. Semnalul de referinţă este generat în FPGA de la semnalul oscilatorului cu cuarţ de 50 MHz prin divizare cu 222 . Acesta este controlat prin aplicarea tensiunii de alimentare modulată în durata impulsurilor. Bucla proiectată diferă de alte abordări total digitale din literatură [93] prin aceea că este structural asemănătoare cu o buclă analogică. adică o frecvenţă de 12 Hz. obţinându-se 11. În acest experiment. Pentru efectuarea experimentelor. K z . recomandată în [82]. TΣf fiind suma constantelor de timp ale părţii fixate.4. În aceste condiţii. a fost publicată în [103]. prezentată aici. deci mult mai uşor de analizat şi modelat. 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. Pentru experimente s-a folosit un motor de curent continuu de 24V de tip Leybold Didactic 73411 Motor-Generator Set.068 = −0. 0. numai cu componente logice. pe 8 biţi.084s.

25 z − 0.20) (3.8 z − 2 − 0..22) Ts ≥ 0.16) (3. Aceasta permite precizie fixă la operaţia de înmulţire. structura de tip cascadă. 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). cu ajutorul utilitarului Xilinx System Generator. 3.17) şi (3.1] + q 2 ε [k .18) (3. (3.18) folosind relaţia (3.7333 .05 z 4 (3.  q 3 = -0. Din (3.05 z − 4 u[k ] = q 1ε [k . cum ar fi: forma directă II.8297 .  q1 = 2. Forma directă I [104] de implementare este prezentată în Fig. Fig. paralel. Pentru înmulţire se folosesc multiplicatoarele pe 18 biţi integrate în dispozitivele Spartan-3E.11 prezintă implementarea regulatorului cu blocuri specifice System Generator în Simulink.22). intrarea CAN-ului va fi pozitivă. Funcţia de transfer a regulatorului se obţine din (3.=1 (3.15) y[T]=0.3] + q 4 ε [k . La sfârşit.25u[k . s-a ales forma directă I pentru implementare. sub forma (3.19) G p ( z) = 0.4] + 0.10. G p ( s) = Km 1 + sTm .2827 z − 0.05u[k .21). Figura 3..22). Avantajul acesteia este că stadiile de adunare şi înmulţire sunt independente.8. dublă precizie.21) se obţine o relaţie de calcul pentru u[k]. aşa cum s-a menţionat în secţiunea 3. descrise în [104]. y[2T]=0.2] + 0. Toate operaţiile sunt realizate folosind aritmetică în virgulă fixă cu semn (reprezentare în complement faţă de 2). rezultatul este trunchiat la precizia dorită.5716 1 G0 ( z −1 ) −1 G p ( z ) 1 − G0 ( z −1 ) G0 ( z ) = 0.1011 . se va renunţa la bitul de 28 .20). q 4 = 0. cu q 0 = 0 . Semnalul de reacţie este primit de la un convertor analog-numeric (CAN) pe 14 biţi. Implementarea s-a realizat în mediul Simulink. pentru sistemul propus. este posibilitatea simulării precise a structurii hardware ce va fi apoi sintetizată automat.36 TΣf GR ( z −1 ) = U ( z −1 ) q0 + q1z −1 + q2 z −2 + q3 z −3 + q4 z −4 (3. y[3T]=1. y[4T]=y[5T]=. De aceea.21) = Ε( z −1 ) 1 − 0. eliminând acumularea de erori de cuantizare. Pentru implementarea fizică sunt posibile şi alte structuri.10.10.2. Forma directă I a regulatorului deadbeat. 3.8u[k .17) (3.25 z −3 + 0. Paralelismul potenţial al algoritmului poate fi observat direct din forma prezentată în Fig. 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. Aceasta este derivată direct din (3.05. Regulatorul implementat astfel a fost simulat împreună cu un model Simulink în virgulă mobilă.3] − 0.verificat prin simulare că. încrucişată (lattice) sau încrucişată în scară (lattice-ladder). 3. valoarea semnalului de comandă nu depăşeşte limitele de saturaţie ale dispozitivelor fizice folosite la experimente. dar precizie crescândă la operaţiile de adunare. Viteza motorului fiind convertită într-o tensiune cuprinsă între 0V şi 8V. cu ieşirea cu semn în complement faţă de 2.2] + q 3 ε [k . 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.4] Această ecuaţie cu diferenţe recurentă descrie un sistem cu răspuns infinit la impuls (IIR – Infinite Impulse Response).6823 .  q 2 = -0.8 z 2 + 0. Avantajul metodei. Este evident că cea mai rapidă implementare va efectua în paralel toate înmulţirile şi cât mai multe dintre adunări. se obţine (3.

respectând restricţia (3. şi implementarea în FPGA. ca şi la bitul cel mai puţin semnificativ.3. Conversia analog-numerică şi citirea datelor din CAN durează aproximativ 80 de cicli de tact. Pentru aceasta va fi trunchiat la 12 biţi de la reprezentarea internă a motorului de calcul. de 18 biţi. 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ă. corespunzător perioadei de eşantionare. transmiterea datelor CNA durează aproximativ 40 de cicli de tact. S-a proiectat câte un automat cu stări finit (FSM – Finite State Machine) pentru fiecare din cele 3 entităţi. circuitul de procesare de semnal şi circuitul de control al CNA. Perioada de eşantionare este aşadar aproximativ 0. cu 3 biţi pentru partea întreagă şi 9 biţi pentru partea fracţionară.19). ce constituie centrul entităţii de procesare de semnal. 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. fără a folosi vreun procesor soft. cu interfaţă serială. Fiecare entitate rămâne în starea idle până când sunt disponibile date de procesat de la entitatea anterioară.22) este calculată în mai puţin de 40ns. ceea ce complică în oarecare măsură circuitele de interfaţare. Acest lucru permite obţinerea de performanţe extraordinare 29 . fiind pilotate de un semnal de tact de 25 MHz. Entitatea de control al CAN-ului este activată de un semnal Ts. poate fi analizată prin simulare. unul pe 16 şi celălalt pe 8 biţi. Această abordare este diferită de cea prezentată în [26]. interpretând valoarea de intrare ca un număr în virgulă fixă fără semn. unde un FSM global controla fluxul de date între diferitele entităţi. în virgulă fixă pe 18 biţi. prin divizare cu 224 . Figura 3. Semnalul de ieşire va fi trimis unui convertor numeric-analogic (CNA) pe 12 biţi. Din schema Simulink cu blocuri System Generator s-a generat automat un modul Verilog. Aceasta a fost de ordinul 10 −3 şi se datorează în mare măsură erorilor de cuantizare ale CAN şi CNA. în virgulă mobilă cu dublă precizie.semn. Comunicaţia între ele este realizată cu ajutorul semnalelor de protocol (handshake) de tip ready/strobe. Aşa cum s-a menţionat în Secţiunea 2. Diferenţa între implementarea în Matlab a regulatorului. Interfeţele seriale au fost proiectate în totalitate în hardware. Implementarea regulatorului deadbeat în System Generator. Aceasta este obţinută tot din semnalul de tact de 25 MHz. şi mai puţin erorilor de cuantizare a parametrilor regulatorului. Folosind în paralel multiplicatoarele integrate în FPGA. Datorită faptului că semnalul de comandă se saturează la 13V din cauza amplificatoarelor fizice folosite. Toate elementele de logică secvenţială sunt sincrone. 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. Întregul sistem de control a fost proiectat în hardware şi constă din 3 entităţi: circuitul de control al CAN. ecuaţia (3.11. primul pas în implementarea unui algoritm în hardware este rafinarea lui. S-au folosit convertoare cu cost scăzut. cu ajutorul a două numărătoare binare cascadate. iar calculele pentru următorul eşantion de ieşire se realizează într-un singur ciclu de tact.6711s.

Există mai multe topologii de circuite driver folosite în aplicaţiile cu motoare BLDC. limitate doar de perioada de eşantionare (performanţele CAN-ului. 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ţă. motoarele BLDC se încadrează în categoria motoarelor cu magneţi permanenţi. Pentru ca puterea de ieşire să fie constantă.3 Proiectarea. Cele mai folosite sunt convertorul trifazic de tip Buck şi puntea invertoare trifazică [34]. Motoarele a căror BEMF este sinusoidală sunt cunoscute în literatură ca motoare BLAC (Brushless Alternative Current).pentru sistemele de control digitale. fiecare înfăşurare trebuie alimentată pe durata în care tensiunea indusă este constantă [34]. pentru motoarele BLAC se foloseşte termenul PMSM. 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ă. împreună cu amplificatoare Leybold Didactic 73413 Power Amplifier Block şi Leybold Didactic 73419 Gain and Offset Adjust Block. Adesea. Aşa cum se poate observa. În Fig. În funcţie de cum sunt realizate înfăşurările statorului.13 este prezentată o comparaţie între rezultatele simulării regulatorului în Simulink şi rezultatele experimentale obţinute după implementarea în FPGA. 3. Pe lângă un regulator de viteză de tip PI. 3. 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). Datorită faptului că rotorul nu trebuie alimentat electric. Din punct de vedere constructiv. 3.14. Pentru experimente s-a folosit un motor de curent continuu de 24 V de tip Leybold Didactic 73411 Motor Generator Set. Figura 3. O punte invertoare trifazică tipică pentru conducerea unui motor BLDC este prezentată în Fig. CNAului).4. Forme de undă tipice pentru un motor BLDC trifazic. tensiunea electromagnetică indusă (BEMF – Back Electromotive Force) poate prezenta o formă de undă sinusoidală sau trapezoidală. Puntea este alcătuită din 6 comutatoare electronice. Un PMSM este constituit dintr-un rotor cu magnet permanent şi un stator electromagnetic. Formele de undă tipice pentru un motor BLDC trifazic sunt prezentate în Fig. În practică se folosesc tranzistoare cu efect de câmp construite în tehnologie metal–oxid–semiconductor (MOSFET – Metal–Oxide– 30 . se elimină periile ce ar trebui să transmită curentul electric rotorului. Se observă caracteristica regulatorului deadbeat şi performanţe asemănătoare ale implementării cu cele aşteptate după simulare.15. Implementarea în FPGA a algoritmului de control deadbeat a fost publicată în lucrarea [105]. Implementarea în FPGA foloseşte 7 multiplicatoare în paralel şi doar 9% din resursele logice disponibile în dispozitivul Xilinx Spartan-3E XC3S500E.13. 3. s-au implementat şi o serie de module hardware pentru conducerea motorului şi determinarea vitezei acestuia. în vreme ce motoarele a căror BEMF este trapezoidală sunt cunoscute ca motoare BLDC. Figura 3.14. deşi acesta este mai general. Comparaţie între rezultatele simulării şi cele experimentale. Avem aşadar de a face cu un motor sincron cu magneţi permanenţi (PMSM – Permanent Magnet Synchronous Motor).

10.Semiconductor Field–Effect Transistor) sau tranzistoare bipolare cu baza izolată (IGBT – Insulated Gate Bipolar Transistor). trebuie realizată electronic. În plus. Sistemul de control trebuie aşadar să dispună de informaţii cu privire la poziţia rotorului pentru a alimenta corect înfăşurările. înfăşurările statorului trebuie alimentate într-o anumită secvenţă.10 prezintă corespondenţa tipică între codurile citite de la senzorii cu efect Hall. fiecare fază (înfăşurare) este alimentată pe durata celor 120° cât tensiunea indusă este constantă. rezoluţia este mult mai înaltă decât dacă se folosesc semnalele provenite de la senzorii Hall. Aşa cum se poate constata din Fig. Figura 3. 3. 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).14. Acest tip de traductor este preferat în proiectarea sistemelor de control numerice. motoarele sunt echipate cu un traductor de viteză (tahometru) cu rezoluţie mai mare. dar a doua metodă implică costuri mai scăzute. apare necesitatea unei comutaţii la fiecare 60°. cât şi despre viteza de rotaţie. Semnalele QEP pot oferi informaţii atât despre direcţia de rotaţie. Tabelul 3. De obicei semnalul PWM este injectat comutatoarelor de pe ramura de jos. De obicei. ce oferă la ieşire o tensiune proporţională cu viteza de rotaţie. 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ă. Tranzistoarele IGBT se folosesc de obicei în aplicaţiile ce implică puteri sau tensiuni mari. 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+ DCOFF 1 1 0 Q1 Q6 DC+ OFF DC0 1 0 Q3 Q6 OFF DC+ DC0 1 1 Q3 Q2 DCDC+ OFF 0 0 1 Q5 Q2 DCOFF DC+ 1 0 1 Q5 Q4 OFF DCDC+ 31 . construcţia motorului este mai simplă. Prima metodă este mai uşor de implementat folosind doar circuite digitale. Acesta poate fi un tahogenerator. la motoarele BLDC comutaţia curentului prin înfăşurări nerealizându-se automat prin comutare mecanică. Spre deosebire de motoarele de curent continuu cu perii. dar rezoluţia este destul de redusă. 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. sau un tahometru optic. direcţia curentului prin înfăşurări şi starea comutatoarelor pentru o rotire în direcţia acelor de ceasornic a motorului BLDC. deoarece. dar au rezistenţă internă (şi deci putere disipată) mai mare în conducţie. Tabelul 3.15. Secvenţa de comutaţie pentru rotirea motorului BLDC. 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. înfăşurările corespunzătoare sunt alimentate. 3. eliminându-se necesitatea senzorilor. Pe baza acestor coduri. Semnalele provenite de la senzorii Hall pot fi folosite pentru a determina viteza motorului. Punte invertoare trifazică pentru conducerea unui motor BLDC. tehnică cunoscută sub denumirea de modulaţie în lăţimea impulsurilor (PWM – Pulse Width Modulation).15. ce furnizează la ieşire două semnale digitale codificate în cuadratură (QEP – Quadrature Encoded Pulses). Controlul vitezei necesită cunoaşterea vitezei motorului la un moment dat. Comutatoarele sunt identificate conform notaţiilor din Fig. deoarece oferă direct o interfaţă digitală. Tranzistoarele MOSFET au pierderi de comutaţie mai mici decât tranzistoarele IGBT. controlându-se starea comutatoarelor punţii invertoare. Aşa cum s-a menţionat în paragraful anterior. De obicei. tensiunea aplicată înfăşurărilor trebuie variată. Pentru a controla viteza motorului BLDC. Pentru a roti motorul.

Deoarece semnalele QEP provin de la o sursă externă nesincronizată.10 s-a proiectat modulul ce implementează generarea secvenţei de comutaţie. acest tip de regulator având o utilizare de tradiţie în controlul motoarelor. în mod aleator. Câteva din blocurile din schema din Fig.16. 32 . Pentru a contracara această problemă s-au introdus bistabili de tip D pe semnalele QEP. implementat cu un singur bistabil. 3. Logica de comutaţie are la ieşire 6 semnale. Logica de comutaţie este implementată prin 6 celule de memorie ROM de 16 biţi fiecare. Logica de comutaţie Pe baza Tabelului 3. 3. 3. cât şi cele căzătoare ale ambelor semnale QEP sunt contorizate. Ieşirea fiecărui circuit de detecţie a frontului se activează când intrarea monitorizată şi conţinutul bistabilului. Modulele logice au fost implementate prin captură de schemă. frontul semnalului QEP ar putea apare foarte aproape de frontul crescător al semnalului de tact al elementelor sincrone. foarte simplu.16 sunt prezentate în continuare din punctul de vedere al implementării. Codul furnizat de senzorii Hall şi intrarea de validare reprezintă adresa pentru memoriile ROM. sincronizându-le cu semnalul de tact. Acest circuit este un automat cu stări finit de tip Mealy. Sistemul este sincron. respectă secvenţa dorită (0-1 sau 1-0). ce a fost implementat şi simulat în mediul Simulink.18. a trei senzori Hall şi a unui tahometru optic cu ieşiri QEP. chiar dacă circuitul de detecţie a frontului funcţionează corect. ca în [80]. 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. 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.16 prezintă schema bloc a sistemului de control al vitezei. 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. 3. Acest hazard ar putea duce la “ratarea” incrementării numărătorului din când în când. Sistemul de control a fost proiectat pentru a fi implementat direct în hardware pe un dispozitiv FPGA Spartan-3E. Regulatorul de viteză este de tip proporţional-integrator (PI) discret. Schema bloc a sistemului de control al vitezei pentru motorul BLDC. pilotat de un semnal de tact de 50MHz.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. Pentru o rezoluţie mai bună a măsurării vitezei. fronturile semnalelor QEP sunt contorizate prin incrementarea numărătorului la fiecare impuls de detecţie de front. atât fronturile crescătoare. fiecare semnal reprezentând starea unuia din cele 6 tranzistoare ale punţii. Frontul semnalului QEP ar fi în acest caz detectat (ieşirea automatului de detecţie a frontului se activează. Figura 3.15. Ieşirea circuitului de detecţie a frontului este activă exact un ciclu de tact. cu excepţia regulatorului PI. Logica de estimare a vitezei Schema bloc a circuitului de estimare a vitezei este prezentată în Fig. Sistemul este total digital şi se interfaţează cu motorul BLDC prin intermediul unei punţi invertoare trifazice de tipul celei din Fig. Fig. automatul fiind de tip Mealy). Se utilizează câte un circuit de detecţie pentru fiecare front. Conţinutul fiecărei memorii ROM reprezintă starea tranzistorului corespunzător pentru fiecare combinaţie posibilă de intrare. În acest fel. care este de fapt valoarea intrării din ciclul de tact anterior. folosind software-ul Xilinx System Generator.

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.18. Acest lucru se realizează cu o întârziere de o perioadă de tact faţă de impulsul TS ce salvează valoarea. asigurându-se cea mai mică asimetrie (clock skew) posibilă a semnalului de tact [5].28) şi detectată de un comparator de egalitate. Semnalele capturate au fost vizualizate şi analizate pe un calculator gazdă folosind utilitarul ChipScope Pro Analyzer. 3. Conţinutul numărătorului este salvat într-un registru la fiecare perioadă de eşantionare. În Fig.Astfel. deoarece structura internă a dispozitivului prevede resurse speciale de rutare globală pentru semnalul de tact. 3. dată de (3. produs tot de Xilinx.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). De asemenea se observă că fiecare front pe fiecare semnal QEP este detectat şi produce o 33 . Figura 3. Semnalele circuitului de estimare a vitezei. pilotat de semnalul de tact de 50MHz.18. După salvarea în registru a valorii ce corespunde numărului de impulsuri QEP. Semnalul de tact este generat în FPGA de la un oscilator cu cuarţ de 50MHz. întârziere implementată cu un bistabil de tip D ca în Fig. Pentru ca aceste resurse să fie alocate la implementare. este necesar ca proiectarea să fi fost făcută corect. Funcţionarea circuitului de estimare a vitezei este prezentată în Fig. Când ieşirea numărătorului atinge o anumită combinaţie. Figura 3.19 se observă cele 2 semnale QEP provenind de la tahometru în funcţionarea reală. Faptul că toate circuitele folosesc acelaşi semnal de tact reprezintă un avantaj pentru proiectarea în FPGA. (3. eliminânduse hazardul şi uşurându-se analiza de temporizare a sistemului.19. Modulul de estimare a vitezei motorului.28) Divizorul de tact e implementat printr-un numărător binar pe 16 biţi. disponibile ca nuclee IP. toate semnalele din schemă sunt sincrone cu un singur semnal de tact. Acestea au fost instanţiate în schemă şi conectate la semnalele ce trebuie monitorizate. produse de Xilinx [107]. Pentru o perioadă de tact Tclock = 20ns şi o perioadă de eşantionare dorită Ts = 1ms rata de divizare este DIV _ CONST = Ts / Tclock = 50000 = 0xC350 . Perioada de eşantionare este obţinută prin divizarea semnalului de tact. numărătorul acestor impulsuri trebuie resetat. 3.

coeficienţii regulatorului PI s-au ales K I _ 1 = 0. Acest lucru 34 .41).1 2047 . şi apoi calculul valorii de intrare în circuitul PWM.8604 (3. KI = KI _1 APWM Aspeed _ est = 1704.38).36) KP = KP _1 APWM Aspeed _ est = 12. Acest lucru simplifică mult calculele. Motorul folosit este echipat cu un tahometru optic cu 500 de linii. ţinându-se cont de faptul că ieşirea regulatorului nu reprezintă direct valoarea tensiunii de comandă a motorului.40) în z −1 rezultă (3. ci numărul de fronturi ale semnalelor QEP contorizate într-o ms.1V. La expirarea perioadei de eşantionare. iar E(s) este intrarea regulatorului (eroarea). la fiecare perioadă de eşantionare.37) Pentru implementarea regulatorului trebuie determinată o relaţie de calcul a ieşirii în funcţie de intrare. 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]. şi acest lucru trebuie modelat ca o amplificare pe calea directă. Exprimând (3. De asemenea. Factorii regulatorului PI obţinuţi prin simplificarea computaţională sunt daţi de (3.53 . deci CPR = 500 * 4 = 2000 .39) K I Ts K T + K P ) + ( I s − K P ) z −1 2 2 = −1 −1 1− z E(z ) (3. acesta din urmă se modelează ca o amplificare în serie cu regulatorul. acestea sunt contrabalansate direct în factorii de amplificare ai regulatorului PI. deoarece astfel se face măsurarea.36) şi (3.39) se ajunge la funcţia de transfer discretă în domeniul z (3.42) descrie un sistem numeric cu răspuns infinit la impuls (valoarea anterioară a ieşirii intervine în calculul valorii curente). ţinând cont de faptul că circuitul de estimare a vitezei nu raportează viteza motorului în RPM. Aceste valori asigură un regim tranzitoriu de aproximativ 20ms şi o suprareglare minimă. 30 Pentru a elimina efectul acestor amplificări pe calea directă. ceea ce implică Aspeed _ est = 1 .42) de calcul pentru u[k].40) U ( z −1 ) ( s= 2 z −1 Ts z + 1 (3. Astfel. unde U(s) este ieşirea de comandă. se calculează constantele ce vor fi folosite în implementare. pornind de la reprezentarea în domeniul s a regulatorului PI dată de (3. nefiind necesară obţinerea valorii vitezei.38) (3. G R (s) = GR ( z) = K U ( s) = Kp + I s E ( s) K T z −1 U ( z) = Kp + I s E( z) 2 z +1 (3. Regulatorul PI discret Pentru motorul folosit la partea experimentală. semnalizată de un impuls pe linia TS_tick.003 (3. ci la ms.incrementare a numărătorului de impulsuri QEP. deci APWM = 19. numărătorul este resetat după ce valoarea a fost salvată într-un alt registru.42) u[k ] = ( K I Ts K T + K P )ε [k ] + ( I s − K P )ε [k ] + u[k − 1] 2 2 Regulatorul s-a implementat în Simulink. folosind blocuri System Generator. unde CPR este numărul de fronturi QEP generate de o rotaţie 60 *1000 completă a motorului.37). În cazul particular al echipamentului folosit tensiunea de alimentare nominală este de 19. cu factorul de amplificare dat de APWM = Us . Revenind în domeniul timp. al cărui conţinut poate fi observat pe linia CNTR_ms. K P _ 1 = 0. ci intrarea în circuitul PWM. Folosind transformarea biliniară (3. apoi aplicarea algoritmului de reglare. cu factorul de amplificare Aspeed _ est = CPR . se obţine relaţia (3.41) (3. iar numitorul provine din raportarea vitezei nu la minut (ca RPM). Circuitul PWM lucrează pe 11 biţi.40).004 . unde U s este tensiunea de alimentare a motorului şi w este lăţimea cuvântului 2w − 1 (numărul de biţi) circuitului de generare a semnalului PWM. Se observă că (3.

S-au ales 18 biţi pentru a profita de precizia multiplicatoarelor dedicate în FPGA. S-au discutat nucleele IP ca module refolosibile. Simularea şi integrarea sistemului Modulele proiectate prin captură de schemă logică au fost co-simulate folosind Simulink şi ModelSim. Pentru circuitul de sumare nu s-au introdus limitări de reprezentare. obţinut în Matlab. 3. având rolul de a da cititorului o idee 35 . În acest fel. dar metoda de proiectare în Simulink a regulatorului şi apoi integrarea acestuia într-un proiect mai mare realizat prin captură de schemă este originală. ci reprezentărilor intrării (pe 9 biţi. Deşi avantajele co-simulării Simulink-ModelSim sunt certe. folosind faptul că dispozitivul FPGA poate constitui el însuşi o parte a uneltei de depanare. Din această cauză se preferă adesea o depanare a sistemului în funcţionarea reală. 3.24 prezintă un grafic.1V de tipul Pittman 3411. Fig. oferind posibilitatea validării modulelor cu generarea automată a secvenţelor de intrare probabile şi în realitate. Trecerea în revistă este destul de sumară. Astfel. În [111] a fost publicată metoda de analizare a caracteristicilor dinamice ale motorului folosind ChipScope. lucrânduse pe 27 de biţi şi neintroducându-se niciun fel de erori.a permis simularea împreună cu un model în virgulă mobilă. se pot observa semnalele interne ale sistemului. folosind analizoare logice virtuale implementate în FPGA. metoda este destul de consumatoare de timp şi resurse (necesită un calculator gazdă cu mare putere de calcul). 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. dublă precizie. De exemplu. instanţiindu-se fiecare modul în câte un Black Box. şi evaluarea erorilor introduse de procesul de cuantizare. cu poziţia virgulei aleasă astfel încât să permită o precizie cât mai bună ţinând cont de magnitudinea numerelor. Limitările de format s-au făcut cu saturaţie la detecţia depăşirii. Figura 3. datorită implementării circuitului PWM). reintroducerea în calcul a valorii anterioare a ieşirii folosind 24 de biţi.1. produs de Ametek. prin folosirea analizorului logic virtual ChipScope ILA şi a utilitarului ChipScope Pro Analyzer [107]. erorile de cuantizare fiind datorate nu coeficienţilor. Metoda este aplicabilă analizei oricăror procese rapide interfaţate prin semnale digitale. nu prin automate cu stări. deoarece nu se contorizează mai mult de 256 de fronturi QEP într-o ms) şi ieşirii (pe 11 biţi fără semn. Variaţia semnalului de comandă şi a vitezei la modificarea treaptă a referinţei. prin celule de memorie ROM. Sistemul de control pentru BLDC a fost publicat în forma prezentată aici în [109]. se pot analiza datele capturate de pe sistemul hardware rulând în timp real pe FPGA. produs de Technosoft. Singura limitare este impusă pentru reacţie. S-au folosit facilităţile oferite de System Generator. O formă îmbunătăţită prin reproiectarea regulatorului PI după paradigma automat cu cale de date [80] a fost publicată în [110]. Pentru reprezentarea coeficienţilor regulatorului s-au folosit cuvinte de 18 biţi. Precizia calculelor s-a dovedit foarte bună.24. Metoda de validare prin co-simulare Simulink/ModelSim a mai fost folosită în literatură [32].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. şi un circuit de comandă a motorului (punte invertoare trifazată) PM50v3. Este posibilă exportarea datelor din ChipScope în format ASCII şi importarea lor în Matlab ca şi vectori. Pentru experimente s-a folosit un motor de 19. 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). precum şi uneltele de dezvoltare pentru sisteme încorporate şi pentru nuclee DSP.

de tip PI. acest capitol prezintă importante contribuţii aplicative ce ilustrează utilizarea acestora. şi validat prin simulare. în a doua secţiune. precum şi avantajele oferite de aceste dispozitive faţă de alte alternative. De 36 . 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. pe lângă contribuţiile teoretice legate de sistematizarea unor informaţii vaste despre unelte de proiectare pentru FPGA. Din nou. în Simulink. proiectate la nivel de schemă logică. sistemul implementat în FPGA constă dintr-un detector de fază şi frecvenţă de concepţie originală. folosind analizorul logic “virtual” ChipScope pentru capturarea şi vizualizarea semnalelor interne. folosind System Generator. importându-se blocurile proiectate prin schemă şi folosind ModelSim pentru co-simulare Simulink-HDL. Cea de-a treia secţiune reprezintă o scurtă trecere în revistă a uneltelor de depanare pentru sistemele proiectate în FPGA. deci acesta se poate verifica amănunţit. datorită dinamicii destul de lente a părţii fixate. rezultatele obţinute fiind în concordanţă cu simulările din stadiul de validare. 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. dintr-un filtru de buclă de tip PI şi dintr-un circuit de generare de semnal PWM. Algoritmul de control. algoritmul deadbeat a fost proiectat ca un filtru IIR. Deşi aplicaţiile prezentate nu reprezintă cu adevărat o provocare pentru puterea de calcul ce se poate obţine folosind dispozitivele FPGA. avantajele sunt semnificative: vectorii de test sunt generaţi automat de către Simulink. produs de Xilinx. Sistemul a fost verificat experimental. simulatorul HDL poate afişa semnalele interne ale modulului simulat. Î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. Aşadar. • Un sistem de reglare a vitezei motorului de curent continuu bazat pe algoritmul deadbeat. ele au constituit un pas esenţial în familiarizarea autorului cu uneltele specifice şi caracteristicile dispozitivului FPGA în vederea atingerii obiectivului propus al tezei. obţinându-se aceeaşi comportare ca la simulare. acestea pot fi apoi descărcate şi vizualizate/analizate pe un calculator gazdă sau pe un alt echipament de laborator. Partea de conducere a motorului a fost proiectată prin captură de schemă logică. î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. Tot în această secţiune s-a prezentat modalitatea de cosimulare Simulink-HDL a unui modul proiectat prin alte metode decât folosind System Generator (captură de schemă logică sau descriere HDL). sistemul a fost apoi integrat şi verificat experimental. trebuie neapărat subliniat faptul că dispozitivul FPGA poate constitui el însuşi o platformă pentru depanare. este prezentat ceva mai detaliat software-ul System Generator. Prezentarea este o sinteză din sute de pagini de documentaţie [85]. ce permite proiectarea de hardware implementabil în FPGA direct din mediul Matlab Simulink. ca microcontrolerele sau DSCurile. ci insistă pe acele biblioteci ce au aplicabilitate în cazul proiectării de structuri hardware pentru control automat. s-au implementat în FPGA module de control pentru CAN şi CNA cu interfeţe seriale. • Un sistem de reglare a vitezei pentru motorul BLDC. În continuare. Nu are pretenţia unei prezentări exhaustive.despre complexitatea sistemelor ce se pot implementa într-un dispozitiv FPGA şi despre gradul de abstractizare la care se poate face proiectarea pentru FPGA. Întreg sistemul a fost verificat prin simulare în Simulink. datorită reconfigurabilităţii sale: semnalele interne pot fi rutate la pini nefolosiţi şi urmărite din exterior. a fost proiectat în Simulink cu System Generator. apoi verificat experimental. sistemul a fost proiectat prin captură de schemă logică şi validat prin simulare în ModelSim. această trecere în revistă are rolul de a evidenţia interesul acordat de producătorii de echipamente de testare dispozitivelor FPGA. Astfel. Merită subliniat că toate aplicaţiile prezentate au fost realizate fizic şi verificate experimental.

oferă proiectanţilor posibilitatea de a configura procesorul la momentul generării structurii sale hardware. Procesorul oferă avantajul unui flux de proiectare cunoscut.2. [103]. mai rapid şi deja proiectat. necesitând mai mult timp şi fiind mai puţin precisă. au reprezentat pretexte pentru a experimenta cu diferite unelte. Prin procesor soft se înţelege un procesor realizat folosind resursele generale ale unui dispozitiv programabil. 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. dimensiunea memoriei intermediare (cache). [110]. pe când un procesor obişnuit era mai ieftin. [109]. 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. implementate ca nuclee hardware specifice şi nereconfigurabile. În plus. spre deosebire de procesoarele hard. 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. În ziua de astăzi. este oferit în trei configuraţii ale benzii de asamblare: Nios II/f (fast – rapid). pe o platformă verificată. 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ă. 4. 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. Spre exemplu. 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. procesorul Nios II. în vederea elaborării ulterioare a unei metodologii de lucru. cu rezultatele cele mai bune din punctul de vedere al timpului de calcul. 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. [111]. Aşa cum s-a menţionat şi în secţiunea 3. În vreme ce folosirea dispozitivelor FPGA pentru implementarea în hardware a algoritmilor este evident cea mai avantajoasă utilizare a resurselor. 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. astfel încât acesta să se potrivească cât mai bine cerinţelor.1. astfel de sisteme pot fi integrate pe un singur cip.asemenea. produs de Altera pentru FPGA-urile lor. [105]. în unele aplicaţii timpul de procesare nu este critic. ceea ce înseamnă că practic costul lor este nul. cât şi cele implementate în ASIC. etc.1 Procesoare configurabile Atât procesoarele implementate în FPGA. Se poate astfel alege modul de implementare a benzii de asamblare (pipeline). există aplicaţii în care utilizarea unui procesor este preferabilă. verificarea şi evaluarea unui procesor implementat într-un ASIC se face pe o simulare. încât de obicei pot fi implementate în resursele nefolosite de aplicaţia principală din FPGA. 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 37 . Nios II/s (standard) şi Nios II/e (economy – economic) [112].1 Consideraţii privind proiectarea de procesoare soft pentru FPGA Până spre sfârşitul anilor 1990. împreună cu suportul software necesar pentru programarea respectivelor procesoare. implementarea circuitelor de înmulţire şi împărţire. atât producătorii de FPGA-uri. 4.1. fără a fi necesare modificări majore ale software-ului. procesoarele soft ocupă atât de puţine resurse. cât şi firme specializate în dezvoltarea de unelte de proiectare oferă procesoare optimizate pentru implementarea în FPGA. 4. Originalitatea şi actualitatea sistemelor de control prezentate în acest capitol au condus redactarea şi publicarea a 6 lucrări: [102].

tehnica de execuţie re-ordonată a instrucţiunilor (out-oforder execution) nu este utilizabilă la implementarea în FPGA datorită performanţelor relativ scăzute ale logicii de control implementate folosind elemente logice. 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. Varianta Nios II/s are o bandă de asamblare cu doar 5 niveluri. Aceste prototipuri nu sunt însă utilizabile în aplicaţii comerciale. Procesoarele implementate pe ASIC au mulţi parametri configurabili la rulare prin intermediul unor registre de control. Varianta Nios II/e nu mai oferă paralelism la nivelul instrucţiunii. performanţele memoriei RAM din FPGA sunt apropiate de performanţele memoriei RAM din ASIC. O mare parte din posibilităţile de comportare nu vor fi însă folosite dinamic. 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. 4. procesorul oferă resurse care în unele aplicaţii nu vor fi niciodată utilizate. elemente programabile de interconectare). Ele vor fi configurate la iniţializarea sistemului şi îşi vor păstra aceeaşi configuraţie pe toată durata utilizării sistemului.performanţele obţinute. De exemplu. De fapt. Astfel. Astfel. 4. performanţele obţinute de procesor sunt foarte scăzute faţă de varianta Nios II/s. memorie cache opţională pentru date şi predicţie dinamică a salturilor folosind o tabelă cu 2 biţi de istorie [113]. faptul că sunt reconfigurabile oferă avantaje nete la proiectarea de procesoare. În cazul unei aplicaţii care are nevoie de un alt mod de utilizare a unui modul. ocupând mai puţin spaţiu.1. Nios II/s foloseşte cu 20% mai puţine resurse decât Nios II/f. Din cauza diferenţelor de performanţe relative. pe când performanţele elementelor logice din FPGA sunt mult mai slabe decât performanţele porţilor logice din ASIC. Procesorul oferă astfel resurse ce acoperă toate posibilităţile de comportare a unui modul. O provocare a proiectării de procesoare pentru FPGA constă în a ţine cont de performanţele relative ale resurselor dispozitivului FPGA (elemente logice.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. multiplicatoare. şi care au un impact semnificativ asupra resurselor ocupate 38 . foarte diferite de performanţele relative ale resurselor unui ASIC (porţi logice. parametri ce pot fi setaţi prin software în timpul funcţionării sistemului. procesoarele implementate pe ASIC-uri sunt adesea prototipizate pe FPGA-uri pe parcursul dezvoltării lor. procesorul poate fi re-generat cu alţi parametri şi reîncărcat în FPGA. nu oferă memorie cache de instrucţiuni sau date şi nici mecanism de predicţie a ramificaţiilor.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. dar şi spaţiul ocupat este de două ori mai mic [113]. memorii RAM şi trasee cablate) [112]. De exemplu. execuţia unei instrucţiuni necesitând 6 cicli de tact. procesorul oferă doar resursele necesare unei aplicaţii. Astfel. în timpul rulării sistemului. dar performanţele scad cu aproximativ 40% [113]. Adoptarea soluţiilor folosite în proiectarea pentru ASIC-uri conduce rareori la rezultate satisfăcătoare la implementarea î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. De asemenea. Varianta Nios II/f oferă o bandă de asamblare pe 6 niveluri. folosirea unor tehnici utilizate pentru îmbunătăţirea performanţelor procesoarelor implementate pe ASICuri s-ar putea să conducă la deprecierea performanţelor procesoarelor la implementarea în FPGA. 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. cu memorie cache opţională pentru instrucţiuni. iar registrele de control definesc comportarea modulului la un moment dat. fiind utile doar pentru validarea şi testarea unor concepte de proiectare.1. cu memorie cache de instrucţiuni dar fără memorie cache de date şi mecanism de predicţie statică a salturilor. memorii RAM.

[120]. atât din punctul de vedere al resurselor folosite. Folosirea de procesoare PicoBlaze. Sistemului de control efectiv. Sistemul pe un cip implementat în FPGA şi proiectat pentru controlul motorului BLDC este prezentat în Fig.11. cât şi din cel al timpului de dezvoltare pentru software. în detrimentul unora cu putere de calcul superioară. prezentat în secţiunea 3. s-a dovedit oportună implementarea lor prin software pe procesoare soft. ilustrând conceptul din ce în ce mai răspândit în proiectarea cu FPGA-uri. utilizarea în paralel a mai multor procesoare simple poate fi mai economică decât utilizarea unui procesor mai complex. 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. valori instantanee de semnale) între algoritm şi dispozitive de interfaţă cu utilizatorul. iar cazul în care procesoarele sunt conectate între ele conduce la conceptul de reţea pe un singur cip (NoC – Network on Chip). sistemul de control este format dintro parte hardware proiectată special pentru aplicaţia amintită şi din două sisteme cu procesor soft PicoBlaze. Astfel. 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ă. SoC-ul se interfaţează cu motorul folosind doar semnale digitale. Având în vedere că aceste funcţii de monitorizare nu sunt critice din punctul de vedere al timpului de execuţie şi. ca MicroBlaze. interacţionează cu elemente hardware lente. Uneori. complexitatea lor şi viteza mică la care lucrează ar ridica dificultăţi în implementare şi verificare.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). 4. SoC pentru controlul BLDC.4. Figura 4. oferind la ieşire impulsuri digitale codificate în cuadratură (QEP). sunt parametrii ce definesc comportarea memoriilor cache (validată/invalidată.3. analizorul logic virtual folosit pentru depanare şi verificare şi două sisteme cu procesor soft PicoBlaze. Problema iniţială a fost partiţionată între hardware şi software. Aşadar. se foloseşte terminologia de sistem pe un cip programabil (SoPC – System on a Programmable Chip). în software se implementează doar nişte maşini de stare care vehiculează date (parametrii algoritmului. 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. fiecare implementând o altă funcţionalitate. pentru a evidenţia caracterul reconfigurabil al dispozitivelor FPGA. De asemenea.de procesor. inserarea de puncte de suspendare a execuţiei (breakpoints). acela de sistem pe un singur cip (SoC . implementat în hardware.11. 39 . 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. Deşi aceste maşini de stare ar putea fi implementate direct în hardware. [119]. De altfel. în plus.System on a Chip). această abordare este comună [118]. Astfel. motorul este comandat prin intermediul unei punţi invertoare trifazice. examinarea/modificarea conţinutului memoriei şi registrelor) [112]. i s-a adăugat funcţionalitatea de monitorizare. este pe deplin justificată de funcţiile care trebuie îndeplinite: aşa cum s-a amintit. SoC-ul constă din algoritmul de control implementat în hardware şi modulele logice de suport necesare lui. funcţia de procesare de date (algoritmul de control) este realizată în hardware. tensiunea de alimentare aplicată înfăşurărilor fiind controlată digital prin tehnica de modulaţie a lăţimii impulsurilor (PWM). 4.18°.

Cele două interfeţe au fost realizate cu ajutorul a două sisteme cu microprocesor soft PicoBlaze.11. • Semnalele vizualizate sunt eşantioane capturate începând cu un anumit moment. uart_rx. acesta are totuşi câteva limitări: • Poate captura doar număr limitat de eşantioane la un moment dat. Pentru o perioadă de eşantionare în jurul valorii de 1ms. utilizând unelte vizuale. sistemul cu procesor foloseşte 2 module UART (Universal Asynchronous Receiver/Transmitter) implementate în FPGA. un exemplu fiind prezentat în [121]. Aceştia au valori ce nu se pot regăsi între octeţii de 40 . determinat de un eveniment (trigger). Aceasta constă dintr-un afişaj. Această abordare diferă de cea prezentată în [32]. pentru analiză. Valorile parametrilor a0 şi a1 sunt asamblate de către procesor în registre externe. se apasă butonul “continue”. unul pentru transmisie. a cărui interfaţă este prezentată în Fig. în cazul unor proiecte complexe.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. • Semnalele pot fi doar extrase şi vizualizate. permite observarea comportării sistemului în buclă închisă în timp real şi modificarea parametrilor de control pentru ajustarea performanţelor. pentru vizualizarea valorilor parametrilor de control şi a valorilor semnalelor. Sistemul cu procesor II transmite date calculatorului gazdă la fiecare perioadă de eşantionare. a0 şi a1. Aplicaţia ce rulează pe calculatorul gazdă a fost realizată vizual. analizorul logic virtual ocupă multe din blocurile RAM din FPGA. şi unul pentru recepţie. Acestea sunt total independente. se întrerupe recepţia. unde un singur procesor MicroBlaze controlează mai multe dispozitive periferice de comunicaţie şi afişare. Atunci când algoritmul de control preia valoarea. sistemul recepţionează serial noi valori pentru parametrii algoritmului de control. Datele sunt afişate după asamblarea lor din octeţii recepţionaţi serial. aceste resurse s-ar putea să nu fie disponibile. Datele sunt transmise de sistemul II în continuu. nu sunt valori observate în timp real. A treia scriere activează şi un semnal de ready ce semnalizează algoritmului de control că valoarea parametrului este validă şi poate fi citită. uart_tx. Sistemul preia de la algoritmul de control valorile vitezei şi comenzii PWM pentru a le transmite serial. De asemenea. În plus. 4. notat cu I în Fig. folosind un buton de pe interfaţă. poate afişa valoarea vitezei motorului la un moment dat. Acest lucru deschide noi posibilităţi în implementarea pe FPGA a sistemelor complexe. şi o legătură serială bidirecţională de tip RS232 cu un calculator gazdă. nu se pot modifica valorile registrelor în timp real. Aceste module sunt oferite de către Xilinx ca şi descrieri HDL (sunt disponibile atât versiunea VHDL. este necesară o rată de transfer serial de 115200 bps (biţi pe secundă). folosind mediul LabView. şi le scrie în registrele acestuia. În acest scop. folosită pentru vehicularea aceloraşi date. Al doilea sistem cu procesor soft se ocupă exclusiv cu comunicaţia serială cu un calculator gazdă pe o interfaţă RS232. intrarea de întrerupere a procesorului PicoBlaze este conectată la semnalul Ts_tick. Aşadar. activează un semnal strobe. Instrumentul virtual constă din două grafice pe care se afişează în timp real valorile vitezei motorului BLDC şi ale comenzii PWM. De asemenea. doi ce formează valoarea vitezei şi doi ce formează valoarea comenzii. ce resetează registrul indicatorului ready. De altfel.18. LabView este o unealtă foarte puternică şi include actualmente un modul ce permite proiectarea vizuală de sisteme hardware implementabile direct în FPGA. cât şi cea Verilog) şi sunt instanţiate în schema sistemului. ce semnalizează în întreg sistemul de control începerea unei noi perioade de eşantionare (funcţia sa principală fiind activarea algoritmului de control). Când se doreşte reluarea afişării în timp real. La fiecare perioadă de eşantionare se recepţionează 6 octeţi: doi pentru sincronizare. la un nivel de abstractizare destul de înalt. Datele vor fi din nou asamblate şi afişate după recepţionarea primului set de doi octeţi de sincronizare. Instrumentul virtual ce rulează pe calculatorul gazdă. Dacă se doreşte îngheţarea imaginii pe grafice. s-a dovedit necesară o interfaţă în timp real. sistemul cu procesor II ilustrează conectarea unui procesor soft cu hardware implementat în FPGA şi proiectat ca şi nucleu IP reutilizabil. Primul sistem cu procesor soft. În acest scop. 4. Din aceste motive. are rolul de a citi parametrii algoritmului de control din registrele acestuia şi de a-i afişa pe un LCD alfanumeric. prin trei scrieri succesive în porturi de ieşire.

este o componentă cheie a sistemelor moderne de control al motoarelor de curent alternativ (AC – Alternative Current) trifazate. denumită proiectare ESL (Electronic System Level) va impune cu siguranţă răspândirea utilizării dispozitivelor FPGA ca platforme hardware. conducând la conceptul de NoC. conducând la conceptul de SoC. aşadar.4. proiectate în jurul unui sistem de control hardware. Din punctul de vedere al controlului automat. Proiectarea la nivele de abstractizare mai înalte. se exemplifică proiectarea unui sistem pe un cip FPGA. Prin apăsarea butonului Send. De asemenea. Aceste aplicaţii sunt cele de monitorizare şi interfaţă cu utilizatorul într-un sistem de control. şi funcţionalităţi mai puţin critice. aceşti coeficienţi sunt transmişi prin interfaţa RS232 sistemului de control.4 Concluzii Un interes deosebit în utilizarea dispozitivelor FPGA îl reprezintă integrarea unui întreg sistem de procesare pe un singur cip. Figura 4. În finalul capitolului se prezintă un sistem pe un cip cu două procesoare PicoBlaze independente. Metode moderne de modulaţie pentru controlul invertorului trifazic şi implementarea lor în FPGA Invertorul trifazic. sunt calculaţi automat coeficienţii algoritmului de control (implementat ca filtru cu răspuns infinit la răspuns. Totuşi. de obicei aceste aplicaţii utilizează hardware lent şi care necesită secvenţe complexe de iniţializare şi comunicaţie. constând din hardware specific aplicaţiei. 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. ţinând cont de diferenţele între arhitectura acestui tip de dispozitive şi arhitectura ASIC-urilor. Astfel. modul de coproiectare hardware-software. revenirea la o structură de procesare fixă nu este un beneficiu [47]. sau chiar a unei matrice de elemente de procesare. sau puntea invertoare trifazată. 41 . Se exemplifică. executate de hardware. sisteme cu procesor soft ce funcţionează independent şi interacţionează. ce sunt de obicei folosite pentru implementarea de procesoare. care sunt necritice din punctul de vedere al timpului de execuţie. deoarece o scurtă rutină software poate face exact acelaşi lucru. sistemul de control este mai uşor de implementat prin software ce rulează pe un procesor. decât direct în hardware. în aceste cazuri implementarea unui sistem cu procesor soft şi proiectarea de software pentru el fiind mult mai avantajoasă.3). a se vedea secţiunea 3. Implementarea de automate hardware pentru aceste secvenţe este complicată şi nu se justifică. executate prin software. prin partiţionarea proiectului în funcţionalităţi critice. În plus. şi software-ul ce rulează pe procesoarele soft. Interfaţa instrumentului virtual ce rulează pe calculatorul gazdă. prin editarea valorilor unor câmpuri ce reprezintă factorul de amplificare proporţional şi factorul de amplificare integrator. [122]. există aplicaţii în care proiectarea de hardware specific nu se justifică. Instrumentul virtual permite actualizarea parametrilor regulatorului. 4.date şi sunt astfel recunoscuţi de software.18. [57] decât în măsura uşurării proiectării sistemului: uneori. Rezultatele prezentate în acest capitol au fost publicate în [121]. însă. Prezentul capitol reprezintă un studiu al metodelor de optimizare a procesoarelor soft implementabile în FPGA. 5. iar uneltele de dezvoltare şi metodele de lucru nu sunt încă standardizate. şi folosind valoarea fixată pentru perioada de eşantionare.

partea superioară. 5. la ieşirea punţii se vor regăsi multe din armonicele superioare ale acestuia. impulsuri de frecvenţă fixă şi lăţime variabilă sunt aplicate la intrările de comandă ale comutatoarelor punţii. Atunci când este controlat în tensiune. ci este simetric în jurul unuia dintre ele. Acesta din urmă este semnalul purtător. fiecare dintre fazele consumatorului poate fi conectată la un moment dat fie la valoarea pozitivă a tensiunii continue de intrare. Q6. fie la cea negativă. Deşi aceasta are o structură foarte simplă. Există mai multe moduri de aplicare a modulaţiei PWM la controlul invertoarelor trifazate. realizată de obicei cu ajutorul unui procesor dotat cu periferice speciale. Există mai multe tehnici de modulaţie PWM ce se aplică punţilor invertoare. puntea poate fi văzută ca fiind alcătuită din 3 ramuri.Aceasta deoarece permite controlarea atât a amplitudinii. de amplitudine şi frecvenţă reglabile. frecvenţa semnalului purtător ar trebui să fie cât mai înaltă. cât şi a frecvenţei tensiunii aplicate motorului. Astfel. 5. ce are o caracteristică de tip filtru trece-jos. 42 . Lucrarea de faţă nu îşi propune prezentarea tuturor posibilităţilor.2. Q4. De obicei acestea sunt filtrate de însuşi consumator.15 că cele două tranzistoare ale aceleiaşi ramuri nu se pot afla în conducţie în acelaşi timp. Q3 şi Q5.2. 5. Pe lângă semnalul modulat. se vor defini câţiva termeni utilizaţi ulterior. Puntea invertoare trifazată a fost prezentată deja în Fig. Atunci când se foloseşte o purtătoare cu formă de undă triunghiulară. Ea este însă limitată de unitatea de control (rezoluţia elementelor digitale) şi de capabilităţile tranzistoarelor de putere (pierderi de comutaţie. În plus. insistând asupra avantajelor oferite de dispozitivele FPGA în implementarea acestor modulatoare. De obicei. Astfel. 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. Prin modulaţie PWM. fiecare făcând legătura între Vdc şi masă. Aceasta se datorează faptului că impulsul PWM nu este aliniat cu vârful pozitiv sau negativ al semnalului purtător. a doua. Pentru a minimiza efectul armonicelor. Q3 şi Q4. De exemplu. În acelaşi timp. puntea invertoare din Fig. Este evident din Fig. în vreme ce primul este semnalul modulat.15 poate fi văzută ca fiind alcătuită din două părţi. considerând că celelalte trei sunt în starea complementară. Q5 şi Q6. controlul precis al activării comutatoarelor ce o formează reprezintă o problemă serioasă. semnalul rezultat la ieşire este simetric faţă de perioada semnalului purtător.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ă. şi partea inferioară. Acestea trebuie activate în aşa fel încât consumatorul de la ieşirea punţii să primească tensiune trifazată sinusoidală. Cea mai folosită tehnică pentru controlul punţii invertoare este modulaţia PWM. invertorul este cunoscut în literatura de specialitate anglo-saxonă şi sub acronimul VSI (Voltage Source Inverter). 3. ci doar a celor două cele mai răspândite. deoarece tranzistoarele au un timp de răspuns ne-neglijabil.15. în Fig. Procesul de modulaţie PWM sinusoidală este prezentat în Fig. Pentru explicaţiile ce urmează. formată din tranzistoarele Q1. 3. Cele 3 ramuri sunt alcătuite respectiv din tranzistoarele Q1 şi Q2. lăţimea impulsurilor este dată de un semnal cu o frecvenţă mult mai joasă decât frecvenţa impulsurilor. formată din tranzistoarele Q2. Tensiunea medie pe faza consumatorului conectată la un comutator va fi dată de lăţimea impulsurilor aplicate. 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. Astfel. cele ale părţii superioare sau cele ale părţii inferioare. î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. Prima tehnică poate fi implementată şi folosind doar componente analogice. starea invertorului poate fi descrisă complet doar de starea a trei dintre tranzistoare. însă. este apanajul sistemelor digitale. deoarece acest lucru ar conduce la scurtcircuitarea sursei de alimentare şi distrugerea tranzistoarelor. 3. distorsiuni introduse de inserarea timpilor morţi).

dacă amplitudinea semnalului modulator (de referinţă) depăşeşte amplitudinea semnalului purtător. În cazul în care nu se respectă această constrângere. se preferă modulaţia PWM simetrică. Vref . unde Vdc este tensiunea continuă aplicată punţii invertoare. 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.impulsurile negative în semnalul rezultat sunt simetrice faţă de vârfurile pozitive ale semnalului purtător.2.5 % a amplitudinii semnalului de ieşire fără supramodulaţie. iar tensiunea aplicată fazei consumatorului la saturarea tranzistorului inferior al ramurii va fi −Vdc / 2 . 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. mai multe scheme de modulaţie. Principalul inconvenient al modulaţiei PWM sinusoidale constă în folosirea neperformantă a energiei sursei de alimentare datorită limitării amplitudinii semnalului modulator la V dc / 2 . Semnalul modulator de pe fiecare fază poate fi aşadar modificat într-un mod convenabil. deoarece produce mai puţine distorsiuni armonice de curent şi tensiune. O altă problemă este faptul că pentru modulaţia trifazată. Dacă se alege prin convenţie ca tensiunea aplicată punţii să fie bipolară. dar cu minimizarea conţinutului 43 . în semnalul de ieşire vor apărea armonice superioare nedorite. Primul caz conduce la o îmbunătăţire cu 15. de tip numărător binar. ci de tensiuni sinusoidale între faze (producând curenţi sinusoidali). semnalele modulatoare pe cele trei faze sunt tratate independent. Aceasta conduce la o formă de undă asimetrică a semnalului rezultat. 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). raportul dintre amplitudinea semnalului modulator. este necesar ca m ≤ 1 . Figura 5. de tip numărător binar reversibil (bidirecţional). Acestea se bazează pe injecţia unui semnal ales potrivit în semnalul modulator al fiecărei faze. cu condiţia ca această modificare să nu afecteze semnalul diferenţial între faze. Aşadar.2. În cazul purtătoarei cu formă de undă dinţi de fierăstrău. amplitudinea semnalului sinusoidal de referinţă este limitată de amplitudinea semnalului purtător la Vdc / 2 . Producerea purtătoarei triunghiulare necesită un periferic mai special. atunci tensiunea aplicată fazei consumatorului la saturarea tranzistorului superior al ramurii va fi +Vdc / 2 . Un exemplu cunoscut de semnal ZSS este a treia armonică a semnalului sinusoidal modulator. reprezintă indexul de modulaţie: m = Vref V purt . crescând pierderile în tranzistoarele de putere şi conţinutul armonic în semnalele de ieşire. Aşa cum se poate observa din Fig. 5. Pentru o modulaţie corectă. De altfel. V purt . modulaţia nu mai funcţionează corect. iar al doilea conduce la o îmbunătăţire cu 12 %. fenomenul numindu-se supramodulaţie. şi amplitudinea semnalului purtător. ceea ce conduce la schimbări superflue ale stărilor comutatoarelor. Procesul de modulaţie PWM sinusoidală. impulsul PWM e aliniat cu vârful negativ al semnalului purtător. De obicei. Aceasta poate avea amplitudinea 1/4 sau 1/6 din amplitudinea semnalului iniţial. Există mai multe metode de a obţine acest lucru.

if min( v . Cele trei semnale modulatoare sunt semnale sinusoidale şi provin de la un generator de semnal. şi de aceea este atât de răspândită. se poate face observaţia că pentru semnale sinusoidale trifazate echilibrate (cu defazaj egal între ele. 5.3. este necesară inserţia unui timp mort la schimbarea stării tranzistoarelor de pe aceeaşi ramură a punţii. fiind în relaţie strânsă cu acestea. v b . se calculează ZSS. if min( v a . Semnalul ZSS este de obicei extras din semnalele modulatoare de pe cele trei faze. semnalului purtător triunghiular.3. de 120°).4. preluată din [125]. la orice moment dat. După cum se observă în Fig. Semnalele rezultate vor fi de fapt semnalele modulatoare. va fi cel de magnitudine minimă. calcularea ZSS constă în determinarea semnalului de magnitudine minimă din cele trei semnale modulatoare. v ) = v . vb ). Această metodă de modulaţie a fost obţinută şi prin modulaţia digitală bazată pe vectori spaţiali. a b c c ⎩ c (5. În final. v ZSS ⎧v a . Acest semnal este apoi scalat cu 0. 5. Figura 5. schema de principiu a modulaţiei PWM sinusoidale cu injecţie de ZSS triunghiular este reprezentată în Fig. Din cele trei semnale. v . min(v a . Schema de principiu a modulaţiei PWM sinusoidale cu injecţie de ZSS. v b . fiecare oferind anumite avantaje. (5.3) Pentru a uşura implementarea digitală. Din punctul de vedere al implementării. semnalul ce are valoarea momentană în mijloc.5 şi constituie ZSS [125]. există o multitudine de metode de modulaţie PWM sinusoidală cu inserţie de ZSS. v c ) = v a .3). nici cea mai mare. Aşadar.3). semnalele modulate sunt folosite pentru a controla stările celor 6 tranzistoare ale punţii invertoare. Aşadar. necesară în (5. valoarea ZSS poate fi calculată cu formula: v ZSS = 0. Această metodă este însă destul de greu de implementat în practică datorită complexităţii. cu ajutorul unor comparatoare. 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. Faptul că cele trei semnale modulatoare sunt folosite împreună pentru generarea semnalului ZSS va conduce la o tratare unitară a lor. nici cea mai mică dintre cele trei. ⎪ v . acelaşi pentru toate cele trei faze. iar modulaţia se aplică ca şi cea PWM sinusoidală simplă. v c ) = v b . Aşa cum s-a menţionat. Figura 5. Metode de modulaţie PWM sinusoidală cu injecţie de ZSS [125]. vc )). ⎪ = ⎨v b . Pentru injecţia de semnal triunghiular.spectral al curentului în consumator [124]. Aşadar. eliminând şi al doilea inconvenient amintit la modulaţia PWM sinusoidală pură. scutind modulatorul de a calcula valoarea absolută a magnitudinii semnalelor sinusoidale. min(vb . if min( v a . 5. vc ).4.5 * max(min(v a . cele două semnale de magnitudini mai mari au semne opuse. iar acest semnal se adună la fiecare din cele trei semnale iniţiale.4) 44 .

însă efortul de proiectare trebuie îndreptat către calea de date. 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. folosind direct valorile semnalelor şi eliminând astfel câţiva paşi din calcule. se va prezenta detaliat doar modulul de calculare a valorilor de prag. Ţinând cont de simetria formei de undă a 45 . 5. prin intermediul unui multiplexor 3 la 1 care selectează între adrese. (5. Stările şi tranziţiile automatului sunt definite prin matricele stării următoare şi ieşirii.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). cu excepţia celor de selecţie. automatul trece dintr-o stare în următoarea fără nicio condiţie. memorii). Sistemul a fost apoi implementat pe FPGA şi verificat experimental. 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. Dacă semnalele sinusoidale trifazate nu sunt echilibrate. Formele de undă pentru toate cele trei faze ale semnalului modulator sunt obţinute folosind aceeaşi memorie ROM. Fiecare cuvânt păstrat într-o locaţie ROM are o lăţime de 18 biţi. un singur bit fiind 1 la un moment dat. [128]. numărătoare. Tactul automatului (nu apare în figură.2. ce constituie partea cea mai importantă a modulatorului. deci modulul de generare a semnalelor modulatoare are nevoie de 10 paşi (10 perioade de tact) pentru a-şi executa sarcina. Automatul rămâne în starea 0 (zero) până când generatorul de semnal este activat de un semnal extern. automatul de stări secvenţiază toate operaţiile din generatorul de semnal modulator.3).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. 5. apoi integrate şi simulate ca întreg. incluzând logica de generare şi injecţie a ZSS. Această codificare elimină nevoia de decodificator extern. se va căuta aplicarea formulei (5. Ieşirile sunt codificate sub forma “one hot”. ce semnalizează începutul unei noi perioade PWM. • Un modul de calculare a valorii de prag pentru comanda tranzistoarelor. mult mai complexă şi cu un potenţial de optimizare mult mai ridicat. Tabela de căutare are o adâncime de 4096 ( 212 ) de valori. S-ar putea folosi metode avansate de proiectare manuală mai eficientă a automatului [127]. După activarea acestui semnal. folosindu-se doar blocuri Slice pentru a extrage biţii necesari din magistrala de ieşire. Automatul are 10 stări. este de 50MHz. fiind considerat implicit). Adresele diferă între ele cu o valoare ce corespunde unui defazaj de 2π/3. Modulatorul a fost proiectat într-o manieră modulară. ce sunt translate automat în memorii ROM. Acesta este un automat de tip Moore. accesând-o de 3 ori. cu 2 biţi pentru partea întreagă şi 16 biţi pentru partea fracţionară. • Un modul de generare a semnalului purtător triunghiular. deci oferă o rezoluţie în timp de 12 biţi şi o rezoluţie în amplitudine de 18 biţi.Aceasta este mult mai uşor de implementat. la adrese diferite. ca şi al tuturor elementelor sincrone din sistem (registre.9. Valorile memorate sunt reprezentate în format în virgulă fixă cu semn.4) nu se poate folosi fără o analiză prealabilă a aplicabilităţii. Cele trei accese consecutive sunt secvenţiate de un automat de stări. Modulul rezultat va putea fi ulterior integrat într-un sistem de control pentru un motor de CA implementat pe FPGA. De altfel. incluzând comparatoarele PWM. fiecare bloc putând fi accesat ca o memorie de 1024x18 biţi [126]. În cazul cel mai general. cum se poate vedea în Fig. 5. instanţiat ca un bloc Registered Moore State Machine din librăria Xilinx Reference Blockset. În unele stări sunt modificate şi ieşirile de selecţie pentru multiplexorul de pe adresa memoriei ROM. fiind constituit din: • Un modul generator controlat de semnal sinusoidal. Toate modulele au fost validate prin simulare individual. Automatul este destul de simplu şi deci uşor de descris prin această metodă. în care se păstrează valorile funcţiei sinus. În acest rezumat.

sunt inversate. de către elemente hardware independente. Se va vedea în secţiunea următoare că acest domeniu este cuprins între 0 (zero) şi o constantă întreagă notată cu cnt_scale.11.2. Circuitul care realizează aceste operaţii este prezentat în Fig. unde Vdc este tensiunea continuă de alimentare a punţii invertoare. memoria ROM ar putea păstra doar un sfert de perioadă. iar dispozitivul FPGA folosit pentru experimente are suficiente blocuri de memorie RAM. vor fi aduse în acelaşi interval ca şi semnalul purtător.+1]. şi modulul de calculare a valorii de prag este controlat de un automat de stări. numărul de paşi de calcul este foarte important într-o implementare în timp real. salvând rezultatele unui pas din calcul. 5. este scalat cu 0. aflate acum în intervalul [-1. Automatul stă în starea 0 (zero) până când este activat de un semnal extern. Semnalele. În acest scop. Procesul de aducere a semnalelor modulatoare în intervalul [0. cele 3 semnale sinusoidale sunt scăzute două câte două. În acest scop. Figura 5. Implementarea în FPGA este foarte eficientă în ceea ce priveşte timpul de execuţie atât datorită faptului că poate folosi multiplicatoarele integrate. Implementarea acestor metode ar complica structura modulului şi ar implica mai mulţi paşi de calcul.4). Toate calculele din cadrul acestui modul sunt realizate pe 18 biţi. iar biţii de semn ai rezultatelor sunt folosiţi pentru a selecta care dintre cele trei semnale este ZSS. Figura 5.11. foloseşte multiplicatoare şi relaţii trigonometrice pentru a minimiza şi mai mult consumul de memorie.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. descrisă în [130]. După aceste operaţii.5 şi este adunat la cele 3 semnale sinusoidale.funcţiei sinus. Circuitul de translare a intervalului semnalelor modulatoare. Prin înmulţire cu cnt_scale. circuitul foloseşte 6 multiplicatoare integrate. cât şi din cauză că calculele pentru cele trei faze pot fi realizate în paralel. în consecinţă. Acesta este rutat mai departe prin intermediul unui multiplexor 3 la 1. Automatul de stări ce secvenţiază operaţiile. Or. Mai întâi. Automatul are 9 stări.9. 46 . cu un timp de propagare sub 5ns [126]. 5. Această abordare este folosită în [129]. semnalele modulatoare vor avea valori în intervalul [0.+1]. al resurselor folosite. după injecţia de ZSS. Acesta activează în fiecare stare o ieşire de validare pentru un set de registre. Valorile de prag calculate vor fi folosite mai departe de către comparatoarele PWM în modulul de generare a semnalului purtător triunghiular. Fiecare pas de calcul este salvat într-un registru. După cum se poate observa. cele trei semnale sinusoidale de intrare. Semnalul ZSS injectat este calculat conform (5. deplasate în jurul valorii 1 şi scalate cu 1/2. deci calcularea valorii de prag necesită 9 cicli de tact.cnt_scale] se desfăşoară în mai mulţi paşi. Se obţin astfel cele 3 semnale modulatoare. O altă abordare. vor trebui aduse în acelaşi domeniu de valori ca şi semnalul triunghiular. iar prin calcule suplimentare asupra adresei şi ieşirii s-ar putea obţine întreaga perioadă. Ca şi în cazul modulului generator de semnal modulator. aceste semnale sunt normalizate prin multiplicare cu 2 / Vdc .

Prin faptul că cele două constante sunt diferite.13.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. timpii de răspuns la comanda de saturare şi la cea de blocare ai tranzistoarelor de putere sunt diferiţi).2. În acest scop. Numărarea în jos se face până la 0 (zero). 5.13. rezultă cnt _ scale = 1250. se pot compensa asimetriile în răspunsul tranzistoarelor (de obicei. valorile de prag calculate de modulul discutat în secţiunea anterioară sunt comparate.2. Pentru tranzistoarele inferioare. iar toate registrele aliniate vertical sunt validate de acelaşi semnal al automatului. Pentru tranzistoarele superioare ale punţii. Calea de date este reprezentată de fluxul orizontal de date din Fig. 2 f PWM (5. 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 47 . 5. Modulul de generare a semnalului purtător este responsabil şi cu generarea semnalelor de control pentru tranzistoarele punţii. Aşa cum s-a menţionat. cu semnalul purtător. O reprezentare schematică a întregului modul este prezentată în Fig.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). lucrurile stau exact vice-versa. Figura 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.13. Constanta limită superioară este dată de raportul dintre frecvenţa semnalului de tact al sistemului şi frecvenţa dorită pentru semnalul PWM: cnt _ scale = 1 f clk . pentru a face posibile comparaţiile (intersectarea semnalelor) din Fig. 5. Schema bloc a modulului de calculare a valorilor de prag. În Fig. semnalele modulatoare sunt translate în acelaşi interval de valori. Ultimul pas computaţional din Fig. 5. iar aceeaşi egalitate pe panta negativă a semnalului purtător conduce la blocarea tranzistorului. Modulul este proiectat după paradigma automat cu cale de date (FSMD – Finite State Machine with Datapath) [131]. 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. Un circuit suplimentar schimbă direcţia de numărare atunci când se ating nişte constante prestabilite. 5.13. 5. Aşa cum s-a menţionat. egalitatea dintre valoarea de prag şi semnalul purtător pe panta crescătoare a acestuia conduce la saturarea tranzistorului. Semnalul purtător va fi chiar semnalul de la ieşirea numărătorului. Pentru cazul particular folosit în experimente în care f clk = 50MHz şi f PWM = 20kHz .profitând de lăţimea multiplicatoarelor integrate în FPGA [126]. folosind comparatoare de egalitate. Automatul de stări controlează de fapt calea de date. dreptunghiurile notate cu variabile reprezintă registre. Necesitatea introducerii acestor timpi morţi a fost deja discutată.

fără şi cu injecţie de ZSS. 5.4 Implementarea pe FPGA şi rezultate experimentale Modulele sistemului descris au fost proiectate folosind System Generator şi validate prin simulare folosind Simulink. motoarele trifazate pot fi modelate în mai multe sisteme de coordonate. valorile de prag fiind valide pentru comparaţii pe durata acestei perioade. alături de modulator. a unui sistem complex de control pentru un motor de CA trifazat. fiind legate de acest semnal: astfel. obiectivul final al acestei lucrări. Ieşirile au fost filtrate folosind filtre pasive RC trece jos pentru a elimina frecvenţele superioare datorate comutaţiei tranzistoarelor. Acesta prezintă o formă de undă triunghiulară. că s-a proiectat cu succes un modulator sinusoidal cu injecţie de ZSS în vederea implementării în FPGA. Spre deosebire de tehnica de modulaţie PWM sinusoidală prezentată anterior. Se observă că amplitudinea semnalului cu injecţie de ZSS este cu aproximativ 15% mai redusă decât cea a semnalului sinusoidal. Tabelul 5. 5. Tabelul 5. 5. ele nefiind tratate independent. Tot în partea de sus a imaginii se observă semnalul de punct neutru.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. LUT-uri Bistabili D Felii logice Multiplicatoare Blocuri RAM 698 din 9312 511 din 9312 478 din 4656 8 din 20 (40%) 4 din 20 (20%) (7%) (5%) (10%) Se poate concluziona. 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. injecţia de ZSS la modulaţia sinusoidală introduce o măsură a interacţiunii între faze în procesul de modulaţie. SVM se bazează pe reprezentarea folosind vectorul spaţial complex a mărimilor electrice. iar modulul de calculare a valorilor de prag – cu 10 cicli de tact înainte. legat 48 . echivalându-le cu motoare bifazice. apoi implementat în FPGA şi verificat experimental. Resursele ocupate în Spartan-3E XC3S500E de modulator. 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. s-a comutat pe modulaţie sinusoidală cu injecţie de ZSS. dar este pur digitală.2.18. calculată de osciloscop şi prezentată în partea de jos a imaginii. Acest lucru nu afectează însă tensiunea dintre faze. Figura 5. De altfel. folosind un buton controlat de utilizator.18 prezintă o captură de osciloscop cu cele trei tensiuni de fază obţinute după filtrare. ceea ce permite integrarea. Aşa cum se va evidenţia în secţiunile următoare. Semnalele sinusoidale trifazice. Fig. Astfel este exploatată interacţiunea dintre cele trei faze. unul fix.2 prezintă resursele ocupate de modulator într-un dispozitiv FPGA Spartan-3E XC3S500E. Resursele ocupate din FPGA sunt în jur de 10% din disponibil. Pentru experimente s-a folosit acest dispozitiv şi o punte invertoare cu tranzistoare MOSFET de tipul Technosoft PM50. în concordanţă cu aşteptările.2. Există două sisteme bifazice de coordonate. În prima parte a imaginii. În acest fel. care rămâne sinusoidală şi îşi păstrează amplitudinea. obţinut prin conectarea celor trei faze în stea prin rezistenţe de valori mari. modulaţia bazată pe vectori spaţiali tratează vectorul spaţial de referinţă complex ca întreg. se preferă modelarea lor într-un sistem de două axe.de generare a semnalului purtător. toate calculele se termină exact în momentul începerii unei noi perioade a semnalului purtător. modulaţia a fost pur sinusoidală. În general. Sistemul a fost verificat prin simulare ca întreg. Apoi. modulul de generare a semnalelor sinusoidale va fi activat cu 19 cicli de tact înainte de terminarea perioadei curente a semnalului purtător. Aşa cum s-a văzut însă. aşadar. ce foloseşte trei modulatoare sinusoidale independente.

doar 3 din cei 8 vectori spaţiali sunt necesari la un moment dat: cei doi vectori adiacenţi vectorului de referinţă. Restul perioadei semnalului PWM este alocat vectorilor nuli.19.10) r 2 V = (v a + av b + a 2 v c ) 3 (5.20 va fi reconstruit folosind vectorii de bază 001 şi 011. se folosesc ambii vectori nuli. şi unul din vectorii nuli. peste planul complex şi alegând α ca axa reală şi β ca axa imaginară. Figura 5. Stările posibile ale punţii invertoare. Puntea se poate afla deci în 8 ( 2 3 ) stări posibile. 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. algoritmul SVM mai este cunoscut şi sub denumirea SVPWM. Figura 5. prezentate în Tabelul 5. 49 . starea punţii poate fi descrisă doar de starea tranzistoarelor superioare. 5. Reconstrucţia vectorului din Fig. Tabelul 5.11) Atunci când se foloseşte o punte invertoare trifazată. α/β. Vectorii spaţiali de bază se combină folosind tehnica PWM. şi unul rotativ. Se poate arăta că dacă unei maşini trifazice i se aplică o tensiune sinusoidală trifazată echilibrată de r valoare medie pătratică (RMS – Root Mean Square) Vm şi pulsaţie ω. pentru utilizarea simetrică a tranzistoarelor superioare şi inferioare ale punţii.20 prin PWM. r V = vα + jv β = V m e jθ (5. Vdc / 3 Tehnica modulaţiei SVM 2Vdc / 3 0 011 OFF ON ON −2Vdc / 3 constă în reconstruirea unui 2Vdc / 3 101 ON OFF ON Vdc / 3 − Vdc / 3 vector spaţial de referinţă dat 111 ON ON ON 0 0 0 folosind vectorii spaţiali de bază din Fig. De fapt. vectorul spaţial de referinţă (dorit) trebuie obţinut printr-o combinaţie a stărilor posibile ale punţii. Suprapunând sistemul staţionar de două coordonate. dintre care doi 000 OFF OFF OFF 0 0 0 sunt nuli. Totuşi. de obicei sincron cu rotorul.21. Hexagonul definit de vectorii spaţiali de bază. ce definesc sectorul în care acesta se găseşte. Ceilalţi 6 definesc un 2Vdc / 3 0 100 ON OFF OFF 2Vdc / 3 hexagon şi îl împart în 6 2Vdc / 3 110 ON ON OFF Vdc / 3 Vdc / 3 sectoare. 5.20. 5. De obicei. unde a = e j 2π / 3 şi a 2 = e − j 2π / 3 pot fi interpretaţi ca vectori unitate aliniaţi cu axele b şi c. Din această cauză.10). se preferă modelarea în spaţiul α/β. Această din urmă abordare este avantajoasă pentru că mărimile ce caracterizează motorul sunt constante în sistemul de coordonate rotativ. Aşa cum s-a menţionat. Şi variabilele trifazice pot fi exprimate sub formă vectorială ca în (5.19. cele 8 stări posibile punţii tranzistoarelor spaţial ale punţii invertoare devin 8 vα vβ v Q1 Q3 Q5 vectori spaţiali. cum se poate vedea în 2Vdc / 3 010 OFF ON OFF −Vdc / 3 Fig. vectorul spaţial ce reprezintă tensiunea este dat de (5.de stator. Spre exemplu. Când sunt reprezentate în Starea Starea Componentele vectorului planul α/β.3. datorită faptului că starea tranzistoarelor superioare trebuie să fie complementară stării tranzistoarelor inferioare. atunci vectorul spaţial V va avea magnitudinea Vm şi se va roti pe o orbită circulară cu viteza unghiulară ω [124].3 împreună cu valorile corespunzătoare ale tensiunilor pe axele α/β. un vector spaţial cu magnitudinea şi orientarea ca în Fig.19. Figura 5. 5.11). Descompunerea unui vector spaţial situat în sectorul S3 în vectorii de bază.

pentru a afla vectorii de bază adiacenţi ce vor participa la reconstrucţia lui. Valoarea a=0 implică o distribuţie egală a timpului de activare între tranzistorul superior şi cel inferior ai primului braţ. Aşa cum se poate observa în Fig.14). • Să determine mărimea proiecţiilor vectorului de referinţă pe vectorii de bază şi. b şi c pentru fiecare ramură a punţii. [46]. 3 a = vα − 1 3 1 3 3 3 vβ . Apoi se calculează valorile a. • Să determine ordinea de aplicare a vectorilor de bază. 5. mai complicată: [28]. se determină sectorul şi apoi se calculează raporturile de activare a. Algoritmul de implementare a SVM trebuie să îndeplinească următoarele sarcini: • Să determine orientarea vectorului de referinţă. 2 b= vβ . 2 şi 5. vβ . Datorită simetriei hexagonului. Pentru calcularea valorilor raporturilor de activare a. în funcţie de valorile componentelor α/β ale tensiunii. doar sectorul în care se află vectorul este important. 5. Similar. Deşi aceste sarcini par foarte complexe.24 [124]: mai întâi.21 este prezentată reconstrucţia vectorului din Fig. 3 2 c=− vβ . (5. a = vα + b = −vα + c = −vα − 1 3 3 3 1 3 vβ . de fapt. dovadă fiind multitudinea de lucrări ce folosesc o abordare bazată pe funcţii trigonometrice.14) Factorii de umplere pentru semnalele PWM se calculează apoi din valorile raporturilor de activare: 50 . 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. [134] ea nu este suficient de cunoscută. Un raport de activare a=1 corespunde tranzistorului superior continuu saturat al primei ramuri a punţii. Figura 5. în timp ce valorii a=–1 îi corespunde situaţia în care tranzistorul inferior al primului braţ este continuu saturat (activat). vβ .13). 3 şi 6. respectiv. vβ . b şi c aplicând nişte formule de calcul specifice fiecărui sector. deci. şi sunt reprezentate de ecuaţiile (5. a = 2vα . minimizându-se astfel pierderile de comutaţie şi conţinutul armonic al semnalelor de ieşire.12). (5.În Fig. Acestea ţin cont de unghiul dintre axele α/β şi vectorii spaţiali de bază ce definesc sectorul.24. vβ .13) b = − vα + c = − vα − (5. b şi c se foloseşte algoritmul schiţat în Fig. ele au fost reduse la probleme simple de geometrie plană: comparaţii de segmente şi calcularea lungimilor lor. respectiv. 5. 5.21. Deşi această abordare apare în diferite forme în literatură [124]. • Să genereze semnalul purtător PWM şi să aplice modulaţia. se determină sectorul în care se află vectorul. (5. [49]..20 folosind tehnica PWM. [48]. Pornind de la componentele α/β ale vectorului de referinţă. formulele de calcul pentru raporturile de activare sunt aceleaşi pentru sectoarele 1 şi 4.12) (5. Algoritmul de calculare a valorilor raporturilor de activare. fără a fi necesar apelul la funcţii trigonometrice. Ordinea în care se activează vectorii de bază într-o perioadă PWM este foarte importantă. [133]. factorul de umplere pentru aplicarea vectorilor de bază. valorile b şi c corespund stărilor celorlalte ramuri ale punţii.

2 2 2 (5. Aşadar. şi factorii b şi c din (5. iar rezultatul acesteia este folosit ulterior pentru a calcula factorul a în (5. poate fi rescrisă ca (5.5. şi cu procesul de decizie.5. ceea ce oferă multă flexibilitate la implementarea algoritmului. 5. modulul generator de semnal va realiza şi transformarea din sistemul de coordonate trifazat în cel bifazat: 1 ⎧ ⎪vα [k ] = 3 (2v a [k ] − v b [k ] − v c [k ]). cealaltă condiţie poate fi rescrisă ca (5. ] ⋅ 100% . o abordare inteligentă este să se calculeze a priori toate valorile posibile pentru a.12) şi (5.13). normalizarea componentei v β include 51 . 5. ei vor facilita calcularea celorlalţi. Se poate observa de asemenea că celelalte operaţii din (5.14) sunt combinaţii liniare între termenii daţi de condiţiile de decizie. aşadar. De asemenea. Este compus.16) vα − 1 3 vβ ≥ 0 (5. Prin înmulţire cu 3 /(2 * Vdc ) .1 Structura modulară Modulul generator de semnal va genera un vector spaţial rotitor în planul complex. ca (5. dată de (5. datorită unghiului dintre vectorii spaţiali de bază şi axa β. La fel. acesta generând semnale de validare pentru registrele ce memorează rezultatele intermediare. decizia este luată în funcţie de semnul operaţiei (5. b şi c şi. ⎪ 3 ⎩ (5.17).19) Aceasta presupune un pas de calcul (adică un ciclu de tact) în plus şi utilizarea unor resurse suplimentare (multiplicatoare şi sumatoare).24. 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. cele două valori de intrare sunt aduse în intervalul [-1. având o structură asemănătoare. ⎪ ⎨ ⎪ v β [k ] = 3 (v b [k ] − v c [k ]). În cazul algoritmului descris. operaţiile executate nu sunt limitate de o arhitectură aritmetico-logică fixată.17) şi (5.15) Pornind de la cele prezentate poate fi derivată implementarea în timp real pe FPGA a algoritmului de modulaţie SVM. 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. Astfel.4 Implementarea în FPGA a modulatorului bazat pe vectori spaţiali Ca şi modulatorul sinusoidal cu injecţie de ZSS prezentat anterior.c = [ a +1 b +1 c +1 . Modulul de calculare a factorilor de umplere va implementa algoritmul discutat în secţiunea anterioară şi schiţat in Fig.14).18). Algoritmul din Fig. vα ≥ 1 3 vβ (5. un modul de calculare a factorilor de umplere şi un modul generator de semnal purtător PWM. dintr-un modul generator de semnal.dc a . Aşadar.17) vα + 1 3 vβ ≥ 0 (5.18) Având în vedere disponibilitatea de resurse din FPGA. 5.4.24 pot fi regăsite în formulele de calcul (5. Aşadar.14). 5. implementarea pe FPGA e mult mai rapidă. deoarece multe operaţii se pot executa în paralel.b.24. modulatorul SVM a fost proiectat modular. Trebuie observat că în toate formulele componenta de pe axa β este înmulţită cu 1 / 3 .18). adică va fi tot un generator controlat de semnal sinusoidal trifazat. să se ruteze aceasta la ieşire.16).+1]. ci pot fi definite după nevoi. Diferenţa faţă de generatorul de semnal sinusoidal din Secţiunea 5. De exemplu.12) şi (5. 5. scurtându-se timpul de execuţie a algoritmului.17). odată aceşti termeni calculaţi. Schema bloc a modulului de calculare a factorilor de umplere este prezentată în Fig. a doua condiţie de decizie din Fig.2 constă în faptul că modulatorul SVM lucrează cu reprezentarea α/β a semnalului trifazat. în momentul în care s-a decis sectorul. adică care dintre trei-uple este cea validă. .26 începe cu normalizarea componentelor α/β ale tensiunii trifazate.26. Spre deosebire de implementarea pe un microcontroler sau DSP. Aşadar. calculele pot fi efectuate în paralel şi între ele.

Al doilea pas modifică uşor valorile de prag.+1] în intervalul în care variază semnalul purtător. Acestea sunt raporturile de activare discutate în secţiunea anterioară. tot triunghiular periodic. c în Fig. Schema bloc a modulului de calculare a factorilor de umplere. în felul acesta derivându-se semnalele de comandă pentru tranzistoare. pentru a introduce un timp mort între comutarea tranzistoarelor de pe acelaşi braţ al punţii.17) şi (5. iar implementarea soluţiei este exact la fel. În momentul în care valorile precalculate au fost selectate şi rutate la ieşire de multiplexoare.2. Următorul pas este determinarea condiţiilor (5. S-a folosit reprezentarea numerelor în virgulă fixă. Acestea se calculează folosind sumatoare. Vor fi utilizate ulterior pentru calculul unor termeni din formulele (5.26. dar are o 52 . iar rezultatele sunt salvate în registre.2 Implementarea pe FPGA şi rezultate experimentale Modulatorul prezentat a fost implementat într-un dispozitiv FPGA Spartan-3E.15). Modulul generator de semnal purtător PWM are exact aceeaşi structură cu modulul omonim discutat în secţiunea 5. Semnalul purtător.18). Implementările comparate sunt realizate cu dispozitive FPGA cu arhitecturi bazate pe celule logice cu LUT-uri cu 4 intrări.3. conform (5. sunt folosiţi pentru a realiza selecţia valorilor corecte ce vor fi rutate la ieşire dintre cele calculate în paralel.4.4. După cum rezultă din Tabelul 5.2. eliminându-se o operaţie superfluă. 5. Similar ca la modulatorul PWM sinusoidal.18). 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.şi înmulţirea cu acest factor. Acest lucru este realizat de un circuit logic combinaţional.26. Tot acest modul este responsabil şi cu generarea semnalelor de activare pentru celelalte două module.14). este comparat cu valorile de prag generate de modulul anterior.4 se prezintă comparativ resursele ocupate de modulatorul prezentat (doar algoritmul de modulaţie. În pasul următor.26.12) şi (5. 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.17) şi (5. 5. adică în 160ns la o frecvenţă a semnalului de tact de 50MHz. Ieşirea acestui modul este reprezentată aşadar de 6 valori de prag. 5. deci comparabile. translându-i din intervalul [0. Biţii de semn ai valorilor corespunzătoare operaţiilor (5. fiecare corespunzând controlului semnalului de activare a unui transistor al punţii. Această problemă a mai fost discutată în Secţiunea 5. ele vor fi salvate în registrele notate a. aceste raporturi de activare conduc la valorile factorilor de umplere pentru semnalele PWM. Figura 5. reprezentate prin “x(-1)” în Fig. folosind tot sumatoare şi operaţii de negare (în complement faţă de 2). În Tabelul 5. împreună cu bitul de semn al componentei v β normalizată. Acest lucru se realizează prin înmulţire cu constanta cntr_scale. modulatorul prezentat ocupă cu 45% mai multe resurse decât cel prezentat în [136]. [28]. Algoritmul de calculare a valorilor de prag se execută în 8 paşi. b. fără generatorul de semnal de intrare) şi alte două versiuni din literatură [136]. deci nu va mai fi detaliată.

Pentru testare. El a fost testat efectiv la frecvenţa de 50MHz.a. de la 77MHz la 124MHz. ambele sisteme descrise au fost realizate cu aceeaşi precizie. Această observaţie este importantă.28 este prezentată o captură de osciloscop a semnalelor de la ieşirea punţii invertoare. uneltele de analiză a temporizării au raportat că sistemul prezentat este capabil să ruleze la o frecvenţă maximă de 77MHz. deci au nevoie de o memorie ROM pentru a păstra eşantioanele funcţiei sinus. Implementare Dispozitiv FPGA Resurse ocupate: Rezoluţia LUT-uri/bistabili Prezentată aici Xilinx Spartan-3E / XC3S500E 830/510 24 biţi Prezentată în [136] Xilinx Spartan-2 / n. Resurse Sistem cu modulator 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. având şi rezoluţie dublă faţă de acesta. 573/n. Trebuie totuşi sesizat că în tabel sunt prezentate resursele ocupate de întreg sistemul. Figura 5. şi nu simplificarea (5. De asemenea.a. la prima vedere.5. Resursele ocupate de modulatorul SVM. de 18 biţi. Tabelul 5. modulatorul sinusoidal cu injecţie de ZSS a fost realizat folosind formula (5. Resursele ocupate de cele 2 sisteme cu modulator. modulatoarele prezentate în literatură folosesc funcţii trigonometrice pentru a determina sectorul în care se află vectorul. Semnalele filtrate de la ieşirea punţii invertoare. 5. filtrate cu filtre trecejos pasive. folosită şi de sistemul de control.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. 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. Pentru rigurozitate. deoarece realizează modulaţia direct din reprezentarea α/β a tensiunii de comandă.4. modulatorul a fost conectat la generatorul de semnale sinusoidale. 5.5 rezultă. Tabelul 5. În Tabelul 5.a. în implementarea unui sistem de control orientat după câmp pentru un motor de CA modulatorul prezentat este mai avantajos. incluzând generatorul de semnal. evidenţiindu-se astfel prin rezultate experimentale echivalenţa celor două tehnici de modulaţie [138].3). 8 biţi Prezentată în [28] Altera Cyclone / EP1C20 1221/n. având în vedere că acele implementări folosesc forma trifazată a vectorului spaţial. şi este cu 32% mai economic decât cel prezentat în [28]. mapare şi rutare.4). În plus. În Fig. pentru determinarea valorii absolute. Celelalte implementări vor avea nevoie de operaţii în plus pentru realizarea transformării din spaţiul α/β în cel trifazat. 12 biţi După sinteză.5 sunt prezentate comparativ resursele ocupate de cele două sisteme. deoarece la 53 .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. 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.28.rezoluţie de 3 ori mai mare. 5. Acest lucru presupune un pas de calcul în plus. Din Tabelul 5.18.

anume aceea de calculare a ZSS. aceasta este invers proporţională cu frecvenţa semnalului purtător. inversa transformării (5. Cu alte cuvinte. 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. Atunci când se utilizează dispozitive FPGA. • Funcţionează la o frecvenţă ceva mai mare. De obicei. acest punct este destul de important. aceasta este mai apropiată de reprezentarea în sistemul bifazat legat de stator. modulatorul SVM fiind totuşi preferabil deoarece: • Are nevoie de mai puţini paşi pentru a realiza calculele. pentru a scădea perioada de eşantionare a sistemului de control digital şi deci lăţimea sa de bandă. acest lucru implică mărirea numărului de paşi ai algoritmului. Desigur. Cea mai simplă soluţie. atât a celui sinusoidal cât şi a modulatorului SVM. Pe lângă timpul de calcul. ce reprezintă multipli ai unei fracţiuni din perioada semnalului de tact. deci şi calea de date). 5 în loc de 6.9). [141]. Este. în general. Fără a include generatoarele de semnal.2. α/β. există metode de a multiplexa în timp folosirea resurselor hardware.6 Îmbunătăţirea rezoluţiei modulatorului SVM Problema modulatoarelor PWM. 5. şi ţinând cont că multiplicatoarele sunt o resursă critică pe FPGA. semnalele fiind generate de către algoritmul de control. constă în a creşte frecvenţa semnalului de tact aplicat numărătorului ce generează purtătoarea PWM. în cazul SPWM-ZSS va mai fi necesar cel puţin un pas de calcul. aşadar. care are avantajul faţă de cele prezentate în [139] şi [140] că este sincron. pe de altă parte. În această secţiune se prezintă o generalizare a circuitului din [141].integrarea într-un sistem de control acest modul dispare. decât pentru a ajunge de la reprezentarea internă la cea trifazată. a fost extins la 6 canale (fiecare 54 . 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. despre care s-a amintit în Secţiunea 2. O altă schemă de modulaţie afectează doar o mică parte în algoritmul SPWM-ZSS. • Foloseşte mai puţine multiplicatoare. Ca şi circuitele din familia Xilinx prezentată în Secţiunea 2.2. Singurul inconvenient este că dacă se doreşte o altă schemă de modulaţie. rezoluţia modulatorului ar trebui să fie cât mai mare. 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. şi circuitul Spartan-3E XC3S500E ce s-a folosit la experimente dispune de blocuri DCM. Deci se poate considera că algoritmul SPWM-ZSS este mai flexibil. în speţă a multiplicatoarelor. Circuitul prezentat în [141] a fost modificat pentru a folosi purtătoarea PWM triunghiulară. Având în vedere şi punctul anterior. această transformare implică şi utilizarea unor resurse suplimentare. dar acest lucru implică complicarea sistemului şi introducerea unor paşi suplimentari de calcul. • Are ca valori de intrare componentele α/β ale tensiunii trifazate. frecvenţa purtătoarei ar trebui să fie cât mai mare. cel puţin egală cu rezoluţia senzorilor de curent şi viteză. de exemplu folosind unul singur din vectorii nuli. această abordare nu este suficientă şi se caută îmbunătăţirea ei prin introducerea de întârzieri precise. important de subliniat că algoritmul SVM este preferabil algoritmului SPWM-ZSS la implementarea pe FPGA. aceste întârzieri pot fi obţinute cu precizie foarte ridicată folosind elementele de gestionare a semnalelor de tact integrate în FPGA [139].19). Avem deci de-a face cu constrângeri contradictorii: pe de o parte. vizibilă uşor şi din (5. deci implică un timp de calcul mai lung. cum. sistemele de control performante pentru motoare de CA folosesc reprezentarea într-un sistem de referinţă bifazat legat de rotor. 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. inclusiv a 2 multiplicatoare. Aşa cum rezultă din (5. [140].9). se observă că cele două modulatoare ocupă cam aceleaşi resurse. algoritmul SVM se modifică total (se modifică formulele de calcul. pentru a avea un sistem de control stabil şi performant.

34). deci s-au folosit doar câte două ieşiri din fiecare DCM. Blocurile DCM. Folosind un osciloscop cu lăţime de bandă mare. Fig. S-a putut astfel verifica experimental corectitudinea funcţionării modulatorului proiectat. asigurându-se întârzieri minime pe liniile de tact. de 500MHz. proiectat prin captură de schemă. a unui motor de inducţie. Pentru proiectare. Acest lucru oferă două avantaje majore: (i) este eliminată o sursă de posibile asimetrii datorită defazajelor imperfecte. după metoda V/Hz. a fost testat pentru comanda simplă. s-au putut verifica experimental. Bistabilii din FPGA permit selectarea frontului de tact la care reacţionează [126]. Figura 5. modulatoarele corespunzătoare. respectiv bifazat. Fiecare modulator a fost integrat într-un sistem de testare. modulaţia bazată pe vectori spaţiali este relativ recentă. în buclă deschisă. numărătorul şi cei 4 bistabili din partea de sus sunt pilotaţi de acelaşi semnal de tact de 200MHz.34. într-o manieră originală. comandat de o punte invertoare trifazată cu IGBT-uri (Fig. Standul experimental cu punte invertoare de putere şi motor de inducţie. s-a făcut o analiză a lor din punctul de vedere al implementării pe FPGA. ceea ce a permis validarea conceptului prin simulare. Figura 5. Din punctul de vedere al implementării. îmbunătăţit cu circuitul prezentat în această secţiune.tranzistor al punţii invertoare este controlabil independent) şi i s-a îmbunătăţit liniaritatea prin reproiectarea multiplexoarelor pentru o mai bună simetrie. Din punctul de vedere al rezultatului. apărând odată cu evoluţia sistemelor de control digitale şi fiind apanajul acestora. Astfel. Pentru testare.30. ce nu mai este reprezentat pentru a nu încărca figura. conţinând un generator controlat de semnal trifazat. Cei 16 bistabili din partea de jos sincronizează semnalele de set şi reset cu 8 semnale de tact defazate de către blocurile DCM. 5. cele două metode sunt foarte diferite: în vreme ce modulaţia PWM sinusoidală este foarte veche. 5. După prezentarea generală a metodelor de modulaţie.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. (ii) toate semnalele de tact pot folosi resurse de rutare globale speciale (numărul buffer-elor speciale de tact este redus). ţinând cont de posibilităţile de paralelizare a operaţiilor în FPGA. s-a folosit mediul Simulink şi software-ul System Generator.30 prezintă circuitul proiectat. fiind iniţial implementată folosind componente analogice. însă. s-au efectuat măsurători. 55 . 5. S-au proiectat. Experimentele au dovedit echivalenţa funcţională a celor două metode de modulaţie. a fost implementat în FPGA. metodele sunt echivalente. circuitul prezentat. Modulatorul SVM. Schema de principiu a circuitului generator de PWM cu rezoluţie înaltă.

θ r . Se observă că perpendicular pe cele 3 înfăşurări statorice se definesc 3 axe. Figura 6. prin reproiectarea uneia prezentate în literatură astfel încât să funcţioneze cu semnal purtător triunghiular. λm este amplitudinea legăturilor de 56 . Din acest motiv. a fost prezentată în [144]. Modulatorul SVM prezentat aici a fost prezentat în [143]. Schema a fost obţinută în doi paşi. Ecuaţiile electrice ale motorului sunt: ⎡v as ⎤ ⎡rs ⎢v ⎥ = ⎢ 0 ⎢ bs ⎥ ⎢ ⎢ vcs ⎥ ⎢ 0 ⎣ ⎦ ⎣ 0 rs 0 ⎡ ⎢ Lls + L A 0 ⎤ ⎡ias ⎤ d ⎢ 1 0 ⎥ ⎢ibs ⎥ + ⎢ − L A ⎥ ⎢ ⎥ dt ⎢ 2 rs ⎥ ⎢ics ⎥ ⎦⎣ ⎦ ⎢−1L ⎢ 2 A ⎣ − 1 LA 2 1 LA 2 ⎤ ⎡ ⎤ ⎥ i ⎢ λm sin θ r ⎥ ′ ⎡ as ⎤ ⎥ 2π ⎥ d ⎢ ⎥ ⎢ibs ⎥ + ⎢λm sin(θ r − ′ )⎥ . sau motor BLAC (Brushless AC). cu folosirea doar a vectorului nul 000.1 [147]. cs în Fig. rs reprezintă rezistenţa înfăşurării statorice. 6. într-un PMSM tensiunea în înfăşurări trebuie să fie sinusoidală. Poziţia rotorului faţă de stator se defineşte prin unghiul dintre axele q şi as.1. 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. iar perpendicular pe aceasta. deoarece multe abordări din literatură [42]. mai este cunoscut în literatură sub denumirea de motor fără perii de CA. 3 ⎥ ⎥ ⎢ ⎥ dt ⎢ ⎢ics ⎥ ⎣ ⎦ ⎢λ ′ sin(θ + 2π )⎥ Lls + L A ⎥ r ⎥ ⎢ m 3 ⎥ ⎣ ⎦ ⎦ − 1 LA 2 1 − LA 2 Lls + L A − (6. în direcţia acelor de ceasornic. Această concluzie este semnificativă. [57].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. în care o tensiune continuă se comută în anumite înfăşurări ale statorului în funcţie de poziţia rotorului. 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. Proiectarea unui sistem de control al vitezei pentru motorul PMSM implementabil în hardware pe FPGA 6. Spre deosebire de motorul BLDC. În final.1. ias . O modificare a acestuia. Lls ′ este inductanţa de pierdere (leakage) a înfăşurării statorice. Reprezentarea schematică a unui PMSM [147]. iar faza sinusului trebuie să fie în concordanţă cu poziţia rotorului. Paralel cu polii magnetici ai rotorului. bs. ibs . Schema pentru creşterea rezoluţiei modulatorului PWM a fost publicată în [143]. iar viteza unghiulară a rotorului se notează ω r . [142] preferă modulaţia sinusoidală sub pretextul că este mai uşor de implementat. Modulatorul SPWM-ZSS a fost prezentat în [145]. vcs reprezintă căderile de tensiune pe înfăşurările notate cu as.1) unde v as . ics reprezintă curenţii prin înfăşurări. Deşi ambele modulatoare ocupă cam aceeaşi cantitate de resurse logice din FPGA. 6. 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. pe direcţia polului nord. axa q. Un PMSM cu doi poli rotorici şi trei înfăşurări statorice este reprezentat în Fig.Cele două modulatoare au fost comparate din punctul de vedere al resurselor ocupate şi al vitezei de lucru. Amplitudinea şi frecvenţa acestei tensiuni este legată de viteza rotorului. vbs . 6. se defineşte axa d.

Ecuaţia (6. iar TL este cuplul mecanic de încărcare. unde P este numărul de poli magnetici ai rotorului.3). ′ v qs = rs iqs + ω r Ld ids + ω r λ m + Lq v0 s = rs i0 s + Lls d i0 s dt d iqs dt Te = (6.9).13). cum inductanţele echivalente pe cele două axe sunt egale. ecuaţia de cuplu se simplifică foarte mult.12) Te = 3P ′ λm iqs 2 2 57 . μ 0 este permeabilitatea magnetică a vidului (şi o aproximează pe cea a aerului). cele două inductanţe echivalente nu mai sunt egale.1). iar Ld este inductanţa echivalentă pe axa d şi este egală cu Lq în cazul PMSM cu rotor rotund. Dacă rotorul nu ar fi rotund. F este factorul de fricţiune.8) poate fi explicitată în (6.5) vectorilor mărimilor trifazate se obţin reprezentările lor în sistemul de coordonate q/d. Te = P 3 1 1 ′ λm [(ias − ibs − ics ) cos θ r + (ibs − ics ) sin θ r ] 2 2 2 2 (6. (6. dar sunt în orice caz invariabile. Dacă rotorul nu este rotund.12) se simplifică în (6. (6. În aceste condiţii proiectarea unui sistem de control pentru PMSM este foarte dificilă. aplicând matricea de transformare dată de (6. iar g reprezintă grosimea spaţiului dintre rotor şi stator (air gap.11). variabilă. Ecuaţia mecanică a motorului este dată de relaţia (6. 0 ⎥ ⎢ ds ⎥ m dt ⎢ ⎥ ⎢0⎥ Lls ⎥ ⎢i0 s ⎥ ⎦⎣ ⎦ ⎣ ⎦ (6. rezultă: ⎡v qs ⎤ ⎡rs ⎢v ⎥ = ⎢ 0 ⎢ ds ⎥ ⎢ ⎢v 0 s ⎥ ⎢ 0 ⎣ ⎦ ⎣ 3 2 0 rs 0 ′ 0 ⎤ ⎡iqs ⎤ ⎡ Ld ids + λ m ⎤ ⎡ Lq ⎥ ⎢i ⎥ + ω ⎢ − L i ⎥+ d ⎢ 0 0 ⎥ ⎢ ds ⎥ r⎢ q qs ⎥ dt ⎢ ⎢ ⎥ ⎢0 rs ⎥ ⎢i0 s ⎥ 0 ⎦⎣ ⎦ ⎣ ⎦ ⎣ 0 Ld 0 0 ⎤ ⎡iqs ⎤ ⎡0⎤ ⎥ ⎢i ⎥ + d ⎢λ ′ ⎥ . Cuplul electromagnetic este dat de (6. H. (6. unde J este momentul de inerţie a rotorului şi a sarcinii. (6.11) 3P ′ (λ m iqs + ( Ld − Lq )iqs ids ) 2 2 (6. adică rotorul este rotund. r este raza internă a statorului.5) întregii ecuaţii electrice a motorului (6.1).6) (6.3) ar apărea şi inductanţe variabile în funcţie de poziţia rotorului.6) şi (6. inductanţele maşinii vor avea încă o componentă.10) (6.1) şi (6. propusă de R. Aplicând transformarea dată de (6.4). deoarece în (6.10). Transformarea sistemului de coordonate se dovedeşte astfel crucială pentru proiectarea unui sistem de reglare a cuplului sau vitezei motorului PMSM.3) Te = J 2 d 2 ω r + F ω r + TL P dt P (6. au dezavantajul major că mărimile electrice şi mecanice depind de poziţia rotorului. În caz contrar. lucrurile ar fi şi mai complicate. l este lungimea axială a motorului.5) ecuaţiei de cuplu a motorului (6.3) este valabilă dacă rotorul este perfect rotund. Se presupune că spaţiul dintre rotor şi stator este uniform. întrefier). Park încă din 1929. dependentă de unghiul dintre stator şi rotor.3).flux stabilite de magneţii permanenţi. altfel trebuind introduse componente datorate inductanţelor variabile.7). de a realiza o transformare din sistemul de coordonate trifazat legat de stator în sistemul bifazat legat de rotor.3) se obţine (6.5) 3 3 ⎥ 1 1 ⎥ ⎥ 2 2 ⎦ cos(θ − ⎡v qs ⎤ ⎢v ⎥ = K s ⎢ ds ⎥ ⎢v 0 s ⎥ ⎣ ⎦ ⎡v as ⎤ ⋅ ⎢vbs ⎥ ⎢ ⎥ ⎢ v cs ⎥ ⎣ ⎦ ⎡ias ⎤ ⎡iqs ⎤ ⎢ i ⎥ = K ⋅ ⎢i ⎥ s ⎢ bs ⎥ ⎢ ds ⎥ ⎢ics ⎥ ⎢i0 s ⎥ ⎣ ⎦ ⎣ ⎦ (6.12) [147].13) (6.8) unde Lq = Lls + L A este inductanţa echivalentă pe axa q.9) v ds = rs ids − ω r Lq iqs + Ld d ids dt (6. Aşadar. O cale de a evita lucrul cu mărimile variabile în timp este aceea.7) Aplicând transformarea dată de (6. ce modelează motorul PMSM. ⎡ ⎢ cos θ 2⎢ K s = ⎢− sin θ 3⎢ ⎢ 1 ⎢ 2 ⎣ 2π 2π ⎤ ) cos(θ + ) 3 ⎥ 3 2π 2π ⎥ − sin(θ − ) − sin(θ + )⎥ (6. Şi formula (6.1) şi (6. ecuaţiile electrice ale motorului nu mai conţin mărimi dependente de poziţia rotorului. iar L A = ⎜ ⎛ N s ⎞ πμ 0 rl ⎟ g ⎝ 2 ⎠ 2 este definit pentru a exprima mai uşor inductanţele proprii şi mutuale ale statorului în a doua matrice din (6. lucrând în sistemul de coordonate q/d. Se observă că în cazul PMSM cu rotor rotund. De asemenea. Astfel.4) Relaţiile (6. N s reprezintă numărul de spire al înfăşurării.

(6. iar acesta este controlat.9). dar legat de rotor. Conform (6. dacă se elimină cuplajul ce apare între cele 2 axe şi componenta datorată tensiunii electromotoare induse. viteza este controlată prin intermediul cuplului electromagnetic.21) Aşadar. Curentul pe axa d este menţinut la 0 (zero) pentru viteze 58 .11) poate fi ignorată. adică se verifică (6. fix. Se observă că ecuaţiile (6. Dar din cauză că motorul este controlat prin intermediul tensiunilor aplicate pe cele trei faze. Cea de-a treia componentă este secvenţa de zero şi este de obicei nulă.16) Ks = P ⋅C (6.15). existând un cuplaj între componentele q şi d. ⎡ ⎢1 ⎢ 2 C = ⎢0 3⎢ ⎢1 ⎢ ⎢2 ⎣ − 1 2 3 2 1 2 1 ⎤ 2 ⎥ ⎥ 3⎥ − 2 ⎥ 1 ⎥ ⎥ 2 ⎥ ⎦ − ⎡ cos θ P = ⎢− sin θ ⎢ ⎢ 0 ⎣ sin θ cos θ 0 0⎤ 0⎥ ⎥ 1⎥ ⎦ (6. Transformata Clarke este descrisă de matricea de transformare din (6.19).18).Din nou. transformarea din sistemul trifazat fixat pe stator în sistemul bifazat rotitor fixat pe rotor dată de (6.10) (ecuaţia (6. se poate verifica faptul că transformarea iniţială este echivalentă cu transformările Clarke şi Park efectuate succesiv. conduce de la sistemul de coordonate α/β.21).17) Transformărilor directe le corespund transformări inverse. date de inversele matricelor prezentate: (6.20). la un sistem de coordonate tot bifazat. fiind descris de ecuaţiile electrice (6. ceea ce înseamnă că în urma transformării rezultă 3 componente. q/d.17).În literatură. şi nu două. motorul PMSM cu rotor rotund poate fi modelat foarte convenabil în sistemul de coordonate q/d. Se observă din (6. Ecuaţiile (6.9) şi (6. conform (6.14) este adesea văzută ca o serie de 2 transformări succesive.18) C −1 ⎡ ⎢ 1 ⎢ 1 = ⎢− ⎢ 2 ⎢ 1 ⎢− ⎣ 2 ⎤ 0 1⎥ ⎥ 3 1⎥ ⎥ 2 3 ⎥ − 1⎥ 2 ⎦ (6. Matricea este 3x3. 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. Prima este transformata Clarke.2 Proiectarea sistemului de control al vitezei pentru motorul PMSM Aşa cum motorul se modelează uşor în sistemul de coordonate q/d. Transformarea Park este dată de matricea din (6. 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. de ecuaţia de cuplu (6. ⎤ ⎡ ⎢ cos θ 1⎥ − sin θ ⎥ ⎢ 2π 2π ) − sin(θ − ) 1⎥ = ⎢cos(θ − 3 3 ⎥ ⎢ ⎢cos(θ + 2π ) − sin(θ + 2π ) 1⎥ ⎥ ⎢ 3 3 ⎦ ⎣ ⎡cos θ = ⎢ sin θ ⎢ ⎢ 0 ⎣ − sin θ cos θ 0 0⎤ 0⎥ ⎥ 1⎥ ⎦ K s−1 (6.16). (6.13) şi de ecuaţia mecanică (6. În sistemul de coordonate q/d ecuaţiile electrice ale motorului descriu funcţii de transfer de ordinul I. deoarece componenta secvenţă de zero este nulă).13). componentele α/β. controlând componenta de pe axa q a curentului.4). din sistemul trifazat fixat pe stator într-un sistem bifazat fixat tot pe stator. A doua transformare. Această transformare corespunde echivalării maşinii trifazate cu una bifazată.4).15) (6.4) sunt liniare. iar bucla de reacţie foloseşte senzori pentru a măsura curenţii ce trec prin cele trei înfăşurări. Dacă se efectuează calculele. Cel mai adesea sunt folosite regulatoare simple de tip PI (proporţionalintegrator) pentru controlul curenţilor prin motor [149].13) şi (6. se poate arăta că se verifică (6.16) că secvenţa de zero rămâne nemodificată prin transformarea Park şi nu influenţează celelalte componente. legat de stator.20) K s−1 = C −1 ⋅ P −1 (6. transformarea Park.19) P −1 (6. rotindu-se sincron cu acesta. (6.10) sunt neliniare. abordare foarte folosită pentru simplificarea analizei maşinii. 6. şi sistemul de control se modelează în acelaşi sistem.

cu dezavantajul creşterii complexităţii algoritmului de control.9) şi (6. Din acest motiv. Considerând curentul ca variabilă de ieşire şi tensiunea ca variabilă de intrare şi aplicând transformata Laplace.24) Gcq ( s ) = τ iq rs K PIq = s +1 (6. Punând funcţia de transfer a regulatorului PI sub forma (6. 6. conform (6.22) s G PI ( s ) = K PI τis +1 τis 1 1 τ qs +1 (6.3. Curenţii pe axele q şi d sunt controlaţi prin intermediul tensiunilor pe axele q şi d. Aceasta este controlată prin modulaţie bazată pe vectori spaţiali (SVM sau SVPWM). făcându-l pe acesta din urmă practic neglijabil. 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]. Motorul este alimentat de o punte invertoare trifazată (VSI).23). se foloseşte informaţia despre poziţia rotorului derivată cu ajutorul unui codificator optic cu ieşiri digitale în cuadratură. iar algoritmul de modulaţie foloseşte componentele α/β ale tensiunii de referinţă. rezultând perioada de 59 . ce echivalează cu eliminarea termenilor ce conţin ω r din ecuaţia (6. Această funcţie de transfer descrie un element de întârziere de ordinul I şi poate fi ajustată pentru comportarea dorită a sistemului. După decuplare. ceea ce face dificilă alegerea parametrilor unui regulator PI pentru viteză. Algoritmul de control trebuie să compenseze cuplajul dintre cele două axe ce apare în aceste ecuaţii. din (6. Gq ( s ) = 1+ 1 rs Lq rs (6. Această abordare îmbunătăţeşte performanţele sistemului. 6. Se va prezenta aşadar detaliat doar proiectarea regulatorului pentru curentul de pe axa q.mai mici decât viteza nominală a motorului.2. Fig. Schema de control al vitezei pentru motorul PMSM. ambele necesare în algoritmul de control. Din cauză că de obicei momentul de inerţie al motorului are valori mult mai mari decât factorul de fricţiune.23) τ iq = Lq rs (6.3 prezintă schema bloc a sistemului de control al vitezei pentru motorul PMSM. pe lângă curenţii ce trec prin înfăşurările motorului. precum şi componenta datorată tensiunii electromotoare induse ce apare în (6.9).9) se derivă funcţia de transfer echivalentă părţii electrice a motorului pe axa q. Ieşirile acestuia (cele două semnale în cuadratură şi un impuls de index) sunt prelucrate pentru a obţine unghiul şi viteza rotorului. parametrul τ i se va alege astfel încât să compenseze polul funcţiei Gq (s) .22).25).24). aceasta devine o ecuaţie diferenţială liniară de ordinul I. conform (6.25) Perioada de eşantionare a sistemului este dată de către frecvenţa purtătoarei modulatorului SVM. Figura 6. partea mecanică a motorului are o comportare aproape de a unui integrator.10). ca în (6. Aceasta a fost fixată pentru experimente la 20kHz. în literatură s-a propus utilizarea unui regulator cu buclă dublă de reacţie. aşa cum rezultă în urma discuţiei din paragrafele de mai sus. Pentru reacţie. de tip PI-P [150]. Funcţia de transfer în buclă închisă se reduce la (6.9).1 Alegerea parametrilor pentru regulatoarele de curent Pentru ambele regulatoare de curent s-a aplicat aceeaşi metodă de proiectare analitică.

regulatorul de tip P va poziţiona polii sistemului în buclă închisă.29) K PIq = (6. 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.4. Rezultă o funcţie de transfer în buclă închisă (6. se pleacă de la funcţia de transfer a sistemului în buclă deschisă (6. rezultă că se poate aproxima τ ω + τ q ≅ τ ω şi funcţia de transfer în buclă închisă devine cea din (6. vb.eşantionare dată de (6. nu ca mărime de intrare). conform (6. Factorul de amplificare pentru regulatorul P se alege astfel încât funcţia de transfer în buclă închisă să aibă un pol dublu în s = − 1 2τ q .31) ′ Kω Kω Gcω ( s ) = τ qτ ω s+ s + 2 1 τq ′ Kω Kω (6. (6.33) = ′ 4 K ωτ q 3Pλmτ q K PIω 2 4τ q τ iω = 2τ q (6. din (6.1.33). rezultând (6.2.35) G cω1 ( s ) = 1 s + 2 1 2τ q s+ K PIω 2 4τ q (6. Schema Simulink a sistemului de reglare în acest stadiu este prezentată în Fig. 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. Constanta de timp a sistemului în buclă închisă a fost aleasă de 4 ori mai mare decât perioada de eşantionare.27) (6. iar cuplul de încărcare este constant în regim staţionar (este văzut ca mărime de perturbaţie.28). ′ notat cu K ω . Parametrii motorului sunt prezentaţi în Tabelul 6.35). Ca şi la regulatorul de curent.32). (6.28) τ id = d Ts = 50μs (6. 3P ′ λm Kω 4F Gω ( s ) = = J τωs +1 s +1 F (6.27).3 Validarea sistemului de control în continuu Sistemul de control proiectat conform secţiunii anterioare a fost implementat în Simulink şi verificat prin simulare. Pentru alegerea factorului de amplificare al regulatorului P. rezultând pentru parametrul K PI valoarea din (6. unul de tip P şi unul de tip PI.13) şi (6. Funcţia de transfer în buclă deschisă rămasă este dată de (6. 6.36) 6.30) pentru partea mecanică a motorului.26). Sistemul de control se va proiecta deci în doi paşi.34).34) G oω1 ( s ) = K PIω 1 τ iω s(2τ q s + 1) (6. sistemul de control al vitezei conţine două bucle de reacţie şi două regulatoare. 6.30) ′ Goω ( s ) = K ω Kω 1 τ qs +1 τω s +1 (6.32) ′ Kω = τ qτ ω τω J . S-au folosit parametrii motorului Pittman 3441 de 19. τ ω are valori foarte mari). având la intrare curentul pe axa q şi la ieşire viteza. Factorul de amplificare K PIω se determină în funcţie de comportarea dorită a sistemului.36) ce descrie un sistem de ordinul II. Următorul pas constă în alegerea parametrilor regulatorului PI. vc.25). Asemănător.1V. Lq L L K PId = d (6. pentru a putea lucra în spaţiul 60 .29). folosind un model al motorului PMSM din librăria SimPowerSystems. abc2qd.4) rezultă funcţia de transfer din (6. Mai întâi. Acestea primesc la intrare valori corespunzând celor trei tensiuni sinusoidale va. considerând pentru partea electrică funcţia de transfer din (6. pentru regulatorul de curent de pe axa d rezultă parametrii din (6. După cum se poate vedea şi din Fig.26) 4Ts 4Ts rs 6. Puntea invertoare ce alimentează motorul este înlocuită în acest stadiu al simulării de surse controlate de tensiune tot din librăria SimPowerSystems.31). parametrul τ i se va alege astfel încât să anuleze un pol al funcţiei Gcω (s) .2 Alegerea parametrilor pentru regulatorul de viteză Considerând că motorul PMSM are rotorul rotund.3.

Pentru bucla externă.3 (6.3 (6.0571 (6. În aceste condiţii. (6.42) K PIq = K PId = 2.m^2 sistemul de control din mărimile mecanice măsurabile. prin funcţiile sin şi cos aplicate unghiului măsurat. 2 (6. a fost simulată şi bucla de reglare a vitezei. conform (6.33). cât şi transformarea inversă din sistemul de coordonate q/d în sistemul trifazat.62 V/krpm mărimile electrice.q/d. Figura 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ă.24). (6. ′ K ω = 0. θe = P θm 2 (6.1024 (6. Astfel. deci acestea trebuie obţinute de către de tensiune 9. conform (6. Rezultă pentru regulatorul PI parametrii din (4. pentru a putea comanda motorul. (4. pentru regulatoarele de curent sF au obţinut parametrii din (6. conform (6.40) K Pq = K Pd = 2.175e-6 N.00046 H Lq 0.00017524 K Iq = K Id = 13125 (6.4.38). pentru bucla internă. În a doua fază de validare. valoarea din (6.44).41).37).46).47).s cont de parametrii motorului.41) Într-o primă fază de validare.45) 61 . şi 0.00046 H este dată de numărul de poli magnetici ai rotorului conform (6.m. Parametrii regulatoarelor au fost determinaţi ţinând cont de parametrii motorului.34). iar acesta diferă de unghiul electric 2.43). qd2abc.40). având poli reali în s=-330 şi s=-2523. Aceste transformări se folosesc de poziţia rotorului. Factorii de amplificare pentru elementele proporţional şi integrator ale regulatoarelor rezultă cei din (6. 2 P (6. sistemul rezultat este de ordin II. Schema Simulink a sistemului de reglare.625 ohm Ld ( θ e ).1.39) (6. Parametrii motorului PMSM. valoarea din (6. regulatoarele de curent au fost testate separat. prin întreruperea buclei de reglare a vitezei şi impunerea unei referinţe de curent.00035048 (6.39).42).9e-7 kg.37) ωe = P ωm .27). Parametrul K PIω se alege (a se vedea (6.43) τ iω = 0. (6. Ţinând J 0. Tabelul 6. În toate ecuaţiile motorului s-au considerat Constanta 2.26). pentru factorul de amplificare al regulatorului de tip P rezultă.44) K PIω = 0. (6. Trebuie precizat că unghiul măsurat este unghiul Parametru Valoare rs mecanic al rotorului ( θ m ). deci cu un pol dominant. Această diferenţă apare şi în ceea ce priveşte viteza.38) τ iq = τ id = 0. pentru parametrul τ iω rezultă.

din sistemul de coordonate q/d în sistemul trifazat. dată de (6. Toate limitările s-au făcut cu hardware suplimentar pentru saturaţie în caz de depăşire. u[k ] = ( K I Ts K T + K P )ε [k ] + ( I s − K P )ε [k − 1] + u[k − 1] 2 2 ⎧iq [k ] = cos(θ e [k ])iα [k ] + sin(θ e [k ])i β [k ].48). în concordanţă cu frecvenţa semnalului purtător PWM. iar semnalele din sistem vor trebui discretizate în amplitudine. unde ε este intrarea regulatorului. Răspunsul sistemului simulat la o comandă de tip treaptă de viteză.52). Deoarece sistemul de control aplică comanda motorului prin intermediul tensiunilor de pe cele 3 faze. fiind limitată de frecvenţa de comutaţie a tranzistoarelor de putere din componenţa punţii invertoare.49)-(6. Regulatoarele PI au fost discretizate folosind aproximarea de tip trapez (metoda Tustin).49) şi α/β la q/d (6.46) K Iω = 256 (6. ⎨ v d _ dec [k ] = −ω e [k ]iq [k ]Lq . Acestea sunt implementate prin două transformări succesive.50) ⎧vα [k ] = cos(θ e [k ])v q [k ] + sin(θ e [k ])v d [k ]. ⎪ 3 ⎩ (6. pentru perioada de eşantionare a sistemului a fost aleasă valoarea Ts = 50μs . Aceasta nu poate fi foarte înaltă.52) 62 .4 Discretizarea sistemului de control Deoarece sistemul de control va fi implementat numeric pe un dispozitiv FPGA. 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.51). acesta trebuie să realizeze şi transformarea inversă.50).49) (6. sistemul de control nu trebuie să realizeze decât transformarea de la q/d la α/β. ⎨ ⎩id [k ] = sin(θ e [k ])iα [k ] − cos(θ e [k ])i β [k ]. precum şi transformările (6.47) Răspunsul la treaptă al sistemului de reglare a vitezei simulat în Simulink este prezentat în Fig.K Pω = 0. iar u este ieşirea. (6. cu limitare la 18 biţi pentru intrările multiplicatoarelor şi 24 de biţi pentru celelalte operaţii. Aşa cum s-a menţionat. Deoarece sistemul de control are acces la curenţii prin cele 3 înfăşurări statorice. Figura 6.50). conform celor prezentate în secţiunea precedentă.8. asigurându-se comportarea corectă a sistemului chiar şi atunci când se ating limitele reprezentării numerice.51) ⎨ ⎩v β [k ] = sin(θ e [k ])v q [k ] − cos(θ e [k ])v d [k ]. doar că se aplică tensiunilor. iar algoritmul de modulaţie foloseşte reprezentarea bifazată α/β a vectorului spaţial ca intrare.8. ⎩ (6. ′ ⎧v q _ dec [k ] = ω e [k ]id [k ]Ld + ω e [k ]λ m . Ecuaţiile discrete ale regulatoarelor PI şi P. ⎪ ⎨ ⎪ i β [k ] = 3 (ib [k ] − i c [k ]). acesta trebuie să realizeze transformările de coordonate din sistemul trifazat fixat pe stator în sistemul bifazat rotitor sincron cu rotorul.51) şi operaţia de decuplare (6.48) 1 ⎧ ⎪iα [k ] = 3 (2i a [k ] − ib [k ] − i c [k ]). dar controlul se realizează pe baza curenţilor în sistemul de coordonate q/d. a/b/c la α/β (6. (6.1024 (6.52) au fost implementate folosind blocuri System Generator. de la α/β la q/d. conform (6. S-a folosit reprezentarea în virgulă fixă. 6. Cum tensiunile trifazate se aplică prin SVM. fiind descrise în timp discret de ecuaţia cu diferenţe (6. acesta trebuie discretizat în timp. Aceasta este exact la fel cu transformarea directă. 6.

Astfel. dar restul sistemului (în speţă. calculându-se diferenţa între semnalele din sistemul continuu şi cele din sistemul discret. 63 . deci ar putea folosi secvenţial acelaşi hardware. cu precizii diferite. valorile de ieşire ale algoritmului sunt verificate să fie valide sincron cu acest semnal de tact. celelalte trebuind să folosească trasee de uz general. pentru a se valida procesul de discretizare. rezultatele sunt valide mult mai repede. 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. doar unul va putea folosi traseele speciale. În acest stadiu.Simularea a fost reluată.008A. S-au efectuat simulări cu diferite formate de reprezentare pentru semnalele interne. din cauza structurii dispozitivului FPGA. în funcţie de timpul de propagare pe nivelurile de logică combinaţională ce implementează algoritmul. 6. Scăderea perioadei de eşantionare ar îmbunătăţi comportarea sistemului discret. Deşi blocurile System Generator sunt direct sintetizabile în hardware pe FPGA. multe operaţii depind de rezultatele altor operaţii. ca multiplicatoarele integrate sau blocurile de memorie RAM. folosind o perioadă de evaluare pentru blocul System Generator de 50μs. Totuşi. În plus. aşa că această metodă este greu de aplicat. factorizarea se realizează folosind graful de fluenţă a datelor (DFG – Data Flow Graph). 2. aproximării integratoarelor prin metoda Tustin şi extrapolatoarelor de ordin 0 (zero) de pe ieşiri). algoritmul a fost factorizat şi transformat într-un automat sincron pilotat de semnalul de tact global. algoritmul de modulaţie SVM) ar trebui să se asigure că citeşte date valide. Partea de comandă a motorului s-a păstrat la fel ca la simularea în continuu. obţinut din semnalul de tact global al sistemului de 50MHz. a rezultat reprezentarea din Fig. s-au evaluat erorile de discretizare (datorate erorilor de cuantizare. Prin simulare.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. dar multiplicatoarele reprezintă o resursă critică în dispozitivele FPGA de cost scăzut. graful de fluenţă este foarte complex. În plus. 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. 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). atât din cauza problemelor de sincronizare. Abaterea RMSD pentru curentul pe axa q este de aproximativ 0. Spre exemplu. Desigur. nepotrivite pentru această utilizare). suficientă pentru a se atinge regimul staţionar. De obicei.25rad/s. algoritmul nu poate fi implementat direct în această formă din două motive: 1. Astfel. erorile de cuantizare fiind mult sub celelalte efecte ale procesului de discretizare. sistemul discret a fost simulat împreună cu sistemul continuu. este un inconvenient serios atunci când vine vorba despre resurse hardware limitate. algoritmul de control va utiliza resurse hardware independente pentru toate operaţiile. iar acestea s-au dovedit acceptabile. În această formă. s-au obţinut rezultate asemănătoare cu cele obţinute la simularea sistemului continuu.5s. Pentru algoritmul prezentat. însă aceasta este limitată datorită pierderilor de comutaţie din puntea invertoare. În vreme ce acest lucru nu reprezintă o problemă majoră în ceea ce priveşte operaţiile logice sau cele de adunare/scădere. ce prevede trasee globale de rutare a tactului (în cazul în care există mai multe semnale de tact. 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. Celelalte operaţii vor fi efectuate de circuite hardware independente. iar blocurile au fost aliniate în funcţie de dependenţa de date dintre ele.11. S-a constatat faptul că creşterea preciziei la mai mult de 18 biţi nu aduce avantaje vizibile. mai ales. algoritmul SVM a fost înlocuit cu transformarea de coordonate de la α/β la a/b/c. cât. Din aceste motive. păstrând totuşi un grad înalt de paralelism pentru a asigura un timp de execuţie foarte scurt. 6. nu este recomandat să se folosească mai multe semnale de tact într-un sistem digital implementat pe FPGA. Algoritmul are nevoie de un semnal de tact cu frecvenţa de 20kHz.

11 este evident că algoritmul poate folosi eficient 4 multiplicatoare. apoi trece necondiţionat dintr-o stare în alta. Deşi regulatorul de viteză nu are nevoie de valorile curenţilor. Figura 6.Î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ă. Fiecare celulă de multiplicare va avea deci structura din Fig. Se observă (cu magenta) legăturile (de tip „go to”) către şi de la celulele de multiplicare 1 şi 2. Circuitul de control nu face decât să secvenţieze operaţiile din blocurile funcţionale.14 sunt două căi de date orizontale. î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. 6.14 este prezentat regulatorul de viteză PI-P. 6. cu albastru deschis) de la circuitul de control al căii de date. 6. executându-se în paralel de către resurse hardware independente. fluxul de date al algoritmului este controlat sincron cu semnalul de tact global al sistemului. 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. Semnalul de intrare de eroare este calculat ca diferenţa între semnalul de referinţă pentru viteză şi valoarea măsurată a vitezei. ieşirea lui nu poate fi folosită înainte ca acestea să fie disponibile. circuitul de control al căii de date este o maşină de stări de tip Moore. 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. Î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. Pentru exemplificare. 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. 6. valoarea actuală a erorii şi valoarea de la momentul anterior de eşantionare sunt 64 . 6. Aşadar. Aşa cum rezultă din Fig. 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. Reprezentarea grafică pentru factorizarea înmulţirilor. Registrele sunt controlate prin intermediul intrării de validare de către circuitul de control al căii de date. Cele 6 intrări corespund celor 6 utilizări posibile ale multiplicatorului. Din Fig. Ieşirea multiplicatorului se distribuie la toate blocurile funcţionale ce-l utilizează. fiecare din cele 2 intrări ale fiecărui multiplicator va fi conectată la un multiplexor 6 la 1. Figura 6. Blocurile funcţionale au fost transformate prin inserarea de registre după fiecare operaţie. Se mai observă semnalele (tot de tip „go to”.11. Aceasta rămâne în starea 0 (zero) până când este activată.12.48). deci paralelism în execuţie. Apoi. Operaţii asociate cu unele blocuri se suprapun cu operaţii asociate altor blocuri.12. Ca şi în cazul modulatoarelor prezentate în primele secţiuni. în Fig. Astfel. În 7 din cele 25 de stări ale automatului apar suprapuneri între blocuri. Celula de multiplicare ce permite utilizarea în comun a multiplicatorului. Astfel. păstrând un grad înalt de paralelism.11. În Fig. 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.

Acesta calculează eroarea de viteză intermediară folosind viteza măsurată şi ieşirea regulatorului PI. deoarece reprezentarea numerelor (poziţia virgulei fixe) diferă între blocurile funcţionale ce folosesc aceleaşi celule de multiplicare. rezultatele simulării validând corectitudinea paşilor de factorizare şi conceptul cale de date/automat de control. Calea de date din partea de jos este regulatorul P. Aceeaşi idee este folosită în toate blocurile funcţionale. deoarece durata de execuţie a algoritmului este comparabilă cu perioada de eşantionare. nu ar trebui să existe diferenţe în comportarea sistemului faţă de pasul anterior. timpul de calcul este foarte mic 65 . Figura 6. ea necesită o sincronizare precisă între momentele de măsurare şi starea punţii invertoare. În această fază. simularea în acest caz va dura foarte mult şi va fi imposibilă urmărirea unui număr mare de semnale. ieşirea regulatorului PI. Toate operaţiile sunt secvenţiate de semnalele provenite de la circuitul de control al căii de date. 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. Sistemul de control poate fi şi simulat. grupate în partea din stânga a Fig. În cazul implementării pe FPGA. Se folosesc blocuri de tip “Reinterpret” pentru a face reprezentarea numerelor transparentă pentru multiplicatoare. având însemnătatea fizică de viteză intermediară. Algoritmul de control al vitezei pentru motorul PMSM se execută în doar 25 cicli de tact. În final. în momentul eşantionării. fiecare bloc trebuie să transmită celulelor de multiplicare numere întregi fără virgulă şi să reinterpreteze rezultatul înmulţirii poziţionând corect virgula. datorită eficienţei crescute a structurii de calcul proiectate special pentru aplicaţie. impus de perioada semnalului de tact global. sistemul de control din Simulink poate fi implementat direct în FPGA. Regulatorul P foloseşte tot celula de multiplicare 1. datorită pasului de simulare foarte fin.6. Totuşi. este salvată în registrul Reg6. 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. apoi o înmulţeşte cu factorul de amplificare şi o salvează în registrul Reg8. fiind sincron cu semnalul de tact global.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.14. Rezultatele înmulţirilor sunt adunate între ele.48) folosind celulele de multiplicare 1 şi 2. algoritmul trebuie să se asigure că. Implementarea în Simulink a regulatorului PI-P de viteză.14. Cel mai potrivit moment de eşantionare ar fi chiar vârful de jos al semnalului purtător PWM (triunghiular) utilizat în SVM.înmulţite cu factorii corespunzători din (6. curenţii prin partea inferioară a punţii sunt chiar curenţii ce trec prin înfăşurările motorului. iar rezultatului i se adună valoarea ieşirii de la momentul anterior de eşantionare. Cum însă factorizarea nu afectează în niciun fel precizia algoritmului. Deşi simplă şi economică din punctul de vedere al hardware-ului.6 Interfaţarea senzorilor 6. De aceea. 6. Această metodă este preferată în cazul implementării algoritmului de control pe procesoare (microcontroler sau DSP). 6. Pe scurt.

Rezoluţia eşantioanelor s-a ales de 18 biţi. Aceasta se realizează însă eficient prin proiectarea de hardware dedicat implementat în FPGA. Aşadar.3 este mai puţin potrivită aici datorită faptului că perioada de eşantionare a sistemului de control este destul de mică. Schema de măsurare a curentului printr-o fază a motorului.15. Numărul de linii stabileşte rezoluţia codificatorului.37). conform (6. erorile de măsurare sunt 66 . Cum algoritmul de control nu necesită cunoaşterea unghiului (poziţiei) rotorului. Totuşi. La metoda T. corespunzătoare unui defazaj de 90°. cât şi pentru cos.4.în comparaţie cu perioada de eşantionare. memoria ROM necesită doar 1000 de locaţii. Această metodă este cunoscută în literatură [154] sub denumirea de metoda T. mai întâi folosind o adresă derivată direct din ieşirea numărătorului.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). Deci. Acesta stabileşte direcţia de rotaţie în funcţie de direcţia defazajului între cele două canale QEP. Metoda M. 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ă. 6. ci foloseşte valorile funcţiilor trigonometrice sin şi cos aplicate unghiului pentru realizarea transformărilor de coordonate. cu costuri mai mici decât un codificator absolut sau decât un rezolver analogic. Figura 6. unghiul electric folosit în transformări va fi dublul unghiului mecanic măsurat. 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. Apoi este achiziţionată cu ajutorul unui convertor analog/numeric (CAN) cu interfaţă serială rapidă de tipul ADCS7476. Acest lucru se poate realiza impunând o mică limitare amplitudinii vectorului spaţial.6. ieşirile circuitului de măsurare a unghiului sunt de fapt valorile pentru sin şi cos. comparabilă cu perioada semnalelor QEP. pentru a asigura o durată de timp suficientă în care se aplică vectorul nul 000. apoi polarizată şi scalată pe placa punţii trifazate. Cum motorul folosit în experimente are 2 perechi de poli. extragerea informaţiei de unghi şi viteză este ceva mai complicată. Acesta se bazează pe doi detectori optici ce urmăresc o bandă cu 500 de linii. ţinând cont de rezoluţia codificatorului. Problema măsurării unghiului se reduce la acumularea numărului de impulsuri QEP folosind un numărător reversibil (bidirecţional). Se va căuta deci folosirea în algoritm a valorilor curenţilor din aceeaşi perioadă de eşantionare. ţinând cont de organizarea memoriei RAM în FPGA. folosită în studiul de caz din Subcapitolul 3. Măsurarea vitezei se bazează pe metoda măsurării perioadei dintre două fronturi consecutive ale semnalelor QEP. şi apoi folosind adresa modificată prin adunarea valorii 500. ultimul bit al ieşirii numărătorului ce dă unghiul este ignorat la adresarea memoriei. spre deosebire de metoda măsurării frecvenţei semnalelor QEP (metoda M) prin numărarea fronturilor ce apar într-o unitate de timp. Memoria este accesată de două ori. 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ăderea de tensiune pe rezistenţă este amplificată. 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. aceasta necesitând un număr înjumătăţit de eşantioane. Schema de măsurare a curentului printr-o fază a motorului este prezentată în Fig. fiind implementată într-un singur bloc de memorie RAM pe FPGA. Direcţia de numărare este dată de un circuit de detecţie a direcţiei de rotaţie a motorului. 6. ceea ce ar conduce la erori semnificative de măsurare [155].15. Acestea sunt determinate folosind o singură memorie ROM ce păstrează eşantioane ale funcţiei sin.

1. 6. înainte de a fi integrate cu algoritmul de control. Calcularea vitezei prin metoda T necesită o operaţie de împărţire. Aceasta a fost implementată folosind un nucleu IP din System Generator. Mai întâi s-a verificat comportarea regulatoarelor de curent prin întreruperea buclei de control a vitezei şi impunerea unei referinţe de curent.14μs. însă Divider Generator 3. Răspunsul sistemului la o schimbare de tip treaptă a referinţei de curent pe axa q. timpul total de execuţie a unei iteraţii a algoritmului este de 107 cicli de tact. 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.17.7 Implementarea în FPGA şi rezultate experimentale Sistemul de control prezentat în paragrafele de mai sus a fost integrat cu modulatorul SVM. LUT-uri Bistabili de tip D Felii logice Multiplicatoare Blocuri RAM 2679 din 9312 2655 din 9312 2211 din 4656 11 din 20 1 din 20 (5%) (28%) (29%) (48%) (55%) După implementare. Resursele ocupate în Spartan-3E XC3S500E de sistemul de control al vitezei. Frecvenţa maximă la care poate lucra circuitul este de 77MHz. 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. Resursele ocupate de către sistemul de control implementat pe FPGA sunt prezentate în Tabelul 6. 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. iar citirea acestuia necesită 74 de cicli de tact. testarea experimentală s-a efectuat în 2 paşi. Datorită timpului foarte scurt de execuţie a algoritmului de control.1. Tabelul 6. Divider Generator 3. iar algoritmul SVM de 8 cicli de tact. prelucrarea şi aplicarea comenzii se pot efectua în aceeaşi perioadă de eşantionare. sistemul de control a fost testat experimental folosind o punte invertoare trifazată Technosoft PM50 şi un motor PMSM Pittman 3441 de 19. Ca şi validarea prin simulare. 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. astfel că semnalele capturate pot fi folosite pentru a observa comportarea sistemului de control în perioadele de eşantionare.75A este prezentat în Fig. Operaţia de împărţire este destul de costisitoare în ceea ce priveşte timpul de execuţie. Totuşi. folosind un semnal de tact de 50MHz. Circuitul de măsurare a vitezei. Nucleul ChipScope este pilotat de un semnal de tact cu frecvenţa de 20kHz. continuând cu regulatoarele şi sfârşind cu modulaţia SVM.acceptabile pe întreaga plajă a vitezei motorului. ce este limitată la aproximativ 7000 de rotaţii pe minut (RPM). ţinând cont că achiziţia valorilor curenţilor se face folosind un CAN cu interfaţă serială. începând cu transformările de axe. mai rapid.1V. Aşadar. Acesta este totuşi foarte scurt faţă de perioada de eşantionare de 50μs. achiziţia datelor. aşa cum a fost capturat de analizorul ChipScope pe 67 . Sistemul de control proiectat este sincron. în FPGA s-a implementat şi un analizor logic virtual ChipScope.66μs. sintetizat şi implementat într-un FPGA Spartan-3E XC3S500E. folosit pentru a captura semnalele interne ale sistemului. Pe lângă algoritmul de control şi hardware-ul de interfaţare cu senzorii. adică în 0. vectorul nul 000 trebuie aplicat pe întreaga durată a acestor operaţii. nu cu începerea unei noi perioade de eşantionare pentru algoritmul de control. pentru a putea executa algoritmul de control în aceeaşi perioadă de eşantionare cu achiziţia curenţilor. Aceasta înseamnă că toate calculele. de la 0A la 0. deoarece calcularea vitezei se realizează sincron cu apariţia fronturilor semnalelor QEP.0.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). adică 2. S-ar putea folosi un alt circuit. 6. pentru operaţia de împărţire [157]. sunt efectuate în doar 33 de cicli de tact. Algoritmul de control are nevoie de 25 de cicli de tact pentru a-şi termina execuţia.

urmăreşte referinţa (reprezentată cu roşu). În Fig. Curenţii pe cele trei faze şi curentul pe axa q la o treaptă negativă a referinţei. Se observă că curentul controlat. Se observă răspunsul caracteristic unui sistem de ordinul I. utilizându-le în cel mai 68 .25A la -0. Figura 6. 6.8). Figura 6. a sistemelor de control implementate în FPGA. Prin latura mai mult aplicativă justifică prezentarea metodelor de proiectare din capitolele anterioare. Se observă caracteristica unui sistem de ordin II cu poli reali. cel de pe axa q.17. deductibilă din formele de undă ale curenţilor pe cele 3 faze. cu un timp de creştere de aproximativ 15ms. în perfectă concordanţă cu rezultatele obţinute la simulare.5A. reprezentat cu verde. Se observă că forţarea unei valori negative a curentului pe axa q provoacă schimbarea direcţiei de rotaţie a motorului. 6.8 Concluzii Acest capitol conferă o finalitate celor precedente. După ce s-a verificat funcţionarea corectă a regulatoarelor de curent.8ms. sistemul de control implementat fizic respectă întru totul comportarea sistemului modelat şi simulat în Simulink.19 este prezentată comportarea sistemului la aplicarea unei trepte pe semnalul de referinţă a vitezei de la 200rad/s la 400rad/s. folosind blocuri System Generator. Acest lucru confirmă validitatea metodei de proiectare propusă de această lucrare: proiectarea în Simulink. Aşadar. s-a închis bucla de control al vitezei şi s-a testat întregul sistem. 6.18. În Fig. cu un timp de creştere de aproximativ 0. Curenţii prin cele trei înfăşurări au forme de undă sinusoidale. în perfectă concordanţă cu rezultatele obţinute prin simulare (a se vedea Fig. Figura 6.19.FPGA şi reprezentat grafic pe calculator folosind software-ul ChipScope Pro Analyzer. 6. Răspunsul sistemului la o treaptă de viteză. Răspunsul sistemului la o treaptă de curent.18 este prezentată comportarea sistemului de reglare a curentului la o schimbare a referinţei de la +0.

în [160] se foloseşte un CPLD pentru inserarea timpului mort în comanda tranzistoarelor. abordările prezentate în [41]. • Foloseşte o schemă hardware avantajoasă din punctul de vedere al costurilor pentru măsurarea curenţilor. timpul de execuţie scurt se dovedeşte extraordinar de avantajos. Iar sistemul de control implementat în hardware pe FPGA se va comporta exact ca şi cel simulat. de obţinere a funcţiilor trigonometrice). timpul de execuţie obţinut pentru algoritm este extraordinar de scurt. Sistemul de control al vitezei motorului PMSM va fi publicat în [161]. foarte eficientă la implementare în FPGA. 69 . valoarea mărimii de comandă fiind obţinută aproape instantaneu. Proiectarea în mediul Simulink a sistemului de reglare. scurtându-se la minimum timpul de execuţie. Deşi există numeroase alte implementări ale unor algoritmi asemănători în FPGA.4. Meritele acestui capitol nu sunt legate doar de partea aplicativă. 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. cum este frecvenţa de comutaţie a tranzistoarelor de putere în aplicaţia prezentată. cea prezentată aici este originală şi avantajoasă din mai multe puncte de vedere: • Foloseşte un număr redus de multiplicatoare. Chiar în acest caz. Acest lucru conduce la posibilitatea creşterii frecvenţei de eşantionare. adesea CPLD. frecvenţa de eşantionare se poate să fie limitată de alţi factori din sistem. a căror funcţionalitate nu poate fi obţinută prin software. De exemplu. circuitele de interfaţare cu semnalele QEP. • În FPGA. Avantajul principal al metodei este viziunea de ansamblu a sistemului ca întreg. pentru implementarea unor structuri hardware complementare. deci a lăţimii de bandă a sistemului de control. 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. Totuşi. originală şi performantă. justifică afirmaţiile emise privind locul dispozitivelor FPGA în proiectarea sistemelor de control automat moderne. ale proceselor controlate. după cum se poate vedea din secţiunea 2. 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. chiar atunci când se foloseşte un procesor DSP pentru implementarea algoritmului de control. • Propune o abordare integrată în Simulink pentru proiectare. Aşa cum rezultă din exemplul sistemului de control al vitezei motorului PMSM. precizia cu care se efectuează calculele este la latitudinea proiectantului. de măsurare a vitezei. Astfel. Prin complexitatea aplicaţiei alese şi rezultatele experimentale obţinute. care să efectueze eficient anumite operaţii (de exemplu. Prin exemplele prezentate. • În FPGA se poate profita din plin de paralelismul inerent algoritmului de implementat. • Foloseşte o versiune optimizată din punctul de vedere al cerinţelor computaţionale a algoritmului de modulaţie SVM. de librărie. nefiind supusă constrângerilor legate de o arhitectură fixă de procesare. acesta trebuie de obicei asistat de un circuit logic programabil. De altfel. spre exemplu. apoi implementarea lui cu blocuri System Generator. impunând o mică limitare algoritmului SVM.înalt grad. [42]. sistemul de control implementat în FPGA se poate simula împreună cu modele verificate. în vreme ce sistemul dezvoltat aici foloseşte doar 4. validare şi definitivare a conceptului după paradigma FSMD. [50] utilizează numere de ordinul zecilor de multiplicatoare pentru implementarea algoritmului. Rafinarea algoritmului de control poate fi validată faţă de o implementare la nivel de principiu.

discretizarea şi evaluarea abaterii faţă de modelul continuu. de performanţe şi costuri reduse. Dintre contribuţiile aplicative. de complexităţi diferite. • Derivarea de structuri de tip filtru digital cu răspuns infinit la impuls pentru algoritmii de control deadbeat şi PI. validarea acestora prin combinarea mai multor metode de 70 . • Prezentarea succintă a uneltei software Xilinx System Generator. structuri uşor de implementat în hardware. ce permite proiectarea în mediul Simulink de structuri hardware implementabile în FPGA. 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. S-au definit şi abordat diferite studii de caz în controlul motoarelor electrice. • Proiectarea originală a algoritmului de control după paradigma automat cu cale de date. folosind ca pretexte pentru explorarea spaţiului de proiectare. factorizarea algoritmului de control. s-au combinat aceste metode de proiectare şi s-au utilizat unelte de simulare multiple. a condus la formularea unei metodologii de proiectare şi validare a sistemelor de control bazate pe FPGA. incluzând alegerea parametrilor regulatoarelor de curent şi viteză prin metoda alocării polilor. De asemenea. domeniu de mare actualitate. ea aduce şi o serie de contribuţii teoretice: • Prezentarea sintetică a arhitecturilor familiilor de dispozitive FPGA actuale ale principalilor 2 mari producători. inginerie electrică şi ingineria calculatoarelor. Pe parcursul elaborării lucrării s-au încercat diferite unelte şi metode de proiectare pentru FPGA. Concluzii generale Această lucrare abordează domeniul proiectării sistemelor de control pentru motoare electrice folosind dispozitive FPGA. dar perfect valide) şi verificarea prin experimente reale a rezultatelor.7. Deşi lucrarea are un pronunţat caracter aplicativ. • Realizarea în FPGA a unui sistem pentru controlul vitezei motorului de curent continuu bazat pe algoritmul deadbeat. î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. verificarea experimentală folosind un analizor logic “virtual”. • Analiza algoritmului de modulaţie bazată pe vectori spaţiali din punctul de vedere al implementării în hardware. folosind mediul Simulink. Toate problemele de proiectare propuse au fost finalizate prin realizarea de bancuri experimentale (cu unelte de laborator didactic. • Trasarea unei metodologii de proiectare a sistemelor de control bazate pe FPGA urmărind paşii următori: modelarea în continuu. reproiectarea acestuia după paradigma automat cu cale de date. • Sintetizarea din mai multe surse bibliografice a unor consideraţii privind optimizarea de structuri hardware pentru proiectarea de procesoare soft în FPGA. Această multitudine de studii de caz rezolvate. • Proiectarea unui sistem de control orientat după câmp pentru motorul PMSM. • Prezentarea succintă a modelării motorului sincron cu magneţi permanenţi în sistemul de coordonate rotitor sincron cu rotorul. • Realizarea a diferite module hardware pentru controlul motorului de curent continuu fără perii. culminând cu cel al controlului orientat după câmp al motorului sincron cu magneţi permanenţi. • Analiza modulaţiei PWM sinusoidale cu injecţie de semnal triunghiular la punctul neutru din punctul de vedere al implementării în hardware. situat la confluenţa dintre automatică. • Realizarea unei treceri în revistă concludente a sistemelor de control pentru motoare electrice bazate pe FPGA din literatura recentă din domeniu. Altera şi Xilinx.

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, 71

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 realtime 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 FPGAbased 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. 72

[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 FPGAbased 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. 73

2006. (editor). Thibault S. aprilie 2010.. “Modified phase-frequency detector for improved response of PLL servo controller”.. Tomul LV(LIX). ISIE 2010. Walcott B. Phase-locked loops: design.. Kohala Coast.E.. august 1999. [74] Kamat R.. [113] Nios II Processor Reference Handbook. Kagawa. Norvegia.P.. 2010. John Wiley and Sons. [105] Alecsa B. Altera.A. [101] Adkins C. [87] Costas L. Grecia. [85] System Generator for DSP reference guide. “A FPGA implementation of a phase locked loop for DC motor control”. decembrie 2009. SUA. Piteşti... Fasc. “PLL/PID motor control system by using time-domain operation of PWM signal”... “An FPGA implementation of an all digital phase locked loop for control applications”.. Onea A. [110] Alecsa B. Dordrecht: Springer. ICSTC 2010. Atena. “Analysis of two FPGA design methodologies applied to an image processing system”. Politehnium. Anchorage. th 5 Edition. Buletinul Institutului Politehnic din Iaşi. Marra M. septembrie 2010.. [93] Machida H..K. România..L... and applications. România. teză de doctorat. Proceeding of the 1999 IEEE International Symposium on Computer Aided Control System Design. Processor design: system-on-chip computing for ASICs and FPGAs.G.A.. Circuits. 2009. Japonia. Alaska. mai 2002. ICECS2010. validation and FPGA implementation of a brushless DC motor speed controller”. “Output analysis of digital interface plants based on FPGA rapid prototyping”. 1. London: Springer Verlag... [107] ChipScope Pro 12. Ruekgauer A. Farina J. Trondheim. Prentice Hall... Control and Information Technology. Proceedings of the 14th International Conference on System Theory and Control. [82] Onea A.1 software and cores user guide.. iulie 2010.. Chow M. 2003. 2007. 2007.. Proceedings of the International Conference on Instrumentation.J. [97] Best R. Proceedings of 2010 IEEE 16th International Symposium for Design and Technology in Electronic Packaging.. Proceedings of the 17th IEEE International Conference on Electronics. FPGA prototyping by Verilog examples. 2009. Xilinx. Manolakis D. Introduction to embedded system design using field programmable gate arrays. ICCP 2009.. simulation and applications. SUA. v11... 2008.. and Systems. 1996...C. Shelake V. “Production quality code generation from Simulink block diagrams”. Sinaia. 2005. Onea A. Unleash the system on chip using FPGAs and Handel C. Springer.[72] Dubey R. algorithms. Colodron P. septembrie 2007. [102] Alecsa B. Secţia Automatică şi Calculatoare. [109] Alecsa B. 74 .. SIITME 2010. Universitatea “Transilvania” din Braşov. Italia. Proceedings of the 2010 IEEE International Symposium on Industrial Electronics.. [77] Hansselmann H. octombrie 2010. [108] Mic D. Prentice-Hall.. Xilinx. Koester L. 2009. decembrie 2010. Kiffmeier U. [73] Pellerin D.4. Practical FPGA programming in C. Onea A. “Design. Hawaii. noiembrie 2009. Rodriguez-Andina J. 3rd Edition... [80] Chu P.. McGraw-Hill. România. “An FPGA implementation of the time domain deadbeat algorithm for control applications”. CACSD 1999. Digital signal processing: principles. Onea A. [104] Proakis J..-Y. Shinde S.A. Proceedings of IEEE 5th International Conference on Intelligent Computer Communication and Processing. Contribuţii la dezvoltarea unui mediu integrat hardware-software pentru controlul motoarelor electrice cu circuite logice programabile. SICE Annual Conference 2007. august 2009. [112] Nurmi J. [111] Alecsa B. Prelucrarea semnalelor. Cluj-Napoca. Meyer M. “An FPGA implementation of a brushless DC motor speed controller”. Bari.. Proceedings of the 2002 American Control Conference. Proceedings of IEEE Norchip 2009. Onea A. Kobayashi F. [103] Alecsa B. Onea A.

.. FPL‘06.. APEC 2009.. DC. Braşov. Berlin: Springer.. 2004.. Iaşi. Bucureşti.. România.E. 10. ISSCS 2011. [120] Lung C.. 2010. Proceedings of the 12th International Conference on Optimization of Electrical and Electronic Equipment. [127] Ioan A. Circuits and Systems. Radu B. Scanlan T. [129] Cirstea M. ICMERA 2010. Proceedings of the 14th International Conference on System Theory and Control. Buchman A. teză de doctorat. “A FPGA implementation of an active noise cancellation system”.. Kerkman R.. 2002. Piteşti. Vol. Elsevier. Fazzolari R.. iunieiulie 2011. Sanz M. Universitatea Tehnică “Gheorghe Asachi” din Iaşi. Onea A. februarie 2009.K.. “FPGA implementation of a low-area/high-SFDR DDFS architecture”. ICIT 2006. SUA. “Adaptive hardware-software co-design platform for fast prototyping of embedded systems”. [130] Cardarilli G. Washington. Buchman A... Spania. Contribuţii la implementarea structurilor hardware cu circuite numerice programabile CPLD şi FPGA..O. România. Proceedings of 2010 IEEE 16th International Symposium for Design and Technology in Electronic Packaging.. noiembrie 2004. februarie 2002. 1.P. Vector control of three-phase AC machines. Dinu A. România. Proceedings of 24th Annual IEEE Applied Power Electronics Conference and Exposition. [133] Quang N. [125] Hava A. [126] Spartan-3E family: complete data sheet. octombrie 2010. “Combined hardware-software approach for BLDC motor speed controller design”.. Khor J.. Proceedings of the 10th International Symposium on Signals. [139] Quintero J. [124] Teroerde G. decembrie 2006. Madrid..... IEEE Tansactions on Industrial Electronics. 49. Murgia D. D’Alessio M. Proceedings of the International Conference on Mechanical Engineering. 2008. [140] Scharrer M.. “FPGA-based digital pulse width modulator 75 . 2008.. Sinaia.. 14. Barrado A. Springer. Busan. no. No. “FPGA based space vector PWM control IC for three phase induction motor drive”.[118] Yu P. Orha I..P. Mumbai. Lung C. “FPGA based digital control with high-resolution synchronous DPWM and high-speed embedded A/D converter”. vol. ICSTC 2010.. Pinto J. “Relationship between space-vector modulation and threephase carrier-based PWM: a comprehensive analysis”. IEEE Transactions on Power Electronics... Silva L. 2010. Re M. Sabou S. “Executing hardware as parallel software for PicoBlaze networks”.. Bârleanu A.. Leuven: Academische Cooperative Vennootschap. “New techniques for implementation of hardware algorithms inside FPGA circuits”. IECON 2004. mai 2010. 2... Yadaiah N. Lipo T. 2010.C.. [138] Zhou K... SIITME 2010..G. august 2006. Proceedings of International Conference on Field Programmable Logic and Applications. 1. [119] Oniga S. [122] Alecsa B. “A simple and ultra-fast DSPbased space vector PWM algorithm and its implementation on a two-level inverter covering undermodulation and overmodulation”. Schaumont P. Proceedings of 2006 IEEE International Conference on Industrial Technology. McCormick M. România. [136] Pongiannan R.D. Proceedings of the 30th Annual Conference of the IEEE Industrial Electronics Society. Dittrich J. [121] Alecsa B.-A. decembrie 2010.. “ZigBee smart sensors networks”..... Bose B. Onea A. [131] Schaumont P. India. Orha I... Di Nunzio L. Tisan A.. Robotics and Aerospace.. Advances in Electrical and Computer Engineering. Coreea de Sud. A practical introduction to hardware/software codesign. Neural and fuzzy logic control of drives and power systems. Electrical drives and control techniques. OPTIM2010. [134] Filho N.R...B.N. ianuarie 1999.D. Wang D. România.. no.P. Lazaro A.K... [128] Ioan A. Xilinx. septembrie 2010. “Simple analytical and graphical methods for carrier-based PWM-VSI drives”. Halton M. vol.

[142] Idkhajine L. Kobayashi H. teză de doctorat. Hashimoto T.. Universitatea Tehnică “Gheorghe Asachi” din Iaşi.... 56.. septembrie 2011. Proceedings of 21st International Conference on Field Programmable Logic and Applications. Lucia O. Analysis of electrical machinery and drive systems.. Cehia. “An efficient FPGA implementation of the space vector modulation algorithm”. “FPGA-based speed control of synchronous machine using a P-PI controller”. Ioan A. [161] Alecsa B.. Proceedings of 2007 International Aegean Conference on Electrical Machines and Power Electronics. Artigas J.. Circuits and Systems. Fully FPGA-based sensorless control for synchronous AC drive using an extended Kalman filter.. “Speed measurement algorithms for low-resolution incremental encoder equipped drives: a comparative analysis”. “An optimized FPGA implementation of the modified space vector modulation algorithm for AC drives control”. DC. [160] Răţoi M.. Boca Raton: CRC Press. Universitatea Cergy Pontoise. IEEE Transactions on Industrial Electronics. Sudhoff S. Melbourne. no. “FPGA implementation of a sinusoidal PWM generator with zero sequence insertion”. Onea A. Grecia. [143] Alecsa B. Urriza I. 2006. ISSCS2011. Naasani A. Boca Ratorn: CRC Press. iulie 2010. Proceedings of IEEE International Symposium on Industrial Electronics.. iunie-iulie 2011... Bucureşti. Tursini M.. Onea A.. ISIE’06. 2nd edition. Proceedings of 2006 IEEE International Symposium on Industrial Electronics.. Cirstea M. [149] Krishnan R. [145] Alecsa B. 2002.. Slama Belkhodja I. Contribuţii la perfecţionarea comenzii sistemelor de acţionare electrică cu motoare de curent alternativ. Jimenez O.. ISIE 2010. [146] Alecsa B. 2010. iulie 2006. Monmasson E. Canada. [154] Tsuji T... Chania. 2nd Edition... februarie 2009. [144] Alecsa B. [141] Navarro D.. Zigliotto M. Mizuoki M. Proceedings of the 37th Annual Conference of the IEEE Industrial Electronics Society. [157] Alecsa B. Wasynczuk O. 2010.A. Cirstea M. Italia. APEC 2009. Ioan A. Washington. România. Montreal.. 2. AE2011. Proceedings of the 3rd International Symposium on Electrical and Electronics Engineering. Galaţi.. Peretti L. [153] Boldea I.. mai 2011. vol. noiembrie 2011. România.with optimized linearity”. Cirstea M. Onea A. [147] Krause P. Barragan L. acceptată spre prezentare... Proceedings of the 7th International Symposium on Advanced Topics in Electrical Engineering. [155] Petrella R... Taylor and Francis Group. teză de doctorat. “Holistic modeling and FPGA implementation of a PMSM speed controller”. Proceedings of 2011 International Conference on Applied Electronics.. Nasar S. Turkey. IECON 2011. Electric drives. Pilsen. Ohnishi K..C. 2010. IEEE Press.A.. Iaşi.... Franţa. “FPGA implementation of a matrix structure for integer division”. ATEE2011.. FPL2011. septembrie 2010. Tisan A. [150] Naouar W. Australia. Permanent magnet synchronous and brushless DC motor drives.. Taylor and Francis Group. România. Proceedings of 24th Annual IEEE Applied Power Electronics Conference and Exposition. ACEMP’07.. 76 . “FPGAbased high resolution synchronous digital pulse width modulator”.D. februarie 2009. septembrie 2007.. Proceedings of the 10th International Symposium on Signals. “High resolution 6 channels pulse width modulator for FPGA-based AC motor control”. septembrie 2011.. “A wide-range velocity measurement method for motion control”. SUA. Bari.I.C. Bodrum.

Sign up to vote on this title
UsefulNot useful