diff --git a/docs/compte-rendu.md b/docs/compte-rendu.md
index b7e964810ba5e490dabe189e55644786f4e736cc..bdffd196e289b940b1ea7d3e0a45b94adca18e63 100644
--- a/docs/compte-rendu.md
+++ b/docs/compte-rendu.md
@@ -11,15 +11,20 @@
 Il y a deux processus explicites : l'un étant séquentielle et l'autre combinatoire. Celui prenant le I_clock est séquentielle car il ne dépend pas seulement des valeurs d'entrées. Nous avons aussi 7 processus implicites qui sont tous combinatoires.
 
 ### Question filtre 2 : La simulation vous permet-elle de valider votre description VHDL ? Justifiez.
-Oui, nous avons les mêmes valeurs filtrées que celles attendues. 
+Nous retrouvons les mêmes valeurs filtrées que celles attendues. Cependant, nous avons seulement un extrait de simulation ce qui ne nous permet pas de valide rou non notre description VHDL. Pour cela, il nous faudrait une simulation complète avec l'essai de toutes les valeurs possibles.
 
 ### Question filtre 3 : Validez-vous la conception de l’unité de contrôle ?
-
-
+Oui, cela nous permet d'instaurer le filtre passe-bas à une fréquence de coupure de 300Hz. On observe bien qu'au delà de la bande passante le son est atténué.
+En effet, en étant à une fréquece de 150HZ sur le générateur de son en ligne, le filtre passe bas ne va pas agir dessus. Mais si on se place cette fois-ci à une fréquence de 3000Hz, cette fois-ci le filtre agit sur le son.
 ### Question filtre 4 : Combien de processus sont utilisés et de quelles natures sont-ils ?
-
+Nous avons 4 processus séquentielle explicites synchrones : shift (un registre), incr_adrress (un compteur), sum_acc (un compteur) et store_result (un registre). 
+De plus, nous avons 5 processus combinatoires implicites.
 
 ### Question filtre 5 : La simulation vous permet-elle de valider votre description VHDL ? Sinon, quel élément pose problème ? Comment pouvez-vous le corriger ? Justifiez
-
+Non car nous avons un mauvais arrondi lorsque notre partie décimale est supérieure à 0.5. Pour corriger cela, il faudrait  ajouter +1 à notre résultat final lorsque le premier bit de notre partie décimale = 1. Ainsi nous aurons un arrondi réel.
 
 ### Question filtre 6 : Validez-vous la conception de l’unité opérative ? Sinon, quel élément pose problème ? Comment pouvez-vous le corriger ?
+Après la correction de notre arrondi, on se retrouve avec les bonnes valeurs de 'outputfilter'.
+
+
+
diff --git a/src/hdl/operativeUnit.vhd b/src/hdl/operativeUnit.vhd
index fe12a2e40d899e53218df9bccbf9aab36f8170bd..f007e6c8b34273715b730f966bc3cabed295cca6 100644
--- a/src/hdl/operativeUnit.vhd
+++ b/src/hdl/operativeUnit.vhd
@@ -45,7 +45,7 @@ entity operativeUnit is
         I_incrAddress    : in  std_logic;                     -- Control signal to increment register read address
         I_initSum        : in  std_logic;                     -- Control signal to initialize the MAC register
         I_loadSum        : in  std_logic;                     -- Control signal to load the MAC register;
-        I_loadY          : in  std_logic;                     -- Control signal to load Y register
+        I_loadoutput          : in  std_logic;                     -- Control signal to load Y register
         O_processingDone : out std_logic;                     -- Indicate that processing is done
         O_filteredSample : out std_logic_vector(15 downto 0)   -- filtered sample
         );
@@ -114,36 +114,46 @@ begin
                         );
     
     -- Process to describe the shift register storing the input samples
-    shift : process (_BLANK_) is
+    shift : process(I_clock, I_reset) is
     begin  -- process shift
         if I_reset = '1' then           -- asynchronous reset (active high)
             SR_shiftRegister <= (others => (others => '0'));
-        elsif _BLANK_
-
+        elsif rising_edge(I_clock) then
+            if I_loadShift = '1' then
+            SR_shiftRegister (0) <= signed(I_inputSample);
+            SR_shiftRegister(1 to 15) <= SR_shiftRegister(0 to 14);
+            end if;
         end if;
     end process shift;
 
     -- Process to describe the counter providing the selection adresses
     -- of the multiplexers
-    incr_address : process (_BLANK_) is
+    incr_address : process (I_clock, I_reset) is
     begin
-        if I_reset = '1' then               -- asynchronous reset (active high)
+         if I_reset = '1' then
             SR_readAddress <= 0;
-        elsif _BLANK_
-
+        elsif rising_edge(I_clock) then
+            if I_initAddress = '1' then
+                SR_readAddress <= 0;
+            elsif I_incrAddress = '1' then
+                if SR_readAddress < 15 then
+                    SR_readAddress <= SR_readAddress + 1;
+                end if;
+            end if;
         end if;
     end process incr_address;
 
+
     -- Signal detecting that the next cycle will be the one
     -- providing the last product used to compute the convolution
-    O_processingDone <= '1' when _BLANK_;
+    O_processingDone <= '1' when SR_readAddress = 15 else '0';
 
     -- Signals connected with multiplexers (SIMPLY inferred with table indices)
-    SC_multOperand1 <= _BLANK_;             -- 16 bits
-    SC_multOperand2 <= _BLANK_;             -- 16 bits
+    SC_multOperand1 <= SR_shiftRegister(SR_readAddress);   -- 16 bits
+    SC_multOperand2 <= SR_coefRegister(SR_readAddress);    -- 16 bits
 
     -- Multiplication of the operands
-    SC_MultResult   <= _BLANK_;             -- 32 bits
+    SC_MultResult <= SC_multOperand1 *SC_multOperand2 ; -- 32 bits
 
     -- Sum of the multiplication result and the accumulated value
     SC_addResult    <= resize(SC_MultResult, SC_addResult'length) + SR_sum;
@@ -151,21 +161,36 @@ begin
     -- Register to store the accumulated value if the loadSum is active
     -- It also reduces the width of the sum to fit to the input and output
     -- signal widths (be careful with truncating/rounding)
-    sum_acc : process (_BLANK_) is
+    sum_acc : process (I_clock,I_reset) is
     begin
-        if I_reset = '1' then               -- asynchronous reset (active high)
+        if I_reset = '1' then
             SR_sum <= (others => '0');
-        elsif _BLANK_
+        elsif rising_edge(I_clock) then
+            if I_initSum = '1' then
+                SR_sum <= (others => '0');
+            elsif I_loadSum = '1' then
+                SR_sum <= SC_addResult;
+            end if;
         end if;
     end process sum_acc;
 
-    -- Register to store the final result if the loadOuput is active
-    store_result : process (_BLANK_) is
+-- Register to store the final result if the loadOuput is active
+    store_result : process (I_clock, I_reset) is
     begin
-        _BLANK_
-
+        if I_reset = '1' then
+            SR_filteredSample <= (others => '0');
+        elsif rising_edge(I_clock) then
+            if I_loadOutput = '1' then
+                if SR_sum(14) = '1' then
+                    SR_filteredSample <=  SR_sum(30 downto 15) + 1;
+                else 
+                    SR_filteredSample <= SR_sum(30 downto 15);
+                end if;
+            end if;
+        end if;
     end process store_result;
 
+
     O_filteredSample <= std_logic_vector(SR_filteredSample);
 
 end architecture arch_operativeUnit;