III.2.2 Filtre FIR d'un ordre :
a) Structure
Tiré de la structure du filtre de 1er ordre,
le filtre FIR de 2ème ordre illustré sur la figure
III.6 possède trois coefficients et 2 registres de sauvegarde, et pour
la description VHDL elle réunit deus process qui assurent la
mémorisation des états de l'entrée, en les transmettant
d'un process à l'autre pour les multiplier par les coefficients.
x-int1[k]
X_int2[k]
X_in(n)[k]
Process
CLK
Process
CLK
[k]
a [k]
a [k]
Reg_2[2*k]
[2*k+1]
DIV
Reg_y[2*k+2]
Y_out [k]
[2*k]
Reg_1[2*k]
Figure III.6 : bloc digramme d'un filtre FIR
2ème ordre
Figure III.7 : Décomposition
fonctionnelle d'un filtre RIF 1 ère ordre sous Active-HDL
Sur la figure III. 7 une reconstitution de la
décomposition fonctionnelle du code VHDL faite avec le logiciel
Active-HDL, elle permet de bien identifier les grands lignes de notre code et
les différents signaux d'interface et ceux utilisé en interne.
Cette reconstitution représente la description VHDL
suivante du filtre RIF 2ème ordre.
library ieee;
Use ieee.std_logic _1164.all; Use ieee.numeric_std.all;
entity FIRFilter is
generic( word_size : integer := 4 );
port( clk : in std_logic;
a_0, a_1, a_2 : 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;
Architecture FIRFilter of FIRFilter is
signal reg_2 : unsigned(2*word_size-1 downto 0):="00000000";
signal reg_ 1 : unsigned(2*word_size-1 downto 0):="00000000";
signal reg y : unsigned(2*word_size-1 downto 0):="00000000";
signal x_int1,x_int2 : unsigned(word_size-1 downto 0):="0000";
begin
process (clk)
begin
x_int1 <= x_in;
end process;
process (clk)
begin
x_int2 <= x_int1;
end process;
reg_y <= (x_in * a_0) + reg_1 + reg_2;
y_out <= reg_y(2*word_size-3 downto word_size-2); end
architecture;
b) Simulation et Interprétation :
On peut tester ce filtre RIF de 2ème comme
nous avons testé celui du 1er ordre, et on aura les
mêmes résultats et commentaires. Dans ce cas, nous avons
testé le filtre décrit avec un signal x(n) périodique de
forme triangulaire de période T = 3000ns à l'aide d'un
compteur/décompteur tiré des outils intégrées du
logiciel de simulation ModelSim. On donne des valeurs codées en 4 bits
de 0000 à 1111 et de 1111 à 0000 avec des changements dans
quelques états pour simuler le bruit.
Figure III.8 : Résultats de la simulation
de filtre du 2ème ordre
Ce filtre est l'extension du filtre de 1er ordre,
selon cette configuration il calcule la
moyenne de trois échantillons successifs. La sortie y(n)
écrit par :
Avec les coefficients sont égaux = =
Donc se filtre effectue la moyenne glissante sur les 3
derniers échantillons arrivées sur l'entrée x(n) en
éliminant les parasites et les valeurs aberrantes, ceci est
représenté par l'exemple de simulation de la figure III.8.
|