diff --git a/docs/wave_generator.drawio b/docs/wave_generator.drawio
index 6d65d824039ac0376711b9b39806f970cf0549ca..dc8ca38a632c936ac1993ccc5719e26ca026431d 100644
--- a/docs/wave_generator.drawio
+++ b/docs/wave_generator.drawio
@@ -1,49 +1,67 @@
-<mxfile host="Electron" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/26.2.2 Chrome/134.0.6998.178 Electron/35.1.2 Safari/537.36" version="26.2.2">
-  <diagram name="Page-1" id="ZRCvXX_TBlFcA-i0oMmK">
-    <mxGraphModel dx="3237" dy="1203" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1169" pageHeight="827" math="0" shadow="0">
+<mxfile host="app.diagrams.net" agent="Mozilla/5.0 (X11; Linux x86_64; rv:138.0) Gecko/20100101 Firefox/138.0" version="26.2.14">
+  <diagram name="Page-1" id="JItnjO7UTQti-7ehDyxE">
+    <mxGraphModel dx="2436" dy="1485" grid="0" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="0" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
       <root>
         <mxCell id="0" />
         <mxCell id="1" parent="0" />
-        <mxCell id="liv1zIGuVtiVySRaDl_v-15" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#666666;arcSize=3;" parent="1" vertex="1">
+        <mxCell id="T6G-l0cemJ_VGPuUw9YW-1" value="MODULE E" style="whiteSpace=wrap;html=1;aspect=fixed;" vertex="1" parent="1">
+          <mxGeometry x="243" y="63" width="149" height="149" as="geometry" />
+        </mxCell>
+        <mxCell id="T6G-l0cemJ_VGPuUw9YW-4" value="MODULE H" style="whiteSpace=wrap;html=1;aspect=fixed;" vertex="1" parent="1">
+          <mxGeometry x="243" y="239" width="160" height="160" as="geometry" />
+        </mxCell>
+        <mxCell id="T6G-l0cemJ_VGPuUw9YW-5" value="MODULE I " style="whiteSpace=wrap;html=1;aspect=fixed;" vertex="1" parent="1">
+          <mxGeometry x="424" y="236" width="160" height="160" as="geometry" />
+        </mxCell>
+        <mxCell id="T6G-l0cemJ_VGPuUw9YW-6" value="MODULE G " style="whiteSpace=wrap;html=1;aspect=fixed;" vertex="1" parent="1">
+          <mxGeometry x="45" y="239" width="157" height="157" as="geometry" />
+        </mxCell>
+        <mxCell id="T6G-l0cemJ_VGPuUw9YW-7" value="MODULE F" style="whiteSpace=wrap;html=1;aspect=fixed;" vertex="1" parent="1">
+          <mxGeometry x="431" y="65" width="144" height="144" as="geometry" />
+        </mxCell>
+        <mxCell id="T6G-l0cemJ_VGPuUw9YW-9" value="MODULE D" style="whiteSpace=wrap;html=1;aspect=fixed;" vertex="1" parent="1">
+          <mxGeometry x="48" y="63" width="151" height="151" as="geometry" />
+        </mxCell>
+        <mxCell id="T6G-l0cemJ_VGPuUw9YW-10" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#666666;arcSize=3;" vertex="1" parent="1">
           <mxGeometry y="40" width="1320" height="720" as="geometry" />
         </mxCell>
-        <mxCell id="liv1zIGuVtiVySRaDl_v-1" value="A" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontFamily=Ubuntu Mono;fontSize=40;" parent="1" vertex="1">
+        <mxCell id="T6G-l0cemJ_VGPuUw9YW-11" value="&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;A&lt;/div&gt;&lt;div&gt;Machine à états&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontFamily=Ubuntu Mono;fontSize=40;" vertex="1" parent="1">
           <mxGeometry x="160" y="80" width="280" height="160" as="geometry" />
         </mxCell>
