Université Du Québec

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 142

UNIVERSITÉ DU QUÉBEC

MÉMOIRE PRÉSENTÉ À
L'UNIVERSITÉ DU QUÉBEC À TROIS-RIVIÈRES

COMME EXIGENCE PARTIELLE


DE LA MAÎTRISE EN GÉNIE ÉLECTRIQUE

PAR
SALIM BOUKAKA

RÉALISATION D' UNE BIBLIOTHÈQUE DE LOIS DE COMMANDE


ADAPTATIVE POUR MSAP

SEPTEMBRE 2015
Université du Québec à Trois-Rivières

Service de la bibliothèque

Avertissement

L’auteur de ce mémoire ou de cette thèse a autorisé l’Université du Québec


à Trois-Rivières à diffuser, à des fins non lucratives, une copie de son
mémoire ou de sa thèse.

Cette diffusion n’entraîne pas une renonciation de la part de l’auteur à ses


droits de propriété intellectuelle, incluant le droit d’auteur, sur ce mémoire
ou cette thèse. Notamment, la reproduction ou la publication de la totalité
ou d’une partie importante de ce mémoire ou de cette thèse requiert son
autorisation.
Il

Résumé

Un contrôleur performant d' une machine à courant alternatif (CA) nécessite

généralement des opérations complexes et un long temps de calcul, ce qui rend la tâche

d'implémentation plus complexe. L' implémentation FPGA (Field Programmable Gate

Array ) de ces contrôleurs, y compris les contrôleurs intelligents, a beaucoup

d' avantages: reprogrammable, outil logiciel pratique, rendement élevé, densité

d'intégration très élevée. Ce travail présente l' implémentation sur FPGA de plusieurs

lois de commande à base d' intelligence artificielle d' une machine synchrone à aimant

permanent (MSAP) en utilisant le langage VHDL.

La machine synchrone à aimant permanent est connue par son modèle complexe et

non linéaire. Les contrôleurs à base d' intelligence artificielle représentent une solution

efficace face aux problèmes associés au modèle mathématique de la MSAP. Les

algorithmes de commande proposés dans ce travail ont été retravaillés et restructurés

dans le but d' en avoir un schéma d' implémentation simple et bien structuré. La

modélisation et la simulation de ce schéma sont faites en langage VHDL.

La validation des schémas a été effectuée en utilisant une co simulation entre

ModelSim et Simulink™lMatlab®. Les résultats de simulation et de synthèse montrent

que les schémas non seulement conservent les avantages des modélisations en virgule

flottante sur Simulink™lMatlab®, mais aussi donnent des schémas structurels simples

qui consomment peu d' espace lors de l' implémentation, donc ça permet d' implémenter
III

la boucle de régulation et le générateur SVPWM (Space- Veclor Pulse Widlh

Modulation ) sur la même carte laissant de l' espace pour d' autres fonctions.
IV

Abstract

High performance motor controllers usually require complex operations and long

computation time, which makes the implementation task more complex. FPGA (Field

Programmable Gate Array) implementation of these controllers, inc1uding intelligent

controllers, has many advantages: re-programmable, convenient software tool, high

efficiency, very high significant integration density. This work presents implementation

on FPGA of many Intelligent Adaptive Controls of Permanent Magnet Synchronous

Machines (PMSMs) using Hardware Description Language VHDL.

The permanent magnet synchronous machine is known for its complex and non-

linear mode!. Artificial intelligence based controllers are an effective solution to face

problems associated with the PMSM' s mathematical mode!. The control algorithms

proposed in this work have been revised and restructured in order to have a simple and

well-structured implementation scheme. Modeling and simulations are made in VHDL.

The validation of the algorithm is performed using co-simulation between

ModelSim and Simulink™lMatlab®. The simulation results show that the scheme not

only preserves the advantages of the modeling on Simulink™lMatlab® with floating

point, but has a simple structural scheme and consumes few resources during

implementation, so it permits to implement the control law on the same board and

leaving sufficient free resources for implementing additional functions.


v

Table des matières

Résumé ................................................................................................................................... ii

Abstract ............................... ............................. .. .. .................................................. ............... iv

Table des matières .......... ....... ............. .... ...... ..... .................................. ..... ....... ............ ....... .... v

Liste des tableaux .......... ................ .................... .. .............. ..................................... ... ......... .... x

Liste des figures ........................ ....... ..... .. ....... ....................... .............. ... ........ ....... ... ........ ..... xi

Liste des abréviations .. ........ ........ ............................... .................... ........................... ........... xv

Liste des symboles ......................................................................................................... .... xvii

Chapitre 1 - Introduction .................... ... ................................................................................. 1

1.1 Problématique ..... .. ............ ..................... ...... .... ........................................... ..... ........ 2

1.2 Objectifs .................................................................................................................. 4

1.3 Méthodologie .......................... ...... ................ ............ ..... ................................. ......... 5

1.4 Structure du mémoire .............................................................................................. 6

Chapitre 2 - Logique Floue .................................................................................................... 8

2.1 Introduction ....................... ......... ...... ............ ...................... .......................... ........... 8

2.1.1 Généralités ................................................................................................... 8

2.1.2 Exemple Introductif ..................................................................................... 9

2.2 Définitions ..................... ............. ........................... ..... .... ...... .............................. ... Il

2.2.1 Univers de discours .................................................................................... Il


VI

2.2.2 Variable linguistique ........................................ ........ ............ ............ ..... ..... Il

2.2.3 Fonction d' appartenance ................................... ............. ............................ 12

2.3 Opérateurs et nonnes ............................................................................................. 13

2.3 .1 Opérateur NON ..... ... ........ .. ..................................... ................. ... .. ............. 13

2.3.2 Opérateur ET ...................................................... .................................. ...... 13

2.3.3 Opérateur OU ............................................................................................. 13

2.4 Unités d'un bloc logique flou ................................................................................ 14

2.4.1 La fuzzification ................................................. ......................................... 15

2.4.2 Base de règles ............................................................ ................. ...... ... .. ... . 15

2.4.3 Mécanisme d' inférence .............................................................................. 16

2.4.4 La défuzzification ...................................................................................... 17

2.5 Conclusion .... .................................................................................................... ... .. 18

Chapitre 3 - Field Programmable Gate Array « FPGA »..................................................... 19

3.1 Introduction ........................................................................................................... 19

3.2 Histoire des FPGA ................ .. .................................... ....... ...... .. ............................ 23

3.3 Principe de fonctionnement des FPGA .............................................................. ... 25

3.3.1 Une simple fonction programmable ........................................................... 26

3.3.2 Technologie de connexion à base fusibles ................................................. 27

3.3.3 Technologie de connexion à base d' anti-fusibles .................... ............ .. .... 28


VII

3.3.4 ROM .......................................................................................................... 28

3.3.5 RAM .......................................................................................................... 30

3.4 Intégration sur VHDL. ................................................................ ........................... 31

3.4.1 Nombre entier positif. ................................................................................ 32

3.4.2 Nombre entier négatif .. ........................................................................ .. .... 33

3.4.3 Complément à deux ................................................................................... 34

3.4.4 Représentation des données numériques .............. ............ .. ...... ................. 34

3.4.5 Modélisations des opérations de base ........................................... ............. 35

3.5 Conclusion ...................................................................................................... ..... .. 44

Chapitre 4 - Systèmes d'entrainement électromécanique .................................................... 45

4.1 Introdcution ........................................................................................................... 45

4.2 Machines Synchrones à Aimants Permanents (MSAP) ................... .. ........ .. ....... .. 46

4.2.1 Équations générales de la machine synchrone à aimant

permanent ................................................................................................... 47

4.3 Onduleur triphasé à deux niveaux ................ .................. ................................... .... 50

4.3.1 Topologie d'un onduleur triphasé à deux niveaux ......... .. .......................... 50

4.3.2 Technique SVPWM ........................ .. ...... ................................................... 52

4.3.3 Simulation et discussion ....... .................................................................. .. . 56

4.4 Approximation de la SVPWM .............................................................................. 60

4.4.1 Algorithme de l' approximation ............ ...................................................... 61


viii

4.4.2 Simulations et résultats ............... ... ......................................................... ... 63

4.4.3 Implémentation ........................................................ .. .............................. .. 68

4.5 Conclusion ............................................................................................................. 72

Chapitre 5 - Réalisation d' une bibliothèque de lois de commande adaptative

pour MSAP ..................................... .. .. ... ................................................. .............. ..... .. .. 73

5.1 Introduction ......................... ............. .................................................................. .. . 73

5.2 1ere Loi implémentée: Adaptive Fuzzy Logic Control of Permanent

Magnet Synchronous Machines with Nonlinear Friction .......................... ..... ...... 74

5.2.1 Configuration du contrôleur flou adaptatif. ... .. ................... .. ..................... 75

5.2.2 Implémentation et simulation ............. ......................... .............................. 80

5.3 2eme Loi: PMSM control based on adaptivefuzzy logic and sliding

mode [5.2] ............................................................................................................. 87

5.3 .1 Configuration du Régulateur mode glissant .............................................. 88

5.3.2 Implémentation et simulation ...................... .......................... .. ................ .. 89

5.4 3eme Loi: Adaptive Fuzzy Logic Control Structure of PMSMs [5.3] ..................... 92

5.4.1 Implémentation et simulation ...... .. .... .. ........... ........................................... 92

5.4.2 Interprétation des résultats de simulation .................................................. 94

5.5 Conclusion ............................................................................................................. 95

Chapitre 6 - Conclusion Générale .............................................................................. .......... 96

Références ...................................................................... .. .................................................... 99


ix

Annexe A - Extraits des codes de simulation ... .... ............ ...................... ........................... 106

Annexe B - Résultats de synthèse des lois de commande ................................ .. .... .136

Annexe C - Publications et contributions .... . .. . .. . ... .. ... . .. . ......................... ...... ... 144
x

Liste des tableaux

Tableau 3-1 Progression des FPGA ....................... ................................ .............................. 25

Tableau 4-1 Vecteurs de tensions pour chaque combinaison possible des


interrupteurs...... ....................... ................ ........... ........ .. .................... ............ 52

Tableau 4-2 Détection du secteuf.. ..... ....... ....... ............. .... ........... ................. ........... ....... ..... 56

Tableau 4-3 Résumé de l' utilisation des ressources pour l' implémentation de la
SVPWM . .... ....... ....... ....... ....... ........... ....... .... ..... .......... ... .... ..... ....... ............ .. 59

Tableau 4-4 Résumé de l' utilisation des ressources pour l' implémentation de
l' approximation de la SVPWM .................... ... .......................... ........... ..... ... 72

Tableau 5-1 Table des règles d' inférence . ..... ....... ............ ........ ...... ......... ......... ......... ..... ..... 76

Tableau 5-2 Sommaire d' utilisation des ressources pour l' implémentation de la
loi de commande .... ... ........... ......... .... ........ ...... .... ........ ...... ..... ....................... 87

Tableau 5-3 Distribution des ressources . ...................... ........... ................... ........... ..... ......... 87

Tableau 5-4 Comparaison des trois lois en termes de consommation .. .......... ....... .... .... ..... . 95
XI

Liste des figures

Figure 1.1 Processus de simulation Matlab/ModelSim/Matlab ................... .............. ..... ...... . 6

Figure 2.1 Exemple de réglage de vitesse d'un véhicule selon la logique


classique ......................................................................................................... 9

Figure 2.2 Exemple de réglage de vitesse d'un véhicule selon la logique floue ................. 10

Figure 2.3 Exemple d'une fonction sigmoïde .... .................... .................. ... ... ............ ..... ..... 12

Figure 2.4 Schéma des différentes opérations dans un bloc logique floue .. ........................ 14

Figure 3.1 Architecture traditionnelle d'une plateforme FPGA à base de mailles


[3 .6] .................................................. .... ............................ ...... .... ... ....... ..... ... 26

Figure 3.2 Exemple d'une simple fonction programmable [3.4]. .......... ..... ............... ....... ... 27

Figure 3.3 Exemple d'une connexion à base de fusibles [3.4] ............................................. 28

Figure 3.4 Exemple d'une connexion à base d'anti-fusibles [3.4]. ..................... .. .... ... ..... ... 28

Figure 3.5 Cellule principale d' une mémoire à grille flottante et son schéma
symbolique ...... ..... .... ...... ........ ......... ......... ................................ .... ......... .... ... 30

Figure 3.6 Exemple d'une mémoire RAM statique et dynamique ....................................... 30

Figure 3.7 Représentation des données ................................................................................ 35

Figure 3.8 Bloc d' addition ........................... ............. ... .......... .......... ............. ...... .............. ... 36

Figure 3.9 Prise en compte du débordement sur VHDL pour un additionneur. ......... ... ...... 37

Figure 3.10 Résultats d'un additionneur à 16 bits ...................... ................................... ..... .. 38

Figure 3.11 Bloc de Multiplication .... ...... ....................... ...... ............. ............. ........ ... .......... 39

Figure 3.12 Résultats d'un multiplieur à 8 bits .................................................................... 40

Figure 3.13 Bloc de Soustraction......................................................................................... 40

Figure 3.14 Prise en compte du débordement sur VHDL pour un soustracteur. ................. 41
XII

Figure 3.15 Résultats d' un soustracteur à 16 bits . .... ...... ...... .................. .... .. .... .............. ..... 41

Figure 3.16 Bloc de décalage ..... .. .. .. .... .... .... .......... .. .. .. ........ .. ...... .. ...... .... .................... ...... .. 42

Figure 3.17 Résultats d' un registre à 8 bits .... .... .... .... .............. ........ ...... .. .... .. .... .............. .... 43

Figure 3.18 Bloc de troncation ............. .. ............ ........ .. .... ...... .......... .... .. .. .. .. .. .... ...... .... ........ 43

Figure 3.19 Résultats d' un troncateur à 16bits-à-8bits . .. ........ ...... .. ........ .. .. .. .......... .... .. ...... . 44

Figure 4.1 Croissance du marché des systèmes d'entrainement électromécanique


(Million $/ Année) [4.3]. .................................... .. ...... .. .. .............................. 45

Figure 4.2 Dispositif d' entrainement électromécanique typique ............................. .. .... .. .... 46

Figure 4.3 Représentation de la machine synchrone à aimants permanents . .. ...... .... .......... . 47

Figure 4.4 Circuit équivalent de la MSAP ........... .... .... ...... .......... ............................ ............ 49

Figure 4.5 Onduleur triphasé à deux niveaux . .. ........ .. .......... .. .. .. .. .... .. ........................ .. ...... . 51

Figure 4.6 Vecteurs d' espace de tension .............................................. .... .. .... ........ .. ...... .. .... 53

Figure 4.7 Forme des Signaux PWM dans le secteur 1. ........................ .... ............ .... .. ........ . 55

Figure 4.8 RTL Schéma fonctionnel de l' onduleur sur Simulink.. .. ........ .... .................... .... 57

Figure 4.9 Entrées/sorties du circuit SVPWM réalisé sur une FPGA


(CLK_PWM=Ts) ...... ......... ... ...... ..... ... ................ .... .. ...... ...... ......... ... ........ .... 57

Figure 4.10 Schéma du circuit SVPWM réalisé sur FPGA ....... .. ...... ........ .................... ...... 58

Figure 4.11 Tension de sortie Phase A .... .. ........ .. .... .... .... .. .. ........................ .. .. ...... ............ ... 58

Figure 4.12 Signaux PWM pour trois périodes Ts .. .... .... .. .. .............. .. .. .. .. .... ....................... 59

Figure 4.13 Représentation des harmoniques d' une phase ........... .. .... .......... ...................... . 59

Figure 4.14 Méthodologie utilisée pour identifier le modèle approximatif. .. .......... ............ 62

Figure 4.15 Relation entre le coefficient A et la tension V dc .... .. .. .... .. .. ................................ 63

Figure 4.16 Tension de sortie Phase A .......... .................... .............. .... .......................... .. ..... 64

Figure 4.17 Représentation des harmoniques .. .. .. ........................ .......... .................. ........ .... 65

Figure 4.18 Signaux PWM pour trois périodes T s . ............ ............ ............ .... .. .... .. .. .... .. ...... 65

Figure 4.19 Tensions triphasées pour un système déséquilibré ... .... .. .... ...... .. .. .................... 67
XIII

Figure 4.20 Simulation de l' approximation avec une loi de commande .......... ..... ..... ... ...... . 68

Figure 4.21 Schéma du circuit du modèle approximatif réalisé sur FPGA. ........ ....... ......... 69

Figure 4.22 Entrées/sorties du circuit SVPWM réalisé sur FPGA


(CLK_ ApproximationModel=Ts) ................................................................ 69

Figure 4.23 Tension de sortie Phase A ............. ........ .... .......................................... .... ... ....... 70

Figure 4.24 Représentation des harmoniques d'une phase .............. ............ ... .. ................... 70

Figure 4.25 Signaux PWM pour trois périodes Ts ............................................................... 71

Figure 5.1 Structure de contrôle ........................................................................................... 75

Figure 5.2 Fonctions d'appartenance ................... ........... .... .... .............. ... ..... ................. ...... 76

Figure 5.3 Structure de l'unité d'adaptation de la logique floue .......................................... 79

Figure 5.4 Schéma du circuit Calcul du pourcentage d'appartenance réalisé sur


un FPGA ....................................................................................................... 81

Figure 5.5 Schéma du circuit de la partie d'adaptation réalisé sur un FPGA. ..................... 82

Figure 5.6 Entrées/Sorties du circuit global de contrôle réalisé sur un FPGA. ................... 82

Figure 5.7 Schéma du circuit FLC adaptatif réalisé sur un FPGA ..... ........ ................. ...... ... 83

Figure 5.8 Entrées/Sorties du circuit Générateur de sin/cos réalisé sur un FPGA. .............. 84

Figure 5.9 Sinus et cosinus à base de la série de Taylor. ................ ...... ........ ....................... 84

Figure 5.l 0 Schéma du circuit Générateur SinCos réalisé sur un FPGA. .............. .............. 85

Figure 5.11 Entrées/sorties du circuit SVPWM réalisé sur un FPGA. ................................ 86

Figure 5.l2 Résultats de cosimulation ................................................................................. 86

Figure 5.l3 Structure de contrôle de la commande LF-MG ................................................ 88

Figure 5.l4 Entrées/sorties du circuit Régulateur Mode Glissant réalisé sur un


FPGA ............................................................................................................ 90

Figure 5.15 Entrées/Sorties du circuit global de contrôle réalisé sur un FPGA. ................. 90

Figure 5.l6 Résultats de cosimulation ................................................................................. 91

Figure 5.17 Structure de contrôle de la commande LF ....... ............... ...................... ............ 92

Figure 5.l8 Entrées/Sorties du circuit global de contrôle réalisé sur un FPGA ... ... ............ 93
XIV

Figure 5.19 Résultats de cosimulation . .. .. .... .. .............................. .. .. .................................... 94


xv

Liste des abréviations

A SIC Application-Specific Integrated Circuits

ASSP Application Specific Standard Product

CG Grille de contrôle

COG Center OfGravity

COM Center OfMaximum

D Drain

EEPROM P ROM Effaçable Électriquement

EPROM P ROM Effaçable

FG Grille Flottante

FLC Fuzzy Logic Controller

FPGA Field-Programmable Gate Arrays

IC Integred Circuit

ITGE Intégration à Très Grande Échelle

LF-MG Logique Flou- Mode Glissant

MLI Modulation de Largeur d 'Impulsion

MOM Means OfMaximum


XVI

MSAP Machine Synchrone à Aimants Permanents

PLD Programmable Logic Deviee

PMSM Permanent Magnet Synchronous Machine

PROM ROM Programmables

RNA Réseaux de Neurones Artificiels

ROM Read-Only Memory

RTL Register Transier Level

S Source

SLF Systèmes à Logique Floue

SRAM Statie Random-Access Memory

SVPWM Space -Vector Pulse Width Modulation

VHDL VHSIC Hardware Description Language

VLSI Very Large Scale Integration


XV II

Liste des symboles

d-q Référentiel fixe

