diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..ca2b7874ee44cef1857d5487e8c8184223131c55 Binary files /dev/null and b/.DS_Store differ diff --git a/docs/wave_generator.drawio b/docs/wave_generator.drawio index 6d65d824039ac0376711b9b39806f970cf0549ca..56eb1f44c14cf1a8154f687dfcb180bc5dcddb3c 100644 --- a/docs/wave_generator.drawio +++ b/docs/wave_generator.drawio @@ -1,50 +1,50 @@ -<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 (Windows NT 10.0; Win64; x64; rv:129.0) Gecko/20100101 Firefox/129.0" version="27.0.5"> + <diagram name="Page-1" id="7NDjApFd_wu7eMK28xhh"> + <mxGraphModel dx="3215" dy="1323" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" 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 id="m69L4zfaOTxG1qSxpspI-1" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#666666;arcSize=3;" vertex="1" parent="1"> + <mxGeometry x="-2" y="41" 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 id="m69L4zfaOTxG1qSxpspI-2" value="<div style="line-height: 50%;"><div></div><div><font style="line-height: 50%;">A</font><font style="line-height: 50%;"><br></font></div><div><font style="font-size: 18px; line-height: 50%;">Machine à états</font></div><div><font style="font-size: 18px; line-height: 50%;">Séquentiel</font></div></div>" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontFamily=Ubuntu Mono;fontSize=40;" vertex="1" parent="1"> + <mxGeometry x="158" y="81" 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"> - <mxGeometry x="160" y="320" width="280" height="160" as="geometry" /> + <mxCell id="m69L4zfaOTxG1qSxpspI-4" value="<div style="line-height: 50%;"><div></div><div><font style="line-height: 50%;">B</font><font style="line-height: 50%;"><br></font></div><div><font style="font-size: 18px; line-height: 50%;">Compteur/Générateur de rampes</font></div><div><font style="font-size: 18px; line-height: 50%;">Séquentiel<br></font></div></div>" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontFamily=Ubuntu Mono;fontSize=40;" vertex="1" parent="1"> + <mxGeometry x="518" y="81" 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"> - <mxGeometry x="520" y="80" width="280" height="160" as="geometry" /> + <mxCell id="m69L4zfaOTxG1qSxpspI-7" value="C<div style="line-height: 50%;"><font style="font-size: 18px; line-height: 50%;">Générateur de sinus (numéri</font><font style="line-height: 50%; font-size: 18px;">ques)</font><font style="font-size: 18px;"><br>Séquentiel</font><br></div>" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontFamily=Ubuntu Mono;fontSize=40;" vertex="1" parent="1"> + <mxGeometry x="878" y="81" 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"> - <mxGeometry x="880" y="560" width="280" height="160" as="geometry" /> + <mxCell id="m69L4zfaOTxG1qSxpspI-8" value="<div style="line-height: 50%;"><div><font style="line-height: 50%;">G</font><font style="line-height: 50%;"><br></font></div><div><font style="font-size: 18px; line-height: 50%;">Inverseur de signe en complément à 2</font></div><div><font style="font-size: 18px; line-height: 50%;">Combinatoire</font></div><div><font style="font-size: 18px; line-height: 50%;">Risque : overflow pour la plus petite valeure négative si on lui change son signe</font></div></div>" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontFamily=Ubuntu Mono;fontSize=40;" vertex="1" parent="1"> + <mxGeometry x="158" y="561" 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"> - <mxGeometry x="880" y="320" width="280" height="160" as="geometry" /> + <mxCell id="m69L4zfaOTxG1qSxpspI-11" 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="-42" y="121" width="160" height="40" 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"> - <mxGeometry x="880" y="80" width="280" height="160" as="geometry" /> + <mxCell id="m69L4zfaOTxG1qSxpspI-12" 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="-42" y="201" width="160" height="40" 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"> - <mxGeometry x="160" y="560" width="280" height="160" as="geometry" /> + <mxCell id="m69L4zfaOTxG1qSxpspI-13" 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="-42" y="281" width="160" height="40" 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"> - <mxGeometry x="520" y="560" width="280" height="160" as="geometry" /> + <mxCell id="m69L4zfaOTxG1qSxpspI-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" vertex="1" parent="1"> + <mxGeometry x="1198" y="121" width="160" height="40" 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"> - <mxGeometry x="520" y="320" width="280" height="160" as="geometry" /> + <mxCell id="m69L4zfaOTxG1qSxpspI-15" value="D<div style="line-height: 50%;"><font style="font-size: 18px; line-height: 50%;">Générateur de rampes (numéri</font><font style="line-height: 50%; font-size: 18px;">ques)</font><font style="font-size: 18px;"><br>Séquentiel</font><br></div>" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontFamily=Ubuntu Mono;fontSize=40;" vertex="1" parent="1"> + <mxGeometry x="158" y="319.5" width="280" height="163" 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 id="m69L4zfaOTxG1qSxpspI-16" value="E<div style="line-height: 50%;"><font style="font-size: 18px; line-height: 50%;">Générateur de dents de scie (numéri</font><font style="line-height: 50%; font-size: 18px;">ques)</font><font style="font-size: 18px;"><br>Séquentiel</font><br></div>" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontFamily=Ubuntu Mono;fontSize=40;" vertex="1" parent="1"> + <mxGeometry x="518" y="319.5" width="280" height="163" 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 id="m69L4zfaOTxG1qSxpspI-17" value="F<div style="line-height: 50%;"><font style="font-size: 18px; line-height: 50%;">Multiplexeur 4 vers 1</font><font style="font-size: 18px;"><br>Séquentiel</font><br></div>" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontFamily=Ubuntu Mono;fontSize=40;" vertex="1" parent="1"> + <mxGeometry x="878" y="319.5" width="280" height="163" 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 id="m69L4zfaOTxG1qSxpspI-18" value="H<div style="line-height: 50%;"><font style="font-size: 18px; line-height: 50%;">Multiplexeur 2 vers 1</font><font style="font-size: 18px;"><br>Séquentiel</font><br></div>" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontFamily=Ubuntu Mono;fontSize=40;" vertex="1" parent="1"> + <mxGeometry x="518" y="561" width="280" height="163" 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 id="m69L4zfaOTxG1qSxpspI-19" value="I<div style="line-height: 50%;"><font style="font-size: 18px;">C'est un d-flip-flop</font></div><div style="line-height: 50%;"><font style="font-size: 18px;">Séquentiel </font><br></div>" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontFamily=Ubuntu Mono;fontSize=40;" vertex="1" parent="1"> + <mxGeometry x="878" y="561" width="280" height="163" as="geometry" /> </mxCell> </root> </mxGraphModel> diff --git a/docs/wave_generator.png b/docs/wave_generator.png new file mode 100644 index 0000000000000000000000000000000000000000..e031e79c5be3cfd41c089ca887f3c610f22db9dd 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 46fa0fd202f63742c2bd08b3afe54a986e4aef90..748d0fb8b12ec8679476cc26dc1b549f64961e36 100644 --- a/src/hdl/wave_generator.vhd +++ b/src/hdl/wave_generator.vhd @@ -64,7 +64,7 @@ begin G_MAX_VAL => natural(floor(G_fs/(2.0*G_f0))) ) port map ( - I_clk => I_clk , + I_clk => I_clk, I_rst => I_rst, I_u_d => S_u_d, O_val => S_addr, @@ -100,7 +100,7 @@ begin O_triangle => S_triangle_out_lut ); - -- Module ES_addr + -- Module E E_inst : entity work.module_E generic map ( G_N => G_N, @@ -122,8 +122,8 @@ begin 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, + I_din2 => S_triangle_out_lut, + I_din3 => S_saw_tooth_out_lut, O_dout => S_wave_sample );