IMPLEMENTATION SUR FPGA D’UN ALGORITHME DE DEBRUITAGE EN UTILISANT 1D-DWT

Architecture des FPGAs

     Les PLD sont configurés par le téléchargement d’une séquence de valeurs numériques (0 ou 1) contenu dans un fichier appelé bitstream. Ces valeurs sont stockées dans la mémoire du circuit, où la mémoire peut être volatile ou non-volatile. Mémoire volatile : Quand les données sont stockées dans la mémoire, ils seront maintenus dans la mémoire aussi longtemps que la mémoire est reliée à l’alimentation d’énergie. Une fois que l’alimentation est enlevée, alors le contenu de la mémoire (les données) est perdu. Mémoire non-volatile : Quand des données sont stockées dans la mémoire, ils seront maintenus dans la mémoire même lorsque l’alimentation est enlevée. Un certain FPGAs utilise la technologie d’anti-fuse pour stocker la configuration du FPGA; les nouvelles générations des FPGAs utilisera également les mémoires flash. Les CPLDs utilisent les mémoires non volatiles tels que les EPROM, EEPROM, et les mémoires flash. La majorité des FPGAs sont à base des mémoires SRAM et donc elles sont volatiles et ils peuvent être programmés aussi facilement que les SRAM standard, mais, elles doivent être programmées chaque fois qu’on les mit sous tension. C’est pour ça on les couples avec un autre circuit de mémorisation du programme de configuration, tel qu’une mémoire PROM

Les langages de description de matériel

       Actuellement la densité de fonctions logiques (portes et bascules) intégrée dans les PLDs est telle (plusieurs milliers de portes voire millions de portes) qu’il n’est plus possible d’utiliser les outils de saisie d’un schéma pour développer les circuits. Les sociétés de développement et les ingénieurs ont voulu s’affranchir des contraintes technologiques des circuits. Ils ont donc créé des langages dits de haut niveau à sa voir aux langages de description matérielle de haut niveau (les HDL, Hardware Description Language). Deux d’entre eux ont émergé et sont couramment utilisés : VHDL (VHSIC Hardware Description Language) et Verilog. Ces deux langages bénéficient du support de la quasi-totalité des logiciels [23]. Toutes les deux sont basés sur des descriptions écrite (texte) de la structure électroniques d’un circuit numérique, Ils permettent au code écrit d’être portable, c’est à dire qu’une description écrite pour un circuit peut être facilement utilisée pour un autre circuit. Il faut avoir à l’esprit que ces langages dits de haut niveau permettent de matérialiser les structures électroniques d’un circuit.

Partitionnement placement et routage

       La netlist du circuit est ensuite adaptée aux primitives logiques du FPGA cible. Cette étape de ciblage technologique permet ainsi de passer d’une description structurelle générique à une description spécialisée pour une architecture précise. Les éléments de base ne sont alors plus de simples portes logiques mais des cellules programmables du FPGA. La phase de mapping ayant identifié les ressources logiques nécessaires à l’implémentation d’un circuit, la tâche de placement/routage consiste alors à disposer et connecter ces ressources sur la surface du FPGA. Il est possible de donner au placeur/routeur des contraintes spatiales ou temporelles, pour fixer par exemple la position des ports d’entrée/sortie du circuit ou bien une période d’horloge maximale. A l’issue de l’étape de placement/routage, le circuit obtenu est tel qu’il sera programmé sur le FPGA. C’est sur ce modèle que sont calculées les estimations de surface et de latence du circuit.