e(ù Erreur de vitesse

e(ù Variation de l' erreur

id, iq Courants dans le repère d-q

[is] Vecteur de courant statorique

J Inertie

Ld, Lq Inductances dans le repère d-q

[Ls] Matrice inductance du stator

mi Nombre de sous-ensembles flous

n Nombre de variables d' entrée

p Nombre de paires de pôles

r max Nombre maximum de règles

R Résistance statorique

[Rs] Matrice résistance du stator

s Modèle d'erreur de la vitesse

Vd, Vq Tensions dans le repère d-q

(Sa, Sb, Sc) États des trois bras de l' onduleur


XVIII

Période d'échantillonnage pour la SVPWM

Tension du bus continu

Vecteur de tension statorique

Vecteur d' espace de tension

a-fi Référentiel rotatif

 Flux magnétique permanent

Àd, Àq Flux dans le repère d-q

() Position du rotor.

_ --i

<p Angle entre le vecteur Vi et ~.

[qSs] Vecteur de flux statorique

Couple électromagnétique

1f Couple de frottement

'tL Couple de charge.

ro Vitesse mécanique du rotor

Il Fonction d' appartenance


Chapitre 1 - Introduction

Le développement rapide dans la technologie de la microélectronique, l' électronique de

puissance, les lois de commande et surtout dans le domaine des matériaux magnétiques, a

permis au moteur synchrone à aimant permanent (MSAP, en anglais Permanent Magnet

Synchronous Motor, PMSM) de remplacer le moteur asynchrone et le moteur à courant

continu dans de nombreuses applications industrielles, comme: les outils de fabrication à

haute résolution, la robotique et les lecteurs de disque dur [1.1 , 1.2, 1.3]. La popularité des

MSAP vient de leurs avantages par rapport aux moteurs à courant continu et aux moteurs

asynchrones, comme: leur faible bruit, faible inertie, rapport couple/courant élevé,

efficacité élevée, robustesse, et leur faible coût de maintenance [1.3, 1.4]. Cependant, les

non linéarités et les incertitudes internes et externes de la MSAP représentent de sérieux

obstacles pour le contrôle en vitesse d' une MSAP. Afin d'obtenir les performances

satisfaisantes, de nombreux chercheurs ont proposé divers concepts de commande, par

exemple: le contrôle adaptatif, le contrôle avec linéarisation par rétroaction, la commande

robuste, et le contrôle basé sur l'observateur de perturbations [1.1].

Plusieurs techniques de contrôle adaptatif ont été adoptées pour remplacer les méthodes

conventionnelles qui ont le principal inconvénient de sensibilité envers le changement de

paramètres de système. Mais pour la plupart de ces nouvelles techniques adaptatives, leurs

algorithmes reposent sur une estimation en ligne des paramètres du moteur. Cette

estimation peut paraitre comme un inconvénient majeur surtout en termes d' implémentation
2

ou il peut être difficile d' intégrer, loi de contrôle, algorithme de la SVPWM et aussi un

algorithme d' estimation sur une seule plateforme. Les algorithmes de contrôle basés sur

l' intelligence artificielle; comme le contrôle à base de la logique floue, et de réseaux de

neurones sont considérés comme des solutions qui pourraient résoudre les problèmes

associés à la non linéarité et l' incertitude du modèle mathématique du système, sans avoir

besoin de procéder à une estimation en ligne [1.5] .

Les techniques de commande basées sur l'intelligence artificielle conçoivent un

modèle mathématique adaptatif du système pour résoudre le problème de contrôle

concernant la non linéarité et l' incertitude des paramètres [1.6]. La capacité de s' adapter

avec la variation et la non linéarité du modèle et aussi avec les perturbations externes a fait

des contrôleurs intelligents une très bonne option dans le domaine de contrôle des systèmes

électriques, spécialement les moteurs électriques [1.7].

1.1 Problématique

Dans la littérature, les approches classiques de commande de ces systèmes non-

linéaires (MSAP) se basent sur un modèle mathématique précis du système et ont tendance

à bien fonctionner en théorie. Mais, leurs performances se dégradent en présence de

conditions de fonctionnement variables, d' incertitudes dynamiques, variation des

paramètres et des perturbations externes [1.8, 1.9].

La commande exploitant les outils d' intelligence artificielle, comme les réseaux de

neurones artificiels (RNA) et les systèmes à logique floue (SLF), a le potentiel de répondre

à ces contraintes. Ces outils ont en effet la capacité de générer une approximation robuste

de systèmes mal définis mathématiquement, avec incertitudes structurées et non structurées.


3

Cependant, les performances élevées sont obtenues avec ces outils au prix de calculs lourds

[1.10]. Il est donc essentiel, pour profiter des avantages apportés par ces outils et pour les

faire accepter par le milieu industriel, d' offrir des solutions pour l'implémentation

matérielle efficace des algorithmes [1.11 , 1.12].

Dans la littérature, on trouve plusieurs approches qui intègrent différentes technologies

d' implémentation des lois de commande des machines électriques. Les microprocesseurs et

les microcontrôleurs ont été les solutions les plus adoptées pour des applications simples

qui n' ont pas besoin d'un algorithme de commande complexe [1.10]. Comme les

algorithmes de contrôle deviennent de plus en plus précis, alors leurs implémentations

demandent plus de ressources et une vitesse de calcul plus élevée. Pour résoudre ce

problème, les algorithmes de contrôle complexes sont désormais implémentés sur la

technologie Very Large Scale Integration (VLSI) qui est plus rapide en termes d' exécution

des opérations [1.13] . Par contre, pas tous les circuits VLSI sont propices à un changement

de paramètres de configuration après l' avoir conçu, et pour cette raison les chercheurs ont

adopté les Field Programmable Gate Array (FPGA) comme technologie rivale [1.14] .

La réalisation des différents circuits de commande sur une seule carte est devenue

possible grâce au développement rapide et la technologie avancée utilisée dans l' industrie

micro-électronique. Cependant, Application-specifie integrated circuit (ASIC) n' est pas la

seule technologie d' implémentation qui a bénéficié de ce progrès dans le domaine de la

micro-électronique. La technologie FPGA a aussi réussi à augmenter la densité des cartes et

donc à améliorer leur coût. Donc, la technologie FPGA n'est plus juste une technologie de

prototypage rapide mais elle représente dorénavant une solution définitive qui permet de

raccourcir considérablement le temps de mise sur le marché [1 .15].


4

1.2 Objectifs

Le but de ce projet est de simplifier et raffiner des structures de commande à base

d' intelligence artificielle et de démontrer que même après avoir retravaillé ces algorithmes

et les avoir implémentés à virgule fixe par prototypage rapide et sur circuit de commande

programmable (FPGA), ils gardent leurs performances. Ces commandes utilisent des

algorithmes d' apprentissage ou d' adaptation en ligne avec stabilité garantie. Les

algorithmes d' adaptation sont souvent coûteux lors d' une implémentation et nécessitent des

fréquences de calculs très élevées. L' adaptation et l' apprentissage hors ligne sont des

solutions efficaces pour l' implémentation, mais les contraintes liées à la dynamique et aux

changements de paramètres du modèle des machines électriques excluent cette solution.

Alors les algorithmes à implémenter doivent être de meilleurs compromis entre les

différents critères algorithmiques et d' ITGE.

Les objectifs de ce travail portent sur la proposition d' une librairie de schémas de

commande à base d' intelligence artificielle pour le contrôle d' une machine synchrone à

aimant permanent. Ces schémas ont une architecture hautement parallèle, ce qui permet

d' un côté de changer la loi de commande seulement en activant ou en désactivant un bloc,

de l' autre côté d' utiliser la même loi de commande mais pour une autre gamme de

machines, en changeant minimalement le code. Au final on fait une comparaison entre les

différentes lois qui ont été implémentées, en tirant des conclusions sur leurs performances

côtés précision, fiabilité et implémentation, consommation et temps de calcul, pour décider

laquelle des lois est la plus appropriée et efficace pour une implémentation.
5

1.3 Méthodologie

Pour contrôler unw MSAP en temps réel, notre contrôleur doit tenir compte des

incertitudes internes et externes et de ses non linéarités. De plus, il faut prendre en

considération les limites de la plateforme et du banc de test.

En premier lieu, les algorithmes à implémenter doivent être retravaillés et simplifiés le

plus possible tout en gardant un minimum de précision. Cette étape consiste généralement à

plusieurs opérations : normalisation, restructuration de l' algorithme pour avoir une

structure parallèle, utilisation de multiples signaux d' horloge (Clock) , approximation des

fonctions complexes, soit par des méthodes mathématiques comme l' interpolation ou

directement en les remplaçant par des fonctions moins complexes.

La deuxième étape est de passer du calcul à virgule flottante à la virgule fixe. Le critère

de précision utilisé dans cette étape est pour les opérations de base comme l'addition, la

soustraction, et la multiplication. L' erreur doit être inférieure à l'erreur correspondant à

1bit. Donc le défi ici est de s'assurer que l'erreur ne s'accumule pas. Pour faire face à ce

défi, une méthode de validation très complexe est employée afin de valider des plus petites

parties de l' algorithme à l' assemblage final de ces parties. Le schéma de la figure 1.1 décrit

les différentes étapes à suivre pour valider un bloc VHDL.


6

Dans Mati ab Dans M odelSim Dans Mati ab


(

Écrire ct Simuler
Une opkation en • • • • • • • • • • • • • •
virgule fl<lttante

Descripti on
VHDLde
Mise en Virgule l' op6rati on
Fize à l'aide de Comparaison des
la fonction fichiers .Tzt
fonc _s""f'ling jmc]JdLor;cJ'«l
(huIeXl'.A) cr2~h.r
(AIutBXI' A)

Transfert des
Donn6cs dans
des fichiers .Tzt
jmc_MRldNumh.
r2l!ldJ.ofJc J'cler
(huIea.A)

Figure 1.1 Processus de simulation Matlab/ModelSimlMatlab

1.4 Structure du mémoire

Le deuxième chapitre contient une étude sur la logique floue, la définition des différents

termes utilisés, les opérateurs et les normes applicables dans la logique floue et les

différents éléments constituant un bloc de logique floue .

Le troisième chapitre a pour but d'expliquer les différents pnnCipes des FPGA,

présenter des généralités, les différents éléments électroniques qu ' on peut trouver sur un

FPGA, une étude de quantification, et un survol sur l' implémentation des différente

opérations arithmétiques de base en utilisant le langage de programmation VHDL.

Le quatrième chapitre présente, une synthèse des connaissances dans le domaine des

entrainements électriques, un survol sur les machines synchrones à aimant permanent, la


7

modélisation et la commande des convertisseurs cc-ca, et le choix d' une méthode de

commande et l' implémentation.

Le cinquième chapitre est consacré pour présenter les différentes lois de commande qui

ont été implémentées. Dans ce chapitre la théorie de ces lois de commande est présentée

brièvement afin de consacrer la grande partie pour les détails et les résultats

d'implémentation.

Finalement dans la partie conclusion générale, nous présenterons une discussion des

principaux résultats, de la contribution du projet et des travaux futurs.


8

Chapitre 2 - Logique Floue

2.1 Introduction

2. J. J Généralités

Dans le cadre de recherche pour le développement de nouvelles technologies basées sur

l'intelligence artificielle, la logique floue a reçu un immense intérêt par les chercheurs et les

industriels depuis le début de la deuxième moitié du dernier siècle. Avant cette tournure

dans la définition de la logique, tous les algorithmes et les procédés se basaient sur la

logique classique [2.1] . La logique classique n' admet aucun état entre le vrai et faux, ou

aucune valeur entre le 0 et 1, contrairement à la logique floue qui a l'avantage de traiter

même les valeurs entre 0 et 1 en se basant sur le raisonnement humain [2.1-2.3].

Les travaux de Lotfi A. Zadeh (Professeur de l' Université de Californie de Berkeley)

ont été les premiers qui présentaient la logique floue comme une méthode de classification

pertinente en ayant établi les principes de bases [2.4]. Initialement, la logique floue a été

désignée comme un algorithme de classification qui a été utilisé pour l' analyse de données,

surtout dans des domaines comme le commerce et la médecine [2.5]. Cependant, son

principe de raisonnement inspiré du raisonnement humain a attiré Marndani qui a été le


9

premier qui a introduit la notion de la logique floue dans le domaine de contrôle en 1974

[2.6,2.7].

2.1 .2 Exemple Introductif

Afin de bien comprendre le principe de base de la logique floue , dans cette partie on

expose un exemple simple de régulation [2.7]. Nous prenons l' exemple de régulation de

vitesse de déplacement d'un véhicule. Dans un premier temps, la vitesse de déplacement

pourra être estimée soit: basse, moyenne, ou élevée. Si nous nous basons sur la logique

classique pour réguler la vitesse du véhicule à une vitesse désirée moyenne, nous nous

retrouvons avec un algorithme simple comme le montre la figure 2.1:

Si la vitesse du véhicule est faible : Accélérer;

Si la vitesse du véhicule est moyenne: Ne rien faire ;

Si la vitesse du véhicule est élevée : Décélérer.

Fonction Fonction
d'appartenance Il d'appartenance Il
If\ Faible Moyenne Élevée

1 .... Vitesse Décélère~....l-_ _"---_--L~ Accélére


o 40 80 120
,;
Max -A 0 +A
a- Exemple de répartition des zones de vitesse b- Choix de la décision
en trois classes

Figure 2.1 Exemple de réglage de vitesse d' un véhicule selon la logique classique.

Nous constatons que ce raisonnement est loin d' être semblable au raisonnement humain

qui est capable d' être plus précis au niveau de classification. Une vitesse de 38 km/h

d'après la logique booléenne appartient à l' intervalle vitesse faible, alors que le cerveau
10

humain voit qu' elle pourrait appartenir autant à l' intervalle vitesse moyenne, qu' à

l' intervalle vitesse faible. C'est de là que le principe de la logique floue a été inspiré, le

degré d' appartenance peut varier entre 0 et 1 d' une façon que la somme de tous donne 1. La

vitesse du véhicule n' est pas toujours soit nettement faible, moyenne ou élevée, elle peut

être par exemple à 80% faible, 20% moyenne et 0% élevée, et dans ce cas la décision ne va

pas être la même qu' avec la logique classique, parce que la logique floue prend en

considération le passage d' intervalle.

Dans l' exemple considéré (Fig. 2.2) :

Pour une vitesse inférieure à 40Km/h, la vitesse est faible;

Pour une vitesse inférieure à 60Km/h et supérieure à 40Km/h, on hésite entre faible

et moyenne;

Pour une vitesse inférieure à 80Km/h et supérieure à 60Km/h, on hésite entre

moyenne et élevée;

Pour une vitesse supérieure à 80Km/h, la vitesse est élevée.

Fonction Foncti on
d' appartenance I.l d ' appartenance I.l
Moyenne
Faible Élevée

oL...------'---"---->..----'---~ Vitesse
Décélère ~""""_ _""""_ _"""--~ Accélère
40 80 120 Max -A o

a- Exemple de répartition des zones de vitesse b- Choix de la décision


en trois classes
Figure 2.2 Exemple de réglage de vitesse d' un véhicule selon la logique floue.
Il

Maintenant qu' on a une classification précise de la vitesse de déplacement, ça aidera

l' expert d'en déduire une correction plus précise et qui tient compte du passage entre les

intervalles. Par exemple, lors du passage de l' intervalle ' Faible' à l' intervalle 'Moyenne',

l' accélération n'est plus constante. L' accélération est une image de la fonction

d' appartenance comme le montre la figure 2.2.

2.2 Définitions

2.2.1 Univers de discours

L'univers de discours est la plage de variation de la grandeur mesurée ou de

commande. Reprenons l'exemple introductif: l' univers de discours de la vitesse du

véhicule est [0, Max[. Il est imposé par les caractéristiques du processus à commander,

dans ce cas, la voiture. L' univers de discours de l' accélération est l' ensemble des trois

valeurs, -A, °et +A. L' univers de discours de la réponse est fixé par l' expert selon la
dynamique qu'il cherche à obtenir [2.8, 2.9].

2.2.2 Variable linguistique

Chaque univers de discours est divisé en plusieurs sous-ensembles. Une fois que la

valeur est assignée au sous-ensemble auquel elle appartient, elle est représentée par le

symbole ou par le mot qui représente ce sous-ensemble. Ce mot ou ce symbole est la

variable linguistique. Dans l' exemple introductif : faible, moyenne et élevée sont les

variables linguistiques [2.1 0].


12

2.2.3 Fonction d 'appartenance

La fonction d' appartenance est l' ensemble de degrés d' appartenance à chaque valeur

linguistique [2.2, 2.11] .

S i vitesse ~ 40Kmlh
~(Faible) ={ tlitesse _ !o Si 40Kmlh < vitesse ~ 60Kmlh
(2. 1)
(40 -60) (40 -60)

~(Faible) est la fonction d' appartenance de la valeur linguistique Faible dans

l' exemple.

Comme le montre l' exemple, il existe plusieurs formes de fonctions d' appartenance.

Exemples de fonction d' appartenance :

Fonction d' échelon (Figure 2.1.b);

Fonction triangulaire (Figure 2.2.a);

Fonction Carrée, ou Trapézoïdale (Figure 2.2.a);

Fonction sigmoïde (Figure 2.3), etc ...

Fonction
d' appartenance ~

o~-'----------~--~

Figure 2.3 Exemple d'une fonction sigmoïde.


13

2.3 Opérateurs et normes

Dans certain cas, on trouve que la réponse de la logique floue dépend de plus qu' une

condition (deux ou plus). Dans la logique classique il existe des opérations qui permettent

de gérer le chevauchement de plusieurs conditions. Les mêmes opérateurs utilisés pour la

logique booléenne sont encore utilisables pour la logique floue [2.1].

2.3.1 Opérateur NON

Selon la logique classique, la négation est définie par :

c= NON(a) = ii (2.2)

Dans le cas de la logique floue, cette expression peut être écrite d' une façon plus

générale :

NON (Pa(x)) = 1- Pa(x) (2.3)

2.3.2 Opérateur ET

L'opérateur ET dans la logique floue correspond à l'opération minimum. L' application

de cette opération sur deux fonctions d'appartenances Pa(x) et Pb(X) , donne la fonction pl x)

qui représente l' intersection entre les deux fonctions .

(2.4)

2.3.3 Opérateur OU

Selon la théorie des ensembles, l' opération OU est utilisée souvent pour exprimer

l'union entre deux ensembles. Dans la logique floue, cette opération est définie par

l' opération maximum. L'application de cette opération sur deux fonctions d'appartenance

Pa(x) et Pb(X) , donne la fonction Pc(x) qui représente l' union des deux fonctions.
14

(2.5)

2.4 Unités d'un bloc logique flou

Un contrôleur logique flou typique est représenté dans la figure 2.4. Basé sur la logique

floue, le noyau du dispositif de commande se trouve dans sa base de connaissances,

constituée de règles floues qui décrivent la réaction du régulateur, et un système d'inférence

qui combine les règles actives selon les entrées présentées au contrôleur [2.12, 2.13].

Comme les règles et le système d'inférence agissent sur des sous-ensembles flous, il est

nécessaire de convertir les données nécessaires à la régulation provenant du monde

extérieur en valeurs linguistiques qui peuvent être manipulées par les fonctions de la base

de connaissances de la logique floue [2.14]. Les décisions prises par la base de

connaissances sont en général des valeurs linguistiques qui doivent être converties en

valeurs numériques afin de les appliquer sur le processus à contrôler. De ce fait, un bloc

logique flou peut être divisé sous 5 sous-blocs :

-III ~ IFX _TlIBI"

Figure 2.4 Schéma des différentes opérations dans un bloc logique flou.
15

2.4.1 La fuzzification

La fuzzification est la première étape dans le FLC qui transforme les entrées

numériques Xi en un ensemble de valeurs d'appartenance dans l'intervalle [0,1] à des

ensembles flous correspondants Jl.xi. La fonction d'appartenance est une représentation

graphique de l'amplitude de participation de chaque entrée. Il existe de nombreux types de

fonctions d'appartenance. Parmi eux, les deux plus couramment utilisés dans la pratique

sont les fonctions triangulaires et trapézoïdales [2.15 , 2.16]. Le nombre de fonctions

d' appartenance à définir pour chaque variable linguistique est défini à l' aide d' expertise

humaine. Plus l' univers de discours contient de sous-ensembles flous, plus le régulateur

flou est précis.

2.4.2 Base de règles

En logique floue, les règles sont souvent formulées en basant sur la connaissance de

l'expert du comportement et de la dynamique du système. Ces règles stipulent la relation

entre les ensembles flous d'entrée et les ensembles flous de commande correspondante

[2.15 , 2.17, 2.18] . Une règle prend habituellement la forme d' instruction IF -THEN comme

suit:

IF x is a AND y is b THEN z is c

Par conséquent, le nombre de règles définies dépend directement du nombre de sous-

ensembles défini pour chaque variable d' entrée et de sortie. Si on définit n variables

d' entrée et de sortie X dans notre système, et pour chaque univers de discours de ces

variables on a mi sous-ensembles flous, le nombre maximum de règles est défini par la

relation suivante [2.2] :


16

(2.6)

2.4.3 Mécanisme d 'inférence

Aussi appelé le moteur d'inférence ou inférence floue, le mécanisme d' inférence est

l'élément clé dans l'algorithme de logique floue qui émule la prise de décision de l'expert

dans l'interprétation et l'application de connaissances sur la meilleure façon de contrôler le

système [2.3].

Après avoir décidé quelles sont les règles à appliquer, maintenant, cette étape consiste

à définir les degrés d'appartenance de la variable de sortie aux ensembles flous [2.6] . Il

existe deux méthodes fondamentales qui permettent de calculer ces degrés d' appartenance.

Les autres méthodes permettant d' y arriver sont nombreuses, la différence entre elles se

définie essentiellement par la façon de réaliser les opérateurs flous (ET, OU et NON).

2.4.3.1 La méthode de Mamdani

Pour les moteurs d' inférences basés sur la méthode de Mamdani, les degrés

d' appartenance de la variable de sortie, sont calculés à l' aide des opérateurs ET et OU

réalisés par les deux fonctions Min et Max respectivement.

Dans cette méthode, les règles s' écrivent de la façon suivante:

Si Xl est A~ et X2 est A ~ et ... et X n est A~ Alors y l est CI et Y 2 est CJ et ... et Y m est C:n

où X i, et Yi sont les variables linguistiques d' entrée et de sortie, respectivement; A~ et Cl,


i = 1, ... , n, j = 1, ... , m, sont les ensembles flous entrées et sorties, respectivement; n et m

sont les nombres d' entrées et de sorties du bloc logique floue, respectivement.
17

Dans ce cas les degrés d'appartenance correspondant aux variables de sortie sont

calculés à l'aide de la relation suivante:

2.7

où, RI est la relation floue entre les entrées Xi et les sorties Yi, 1 = 1, ... , r et r est le

nombre des règles [2.12]

2.4.3.2 La méthode de Takagi-Sugeno

Cette méthode utilise la même forme de règles que la méthode de Marndani, Si .....

Alors, où l' antécédent est toujours une variable linguistique, mais le conséquent utilise des

variables numériques. Le conséquent peut être calculé à partir de m'importe quelle formule

mathématique, une constante, un polynôme, ou une fonction de manière générale; tout

dépend du comportement voulu.

Si Xl est Ai et X2 est A~ et .. . et Xn est A~ Alors YI =Ci(x) et Y2 =ci(x) et ... et

Ym =C~(X)

où Cl, i = 1, .. ., n, 1 = 1, ... , r, sont les ensembles flous de sorties [2.12].

2.4.4 La défuzzification

C'est la dernière étape de la logique floue. Avant que les sorties du moteur d'inférence

soient appliquées sur le processus à contrôler, ces dernières qui sont représentées comme

des degrés d' appartenance aux fonctions de la sortie, doivent être converties [2.19]. Alors

l' étape de la défuzzification consiste à convertir ces valeurs floues en variables réelles qui

peuvent être utilisées. Dépendamment de la forme de la sortie voulue, du type de contrôle,


18

du type des fonctions d' appartenance de la sortie, il existe trois méthodes fondamentales de

défuzzification [2.18] .

2.4.4.1 Méthode de centre de gravité (COG)

C'est une des méthodes les plus utilisées grâce à la haute précision qu' elle offre. Cette

méthode calcule la totalité de l'espace actif sous les fonctions d' appartenance. Mais le fait

de calculer plusieurs surfaces présente un inconvénient côté complexité et temps de calcul.

2.4.4.2 Méthode de centre de maximum (COM)

Cette méthode est connue pour sa simplicité vu qu' elle prend en considération que le

sommet de l' espace actif sous la fonction d' appartenance. Dans le cas où les fonctions

d' appartenance sont de type échelon, la précision de cette méthode est similaire à la

première.

2.4.4.3 Méthode de moyenne de maximum (MOM)

Dans cette méthode, le résultat de sortie correspond à la moyenne entre les maximums

de chaque fonction d' appartenance. Elle est utilisée beaucoup plus dans les cas où la

grandeur de sortie a des valeurs fixes et discontinues.

2.5 Conclusion

Dans ce chapitre, on a présenté les différentes étapes pour la conception d'un régulateur

flou. La difficulté de la conception réside dans la configuration de chaque bloc vu que cela

dépend de l' expertise humaine. Dans le cinquième chapitre on présentera la configuration

de chaque étape qui a été présenté dans ce chapitre.


19

Chapitre 3 - Field Programmable Gate Array


« FPGA»

3.1 Introduction

Les contrôleurs analogiques, numériques ou analogiques et numériques peuvent être

utilisés pour contrôler n' importe quelle grandeur physique désirée (température, pression,

tension électrique, position mécanique, etc.). Au début de l'ère de contrôle, la plupart des

systèmes physiques et spécialement les systèmes électriques se contrôlèrent à l' aide des

contrôleurs analogiques, mais leur taille, poids, manque de flexibilité et complexité de les

concevoir ont poussé les chercheurs à se concentrer sur la technologie numérique.

Cependant, avec le développement de la technologie numérique, la conception de systèmes

de contrôle est devenue plus faci le ainsi que plus économique [3.1] .

Un autre progrès récent dans les systèmes de traitement informatique, qui a contribué à

l' augmentation de la capacité de traiter et résoudre les problèmes très complexes liés au

contrôle des systèmes électriques, est dans la façon de traitement, où la tâche de calcul est

partagée entre plusieurs processeurs qui peuvent communiquer les uns avec les autres d'une

manière efficace. Les processeurs dits individuels peuvent résoudre les sous-problèmes qui

constituent le problème original. L' assemblage des résultats de chaque sous-problème

d' une certaine manière ordonnée, permet à arriver à la solution du problème global. Étant

donné que de nombreux processeurs peuvent être incorporés pour exécuter les calculs, il est

possible de résoudre des problèmes importants et complexes rapidement et efficacement

[3.2].
20

Aujourd ' hui avec le développement de la technologie ITGE, les systèmes de contrôle

numérique sont de plus en plus utilisés dans différents domaines d' application en raison de

leur exactitude, précision, haute vitesse. De plus, il est possible de concevoir des circuits

miniaturisés à haute performance, en termes de puissance et de vitesse, à faible coût. Grâce

aux avantages qu' offre la technologie ITGE, ce domaine a gagné une énorme popularité au

cours des deux dernières décennies [3.1 , 3.3].

Les familles les plus connues de la technologie ITGE sont: PLD (Programmable Logic

Device), FPGA (Field-Programmable Gate Array), ASIC (Application Specific Integrated

Circuit) et ASSP (Application Specific Standard Product). Ces différentes familles ont

leurs propres avantages et inconvénients.

Les PLD sont des dispositifs dont l'architecture interne est prédéterminée par le

fabricant, mais sont conçus d'une manière telle que les ingénieurs spécialisés peuvent les

configurer pour effectuer une variété de fonctions différentes. L' architecture interne d' un

dispositif FPGA est plus développée que celle des PLD; elle comporte un nombre très élevé

de portes logiques et les fonctions qui peuvent être réalisées par chacune de ces portes

logiques sont beaucoup plus vastes et plus complexes que celles d' un PLD. À l'autre

extrémité du spectre se trouvent les ASIC et ASSP qui peuvent contenir des centaines de

millions de portes logiques et peuvent être utilisés pour créer des fonctions incroyablement

vastes et complexes. ASIC et ASSP sont basés sur les mêmes processus de conception et de

technologies de fabrication. Les deux sont conçus sur mesure pour répondre à une

application spécifique, la seule différence étant que l'ASIC est conçu et construit à l'ordre

pour une utilisation par une entreprise spécifique, tandis qu'un ASSP est commercialisé à
21

plusieurs clients [3.4]. Comme dans plusieurs publications, nous nous permettons dans le

reste du chapitre de croire que les dispositifs ASSP appartiennent à la famille ASIC.

Bien que l' ASIC offre le rapport nombre de transistors/taille le plus élevé, le temps de

calcul le plus rapide, et moins de consommation par rapport aux autres familles d'ITGE, la

technologie des ASIC n' est pas la plus adaptée aux différentes applications, et ce, à cause

du temps, de la complexité et du coût de fabrication très élevés des ASIC avec

l'inconvénient supplémentaire et majeur que la conception finale est "gelée dans le

silicium" et ne peut être modifiée sauf si le fabriquant crée une nouvelle version du circuit

[3.5]. De son côté l' architecture interne d' un FPGA présente une flexibilité et re-

programmabilité. Une telle architecture peut être utilisée pour exécuter diverses

applications. De même le produit [mal peut être corrigé (s'il y a des erreurs) ou amélioré

(s ' il y a des mises à jour) en reprogrammant simplement le FPGA. Un FPGA permet aussi

une reconfiguration dite partielle, où seulement une partie du FPGA est reconfigurée tandis

que d'autres parties du même FPGA sont toujours en train de fonctionner. La

reconfiguration partielle est utile dans la conception de systèmes qui nécessitent de

s'adapter fréquemment selon les contraintes des différents modes de fonctionnement [3.6].

Par rapport à d'autres technologies tel que les ASIC, les applications à base de FPGA ont

moins de coût de conception par unité et une commercialisation plus rapide. Ainsi, les

FPGA occupent une position intermédiaire entre PLD et ASIC parce que leur fonctionnalité

peut être personnalisée comme avec un PLD, mais ils peuvent contenir des millions de

portes logiques et être utilisés pour mettre en œuvre des fonctions extrêmement importantes

et complexes qui ne pouvaient auparavant être réalisées qu' en utilisant uniquement des

ASIC. Ces avantages font des contrôleurs à base de FPGA des contrôleurs efficaces et
22

économiques, mais cela à un coût important en matière de taille, de temps de calcul et de

consommation d'énergie: un FPGA nécessite environ 20 à 35 fois plus d'espace qu'une

cellule ASIC standard, a une performance de vitesse à peu près 3 à 4 fois plus lent qu'un

ASIC et consomme environ 10 fois plus d' énergie dynamique [3.5].

Au début des années 1980 les FPGA commencèrent à apparaitre sur la scène des IC

(Integred Circuit). Jusqu' à cette époque les FPGA ont été largement utilisés pour mettre en

œuvre les différentes fonctions de la logique binaire et combinatoire, des machines d'état de

complexité moyenne, et des tâches relativement limitées pour le traitement de données. Au

début de 1990, comme la taille et la sophistication des FPGA ont commencé à augmenter,

les domaines d' utilisation des FPGA ont connu un élargissement spectaculaire.

Au début du XXIe siècle, les deux leaders de fabrication et de commercialisation des

dispositifs logiques programmables, Altera et Xilinx, à la fois déclarent des revenus

supérieurs à 1 milliard de dollars us. Les FPGA ont connu une croissance régulière de plus
de 20 % dans la dernière décennie, dépassant les ASIC de 10%. Cela vient du fait que les

FPGA ont réussi de gagner de nombreuses nouvelles caractéristiques en commun avec les

ASIC, tels que la réduction de la taille, la dissipation de puissance, et un temps de calcul

plus rapide, en gardant les mêmes avantages par rapport aux ASIC [3.7]. Du coup,

aujourd'hui les FPGA sont utilisés dans toutes les applications qui nécessitent une

plateforme de traitement de données rapide, efficace, pas cher, et pas volumineuse.

Dans ce chapitre on commencera par présenter un survol de l' histoire de

développement des FPGA, ensuite on présente le principe de fonctionnement des FPGA en

expliquant les éléments de base qu' on peut trouver sur une carte FPGA . Dans la dernière
23

partie du chapitre on abordera l' intégration de données, et on présentera quelques exemples

sur VHDL des opérations de base (addition, multiplication, ... etc.).

3.2 Histoire des FPGA.

Les FPGA ont fait leur apparition au début des années 1960 après la publication des

travaux de Gerald Estrin qui ont été connus par ''fixed plus variable structure computer"

[3.8] . A cette époque l' idée de la configurabilité était d' utiliser une régularité structurale et

une flexibilité fonctionnelle. Les réseaux cellulaires étaient généralement constitués d'un

tableau à deux dimensions de cellules logiques simples avec une communication fixe point

à point. La programmation des cellules logiques de ces réseaux, tels que ' Maitra cascades',

se faisait par métallisation pendant la fabrication pour mettre en œuvre un ensemble de

fonctions logiques à deux entrées. Cependant, après l' introduction de la technique

'Cutpoint', à la fin des années 1960, la possibilité de modifier la fonction logique d'une

puce après le processus de fabrication a été atteinte. Bien que la communication entre les

différentes cellules logiques fût toujours fixe, la fonctionnalité de chaque cellule logique

dans le réseau peut être déterminée par l' état des fusibles programmables. Ces fusibles

peuvent être programmés grâce à l'utilisation d' une intensité bien définie de courant ou par

la propriété de la photo conductivité [3 .5].

En 1970 une nouvelle technologie de conception des FPGA qui se base sur le principe

des ROM (Read-Only Memory) est apparue. Une série de ROM programmables (PROM)

de N-entrées, est capable d' implémenter certaines fonctions logiques complexes. Comme

l'indique leur appellation, cette catégorie de mémoires mortes se caractérise par le fait

qu ' elle est programmable une seule fois après la fabrication. Il existe plusieurs types de

PROM qui se distinguent surtout par la façon de les programmer [3 .5]. Cette technologie
24

basée sur les PROM a été combinée en 1977 avec les technologies utilisées jusqu' à ce

moment pour rajouter aux nombreux avantages la flexibilité vu que les PROM une fois

programmées sont des mémoires mortes.

Le concept moderne du FPGA est connu depuis 1985 avec la commercialisation de

deux plateformes qui ont profité des progrès spectaculaires dans le domaine des semi-

conducteurs. La première est la famille XC2064TM FPGA de Xilinx, qui était basée sur

SRAM (static Random-access memory). La deuxième, EP1200 d'Altera, avait une très

haute densité (3-,um CMOS) et utilisait des PROM effaçables (EPROM) [3.9]. Ces deux

produits ont été le véritable lancement de la technologie FPGA à l' échelle de prototypage

rapide et de nos jours, elle rivalise avec l' ASIC à l' échelle de produit final. Au courant des

deux dernières décennies plusieurs familles de FPGA ont été commercialisées par les

différents fabricants, Xilinx, Altera, Actel, Lattice, Crosspoint, etc. Pour résumer cette

période, Dr.Steve Trimberger qui est un des célèbres experts de Xilinx, a divisé les étapes

de progression des FPGA comme dans le tableau 3.1 [3 .9] .


25

Tableau 3-1 Progression des FPGA

Période Étape Caractéristiques

~ Technologie était limitée;

~ Outils de conception étaient primitifs;


1984-1991 Invention
~ Architecture était efficace.

~ Taille de FPGA se rapprochait de la taille


du problème;
1992-1999 Développement
~ Facilité de conception devenait critique.

~ La taille des FPGA ne pose plus de

2000-2007 Accumulation problème;

~ Technologie des IIO.

3.3 Principe de fonctionnement des FPGA

Un FPGA, comme l' indique son nom, se compose d' une matrice de blocs logiques

reprogrammables. La topologie d' interconnexion entre les différents blocs logiques fait

distinguer deux structures : la topologie arborescente et la topologie maillée. La première se

base sur une structure qui relie les blocs logiques d'une façon hiérarchique et récursive. La

deuxième est une structure organisée sur la forme de mailles et les blocs logiques de chaque

ligne sont reliés en cascade. La première topologie offre une taille plus miniature pour la

plateforme, mais en revanche une simplicité critique pour l' opération de routage. C' est pour

cette raison que la plupart des fabricants adoptent la topologie maillée qui est totalement le

contraire. La figure 3.1. montre l'architecture d'un FPGA qui adopte la topologie maillée

[3.6] .
26

Vertical
Routing
Channel
Uü 's

Switch
Bax
CLB

Connection
Horizontal Box
Routing
Channel

Figure 3.1 Architecture traditionnelle d'une plateforme FPGA à base de mailles [3.6].

Un FPGA peut contenir différents blocs logiques entre les blocs d' entrée et les blocs de

sortie, tout dépend des technologies utilisées et à quelle application il est désigné. En plus,

ce que la figure 3.1 montre, un FPGA peut contenir aussi des mémoires, des multiplicateurs

et des additionneurs déjà implémentés. Dans la partie suivante nous présenterons une partie

des composants qui constituent le mécanisme qui nous permet de configurer (programmer)

une puce de silicium.

3.3.1 Une simple fonction programmable

Pour présenter les différents composants, nous commençons par proposer une simple

fonction à deux entrées et une sortie.


27

Potenrial links

. - Pull-up resistors

, - - _ ___ ~ y= 1(N /A)

AND

NOT

Figure 3.2 Exemple d' une simple fonction programmable [3.4].

Les inverseurs à l' entrée de la fonction donnent une large plage de fonctionnalités pour

cette fonction de base. Les connexions potentielles constituent le mécanisme de

programmation de cette fonction. En disposant de deux entrées avec leurs états

complémentaires, même une fonction simple comme AND peut être dérivée en 22=4

fonctions . Des résistances de sécurité sont reliées sur l' état 1 pour la sécurité du circuit si

cette fonction n' a pas été configurée.

3.3.2 Technologie de connexion à base de fusibles

Dans cette technologie, les fonctions logiques reprogrammables sont fabriquées avec

toutes les connexions activées. Le dispositif de connexion est un fusible, semblable au

fusible électrique utilisé pour sécuriser les montages électriques. L' idée c' est de faire griller

volontairement le fusible correspondant à l' entrée indésirable, comme le montre la figure

3.3 [3 .7].
28

,----1.-.----,-- Logic 1
Fol
_ Pull·up resistors

'----'-I= ~ y=a& !b
AND

NOT

Figure 3.3 Exemple d'une connexion à base de fusibles [3.4].

3.3.3 Technologie de connexion à base d 'anti-fusibles

L'anti-fusible est un dispositif à deux bornes qui a le même principe que le fusible,

mais d'une façon inverse. L'anti-fusible dans son état normal est isolant contrairement au

fusible et il est conducteur lorsqu'il subit une haute tension sur ses deux bornes [3.10].

Programmed
antifuses

' ~-ç=J,
_ Pull.up resistors

NOT / /1 \ \
y= !a&b
,\ l '/

b ~iÎ;' AND

NOT

Figure 3.4 Exemple d'une connexion à base d'anti-fusibles [3.4].

3.3.4 ROM

Dans chaque système électronique, certaines informations doivent être stockées de

façon permanente, c'est à dire qu'elles doivent être conservées même lorsque le système est

hors tension.
29

Depuis une longue période, il y avait deux catégories différentes de mémoires non

volatiles qui sont programmables électriquement: de l'EPROM et l'EEPROM (PROM

effaçable électriquement).

EPROM ont une cellule de mémoire d'un seul transistor donc ils peuvent fournir une

haute densité et rentabilité, cependant leur structure ne permet pas d'effacer les données

stockées.

De par sa structure l'EEPROM a la capacité d'effacer électriquement des données.

Toutefois, en raison de la structure complexe d' une cellule de mémoire, leur cout est assez

élevé d' un côté, et de l' autre côté cette technologie offre une densité beaucoup plus faible

qu ' EPROM.

Avec le développement de la technologie des semi-conducteurs une troisième catégorie

de mémoires non volatiles est devenue la ROM la plus demandée du marché. Cette

technologie qui s' appelle Flash memory est de plus en plus utilisée ces dernières années

sous forme de nouvelles architectures. L'architecture de base est représentée sur la figure

3.5 [3.7].
30

Grille flottante (FG) Grille de contrôle (CG)

CG~
s
Électrons

Figure 3.5 Cellule principale d'une mémoire à grille flottante et son schéma
symbolique [3.7].

3.3.5 RAM

Les mémoires VIves statiques sont constituées d'éléments statiques (transistors et

diodes) d'où vient son appellation. Elles ont toujours joué un rôle essentiel dans la majorité

des systèmes VLSI. Cependant, cette catégorie de RAM présente des faiblesses à basse

échelle de tension; pour remédier à ce problème les mémoires vives dynamiques ont été

proposées. À la base de ces deux catégories, plusieurs variétés ont été proposées au fil du

temps.

[sRAM]
(DRAM]

WL~-hl
r BL

BL
l

Figure 3.6 Exemple d' une mémoire RAM statique et dynamique [3 .7] .
31

3.4 Intégration sur VHDL

Dans cette section, nous expliquons la façon de concevoir les circuits logiques qui

effectueront les opérations arithmétiques. Dans l'arithmétique numérique deux principes de

conception fondamentaux sont d'une grande importance: la représentation des nombres et la

mise en œuvre des opérations algébriques [3.7]. Chacune des deux représentations qui sont

utilisées habituellement pour l'implémentation numérique ont des avantages et des

inconvénients. La représentation en virgule flottante peut, avec le même nombre de bits,

couvrir une plage plus large de nombres décimaux avec une précision supérieure à la

virgule fixe [3.2] . Cependant cette haute performance se paie au prix de consommation

d'espace et le temps de calcul élevé par rapport à une représentation en virgule fixe. Du

coup on a opté pour la représentation la moins couteuse [3.9]. Après avoir choisi la

représentation la plus convenable à notre application et à la base de cette représentation

nous procéderons à la réalisation des différentes opérations arithmétiques de base.

Dans une représentation numérique à point fixe, la variable est représentée par un

vecteur de données. Chacun des éléments du vecteur est appelé un bit. Le nombre de bits n

est appelé la précision de la représentation [3.11]. Pour effectuer des opérations

arithmétiques sur les nombres à virgule fixe au niveau des algorithmes, une représentation

spécifique de nombre est nécessaire. Les nombres les plus simples à représenter sont les

entiers, alors nous commençons par représenter un nombre entier et positif. Après nous

aborderons les différentes représentations d'un nombre réel et négatif.


32

3.4.1 Nombre entier positif

La représentation numérique suit le même pnncIpe que la représentation décimale

qu'on connait, où le nombre est représenté par un vecteur qui comporte n chiffres

décimaux. En général un nombre décimal est représenté comme suite [3.12]: D = d n- I dn-

1· · ·· dl do

Ce qui donne un nombre entier qui a une valeur égale a :

(3.1)

Dans le cas de la représentation numérique, un nombre est représenté sous la forme

suivante:

B = bn- l bn- l .... b l bo (3.2)

où b i est un nombre binaire.

La valeur du nombre entier est calculée à l' aide de la relation suivante:

(3.3)

(3.4)

où n est le nombre de bits utilisé, b o est le bit le moins significatif, et b n- l est le plus

significatif.

Il faut noter que la représentation à point fixe peut représenter un intervalle limité de

nombres entiers. Le nombre de bits est l'image de l'intervalle que la représentation peut

couvrir. En général n-bits peuvent représenter les nombres entiers qui appartiennent à
33

l' intervalle [0, 2n _1]. Par exemple, le maxImum qu ' une représentation à 3 bit peut

représenter est (111 binaire = 7 décimal).

3.4.2 Nombre entier négatif

Le vecteur qui représente un nombre entier négatif est divisé sur deux parties: la

première partie qu' est le bit le plus significatif représente le signe du nombre, et la

deuxième que sont les n-l bits restants représente le module du nombre entier [3 .13]. Alors

la relation (3.4) devient:

B= {L? - Zb
-
' -0
1-

~.:-OZ
~
.
1

i :""
2~

b.1 * 2 i
B> O
8 < 0
(3.5)

Dans ce cas, n-bits peuvent représenter les nombres entiers qui appartiennent à

l' intervalle [_(2n-l_l), (2n-l-l)]. Cette représentation a l' avantage de détecter facilement un

débordement lors d' une opération arithmétique: il suffit de mettre en œuvre un algorithme

qui supervise le signe du résultat. Cependant, cette représentation complique l' exécution

des opérations arithmétiques vu que le bit de signe doit être traité séparément des bits de

magnitude. Par exemple, considérons l'addition des deux nombres + 18 (000 100 la) et -19

(100 100 Il) en utilisant la représentation « entier négatif ». Les deux nombres ont des

signes différents, les résultats alors devrait porter le signe du nombre le plus grand, dans ce

cas le (-19), et être (1000000 1) ce qui n' est pas le cas si on l' applique de cette façon :
34

00010010 10010011

+ 10010011 - 00010010

100100101 100000001

Dans ce cas, on est obligé de modifier l'algorithme de l' addition pour avoir un résultat

logique.

Pour éviter de compliquer les algorithmes des opérations de base, on préfère utiliser une

autre représentation des nombres négatifs. Deux représentations sont connues:

« complément à un » et « complément à deux». Pour notre travail, on a opté pour la

deuxième vu la simplicité qu'elle offre au niveau des opérations arithmétiques.

3.4.3 Complément à deux

Cette représentation consiste aussi à représenter le signe par le bit le plus significatif.

Cependant dans le cas où le nombre est négatif on ne change pas seulement le signe, les n-1

bits restants représenteront le complément à deux de la magnitude [3.13].

3.4.4 Représentation des données numériques

Dans ce travail nous essayons de ramener toutes les grandeurs qui sont présentes dans

la loi de commande à varier entre [-1, +1]. En arrivant à faire ça, on évite la complexité de

représenter un nombre réel ; la virgule fictive sera placée juste après le bit du signe.

Toutes les données dépassant cet intervalle seront forcées à la valeur de l' intervalle la

plus proche.

La figure 3.7 montre un exemple.


35

Décimal Binaire

- Max= +1 0111 -
Bit de signe

-- 0
0.5 0100

0000 1
!
0
,1
1 0 1
1111

-0.5 1100 i
Virgule Fictive
Pas de partie
- Min=-1 1000 - - entiere

Figure 3.7 Représentation des données.

Même en utilisant la représentation complément à deux, qui d'après la plupart des

chercheurs est la méthode la plus appropriée pour l' intégration des lois de commande, pour

représenter les nombre négatifs, on risque toujours d' obtenir des faux résultats lors de

l' exécution des opérations si on ne prend pas en considération le problème du débordement.

3.4.5 Modélisations des opérations de base

Avant de procéder à modéliser les architectures des différents modules utilisés dans les

lois de commande, on tient à présenter l' architecture détaillée de chacune des opérations de

base qu' on peut utiliser le long de ce travail.

Le processus de vérification sera le même pour les différentes opérations.

~ On commence par générer des données aléatoires en virgule flottante à l' aide de

Matlab;
36

~ On transfonne ces données en virgule fixe, ensuite on compare les deux pour

s' assurer que l' erreur maximale est toujours inférieure ou égale à l' erreur

correspondant à un bit;

~ Une fois la transfonnation virgule flottante => virgule fixe vérifiée, on exécute la

partie qui transfonne les données virgule fixe en données binaires;

~ Les données binaires vont être transférées et après récupérées par le programme

VHDL qui décrit l'architecture de l' opération;

~ Les résultats qu ' on obtient du programme VHDL vont être comparés à la [m avec

les résultats obtenus par l' exécution de la même opération en virgule fixe et

flottante; on essaye toujours de fixer l' erreur résultante d' un bit comme critère.

Les instructions utilisées pour le transfert entre les deux langages amSl que les

instructions qui font la conversion des données sont notées dans les Annexes.

3.4.5.1 Modélisation de l'additionneur à 16 BITS

a (15 :0)
....
Additionneur c (15 :0).....
,
b (15 :0)
....

Figure 3.8 Bloc d' addition.

La figure 3.8 représente l' architecture externe d' un additionneur sur une carte FPGA,


37

~ a et b sont deux entrées sur 16 bits;

~ c est une sortie sur 16 bits ;

~ Reset: mise à zéro (initialisation).

Pour prendre en compte la possibilité du débordement, on a mIS en œuvre un

algorithme de saturation comme montré sur la figure 3.9.

33
34 if C_MSim1 (15)=' l ' and A_MSim ( 15 )=' O' and B_MSim ( 15 )=' O' then
35 C MSim1 :=" 0111111111111111 " ;
36
37
38 elsif C MSiml (1 5)= 'O ' and A MSim (15 )=' l ' and B_MSim (15 )=' l ' then
39 C MSiml : =" 100000000000'0000 " ;
40 end if ;
41 end if ;

Figure 3.9 Prise en compte du débordement sur VHDL pour un additionneur.

Les résultats de simulation d' un additionneur à 16bits, à l' aide du Matlab et ModelSim,

sont présentés sur la figure 3.10.


38

Entrée N° 1 d'additionneuT 16 bits, Flottante vs Fixe Entrée N° 2 d'additionneuT 16 bits, Flottante vs Fixe
1.5
0 1 ~ Flottante -----@ Flottante
0 ~ Fixe ~ Fixe
1.5 ~----+---+-i'----i-----'=r~~==!j

0.5
00 0 n ,c--

l'
0

.
""
=
~ 0
~
00

00rf~ ~
~ ."
0

1
r "
~9
Il
v , 19
1, . ""
.~
ë.
0.5

E
«
-0.5
1 b

" ~
1
". <!
fi , E
« 0

~
-0.5
'"
-1 - -1
0

-1.5 ~

-1.5
o 20 40 60 80 100 0 20 40 60 80 100
Échantillons Échantillons
AdditionneuT 16 bits ~ Sortie ModelSim vs Sortie Matlab x 10.5 AdditionneuT 16 bits - Sortie MatJab - Sortie ModelSim
1 5
1 1 1 Il 1- C modelSim Matlab vii. MOINS ModelSim
0.8 1 1
1
1 l' '1 CMatiab
4.5 1- erreur de 1 bit
.~
0.6 1
1 1:
1 i Il!, ,: 11
1
0.4 3.5
1
1: ' , 1\1 1' ! i
1
~

""=
0.2
1 1 li Ii i 1 '"
! d 1 ,
i 0
1

E filj ! tl l '
1
,1
1

« -0.2 1 1 1 L
l, ' ' ,
1 I~, 1 'II 1 l"',1 ' l, , 1 ;i ;1 1\ i, V
1.5
-0.4 ,
1 , 'j, 11\/
Il,,, l'
"
, \1 il I!
: Il
1 1
-0.6 1
li
-0.8
1 1, '1 1 : l '! Il 1
1
1
0.5

-1
10 20 30 40
1

50 60
1
70 80
1
90 100 20 40 60 80
l
100
Échantillons Échantillons

Figure 3.10 Résultats d'un additionneur à 16 bits.

Sur les deux premières figures on présente les deux entrées d'additionneur, en virgule

fixe et flottante. La transformation des données en virgule fixe ne déforme pas ces données,

sauf les échantillons qui dépassent l'intervalle [-1, 1]. Les deux dernières figures présentent

une comparaison entre les sorties d'additionneur. Sur la dernière, on remarque que l'erreur

entre le modèle sous Matlab celui avec ModelSim n'atteint même pas l'erreur tolérée,

correspondant à un bit.
39

3.4.5.2 Modélisation du multiplieur à 8 BITS

Reset

v
d (7 :0)
,"
Multiplieur 1(15 :0) ,
e (7 :0) "
,"

Figure 3.11 Bloc de Multiplication.

La figure 3.11 représente l' architecture externe d'un multiplieur sur une carte FPGA, où

~ d et e sont deux entrées sur 8 bits;

~ f est une sortie sur 16 bits;


~ Reset : mise à zéro (initialisation).

Vu que les entrées d et e ( [-1, 1], la sortie f ne risque pas de déborder de cette

intervalle, donc il n' y a aucune utilité d' une prise en compte de débordement comme avec

l'additionneur et le soustracteur.

Les résultats obtenus sont représentés sur la figure 3.12.


40

Multiplieur 8 Bits - Sortie ModelSim et Matlab Multiplieur 8 Bits - Sortie Matlab - Sortie ModelSim

0.8
1
1
F modelSim
F Matlab
Matlab vf", MOINS ModelSim
erreur de 1 bit
Il
1

! 1
3
0.6

0.4
1\ ! ! il '.
2.5 -
1, ! 1 il 1
1: h 1\ l'"
...,~ 0.2 l'i .~ ~ 2
=
:: 0
Iv- /1 ~ 1 Il lin ; :, 1\
1/ Il lM .~
1Il V
Cl.
E
« -0.2
li v' V
\ If 1
II·';
VI
IV' vl
i 1/ \
1
V
\
1
IV \1 V\j
Q.
~ 1.5 1-
j
-0.4
1/
,
"li 1 ~l
1
-0.6 1 1
1
0.5
1 1
-0.8
1 1

-1 -.
10 20 30 40 50 60 70 80 90 100 20 40 60 80 100
Échantillons Échantillons

Figure 3.12 Résultats d'un multiplieur à 8 bits.

L'erreur entre la sortie Matlab et la sortie ModelSim est toujours inférieure à l'erreur

tolérée.

3.4.5.3 Modélisation du soustracteur à 16 BITS

Reset

\V
g(l5:0)
,"
i(l5:0)
Soustracteur ,......
h(l5:0)
",

Figure 3.13 Bloc de Soustraction.

Le figure 3.13 représente l'architecture externe d'un soustracteur sur une carte FPGA,

~ g et h sont deux entrées sur 16 bits;

~ i est une sortie sur 16 bits;


41

~ Reset : mise à zéro (initialisation).

Pour prendre en compte la possibilité du débordement on a mis en œuvre un algorithme

de saturation comme montré sur la figure 3.14.

37
38 if templ (15 )= ' O' and Sous l (15 )= ' l ' and Sou s2 (15 )= ' O' then
39 templ := "1000000000000000" ;
'40
41
'42 elsif templ (15 )= ' l ' and Sou s l (15 )= ' O' and Sou s2 (15 )= ' l ' then
'43 templ :=" 0111111111111111" ;
'4'4 end if ;

Figure 3.14 Prise en compte du débordement sur VHDL pour un soustracteur.

L'exécution des deux modèles, Matlab et ModelSim, donne les résultats montrés sur la

figure 3.15, où on peut remarquer que l'erreur entre les deux est touj ours moins que l' erreur

qu' on peut tolérer.

Sous tracteur 16 bits ~ Sortie ModelSim Vs Sortie Matlsb Soustracteur 16 bits, Sortie Matlab - Sortie ModelSim

0.8
il
II, 1
il 1 1- Erreur modelSim
Erreur Matlab 4.5 -
Mallab vfix MOINS ModelSim
erreur de 1 bit
1
0.6
1.1
Il
1
1
1 1: :, 1~ 1

0.4 I~I 1 i il l ,l, 1 l, ~ il:


I~ 1 1
3.5

Il' !II' Il
1

li
'\
1 il
....ë!.. 0.2
1 l ", I l ,1
1 ! 1\
1
...~ 3

'Ë. 0
1 1
~co. 2.5
e
..: -0.2 · Ii : il i 1 1. il' 1
e
..: 2

.~ '+ l-
1 1 I
11

~
1
-0.4 ~ 1
-I~: t ~ ~1ll
1 1.5

-0.6
1 h; 1
~.:ft Il t -!J-I
Il
~ 1 1 \~R
1 1 y"
i il ': , ~
II
-0.8 O.S

~
1 V 1
10
Il 20 30 40 SO 60 70
1
80
Il ' 90
1

100
0
0 20 40 60 80 100
Échantillons Éc hantillons

Figure 3.15 Résultats d' un soustracteur à 16 bits.


42

3.4.5.4 Modélisation du registre

Reset

'li
rjn(7 :0)
,"
roul7 :0)
Registre "

,
Clk
,"

Figure 3.16 Bloc de décalage.

La figure 3.16 représente l' architecture externe d' un registre à décalage sur une carte

FPGA, où

~ rin est une entrée 8 bits;

~ Clk est 1' horloge;

~ rout est une sortie 8 bits;

~ Reset : mise à zéro (initialisation)

Comme il est reconnu, un registre décale la transmission d' une donnée par une période

d' horloge. Donc ri" apparaît en sortie, rour, à chaque front montant de clk comme il est

représenté sur la figure 3.17.


43

Figure 3.17 Résultats d'un registre à 8 bits.

3.4.5.5 Modélisation du troncateur

Reset

\1

In (15 :O{ Ouf (7 :0)


Troncateur ...:.
",.

Figure 3.18 Bloc de troncation.

La figure 3.18 représente l'architecture externe d'un troncateur sur une carte FPGA, où

~ In est une entrée à 16 bits;

~ Out est une sortie à 8 bits.


44

Le troncateur a comme rôle de réduire la précision d'une donnée en coupant les NI2 bits

les moins significatifs.

Les résultats VHDL obtenus d' un toncateur 16bits-à-8bits sont représentés sur la figure

3.19.

Figure 3.19 Résultats d' un troncateur 16bits-à-8bits.

3.5 Conclusion

Dans ce chapitre, après avoir présenté un survol sur la technologie des FPGA, nous

nous sommes focalisés sur le côté algorithmique. La méthode de représentation numérique

choisie a été réalisée sur MA TLAB. Al ' aide de ce code, des données numériques ont été

fournies pour les modules de base afin de les valider. Les résultats présentés montrent une

précision moins que l' erreur qui correspond à un seul bit. Cela va nous permettre d' éviter

que l'erreur s' accumule après l' assemblage des modules pour concevoir le module global

de contrôle.
45

Chapitre 4 - Systèmes d'entrainement


électromécaniq ne

4.1 Introduction

Les systèmes d' entrainement électromécanique reçoivent une croissance d' intérêt par

la plupart des applications, que ce soit domestiques ou industrielles [4.1]. Ces applications

ont chacune des exigences particulières de vitesse, de couple ou même de qualité d' énergie.

Pour faire face à ces exigences, une grande variété de solutions a été proposée pour faire

face à ces exigences [4.2]. La croissance du marché des systèmes d' entrainement

électromécanique est illustrée dans l'histogramme de la figure 4.1 [4.3].

7000 ,----------------------------------------

6000 +----------------------------------------

5000 +----------------------

4000

3000

2000

1000

o
2003 2004 2005 2006 2007 2008

Figure 4.1 Croissance du marché des systèmes d'entrainement électromécanique


(Million $/ Année) [4.3].

Un dispositif d' entrainement électromécanique, comme représenté sur la figure 4.2,

permet d' entrainer et de contrôler une charge mécanique ou même un procédé mécanique
46

en transformant l' énergie électrique en une énergie mécanique le plus efficacement possible

[4.4].

Source
continue

Contrôleur PWM I---~ Onduleur

Couple
&
Vitesse
Signaux de mesure

Figure 4.2 Dispositif d' entrainement électromécanique typique.

4.2 Machines Synchrones à Aimant Permanent (MSAP)

Tout comme la machine à induction, la machine synchrone a un stator avec

enroulements triphasés mais l'enroulement du rotor est remplacé par un aimant permanent.

Donc, les équations électriques peuvent être déduites de la même façon que la machine à

induction à partir du schéma qui représente les enroulements statoriques et rotoriques.


47

4.2.1 Équations générales de la machine synchrone à aimant permanent

a a

Stator Rotor

Figure 4.3 Représentation de la machine synchrone à aimant permanent.

A partir de la figure 4.3, qui représente le schéma symbolique des enroulements d' une

machine synchrone triphasée à aimants permanents, on écrit les équations en notation

matricielle qui représentent ces circuits:

[Vs ] = [Rs ] [I.S]+ dfjJs (4.1)


dt

(4.2)

où : À est le flux magnétique permanent

[Ls] = [Lss] + [Lm] : Matrice d'inductance du stator

T
Vc ] : Vecteur de tension statorique

: Vecteur de courant statorique

T
fjJb fjJc ] : Vecteur de flux statorique
48

o
~ : Matrice résistance du stator
o

(4.3)

cos2(8 _ arr)
47r
cos 2(8 - - )
3 cos 2(e-7)1
cos(2e) (4.4)
3
arr
cos(2e) cos2(e--)
3

(4.5)

X représente soit un courant, une tension ou un flux,

e représente la position du rotor.


Les termes X d, X q représentent les composantes longitudinale et transversale,

respectivement du vecteur X.

Pour simplifier la représentation du modèle mathématique de la MSAP, on doit passer

du repère triphasé au repère biphasé en appliquant la transformée de Park.

arr

~1
cos(e) cos(e --) cos(8 - - )

-51n<; -7)
3
a -sine 8 _ arr)
[Tg] =- -sin(8) 3
(4.6)
3
1
-1 -
a 2
49

Après l' application de (4.6) qui représente la transformée de Park dans un repère lié au

rotor, on obtient un système d' équations plus simple pour modéliser une MSAP.

id R Ld iq R Lq

wJ..d

Figure 4.4 Circuit équivalent de la MSAP.

(4.7)

(4.8)

(4.9)

~w = ~(T -T - T ) (4.1 0)
dt J f L

Vd, Vq Tensions dans le repère d-q

id, iq Courants dans le repère d-q

Ld, Lq Inductances dans le repère d-q

R Résistance statorique

p Nombre de paires de pôles


50

À Flux de l' aimant permanent

Ad, Aq Flux dans le repère d-q

T Couple électromagnétique

(j) Vitesse mécanique du rotor

J Inertie

Tf Couple de frottement

TL Couple de charge.

4.3 Onduleur triphasé à deux niveaux

Pour les applications d' entrainement électrique, les onduleurs de source de tension sont

les plus utilisés. Il existe plusieurs topologies d' onduleur triphasé dans la littérature.

Chacune de ces topologies répond aux critères et aux exigences de certaines applications

comme: complexité, puissance et qualité de l'onde. Cependant, avec l'apparition des

méthodes de modulation vectorielle, l' obtention d'une source de tension alternative

puissante avec un taux d'harmonique faible, à l'aide d' un onduleur à deux niveaux, est

devenu possible.

4.3.1 Topologie d'un onduleur triphasé à deux niveaux

Le schéma structurel d'un onduleur triphasé à deux niveaux et de sa charge est illustré

par la Figure 4.5 Chaque groupe transistor-diode assemblé en parallèle forme un

interrupteur bi-commandable.
51

Figure 4.5 Onduleur triphasé à deux niveaux.

Les trois tensions d' alimentation Va, Vb et Vc sont représentées dans le plan

complexe, par un seul vecteur d' espaces V; défini par la relation (4.11) [4.5] :

V;( t) = ~(t)e jO + Vb(t)e j 2.rr/ 3 + ~(t)e j4rr/ 3 (4.11 )

---,t
Le vecteur tension ~ est délivré par un onduleur de tension triphasé, dont l' état des

interrupteurs, supposés parfaits, est représenté en théorie par trois grandeurs booléennes de

commande.

Sa = 1 : Interrupteur haut est fermé et celui en bas est ouvert.

Sa = 0 : Interrupteur haut est ouvert et celui en bas est fermé.

À partir de la combinaison des 3 grandeurs (Sa, Sb et Sc), le vecteur de tension V; peut se

retrouver dans huit positions fixes correspondant aux huit configurations possibles des
52

interrupteurs [4.6]. Ces huit états du vecteur d'espace définissent les limites de 6 secteurs

dans le plan complexe. Deux des huit états sont des vecteurs nuls : V; et V; [4.7,4.6].

Tableau 4-1 Vecteurs de tensions pour chaque combinaison possible des


interrupteurs.

Sa Sb Sc Va Vp

--+ 0 0 0 0 0
Vo

--+ 1 0 0 2V dJ 3 0
Vi

--+ 1 1 0 Vdc/3
V2 VtJc /..J3

--+ 0 1 0 - Vd J 3
Y3 VtJc /..[3

---'i 0 1 1 -2 Vd J3 0
V..

--+ 0 0 1 - Vdc/3
Vs -vdc/".f3
--+ 1 0 1 Vdc /3
V6 -Vdc /".f3
--+ 1 1 1 0 0
V7

4.3.2 Technique SVPWM

La technique de modulation vectorielle (SVPWM) consiste à reconstituer le vecteur

tension de référence pendant une période d'échantillonnage Ts par les vecteurs tensions

adjacents correspondant aux huit états possibles de l'onduleur.


53

On se place par exemple dans le cas où le vecteur de référence est situé dans le secteur 1

(Figure 4.6). Dans ce cas, la tension de référence 11.: est reconstituée en faisant une moyenne

temporelle des tensions V; et V;.

ïï;lIE----- --*--41---='~
v; a

Figure 4.6 Vecteurs d' espace de tension.

Après, il suffit de déterminer la position du vecteur de référence 11.: dans le repère (a,p)

et le secteur i dans lequel il se trouve. Pour une fréquence de commutation l /Ts

suffisamment élevée, le vecteur d'espace de référence est considéré constant pendant un

cycle de commutation [4.8,4.9].

(4.12)

avec:
54

t 1 : Temps d' application du vecteur v:


ta: Temps d'application du vecteur V;

Ts : Période de commutation de l' onduleur.

Dans le cas où (t}+t2 < Ts), on doit compléter par les vecteurs nuls (V; et V;).

Alors:

(4.13)

to: Temps d' application des deux vecteurs nuls V; et v.;.

Après décomposition sur les deux axes du plan complexe (a,p) [4.10]:

. _ .T sm
T1 = -,f3"Ys
Vere s
. - - (fr
3
qJ ) (4.14)

(4.15)

(4.16)
55

-
q> : est l' angle entre les vecteurs V1 et ~
~.

Les mêmes règles s' appliquent pour les secteurs 2 jusqu' à 6.

L' équilibrage des commandes nous permet de réduire au mlmmum les pertes par

commutations et de diminuer le taux d'harmonique; ce sont encore d' autres avantages de la

MU vectorielle.

Afin de diminuer le taux d'harmonique, il faut respecter les deux conditions suivantes:

- Tous les interrupteurs de chaque demi-bras doivent avoir le même état au milieu

et aux extrémités de la période.

- Les impulsions de commande des interrupteurs sont centrées au milieu de la

période de commutation [4.1:.],

Sur la Figure 4.7 on présente la combinaison lorsque le vecteur est situé dans le secteur 1

délimité par V; et V;.

Vo V1 V2 V7 V7 V2 V1 Vo
1
SA 1
i
1
Sb :
1
1
Sc 1
1 1 1 1 1 1 1
1 to/4 ~/2 1 to/4 1 to/41 ~/2 1 t,./2 1 to/41
'(
t,./2
, , , , ) 1
Ts

Figure 4.7 Forme des Signaux PWM dans le secteur I.


56

Le secteur est généralement déterminé par l' angle a où a = tan -1 (~). Dans ce travail

le secteur est déterminé par une méthode simple basée sur les tensions Va, Vp . La

détermination est faite comme dans le tableau 4.2, où Ao est le signe de Vp , Al égale à 1 si

Vp >.f3 Va sinon égale à 0, et Az égale à 1 si Vp > -...[3 ~ sinon égale à O.

Tableau 4-2 Détection du secteur.

Ao Al A2 Secteur

0 0 0 5

0 0 1 6

0 1 0 4

1 0 1 1

1 1 0 3

1 1 1 2

4.3.3 Simulation et discussion

L'onduleur a été modélisé à l'aide de Simulink™ / Matlab® utilisant la structure


représentée sur la figure 4.8.

L'algorithme de SVPWM a été décrit en VHDL et synthétisé avec le logiciel Xilinx ISE

Design (Suite 13,4) (figures 4.9 et 4.1 0). Le modèle VHDL a été évalué en cosimulation

avec ModelSim et Simulink™ / Matlab®. ModelSim exécute tous les calculs de la


57

SVPWM avec une précision de mot égale à 8 bits, de la génération du vecteur de tension de

référence à la transformation de Concordia, la détection du secteur, calcul des temps de

commutation, jusqu'à la génération des signaux de commutation.

V~2~
VdCT

t. ~
~~"~ < .

~ ~
Vd&
+
~ ~~
Figure 4.8 RTL Schéma fonctionnel de l' onduleur sur Simulink.

--- ~ ~ Sj

S1 2

52
-
S3

Vc
.... .....
PWM

Figure 4.9 Entrées/sorties du circuit SVPWM réalisé sur une FPGA


(CLK_PWM=Ts).
58

ClockPWM

Va (7: q1... Va (7 'O) ,, TJ(7:0)


....
TO.\7(7:0)
....
l
, Time Time PWM
T2(7: 0) ~ 0.\7(7: 0/..
Vb(7:0J...
,
a,b,c/aJ3 VfJ(7. 0) ,, duration duration
0.\~(7· ~
wavefonns
to apply T3(7: 0< to open
Vc(7:0J, ... , generation
, vectors switches
,[\ 1[\ 1[\ ,[\

0(7:0) 1[\
Secfor(3:0)
Sector
-

Resef i
Figure 4.10 Schéma du circuit SVPWM réalisé sur FPGA.

Voltage Output of Inverter Phase A

-400 1 - - - - - l - - + - - I - - _ + _ -

-6000'---O--'
.0'--
02-0--'
. 0~04-0-'
.00
-6-0 .....l
00- 8- 0...L
.0-1 - 0 ....L
OI-2- 0- .0.L1-4 - 0-.0.Lt-'
6
Timelsl

Figure 4.11 Tension de sortie Phase A.


59

~ °:1
U 4.9
1
5. 1
1
52
1
53
1
54 5.5
1

x 10'"

~ 0:[:
4."
~51
[
52
FR
5.3
[
54
n
x 10-3
5.5

~ 0:[.
4."
EB 5 5.1
[
5.2
1
5.3
a 5.4
.1
.
55
1

"0
~ °:1
~
1
1
1
[
1 1

1 [: 1 1
1
1
1 :
4." 5 5. 1 52 53 54 55
Time Imsl x 10"

Figure 4.12 Signaux PWM pour trois périodes Ts.

FFTanalysis- -- -- - - - - - - - - -

Fundamental (60Hz) = 2t9.8 . lriD= t29.65%

100

S 60
\;
E
~

§ 60
u.
'0
t 40

20

o 100 200 300 400 500 600


l 700 800 900 1000
Frequency (Hz)

Figure 4.13 Représentation des harmoniques d' une phase.

Tableau 4-3 Résumé de l'utilisation des ressources pour l'implémentation de la


SVPWM.

Spartan III
Utilisé Disponible Utilisation
Number of slices 358 23872 1.5%
Number of slices Flip Flops 110 47744 0.2%
Number of input LUTs 666 47744 1.4%
Number ofbonded lOBs 32 469 6.8%
Number GCLKs 2 24 8.3%
Number DSP 48s 11 126 8.7%
60

La figure 4.11 montre la forme d'onde de tension (phase A) à la sortie de l'onduleur

(avec une charge résistive) et le signal de référence de 60 Hz envoyé au modèle VHDL.

Les signaux de commande sont représentés sur la figure 4.12 sur laquelle on peut

constater que les contraintes de forme d'onde définies sur la figure 4.7 sont respectées. Du

coup, on peut remarquer sur la figure 4.13 le spectre d' harmonique de la sortie qui est

excellent: l'amplitude de la fréquence fondamentale est égale à 219 .8V, une erreur de 0.1 %

par rapport au signal de référence 220V, ce qui est acceptable étant donné que la commande

serait en boucle fermée, donc elle ne sera pas affectée par une telle petite erreur de 0,1%.

Le spectre harmonique n' a pas été affecté par la précision des données.

4.4 Approximation de la SVPWM

La SVPWM est l'algorithme le plus sophistiqué et le plus approprié pour les lois de

contrôle à haute performance, en raison de sa capacité à générer une tension alternative

avec amplitude variable pour le même bus à courant continu [4.11] et pour sa capacité à

minimiser les harmoniques et les pertes aux niveaux des commutateurs [4.12]. Cependant,

cet algorithme nécessite classiquement des transformations linéaires et un grand nombre

d'équations ayant des fonctions trigonométriques, ce qui augmente le coût et le temps de

calcul algorithmique. Du coup la majorité des ressources de calcul, sur une carte, est

utilisée pour générer les signaux PWM, laissant moins de ressources pour les boucles de

commande.

Vu que les critères de performance des contrôleurs deviennent plus strictes, les

algorithmes de contrôle sont devenus complexes et en général ils ne sont pas adaptés à la

mise en œuvre directe, ainsi ils ont besoin d'être retravaillés [4.13]. La mise en œuvre des
61

boucles de régulation et du générateur PWM consomme plus de ressources et nécessite une

vitesse d' exécution élevée pour exécuter les fonctions complexes en particulier celles de la

SVPWM [4.14]. Il existe plusieurs approches qui intègrent plus qu'une carte pour mettre en

œuvre une loi de contrôle. De l' autre côté, il y a plusieurs chercheurs qui ont opté pour la

simplification des algorithmes.

Dans [4.15], les auteurs proposent une comparaison entre la performance de la mise en

œuvre des techniques SVPWM et SPWM (sinusoïdales) pour trouver un compromis entre

la qualité du signal et la simplicité de l'algorithme. Dans [4.16], les auteurs ont proposé une

solution à la complexité de la technique SVPWM en utilisant un réseau neuronal artificiel

(RNA). Cependant, la conception d'un RNA est un processus itératif, et elle est fondée sur

l'application des non-linéarités et d'un grand nombre d'opérations, qui peuvent toutefois être

évaluées en parallèle.

La mise en œuvre d'un nouveau schéma approximatif de technique de SVPWM est

proposée pour commander un onduleur à deux niveaux triphasé. Les résultats de simulation

montreront que cette approximation conserve les avantages de la technique SVPWM, à

savoir de minimiser la distorsion harmonique et les pertes de commutation. La synthèse, en

utilisant Xilinx ISE, sera présentée et comparée aux résultats obtenus dans la section

précédente. Cette nouvelle application permettra de réduire considérablement les ressources

consommées.

4.4.1 Algorithme de l 'approximation

L'algorithme de SVPWM procède à calculer le temps d'ouverture et de fermeture des

commutateurs de puissance à partir des tensions de référence. La durée du temps de


62

conduction des commutateurs dépend de l'amplitude de la tension de référence et de la

tension Vdc , et la fréquence de variation dépend de la fréquence de référence.

Pour ce travail, nous avons développé des relations polynomiales directes entre chaque

tension de référence et la période de temps de conduction dans les bras du convertisseur.

Pour approcher l'algorithme de SVPWM présenté dans la section précédente, nous

avons suivi la méthodologie montrée sur la figure 4.14. En utilisant le modèle Simulink™ /

Matlab® développé dans la section précédente, nous générons les temps de commutation

pour plusieurs valeurs d'amplitude de référence.

Mode!
TOila
SVPWM
SVPWM approximation
V. TOllb
mode! on TOile mode! on
_~ SimulinkTM/ Simulink™/
Vb ..
_-...~ Matlab e :}lm~~-" Matlab e & VHDL

Figure 4.14 Méthodologie utilisée pour identifier le modèle approximatif.

Les paires de données (Va, Tona), (Vb, Tonb) et (vc, Tonc) sont stockées dans le logiciel de

conception-Expert®. Des fonctions d'optimisation développées par Design-Expert® à partir

des données fournies, sont utilisées pour obtenir un modèle qui se rapproche de la relation

entre le signal de référence et la durée du temps de conduction. Ce modèle est représenté

par un polynôme du premier ordre pour chaque phase:

TOna,b,c = A *V~b,c + B (4.17)


63

où B est une constante qui est la même pour les trois phases et A est une constante dans le

cas où Vdc est constante. Cependant, en faisant varier la tension du bus cc, qui est bien

représentatif de la pratique, nous constatons que le contenu harmonique dans la sortie du

convertisseur varie également. Du coup, nous avons fait varier la tension Vdc de 400 V à

1200 V, tout en ajustant le coefficient A afin d'avoir le taux d'harmonique le plus bas

possible. Les valeurs (Vdc, A) trouvées sont présentées dans la figure 4.15.

A(Vdc) Interpolation
2.6
- A(Vdc)
2.4 Quadratic Interpolation

2.2 \ Cubic Interpolation

rl
=
2 r-\
;;;
>
ë
1.8 r-- 1" ' ",,-
~ 1.6 r - '
o
U 1.4 f-
~
1.2 r- ""'"
.............
r-- ---.........
~
0.8 ' - - -
400 500 600 700 800 900 1000
r-----
1100 1200
Vdc Values

Figure 4.15 Relation entre le coefficient A et la tension Vdc.

Selon les résultats obtenus par Design-Expert®, la fonction A (Vdc) la plus appropriée

est un polynôme d'ordre 3 de la forme:

A = a * Vdc 3 + b * Vdc 2 + c * V dc + d (4.18)

4.4.2 Simulations et résultats

L'algorithme d'approximation de SVPWM et l'onduleur ont été modélisés en utilisant

Simulink™ / Matlab®.

Dans un premier temps, le modèle proposé est utilisé pour la génération d'un système

de tensions triphasées équilibrées. La tension de référence imposée à l'entrée du modèle


64

approximatif est la même qui a été imposée dans la section précédente: l' amplitude est

égale à 220 volts, et la fréquence est de 60 Hz. Sur la figure 4.16, on observe que la tension

de sortie de l'onduleur (avec une charge résistive), qui a été contrôlée par le modèle

approximatif Simulink™ / Matlab®, est en phase avec la tension de référence. La figure

4.17 montre le spectre de la sortie de tension de l'onduleur. Dans le premier test,

l'amplitude de la fréquence fondamentale est égale à 219.2V, une erreur par rapport au

signal de référence 220V de 0,4%. En comparant cette erreur à l'erreur obtenue dans la

section précédente, qui est égale à 0,1%, on constate que, compte tenu de la simplicité de

cette approximation, cette erreur est acceptable étant donné que la commande est en boucle

fermée, donc elle ne sera pas affectée par une telle petite erreur.

Vo ltage Output of Inverter Phase A


, -~-~

0 .002 0 .004 0.006 0.008 0.01 0.012 0.014 0.016


Timels]

Figure 4.16 Tension de sortie Phase A.


65

FFT .n.lySls- - ----=


Fuo
--:-
da-m-en--,--
ta-o-
) (""'
60=HzC7)-==21C7
9.-2=-- - - - -

100 f

~80
CIl

.e
'0
c 60
=
...'"..'
....
Ë40

~20

o0
l
500 1000 F 1500 (Hz) 2000 2500 3000
requency

Figure 4.17 Représentation des harmoniques

::;: 1

~ °:1
u 4.9
1
5.1 5.2 53
1
SA 5.5
x 10'"
1

=
<JJ
0.5
1

x 10"

~ 0:[.
' .9
œ 5
1
51 5.2 53 5.'
x 10-3
.1
5.5

~ °:1 3
1
1 1
1
1 i
: 1 1 : [ : 1
1
' .9 5 51 5.2 5.3 5.4 5.5
Time )ms) )( 10"

Figure 4.18 Signaux PWM pour trois périodes Ts.

Les signaux de commande sont indiqués sur la figure 4.18, ce qui démontre que les

contraintes de forme d'onde définies sur la figure 4.7 sont respectées par l' approximation.

Le deuxième test vérifie la capacité du nouveau modèle à générer un système de tensions

asymétrique. Pour cela, nous avons imposé un système de tensions déséquilibrées comme

ondes de référence.

Va = 220*0.8 * sin (2*7[*60)

Vb = 220 * sin (2*7[*60 - 0.9465*2* 7[/3)

Vc = 220 * sin (2*7[*60 + 0.9465*2* m3)


66

La figure 4.19 montre que, même dans le cas d' un système déséquilibré, les sorties de

l'onduleur sont synchronisées avec la tension de référence, et l'erreur est égale à 0,5% par

rapport au 0,8 * 220V.

Pour tester l'adaptabilité du modèle proposé avec les lois de contrôle, nous avons

remplacé le bloc SVPWM dans le travail [4.17] avec le modèle approximatif. Les résultats

obtenus montrent que l'approximation est efficace et précise, même dans un état transitoire

(Figure 4.20).
67

500 ----rc="'-"'r""=r"-'--''''-'-'T~==:.2====g- FFT 'naI Y,i·- - - - -------.F,-


u-DdT a--m---
e D7:
IJ!'I"(6"'O"H"z):-=- t","'S= - - - - -

..
H 0
"0
;>-100 HIfl*ff-t- - + - - t -1H

-3001---+--+---!-

---- __..J.
-4001---+--+--+-- -+--r~;rrM~~rlr~~-~

.-"--_.~----
o0 500 1000 1500 2000 2500 3000
Frequency (Hz)
fr====~=~~="-l~="i'''-'~T=---r-rIFFT 'n'IY·"- - - - -""'F,-
un- d-:-a-me
- n-'ta
:--:I-;(6."O
'"Hz
-:--:-)-- -::2C7t-=-9.-=2- - - - - - -

n,
1
+ 1
1
-

200 u. -

..i 00
~1

0
I---t---++~

"0
;>-100
-200
-300 o. - - f--
1

0 1
o 500 1000 Frequ~~g~ (Hz) 2000 2500 3000
500 r-----.----r==-r-:=::..:....:;..:-:=~:..:....:'-=:.:;.::.-=--.,-----,-., FFT'n'ly.i' ------=F:-u-
Dd..,.a-me
-D-ta-:I-:(.6.,.O:"":H=
z)-=-:2'"'t-:-9-:
.2-------

400 ~~~--t---+--+--~--- ~-H~~~~Ht 100 ~-----+

300 ~~~---~--+--~i---+---~~~

80 R+----~-----+----~------~----+-----~

..
~I OO ~~flW*"~H---+--~i---++H&HMf.riT+H*H~~~,~

J;O l'-""l.IUil.I.JtW-w.!
'0
;>-IOOI - - --f!IHf-lm

-200 1----lilHf'tm
-300 i---t----t+Ht

-5000~-O:-.L
O O-:2--:-
0~.0~
04==~--:-
0.~0~
08==0.L
O-I -~==-L-=~ o0 500 1000 1500 2000 2500 3000
Time Isl FrequeDcy (Hz)

Figure 4.19 Tensions triphasées pour un système déséquilibré.


68

Velocities Velocity Error


200 0.02 - ----,
Reference Velocit~ [
180
/" 1\ 1 Measured Velocity 0.015
,~

~\
160

140
/
/
.1
\
0.01

0.005 ~
~r-
-l 1

~120 \
~
~
èlOO
/ -
Q.

EË. -0.005 ~

! \ ~

o
~ 80 ] -0.01 /
60 1 \ -0.015 - / -
40
! \ -0.02
/
20 \ -0.025

~ ~- 1
4
Tinte Isl TirJe Is)

30
Va - la
Yb lb
Ve Je

- 20 f---~lIl'tjl-l!~Il-IIH!loHIIlI-IHlH-tItl~--+---+----I

-250 -'-_ _-'--_ _- L - _ - - ' -30 ' - - - - - - ' -


o 34560
Time Isi

Figure 4.20 Simulation de l'approximation avec une loi de commande.

4.4.3 Implémentation

Le polynôme (4.18) peut être mis en œuvre d'une manière plus optimale à l'aide de

l'équation suivante:

A = ((a * Vdc + b) * Vdc + c) * Vdc + d (4.19)

Pour calculer les six périodes de commutation on applique la relation (4.17) trois fois

et (4.19) une fois donc au total cette approximation peut consommer six multiplicateurs et

six additionneurs. Si nous analysons le schéma proposé dans [4.16], nous trouvons que

cette approche consomme beaucoup plus, parce que la structure du réseau de neurones

utilisé se compose de 20 neurones cachés, ce qui implique l' utilisation d'au moins 20
69

multiplicateurs et 20 additionneurs, sans tenir compte de la consommation de l'algorithme

d'apprentissage. Pour sa part, l'auteur de [4.18] a réussi à simplifier l'algorithme classique

de SVPWM en éliminant les calculs d' un bras d' onduleur, mais à partir du tableau 3 de

[4.18] , qui résume quelques calculs à faire pour calculer les durées de commutation. Nous

pouvons voir, dans cette partie seulement, l' utilisation de trois additionneurs et dix

multiplicateurs.

J ,...... 1 third arder


polynomial (19)

,', ......
,
A(7:0)
1 TON.(7:0) ......
, S11
V a (7:0 3 fust order
Vb(7:0,\
( TOJl<. (7:0) ...... Su
polynomials PWM
Vc(7:0 \ ,~ TONc(7:0) -:: waveforms
, Sn
(17)
1 , generation Sn
S31

S32

Resel A pproximateMode1 l' I~

ClkAD DToxbnoteModel

Figure 4.21 Schéma du circuit du modèle approximatif réalisé sur FPGA.

':01
,. .....
511

-01 51 2

VcfT.':01 521

VdcfT.':01 5 22

el 531

el 532

.... ....
ApproximateModel

Figure 4.22 Entrées/sorties du circuit SVPWM réalisé sur FPGA


(CLK_ ApproximationModel=Ts).

L'algorithme du modèle approximatif a été décrit en VHDL et synthétisé avec le

logiciel Xilinx ISE Design (Suite 13,4) (figures 4.21 et 4.22). La méthodologie de
70

simulation et de vérification utilisée est la même que dans la section précédente. Afin

d'établir une comparaison raisonnable entre le modèle SVPWM et l' approximation de la

SVPWM, les deux modèles ont été mis en œuvre avec une longueur de mot égale à 8 bits.

L'onduleur est modélisé avec Simulink™ / Matlab® en utilisant la structure représentée sur

la figure 4.8. Le signal de référence désiré est le même que dans la section précédente, avec

une amplitude égale à 220 volts et une fréquence de 60 Hz.

Vo ltage Output of Inverter Phase A


600

400

200
~...., 0
~
0
;>
-200

-400 f-___+--+-_+--j--Itttt

-600 '----'_---'-_-----L_----'---_---'---_-L-_L-------''-'
o 0.002 0.004 0.006 0 .008 0.01 0.012 0.014 0.016
Timels)

Figure 4.23 Tension de sortie Phase A.

- FfTlnalysis- - - - - - - - - - - - - - - -
Fl.I"Idamental (60Hz) '" 219.1 , THO- 108 7O"Ao
110 r-r--,-~--.-----',,.....:...__r_-.__...... -.,____r___,
,OO ~_ _+____+-4__4-_t_-~_+-+__+~

1 ro ~__+____+-4__4-_t_-~_+-+__+~

~ 00
.. 5OH __+____+-4__4-_t_-~_+-+__+~
l!-
l ~ ~-.+-___+-4-~-~-r__r-+__+~

,O ~_ _+____+-4__4-_t_-~_+-+__+~

- = = ~ =
Frequency (Hl )
~ = ~ = =

Figure 4.24 Représentation des harmoniques d' une phase.


71

~ °:1
U 4.9
1
51
1
5.2
i
5.3
1
5.4
x 10~
5.5

~ °:8
4.9
FR
5.1
[
5.2
f=F
5.3
!
5.4
n
x 10-5
5.5

~ 0:[ Et ! 1
[ 1
[
4.9 5 5.1 5.2 5.3 5.4 5.5
x 10.3

~ °:1 : [ i !~
i
1 , 1
,
1
,1 [ 1
1
1

4.B 5 5.1 5.2 5.3 5A 5.5


Time Imsl x 10-3

Figure 4.25 Signaux PWM pour trois périodes Ts.

Sur les figures 4.23 et 4.24, on observe que la tension de sortie de l'onduleur (avec une

charge résistive), qui a été contrôlée par le modèle VHDL approximatif, est en phase avec

la tension de référence avec un taux d' harmonique toujours petit.

En outre, l' approximation proposée conserve les avantages de la méthode traditionnelle.

En termes de mise en œuvre, elle est plus efficace car elle consiste à mettre en œuvre un

polynôme de troisième ordre et trois polynômes de premier ordre, qui ont les mêmes

coefficients. En outre, le calcul du coefficient A peut être effectué à une vitesse inférieure

aux premiers polynômes de premier ordre, dans le cas où la tension de bus est bien filtrée .

Après la synthèse nous avons obtenu le tableau 4.4 qui résume les ressources requises

par les deux modèles (SVPWM et l' approximation proposée) sur une plateforme Spartan3 .

L' approximation proposée utilise moins de 30% (96Slice / 358Slices) de l'espace

consommé par la SVPWM. Des gains importants sont également observés pour les autres

unités de la Spartan III, sauf pour lOBs.


72

Tableau 4-4 Résumé de l' utilisation des ressources pour l'implémentation de


l' approximation de la SVPWM.

Spartan III xc3sd3400a-5fg676


SVPWM Approximation Disponible
Number of 358 96 23872
slices
Number of 110 77 47744
slices Flip Flops
Number of 666 161 47744
input LUTs
Number of 32 40 469
bonded lOBs
Number 2 2 24
GCLKs
NumberDSP 11 8 126
48s

4.5 Conclusion

Une nouvelle technique pour générer le signal MU pour contrôler les onduleurs a été

implémentée en utilisant VHDL et a été validée à l'aide de cosimulations entre ModelSim

et Simulink™ / Matlab®. Cette technique, par ses faibles taux d' harmonique et pertes de

commutation d'une part, et sa simplicité d'autre part, peut remplacer le SVPWM dans les

applications où les ressources d' intégration sont très limitées. Les résultats de synthèse

montrent que la nouvelle technique consomme peu de ressources lors de la mise en œuvre

en laissant suffisamment de ressources pour la mise en œuvre des boucles de régulation.


73

Chapitre 5 - Réalisation d'une bibliothèque de lois de


commande adaptative pour MSAP

5.1 Introduction

La principale contribution de ce travail est la conception de trois schémas de circuit sur

FPGA pour trois lois de commande adaptative d' une machine synchrone à aimants

permanents à base de logique floue . Les performances des trois lois, en termes de précision

et de fiabilité , en particulier face aux incertitudes internes, ont été validées dans des travaux

antérieurs [5.1 , 5.2, 5.3]. Dans ce travail, nous comparons les trois lois de commande en

termes d'intégration VLS] tout en tenant compte de la performance et de la fiabilité. Tous

les schémas proposés, grâce aux simplifications qui ont été appliquées aux algorithmes de

ces lois, permettent à la fois l' implémentation de la loi de commande, en conservant leurs

bonnes performances, et la mise en œuvre de générateur de PWM sur la même carte,

laissant libres les ressources suffisantes pour mettre en œuvre des fonctions

supplémentaires. Dans les trois lois de commande, la SVPWM a été implémentée par

l'approximation proposée dans le chapitre précédant. Le premier schéma proposé dans [5.1]

sera très utile pour le prototypage rapide des deux autres lois de contrôle qui sont des

dérivées de cette loi de contrôle à base de logique floue adaptative. Pour cette raison, la

première et la plus grande partie de ce chapitre sera consacrée pour l' implémentation de

cette loi. Ensuite, dans les deuxième et troisième parties, on présente les résultats

d'implémentation des deuxième et troisième lois de contrôle. Et en conclusion on finira par

une comparaison entre les résultats des trois schémas obtenus et on en tirera un compromis

pour le schéma le plus efficace en termes d'intégration et de précision.


74

5.2 1ere Loi implémentée: Adaptive Fuzzy Logic Control of Permanent

Magnet Synchronous Machines with Nonlinear Friction

La stratégie de contrôle à implémenter (Figure 5.1) a été proposée dans [5.1] pour

contrôler une MSAP avec un minimum d'informations sur la machine, tout en garantissant

la stabilité en présence d' incertitudes internes et externes.

Les variables nécessaires à la commande de vitesse sont les suivantes: la vitesse de

référence, la vitesse mesurée et la position du rotor de la MSAP. Les entrées du contrôleur

adaptatif à base de logique floue sont l'erreur de vitesse e w = 0/ - mm et la variation de

l' erreur ëw = ew (k)- ew (k-l). La sortie du régulateur est la tension en quadrature désirée Vq*.

La sortie du modèle de référence (dynamique d'erreur du premier ordre) est utilisée pour

l'adaptation de la logique floue. La référence de la composante directe de tension V; = 0

est maintenue constante à zéro. La transformation de PARK nous permet de passer du

référentiel fixe d-q au référentiel rotatif a-fJ. La SVPWM génère les six signaux de

commande pour l'onduleur de tension à partir des signaux de références V: et V;.


75

V d = O--.t p
SVPWM INVERTER

6
V·q
: (J
ô) iSw
Reference
Model

Figure 5.1 Structure de contrôle.

5.2.1 Configuration du contrôleur flou adaptatif

Un contrôleur à logique floue classique se compose de quatre parties, la fuzzification, la

base de règles, le moteur d'inférence et la défuzzification. En plus de ces étapes, un

contrôleur à logique floue adaptatif comprend un mécanisme d'adaptation.

5.2.1.1 Fuzzification

Afin d' implémenter une structure parallèle, les univers de discours des deux variables

ew et e~ sont distribués de la même manière et ont les mêmes fonctions d'appartenance.

Les univers de discours sont limités entre -1 et 1, et sont répartis sur cinq fonctions : BN

(Big Negative), SN (Small Negative), Z (Zero), SP (Small Positive), BP (Big Positive)

(Figure 5.2).

NB NS z PS PB

0 .5

-0.01 -0.005 0 0.005


76

NB NS Z PS PB

-0 .01 -0.005 0 0.005 0.01

Figure 5.2 Fonctions d' appartenance.

5.2.1.2 Base de règles floues

Cette étape définit la sortie floue pour chaque combinaison d'entrées floues . Ces règles

sont souvent fixées en fonction du comportement du contrôleur et du système [5.5]. Pour

chaque variable d'entrée on a considéré cinq fonctions d'appartenance, ce qui donne un

ensemble de règles de 5x5 . Le tableau 5.1 présente les règles utilisées dans ce travail.

Tableau 5-1 Table des règles d' inférence.

ew

NL NS Z PS PL
NL Z PL PL PL PL
NS NL Z PS PS PL

ew Z NL NS Z PS PL

PS NL NS NS Z PL
PL NL NL NL NL Z

5.2.1.3 Moteur d'inférence

Le moteur d'inférence est l'élément clé de l'algorithme de la logique floue . Le

mécanisme d'inférence, proposé par Mamdani, utilise les opérateurs de base minimum et
77

maximum [5 .6]. La méthode MAX-MIN teste les grandeurs de chaque règle et sélectionne

les plus élevées [5.1].

flB' (y) = ll xEx luAx (X)ITflR' (x, y) J (5.1 )

5.2.1.4 Défuzzification

La défuzzification est la dernière étape d'un contrôleur flou; elle effectue la conversion

des valeurs floues en une sortie numérique. C'est l'inverse de l'opération de fuzzification.

Dans la littérature, il existe plusieurs méthodes de défuzzification qu'on a présentées au

deuxième chapitre. La sortie à l' instant k par la méthode de centre de gravité, qui est la

méthode la plus utilisée, est exprimée par:

(5.2)

où, 1=1, .. ., r et r est le nombre des règles.

5.2.1.5 Commande à logique floue adaptative

Contrairement à d'autres techniques d'intelligence artificielle, la logique floue n' inclut

pas explicitement un algorithme d'apprentissage ou d'adaptation. La configuration d'un

contrôleur flou se résume à trois étapes, la normalisation des entrées et sorties, le

partitionnement de l'univers du discours sur les fonctions d'appartenance et la dernière et la

plus importante étape est de bien comprendre le comportement du système en définissant

correctement les règles. Cependant, le réglage de ces paramètres peut ne pas être optimal

pour une grande plage de fonctionnement. Basé sur l'adaptabilité du réseau de neurones, les
78

chercheurs ont proposé un régulateur flou adaptatif. Cette technique permet aux contrôleurs

flous adaptatifs d' atteindre un fonctionnement optimal sur une très large gamme [5 .7].

De la structure de logique floue qui est représentée sur la figure 5.3 , les première et

seconde couches donnent la partie antécédente des règles floues ~ , et les troisième et

quatrième couches donnent la partie résultante via une matrice de pondération, de sorte que

la sortie du régulateur à logique floue peut être écrite en tant que [5.1]:

(5.3)

& = ~ T TV - fjJTW : Erreur de la sortie de la logique floue;

~ E R r : est le vecteur de la partie antécédente de la logique floue qui est défini comme

suit:

~= U B1 (Y)
(5.4)
L~=I UB' (Y)

TV E R rxrn : La matrice du poids.

m : Nombre de sorties, dans ce cas m=1.

Donc, TV E R rx l = [yI' Y2, ... , Y r ] ' où YI est la partie conséquence de la logique floue

pour les 1règles et! = 1, ...r . Dans ce cas r = 5 .

Le modèle d'erreur de la vitesse de consigne (modèle de référence), qui génère le signal

d'erreur d'adaptation, est défini comme:


79

(5 .5)

Avec If/' étant une constante positive qui détermine la dynamique d'erreur souhaitée.

x,

X2

\. Layerl y
La er2 ) ~~
La_yer_3_~ Layer4 )

y y
AntecedenTS Consequents

Figure 5.3 Structure de l' unité d' adaptation de la logique floue.

Le vecteur West ajusté à chaque période du Clock en fonction du modèle de l' erreur

proposé dans l' équation (5.5). L' équation de récurrence sur le vecteur de poids West

donnée par la formule suivante.

(5.6)

W ( k) = W (k -1) + I1W (5.7)

où ô est une constante positive non nulle.


80

5.2.2 Implémentation et simulation

Le système utilise deux signaux d'horloge. La première horloge, synchronise les

entrées, sorties, et les mémoires. La seconde, Clock_PWM, est utilisée pour générer les

signaux PWM. Seules les instructions primitives et un code modulaire ont été utilisés pour

décrire les différentes fonctions. La division a été remplacée par un ensemble d'ajouts, des

multiplications et des décalages de bits, ce qui a permis de sauver des ressources.

Le contrôleur de la MSAP basé sur l'algorithme adaptatif a été décrit en VHDL et

synthétisé avec le logiciel Xilinx ISE Design (Suite 13,4) (Figures 5.4, 5.5, 5.6 et 5.7 qui

seront expliquées ci-après). Le modèle VHDL a été évalué par la co simulation de ModelSim

et SimulinllM / Matlab®. L' onduleur et la MSAP ont été modélisés en utilisant Simulink™ /

Matlab® .

• FLC

Les entrées du contrôleur flou, l'erreur et la variation de l'erreur sont calculées à partir

de la vitesse de référence et de la vitesse mesurée en utilisant deux soustractions de 24 bits,

et une mémoire de 24 bits; le choix de la longueur de mot se justifie par les très faibles

valeurs à la sortie du mécanisme d'adaptation flou. Les opérations de la fuzzification, table

de règles et de la défuzzification ont été réalisées avec une longueur de mot égale à 16 bits.

La sortie du régulateur Vq et Vd références, sont représentés en utilisant des mots de 16 bits.

Le calcul du pourcentage d' appartenance des 10 variables linguistiques est contrôlé par

un multiplexeur (Figure 5.4). A chaque front montant de l'horloge, nous calculons le degré

d' appartenance à une fonction. S'appuyer sur l' autocorrection de la logique floue,
81

représentée par son adaptabilité qui va corriger une éventuelle erreur, permet d'économiser

90% de l'espace réservé pour le calcul des dix degrés d' appartenance au même temps.

till

/a2
- ~' B'

l,
P"lZIIl:t P
-
-
~
~
oi, _ III
- ~
t'i' _ ~_il
11011
- ~
19 _ RaoiPrd
S1III~.i5N -~~
IJ _
Prctg -
PI -
l'IIœlll - ~
PS _
- ~
S1IIId!a1S••1
- ~
Z_

RM la!
PII~_il
RaoiDsui
- ~

Demuffip~xeur
Mu ffip~xeur

Figure 5.4 Schéma du circuit calcul du pourcentage d'appartenance réalisé sur un


FPGA.

Le même principe utilisé dans la mise en œuvre de la fuzzification a été utilisé pour le

bloc d'adaptation (Figure 5.5), où nous avons 5 poids à mettre à jour. A chaque front

montant de la même horloge un des poids est mis à jour. Il permet d'économiser encore

80% des ressources qui pouvaient être réservées pour mettre à jour les 5 poids en même

temps.
82

SWlchiloSlmal
-~
, ,. , WOOlV

G1 G Weàis Weci1I3

G2 ~ Wedll~

G3 S Resu ilImD.2 Wedll5

G4 Ood UW

G5 Resu UW Demultiplexeur
s.t!tmSmal ~ J
Resu 1AIx2 UpdateWeight

Muttiplexeur

Figure 5.5 Schéma du circuit de la partie d'adaptation réalisé sur un FPGA.

La figure 5.5 montre le schéma proposé pour l' implémentation de l' algorithme

d' adaptation. Les entrées GI a G5 sur le schéma sont les signaux qui représentent les

variables /LB' qui sont définies dans l'équation (5.1) et dans la figure 5.7 sont représentés

par les signaux V NB% V NS % V z % VPS% V PB % Le reste des opérations de la logique floue ont

été implémentées directement comme représenté mathématiquement, sans modifications.

Le schéma global du contrôleur flou sur une carte FPGA est représenté sur la figure 5.6.

MeasVelocity(23:0 511

RetVelocity(23:0 512

Theta(11 :0 521

Oock 522

ClockPWM 531

Reset 532

Figure 5.6 Entrées/Sorties du circuit global de contrôle réalisé sur un FPGA.


83

CQrk .iF

~:4.'~TO
l{,i!l\"S' ô,Ll5 0, .. 1\'B.Ô,J)501 ..
;;:
l-7 l{,el.\-s<oèiJ.15·01 < FUL.; >:\11',1:.1.15'01 Ç.

~
16 ;lt. Fu::) 'L.!'r ~.
~ J\-s .. h.115Oi ~
V.l/iO/ ......
~
lf,èl:o.ô,J15.0,
Fu:.:.rjl~atl!J IJa:..
,IF WE, i/JZlIll
BIU
,
(eeIFS'. "x05:01 J:\1l·d~J.I501
~ ~4è1t3;O
Je él.t.
~ (J{[X .IL..\'i
1\11" l?:.f) 5' 01 ~
,e.elps',2x1l5:01 ~
\1
w 123:01 )
ej <3. 0/ " 1",. smol 'l' t 1' 1\

,
wI23·0! "-
E""" &
C~iO!
E,..·
ej2301
..,. R€ference.llode.

WUl l' î
S,,/Cclllng Signa (,Ni!

Figure 5.7 Schéma du circuit FLC adaptatif réalisé sur un FPGA (Détails dans
l' annexe -B).

• Transformation de PARK

La transformation de Park est représentée par l'équation suivante:

Va] [ooS(8) - Sin(8)][V d ]

[Vp - sin(8) + oos(8) V q


(5.8)

Le calcul des sinus et cosinus de la transformation de PARK est mis en œuvre en

utilisant la méthode de développement limité en prenant en considération seulement les

quatre premiers termes de la série et avec une taille de mot égale à 12 bits (Figure 5.8).

.
sm(e) = e - -
e7+e-9
e3 + -e5 - -
3! 5! 7! 9!
(5 .9)
cos(e) = 1- e2 e4 e6
-+- - -+-
es
2! 4! 6! 8!

Le choix du nombre de termes à prendre en considération est justifié par les résultats de

simulation présentés dans la Figure 5.9. Notons que, dans le cas de quatre termes, l'erreur

relative peut atteindre 7%. Par exemple dans le cas d'une amplitude de tension égale à 100
84

volts, il Y aura une erreur de 7 volts, qui peut affecter la précision du contrôleur. L'erreur

peut être réduite par la prise en considération de plus de termes dans la série ou bien en

exploitant la symétrie des sinus et des cosinus, ce qui est la solution qu'on a choisi dans ce

travail.

,.. "'IIIIl
Anale Coslvlale
1 Theta
Reset Sin Sinlvlgle
1 Reset Par1<>- - -
... .011IIII

SinCosGenerator
Figure 5.8 Entrées/Sorties du circuit Générateur de sin/cos réalisé sur un FPGA.

Sin and Cos Generator Error between ge ne rator based on the Taylor expansion
Sinus with S Terms "/ "",.--,-- and perleet generator
0.8 Sinus with 4 Terms 1\ 0.08 Si nus wi th 5 tums
Sinus with 4 ferrus

0.6
Cos inus with S Term s
Cosinus with 4 Terms X \ 0.06 Cos inus with S ferms
1

0.4
f
/ \ 0.04
Cos inus with 4 'nms

"!"C> 0.2
f

/
/ \ \ 0.02
1
- /
U
." 0 / \ h\ ~
/
..,t:
C>
C
co
~ -0.2
! / \ //
Vi
1\ 1
1
/ \ ·0.02
-0.4

-0.6
\ / 1\ -0.04
1
·0.8
X / -0.06

V ":- -. /
-1
-3 -2 -1
Angle (radl
0
"'" - -0 .08
-3 ·2 -1 0
Ang le Ira dl

Figure 5.9 Sinus et cosinus à base de la série de Taylor.

La variation de l' angle e est traduite par une variation entre -1 et 1. Cela a impliqué une
normalisation des équations (5.9). Lors de l' implémentation, des nouveaux coefficients

différents AI ...... As et BI .... , Bs, sont calculés et stockés sur 16 bits. A l' aide d' une série de

multiplications à 16 bits, on calcule les termes AI *ê, BI *ê 2 .... As *ê'9 qui vont être

accumulés pour formuler le sinus et cosinus selon les équations (5.1 0) et (5.11).

Après simplification les équations (5.9) deviennent:


85

sin(e) = a (5.10)

(5.11)

où :

La constante a est choisie de façon que toute les constante A J •••• A5 et B J ••• •. B5 ( [-1 , 1]

Constantes
normalisés stockés
At .. .. A 5 et B t . . .• BS

Addition à Remise à Sin (1 5 :0)


16bits ~ L'échelle ~
, l'
Série de
multiplication à
ê(l5 :0) ) 16bits
B,.. .. B9

,v
Remise à Cos (1 5 :0)
Addition à ~ ~
16bits L'échelle

Figure 5.10 Schéma du circuit Générateur SinCos réalisé sur un FPGA.

• SVPWM

Les sorties de la transformée de PARK sur 8 bits donnent les tensions de référence pour

la S VPWM (Figure 5.11). L ' implémentation de la génération des signaux de commande a

été présentée dans le chapitre précédant.


86

su
$12

521

Vc -
.....
--i.--

PWM

Figure 5.11 Entrées/sorties du circuit SVPWM réalisé sur un FPGA.


Velocities x 10" Velocity Erreur
250 3
1 Reference
- - Measured ,or'\,
2
200 i \
~
"'" 150
1/ \\
1

~
~
è / \ .. /
' (j
..5l 100
...
j
..
f -1

/
;;.

50 1 \ "" -2

/
!

1
J :~
-3

-4
" ,
2 3 4 5 6 7 8 0 2 3 4 5 6 7 8
Time Isl Time 15)
Voltages on d-q axes Filtered voltages on a-Ire axes
250 200 r--~-=~~~~~-~r--~r=~==~
- - Ya
I - Vd
/ - - Vq ,\--+---+----1 - - Yb
200 Yc
1
E' 150 1\
\
C>
~
~ 100 1
/
bD
!i
ô
;;. 50
/ \
o / ~
_200 L_L--=::'~~~~~-~-~_---.l._--1
2 3 4 5 6 7 8 0234567 8
Time 151 Time IsJ
Currents on a-b-e axes Torque
30 ,- --.--- -rc= 50
- - i8
- - ib /'
- ,

40
ic
30
! fI

~ ë 1
1
~
.l!/ ... 20 1 1 \
~ =
E" 1
\,
=
U - 10
C>
10 \

""' \\,
-20 f-----'iI:::tlllH'f 0

-30 '----<-----LC=== - 10
0 4 5 6 7 8 o 2 3 4 5 6 7 8
Time 151 Time Isi

Figure 5.12 Résultats de cosimulation.


87

Les Figures 5.12 montrent que la vitesse mesurée suit parfaitement sa référence malgré

l'erreur qui s' accumule en raison de la quantification et la troncature des données. Les

résultats de synthèse montrent que la mise en œuvre de l'algorithme consomme très peu de

ressources dans un FPGA Spartan III (tableaux.5.2 et 5.3). Désormais, d'autres fonctions

peuvent être mises en œuvre sur le même FPGA , en particulier une autre boucle de contrôle

ou d'estimation de vitesse.

Tableau 5-2 Sommaire d' utilisation des ressources pour l' implémentation de la loi
de commande.

Spartan 3A Target Deviee: xe3sd1800a-4es484


Utilisés Disponibles Utilisation
Number of slices 3595 16640 21%
Number of slices Flip Flops 1168 33280 3%
Number of input LUTs 6524 33280 19%
Number ofbonded lOBs 153 309 49%
Number GCLKs 8 24 33%
Number DSP 48s 61 84 72%

Tableau 5-3 Distribution des ressources.

Spartan 3A Target Deviee: xe3sd1800a-4es484


Utilisés Disponibles Utilisation
FLC 2666 16640 16%
Tranformation de Park 671 16640 4%
SVPWM 250 16640 1%

5.3 2 eme Loi: PMSM control based on adaptive fuzzy logic and sliding

mode {5.2J

Dans le schéma proposé dans la section précédente, la tension directe Vd a été forcée à

zéro, ce qui a donné une structure de contrôle simple d'un côté, et robuste envers les

incertitudes internes et externes de l' autre côté. Cependant, cela a causé une réduction de la

plage de fonctionnement du moteur. Une des solutions qui a été proposée par notre
88

laboratoire, est au lieu de forcer la tension Vd à zéro, à l' aide d' un contrôleur mode glissant

on force le courant Id à zéro, ce qui permet de tirer un couple magnétique maximum du

moteur.

Reference
model

w· +
--+-
1NYERTER

w 6
8

abc/dq

id trOl'sfOTIII

Figure 5.13 Structure de contrôle de la commande LF-MG.

5.3.1 Configuration du Régulateur mode glissant

Le régulateur mode glissant a pour rôle de fournir une tension Vd de référence de sorte

qu' elle maintienne un courant i d = 0 pour avoir un couple électromagnétique maximal et


ce qui va permettre au moteur de fonctionner dans une plage plus large puisque la tension

Vd ne sera pas forcément égale à zéro.

La conception d' un régulateur mode glissant passe par deux étapes:

• La première est de concevoir la surface de glissement pour la grandeur qu' on veut

contrôler, dans ce cas le courant id;

• La deuxième étape est la conception de la loi de commande à partir de la condition

de convergence, qui permettra à la grandeur contrôlée de varier mais le long de la

surface de glissement.
89

Les détails de la conception du régulateur sont présentés dans le travail [5.2]. Dans

notre travail nous présenteront seulement les expressions finales obtenues et qu' on va

implémenter.

Les deux expressions utilisées pour la conception du régulateur mode glissant sont [5.2] :

5i 153 1 ::; E
(5.12)
5i 155 1 > E

(5.13)

où kd est un coefficient constant.

5.3.2 Implémentation et simulation

Comme on l' avait précisé dans le premier chapitre, un des principaux objectifs de notre

travail, est de modéliser un seul schéma qui soit parallèle et qui permet de passer d' une loi

de commande à une autre en changeant le minimum de code possible. Donc, pour

l'implémentation de cette deuxième loi, on va garder le schéma de la première loi pour la

partie contrôle de la tension Vq et la partie contrôle du convertisseur; on a seulement rajouté

le module du contrôleur à base de mode glissant. Ce module a été modélisé et validé

indépendamment du reste du schéma.

Le régulateur mode glissant a pour rôle de maintenir le courant id à zéro, ce qui donne

des valeurs trop petites pour les calculs du régulateur et cela nous a obligé d' augmenter la

précision sur VHDL et d' utiliser une longueur de mot à 24 bits comme il est montré sur la
90

figure 5.14 qui représente le schéma bloc sur FPGA du régulateur mode glissant avec les

entrées et les sorties; toutes les grandeurs sont représentées sur 24 bits.

MeaSld(23~
: 0~+-_ _ -+-...;.V.;;.>d 23:0)

Measlq(23_:0___+-_

Measvelocity(23-;.;.;:0:.l.-+-_

Refld(23-;.;.;:0:.l.-+-_

Reset_SlidingMo:..::d-=-.e-+-_ _

Figure 5.14 Entrées/sorties du circuit Régulateur Mode Glissant réalisé sur un


FPGA (Détails dans l' annexe-B).

II"" ""lIlIIII
Measld(23 :0) 511

Measlq(23 :0)
51 2
MeasVelocity(23 :O}

Refld(23 :0) 52

RefVelocity(23 :OJ
52 2
Theta(11 :0)

CI ock 53
-

ClockPWM
53 2
Re set

.... .....
Figure 5.15 Entrées/Sorties du circuit global de contrôle réalisé sur un FPGA.
91

Velocities Velocity Err'Or


700

1
Reference i ~r---
600
f - - Measured 1\
500
Il
1 \\ 1.5 ~
/
f'.:- .
\
~ ~
Q.
~
~ 300
,::;
0
400

/
1
\ \
\
~ 0.5
~
1:"
e
0
1
,
,1
., ,

'il / 1 ~ -0.5
;;. 200 \ 1
! \ -1
100 f
\
\
V
-1.5 -
0
-2 \ /
·100
(
o 3 6 3 4
Timelsl Timelsl
Filtered Currenls on d-q axes Filtered Currenls on a-b-c axes
12 -, 10

10
1
1

1
\
J--ii~ql 6
I - - ia

1
ib
ie

8
J \ 4 r-I
1 \
~ 6
: <' r-:L
t~ iiY ---- _.
\ /1
c
!: 1 ~
!: 0
.... ....
=
U
4 1
\
= -2
1\ 1
U

t
1

L r--- 1--- -4
! -6
o- \

-2
o 4
\)
7
-8

L ==c 3 4
.
Timelsl Timelsl
Voltages on a-Ire axes Voltages on d-q axes
400 600

~
VA
300 r- 1
YB
500
I 1
200 f-----,
VC

400 - 1/ \ "1

ë 100
ë i \
è.
..
:1 !~ ~ ....
è.
~
300

200
/ \
~ ·100
ë
;;.
/ \
100
·200

·300
~'
0
V~
/ \
·400 ·100
'-- / 1
0 o 4
Timelsl Timelsl
Torque
160

140 ~

!
\
120 \
/
100
\
E 80 1 \

.
~
= 60 1 \
\
~
Q 40
f-
/
20
\

·20 J --
·40 - - - -
o 5
Timelsl

Figure 5.16 Résultats de co simulation.


92

5.4 3erne Loi: Adaptive Fuzzy Logic Control Structure of PMSMs [5.3J

Malgré son efficacité, le régulateur à mode glissant présente une faible robustesse

envers les changements paramétriques de la machine dû à la présence du paramètre Ld dans

(5.13). Donc le même auteur a proposé de remplacer le régulateur à mode glissant par un

deuxième régulateur flou adaptatif. La figure 5.17 présente la structure proposée.

Mode.

J S<u
e~
V·q
+
w SVPWM
INVERTER

V;;
fi
",
1 S id

Mode.

id Dbc/dq
Transformation

Figure 5.17 Structure de contrôle de la commande LF.

5.4. J Implémentation et simulation

Dans cette partie la difficulté était de configurer les deux régulateurs flous d' une façon

semblable, ça veut dire utiliser le même nombre de variables linguistiques, diviser de la

même façon l' univers discours, etc. On a réussi à implémenter un régulateur flou normalisé

dans un bloc en VHDL qui a été utilisé pour les deux régulateurs, régulateurs de vitesse et

de courant. Donc le schéma du circuit du régulateur de courant sur FPGA est le même

schéma représenté sur la figure 5.7.


93

Measld(23 :0)
".. "liliiii
S11

Measlq(23 :0)
S1 2
MeasVelocity(23 :0)

Refld(23 :0) S2

RefVelocity(23 :0..1
S2 2
Theta(1 1 :0)

CI ock S3
-

ClockPWM
S3 2
Re set

... --0lIlIIII

Figure 5.18 Entrées/Sorties du circuit global de contrôle réalisé sur un FPGA.

Velocities Velocity Errar


700
r
I~- Reference J
600 -- Measured 1.5
/ ;'
500 1 \
\ i \
--
...~ 400 ~ 0.5
... 1/
CI:
~

'"
o
300

i
1

\
~
E
0 r---- -4 1

\ !
Il Il
1
1

; 200 .!3 -0.5

/ \
\
/
100 -1
1

o1/ \ - -. -1.5
\
/
· 100 -2
o 2 3 4 5 6 7 8 0 3 4 5 6 8
Timelsl Timelsl
Filtered Currenls on d-q axes Filtered Currenls on a-b-c axes
12
1
10

10
"\
-
id
iq
8
ln J-
i- a
b
L------'-' 1 111
8 / \
6
r-- It '1
\
~f ~
J
~
ê
;
6

4
1
- r-
I. -..ê
= -2
0
1'\ 1 .11
r\ ~I't
~ ~JIV'
U 1 \ U
1 -4 l -
2
Ii
o
/
\ ·6
il
-2
o 2 3 4 5
\LJ 6 7 8
·8

· 10
0
l~
3
-

Timels] Timels]

Figure 5.19 Résultats de co simulation.


94

400
ri
Voltages on a-b-c axes

, 1 VA
600
Voltages on d-q axes

I - Vd

"'1 I-
300 VB 500 f - - /' Vq
vc 1 \

11
200 1 li
400
;- 100
~ '0 \
~
.s
0
I~ ti~
-~ ~
.
;, 300

.s
'0 200
J
1,

~ -100
-200 ~I
" ,'1

1 -
;,
100
1
J
,
\
-300 J
0 / \
..
, ~/ -" " //
3 4 5 6 7
Timelsl 3 TiJelsl 5 6 7 8
Torque
150 ,- - --_. .---r - -
/ "\
100 / \ 1

Ë
~
..= 1 \
50
E'
0
/
1-

0
1 \ ~/
1

-50 1
o 3 4 5 6 8
Timelsl

Figure 5.20 Résultats de cosimulation (Suite).

5.4.2 Interprétation des résultats de simulation

Les trois systèmes de contrôle ont été évalués lors de deux modes de fonctionnement,

en accélération et freinage. Les trois schémas proposés montrent des bonnes performances

au niveau de l'erreur de vitesse. Les performances du premier schéma sont limitées au-delà

des 200 tr/min à cause de l'imposition de la composante directe de la tension à zéro.

Cependant la figure 5.12 montre l'efficacité de ce schéma lorsque la vitesse est en bas de

200 tr/min, malgré toutes les simplifications qui ont été faites sur l'algorithme original. Les

figures 5.16 et 5.19 présentent les résultats des deuxième et troisième schémas. Ces

dernières montrent que les lois implémentées peuvent assurer des performances très élevées

même avec une vitesse de référence égale à la vitesse nominale. Les résultats au-dessous
95

prouvent que les modifications apportées et la représentation numérique utilisée n' ont pas

nui à la précision des trois schémas.

s.s Conclusion

En analysant les résultats de cosimulation on constate que l'ajout d' un deuxième

régulateur élargit considérablement la plage de fonctionnement de la loi , et le maintien du

courant id à zéro donne un couple maximum.

En terme de précision, la loi à base de deux régulateurs flous donne une erreur de

vitesse inférieure à celle de la loi à base du mode glissant; même le courant id réglé par le

régulateur flou est plus proche de zéro que celui réglé par le régulateur mode glissant.

Cependant en se référant aux résultats de synthèse du code VHDL des deux lois, résumés

dans le tableau 5.4, on peut remarquer un rapport de plus de 160% entre l' espace utilisé

pour l' implémentation de la loi à base de deux régulateurs flous et celle à base du mode

glissant.

Tableau 5-4 Comparaison des trois lois en termes de consommation.

Spartan 3A Target Deviee: xe3sd1800a-4es484


Utilisé Disponible Utilisation
Loi N°l 3595 16640 21 %
Loi N°2 3746 16640 23%
Loi N°3 6143 16640 37%

Une combinaison entre les résultats de cosimulation et de synthèse nous laisse conclure que

la loi à base du régulateur flou et mode glissant est un compromis entre la précision et la

consommation de ressources.
96

Chapitre 6 - Conclusion Générale

L' industrie a connu une importante hausse de demande des systèmes d' entrainement

électromécanique dans la dernière décennie. Cela est le fruit des avancées dans le domaine

de développement des algorithmes de contrôle d'un côté, et surtout le progrès dans la micro

et nanoélectronique. Ces deux points ont rendu exploitable l' implémentation de certaines

techniques, classées avant trop complexes pour la mise en œuvre.

Dans ce travail on a opté pour la technologie FPGA pour l' implémentation

d' algorithmes qui ont été déjà proposés.

La première étape était de choisir la représentation numérique et de développer une

fonction Matlab qui transforme les données d'une variable à virgule flottante en une

variable à virgule fixe, ensuite à une variable numérique. Ici, une fonction déjà existante a

été adoptée.

La deuxième étape consistait au développement d' une méthodologie pour la

vérification de chaque module VHDL développé et sa comparaison avec le module Matlab

correspondant.

Dans la troisième étape, il a fallu développer et approuver les codes en VHDL qui

exécutent les opérations arithmétiques de base et de s' assurer que l' erreur est la plus faible

possible afin d' éviter qu' elle ne s' accumule après la combinaison des différents modules.

La quatrième étape, l' étape la plus importante, consistait à simplifier et raffiner les

structures sans affecter les performances des algorithmes de contrôle.


97

Après comme avant dernière étape, on a séparé l' algorithme en modules qui ont été

développés et approuvés indépendamment afin de créer un code bien structuré, parallèle, et

avec des modules accessibles pour être modifiés et même pour être remplacés.

Dans la dernière étape, on a assemblé l' ensemble des modules développés et on les

a remodifiés dans la plupart des cas afin que ça donne des résultats les plus proches de ceux

à virgule flottante .

Une nouvelle technique pour générer les signaux PWM et contrôler les onduleurs a

été proposée dans le quatrième chapitre et a été validée à l'aide Simulink™ / Matlab® dans

plusieurs modes de fonctionnement. Cette technique, par son faible taux d' harmoniques et

faibles pertes de commutation, d'une part, et sa simplicité d'autre part, peut remplacer le

SVPWM dans les applications où les ressources sont très limitées. Les résultats de synthèse

montrent que la nouvelle technique consomme peu de ressources, environ 30%

(96Slice/358-Slices) de l' espace que la SVPWM consomme dans un FPGA .

Comme futurs travaux pour cette partie on peut explorer la généralisation de la

technique approximative pour d'autres structures d'onduleurs où le problème majeur de ces

structures est la complexité de l'algorithme de commande, comme dans [6.19, 6.20, 6.21]

où les auteurs proposent la mise en œuvre de la SVPWM polyphasique, ou comme dans

[6.22, 6.23 , 6.24] où les auteurs mettent en œuvre une SVPWM à plusieurs niveaux.

Dans le reste du travail nous avons proposé une librairie de schémas de commande à

base de logique floue principalement pour le contrôle d' une machine synchrone à aimant

permanent. Les schémas ont été développés d'une façon qu' ils aient des architectures

hautement parallèles, ce qui permet un accès rapide et facile pour changer au minimum le
98

code pour adapter la loi pour une nouvelle gamme de machines ou même de passer d'une

loi à une autre en activant ou désactivant juste le bloc voulu via l' entrée Reset. Cela

permettra de passer d' une loi de commande à une autre selon la plage de fonctionnement

voulu ou les critères de performances demandés.


99

Références

[1.1] H.H. Choi" J.W. Jung. "Discrete-Time Fuzzy Speed Regulator Design for PM
Synchronous Motor," IEEE Transactions on Industrial Electronics, Vol. 60, 600-607,
(2013).

[1.2] Y. Mingming, W. Feng, C. Gang, Y. Ke, F. Jun. "A Compound Control for PMSM
Based on Fuzzy Sliding-mode and Neural Network," 3rd International Conference on
Digital Manufacturing & Automation. 2012.
[1.3] A. Mishra, 1. Makwana, P. Agarwal, S.P. Srivastava. "Mathematical Modeling and
Fuzzy Based Speed Control of Permanent Magnet Synchronous Motor Drive," i h
IEEE Conference on Industrial Electronics and Applications (ICIEA), 2012.
[1.4] Z. Liu, Y. Wang, J. Du. "Fuzzy Model Predictive Control of a Permanent Magnet
Synchronous Motor in Electric Vehicles," 1oth IEEE International Conference on
Control and Automation (ICCA) Hangzhou, 2013.
[1.5] Y.S. Kung, M.S. Wang, c.c. Huang. "Digital Hardware Implementation of
Adaptive Fuzzy Controller for AC Motor Drive," 33th IEEE Industrial Electronics
Society Conference (IECON), 2007.
[1.6] Y.S. Kung, T.W. Tsui, N.H. Shieh. "Design and Implementation of a Motion
Controller for XYZ Table based on Multiprocessor SoPC," Control and Decision
Conference. CCDC. Chinese, 9th. 2009.
[1.7] K. Hakiki, A. Meroufel, V. Cocquempot, M. Chenafa. "A New Adaptive Fuzzy
Vector Control for Permanent Magnet Synchronous Motor Drive," 18 th Mediterranean
Conference on Control & Automation Congress Palace Hotel, Marrakech, Morocco,
2010.
[1.8] H. Teiar, H. Chaoui, and P. Sicard, "PMSM control based on adaptive fuzzy logic
and sliding mode," in Industrial Electronics Society, IECON 2013 - 39th Annual
Conference of the IEEE, 2013 , pp. 3048-3053 .
[1 .9] H. Chaoui, P. Sicard. "Adaptive Fuzzy Logic Control of Permanent Magnet
Synchronous Machines with Nonlinear Friction", IEEE Transactions on Industrial
Electronics, Vol. 59.2012.
[1.10] O. Lopez, J. Alvarez, J. Doval-Gandoy, and F.D. Freijedo, "Multilevel Multiphase
Space Vector PWM Algorithrn," Industrial Electronics, IEEE Transactions on, vol. 55,
pp. 1933-1942, 2008.
100

[1.11] Z. Zhaoyong, L. Tiecai, T. Takahashi, and E. Ho, "Design of a universal space


vector PWM controller based on FPGA," in Applied Power Electronics Conference
and Exposition, 2004. APEC '04. Nineteenth Annual IEEE, 2004, pp. 1698-1702 Vol.3.
[1.12] R.K. Pongiannan and N . Yadaiah, "FPGA based Space Vector PWM Control IC for
Three Phase Induction Motor Drive," in Industrial Technology, 2006. ICIT 2006. IEEE
International Conference on, 2006, pp. 2061-2066.
[1.13] A. Abu-Khudhair, R. Muresan, S.x. Yang. "FPGA Based Real-Time Adaptive
Fuzzy Logic Controller," IEEE International Conference on Automation and Logistics,
Hong Kong and Macau. 2010.
[1.14] D.N. Oliveira, G.A.L. Henn, 1. Du. "Design and Implementation of a Marndani
Fuzzy Inference System on an FPGA using VHDL," Fuzzy Information Processing
Society (NAFIPS), 2010 Annual Meeting of the North American, 2010.
[1.15] S. Sânchez-Solano, A. 1. Cabrera, 1. Baturone, FJ. Moreno-Velo, et al. , "FPGA
Implementation of Embedded Fuzzy Controllers for Robotic Applications," Industrial
Electronics, IEEE Transactions on, vol. 54, pp. 1937-1945,2007.
[2.1] L. Baghli, "Contribution à la commande de la machine asynchrone, utilisation de la
logique floue, des réseaux de neurones et des algorithmes génétiques," Université
Henri Poincaré-Nancy 1, 1999.
[2.2] P. Borne, 1. Rozinoer, 1.-Y. Dieulot, and L. Dubois, Introduction à la commande
floue: Éd. Technip, 1998.
[2.3] C. Dualibe, M. Verleysen, and G. Jespers, Design of Analog Fuzzy Logic
Controllers in CMOS Technologies: Springer, 2003 .
[2.4] E.P. Dadios, "Fuzzy Logic - Controls, Concepts, Theories and Applications," 2012.
[2.5] O. Castillo, J. Kacprzyk, P. Melin, W. Pedrycz, O.M. Ross, and R.S. Cruz,
Theoretical advances and applications of fuzzy logic and soft computing vol. 42:
Springer, 2007.
[2.6] K.M . Passino, S. Yurkovich, and M. Reinfrank, "Fuzzy control," vol. 42: Addison-
Wesley, pp. 15-21 , 1998.
[2.7] M. Smyej , "Conception d'un correcteur par logique floue pour un convertisseur
cc/cc," Mémoire de maîtrise (M.Sc.A.), ed. Université du Québec à Trois-Rivières,
2000.
[2.8] B. Reusch and K.-H. Temme, Computational intelligence in theory and practice:
Springer, 2001.
[2.9] F. Valdés, "Design ofa fuzzy logic software estimation process," Thèse de doctorat,
École de technologie supérieure, 20 Il .
101

[2.10] Z. Li, Fuzzy Chaotic Systems: Modeling, Control, and Applications (Studies in
Fuzziness and Soft Computing): Springer-Verlag New York, Inc., 2006.
[2.11] M. Hanss, Applied fuzzy arithmetic: Springer, 2005 .
[2.12] E.P. Dadios, "Fuzzy Logic - Emerging Technologies and Applications," 2012.
[2.13] K. Ying-Shieh, T. Tai-Wei, and S. Nan-Hui, "Design and implementation of a
motion controller for XYZ table based on multiprocessor SoPC," in Control and
Decision Conference, 2009. CCDC '09. Chinese, 2009, pp. 241-246.
[2.14] M. Jothi, N.B. Balamurugan, and R. Harikumar, "Fuzzy processor based on VLSI -
A review," in Automation, Computing, Communication, Control and Compressed
Sensing (iMac4s), 2013 International Multi-Conference on, 2013 , pp. 216-222.
[2.15] S. Singh and K.S. Rattan, "Implementation of a fuzzy logic controller on an FPGA
using VHDL," in Fuzzy Information Processing Society, 2003 . NAFIPS 2003 . 22nd
International Conference of the North American, 2003 , pp. 110-115 .
[2.16] S.P l Vasantha Rani, P. Kanagasabapathy, and A. Sathish Kumar, "Digital Fuzzy
Logic Controller using VHDL," in INDICON, 2005 Annual IEEE, 2005, pp. 463-466.
[2.17] P.T. Vuong, A.M. Madni, and lB. Vuong, "VHDL Implementation for a Fuzzy
Logic Controller," in Automation Congress, 2006. WAC '06. World, 2006, pp. 1-8.
[2.18] A. Abu-Khudhair, R. Muresan, and S.X. Yang, "FPGA based real-time adaptive
fuzzy logic controller," in Automation and Logistics (ICAL), 2010 IEEE International
Conference on, 2010, pp. 539-544.
[2.19] D.N. Oliveira, G.A. de Lima Henn, and O. da Mota Almeida, "Design and
implementation of a Mamdani Fuzzy Inference System on an FPGA using VHDL," in
Fuzzy Information Processing Society (NAFIPS), 2010 Annual Meeting of the North
American, 2010, pp. 1-6.
[3.1] A. D. M.N. Cirstea, J.G. Khor, M. McCormick, Neural and Fuzzy Logic Control of
Drives and Power Systems: Elsevier Science, 2002.
[3.2] H. Chaoui, "Implantation sur FPGA d' une loi de commande adaptative neuronale
supervisée pour une articulation flexible," Mémoire de maîtrise, Département
d' informatique et d' ingénierie, Université du Québec en Outaouais, 2004.
[3 .3] V. A. Chandrasetty, VLSI Design: A Practical Guide for FPGA and ASIC
Implementations: Springer New York Dordrecht Heidelberg London, 2011 .
[3.4] C. Maxfield, FPGAs: Instant Access: Elsevier Ltd, 2008.
[3 .5] R. T. Ian Kuon, Jonathan Rose, FPGA Architecture: Survey and Challenges: now
Publishers Inc., 2008.
102

[3 .6] H. M. Husain Parvez, Application-Specific Mesh-based Heterogeneous FPGA


Architectures: Springer New York Dordrecht Heidelberg London, 20 Il .
[3 .7] U. Meyer-Baese, Digital Signal Processing with Field Programmable Gate Arrays:
Springer Berlin Heidelberg New York, 2007.
[3 .8] C. I. Ted Huffmire, Thuy D. Nguyen, Timothy Levin, Ryan Kastner, Timothy
Sherwood, Handbook of FPGA Design Security: Springer Dordrecht Heidelberg
London New York, 2010.
[3.9] J. M. Roger Woods, Gaye Lightbody, Ying Yi, FPGA-based Implementation of
Signal Processing Systems: A John Wiley and Sons, Ltd., Publication, 2008.
[3 .10] N. M. Karen Parnell, Programmable Logic Design Quick Start Hand Book, 4 ed.:
Xilinx, 2003 .
[3.11] G. R. Wilson, "Binary Numbers," in Embedded Systems and Computers
Architecture, ed: EBSCO Publishing, 2002.
[3.12] D. M. Ercegovac, Land, Tomas, "Basic Fixed-Point Nurnber Representation
Systems," in Digital Arithrnetic, ed: EBSCO Publishing, 2004.
[3.13] M. Abd-El-Barr, EI-Rewini, Hesham, "Computer Arithrnetic," in Fundamentals of
Computer Organization and Architecture, ed: EBSCO Publishing, 2005 .
[4.1] Hamid A. Toliyat, Subhasis Nandi, Seungdeog Choi, Homayoun Meshgin-Kelk,
ELECTRIC MACHINES Modeling, Condition Monitoring,and Fault Diagnosis: CRC
Press, 2013.
[4.2] O. Drubel, Converter Applications and their Influence on Large Electrical
Machines: Springer Heidelberg New York Dordrecht London, 2013 .
[4.3] 1. F. Gieras, Advancements in Electric Machines: springer.

[4.4] R. De Doncker, D.W. Pulle, André Veltman, Advanced Electrical Drives Analysis,
Modeling, Control: Springer Dordrecht Heidelberg London New York, 2011.
[4.5] N. Mohan, P. Jose, T. Brekken, K. Mohapatra, W. Sulkowski, T. Uneland,
"Explaining syntheses of three-phase sinusoidal voltages using SV -PWM in the first
power electronics course," IEEE Workshop on Power Electronics Education, pp. 40-
44, 2005 .
[4.6] T. Lifanf, "Study of the SVPWM Converter Based on TMS320F24X," Third
international Conference on Intelligent System Design and Engineering Applications,
pp. 1316-1319, 2013.
[4.7] R. Cordero, J. Pinto and 1. De Soares, "New Simplification of SV-PWM based on
conditional of the reference vector," IEEE International Power Electronics Conference,
pp. 2992- 2999, 2010.
103

[4.8] A.O. Rait and P. Bhosale, "FPGA implementation of space vector PWM for speed
control of 3-phase induction motor," International conference on Recent advancements
in Electrical, Electronics and control engineering, pp. 221-225, 2011.
[4.9] M. Lami ch, J. Balcells and D. Gonzalez, "New method for obtaining SV -PWM
patterns following an arbitrary reference," IEEE 28th Annual Conference Industrial
electronics Society, Vol. 1, pp. 18-22, 2002.
[4.10] Zhou Yuan, Xu Fei-peng and Zhou Zhao-yong "Realization of an FPGA-Based
Space-Vector PWM Controller," Power Electronics and motion Control Conference,
IPEMC ' 06, Vol. 1, pp. 1-5, 2006.
[4.11] R. Rajendran and N. Devarajan, "Intelligent Control Fuzzy Logic Applications,"
Second international Conference on Computer and Electrical Engineering, Vol. 2,
pp.422-426, 2009.
[4.12] Zhou Yuan, Xu Fei-peng and Zhou Zhao-yong "Realization of an FPGA-Based
Space-Vector PWM Controller," Power Electronics and motion Control Conference,
IPEMC' 06, Vol. 1, pp. 1-5, 2006.
[4.13] Z. Zhou, T. Li, T. Takahashi, and E. Ho "Design of a Universal Space Vector PWM
Controller Based on FPGA," Nineteenth Annual IEEE Applied Power Electronics
Conference and Exposition, APEC '04, Vol. 3, pp. 1698-1702,2004.
[4.14] S. Boukaka, H. Chaoui, P. Sicard "FPGA Implementation of SVPWM", 1lth IEEE
International New Circuits and Systems Conference (NEWCAS), 2013.
[4.15] A.O. Rait and P. Bhosale, "FPGA implementation of space vector PWM for speed
control of 3-phase induction motor," International conference on Recent advancements
in Electrical, Electronics and control engineering, pp. 221-225, 2011.
[4.16] J. Osorio, P. Ponce, A. Molina "FPGA-based space vector PWM with Artificial
Neural Networks," Nineteenth International Conference on Electrical Engineering,
Computing Science and Automatic Control, CCE '09, pp. 1-6, 2012.
[4.17] H. Chaoui, P. Sicard. "Adaptive Fuzzy Logic Control of Permanent Magnet
Synchronous Machines with Nonlinear Friction", IEEE Transactions on Industrial
Electronics, Vol. 59. 2012.
[4.18] S. Tole, W.J. Hwa, A. Jidin, and N.R.N. Idris. "A Simple Approach ofSpace-Vector
Pulse Width Modulation Realization Based on Field Programmable Gate Array."
Electric Power Components and Systems 38, no. 14 (2010): 1546-1557.
[5.1] H. Chaoui, P. Sicard. "Adaptive Fuzzy Logic Control of Permanent Magnet
Synchronous Machines with Nonlinear Friction", IEEE Transactions on Industrial
Electronics, Vol. 59, No. 2, 1123-1133,2012.
104

[5.2] H. Teiar, H. Chaoui, P. Sicard, "PMSM control based on adaptive fuzzy logic and
sliding mode," Industrial Electronics Society, IECON 2013 - 39th Annual Conference
of the IEEE , pp.3048,3053, 10-13 Nov. 2013 .
[5.3] H. Teiar, S. Boukaka, H. Chaoui, P. Sicard, "Adaptive fuzzy logic control structure
of PMSMs," Industrial Electronics (ISlE), 2014 IEEE 23rd International Symposium
on, pp.745 ,750, 1-4 June 2014.
[5.4] S. Singh, K.S . Rattan. "Implementation of a Fuzzy Logic Controller on an FPGA
using VHDL", 22nd International Conference of the North American Fuzzy
Information Processing Society, 2003 .
[5.5] S.P. Joy, V. Rani, P. Kanagasabapathy, A.S. Kumar. "Digital Fuzzy Logic
Controller using VHDL", IEEE Indicon Conference, Chennai, India. 2005.
[5.6] J.L.G. Vazquez, O. Castillo, L.T.A. Bustos. "A Generic Approach to Fuzzy Logic
Controller Synthesis on FPGA", IEEE International Conference on Fuzzy Systems,
Vancouver, BC, Canada. 2006.
[5.7] N.J. Patil, R.H. Chile, L.M. Waghmare, "Implementation of Model Reference
Adaptive Fuzzy Controller", IET-UK International Conference on Information and
Communication Technology in Electrical Sciences. 2007.
[6.1] G. Renukadevi and K. Rajambal "FPGA implementation of SVPWM technique for
asymmetrical six-phase VSI," International Conference on Emerging Trends in
Electrical Engineering and Energy Management, ICETEEEM, pp. 333 - 338, 2012.
[6.2] 1. Alvarez, O. Lopez, F.D. Freijedo, 1. Doval-Gandoy "Digital Parameterizable
VHDL Module for Multilevel Multiphase Space Vector PWM," IEEE Transactions on
Industrial Electronics, Vol. 58, pp. 3946-3957, 2011.
[6.3] P. Sandulescu, L. Idkhajine, S. Cense, F. Colas, X. Kestelyn, E. Semail, A. Bruyere
"FPGA implementation of a general Space Vector approach on a 6-leg voltage source
inverter," 37th Annual Conference on IEEE Industrial Electronics Society Digital,
IECON '37, pp. 3482-3487, 2011.
[6.4] A. Moreno Garzon, J.M. Garzon Rey, G. Ramos, F. Segura-Quijano "Hardware and
software performance assessment of a multilevel inverter control," 2013 Workshop on
Power Electronics and Power Quality Applications, PEPQA, 2013 .
[6.5] Yaofei Han, Xiaohong Fan, Zhangfei Zhao "The study and realization ofthree-Ievel
SVPWM algorithm for high power inverter," International Conference on Electrical
and Control Engineering, ICECE, pp. 6177-6180, 20 Il.
[6.6] P. Thirumurugan, P.S. Manoharan, M. Valanrajkumar "VLSI based space vector
pulse width modulation switching control," IEEE International Conference on
105

Advanced Communication Control and Computing Technologies, ICACCCT, pp. 338-


342, 2012.
106

Annexe A - Extraits des codes de simulation

Dans cette annexe on présente des schémas qui montrent des parties du code utilisé

dans ce travail.
107

A- Code Matlab utilisé pour valider l 'additionneur (Première partie)

22 - cIe; , r.!f.c~nt des comr.and~~ pre:ce:d~nt tappees dan.e la CQmŒ.&nd "indov


23
24 t -- Inltialls4tlOn ---------------------------------------------
25 - Nseq - 100; , ncmbre de do:,.n~es ~a5.s.nt da.ns l ' addl.tl.onneur
26
27 - 1l-0 . S·ran4nIN~eq.l); ' !:ctrée!l aléatoires de l'ent.rêe A. die: l'Addtl.Onneur:
28 - 15-o . S·rand:l(N:teq, 1): " !:.D.trt!!e!!J aléatol.res de l'entree B de l' Addtl.onne\lr;
29
30
31
n-------·
, Add.1.tl.onneur -> VIRGULE FLOTTANTE: (précl.a1.on maXi.m41e:)

.
32
33-

.,.
31
n--------·
-->
, Addl.t1.onneu-r ---------------------
VlRGULl.: FI.Xf: (précision 11JUtée par le rob. de bl.t)
3.
.,- , Membre de bl.t con:nderee pour representer le,:, dotme:es -> &ddl.tl.on
(0
(1 \--> OUant.lticatl. on des sl.gnaux A et B -----------------------
42-

l
t"or 0-1: Nseq
H- ~..a.0~(n.l) -tU!lc_s&Jtpl1.n;_M1 (ACn, 1) ,"_Bit);
u-

..
5,..B.0:nz.(D, l) - fune_,sazpllnQ_M7 lB (n, 1) ,N_SH);
(S- end

...
(1 - 11 1:or n-l :N5e:q
- L C•• ~ixe (n, l)-A_nor1lt(n,l) +S_Dorm(n,l);
- end
50
51 ,--> Quantification dlJ 31.;-041 C_vfX ---------------------- ----
52 - rr 1:or n-l :Naeq
53- l C_ no~ln.l'-func_,sllllPli..nQ_K7 (C_1:.1xe:(n,l) ,N_IUt);
54-
55
5.
57
5.
..
end

, Courbe cie ceçaraJ.30t:1 entre VJ.rgule fl ott a nte e:t 1:.LJtf!

59- tiqure;
60 - .ste. (A) ;
ti1 - bold on ;
62- .stca(A_nont, 'r' );
" - bold off :

.
ti4 - tltle( 'Entr~ A de addl.tionneur -> flottante va Tl.xe' )
'S - leQend( 'rlottante' , 'rixe.' )

fil - tiqure:
ft - stem(B );
fi' - hold on ;
70 - 5t.es (!_no:r:., 'r" :
11 - hold ott ;
12 - tltle( '[ntrée B de addiu.onneur -> tlott.ant.e V3 l"l.xe ' )
'3 - leQend( ' rlottante' , 'Fl.xe' )

"
1S' - tiqu.re;
16 - .stex: (C);
" - bold on ;
71!!- att!BIIC_noX'Bi, 'r' l:
19 - hold ott:
eo - elele l ' Sortie C de add..l.tl.onnll!!ur -> flottante V5 Fl.xe' )
el - leqend( ' nottante' , 'Fixe' )
.2
.3

..••
, - Tran;!!lfert de do:u:.éea
•5 , --- ENrALE: A._DOr- coct:ructlon du fl.chl.e.r.s de eeat
-
..
fld-tope.n ( ' A_Dlatla.b. txt' , 'W1: ' ):
07 - for 1-1 :Nseq

.9 -
90-
-
l end
fpr intf (rld, func_1'1..xedN~r2StdLoglcVector_K7I A_nona(l,l) ,"_Bit»):
fpr ~ tf ( f l d , '\n' );

.
Il- fc lo.e (f1d) ;
92
t - - ~: B_nonl cont.r1Jct1on du flchl.e:r3 de te3t
9( - fld-topell( 'B_uoatlab. txt' , 'we' );
OS - tor 1-1 :Nseq

...,- l
,.- f princf ttid, func_Fi x edNwù:ter2StdLoQ1eveecor_ M7 (B_ nOm(l, 1), "_Slt»:
91- fprinc f(t1d, '\n' );
- end
feloae (tid);
100
101 ,--- SORII[: C_va _nor:. controlct.1cn du f ichl.e:r.s de te;:st
102 - fid-top~e 'C_&atlab. txt' , 'vt ' );

l
103 - for 1-1 :N:seq
104 - tprint.! (lid, fune_'U e dNUKber2StdLo;l cVe ct.or_K7 (C_ norme1, 1) , K_Ble)):
lOS' - fprinU (Ud., '\n' );
lOti - eDd
107 - fe lollle (hd):
10.
10.
108

B- Code Matlab utilisé pour valider l 'additionne ur (Deuxième partie)

16- cIe; , Et'fac~ent:. des cotat.and~~ precede~nr; eappee:s dan,:, la Command Windo'W
17
If! , - - Initlall.~at:ion - - - - - - - - - - - - - - - - - - - - ,
19 - N_81t.-16:
20
21 \ - Chenu.n de:s fichiers l~re

22 - pa th (paCh,pwd.) ;
23
24 , - Nom des fichiers - - - - - - -
25 - nOJll_tlchl. e r_modelSiIII- 'C_M.5l.lI;. txt' :
26 - noa._tlCl'l.1 e r_lIlAt.l.ab- 'C_mAtlab . txt.· :
21
28 , - Leceure du fl.chl.er HodeS.l.D. - - - - - - - - - - - - - - ,
29 -
.0 - l - 1;

.
31- Vlu1e 1
.2 - Ilne b - l"getllpld yb ) ;
- 1f "ischa r (IUle_b ), break , end
3(-
35 -
36- 1 ecd
f...A0%!l_~.§.1.m•. b1.n(1,:
1-1+1;
) - 11ne_b;

..
37 - t clo.se (pld_yb):
38
- ~ for 1 - 1: s ! ze le norm aode lSÏJl bin.l)
40 - L C_ Dora ~e!-S~2 (1. 1) - func_StdLogicVector2P-l.xedNumber_H7 (C_ noDri_ modelSim_bin (l, :) ,N_Bit)

.
(1- ~d

42
,-- Lec~ure du flch.1.~r maclab v.1rqul~ t1x~

« - pid_yb2 - fope:n(oOlll._f1chier_Jtat.lab, 'rb' );


(S- 1 - 1;
u- "hile 1
(7- ll.ne b - ffJetl (pid yb2);
48 - if -i .sch.ar Cline_b ), break, end
n-
50 -
51 -
52 -
1 end
~r1Ii I14tlab~bltl(1,:)
1-1+1;

felo.se (pld_ yb2) :


- li.ne_b;

53
5(- lf for i-1:s1ze(C nora &a~l.ab bin,l)
55 - L C_ nora~t_lab__b1n_ ~2 (i, 1) - func_StdLo0.1cVector2F1 xedNumber_H7 (C_ oorm_JM:tlah_bin (1,:) ,N_B.1t.)
56 - end
57
58
S9 .. Courbes de cOr"..paral.sons virgules f'lottant:e5~ Vl..rQlllf!s f.1xe.s et McdelS:un.
60 ,-
61
62 ,- Compar41~on de~ résult.at.~ VP..DL et: HlLl'LAB - - - - - ,

63 - f.1qur e ;
64 - plot tC_ no:r:m_ modelSilD._p2, 'b' }
65 - hold 00
66 - plot. te _ nODrl_mat.lab_ bin_p2, 1 r' )
67 - hold otf
6! - leoend( 'C modc:lSu' , 'C Katlab' )
69 - xlabelt 'tchantl.llons' )
70 - yla.bel( 'Jucp11tude,s' )
71 - t.lt.le( 'Addl.tionneur - Sort.1e HodelSl.B et Hat.lab' )
12 - axia«(l le.nqch(C_ DOI1l_JUtlab_biny2) -1 1)

" \:-- C01tPara1~on d~~ r~sultac.s VHDL ec HATLAB -> erreur - - - - - - - - -


15 - errlbot-2 "' - tH_8it-l) ·one" (lenQ'th(C_DOrB_Jtatlab_bln_p2) , 1);
76 \: -> erreur max.l..JI41e accepcée de l bl.C
77 - t lqur'e :
7fI - plot (C_norm_Jr.atlab_bin-'p2-C_norm_~ lSl.m_p2, '0' )
79 - hold OD
20 - plot (errlboC , 'r' )
81 - hold otf
e2 - leoe.nd( · Ma~lab rlix MOINS Hodc:lSim' , 'erreur de 1 bl.~' }

e3 - xlabel ( 'tchancl.llon.s' )
et - y'labe l( 'Amplitudes ' )
es - tit.lc:( 'Add~t.1onneu.r - Sort I.e Matlab HOUIS HodelS.1JIl' )
86 ,
109

C- Code Matlab utilisé pour passer de la virgule flottante à virgule fixe.

1S ,,------------------------------------------------------------------------
16 - tunct.ion IDaea_d.ec_Norm)-tunc_s amplin g_H1 (Da t.a _dec,NDlt)
17
le
19 - if Daea _d.e:c>-1 - 2 " - (Nblt.-l)
20 - Oat.&_Clec_No~1-2"'- (Nblt.-l):
21 - elself Dat.a_dec<-1+2 "'- (Nbit.-l)
22 - Daea_dec_No:nr.--l:
23 - e:lse
24 - teçO-abs (Daea_de c):
25 - te:rtp-te:rq;:lO:
26 - ee:p2-o:
21 - use_c--zero5 (l,Nblt);
2e - tor n-l: (Nblt.-l)
29 - if eeç>- 2 "" (-n)
30 - u.se_n(l,n+l)-l:
31 - t.enp-t:emp-2 '" (-n,;
32 -
33 - .nd
34 - end
3S
36 - t.e:p3~ea;p2+2"'- (Nhlt -l) ;
37 - il abs (t.e:çO-eezr.p3) <abs (eempO-eemp2)
3e - eeJrp_fln-t.esp3:
li - cIse
40 - tea:p _ tln-t.~2;
41 - end
42
U - .lf Data_dec>-O
44 - DatB_dec_Nonr.-ceql_f in:
45 - else
46 - Data_ dec_No.ra::--l .. t~_fl.n;
47 - end
te - end
49
50 ,\:------------------------------------------------------------------------
110

D- Matlab utilisé pour passer du décimal au binaire

17 _. tunct10n ( Daca_bin ) -tunc_ fi x edNumber2ScdLoglcVect.or_M7 (Oo.e a_de c_Norm, Nbl t. )


le
19 - it' Dat.oIl_df!c_Norm>-O
20 - val_b1n-zero8(1,Nblt.):
21 - ce.ç-abs (Dat.a_ dec_ Norm);
2.2 - for n-l: (Nbit-l)
23 - 11: 'CeŒp-2'" ( - n)>-O
24 - val_b1n(1,n+l)-l:
2S - t. ea:p- e~-2"I-n);
26 - end
21 - end
2e - Oaea_bin vec-val_b1n:
29 - elat!:
30 - 1.t Daca_d e c _ Norlt.- - l
31 - Da t &_b1.n_ve c-(1 zeros Il,Nbl t -l)):
32
33 - elat!:
34 - val_ bln-one3 (l,Nbie);
35 - t.~-ah.!llIDa t. a_dec_Norm) ;
36 - for n-l: (Nblt - l)
31 - l.f teq>-2 A (-n) >-0
3e - v a l_b1n (1, n+1) - 0;
39 - <o,r.p- "emp- 2"I-n) ;
CO - end
U - .nd
n - if val_ bin-[ones (l,Nblt)]
C3 - Data_ bl.n_vec-val_ bi.n:
,,-
cs -
46-
41 - for m-Nble:-l:2
ce - if val_ b1.n Il , m) - 0 '" chq-O
n - Dat.a_ bin_ vec (l,m) -1;chO'·2:
50 - el:,.:i! v a l _b in(l , ra}-l '" chg-O
51- Dee&_bin_ v e c (l,m) -O;chO'· l;
52 - el.seif v a l_bi.n(l,m)-O " chg - l
53 - Dat.e _ hin_ v e c (1, m) - 1; chq- 2;
se - el.se1f v a l_bin(l,ll)-l " chg-l
55 - Dat.a _ hin_ v e c (1 ,m) - O;chq-l;
56 - ond
51 - .00
S8 - end
S9 - end
60 - end
61
62 - Dae a_bin-sprinef C'\Old' ,Oata._b in_ ve c):
,,"'----- --- ----------------------------------- - ---------- --------- ----- ----
111

E- Code Matlab utilisé pour passer du binaire au décimal

13 u -- ---- -- - ---- - --- ----- -- ----- --- ---- -- - - --- -- -- - --- ------ -- -- -- ----- ----
14 - fu ..-" .ction (Data_ dec_ conv]-func_ StdLoQicVector2FlxedNumber_M7 (Data_bl.n,Nbit)
15
16 - conv_ de:c-bin2dec(Dae&_ bin);
11 - neq-O;
HI \- - NQrr.bre~ negat~f ~ -------------------------------------
19 - 1.f conv_ dec-2'" (Nblt-l)
20 - Oata _dec_ conv-- l;
21 - el.!!'!
22 - l f conv_ dec>2 A (Nblt-l)
23 - neq-l;
24 - conv_dec-conv_ dec-2" (Nbit-l';
25 - tett.pl-conv_dee:
26 - u.8f!_ n-Zero:l (l,Nbit) ;
27 - fo:r n-2:Nblt
22 - l.f teçl-2 .... (Nbl.t-n) >-()

29 - use_ nU,n)-I;
30 - templ-teftlPl-2 .... (NbJ. e-n) ;
31 -
32 -
33 - .nd
34 - ond
35 \ -- - love::s1on des b i ts - - --
3E - t.etr.p2~.l!Je_n:

31 - tor: 0-1 :Nblt


38 - if tetr.p2 (l,n)-O
39 - ten;p2 (l,n}-l:
40 -
41 - telq)2 (1. n) -0:
42 - .nd
43 - ..",

44 , --- C omp l ~ n t. ------------


45 - val_bln-eexp2:
46 - chq-O;
41 - cortp_2-va1_b1n;
48 - for m-Nblt.:-l:2
U - if val_hin(l,m)-o ~~ chq--<l
50 - con:p_2 (1.m)-l;cbg-2:
51 - e:l.!!Je:1f val_b1n(l,.)-l ,,~ chQ-O
52 - cosp_2 (l.:m)-O;chg-l:
53 - e:l.!!Je:lf val_bin(l,a)--o '" chg-l
54 - ccm:p_2 (1.m)-I;chg-2:
55 - el.!!Je1f val_b1.n(l,.)-l ~, chO-l
56 - cotr,;p_ 2 (1,m)-o:ehq-l:
57 - ond
se - .nd
59 - out. t.rt.-camp 2:
60 - else:
61 l -- Norcbre!l pO!llt. l:f!l -----------------------------------
62 - t.~3-conv_ dec:

63 - out._trt-z.eros Il,Nbit.);
64 - for n-2 :Nblt
6S - if eeu:p3-2 '" (Nb1t-n)>-0
66 - out_t.rt.ll,n)-l;
67 - t.ettp3-teJq)3-2 "'I Nbit. - n) ;
68 - e:l!le:
69 - out._ trt(l,n)-O:
70 - end
11 - end
72 - end
73 \: - - Conve:r!li o n bJJl41.re - > de:c.l.D41 - - - ---- - ------- - --------
74 - Oac4_ d e:c _ conv-O;
7S - :for n - l:Nbit.-l
76 - if out._crt(n+l)-l
77 - Dat&_dec_ conv-Dat4_de:c_conv+2 .... - (n):
7e - end
79 - ..",
80 - 1.f ne:g-l
81 - Da t 4_de c_conv-Da t ll_de:c _ conv· (-1);
82 - end
83 - end
84 ,,\:------ ------- - ----------- - - - ------ -- ------ - -- ----- ------ - - ----- - - --- - - --
112

F- Code VHDL utilisé pour réaliser un additionne ur

9 -- d~claratl.on d.~!! bl.blloehèquea


10 library it::~t:::
Il use 111!:1!1! • .!IItQ log1c 1161. al1 ;
12 W!e l eee.atd=lOQlC=.!!Ilqned. aU ;
13
H -- d~claratlon de Plmtl.te

,.
15 eRt.lty ADD ~ 16 15
port (- A}iSill.. 5_MS1.J:r. : i.n ~td_lo91c_VeCtor(15 downto 0) :

,.,.
17
C_KSiJL
) :
ln sed_loQl.c:

20 ~d ADD_e.x_16:
21
22 -- declaration de l ' architecture
23 architecture Md.1t.loR_16 ot ADD_ I!X_16 18
2.
25 beqil'1
26 process (A_:KSim. 8_H5ia, Re:!ll!!t )
27 van.able C UI!P : scd loqlc vector (15 dOWDtO 0) :
Z! begin - --
29 if lteset.- ' 1 , ehen
30 C_tJq) :-"OOOOOOOOOOOOOOOO" ;
31 e15t::

33 1t A. HS1z ( 15 )· ' O· and 8 MS1.a (15)· · O· and C_tJr;> ( lS )· ' l ' then
31 ë_arp : ··Ollll 11111111111 " ;
35 el".!! A MSlJl (l5)· ' l ' and 8 KSi. IlS)· ' 1 ' and C_Utp l lS) · ' O· t:hen
36 C_ cÇ :·- IOOOOOOOOOOOOOOO " ;
37 end if ;
3a I!!nd i f :
39 C_MSa <- C_Ul:p;
40 ~ preees!! :
41 end lu1dlt:1on_16:
42 ---- ------- ----- ------- ------ ------ -- --- - ---

G- Exemple d 'un code VHDL Test

10 -- d4!cl.arat.1.oc des blbliot.hèques


11 Ilbrary Ieee;
12 wse: ieee.std_loOlc_l1 61. all ;
13 ue!! i eee . • td lQ9ic aigne d . all :
H 'OS!! l ee:e .Stt(loçtc=teXtio. e.ll : lec~ure et ecrl.ture de fl.Chl.ers

,.
15

17
use
--~e:
.!Itd . t~io. a11 :
vort.ADD_e.x_16: --Appel d e l' a ddl. t l.onneur cDÇl.é
16
19 -- déclaration de l'entité
20 eutity e.e5t_1lDJl_eJt_16 i .
21 end teat ADD ex 16 ;
22 -- décla;a.tiQ:l: de l' a rchl.tecture du tel!lt.Becch
23 architecture st1ll:nll Dt test_ADD_ f!.X_16 15
21 -- lecture t'l.c.."uer t.xt.
25 t'ile l ile 1..n Anona : te.xt. open r ead lIIOde io5
215 ·C: \ Docëm;ots acd SettiDOo5\labo\ Bureau\ADD_l6bl t:s\A_JN!l;t.lab. t:Xt" :
27 file t'ile in B DOr. : t.ext. open reed. mode io5
28 ·C: \Do~nts and sett:inQ'S\labO\BunaU\ADD_16bl.tS\B_lntItl&b. txt" ;
29 -- éc:n.ture t1chier txt
3D tile lile crut C HS1e : te.xt open vr1te .ode i8
li "C: \Do~-;;t.s and 5et~inQa\labo\B;:;reo!llu\ADD 16bl.ts\C M:u.m.txt" :
32 - déclaration du ca:zpoaa.nt teat~ - -
33 component ADO ex 16 i3
31 port ( Ajisa. B_KSi" l n std_loQ1c_vect.orfl5 downto 0 ) .
35 in std_loQ'1c :
••
37
38 end ceq:KInent. :
'9 - déclar ation des S1Ç":laUX d u composant
10 sione! A_KSl.Jt., B_KSl.JI., C_MS1.Ja : !ltd_loQ'l.c_v~e'torfl5 dovnto 0) :
11 signal re.sC!t : std_loQl.c :
12 conatan.t PERIOD_test : t.1JX.e :-50 na:
13 beQln
H ADD1 : ADD_e.Jt_16 port.ap (A_HS1Jr.,B_HSim.re.set.C_ MSu) ;
15 procellIJ
16 variable L 11. KSa. L B KSIm, L C KSIm : lice :
1" variable .;lue_A_MSi.~value_S)GIa. ve.lue_C_HSIm !ltd_IoQ'l. c_vector ilS dovnto 0) :
18 begin
l' reaet<- ' O';
50 -- Lecture de A
51 re:.adJ.1ne (tile in 11. nOnll, L 11. MSIa) :
52 re:.a d (L_A_H.5tm. value_A_HSIDI) :
53 A_HSI&<-valge_A_MSlm:
51 -- Lecture de B
55 readl1ne (!l.le in B no:::, L B KSIa) :
56 reacS ( L B HSIi, value B HSÏ..") :
57 8 KSIa<;";lue 8 HSlm: -
sa wa lt tor nRIOO=te.sc:
59 -- lc:r1t\:re de C
60 valill! C KSI. : -C MS.1m:
n .nite IL-
C HSt.. ;a!ue C KSIm) ;
U writel~eïtlle_out_C)tSu..L_C_MSI.I :
63 end preeeao5 :
,.. end at1Jr:uli:
113

H- Code VHDL utilisé pour réaliser un soustracteur

-- declarat:l.on des b.lbll0tt".èque:s


10 1 ibu.ry lee e;
11 use ie ee .a t d logic IHi4. all ;
12 uJle l eee . .s t:d:=10Q1C::lI!qned. 1l11 ; --pour r4l.re l'ed.cll.tio n

14 -- declaraCl.on de l'entlt:~
15 entl.tV soustrllc_16 13
16 port 1 Sousl , Sou:s2 : 1n .!lied 10q1e vec't.or(l5 4oWnto 0 ) ;
17 reset sous -;- in 5t"d_lOQ'1C :
le Erreur OUt 5tct_lOQ'l.c_vectcr l lS dDWnto 0 )
19 );
20 end 50U5trac_Ui:
2'
22 - - declaration de l'architecture
23 architecture s ou5 tra ctitur_ 16 of aou5tra c _ lfi 15
24 beQln
25 proceas ISoual, Soua2, re.et eoua )
26 variable teJ!Pl 5td_lOQ'lc_veëto::f15 dovnto 0) ;

"
20
2•
bcgin

•0
31 t e ç l :- Sousl - SOlu2:
32
33 sou s · ' ! ' th~
if r e s e t
34 te.çl :.-;0000000000000000" :
35 end 1.f ;

.,,.••
If teJtpl (l5)· ' O· anc:1 Sou.l US)- · ~ ' and. 30u.s2 (l5)· ' O' thelll
••• 0 tcçl :--1000000000000000 " ;

il

....
i2
il
el.i! teçl (lS)- ' 1 ' and Sou.l (ISI- ' O' and Sou.2 1IS) · ' l ' thM
teçl :·" 0111111111111111" ;
end 1! :

4'1 Erreur <- teçl;


••
~9 end proceso5 ;
50 end .silQ.lI tra cteu:t_ 16:
51 ---------- --- -- - - ----- ---- --- -- - ---- ----- -- -

1- Code VHDL utilisé pour réaliser un multiplieur

-- déclaratl.on des b1b110thèque.ll


10 library i eee ;
11 uee i eee . .st.d loole IUt. all ;
12 u.e l eee. Std=lOQic:s igne d. all ; --pour fal.re l'add.l.tl.on

1~ - - d é c la:ratl.on de l'entl.té
15 entity Mul. Hib1ts 1.05
1~ port (- D_K!Um. E_K!lua : in :!td_loQic_vector(15 downtc 0) ;
ln !!Cd loOl.c ;
out !!td_lOQ'lc_vectOr(31 downto 0)

21
22 -- ctéclara t1.o:..., de l' arc hite cture
23 architecture lClltlplica tlon of Kul_l6blta lI!!
24 beqin
23 pIace:!a I D HSim, [ HSia, Re.lle t )
2E variable !'_cç :!!tcl_loOlc_vector(31 downto 0) :
2'1 beOin
2e i! Resec .. ' l ' cben
29 F_ tJIp : .. " 00000000000000000000000000000000" ;
30 el:!e

.
31
32

li
35
il
D KSilI. • "1000000000000000" and [ KSi. - "1000000000000000" tben
r=eç :- " 01l1l1l11111111111111111 1111111P ;
el!!lt
••
37
D HSi.Jr! -
F:=cç :'"
" 0111111111111111" and [ KSla - "Ollllllllllll1l1" then
"Ollllllllllllllllllllllïllll1111" :
le
39 el!!l.!

.,.0 D_M.51.-. - ·0111111111111111" and E_ K!lila - "1000000000000000" chen


F_tEp : - "10000000000000000000000000000000" ;

...
i2
il
el$U

F_
elae
D K!l1.a ... "0111111111111111" and E HSm .. "1000000000000000 · the.n
taP :- " 100000000000000000000000000'00000· :

.,•• ~ tJr.p : - D )(s1a • E ~1JII..:

r-tap :- r-tap (31) '" F tIq) (2 9 downto 0) , ' 0 ';


•••• end i f ; -
r_H.Sa <'"' r_tJr.p:
-

50 end i f ;
Sl end process :
.52 end au.l.t1pllcatlon;
53 --------------------------------------------
114

J- Code VHDL utilisé pour réaliser un registre de décalage

-- Dec la.r at1.on des b l.bl l.otbeque.s -----


I1brary l ee e;
u:Je ieee.:Jtd_logic_1161. all :
10
Il -- !:n t.lt~ ----------------------------
12 entit:y Ba5_D i.e:
13 port ( bn : 1n ~td_lcQ1.c_vector(O to "7) ;
1. RST , ClJ{ : .ln ~td_loq1C ;
15 Roue : out std_loQ'1c_veCto::tO to 1'}) ;

17
18 -- lU'chl.te~ure ------------ - - - - - - - ----
19 arehiteccure Sas_D_beh ot Bas_D is
20 .signal Roue tJql : .std loQ'l.c vecco:: 10 to 7) :
21 M01n - --
22 proce.ss (RSI, eut)
23 bt!Q'1.n
H
25 1f RST- ' l ' then
26 Rout_tç< _·OOOOOO(\O· ; -- o n peu t; aU:S:Jl. é:erl.r e
27
2! elait CLk'eyent. and C1Jt- ' l ' then
2.
30 1f Rl.n-·XXXXXXXX· then
31 Rout _ tap<-"OOOQOOOO· ;
32 elu:
33 Rout. cap<- Rin;
31 end if ;

36 end .if :
31 end process ;
!8
39 R.ou't<-Rout_Qq);
10
H end 8&s_D_beh:
12 - - ------------------------- - - - - --- - - -

K- Code VHDL utilisé pour réaliser une troncation

Library I eee :
U3e i eee .sed. loOlc 116'1. a11 :
u:se l eee .8ed.- 1ogic-a rleh. al1 ;
use l eee .st.d.:IOOie:"ione d. all ;
10
11 en~1ty tranca t.e ur la
12 port (trane in : ln std IOQic vectcr(lS dovnto 0) ;
15 trane:out : "td_I 09 îc_veceorP downto 0) ;
14 end tra ncate ur :
15

11 arch1tecture tranc of trancaeeur is


le. beqin
19 tranc_out. <- tranc_1.n U5 downto 8) ;
20 end. tranc;
115

Annexe B - Résultats de synthèse des lois de commande

Dans Cette annexe on expose les résultats de synthèse des trois lois de contrôle avec le

code VHDL utilisé pour faire sortir ces schémas.

A- Code VHDLjinal utilisé pour implémenter les trois lois de commande

L18RARY l e •• :1
use leee .•t4_10;lC_116i . all ;

t:NTITY PH!H_Adapt1ftn.c la
Genexlc INalJr!Ut,,: Integer :- 1:;) .
PORT 1 J.eLVelocity, MelJsVelocitv . itelId , Keesld . Heoslq : .ln std_lcOic_ vector ( (2 - ND.br8its ) - 1 downto 0) :
Tbetet : in -'td_loQlc_veCtor (( NBlbr8its - 1) downto 01 ;
aeset , Clock , ClockP'ifH : in "cd 10Q'ic ;
511 . S12 , S2l , 522 , 531 , 532 : out Std_lCQ'l.C
10 ):
11 !.SD PKSM Ad.aptinFLC;
Il ARCHln:ciuu: Archl. _ PMSM_ ).4&ptl".f'1,C of FK5M_ Ad.pu v e CLC 1S

"
l! Conponent lula.pt!.,e f a.zzy 1/1
Hi PORT ( [1:Z0l: . DotErr or : le std_1OQl.c_ vector 1 (Z'"Mabr!Uta ' - 1 downto 0) ;
11 R.eaer A.r , Cloct: Al' : in std 100:..c ;
le Vq : o ut !ltd_lc9.l.c_vector ,ï2*NJâ:lrS1ts , - 1 dovnto 0 )
19 ):
20 end Coq:Ionellt ;
21

2i port ( Mea,Veloc:l1:V. Measlq , aefld , He •• Id ; in :n;d. 1001e veetor (12" NJlbrSlt.a-1) downt.o QI ;
25 Reset Sljc11Jl:~e : ln std lCQic; - -
26 Vd : - out 5t.d_loglc_vect.or II2*'NlrIbrll1t.s- ll downt.o 0 1
21 );
2~ end Ca.pollen.t ;
2.
'0 Coaponent Pa.rlrTra.:-•.sfon:.e.t10n 1.s
31 port C Tbet._ , Vd . Vq : ln 5t.d l09ic vector 1 (N&b:dlit.-l) downto 0) ;
52 Ruet. FuJI: : ln .st.d 10;::';;;
53 valpha. Vbet.. ~ out. 5t.d=lo O:l~_ve::t.o:, (t Nab:r3.1t.- ::') downto 01
54 ):
'3 end ~nent. ;
56
'1
38
CQIIPC)nent. ",,"PtOl 1.5
PORT I veS , VQ : 1n .5td_logic_veceorl( NabrSlt.5- 1 ) do.nto 0) ;
" R.e.set SVPNH. CLI( SVPNK : in std lQ.:Jl.c ;
10 511 , S12 . 521 , 522' . S31 , 532 : Out
st.d_1001.c
11 );
12 end Coa;ponent ;

44 C<»lPONEBI TR1JNCATOR. a!.11:5


45 port. ( tranc ln : ï n .!!td 1001c vector 1 j2 · NJrbrB1 t._ ) - 1 downto 01 ;
16 'Re.set- tranc : ln ;td loQ1C ;
.7 foraDe -out : out 5td_Ïo Q 1c_VeCtor (I NIrobrBit.s- ll dO"Dto 0 )) ;
•e end CC»n'ONENI -;
••
50
51 CŒPOtŒN! stJB.ttRAC'TOR 2n8it.s
52 port ( Sou.1 , Sous2 : 1D .td_100ic_vector({2 .. HJtbrBlt.. I - l downto 0) ;

..
53
50
: in .t.eS loql.c :
: DUt. St.d_lOQic_veccor CC2 " Habr31t. I - 1 downto 01
116

56 END c:ot{P()fŒNr :
57
5! CClKPOHENT MDIORY 2n1!lu 1;1
S9 port l Itin : l.n n d log1c vecwrl(2 " Nab:z:81ta ) - 1 downto 0) ,
10 RST , CL.J.: : 111 seCS lO;l.C I
n Rout : out atd. 10;1.C ve:ctor (t2 · Nd:l::Bl.t. ) - 1 downto 0 » 1

.."
62

'5
tUS
DD CatPOflŒNT ;

s ignal
81gnal
- -

V'Lt~ l . Vd_ tq:tl , Valpba eep , Vb e ta tllP : ate!. loql.c vector 1 ( Nlrbr81ta-l) d01mto 0) :
vq_tllP . Vd_tJlp , r:rro r , Error_l . Dotf:r;or , l:rrorÏ d , !rr Or_ltd . Oot[rrorId : 5td_l09l.C_vf'ct.or 112 · Nzr.br8its ) ' : d01olllto 0, ;
.7
U BEGIN
.9
10 --III/II Régu16tc'.I.% de la fen.ion Vg 11/111--
71

73
14 Oot!:rror_c.~cul.&tlonl : MDIORY_2nBlt. port -.ap I Rl.n -> Error, Rn -> Reaet, CU: -> Cloclt, Roae .., !:rror_ll;
75
'U DotErro%_C41ClÛatiOl'.2 : 5t1!l.!iTRACTOR_2~itlll pert _p 1 Sous l -> Error, 5oWl2 -) !:rror_l. reset _ s cus -, ileset , !rreu.r -> DotError ) ;

1! Vct..RequJ.at10n : Iulaptl.'Ye_tuzzy PORI -Il l E:rror -> Error, Ootlrror -) Doarror, Re.ct_A,. -, Reaet, CI o clt_ J.f' -> Cloc:II:, Vq -> \i~taIp ) ;
7i
80

.," --111 111 R~u 1 ... e ur de la Yen_ion Vd 111111--

53 -- R.~qu l ac.~ ur T Io\!


••
IS~ Error_ ca.lculac.lonl : ~UB3TRACTOR_2nBlt!J porc. _p 1 ~ ou 5 1 -> Refld. ~ou !l2 -> HeasId, r eae t _a oua -> lle:let. Err e ur '" ErrorId) ;
••
47 DetError_calcul.tian' : ~T_lnl51.ta port œp 1 Ri n -> I!:rrorld, ~t .. > Re:let, CU:: -> Cloclr: , ~Ut -> I!:rror_lld ) ;
••
S! DotError_calev.le.tJ.o:::l4 : ~UBSTRACTOR_2o.Blta port _p 1 Sou a l - > Errorld, Soua2 - > Error_lId. re:.et_.s ou .s - > Re:let. Erreur .. > Dec.[rrorld) ;
'0
91 Vd_Requlat10 D : ),daptlft_fun.v PORI &al' 1 [rror -> Eoorld, OotError -> OotErrorld, Re.set_Al" -> k.et, ClOCIr:"_Al" '"'> Cloclr:", Vq -> Vd_c.p ) :

..
.,
92

•5
-- Rt:qulateur Hode Gll.s:tarJt

•• T1I.ONClJOil nBit. port &ap ( tranc 1.%\ -> Vq tap, Re.et tran c -> Re.et,
.S
97 :
- tra n e _ou t. ;> V~aqll } ;
••
100
tru::1catlo~ : 11WIIClUOR nB.U:. per t .ap (tranc l.n -> Vd tlqI. Re!lt:t. t.ratlc -> ~e!let.,
- tra n c_out.- -> Vd_tÇ1):
101
102 -- llIpOa1t.!.on de 1. T~lon Vd • :t~r o
10.
104 --Vd_ tac <- · 000000000000· :
105
106 --111111 Tr&n:l!o:aat10n full: 111111--
107
10e
ltJ1
110
111 --111111 SVPWM 111111--
H2
11.
11.
"'
11.
,,.
l17 !NO Arehi_fK5tt_MçtJ.ftfLC:
117

B- Schéma du circuit « Première loi de contrôle» réalisé sur un FPGA.

MEUORY)nBCs SUBSTRACTOR)nBlS TRUNCATOR)18lS ParlT ranSfoll1lMlOn

li' fë'
0:;

SV-"WM

SUBSTRACTOR)nBÊ

- ,.. -------i-I ....


!!.__ M
..
·.
_..
~
118

C- Code utilisé pour calculé les fonctions d' appartenance

LIBRAII.'r iue;
~e ieee.setS loglc 116L a11 :
ENlITY eELONGIHG FOOi.CENTJo.Gl! i:s
Genedc INlIbr-Blt.;; l.nte;er :- 12 ) :
PORT I De.u,l , De.ta2 : in stti lOQ1C vec 'to r I 12'" Nr:brBlta- l ) dovnto 0 ) ;
Rent 8elonGP : in .std 109 1~ ;
SYit:chinqSiqnal : in ~ëd l oqic vector ( 3 downto OJ ;
PIl , P12 . P13 , PH , PIS , - -
PZI , P22 , P23 , Pl'! , P2~ : OUt std_1 OVl.c_vec tor ((Z-NJl!.brBl.t:,s- l) c1ownto 0 )
10 ,:
11 DIO StLOffGLNG POURCtHTAG!:S:
12 ARCBtT!:CTOR.! Arch.1 8!.LONGtNG POORCDfl'J.GtS ot Sl:t.OtfGING POURCENTAGES 13
13 -- CœpoS&l1t8 :lu aÊLOH!;IN:i_f'ÔoacDrrAGU- - -
l<
1$ Companeltt Poureent&Qe
part ( Data, Bi , 80 , Bl! : J..n stc1 lOQl.c v ector (I2 - Nlrbr!lit.- l ) dovnt.o 0 ) ;
"
17
10
Reset_Prct
Pou.ccentage
in nct:l oqic;
out lI t c1_1oc;J lc_vectQ:r 112"'*brlUt.- l ) dawnto 0 )

"
20
21
"
end Ca.-.ponent :

22 Ca.ponent Hu.1
23 port ( 1 ntl.nl , NB , N S , Z, PS , PB , tn.fl.Q.l. , 4eta l , data2 : .Ln stct loCl.c v ecta r«(2 '" Nabr!J1tlll ) - l downto iJ l ,
24 S;nr,c:u.nQ'S1gnaï : 111 ~td lcO::l..c vector (3 doVnto 0 ) : --
25 Reset Huxl : 1n 5t::l 1001.;;: -
26 Pte.ge:lnl , Pte.Q'e_ln.2", Pt4ge_In3 , ciata : out "td_loQ'l.c_vec tc r (( Z - lŒbrBlt.tJ j - J dowtlto 0 )
2'7 II
28 end. Coçonent :
20
10 CCJq)Qnent Deauxl
11 port C P : 11:1 !!It::! l 09l. C;: v e c t c r (t2 '"N!cbrIUt. I - 1. dC'lfllte 0 ) :
~2 ~w1t.c.hin951qI1.. 1 7 in std lCQIl.C v e cter ( :!J downto 01 ;
,., Reset Deauxl in "td l oQl.c : -
~4 Pl _l , Pl _ 2 . Pl_ 3 . Pl_4 , Pl_S ,
'5 P2 _1 . P2 _ 2 , P2 _ 1 . '2_ 4 , P2 _ 5 : out std_1 OO l.c_ve c t or lC2" NIrJ:,rBl.t,, ) - 1 dOlol'Dto 0,
....
'fi
,,.

•0
);
end CoIIIpone nt ;

41 -- Sl.rpl.al.:.Jl de 11..130n--

..
.. 1 .1qnal l:ltl , int2 , 1..nt3 , int" , lnt5 , l.nt6 , Ulti , inte , :t.nt5l , Ult.lO , Ptage loI ,
.. , Ptaqe_In2 , Pt.aqe_In3 , œta , PourcentaQ'e.s : std_loQ' lc_v ect.or Cl l - Nzb;Blt.- l ) dovnto :1) :

lJtd_1 09lc:_ ve c t or IIZ " lfu,br!llt.- l ) dawnto 0) ;- 10 111 1111C'lCl1100C·OHllOtil>:J " ; --"n111 1l010l:'lOO.l";
"
il
censtut
constant
P_MS
P_K5 "td l~ lc ve c t or (IZ .. HB:tIdUt.- l ) doVDto 0) :- " 11l1111l0 1 ~1110aOû10l{)(Jl· ; --:'111:':'11 0 1011101

..
<7
••
50
51
con. tant
con.t.a.nt.
conet.ant
con .. tant
conetant
P t
P-P'
P- PB
I~inl
1 nfin1
sta-lDQ1C- v ecto r
5t:S-lOQl.c-vec-eor
"tel-1 OO lc - .-ec t o r
5t.:S -109~c-VeCt or
lIt.d-l09l.C- y ector
((2 " KEbr!lit.- l )
I(Z - Hlr.br!!lt.- ll
1(2 *Hlrbr91t,,- 1 )
((2 *H'!IbrBits- l )
(IZ - Nl!brBit.JllI- 1 )
doWnto
downto
downto
dovnto
downto
0) ;- " OOOOC'OOOOtiCOO~OOC~OO()OOO · ;
0 1 :- "OOOOO~()OlCl()OO ll l l ()l(ll:n" ; --OOOOOOOO!OlOOO':'l
0 ) : - " 000CO(011)1(1C:0111 10101110 · ; --000000 010:00 0111
0 ) :- · 011111111111111111111111" ;
0 ) : - " 100COOCQOOOCOCCOOOOrlQrlOO- ;

..
52
53

55
conetant
con.tant
conetant
constant
V:NB
V_NS
V Z
v: PS
5td: 1C19,iC:.-ector
5td_l oql.c_vector
lItc1_1oo:.c_vector
!lt.d_ loql C_Yector
1 (2 · Nl:br!lita- l)
1 (Z " NEbr.BltJlll- l )
IIZ · KàlrlUtll- l )
((Z · iœbrBit..s- l)
downto
downto
downto
dOWDto
0 ) :- " 1111111010111000Q1010010 · ;
0 ) :- " 1l11l1l10lQ1110CCOIOI001":
0 , ;- " OOOOQOQOIJC;OCOCOOl1~OO>:)OOQ " ;
0 ) ;'" "(01)0000l1 1 010<;'Oll11010111 " ;

5.
59 8I:GDf
60
61
6Z Multiplexeur ; Huxl port _P 1 1 n l ini -> 1 nlini, Na - > P Ne, N S -> PliS, Z -> P Z. PS "'> F ~. PfI -> P PfI,
" lÎÏU.n1 -) In:1.ni, data I -> D..tal , -data2 -;,. Dae..l, Swltc:birlJ;Sl.~;1 -> SW1tCMnO'iqn .. l,
,.. Reset Hu.x l -> Reliee. klonGP, Pt.oe I n l -,. Ptaqe IDI, Pt .. oe 1112 -> Ptaoe 102,

,.
65 PteQe:tn3 -) Ptoge_Ïr:3. d6ta. -> caita ) : - - -

,.,.
67 rO".lrcentaçe port _p ( Data -> data, Bi -> Pt.ge_lel, !!O .. > Ptage_Ie!. BJI -> Ptage_ln2. Rl!:set_ prct -> Reaet_!elo!l.GP.
Pourcetttage -) Pourcentagell ) :

70 DeIlultiple.~ur ; Deawcl port mail ( P - > Pourc e nt ages , SvitchlngSignal - > SVltch1.ngSl;nal , Rellet I>o:uxl - > Re5et BelonGP
71 , P l I -> PlI, PI '2 ..> PI2 . P I 3 -, Pl!, P l .. - , PH. Pl 5 -> 1>15:-P2 l -> P11. P2 2" -> P22,
72 PZ: ) -> Pl3 , Pl: 4 - , P2 .. , P2: 5 -> P15 ) ; - - - -
70
7<

7.
119

.- dèclaratl-:l r1 de, bl..b110t h èque.


11brary 1e_:
IUle le •• •• td loq1C 116t. al1 :
ua~ leee . .IIItd:lQ91c:,iQned. al1 : --pcn..r t • .lre l '.dd lt.lon

-- clèc1aratlen de l'f!ntl.tê
entlty POUfCenea'le 1.
Genetic INlmt !U.t l : U:.tl!Ql!r : .. 12) :

,.
U
port 1 Da t a , ~l . Bo . 8 .
ae3t t_Prc r
Pourcent.age : out.
: ln .t.d lOQ1C ve ct.OT Il ' · ...,rl!l.lt..- l l doomt.o 0) ;
: in , teS-l~lC:
et.I1_10Q"1.c_vect.or 117 - lIwbr81t..- 1) dOWlto 01

"11 e.nd Polu·ceatav. :"


•• dèclaratlo n de l'arch.i'C.~Qre
16 arcblt.eC t.1olre. Poureent.a'le_l of Poureenta'le 1.
n
"1.!
20
CCHPOIrDfr MI11.TIfLI!.lI. 2~lU
port I D H.!t..; E M!1a : in .atd lOQ.l.c "Yec:torl(2 · *br8iu- ll downt.o C) ;
21 Rênt H : in n=-
1o;l.c : - -
2l r KSa : out nd-loOle ve.ct.!J:"! U · Hlfbrl!!l1.t. ) - l downto 0 )) :
,.
2S UfOct»tPOll"DfT ; - --

CDHPON!'lr1 5U8.snUoCToa 2n8.1t,


pott ! ,ou..I • .50\ls i : 1rI .tli l!;IQlc "ectorIIJ · .du::81t.- l) dOWDto 0) :
2" n,et -;- in ,id lOoQic :

0,
SOUlt

2! : out 't.d_ l~lc_vect.Otl 12 · !liûlrB1t.- l1 dCNnt.O


29 1:
30 oro COHPONlJft ;

":u CCMPONElfl TaflIICA.TOa 2nBiU


port Itr azlc !..n : In
n :::1 loq1C vectcr( (t- !III!":rl!lltS ) - 1 c1ovnto 01 :
3t R.e.,e t - t. r anc : in :;td loQu:I
35 t ruc· OUt : out etc1 leç.l.C v eeterI12 -·N llbr81t.- l l downto 0) ;
'6 enc1 COKPONDIT ; --

"
SI COHPOlŒlCt ~ 2~lu
S9 PQ1:t 1 A l'CSUl, 8- H3ll1 : in e tc1 10",1C vn:t.or l(2 - M!abrlh,.t.- ll dovnt.o :.) :
tO - rnet A : - iD .lItd loç1e ;
'Il C H!a :
OUt et.d 10Q"1.c we eto:I (2 " *brlllt.- ll dO\mUl C·)
42 . :- - -

Denua. : atd 1OO1C :


Rual , Nua2 , - 1ntl , 1l1t2 , l.e.t3 , .lntS,l...n t ' : ~td loç1.c vec"to r
" : .t.d_l091c_ve c t.o:r 114. "'ltI!tI:r!it. ) - l ~t.o 0) ;
112 - *11rllt.- 11 c1OWIltO Cl :

"
ft
COn:Jt.llnt. ZeroHl.llt. : nd 109.1.<: v-e,ct.or 112 · ...,t8l.t.- 1I dovnto 0) :. " O!l('O:"00000000011010001P : -- - 011001000000000000000000 · ;-- 0 1 1001!001!00110 --0.71 11 5
CO"nata.!'lt Zeres,.. : nd_loQ'1ë_vector i (IIIs:br..S1 t.- l) ~to 0) :- · 0101000000000 00000000000 ·; - - 0100110011001100
50 beOi.n

.,"
pree..... (o.ea,l!h,IkI,a.. )
"arlabllf Mt-.l tJIp, Uua1 t.Ç : .steS loql.e ~ct:or (U · a.t:Irlll.t,- I) downto 0) :
..attable o...cœ_ t.p : . t.d. 1OQl.c : - -
54 .ariable Cl uaP
: .n d l001e "ector ll(2 - tt.brlll.t.w I - 2) dovnto 0 1 lothen .., ' 0 ' ) :
55 varlabllt C2- a:p :,tc1-1OO1c-"ector l((2 " Nasbr81t. ) - 2) dOWllto 01 : - (ot.her. -> ' 1 ' 1 :
~Q~ - --
51' J.t (Data , !11 ) and IDa t a < 8. ) then
se
59 if CDat.a <- ~ ) and (o..ta , 8i ) tben
40 lltal <- Dat.a;
61 )1..-2 <- !51;

"
fit Den\a <- ' :" ;
'5 eh ...
'6 o..n.... <-
' 0 ';
6i end H : 1
61 el. 1t ( Data <- Sa ) anc1 (Data ' 80 1 then
" lIual <- lb:
1'0 )I\lIIl2 <... o..ta;

"
1'5 Denta <- ' l ';
it elae
15 o.c.... <- ' 0 ';
'6 end 1f:
1'1' el..,e
1e
19
"u.l
NIa2
<- lether. -, ' 0 ' ) ;
<- l other, - , ' 0 ' ) ;
10 Denua ('- ' l ';
III end i f :

e, lf1A1 <"'Iothers - "O') ;


It lIUMl ('- (ether., -,. ' 0 ' ) :
1115 De.r:r.3 <",, ' l ';
a6 end H ;
'1' .nd prec_a ;
.! .5:N:1atraetion 1 : 5UB..5TJU.CTOR 2n81t. port _p (Soua l "'> "'-l , 5oc..,2 "',. 1IlJa2, Re s et s oua -> Reset Pret., Erreu r -> inti ) ;
59 proee . . (De.nu;. int.l ) - - -
90 "atlable Cl UIP ::IItl1 1001C vector l{(2 · Ma.br8.lta }- 2) dovnto 0 ) :- (ethen -> ' C ' I :
91 variable C2- tlql :stcl-l09ic-vec t or ll(2 · Haln"Bit. ) - 21 downto 0 1 :- (otber. -, ' l ' ) :
tJ ~Qin - --
9' if DenUKi. - ' l ' t.ben -- Pou.:: 'v1t.r la divl.l.on .u.r (Bo-~il, ya dew: CIl.
,.. 1r:otl <.. 1lltl: -- Le p:-ea1llr ca. : l e df;nwUtr .. teur .Qal e a 0 .995, dan. le c:a. 01,1
'5 lnt.' (- ' 0 ' . C2_tllllJ;

'8 -- Le deu.aJ.eDe: e.st plWl triquent, le dUUllertat.eur eQ'alll a 0.005 Ile quart de l'wuve:-. c11l d..uc:.cl.lrt.1
,t Int2 <- l.ntl (J · Nàlr51t.- l) , lnt.l If2 - HdJrl!1t..-9) clovnto 0 ) ~ " e·ooGOoo · ; -- la on re-.pla e e 1 .. d l"1. lon pa r une 1W1t.1pl1eat1ofl par 200 .
100 - - et cet.te. QJ:6r.t.lon ellt r~l.cée par Utl dècal a.",e de e Rat..
101 1nt! C:" Zerohult;
102 enc1 i~ :
IDS end procea. :
H\llU.pUcaU.on : KOLTIPLIER 2nl1ita port _p ID KS i • .., 10t2, II!: KSlS .., int ' , Ra n t M "'> Re ••-c. Pret , T KSi • .., Ultt ) ,
105 Truncatlon : TRDlfCJ.roa lnllit. port _p (t; ranc ln '"') ln-c.t, Rea e t tt a ne -> ReHt- Prer., t t w out. ->- lnt5 ) 1
Ac141t1.oft : ADŒR 2nB1ta port ...p lA HSUI"", ";:tS. Il KSu.-> l.Dt~. - Re ae t A - , .e.;t Pret , C Hi1W' > 1..ftt6 1 t
101' Pcureenteqe c:- l!'1t6: - - - - - -
10! end Pourctnta",_ 1:
120

D- Code utilisé pour réalisé la tables des lois

LIBRAR.Y leee;
use 1eee . !I't-d 1001 e 11 Ei 1 . 811 ;
ENTITY RUle!lTable i !l
Ge.nerl..C (Rtt.èrBit!l: 1ntege:r ;- 1 2 ) ;
PORT ( Pl1 ~ Pl:!' , Pl3 , Pl .. , PIS ,
P2! , P22 , P23 , P2i , P25 : .ln !I ~d_loQl.c_ve c t: or { ( Z · Nlt.br!bts- l ) downto 0 ) ;
Re!let CS ; in ;!! c d 1001.c;
NPWl , -Npv2 , Npw3 , - Npwi,NPW5 : out !ltd_loQ1.c_ veccor « 2 .. NttbrBit!l- 1 ) downto 0 )
) :
10 Dm ltulesTable ;
11 ARCHITECTUR.!: lu'cb1_lWlesTable ot RuluTabll! l.l!!l
12 - - Ccnc:po!lAnt8 d u Ro le.sT4bl e --
13

15 port ( !:nt«:f!l . f:nt;ree2 , [.ntree3 ; in :nd_loQ'ic_vect or (( 2 "'NmbrBic.e- l ) down'Ço 0 ) ;

,.
16
17

19
Reset_M1nMa.x : ln !l td_lo;1c ;

20
21
22 -- S lqnaUll: d.e 11&.1.8 0::'--
23 sl.gnal maltNB . u.a.x.NBl , ma.xNB2 , maxNB3 , .IIIUlXNB1 , max."ŒS , maxNB6 ,
24 aa.xNS . masNSl , JM.XNS2 , .ma.xNS3 , maxNS1 , maxNSS , ma.xNS6 ,
25 &&XZ , 1I4XZl , &aJr.Z2 , maxZ3 . sa.xZ1 , JU.xZ5 . maxZ6 ,
2. EaltPS . lLIUlPSl , rLlUtPS2 . ma.xPS3 , œa.xPS1 , maxPSS , maxPS6 ,
27 ca..xPB , IUUl:PBl , a,alCPS2 , maxPB3 , maxPB1 , ~PB5 . maxPB6
2. !lt.d._l t101.c_v~tcr (( 2 '"' NIIb:r81ts- l ) downto 0 ) ;
2.
30
31
32 BEGIN

31 aaxNBl <- . oth~rs -> ' O' ) :


35 a.a.x.NS l <- ( oth~rs -> ' 0 ' ) ;
36 a:axZl <- (ot.here: -> ' 0 ' ) ;
3'1 &aXPS l <- (ot.hers -> ' 0 ' ) ;
38 II:4XH I ( otb~rs -> ' 0 ' ) ;
39
10 - -proces!I ( P l l , P"l2 , P.l 3, P li, P1 S, P2 1 , P22, P23, P21 , P25)
11 v a r1.abl e Hi..l'l tlq) , Kax_ t:.!IIl ~t.d_lOOl.c_vec t;. t1r nS d ovn t o 0 ) ;

.
12
13

15
16
bt!OUl -

- - - La na.t rJ,. ce de !Ionie - - - --


P 2 1 22 23 2-1 25
17 11 (NB!Œ NB NS Z]
18 12 I RB H5 NS 2 PB I
49 PlI: - 13 I liB 9 5 Z PS PB j
SO 14 INB l PS PS PB I
51 1S (2 PS PB PB PB )
52
53
51
S5 - - - C4J. cuJ. d~ ma..xNB

5.
57
5. PUnKaX_KB2

.,"
60

62
.3
••
•S
66 lt1rJliax HB6 lUnxa.a port IUP 1 Entree l .. > Pl 4, [l'ltree2 .. > P21, Entree3 '"'> -...a.xlœ6, lte.set_Hl.nJotu '"'> Re"et_CS, Hu -> ll.axNB ) ~
61 ---- cilcul de a.uNS
••••
70
71
72
73

,." ---- Ca lcul d e -.JI: I


KinKax_Zl H1nHax port: .ap 1 En tree l --> Pll . Entr!!!e2 -> 1'2.5 , Entre!!!3 --> D&&xZl, Re.!let_HJ.nMa..x -> ae:eet_CS, Ka.x -> zax%2 1 :
",.
77

,.
SO Ki.nHax_Z3
Sl
.2
53

.••
S4 KinH6x %5 Hi.roHu port aop 1 Entree l -> PIS, rntree2 -> P2 1. [ntree3 -> IUJCZS , Re"et_ HinHa.x -> Re.set_CS, Kax -> &axl ) ;
55 ---- Ca lCUl de a.uPS

,
••••
90
91
il lU.nKax l'S. tu..cKax port . .p C Efttr~e l -> PIS, En.tr~el -> P22, En:tree3 -> It&xPS4, Jleset _JU.n.Max -> Re.et_CS, Hal[ -> :saxPS ) :
90S - - -- Wcul de _ lCN!!
91. H.i.r.Ka.z_fBl lU.nHaJr port _p C EDtree l -> P12. !:ntree2 - > PI S, Entree3 -> mAxPB L, Rellet HinMlllC .. > R,e.set CS, MIllC -> lI&XPB2 )
95 K1nHax_ P!52 K.1l'lHaJl port. sap 1 E.Dtree l -> Pl3, Encree2 -> Pl5, Ent.ree3 -> x.aJCP82 , Reset:H.1nHa.x -> Re .et:CS , Malt -> a&ltPB3 j
91S ltinXaJr: PB3 M.l.œt.a.x port. .ap ( t'ntreel -> Pl4, Entreel -> P2 ~, EntreeS -> zaxP1U, ReJ,et MinMax -> a.e.et CS , Max -> . ."PB4 )
97 H.1.nK&:.::PSi lU.aHe.. port IUP C Entreel -> PlS, Entree2 -> Pl! , Entree3 -> maxP!U, Re.set- H.1.nH&Jt -> Re.set-C5. Hall -> Jl&JCP'BS )
9! ~x F!5S lUnKaJi part. up ( ~tree l -> PIS , Entree2 -> Pl4 , Entree 3 -> &a.JlPSS , Reeet- HinHax -> R.e:tet-CS , Kax -> . .xPB6 )
99 Kl.nxa.x=P86 )U.c)tax port up C Entreel -> PlS, Entree2 -> P2S, Entree 3 -> _xPB6 , Rellet::::H.1.nMaJC -> Reset=C5. Malt -> &a.Jl:PB ) :
100 --------------------
101 Npwl <- lfAxN3 ;
102 Npw2 <- x..d5t
103 lIPW3 <- &a.XZ:
101 Npw1 c- ....xPS :
105 HpVS <- &a.xPB;
lOIS DIO Arctu._Rule.'Iable:
\2\

-- ~clue.tlon c1e.s bl.bl l.ot.h~qu e .5


10 l1brary i.eee;
Il US!! l.eee . • ~d 1091.0 1161 . 811 ;
12 ~e ieee.Std=:lOOic=siçned. all : --p ou%" t lltre l' a ddit.l.on

"
1.
1.5
- - décl a r a tion de l' e ntl. t e
en!:1!:y KinKa.x 1s
16 Generlc (a.b:rBit.,: 1.:'\ l:.l!o e : : - 12) ;
17 port 1 Encreel, ElItree2. Entree3 : in Std_log'lc_veCtor ( (2 " Nxb.rBlt.a- l) downto 0 ) ;
l! R.eaet. K1.nHAll : 10 st.e! 109.10 :

"
20
21 ecd KiDKlo.x ;
Kax
l:
- : out !!It.d_loolc_VeCtor ( (' '" KJrbr51ta- l j downt.o 0 )

22
23 -- d ê cla r a ti,otl d e l 'archiu: c'ture
24 architecture Arch.1_KinK.ul of M.i.nKax ia
2S
26 beoln
27
ze proces5 (Ent.r •• l. Ent.ree2 , Entree' )
29 variable Kin tB!p . Hax c!p : 5td_JOQic_vect.or (f ' . Nn:br81ts- l) downt.o 0 ) :
'0 bcoln - -
31 if L"ltr.el >- Entre.2 then

..
"

35
H.i..c._UlP :- Entree2;

el!!!!

..
39
.0
end i f ;

.
4~ elae

' "4' Hax_ tql :- )tio_ tap;


••
.. , end if ;
50
SI Ku (- Ha.'l_tç;
S2 end process ;
53

E- Schéma du circuit « Deuxième loi de contrôle» réalisé sur un FPGA.

ParkTran!lOITNlJOn S\'PWU

L-:]
S\'-"wu

-~
~
TlUr.."onl

Vq-'leçuaoon
122

F- Schéma du circuit du régulateur mode glissant réalisé sur un FPGA

Lq·p (23
iq (23 :0)
:0)
Multiplieur H Troncateur :
Multiplieur ~
w (23 :0)
Soustracteur
& --+ id (2 3 :0)
Troncateur
Surface de
id (23 :0) glissement (5 .12)
Multiplieur f--
k d (23 :0) -

G- Schéma du circuit « Troisième loi de contrôle » réalisé sur un FPGA.

TRUNCATOR_nBù PartTranstmMtlOf1 swww

TRUNCATOR_nBb

~.Jleoullban
123

Annexe C - Publications et Contributions

A - En tant que premier auteur

Boukaka, S.; Chaoui, H.; Sicard, P., "FPGA implementation of SVPWM," New
Circuits and Systems Conference (NEWCAS), 20 J3 IEEE JJ th International , vol., no. ,
pp.l ,4, 16-19 June 20 13/NEWCAS.20 13.
Boukaka, S.; Teiar, H.; Chaoui, H.; Sicard, P., "FPGA implementation of an
adaptive fuzzy logic controller for PMSM," Power Electronics, Machines and
Drives (PEMD 2014), 7th lET International Conference on , vol., no., pp.1,6, 8-
10 April 2014.2014.
Boukaka, S.; Teiar, H.; Sicard, P., "FPGA implementation of a laws library of
adaptive control for PMSM," DCIS, 2015.
Boukaka, S.; Massicotte, D.; Sicard, P., "FPGA Implementation of SVPWM
Approximation," DCIS, 2015.
Boukaka, S.; Sicard, P., "Polynomial Approximation of SVPWM," Power
Electronic Letter. Soumis.

B- En tant que deuxième auteur

Teiar, H.; Boukaka, S.; Chaoui, H.; Sicard, P., "Adaptive fuzzy logic control
structure of PMSMs," Industrial Electronics (ISlE), 2014 IEEE 23rd
International Symposium on , vol., no., pp.745,750, 1-4 June 2014.

Vous aimerez peut-être aussi