-        <mxCell id="liv1zIGuVtiVySRaDl_v-2" value="D" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontFamily=Ubuntu Mono;fontSize=40;" parent="1" vertex="1">
+        <mxCell id="T6G-l0cemJ_VGPuUw9YW-12" value="&lt;div&gt;&lt;font style=&quot;font-size: 22px;&quot;&gt;D&amp;nbsp;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font style=&quot;font-size: 22px;&quot;&gt;GENERATEUR SIGNAL TRIANGLE &lt;br&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontFamily=Ubuntu Mono;fontSize=40;" vertex="1" parent="1">
           <mxGeometry x="160" y="320" width="280" height="160" as="geometry" />
         </mxCell>
-        <mxCell id="liv1zIGuVtiVySRaDl_v-3" value="B" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontFamily=Ubuntu Mono;fontSize=40;" parent="1" vertex="1">
+        <mxCell id="T6G-l0cemJ_VGPuUw9YW-13" value="&lt;div&gt;&lt;font style=&quot;font-size: 38px;&quot;&gt;B &lt;br&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font style=&quot;font-size: 38px;&quot;&gt;Compteur puis décompteur&lt;/font&gt;&lt;/div&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontFamily=Ubuntu Mono;fontSize=40;" vertex="1" parent="1">
           <mxGeometry x="520" y="80" width="280" height="160" as="geometry" />
         </mxCell>
-        <mxCell id="liv1zIGuVtiVySRaDl_v-4" value="I" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontFamily=Ubuntu Mono;fontSize=40;" parent="1" vertex="1">
+        <mxCell id="T6G-l0cemJ_VGPuUw9YW-14" value="&lt;div&gt;I&lt;/div&gt;&lt;div&gt;Registre à bascule&lt;/div&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontFamily=Ubuntu Mono;fontSize=40;" vertex="1" parent="1">
           <mxGeometry x="880" y="560" width="280" height="160" as="geometry" />
         </mxCell>
-        <mxCell id="liv1zIGuVtiVySRaDl_v-5" value="F" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontFamily=Ubuntu Mono;fontSize=40;" parent="1" vertex="1">
+        <mxCell id="T6G-l0cemJ_VGPuUw9YW-15" value="&lt;div&gt;F&lt;/div&gt;&lt;div&gt;Multiplexeur&lt;/div&gt;&lt;div&gt;(4 entrées)&lt;/div&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontFamily=Ubuntu Mono;fontSize=40;" vertex="1" parent="1">
           <mxGeometry x="880" y="320" width="280" height="160" as="geometry" />
         </mxCell>
-        <mxCell id="liv1zIGuVtiVySRaDl_v-6" value="C" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontFamily=Ubuntu Mono;fontSize=40;" parent="1" vertex="1">
+        <mxCell id="T6G-l0cemJ_VGPuUw9YW-16" value="&lt;div&gt;C&lt;/div&gt;&lt;div&gt;Générateur de sinusoïde&lt;/div&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontFamily=Ubuntu Mono;fontSize=40;" vertex="1" parent="1">
           <mxGeometry x="880" y="80" width="280" height="160" as="geometry" />
         </mxCell>
-        <mxCell id="liv1zIGuVtiVySRaDl_v-7" value="G" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontFamily=Ubuntu Mono;fontSize=40;" parent="1" vertex="1">
+        <mxCell id="T6G-l0cemJ_VGPuUw9YW-17" value="&lt;div style=&quot;line-height: 100%;&quot;&gt;&lt;div&gt;G&lt;/div&gt;&lt;div&gt;Inverseur en complément à 2&lt;/div&gt;&lt;/div&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontFamily=Ubuntu Mono;fontSize=40;" vertex="1" parent="1">
           <mxGeometry x="160" y="560" width="280" height="160" as="geometry" />
         </mxCell>
-        <mxCell id="liv1zIGuVtiVySRaDl_v-8" value="H" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontFamily=Ubuntu Mono;fontSize=40;" parent="1" vertex="1">
+        <mxCell id="T6G-l0cemJ_VGPuUw9YW-18" value="&lt;div&gt;H&lt;/div&gt;&lt;div&gt;Multiplexeur (2 entrées)&lt;/div&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontFamily=Ubuntu Mono;fontSize=40;" vertex="1" parent="1">
           <mxGeometry x="520" y="560" width="280" height="160" as="geometry" />
         </mxCell>