Les tendances courantes

      Le FPGA offre une souplesse de conception grâce à sa facilité d’utilisation et sa facilité de programmation (et reprogrammation). Contrairement à un circuit ASIC, pour lequel le concepteur maîtrise totalement le placement routage au niveau transistor, le FPGA n’autorise pas cette opération qui s’effectue de manière transparente pour le développeur. Pour une application visant la mise sur le marché d’une forte qualité des produits, le circuit spécifique est la solution faible coût. Par contre, dans le cas d’un développement ponctuel, le FPGA est nettement plus avantageux. C’est pourquoi ce composant est plus adapté pour la mise au point de prototypes et accessible à un plus grand nombre d’utilisateur que l’ASIC. La tendance courante des architectures des FPGAs s’oriente vers des systèmes embarqués complet. Les densités des FPGAs ont augmenté jusqu’au point qu’on peut implémenter un microprocesseur entier de type RISC dans un seule circuit. Identifiant cette tendance, les constructeurs des circuits FPGA intègres également des macros hardwares tels, blocs mémoire (RAM), des multiplicateurs, et des corps de microprocesseur dans plusieurs types FPGAs. Et ils proposent aussi des macros optimiser pour les UAL, microprocesseur RISC, une interface PCI ou d’autre éléments de cette complexités. Ainsi qu’ils s’orientent vers inclure des macros de signal mixed tels que les ADCs et DACs qui augmente l’utilité du FPGA. Le circuit Excalibur d’Altera contient un corps du processeur ARM922T tandis que le circuit Virtex-II Pro de Xilinx contient jusqu’à quatre microprocesseurs de PC d’IBM. Ceci permet aux développeurs d’optimiser leurs applications pour avoir le maximum de performance.

ADC/DAC CODEC AUDIO

       Comme il a été évoqué précédemment, le CODEC Audio (WM8731) se programme grâce à un ensemble de registres via une liaison série I2C (Inter-Integrated Circuit). Il a été développé au début des années 1980, par Philips pour minimiser les liaisons entre les circuits intégrés numériques de ses produits (Téléviseurs, éléments HiFi, magnétoscopes, …). Le bus I²C permet de faire communiquer entre eux des composants électroniques très divers grâce à trois fils seulement: un signal de données (I2C_SDAT), un signal d’horloge (I2C_SCLK), et un signal de référence électrique (masse). Le contenu de la ligne de données est envoyé dans le même ordre comme il est montré sur la figure 5.4 après une condition de départ : «RADDR ‘,’ R / W», «ACK», DATAB [15- 19], et «DATAB [8-0] qui signifient respectivement « adresse de base », « Read / Write »,  » acknowledge « , « l’adresse de contrôle », et « les données de contrôle ». Le bloc modifie les paramètres. Par exemple, si «DATAB [0] ‘est à ‘1’, le volume est augmenté. Les adresses de base et de contrôle sont utilisées pour spécifier les registres internes du CODEC qui doivent être accessibles. La condition de départ START est un front descendant sur la ligne I2C_SDAT tant que la ligne I2C_SCLK est au niveau HAUT. La condition de STOP après transfert de données est un front montant sur la ligne I2C_SDAT avec I2C_SCLK est HIGH. Enfin, le signal ACK est transmis du codec à l’FPGA, l »ACK’ signal est envoyé, dans le sens opposé de tous les autres bits de données de la ligne. Ceci introduit la nécessité d’implémenter la ligne ‘I2C_SDAT’ en broche bidirectionnelle, cela nécessite l’utilisation d’un tampon à trois états, une machine d’état (FSM) a été créé pour mettre l’implémentation de l’interface de bus entre le FPGA et le codec audio.

Le rapport de stage ou le pfe est un document d’analyse, de synthèse et d’évaluation de votre apprentissage, c’est pour cela chatpfe.com propose le téléchargement des modèles complet de projet de fin d’étude, rapport de stage, mémoire, pfe, thèse, pour connaître la méthodologie à avoir et savoir comment construire les parties d’un projet de fin d’étude.

Table des matières

