Mise en œuvre FPGA temps réel d`un algorithme d`identification
Transcription
Mise en œuvre FPGA temps réel d`un algorithme d`identification
2006 Mise en œuvre FPGA temps réel d’un algorithme d’identification basé sur la mesure de données binaires • CEA – LETI – MINATEC • Laboratoire MEA (MEMS et Électronique Associée) • Eric Colinet • [email protected] Objectifs Un exemple de système mis au point au laboratoire : Accéléromètre Locadyn Trois objectifs : • Outils de conception systèmes – méthodologie : – Génération d’interface – Prototypage numérique rapide à partir de modèles • • Développement d’une carte interface capteur généralisable (Julien) Test de l’implémentation de deux algorithmes d’identification – BIMBO_inline – Moindres carrés récursifs 30/10/07 Christophe Le Blanc 2 Déroulement de la présentation 1. 2. 3. 4. 5. Recherche d’outils – méthodologie Algorithmes d’identification – BIMBO_inline Algorithmes d’identification – moindres carrés Algorithmes d’identification – chaîne globale Conclusion et perspective 30/10/07 Christophe Le Blanc 3 Recherche d’outils – Fonctionnement du service • • • • Un mode de fonctionnement Différentes spécialités => recherche d’outils et de solutions plus rapides Temps long pour passer du modèle à son prototype nalytical models inear & non-linear ontrol theory tools ystems engineering ircuit uilding blocks igh-level modelling ignal & noise C technology pecifications dentification arameters ompensator optimization e.g. Matlab) eedback lectrical engineering est methodology ehavioral (VHDL-AMS, Verilog-A) TL / Gate-level (VHDL, Verilog) djustments ransistor-level (Eldo, Spice) est engineering est nalog quipment igital e.g. ADMS) estability ixed-signal MEMS and E source Méthodologie actuelle empruntée lors de projets 30/10/07 Christophe Le Blanc 4 Recherche d’outils – cas du vhdl • • • • • Deux interlocuteurs Échange d’information Faiblesse : temps de développement LONG Spécifications Optimisation Modèle Simulink Validation Spécialiste Hardware modifications Simulation Modèle VHDL Simulation Résultats de Simulation Résultats de Simulation Comparaison Validation 30/10/07 Christophe Le Blanc 5 Recherche d’outils – première solution VHDL 1 • • • • • Cas de code VHDL Exclusivement des outils Mathworks Code synthétisable Rapidité Résultats ? StateFlow Blocs Modèle Simulink Simulink® HDL Coder Filter Design HDL Coder Xilinx System Generator for DSP Modèle VHDL Cosimulation Vérification avec l’outil Link for Modelsim Validation 30/10/07 Christophe Le Blanc 6 Recherche d’outils – deuxième solution VHDL 2 • • • • Code VHDL Nombreux outils – prix des licences élevé Plus grand nombre de solution logicielles Résultats ? Modèle Simulink RT Workshop Embedded Coder RT Workshop Ansi C Code SystemC Modèle StateFlow Mentor Graphics : CatapultC Université de Caroline du Nord : Outils de passage du Spark langage C vers le VHDL Celoxica ImpulseC Mitrion VHDL Cosimulation Vérification avec l’outil Link for Modelsim Validation 30/10/07 Christophe Le Blanc 7 Recherche d’outils – troisième solution – DSP • • Cible DSP, Texas instrument Résultats Modèle Simulink Link for Code Composer Studio Code Composer Studio Code DSP 30/10/07 Christophe Le Blanc TI : C2000 C5000 C6000 OMAP 8 Recherche d’outils – choix final Avantages Inconvénients • • Méthode VHDL 1 Outils Matlab Rapidité 1 seule conversion Méthode VHDL 2 Outils performants Méthode DSP 1 seule conversion 1 seul outil Quels résultats ? Outils de différentes sociétés Prix 2 conversions Quels résultats ? DSP Quels résultats ? La solution 1 est retenue Testée par la suite StateFlow Blocs Modèle Simulink Simulink® HDL Coder VHDL Cosimulation Validation 30/10/07 Christophe Le Blanc 9 Déroulement de la présentation 1. 2. 3. 4. 5. Recherche d’outils – méthodologie Algorithmes d’identification – BIMBO_inline Algorithmes d’identification – moindres carrés Algorithmes d’identification – chaîne globale Conclusion et perspective 30/10/07 Christophe Le Blanc 10 Principe des projets – Identification • • • • Différents capteurs développés à ce jour – Accéléromètre – magnétomètre Une structure générale (correcteurs – filtres) Identification : remonter à la fonction de transfert d’un système observé Les avantages d’une fonction d’identification : – Correcteur idéal – Correction suivant l’évolution du capteur - température 30/10/07 Christophe Le Blanc 11 Objectifs pour la carte • • • • Support de test Support rapide pour validation d’architectures Plateforme de tests pour clients Test de l’implémentation de l’algorithme d’identification BIMBO pour validation Capteur + ASIC FPGA / DSP Analogique – Numérique Identification Contrôleurs PC Capteur 30/10/07 Christophe Le Blanc 12 Objectifs – Synoptique détaillé (suite) Entrée test Julien Christophe Gestion des CNA alimentations Interface, Communication Capteur + ASIC Identification: BIMBO Temps réel Correcteurs (rétroaction) Gestion de l’énergie: Managy Recherche d’outils 30/10/07 Gestion et config ASICs Locadyn, Gyro, .. PC gestion CNA test capteur Partie numérique : FPGA et/ou DSP Interface utilisateur Convertisseurs ΣΔ, .. Capteur Ensemble Chaîne de retour N/A Alims CNA Interfaces A/N Entrée test (ΣΔ) : CNA Partie Analogique Christophe Le Blanc 13 Partie identification • • Caractérisation de systèmes Différentes solutions – Méthode globale – Moindres carrés récursifs – BIMBO (Basic Identification Method using Binary Observations) • Problèmes : – Convertisseur A/N performant => passage en 1 bit (ΣΔ) – Calibrage de l’algorithme BIMBO Système observéobservé Système uk u k 0 ? 0 yk ? Modèle échantillonné ajustable du procédé Modèle échantillonné ajustable du procédé Paramètres du modèle Paramètres du modèle sksk yk BIMBO_inline : y Approximation de y s yk k sk Algorithme d’adaptation paramétrique (A.A.P) Algorithme d’adaptation paramétrique (A.A.P) : BIMBO_inline : • Algorithme statistique • fournit les estimations : – De la réponse impulsionnelle du système observé – Du signal y (pour l’algorithme d’identification) Moindres carré 30/10/07 Christophe Le Blanc 14 BIMBO_inline – Principe • • • Génération d’un bruit blanc binaire riche spectralement Étude des observations u et s uk Estimation de la réponse impulsionnelle Fonction de coût : J= • • 1 N 0 p 0 yk ? Modèle échantillonné y Yk et estimation de la réponse impulsionnelle ! XOR(s(k ), sˆ(k )) k =1 = 1 décalé de i: Si p lien direct entre l’élément i de la réponse impulsionnelle et J sk BIMBO_inline N A l’aide de statistiques, dans le cas d’un bruit blanc binaire : !h Système observé f-1 ( % erf "1 (J ) & #= 0 ˆ ) 2& h hp ! p & 1 + 2 erf "1 (J ) 2 ## ' $ 1 N J = ! XOR(s (k ), sˆ(k )) N k =1 ( ) n yˆ (n ) = " u (k )hˆ(n ! k ) k =1 30/10/07 Christophe Le Blanc 15 BIMBO_inline – Résultats de simulation h0 et h1 (S )est un filtre de fonction de transfert : 0.4304 z !1 ! 0.4304 z ! 2 = 1 ! 1.8 z !1 + 0.9 z ! 2 ( ) Hz -1 y et yhat Convergence, stabilité incertitude sur h(n) conforme au modèle 30/10/07 Christophe Le Blanc 16 BIMBO_inline – configuration – rôle de (a,b) • • Compromis entre vitesse et précision suivant le rapport a /b Solution : (a,b) variable Convergence de h1, BIMBO_inline version 2 pour différentes valeurs de (a, b) 30/10/07 Christophe Le Blanc 17 BIMBO_inline – configuration – rôle de (a,b) • • Compromis entre vitesse et précision suivant le rapport a /b Solution : (a,b) variable Comparaison entre h1 commandé par un couple (a, b) constant et h1 commandé un couple (a, b) évoluant suivant le signal ci dessous Convergence de h1, BIMBO_inline version 2 pour différentes valeurs de (a, b) 30/10/07 Christophe Le Blanc 18 BIMBO_inline – améliorations (2) • • Pilotage de l’algorithme : Commande du couple uk de paramètres (a,b) Système observé H sk yk s u BIMBO_inline yhat a b Nh étages shat Estimation de l’erreur & Commande 30/10/07 Christophe Le Blanc 19 BIMBO_inline – codage • • Mode % de portes Nombre Fréquence occupées de maximale de blocs fonctionnement – Code généré automatiquement 18*18 normal (cf. outils) Automatique 4163/67584 7995/33792 128/144 30 Mhz – Code généré manuellement 6% 23% 88% Manuel 6934/67584 6764 128/144 50 Mhz Résultats cohérents 10% 20% 88% Deux axes : % de registres occupés Résultat de la synthèse sur le FPGA xilinx 2v6000 Code ‘automatique’ Code ‘manuel’ avantages Rapide à générer fiable Plus fiable Choix d’optimisations Rapidité d’exécution inconvénients Combinatoires Difficilement débogable Non optimisé Moins rapide d’exécution Long à générer 30/10/07 Christophe Le Blanc 20 BIMBO_inline – Tests et Résultats • La cible : carte Nallatech Bennuey – – – – 3 FPGA Xilinx 2v6000 Banc pins de test Configuration par bus PCI Dialogue par liaison RS232 PCI : configuration du FPGA Modèle Bimbo_inline Système observé y 0 ? k RS232 (uk,, sk ) PC 30/10/07 Yk et estimation de la réponse impulsionnelle BIMBO_inline RS232 FPGA Xilinx – Nallatech Christophe Le Blanc 21 Déroulement de la présentation 1. 2. 3. 4. 5. Recherche d’outils – méthodologie Algorithmes d’identification – BIMBO_inline Algorithmes d’identification – moindres carrés Algorithmes d’identification – chaîne globale Conclusion et perspective 30/10/07 Christophe Le Blanc 22 Identification – principes • • • Identification du système observé A partir de l’estimation de y obtenue avec BIMBO_inline Moindres carrés - BIMBO Système observé uk 0 yk sk ? BIMBO_inline : yk Approximation de y sk Modèle échantillonné ajustable du procédé Paramètres du modèle Algorithme d’adaptation paramétrique (A.A.P) : Moindres carré 30/10/07 Christophe Le Blanc 23 Identification – moindres carrés – optimisation • • • Cet algorithme a été testé avec Matlab et Simulink Résultats cohérents et convergents Problèmes : – Rapidité – précision • Solution : l’ajout d’un facteur de coût λ Nouveau compromis entre vitesse et précision Estimation d’un élément de la fonction de transfert de (S) Pour plusieurs valeurs de λ 30/10/07 Christophe Le Blanc 24 Identification – moindres carrés – implémentation • Algorithme pas facilement implémentable en vhdl : – Division – accumulation • Adapté plus adapté à un traitement de type DSP (calcul matriciel, sommes de multiplications) : – > choix • FPGA + DSP • FPGA avec cœur de DSP • Finalement : cœur de processeur dans FPGA: – – – – – Leon3 : open core Architecture RISC 32 bit instruction norme SPARC V8 Format flottant 32 bits. Codage en C Synoptique du cœur LEON 3 30/10/07 Christophe Le Blanc 25 Identification – moindres carrés – Résultats • Résultats probants en simulation (Modelsim) :* – Problème de lenteur résolu par la FPU • Validation sur la cible FPGA : – Mêmes résultats qu’avec simulateur PCI : configuration du FPGA Modèle Bimbo_inline (uk,, sk ) Système observé 0 ? BIMBO_inline Estimation de la fonction de PC transfert 30/10/07 RS232 FPGA Xilinx – Nallatech Christophe Le Blanc 26 Déroulement de la présentation 1. 2. 3. 4. 5. Recherche d’outils – méthodologie Algorithmes d’identification – BIMBO_inline Algorithmes d’identification – moindres carrés Algorithmes d’identification – chaîne globale Conclusion et perspective 30/10/07 Christophe Le Blanc 27 Identification – chaîne globale – Matlab • • Juxtaposition de BIMBO_inline et de l’algorithme des moindres carrés Configuration pour choix entre rapidité et précision: – Choix de λ – Choix du couple (a,b) • Stade actuel : simulation (Modelsim) Système observé u 0 y s ? BIMBO_inline Modèle ajustable Paramètres y s Moindres carré A (3) estimé avec paramètres fixes et variables 30/10/07 Christophe Le Blanc 28 Déroulement de la présentation 1. 2. 3. 4. 5. Recherche d’outils – méthodologie Algorithmes d’identification – BIMBO_inline Algorithmes d’identification – moindres carrés Algorithmes d’identification – chaîne globale Conclusion et perspective 30/10/07 Christophe Le Blanc 29 Conclusion • Différents éléments traités à ce jour : – Outils et méthodologie • Deux outils choisis puis testés et validés • Leur mode de fonctionnement analysé – Identification • BIMBO_inline : de la modélisation aux tests Modélisation Matlab Simulink Optimisation : algorithme aujourd’hui paramétrable et quantifiable Codage Tests sur carte (non fini) • Moindres carrés : Modélisation Matlab Validation fonctionnelle Code généré et testé uniquement sur simulateur Connexion possible et paramétrable à BIMBO_inline 30/10/07 Christophe Le Blanc 30 La suite • Simulation et tests sur carte : – Chaîne globale • Test et validation d’un autre algorithme d’identification : BIMBO • • Choix d’un autre processeur de traitement ? Test des performances sur DSP 30/10/07 Christophe Le Blanc 31 Merci pour votre attention 30/10/07 Christophe Le Blanc 32 Identification – moindres carrés – principe • Algorithme des moindres carrés : T 1' F (t )* (t )* (t )F (t )$ "" F (t + 1) = %% F (t )! T ,& , + * (t )F (t )* (t ) # Système observé u 0 ? k ) (t + 1) = y (t + 1)! + (t )* (t ) ( s k k BIMBO_inline (T 0 y y k ( Modèle ajustable + (t + 1) = + (t ) + F (t + 1)* (t )) 0 (t + 1) Où : • Le système observé est de la forme : Paramètres du modèle s k Identification b1 z % d + b2 z % d %1 + ... + bnB z % nB % d 1 + a1 z %1 + .. + an A z % n A • F est le gain matriciel d’ adaptation &T • $ = [a1..an , bd ..bn ] est le vecteur des paramètres • # (t )T = [% y (t ).. % y (t % n A + 1), u (t % d )..u (t % d % nB + 1)] • " 0 (t )est l ' erreur à priori sur yhat • ! facteur d'oubli 30/10/07 Christophe Le Blanc 33