-        <mxCell id="liv1zIGuVtiVySRaDl_v-9" value="E" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontFamily=Ubuntu Mono;fontSize=40;" parent="1" vertex="1">
+        <mxCell id="T6G-l0cemJ_VGPuUw9YW-19" value="&lt;div&gt;&lt;font style=&quot;font-size: 26px;&quot;&gt;E&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font style=&quot;font-size: 26px;&quot;&gt;GENERATEUR signal&amp;nbsp; DENTS DE SCIE&lt;/font&gt;&lt;/div&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontFamily=Ubuntu Mono;fontSize=40;" vertex="1" parent="1">
           <mxGeometry x="520" y="320" width="280" height="160" as="geometry" />
         </mxCell>
-        <mxCell id="liv1zIGuVtiVySRaDl_v-10" value="I_clk" style="shape=step;perimeter=stepPerimeter;whiteSpace=wrap;html=1;fixedSize=1;fillColor=#f0a30a;strokeColor=#BD7000;fontColor=#000000;fontFamily=Ubuntu Mono;fontSize=18;fontStyle=1" parent="1" vertex="1">
+        <mxCell id="T6G-l0cemJ_VGPuUw9YW-20" value="I_clk" style="shape=step;perimeter=stepPerimeter;whiteSpace=wrap;html=1;fixedSize=1;fillColor=#f0a30a;strokeColor=#BD7000;fontColor=#000000;fontFamily=Ubuntu Mono;fontSize=18;fontStyle=1" vertex="1" parent="1">
           <mxGeometry x="-40" y="120" width="160" height="40" as="geometry" />
         </mxCell>
-        <mxCell id="liv1zIGuVtiVySRaDl_v-11" value="I_rst" style="shape=step;perimeter=stepPerimeter;whiteSpace=wrap;html=1;fixedSize=1;fillColor=#f0a30a;strokeColor=#BD7000;fontColor=#000000;fontFamily=Ubuntu Mono;fontSize=18;fontStyle=1" parent="1" vertex="1">
+        <mxCell id="T6G-l0cemJ_VGPuUw9YW-21" value="I_rst" style="shape=step;perimeter=stepPerimeter;whiteSpace=wrap;html=1;fixedSize=1;fillColor=#f0a30a;strokeColor=#BD7000;fontColor=#000000;fontFamily=Ubuntu Mono;fontSize=18;fontStyle=1" vertex="1" parent="1">
           <mxGeometry x="-40" y="200" width="160" height="40" as="geometry" />
         </mxCell>
-        <mxCell id="liv1zIGuVtiVySRaDl_v-12" value="I_wave_sel" style="shape=step;perimeter=stepPerimeter;whiteSpace=wrap;html=1;fixedSize=1;fillColor=#f0a30a;strokeColor=#BD7000;fontColor=#000000;fontFamily=Ubuntu Mono;fontSize=18;fontStyle=1" parent="1" vertex="1">
+        <mxCell id="T6G-l0cemJ_VGPuUw9YW-22" value="I_wave_sel" style="shape=step;perimeter=stepPerimeter;whiteSpace=wrap;html=1;fixedSize=1;fillColor=#f0a30a;strokeColor=#BD7000;fontColor=#000000;fontFamily=Ubuntu Mono;fontSize=18;fontStyle=1" vertex="1" parent="1">
           <mxGeometry x="-40" y="280" width="160" height="40" as="geometry" />
         </mxCell>
-        <mxCell id="liv1zIGuVtiVySRaDl_v-14" value="O_wav" style="shape=step;perimeter=stepPerimeter;whiteSpace=wrap;html=1;fixedSize=1;fillColor=#f0a30a;strokeColor=#BD7000;fontColor=#000000;fontFamily=Ubuntu Mono;fontSize=18;fontStyle=1" parent="1" vertex="1">
+        <mxCell id="T6G-l0cemJ_VGPuUw9YW-23" value="O_wav" style="shape=step;perimeter=stepPerimeter;whiteSpace=wrap;html=1;fixedSize=1;fillColor=#f0a30a;strokeColor=#BD7000;fontColor=#000000;fontFamily=Ubuntu Mono;fontSize=18;fontStyle=1" vertex="1" parent="1">
           <mxGeometry x="1200" y="120" width="160" height="40" as="geometry" />
         </mxCell>
       </root>