CHAPITRE I : INTRODUCTION GENERALE
1. Introduction générale 
CHAPITRE II : CIRCUITS LOGIQUES PROGRAMMABLES
2.1 Introduction :
2.2 Histoire de la logique programmable
2.3 Les FPGAs
2.4 Architecture des FPGAs
2.5 Fournisseurs des circuits logiques programmables
2.6 Outils de Développement
2.6.1 Description de l’application
2.6.1.1 Outils de saisie d’un schéma
2.6.1.2 Les langages de description de matériel
a. Le Verilog : historique et description
b. VHDL : historique et description
c. Structure d’une description VHDL
2.6.2 Traduction et optimisation
2.6.3 Partitionnement placement et routage
2.6.4 Simulation
2.6.5 Configuration
2.7 Les atouts des FPGA
2.7.1 Performances
2.7.2 Temps de mise sur le marché
2.7.3 Cout
2.7.4 Fiabilité
2.7.5 Maintenance
2.8 Les tendances courantes
2.9 Le choix des FPGAs
2.10 La carte de développement
2.10.1 Présentation
2.10.2 CODEC AUDIO
CHAPITRE III : ARITHMETIQUE SUR FPGA
3.1 Introduction
3.2 Représentation des nombres
3.2.3 Les nombres en virgule fix
3.2.3.1 Représentation des nombres non signé (positifs)
3.2.3.2 Représentation des nombres signés
3.2.3.3 Représentations biaisées
3.2.3.4 Complément à deux (2C)
3.2.3.5 Complément à un (1C)
3.2.3.6 un-conventionnel en virgule fixe
3.2.3.7 Nombres à Chiffre Signé
3.2.3.8 Le code (CSD) Fractionnel
3.2.4 les nombres en virgule flottante
3.3 Operateurs arithmétiques spécifiques pour les FPGAs
3.3.1 Introduction
3.3.2 Addition binaire
3.3.2.1 Semi additionneur
3.3.2.2 Additionneur complet
3.3.2.3 Additionneur par propagation de retenue
3.3.2.4 Additionneur par anticipation de retenue
3.3.2.5 Additionneur par l’utilisation d’une LUT
3.3.2.6 L’addition et la soustraction en complément à deux
3.3.3 La multiplication
3.3.3.1 La multiplication graphique
3.3.3.2 La multiplication d’accumulateur (MAC) et somme de produit (SOP)
3.3.3.3 La multiplication distribuée
3.3.3.4 Look-Up Table (LUT) Multiplication
CHAPITRE IV : THEORIES DE LA TRANSFORMEE EN ONDELETTE
4.1 Introduction
4.2 Transformée en ondelette
4.3 Définition d’une ondelette
4.4 La transformée discrète en ondelette
4.5 L’analyse multi résolution (MRA)
4.6 L’algorithme pyramide de Mallat
4.7 Propriété des ondelettes
4.7.1 Support compact
4.7.2 Symétrie
4.7.3 Nombre de moment nuls
4.7.4 Régularité
4.8 Panorama d’ondelettes
4.8.1 Base d’ondelettes de daubechies
4.9 Application
4.10 Banc de filtre
4.10.1 Introduction
4.10.2 Conversion de la fréquence
4.10.2.1 Sous échantillonnage
4.10.2.2 Sur échantillonnage
4.10.3 La décimation
4.10.4 L’interpolation
4.10.5 Les identités nobles
4.10.6 Utilisation du Bancs de filtre
4.11 Débruitage de signaux
4.11.1 Introduction
4.11.2 Position du problème
4.11.3 Débruitage par des filtres linéaires
4.11.4 Débruitage par les ondelettes
4.11.5 Débruitage par seuillage
4.11.6 Méthode de seuillage
4.11.6.1 Seuillages dur
4.11.6.2 Seuillage doux
4.11.6.3 Seuillage dur modifie
4.11.6.4 Sélection du seuille
CHAPITRE V : DEBRUITAGE DU SIGNAL PRINCIPE & IMPLEMENTATION
5.1 Introduction
5.2 Design méthodologie de développement
5.2.1 ADC/DAC CODEC AUDIO
5.2.2 Module d’horloge
5.2.3 L’opération de débruitage
5.2.4 Principe de débruitage avec la transforme d’ondelettes
5.2.4.1 Choix des ondelettes et niveau de décomposition
5.2.4.2 Banc de filtres d’analyse (décomposition)
5.2.4.3 Banc de filtre de synthèse (reconstitution)
5.2.4.4 Le seuillage
5.2.4.5 Filtre décimateur de daubechies
5.2.5 Implémentation de l’opération de débruitage
5.2.5.1 La transformée en ondelettes discrète
5.2.5.2 Analyse multi-résolution
5.2.5.3 La multiplication par une constante
5.2.5.4 Représentation binaire des nombres décimaux
5.2.5.5 Un niveau de décomposition
5.2.5.6 Le seuillage
5.2.5.7 Un niveau de reconstitution
5.2.5.8 Filtre moyenneur
5.2.6 Simulation
5.2.7 Implémentation hardware
5.3 Conclusion
CONCLUSION ET PERSPECTIVES

Télécharger le rapport complet

Télécharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *