WOW !! MUCH LOVE ! SO WORLD PEACE !
Fond bitcoin pour l'amélioration du site: 1memzGeKS7CB3ECNkzSn2qHwxU6NZoJ8o
  Dogecoin (tips/pourboires): DCLoo9Dd4qECqpMLurdgGnaoqbftj16Nvp


Home | Publier un mémoire | Une page au hasard

 > 

Implantation d'algorithme de filtrage numérique sur FPGA(réseau de portes programmables)

( Télécharger le fichier original )
par Mohamed Bendada
Université Ferhat Abbas de Sétif Algérie - Master électronique  2010
  

précédent sommaire suivant

Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy

I.17. Conclusion

La présentation faite dans ce chapitre nous donne un large aperçu sur les filtres numérique notamment les filtres à réponse impulsionnelle fini (RIF), aussi cela nous a permis de mettre en avant les différents structure de ces filtre, ainsi qu'un aperçu sur leur implémentation physique.

III.1 Introduction

Parce que L'objectif de notre projet est la conception d'un filtre FIR, nous avons introduit dans les chapitres précédents une étude générale sur ces filtres, ainsi que les moyens mis en oeuvre pour l'aboutissement de notre travaille.

Dans ce chapitre nous allons présenter les solutions adoptées pour répondre aux objectifs de ce mémoire, nous exposerons dans les paragraphes suivants la conception détaillée de chaque étape de développement. Nous présenterons alors, les différentes techniques de programmation que nous avons utilisées pour réaliser le filtre que selon plusieurs configurations. Aussi nous détaillerons les testes et simulations à chaque étape pour valider notre travaille.

Nous utiliserons dans cette démarche le logiciel ModelSim SE 6.3f pour la simulation comportementale, et ISE Xilinx 8.1 pour la synthèse et l'implémentation.

Pour développer toute application à l'aide de ModelSim, il faut suivre la démarche cidessous :

v' Créer un projet ModelSim ;

v' Créer des fichiers d'édition pour écrire la description du circuit ; v' Compiler les fichiers et corriger les erreurs ;

v' Créer des testbenchs si nécessaire (les compilés et les vérifiés) ;

v' Lancer la simulation à partir du fichier principal sinon du testbench ;

v' Dans la fenêtre du visualiser, il faut ajouter les signaux pour affichage ;

+ Si aucun testbench n'est réalisé, il faut donner à chaque entrée du circuit les

stimuli appropriés ;

1' Exécuter la simulation pour le temps nécessaire à la vérification.

Selon la topologie utilisée du Filtre FIR, nous pouvons réaliser plusieurs descriptions, dans les paragraphes suivants nous exposerons certaines d'entre elles.

III.2. Méthode avec structure parallèle

La structure commune d'un filtre numérique RIF est constituée généralement des éléments suivants :

· Un ou plusieurs organes de retard (se sont des registres à décalage ou des mémoires temporelles pilotés par une horloge) correspondant à une sortie égale à l'entrée retardée de k périodes d'échantillonnage.

· Des registres fournissent les coefficients du filtre.

· Des opérateurs arithmétiques (additionneurs et multiplieurs).

Pour accélérer le temps de conception, on peut utiliser des fonctions spécifiques de la bibliothèque du logiciel de simulation ModelSim, comme l'addition, la multiplication qui permettent de faire ces opérations pendant un cycle d'horloge. La sortie y[n] est la somme de l'échantillon d'entrée présent x[n] multiplié par le coefficient a0 et de l'échantillon précédent

x[n-1] multiplié par le coefficient a1 et tous les échantillons d'entrée précedents jusqu'au temps [n-N+1] multipliés par leur facteur respectif. (Figure III.1).

Entrée x(n)

a0 a1 a2 a3 a4

Reg

Reg

Reg

Reg

aN+1

Reg

La sortie y(n)

Figure III.1 : structure général d'un filtre RIF

III.2.1. Filtre RIF du 1er ordre :

a) Structure

La structure d'un filtre RIF du 1ére ordre est illustrée dans la figure III.2 avec k la largeur de bus d'entrée et de la sortie mais aussi celui des coefficients, ce filtre est composé de deux coefficients et un élément mémoire (figure III.2).

Xin(n)[k]

Process

CLK

X_int[k]

[k] [k]

Yout(n) [k]

[2*k]

Reg_0[2*k]

Regy[2*k+1]

DIV

Figure III.2 : bloc digramme d'un filtre RIF 1 ère La sortie de ce type de filtre est donnée par :

Y'n)=a0x(n) +a1x (n-1)

Le 1ére échantillon xin multiplier par le coefficient a0 donne un bus de largeur [2*k], la propagation de l'entré sur le registre permet de temporiser l'entrée x(n) se qui permet de créer la valeur x(n-1) soit xint (figure III.2). Cette valeur est multipliée par a1 ce qui donne un bus de méme largeur comme l'opération précédente, la somme des deux résultats de multiplication intermédiaire s'exprime en sortie avec des données de largeur [2*k+1], et pour

avoir une sortie avec une largeur [k], il faut diviser la sortie sur [2*k+1] par 2k ou bien supprimer les k dernier bits à droite, tel que :

_

Le programme ci-dessous permet décrit le fonctionnement d'un filtre RIF du premier o

y

ordre.

-- Déclaration de la bibliothèque

library ieee;

Use ieee.std_ logic_1164.all;

Use ieee.numeric_std.all;

-- Déclaration de l'entité

entity FIRFilter is

generic( word_size:integer := 4 );

port ( clk : in std_logic;

a_0, a_1: in unsigned(word_size-1 downto 0);

x_in : in unsigned(word_ size-1 downto 0);

y_out : out unsigned(word_ size-1 downto 0));

end entity;

-- Déclaration de l'architectur

Architecture FIRFilter of FIRFilter is

--Déclaration des registres intérmédiaires

signal reg_0 : unsigned(2*word_size-1 downto 0):=(others <= '0');

signal reg_y : unsigned(2*word_size downto 0) :=( others <= '0');

signal x _int : unsigned(word _size-1 downto 0):= ( others <= '0');

begin

Process (clk)

begin

if clk'event and clk='1' then

x_int <= x_in ;

reg_0 <= ((x_int * a_1));

End if;

end process;

reg_y <= ((x_in * a_0)) + ('0'& reg_0);

y_out <= reg_y(2*word_size-2 downto word_size-1);

end architecture;

 

Au début du code nous trouvons la déclaration de la bibliothèque, qui contient des définitions des types de signaux et des fonctions arithmétiques. Juste après, la déclaration l'entité est faite pour définir les entrées, les coefficients du filtre et la sortie, L'instruction GENERIC permet de spécifié les paramètres du code, dans notre exemple nous déclarons la

largeur des bus d'entrée/sortie comme générique pour permettre leur modification. L'architecture contient les instructions qui décrivent le fonctionnement du filtre, l'instruction « clk' event and clk ='1' » synchronise l'exécution des instructions sur le front montant, le process permet entre autre la mémorisation de la donnée x(n-1).

La figure suivante montre la structure du code VHDL sous le logiciel Active-HDL 8.1, elle montre la décomposition du code dans ces différentes déclarations.

Figure III.3 : Décomposition fonctionnelle d'un filtre RIF 1 ère ordre sous Active-HDL

précédent sommaire suivant






Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy








"Je ne pense pas qu'un écrivain puisse avoir de profondes assises s'il n'a pas ressenti avec amertume les injustices de la société ou il vit"   Thomas Lanier dit Tennessie Williams