From 2977f724567dc6e0cbec44cf12509a3d6e820c5d Mon Sep 17 00:00:00 2001
From: Remi LELUAN <r24lelua@fl-tp-br-518.imta.fr>
Date: Mon, 5 May 2025 16:12:54 +0200
Subject: [PATCH] Ajout fichiers.

---
 docs/wave_generator_complet.drawio | 52 ++++++++++++++++++++++++++
 src/hdl/wave_generator.vhd         | 60 +++++++++++++++---------------
 2 files changed, 82 insertions(+), 30 deletions(-)
 create mode 100644 docs/wave_generator_complet.drawio

diff --git a/docs/wave_generator_complet.drawio b/docs/wave_generator_complet.drawio
new file mode 100644
index 0000000..ff4f3b2
--- /dev/null
+++ b/docs/wave_generator_complet.drawio
@@ -0,0 +1,52 @@
+<mxfile host="app.diagrams.net" agent="Mozilla/5.0 (X11; Linux x86_64; rv:137.0) Gecko/20100101 Firefox/137.0" version="26.2.14">
+  <diagram name="Page-1" id="ZRCvXX_TBlFcA-i0oMmK">
+    <mxGraphModel dx="3112" dy="1136" 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">
+      <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">
+          <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">
+          <mxGeometry x="160" y="80" width="280" height="160" as="geometry" />
+        </mxCell>
+        <mxCell id="liv1zIGuVtiVySRaDl_v-2" value="&lt;div style=&quot;line-height: 60%;&quot;&gt;&lt;div&gt;D&lt;/div&gt;&lt;div&gt;&lt;font style=&quot;font-size: 16px; line-height: 60%;&quot;&gt;properties:&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font style=&quot;font-size: 16px; line-height: 60%;&quot;&gt;-sequential module&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font style=&quot;font-size: 16px; line-height: 60%;&quot;&gt;-générateur signal triangulaire (quart de période)&lt;/font&gt;&lt;/div&gt;&lt;/div&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontFamily=Ubuntu Mono;fontSize=40;" parent="1" vertex="1">
+          <mxGeometry x="160" y="320" width="280" height="160" as="geometry" />
+        </mxCell>
+        <mxCell id="liv1zIGuVtiVySRaDl_v-3" value="&lt;div style=&quot;line-height: 60%;&quot;&gt;&lt;div&gt;B&lt;/div&gt;&lt;div&gt;&lt;font style=&quot;font-size: 16px; line-height: 60%;&quot;&gt;properties:&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font style=&quot;font-size: 16px; line-height: 60%;&quot;&gt;-sequential module&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font style=&quot;font-size: 16px; line-height: 60%;&quot;&gt;-compteur bidirectionnel (en fonction up/down)&lt;/font&gt;&lt;/div&gt;&lt;/div&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontFamily=Ubuntu Mono;fontSize=40;" parent="1" vertex="1">
+          <mxGeometry x="520" y="80" width="280" height="160" as="geometry" />
+        </mxCell>
+        <mxCell id="liv1zIGuVtiVySRaDl_v-4" value="&lt;div style=&quot;line-height: 60%;&quot;&gt;&lt;div&gt;I&lt;/div&gt;&lt;div&gt;&lt;font style=&quot;font-size: 16px; line-height: 60%;&quot;&gt;properties:&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font style=&quot;font-size: 16px; line-height: 60%;&quot;&gt;-sequential module&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font style=&quot;font-size: 16px; line-height: 60%;&quot;&gt;-flip flop&lt;/font&gt;&lt;/div&gt;&lt;/div&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontFamily=Ubuntu Mono;fontSize=40;" parent="1" vertex="1">
+          <mxGeometry x="880" y="560" width="280" height="160" as="geometry" />
+        </mxCell>
+        <mxCell id="liv1zIGuVtiVySRaDl_v-5" value="&lt;div style=&quot;line-height: 60%;&quot;&gt;&lt;div&gt;F&lt;/div&gt;&lt;div&gt;&lt;font style=&quot;font-size: 16px; line-height: 60%;&quot;&gt;properties:&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font style=&quot;font-size: 16px; line-height: 60%;&quot;&gt;-module combinatoire&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font style=&quot;font-size: 16px; line-height: 60%;&quot;&gt;-multiplexeur 4 à 1 &lt;br&gt;&lt;/font&gt;&lt;/div&gt;&lt;/div&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontFamily=Ubuntu Mono;fontSize=40;" parent="1" vertex="1">
+          <mxGeometry x="880" y="320" width="280" height="160" as="geometry" />
+        </mxCell>
+        <mxCell id="liv1zIGuVtiVySRaDl_v-6" value="&lt;div style=&quot;line-height: 80%;&quot;&gt;&lt;div&gt;C&lt;/div&gt;&lt;div&gt;&lt;font style=&quot;font-size: 16px; line-height: 80%;&quot;&gt;properties:&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font style=&quot;font-size: 16px; line-height: 80%;&quot;&gt;-sequential module&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font style=&quot;font-size: 16px; line-height: 80%;&quot;&gt;-générateur de sinusoides&lt;/font&gt;&lt;/div&gt;&lt;/div&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontFamily=Ubuntu Mono;fontSize=40;" parent="1" vertex="1">
+          <mxGeometry x="880" y="80" width="280" height="160" as="geometry" />
+        </mxCell>
+        <mxCell id="liv1zIGuVtiVySRaDl_v-7" value="&lt;div style=&quot;line-height: 60%;&quot;&gt;&lt;div&gt;G&lt;/div&gt;&lt;div&gt;&lt;font style=&quot;font-size: 16px; line-height: 60%;&quot;&gt;properties:&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font style=&quot;font-size: 16px; line-height: 60%;&quot;&gt;-module combinatoire&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font style=&quot;font-size: 16px; line-height: 60%;&quot;&gt;-inverseur&lt;/font&gt;&lt;/div&gt;&lt;/div&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontFamily=Ubuntu Mono;fontSize=40;" parent="1" vertex="1">
+          <mxGeometry x="160" y="560" width="280" height="160" as="geometry" />
+        </mxCell>
+        <mxCell id="liv1zIGuVtiVySRaDl_v-8" value="&lt;div style=&quot;line-height: 60%;&quot;&gt;&lt;div&gt;H&lt;/div&gt;&lt;div&gt;&lt;font style=&quot;font-size: 16px; line-height: 60%;&quot;&gt;properties:&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font style=&quot;font-size: 16px; line-height: 60%;&quot;&gt;-module combinatoire&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font style=&quot;font-size: 16px; line-height: 60%;&quot;&gt;-multiplexeur 2 à 1&lt;/font&gt;&lt;/div&gt;&lt;/div&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontFamily=Ubuntu Mono;fontSize=40;" parent="1" vertex="1">
+          <mxGeometry x="520" y="560" width="280" height="160" as="geometry" />
+        </mxCell>
+        <mxCell id="liv1zIGuVtiVySRaDl_v-9" value="&lt;div style=&quot;line-height: 60%;&quot;&gt;&lt;div&gt;E&lt;/div&gt;&lt;div&gt;&lt;font style=&quot;font-size: 16px; line-height: 60%;&quot;&gt;properties:&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font style=&quot;font-size: 16px; line-height: 60%;&quot;&gt;-sequential module&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font style=&quot;font-size: 16px; line-height: 60%;&quot;&gt;-générateur dent de scie (demie période)&lt;/font&gt;&lt;/div&gt;&lt;/div&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontFamily=Ubuntu Mono;fontSize=40;" parent="1" vertex="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">
+          <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">
+          <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">
+          <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">
+          <mxGeometry x="1200" y="120" width="160" height="40" as="geometry" />
+        </mxCell>
+      </root>
+    </mxGraphModel>
+  </diagram>
+</mxfile>
diff --git a/src/hdl/wave_generator.vhd b/src/hdl/wave_generator.vhd
index 310c78f..0a82671 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_value
             );
 
     -- Module G
@@ -133,17 +133,17 @@ begin
             G_N => G_N
             )
         port map (
-            I_din  => ,
-            O_dout =>
+            I_din  => S_wave_value,
+            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_value,
+            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 => O_wav
             );
 
 end arch;
-- 
GitLab