diff --git a/docs/wave_generator.png b/docs/wave_generator.png
new file mode 100644
index 0000000000000000000000000000000000000000..f8de8870b12eb50245b225d4fa1c05cb7f2cc4d1
Binary files /dev/null and b/docs/wave_generator.png differ
diff --git a/src/hdl/wave_generator.vhd b/src/hdl/wave_generator.vhd
index 310c78f6226381637b988c9bc043aa8b4c3d3a76..aa7cd7d75044f281dd8f18b0257a5233ee8f2e5d 100644
--- a/src/hdl/wave_generator.vhd
+++ b/src/hdl/wave_generator.vhd
@@ -64,12 +64,12 @@ begin
             G_MAX_VAL => natural(floor(G_fs/(2.0*G_f0)))
             )
         port map (
-            I_clk    => ,
-            I_rst    => ,
-            I_u_d    => ,
-            O_val    => ,
-            O_last   => ,
-            O_middle =>
+            I_clk    => I_clk,
+            I_rst    => I_rst ,
+            I_u_d    => S_u_d,
+            O_val    => S_addr,
+            O_last   => S_last,
+            O_middle => S_middle
             );
 
     -- Module C
@@ -94,10 +94,10 @@ begin
             G_fs => G_fs
             )
         port map (
-            I_clk      => ,
-            I_rst      => ,
-            I_addr     => ,
-            O_triangle =>
+            I_clk      => I_clk,
+            I_rst      => I_rst,
+            I_addr     => S_addr(C_addr_half_w-1 downto 0),
+            O_triangle => S_triangle_out_lut 
             );
 
     -- Module E
@@ -108,10 +108,10 @@ begin
             G_fs => G_fs
             )
         port map (
-            I_clk       => ,
-            I_rst       => ,
-            I_addr      => ,
-            O_saw_tooth =>
+            I_clk       => I_clk ,
+            I_rst       => I_rst,
+            I_addr      => S_addr,
+            O_saw_tooth => S_saw_tooth_out_lut
             );
 
     S_square <= ((G_N-1) => '0', others => '1');
@@ -119,12 +119,12 @@ begin
     -- Module F
     F_inst : entity work.module_F
         port map (
-            I_sel  => ,
-            I_din0 => ,
-            I_din1 => ,
-            I_din2 => ,
-            I_din3 => ,
-            O_dout =>
+            I_sel  => I_wave_sel,
+            I_din0 => S_sine_out_lut,
+            I_din1 => S_square,
+            I_din2 => S_saw_tooth_out_lut,
+            I_din3 => S_triangle_out_lut,
+            O_dout => S_wave_sample
             );
 
     -- Module G
@@ -133,17 +133,17 @@ begin
             G_N => G_N
             )
         port map (
-            I_din  => ,
-            O_dout =>
+            I_din  => S_wave_sample,
+            O_dout => S_opposite_wave_sample
             );
 
     -- Module H
     H_inst : entity work.module_H
         port map (
-            I_sel  => ,
-            I_din0 => ,
-            I_din1 => ,
-            O_dout =>
+            I_sel  => S_sign_sel,
+            I_din0 => S_wave_sample,
+            I_din1 => S_opposite_wave_sample,
+            O_dout => S_wave_sample
             );
 
     -- Module I
@@ -152,10 +152,10 @@ begin
             G_N => G_N
             )
         port map (
-            I_clk  => ,
-            I_rst  => ,
-            I_din  => ,
-            O_dout =>
+            I_clk  => I_clk  ,
+            I_rst  => I_rst,
+            I_din  => S_wave_sample,
+            O_dout => S_wave_value   
             );
 
 end arch;