Introduction
La conception de circuits intégrés consiste à réaliser les nombreuses étapes de développement et de validation nécessaires pour concevoir correctement et sans erreurs une puce électronique. Une forte concurrence incite les entreprises de semi-conducteur à accélérer la mise sur le marché de leur produit. Cela implique des délais de conception de plus en plus courts malgré une augmentation de la complexité des circuits. Tel est le leitmotiv des industriels de la micro et nanotechnologie depuis les années 2000. C‟est pourquoi il est actuellement indispensable d‟utiliser toutes les solutions possibles qui permettent de réduire ce temps de développement.
Une des solutions est d‟exploiter la capacité des circuits programmables à émuler des montages numériques grâce à leur importante intégration. Ces dispositifs se programment rapidement et facilement. Ils permettent ainsi de vérifier en avance de phase le fonctionnement de montages numériques. Cela permet de corriger les défauts éventuels avant le lancement en fabrication des prototypes servant à la validation traditionnelle.
Ce stage s‟est déroulé à ST-Ericsson, entreprise de développement de circuits électroniques à destination d‟applications mobiles. Le travail demandé se situe à l‟étape de validation des circuits. La présentation de ce contexte fera l‟objet de la première partie. Cela amènera à définir l‟environnement de test et l‟objectif du stage. Le but est de vérifier le schéma du circuit avant son implémentation sur un circuit intégré à destination du client final. Ce qui explique l‟utilisation d‟une solution basée sur un FPGA.
Dans un premier temps la mission du stage concerne l‟étude et l‟évolution d‟une solution FPGA existante. L‟augmentation des besoins des concepteurs a amené à prévoir un circuit de plus grande intégration. Cette évolution a engendré plusieurs modifications au sein du projet. La présentation de ce travail fera l‟objet de la seconde partie.
Le sujet de stage porte sur la conception d‟une chaîne de traitement numérique pour des applications audio.
La solution globale
L‟objectif de cette solution est de valider le fonctionnement des IP développées par la BU AMS. La figure 5 présente la solution globale : elle est composée d‟un logiciel de pilotage, de la carte de développement d‟un FPGA et d‟une carte de validation. La présence du FPGA est nécessaire, car il fait le lien entre la solution logicielle et matérielle. Le but est quelles puissent se « comprendre » lors des échanges de données. Dans ce cas, le FPGA est utilisé en tant que microcontrôleur .Ce qui signifie qu‟il interprète les commandes venant du logiciel et les renvoies au circuit situé sur la carte de test.
C‟est la première fois que le laboratoire développe une solution générique. Ce qui signifie qu‟elle doit s‟adapter à tous les IP développées dans la BU AMS. Avant cela une solution complète était développée pour chaque IP. Cette stratégie amenait à répondre de manière très spécifiqueaux contraintes du produit à valider, mais cela revenait trop cher et prenait beaucoup de temps.
Cependant, cette phase d‟expertise a été indispensable car elle a permis une amélioration continue et très approfondie des solutions développées. Aujourd‟hui, il en découle une maturité suffisante pour garantir la réalisation de développement générique et modulable suffisamment élaboré pour convenir à tous les IP.
La conception logicielle
Afin de tester le produit, l‟utilisateur va s‟aider d‟un logiciel de contrôle qui a pour but de transmettre les commandes au circuit. L‟intérêt est de sélectionner l‟IP que l‟on veut valider ou d‟activer des modes de fonctionnements particuliers. La solution logicielle remplace les cavaliers manuels précédemment utilisés. La complexité du projet demande une expertise poussée de l‟environnement. C‟est pourquoi, il a été développé par un sous-traitant en collaboration du laboratoire de validation.
Cette solution se présente sous la forme d‟une interface graphique en anglais GUI pour « Graphical User Interface », dont le but est de permettre à l‟utilisateur de sélectionner ses instructions. Ces dernières sont représentées par des valeurs classées dans des registres à une adresse bien précise. Le Tableau 1 présente la table des registres proposée par l‟interface graphique.
L‟utilisateur sélectionne un registre et lui alloue les instructions grâce aux boutons de sélections correspondant aux bits du registre.
La mise en œuvre de l’évolution
Le processeur embarqué dans les FPGA Cyclone et Stratix s‟appelle le NIOS. C‟est un produit spécifiquement créée par Altera. Le NIOS du Cyclone a déjà été programmé pour d‟autres applications. Le but de cette partie est d‟adapter cette solution au FPGA Stratix.
Le NIOS II
C‟est la deuxième génération de micro-processeur d‟Altera. Il est passé de 16bits à 32 bits. Ce système contient un CPU , mais également des mémoires (RAM, Flash), des DSP et des ports d‟entrées/sorties utilisés pour contrôler les périphériques présentes sur la carte ou à l‟intérieur du FPGA. Il est basé sur l‟architecture matérielle RISC , ce qui signifie que son jeu d‟instructions est réduit. Il est opposé au microprocesseur CISC , où son jeu d‟instruction est complexe, c‟est-à-dire qu‟il comporte l‟ensemble des instructions.
Le principal avantage de ce processeur est son cœur logiciel lui permettant d‟être configurable.
Ses paramètres sont ajustables. Son jeu d‟instruction peut alors répondre à des besoins d‟applications spécifiques. La modification de la solution profite de cette modularité.
L’environnement de programmation
Deux étapes sont nécessaires à la programmation du NIOS. La première partie concerne la conception du système avec le processeur embarqué NIOS II :
Construction de la plateforme matérielle
Choix des périphériques matériels et des interconnexions.
Intégration de ces périphériques
Cela se fait grâce au logiciel Quartus. Cet ensemble d‟outils est développé par Altera. Il fourni plusieurs environnement de conception dont l‟outil de conception matérielle : SOPC Builder.
La deuxième étape concerne le jeu d‟instruction programmé au niveau logiciel du NIOS en langage C. Altera a prévu un environnement de développement appelé Eclipse qui permet cette programmation, ainsi que la compilation et la simulation du programme.
Les modifications apportées
La phase de construction matérielle
La construction matérielle consiste à récupérer des briques de fonctions qui sont utilisées pour l‟application. Ces briques sont aussi appelées IP. Elles peuvent représenter un CPU, une PLL , des mémoires, des leds ou des boutons poussoirs disponibles sur la carte de développement.
Chaque IP est synchronisée sur les horloges de la PLL ou du CPU. Enfin, une zone d‟adressage du registre leur est allouée, ainsi qu‟un numéro d‟interruption. Ces IP sont disponibles dans une librairie proposée ou non par Altera.
Une fois les IP récupérées et paramétrées, le logiciel Quartus synthétise cette construction et la transforme en un fichier VHDL. Ce fichier est implémentable dans tous projets FPGA.
La phase de développement logiciel
L‟environnement de programmation (IDE ) Eclipse permet la saisie des instructions du processeur NIOS en langage C. Ces commandes sont ensuite traduites en langage machine au processeur via la phase de compilation.
La Figure 17 présente le schéma du flot de communication. Un utilisateur communique via une interface graphique pour envoyer des commandes au format ASCII vers le FPGA. Un Bridges joue le rôle d‟interface entre le logiciel de pilotage et la solution matérielle. Il permet de détecter le protocole de communication (USB ou Ethernet) afin de savoir sous quel format doit être envoyées les commandes. Le NIOS interprète ces commandes et l‟envoie au destinataire. Il gère également les informations retours à destination du logiciel de pilotage toujours en passant par le Bridge. Le programme en C concerne l‟exécution des commandes reçues par le NIOS.
Conséquence sur la structure existante
Pour comprendre la structure du programme qui est implémenté dans le FPGA, voici une description des fonctions du FPGA.
Les rôles du FPGA
La communication digitale
Le FPGA fait l‟interface entre le circuit à valider et l‟interface graphique. Ce logiciel utilise le langage VISA pour envoyer les instructions. Cette programmation est dédiée normalement à la configuration et à la communication avec les instruments de mesure.
Pour communiquer, le circuit utilise quatre signaux : un signal d‟horloge permettant de séquencer l‟envoi des données, un signal de données d‟entrées et de sorties et un signal d‟adressage.
La solution actuelle propose deux protocoles de communication entre le GUI et le circuit.
1. Le premier mode utilise la communication I²C, pour « Inter Integrated Circuit ». C‟est le nom d‟un bus qui comporte 3 signaux, un signal de données séries (SDA), un signal d‟horloge (SCL) et un signal de référence, la masse.
2. Le deuxième mode utilise la communication SPI, pour « Serial Peripheral Interface ». C‟est également un bus de données séries. La communication est full duplex. Le bus SPI comporte
4 signaux : un signal d‟horloge, deux signaux de données, l‟un généré par le maître et l‟autre généré par l‟esclave et un signal de sélection d‟esclave.
Le prototypage de circuit
C‟est le cas des filtres conçus durant ce stage. Ce n‟est pas la première fois que le laboratoire propose cette vérification en avance de phase. D‟autres concepteurs ont commencé à bénéficier des avantages de cette solution. Le FPGA s‟impose de plus en plus en tant que solution de validation. C‟est pourquoi le projet est déjà structuré pour accueillir ces montages de prototypage. La Figure 18 présente le projet d‟accueil des montages émulés.
Partie Commune
C‟est la partie qui est assimilée au cœur du système. C‟est elle qui contient les montages qui ont été développés pour valider les IP conçues dans la BU AMS. C‟est bien évidemment à cet endroit que les filtres du convertisseur à valider vont s‟implémenter. Cette partie est commune aux deux FPGA. Comme la précédente, elle a été structurée grâce au logiciel Quartus. Elle ne reçoit que les données envoyées par la partie projet et les lui renvoies une fois traitées. Cette partie comporte donc tous les blocs qui constituent les tâches que le FPGA doit effectuer. Chacune d‟elle est représentée par un symbole qui comporte les conceptions des montages numériques, sous format VHDL ou sous format de saisie graphique. Chaque nouvelle fonction sera donc intégrée dans cette partie.
Partie Processeur logiciel
La partie processeur logiciel a été présentée dans la partie précédente, lors de l‟évolution de la solution. C‟est bien évidemment une partie spécifique à chaque projet, Cyclone et Stratix. Son rôle est d‟interpréter des commandes et de les renvoyer aux destinataires comme le circuit à valider par exemple. Il remplace ainsi la présence d‟un microcontrôleur externe.
Bilan de l’évolution de la solution
Cette étude a permis de connaître les caractéristiques d‟un FPGA. Ce qui a amené à constater les limites de performance de la solution existante. C‟est pourquoi, le changement du FPGA et de sa carte de développement a été préférable pour les besoins futurs. Cette évolution a impliqué l‟adaptation du processeur interne du FPGA et l‟évolution de l‟environnement de test. Elle dispose alors des deux solutions FPGA. En plus, sa construction lui donne la possibilité d‟intégrer de futures solutions. Le premier objectif du stage est atteint, la solution est maintenant disposée à recevoir les prochains montages de prototypage comme la chaîne de traitement numérique.
APPROCHE THEORIQUE
Avant de commencer le développement des filtres, il est indispensable de se familiariser avec le domaine d‟application. Cette partie propose une étude de cet environnement particulier et du circuit à valider. La connaissance des spécificités du convertisseur vont expliquer pourquoi il est indispensable de recourir au traitement numérique de ses signaux de sortie.
Le domaine Audio
La fonction première d‟un téléphone portable est la transmission à distance d‟un signal analogique, notre voix, par réseau sans fil. Ce signal analogique est converti en un signal numérique pour être adapté au média de transmission. A la réception, ce signal est de nouveau converti en un signal analogique. La Figure 21 présente la chaîne de transmission complète. Les filtres conçus durant le stage se situe entre le convertisseur analogique-numérique et la transmission.
Le convertisseur analogique-numérique
Le principe de conversion
Le convertisseur analogique-numérique permet de passer du monde « réel » analogique au monde « discret » numérique. Cette opération consiste à transformer un signal analogique représenté par la variation de pression du son dans le cas du domaine audio, en un mot numérique codé sur un certain nombre de bits qui pourront être traités. C‟est ce qu‟on appelle l‟échantillonnage (Figure 22). L‟une de ses valeurs caractéristiques est le LSB « Low Significative Bit » soit le plus petit pas de tension permettant le passage d‟un code au suivant. Plus le pas de tension est petit, plus il y a de niveaux de tensions différents plus la résolution est importante.
Le bruit de quantification
La quantification ou l‟échantillonnage est l‟opération qui permet de passer d‟un signal analogique, de nature continue dans le temps en un signal numérique, de nature discontinue dans le temps. Cet échantillonnage entraîne une perte d‟information car tous les points ne sont pas représentés dans le signal numérique. Il génère également de la distorsion se traduisant par l‟apparition d‟harmoniques et par l‟augmentation de l‟amplitude du plancher de bruit dans la représentation spectrale du signal. C‟est ce qu‟on appelle le phénomène de bruit de quantification. La quantité d‟états déterminés de possibilités définit la résolution du convertisseur exprimé en nombre de bits soit 2 N avec N le nombre de bits. Une grande résolution réduit le bruit de quantification.
Bilan de l’étude théorique
L‟étude du convertisseur sigma-delta nous informe sur son intérêt dans le domaine audio. Cela est dû à sa grande résolution. Ce qui implique un signal de fréquence importante en sortie. Le principe du suréchantillonnage en est la cause ; d‟où l‟intérêt de la conception des filtres numériques en sortie. Cette chaîne de traitement doit réduire la fréquence du signal tout en conservant son amplitude. La validation d‟un tel circuit se base sur l‟analyse du spectre en sortie en observant l‟impact du bruit de quantification.
L‟étude des paramètres de la chaîne donne toutes les indications utiles à la saisie des filtres dans le FPGA. Ce développement se fait via le logiciel de conception utilisé précédemment pour l‟évolution de la solution : Quartus.
La méthode de saisie
La méthode de programmation qui doit être utilisée pour le stage est la description matérielle par saisie graphique. Cette méthode permet de placer directement les composants (symboles graphiques) utilisés et de les interconnecter soit à l‟aide de net ou de bus lorsqu‟ils contiennent plusieurs fils. La conception des filtres se fera sous forme de projet où la saisie des différentes fonctions est gérée de façon hiérarchique. Le plus haut niveau représente le schéma complet qui fait appelle aux schémas de plus bas niveaux qui sont représentés par les fonctions logiques de base. Cette structure est assimilée à un sous-projet mise sous la forme d‟un symbole. La Figure 42 présente ces différents niveaux. L‟utilisation de la conception hiérarchique donne une meilleure lisibilité à l‟ensemble du schéma.
Les étages différentiateurs.
La deuxième partie comporte les trois étages des différentiateurs. Ils fonctionnent à une fréquence plus réduite, qui correspond à la fréquence d‟origine divisée par 50, soit 96KHz. Le principe est de soustraire le bus D1 avec le bus D0, le bus précédent. L‟intérêt est de ne récupérer qu‟un échantillon sur 50. Les mots deviennent alors plus réduits en nombres de bits. La première étape pour ce montage va être de créer une horloge de fréquence divisée par 50.
Diviseurs d’horloges
La décimation demandée est de passer de 4.8MHz à 96KHz, ce qui correspond à un échantillon tous les 50 points pris sur le signal d‟horloge pdmclk_input. La Figure 50 montre cette fonction comme elle est présentée dans le schéma final de ce filtre.
Etude du différentiateur
Le soustracteur n‟est autre qu‟un additionneur, où le second élément est inversé. Pour cela, il sera complémenté : il s‟agit d‟effectuer un complément à deux.
Ce qui revient à faire 4+ (-3) plutôt que 4-3 le résultat donne dans les deux cas 1. La méthode est d‟inversé les 23 bits du bus ce qui revient à mettre tous les bits « 0 » à « 1 » et tous les bits « 1 » à « 0 ». Cette inversement est effectué grâce à une porte « non » placée sur chaque bit et d‟ajouter 1 au total. Le symbole d‟inversion est ajouté dans le symbole additionneur, la Figure 53 présente son implémentation. Le bloc diagramme du soustracteur est le même que l‟additionneur avec la prise en compte du +1 du complément à deux.
Gestion de remise à zéro et gestion de la saturation
Lors du fonctionnement du filtre, il est prévu qu‟une « anomalie » vienne perturber le bon déroulement des calculs. Il est alors possible de forcer la remise à l‟état initiale afin de stopper la progression. C‟est le rôle de l‟entrée « resetn ». Par ailleurs, l‟interruption peut avoir lieu si l‟un des additionneurs du filtre entre en saturation. Cela arrive lorsque la valeur du résultat de l‟opération dépasse le nombre de bits prévus, soit 23 bits signés. Sachant que les valeurs possibles vont de (-2) à (+2-1), au-delà de cette gamme de valeur, il y a saturation. Ce qui se traduit par la perte du signe,placé sur le bit de poids fort d‟où un résultat erroné.
Bilan de la saisie des deux premiers filtres
La saisie des deux premiers filtres est terminée. La saisie du dernier filtre FIR passe bas, ne se fera qu‟à la suite de la vérification des deux premiers filtres. Son développement est plus complexe.
La méthode de conception reprend la même stratégie du CIC pour la décimation et du FIR pour la gestion des coefficients. Une fois la méthode validée, elle pourra être réutilisée pour le filtre FIR passe bas.
Pour vérifier ces premiers développements, il faut intégrer ces filtres dans le projet existant dans un premier temps, puis lancer la compilation et la programmation du FPGA dans un deuxième temps.
Implémentation des filtres
Les filtres vont être implémentés dans la partie commune du projet c‟est-à-dire dans le cœur du système. Ils pourront ainsi être appelés par le projet Stratix ou le projet Cyclone.
La partie commune a été structurée selon les fonctions qu‟elle intègre. Il y a une zone spécifique pour les montages numériques audio(1). Le symbole principal porte le nom de TX_DIGITAL_AUDIO_TOP. C‟est à l‟intérieur de celui-ci que sont « rangés » les circuits de prototypage à destination du circuit ADC (2).
A l‟intérieur de celui-ci, on trouve donc le symbole TX_DIGITAL_AUDIO_MONO. Il est à noter qu‟il s‟agit d‟une chaîne de traitement numérique à destination d‟une application audio fonctionnant en stéréo. Ce symbole est appelé deux fois, pour chaque coté soit droite et gauche (3).
Lorsque l‟on rentre dans ce symbole, on aperçoit la chaîne audio avec la présence de chacun des filtres. Cette organisation a été faite durant le stage. Par conséquent, c‟est à cet endroit que les filtres CIC et FIR vont être implémentés (4).
|
Table des matières
Sommaire
Liste des acronymes
La société ST-Ericsson
Introduction
1 Le contexte
1.1 L’environnement du stage
1.2 L’objectif du stage
2 La solution de développement
2.1 Introduction sur le FPGA
2.2 La solution existante
2.3 Le besoin d’évolution
2.4 La mise en œuvre de l’évolution
2.5 Conséquence sur la structure existante
2.6 Bilan de l’évolution de la solution
3 Approche théorique
3.1 Le domaine Audio
3.2 Le convertisseur analogique-numérique
3.3 La chaîne de traitement numérique
3.4 Bilan de l’étude théorique
4 Approche expérimentale
4.1 Etude de l’environnement de programmation
4.2 La chaîne à implémenter
4.3 Conception du filtre CIC
4.4 Conception de l’égaliseur
4.5 Implémentation des filtres
4.6 Compilation de ces conceptions
4.7 Programmation du FPGA
5 La vérification
5.1 Observation des résultats
5.2 Les dysfonctionnements
5.3 Les techniques de vérification
5.4 Proposition d’amélioration de la méthode
Conclusion
Annexe
Bibliographie
Index des figures
Index des Tableaux
Glossaire