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="<div><br></div><div>A</div><div>Machine à états</div><div><br></div>" 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="<div><font style="font-size: 22px;">D&nbsp;</font></div><div><font style="font-size: 22px;">GENERATEUR SIGNAL TRIANGLE <br></font></div><div><br></div>" 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="<div><font style="font-size: 38px;">B <br></font></div><div><font style="font-size: 38px;">Compteur puis décompteur</font></div>" 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="<div>I</div><div>Registre à bascule</div>" 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="<div>F</div><div>Multiplexeur</div><div>(4 entrées)</div>" 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="<div>C</div><div>Générateur de sinusoïde</div>" 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="<div style="line-height: 100%;"><div>G</div><div>Inverseur en complément à 2</div></div>" 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="<div>H</div><div>Multiplexeur (2 entrées)</div>" 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="<div><font style="font-size: 26px;">E</font></div><div><font style="font-size: 26px;">GENERATEUR signal&nbsp; DENTS DE SCIE</font></div>" 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;