diff --git a/docs/img/FSM.drawio b/docs/img/FSM.drawio index bd839a9b01be6c20eb7b6840fcbab9fd73e2336d..ab7715bb0f8584de688d941d3e18ba8ff013a514 100644 --- a/docs/img/FSM.drawio +++ b/docs/img/FSM.drawio @@ -1,150 +1,300 @@ -<mxfile host="Electron" modified="2023-04-28T15:06:41.325Z" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/21.2.1 Chrome/112.0.5615.87 Electron/24.1.2 Safari/537.36" etag="FiJOiTXp0n2vq3d9UAum" version="21.2.1" type="device"> - <diagram name="Page-1" id="lufUWjv2mjaYaQ6cVEt1"> - <mxGraphModel dx="798" dy="1290" grid="0" 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="bw7OO0sNot4gaAuLXok9-1" value="" style="ellipse;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1"> - <mxGeometry x="240" y="40" width="160" height="80" as="geometry" /> - </mxCell> - <mxCell id="bw7OO0sNot4gaAuLXok9-2" value="<font style="font-size: 21px;" face="Ubuntu Mono">Wait Sample</font>" style="ellipse;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1"> - <mxGeometry x="250" y="50" width="140" height="60" as="geometry" /> - </mxCell> - <mxCell id="bw7OO0sNot4gaAuLXok9-3" value="Store" style="ellipse;whiteSpace=wrap;html=1;fontSize=21;fontFamily=Ubuntu Mono;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1"> - <mxGeometry x="240" y="160" width="160" height="80" as="geometry" /> - </mxCell> - <mxCell id="bw7OO0sNot4gaAuLXok9-5" value="Processing<br>Loop" style="ellipse;whiteSpace=wrap;html=1;fontSize=21;fontFamily=Ubuntu Mono;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1"> - <mxGeometry x="240" y="280" width="160" height="80" as="geometry" /> - </mxCell> - <mxCell id="bw7OO0sNot4gaAuLXok9-6" value="Output" style="ellipse;whiteSpace=wrap;html=1;fontSize=21;fontFamily=Ubuntu Mono;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1"> - <mxGeometry x="240" y="400" width="160" height="80" as="geometry" /> - </mxCell> - <mxCell id="bw7OO0sNot4gaAuLXok9-7" value="Wait End<br>Sample" style="ellipse;whiteSpace=wrap;html=1;fontSize=21;fontFamily=Ubuntu Mono;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1"> - <mxGeometry x="240" y="520" width="160" height="80" as="geometry" /> - </mxCell> - <mxCell id="bw7OO0sNot4gaAuLXok9-8" value="" style="endArrow=block;html=1;rounded=0;endFill=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" edge="1" parent="1" source="bw7OO0sNot4gaAuLXok9-1" target="bw7OO0sNot4gaAuLXok9-3"> - <mxGeometry width="50" height="50" relative="1" as="geometry"> - <mxPoint x="560" y="650" as="sourcePoint" /> - <mxPoint x="610" y="600" as="targetPoint" /> - </mxGeometry> - </mxCell> - <mxCell id="bw7OO0sNot4gaAuLXok9-9" value="" style="endArrow=block;html=1;rounded=0;endFill=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" target="bw7OO0sNot4gaAuLXok9-5"> - <mxGeometry width="50" height="50" relative="1" as="geometry"> - <mxPoint x="319.76" y="240" as="sourcePoint" /> - <mxPoint x="319.76" y="320" as="targetPoint" /> - </mxGeometry> - </mxCell> - <mxCell id="bw7OO0sNot4gaAuLXok9-10" value="" style="endArrow=block;html=1;rounded=0;endFill=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" target="bw7OO0sNot4gaAuLXok9-6"> - <mxGeometry width="50" height="50" relative="1" as="geometry"> - <mxPoint x="319.76" y="360" as="sourcePoint" /> - <mxPoint x="320" y="400" as="targetPoint" /> - </mxGeometry> - </mxCell> - <mxCell id="bw7OO0sNot4gaAuLXok9-11" value="" style="endArrow=block;html=1;rounded=0;endFill=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="bw7OO0sNot4gaAuLXok9-6" target="bw7OO0sNot4gaAuLXok9-7"> - <mxGeometry width="50" height="50" relative="1" as="geometry"> - <mxPoint x="319.76" y="480" as="sourcePoint" /> - <mxPoint x="319.76" y="560" as="targetPoint" /> - </mxGeometry> - </mxCell> - <mxCell id="bw7OO0sNot4gaAuLXok9-12" value="" style="curved=1;endArrow=block;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0;entryY=0;entryDx=0;entryDy=0;endFill=1;" edge="1" parent="1" source="bw7OO0sNot4gaAuLXok9-7" target="bw7OO0sNot4gaAuLXok9-1"> - <mxGeometry width="50" height="50" relative="1" as="geometry"> - <mxPoint x="510" y="320" as="sourcePoint" /> - <mxPoint x="560" y="270" as="targetPoint" /> - <Array as="points"> - <mxPoint x="320" y="670" /> - <mxPoint x="170" y="640" /> - <mxPoint x="180" y="80" /> - <mxPoint x="230" y="20" /> - </Array> - </mxGeometry> - </mxCell> - <mxCell id="bw7OO0sNot4gaAuLXok9-14" value="" style="endArrow=none;html=1;rounded=0;" edge="1" parent="1"> - <mxGeometry width="50" height="50" relative="1" as="geometry"> - <mxPoint x="300" y="140" as="sourcePoint" /> - <mxPoint x="340" y="140" as="targetPoint" /> - </mxGeometry> - </mxCell> - <mxCell id="bw7OO0sNot4gaAuLXok9-17" value="<font style="font-size: 15px;" face="Ubuntu Mono">Condition 1</font>" style="edgeLabel;html=1;align=left;verticalAlign=middle;resizable=0;points=[];labelBackgroundColor=none;labelBorderColor=none;fontStyle=2" vertex="1" connectable="0" parent="bw7OO0sNot4gaAuLXok9-14"> - <mxGeometry x="0.564" relative="1" as="geometry"> - <mxPoint x="10" as="offset" /> - </mxGeometry> - </mxCell> - <mxCell id="bw7OO0sNot4gaAuLXok9-15" value="" style="endArrow=none;html=1;rounded=0;" edge="1" parent="1"> - <mxGeometry width="50" height="50" relative="1" as="geometry"> - <mxPoint x="300" y="380" as="sourcePoint" /> - <mxPoint x="340" y="380" as="targetPoint" /> - </mxGeometry> - </mxCell> - <mxCell id="bw7OO0sNot4gaAuLXok9-16" value="" style="endArrow=none;html=1;rounded=0;" edge="1" parent="1"> - <mxGeometry width="50" height="50" relative="1" as="geometry"> - <mxPoint x="300" y="620" as="sourcePoint" /> - <mxPoint x="340" y="620" as="targetPoint" /> - </mxGeometry> - </mxCell> - <mxCell id="bw7OO0sNot4gaAuLXok9-18" value="<font style="font-size: 15px;" face="Ubuntu Mono">Condition 2</font>" style="edgeLabel;html=1;align=left;verticalAlign=middle;resizable=0;points=[];labelBackgroundColor=none;labelBorderColor=none;fontStyle=2" vertex="1" connectable="0" parent="1"> - <mxGeometry x="340.00279069767436" y="380" as="geometry" /> - </mxCell> - <mxCell id="bw7OO0sNot4gaAuLXok9-19" value="<font style="font-size: 15px;" face="Ubuntu Mono">Condition 3</font>" style="edgeLabel;html=1;align=left;verticalAlign=middle;resizable=0;points=[];labelBackgroundColor=none;labelBorderColor=none;fontStyle=2" vertex="1" connectable="0" parent="1"> - <mxGeometry x="340.00279069767436" y="620" as="geometry" /> - </mxCell> - <mxCell id="bw7OO0sNot4gaAuLXok9-20" value="" style="curved=1;endArrow=block;html=1;rounded=0;endFill=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" target="bw7OO0sNot4gaAuLXok9-1"> - <mxGeometry width="50" height="50" relative="1" as="geometry"> - <mxPoint x="350" y="-10" as="sourcePoint" /> - <mxPoint x="460" y="90" as="targetPoint" /> - <Array as="points"> - <mxPoint x="330" /> - </Array> - </mxGeometry> - </mxCell> - <mxCell id="bw7OO0sNot4gaAuLXok9-21" value="<font face="Ubuntu Mono"><span style="font-size: 15px;">Rst = '1'</span></font>" style="edgeLabel;html=1;align=left;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="1"> - <mxGeometry x="350.00279069767436" y="-10" as="geometry" /> - </mxCell> - <mxCell id="bw7OO0sNot4gaAuLXok9-23" value="<font style="font-size: 15px;" face="Ubuntu Mono">LoadShift = '0'<br>InitAddress = '0'<br>IncrAddress = '0'<br>InitSum = '0'<br>LoadSum = '0'<br>LoadOutput = '1'<br></font>" style="rounded=0;whiteSpace=wrap;html=1;align=left;fontStyle=2;container=0;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;" vertex="1" parent="1"> - <mxGeometry x="480" y="380" width="240" height="110" as="geometry" /> - </mxCell> - <mxCell id="bw7OO0sNot4gaAuLXok9-24" value="" style="endArrow=block;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;endFill=1;dashed=1;" edge="1" parent="1"> - <mxGeometry width="50" height="50" relative="1" as="geometry"> - <mxPoint x="400" y="439.77" as="sourcePoint" /> - <mxPoint x="480" y="439.77" as="targetPoint" /> - </mxGeometry> - </mxCell> - <mxCell id="bw7OO0sNot4gaAuLXok9-33" value="<font style="font-size: 15px;" face="Ubuntu Mono">LoadShift =&nbsp;<br>InitAddress =&nbsp;<br>IncrAddress =&nbsp;<br>InitSum =&nbsp;<br>LoadSum =&nbsp;<br>LoadOutput =&nbsp;<br></font>" style="rounded=0;whiteSpace=wrap;html=1;align=left;fontStyle=2;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;" vertex="1" parent="1"> - <mxGeometry x="480" y="20" width="240" height="110" as="geometry" /> - </mxCell> - <mxCell id="bw7OO0sNot4gaAuLXok9-34" value="" style="endArrow=block;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;endFill=1;dashed=1;" edge="1" parent="1"> - <mxGeometry width="50" height="50" relative="1" as="geometry"> - <mxPoint x="400" y="79.80999999999995" as="sourcePoint" /> - <mxPoint x="480" y="79.80999999999995" as="targetPoint" /> - </mxGeometry> - </mxCell> - <mxCell id="bw7OO0sNot4gaAuLXok9-30" value="<font style="font-size: 15px;" face="Ubuntu Mono">LoadShift =&nbsp;<br>InitAddress =&nbsp;<br>IncrAddress =&nbsp;<br>InitSum =&nbsp;<br>LoadSum =&nbsp;<br>LoadOutput =&nbsp;<br></font>" style="rounded=0;whiteSpace=wrap;html=1;align=left;fontStyle=2;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;" vertex="1" parent="1"> - <mxGeometry x="480" y="140" width="240" height="110" as="geometry" /> - </mxCell> - <mxCell id="bw7OO0sNot4gaAuLXok9-31" value="" style="endArrow=block;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;endFill=1;dashed=1;" edge="1" parent="1"> - <mxGeometry width="50" height="50" relative="1" as="geometry"> - <mxPoint x="400" y="199.80999999999995" as="sourcePoint" /> - <mxPoint x="480" y="199.80999999999995" as="targetPoint" /> - </mxGeometry> - </mxCell> - <mxCell id="bw7OO0sNot4gaAuLXok9-25" value="<font style="font-size: 15px;" face="Ubuntu Mono">LoadShift =&nbsp;<br>InitAddress =&nbsp;<br>IncrAddress =&nbsp;<br>InitSum =&nbsp;<br>LoadSum =&nbsp;<br>LoadOutput =&nbsp;<br></font>" style="rounded=0;whiteSpace=wrap;html=1;align=left;fontStyle=2;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;" vertex="1" parent="1"> - <mxGeometry x="480" y="260" width="240" height="110" as="geometry" /> - </mxCell> - <mxCell id="bw7OO0sNot4gaAuLXok9-27" value="" style="endArrow=block;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;endFill=1;dashed=1;" edge="1" parent="1"> - <mxGeometry width="50" height="50" relative="1" as="geometry"> - <mxPoint x="400" y="319.80999999999995" as="sourcePoint" /> - <mxPoint x="480" y="319.80999999999995" as="targetPoint" /> - </mxGeometry> - </mxCell> - <mxCell id="bw7OO0sNot4gaAuLXok9-36" value="<font style="font-size: 15px;" face="Ubuntu Mono">LoadShift =&nbsp;<br>InitAddress =&nbsp;<br>IncrAddress =&nbsp;<br>InitSum =&nbsp;<br>LoadSum =&nbsp;<br>LoadOutput =&nbsp;<br></font>" style="rounded=0;whiteSpace=wrap;html=1;align=left;fontStyle=2;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;" vertex="1" parent="1"> - <mxGeometry x="480" y="500" width="240" height="110" as="geometry" /> - </mxCell> - <mxCell id="bw7OO0sNot4gaAuLXok9-37" value="" style="endArrow=block;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;endFill=1;dashed=1;" edge="1" parent="1"> - <mxGeometry width="50" height="50" relative="1" as="geometry"> - <mxPoint x="400" y="559.81" as="sourcePoint" /> - <mxPoint x="480" y="559.81" as="targetPoint" /> - </mxGeometry> - </mxCell> - </root> - </mxGraphModel> - </diagram> -</mxfile> +<mxfile host="app.diagrams.net" agent="Mozilla/5.0 (iPad; CPU OS 18_3_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/134.0.6998.99 Mobile/15E148 Safari/604.1" version="26.1.1"> + <diagram name="Page-1" id="lufUWjv2mjaYaQ6cVEt1"> + <mxGraphModel dx="1848" dy="2135" grid="0" 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="0n-EVayrTCi-GV-k-pFp-1" value="" style="ellipse;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1"> + <mxGeometry x="132" y="-762" width="160" height="80" as="geometry" /> + </mxCell> + <mxCell id="0n-EVayrTCi-GV-k-pFp-2" value="<font style="font-size: 21px;" face="Ubuntu Mono">Wait Sample</font>" style="ellipse;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1"> + <mxGeometry x="142" y="-752" width="140" height="60" as="geometry" /> + </mxCell> + <mxCell id="0n-EVayrTCi-GV-k-pFp-3" value="Store X" style="ellipse;whiteSpace=wrap;html=1;fontSize=21;fontFamily=Ubuntu Mono;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1"> + <mxGeometry x="132" y="-642" width="160" height="80" as="geometry" /> + </mxCell> + <mxCell id="0n-EVayrTCi-GV-k-pFp-4" value="Processing<br>Loop Y" style="ellipse;whiteSpace=wrap;html=1;fontSize=21;fontFamily=Ubuntu Mono;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1"> + <mxGeometry x="132" y="-509" width="160" height="80" as="geometry" /> + </mxCell> + <mxCell id="0n-EVayrTCi-GV-k-pFp-5" value="Output" style="ellipse;whiteSpace=wrap;html=1;fontSize=21;fontFamily=Ubuntu Mono;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1"> + <mxGeometry x="135" y="350" width="160" height="80" as="geometry" /> + </mxCell> + <mxCell id="0n-EVayrTCi-GV-k-pFp-65" style="edgeStyle=orthogonalEdgeStyle;curved=1;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="0n-EVayrTCi-GV-k-pFp-6" target="0n-EVayrTCi-GV-k-pFp-2" edge="1"> + <mxGeometry relative="1" as="geometry"> + <Array as="points"> + <mxPoint x="212" y="658" /> + <mxPoint x="83" y="658" /> + <mxPoint x="83" y="-722" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="0n-EVayrTCi-GV-k-pFp-6" value="Wait End<br>Sample" style="ellipse;whiteSpace=wrap;html=1;fontSize=21;fontFamily=Ubuntu Mono;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1"> + <mxGeometry x="132" y="499.4999999999999" width="160" height="75" as="geometry" /> + </mxCell> + <mxCell id="0n-EVayrTCi-GV-k-pFp-7" value="" style="endArrow=block;html=1;rounded=0;endFill=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" parent="1" source="0n-EVayrTCi-GV-k-pFp-1" target="0n-EVayrTCi-GV-k-pFp-3" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="452" y="-152" as="sourcePoint" /> + <mxPoint x="502" y="-202" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="0n-EVayrTCi-GV-k-pFp-8" value="" style="endArrow=block;html=1;rounded=0;endFill=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" target="0n-EVayrTCi-GV-k-pFp-4" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="211.76" y="-562" as="sourcePoint" /> + <mxPoint x="211.76" y="-482" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="0n-EVayrTCi-GV-k-pFp-9" value="" style="endArrow=block;html=1;rounded=0;endFill=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="0n-EVayrTCi-GV-k-pFp-44" target="0n-EVayrTCi-GV-k-pFp-5" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="217.76" y="249" as="sourcePoint" /> + <mxPoint x="218" y="289" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="0n-EVayrTCi-GV-k-pFp-10" value="" style="endArrow=block;html=1;rounded=0;endFill=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="0n-EVayrTCi-GV-k-pFp-5" target="0n-EVayrTCi-GV-k-pFp-6" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="217.76" y="369" as="sourcePoint" /> + <mxPoint x="217.76" y="449" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="0n-EVayrTCi-GV-k-pFp-12" value="" style="endArrow=none;html=1;rounded=0;" parent="1" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="192" y="-662" as="sourcePoint" /> + <mxPoint x="232" y="-662" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="0n-EVayrTCi-GV-k-pFp-13" value="<font face="Ubuntu Mono">I_InputSampleValid = 1</font>" style="edgeLabel;html=1;align=left;verticalAlign=middle;resizable=0;points=[];labelBackgroundColor=none;labelBorderColor=none;fontStyle=2" parent="0n-EVayrTCi-GV-k-pFp-12" vertex="1" connectable="0"> + <mxGeometry x="0.564" relative="1" as="geometry"> + <mxPoint x="10" as="offset" /> + </mxGeometry> + </mxCell> + <mxCell id="0n-EVayrTCi-GV-k-pFp-14" value="" style="endArrow=none;html=1;rounded=0;" parent="1" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="201" y="332" as="sourcePoint" /> + <mxPoint x="241" y="332" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="0n-EVayrTCi-GV-k-pFp-15" value="" style="endArrow=none;html=1;rounded=0;" parent="1" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="195" y="600.5699999999999" as="sourcePoint" /> + <mxPoint x="235" y="600.5699999999999" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="0n-EVayrTCi-GV-k-pFp-16" value="<font face="Ubuntu Mono">I_processingDone =1</font>" style="edgeLabel;html=1;align=left;verticalAlign=middle;resizable=0;points=[];labelBackgroundColor=none;labelBorderColor=none;fontStyle=2" parent="1" vertex="1" connectable="0"> + <mxGeometry x="241.0027906976743" y="332" as="geometry" /> + </mxCell> + <mxCell id="0n-EVayrTCi-GV-k-pFp-17" value="<font face="Ubuntu Mono"><i>I_InputSampleValid=0</i></font>" style="edgeLabel;html=1;align=left;verticalAlign=middle;resizable=0;points=[];labelBackgroundColor=none;labelBorderColor=none;fontStyle=2" parent="1" vertex="1" connectable="0"> + <mxGeometry x="235.0027906976743" y="600.5699999999999" as="geometry" /> + </mxCell> + <mxCell id="0n-EVayrTCi-GV-k-pFp-18" value="" style="curved=1;endArrow=block;html=1;rounded=0;endFill=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" target="0n-EVayrTCi-GV-k-pFp-1" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="242" y="-812" as="sourcePoint" /> + <mxPoint x="352" y="-712" as="targetPoint" /> + <Array as="points"> + <mxPoint x="222" y="-802" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="0n-EVayrTCi-GV-k-pFp-19" value="<font face="Ubuntu Mono"><span style="font-size: 15px;">Rst = '1'</span></font>" style="edgeLabel;html=1;align=left;verticalAlign=middle;resizable=0;points=[];" parent="1" vertex="1" connectable="0"> + <mxGeometry x="242.0027906976743" y="-812" as="geometry" /> + </mxCell> + <mxCell id="0n-EVayrTCi-GV-k-pFp-21" value="" style="endArrow=block;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;endFill=1;dashed=1;" parent="1" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="292" y="391.77" as="sourcePoint" /> + <mxPoint x="372" y="391.77" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="0n-EVayrTCi-GV-k-pFp-22" value="<font style="font-size: 15px;" face="Ubuntu Mono"><br>InitAddress = '0'<br>IncrAddress = '0'<br>InitSum = '0' <br>LoadSum = '0'</font><div><font style="font-size: 15px;" face="Ubuntu Mono">LoadOutput = '0'</font></div><div><font style="font-size: 15px;" face="Ubuntu Mono">Sel_Proc = '00'</font></div>" style="rounded=0;whiteSpace=wrap;html=1;align=left;fontStyle=2;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;" parent="1" vertex="1"> + <mxGeometry x="372" y="-812" width="240" height="130" as="geometry" /> + </mxCell> + <mxCell id="0n-EVayrTCi-GV-k-pFp-23" value="" style="endArrow=block;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;endFill=1;dashed=1;" parent="1" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="292" y="-722.19" as="sourcePoint" /> + <mxPoint x="372" y="-722.19" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="0n-EVayrTCi-GV-k-pFp-25" value="" style="endArrow=block;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;endFill=1;dashed=1;" parent="1" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="292" y="-602.19" as="sourcePoint" /> + <mxPoint x="372" y="-602.19" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="0n-EVayrTCi-GV-k-pFp-27" value="" style="endArrow=block;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;endFill=1;dashed=1;" parent="1" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="295" y="-473.00000000000006" as="sourcePoint" /> + <mxPoint x="375" y="-473.00000000000006" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="0n-EVayrTCi-GV-k-pFp-29" value="" style="endArrow=block;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;endFill=1;dashed=1;" parent="1" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="295" y="540.3799999999999" as="sourcePoint" /> + <mxPoint x="375" y="540.3799999999999" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="0n-EVayrTCi-GV-k-pFp-30" value="Store Y" style="ellipse;whiteSpace=wrap;html=1;fontSize=21;fontFamily=Ubuntu Mono;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1"> + <mxGeometry x="135" y="-373" width="160" height="80" as="geometry" /> + </mxCell> + <mxCell id="0n-EVayrTCi-GV-k-pFp-31" value="Processing<br>Loop Z forward" style="ellipse;whiteSpace=wrap;html=1;fontSize=21;fontFamily=Ubuntu Mono;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1"> + <mxGeometry x="135" y="-218" width="160" height="80" as="geometry" /> + </mxCell> + <mxCell id="0n-EVayrTCi-GV-k-pFp-32" value="" style="endArrow=block;html=1;rounded=0;endFill=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" parent="1" source="0n-EVayrTCi-GV-k-pFp-4" target="0n-EVayrTCi-GV-k-pFp-30" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="222" y="-219" as="sourcePoint" /> + <mxPoint x="512" y="261" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="0n-EVayrTCi-GV-k-pFp-33" value="" style="endArrow=block;html=1;rounded=0;endFill=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="0n-EVayrTCi-GV-k-pFp-30" target="0n-EVayrTCi-GV-k-pFp-31" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="221.76" y="-65" as="sourcePoint" /> + <mxPoint x="221.76" y="15" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="0n-EVayrTCi-GV-k-pFp-34" value="" style="endArrow=none;html=1;rounded=0;" parent="1" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="195" y="-393" as="sourcePoint" /> + <mxPoint x="235" y="-393" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="0n-EVayrTCi-GV-k-pFp-35" value="<font face="Ubuntu Mono">I_processingDone =1</font>" style="edgeLabel;html=1;align=left;verticalAlign=middle;resizable=0;points=[];labelBackgroundColor=none;labelBorderColor=none;fontStyle=2" parent="0n-EVayrTCi-GV-k-pFp-34" vertex="1" connectable="0"> + <mxGeometry x="0.564" relative="1" as="geometry"> + <mxPoint x="10" as="offset" /> + </mxGeometry> + </mxCell> + <mxCell id="0n-EVayrTCi-GV-k-pFp-37" value="" style="endArrow=block;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;endFill=1;dashed=1;" parent="1" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="295" y="-333.19000000000005" as="sourcePoint" /> + <mxPoint x="375" y="-333.19000000000005" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="0n-EVayrTCi-GV-k-pFp-39" value="" style="endArrow=block;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;endFill=1;dashed=1;" parent="1" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="295" y="-178.19000000000005" as="sourcePoint" /> + <mxPoint x="375" y="-178.19000000000005" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="0n-EVayrTCi-GV-k-pFp-40" value="Processing<br>Loop Z backward" style="ellipse;whiteSpace=wrap;html=1;fontSize=21;fontFamily=Ubuntu Mono;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1"> + <mxGeometry x="135" y="-74" width="160" height="80" as="geometry" /> + </mxCell> + <mxCell id="0n-EVayrTCi-GV-k-pFp-42" value="" style="endArrow=block;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;endFill=1;dashed=1;" parent="1" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="295" y="-34.190000000000055" as="sourcePoint" /> + <mxPoint x="375" y="-34.190000000000055" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="0n-EVayrTCi-GV-k-pFp-43" value="Store Z" style="ellipse;whiteSpace=wrap;html=1;fontSize=21;fontFamily=Ubuntu Mono;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1"> + <mxGeometry x="135" y="77" width="160" height="80" as="geometry" /> + </mxCell> + <mxCell id="0n-EVayrTCi-GV-k-pFp-44" value="Processing<br>Loop R" style="ellipse;whiteSpace=wrap;html=1;fontSize=21;fontFamily=Ubuntu Mono;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1"> + <mxGeometry x="135" y="209" width="160" height="80" as="geometry" /> + </mxCell> + <mxCell id="0n-EVayrTCi-GV-k-pFp-45" value="" style="endArrow=block;html=1;rounded=0;endFill=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="0n-EVayrTCi-GV-k-pFp-43" target="0n-EVayrTCi-GV-k-pFp-44" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="211.76" y="85" as="sourcePoint" /> + <mxPoint x="211.76" y="165" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="0n-EVayrTCi-GV-k-pFp-46" value="" style="endArrow=none;html=1;rounded=0;" parent="1" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="195" y="57" as="sourcePoint" /> + <mxPoint x="235" y="57" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="0n-EVayrTCi-GV-k-pFp-47" value="<font face="Ubuntu Mono">I_processingDone =1</font>" style="edgeLabel;html=1;align=left;verticalAlign=middle;resizable=0;points=[];labelBackgroundColor=none;labelBorderColor=none;fontStyle=2" parent="0n-EVayrTCi-GV-k-pFp-46" vertex="1" connectable="0"> + <mxGeometry x="0.564" relative="1" as="geometry"> + <mxPoint x="10" as="offset" /> + </mxGeometry> + </mxCell> + <mxCell id="0n-EVayrTCi-GV-k-pFp-49" value="" style="endArrow=block;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;endFill=1;dashed=1;" parent="1" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="295" y="116.80999999999995" as="sourcePoint" /> + <mxPoint x="375" y="116.80999999999995" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="0n-EVayrTCi-GV-k-pFp-51" value="" style="endArrow=block;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;endFill=1;dashed=1;" parent="1" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="295" y="248.80999999999995" as="sourcePoint" /> + <mxPoint x="375" y="248.80999999999995" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="0n-EVayrTCi-GV-k-pFp-53" value="" style="endArrow=block;html=1;rounded=0;endFill=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="0n-EVayrTCi-GV-k-pFp-40" target="0n-EVayrTCi-GV-k-pFp-43" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="311" y="-594" as="sourcePoint" /> + <mxPoint x="311" y="-554" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="0n-EVayrTCi-GV-k-pFp-56" value="" style="endArrow=none;html=1;rounded=0;" parent="1" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="195" y="-93" as="sourcePoint" /> + <mxPoint x="235" y="-93" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="0n-EVayrTCi-GV-k-pFp-57" value="<font face="Ubuntu Mono">I_processingDone =1</font>" style="edgeLabel;html=1;align=left;verticalAlign=middle;resizable=0;points=[];labelBackgroundColor=none;labelBorderColor=none;fontStyle=2" parent="0n-EVayrTCi-GV-k-pFp-56" vertex="1" connectable="0"> + <mxGeometry x="0.564" relative="1" as="geometry"> + <mxPoint x="10" as="offset" /> + </mxGeometry> + </mxCell> + <mxCell id="0n-EVayrTCi-GV-k-pFp-61" value="" style="endArrow=block;html=1;rounded=0;endFill=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" parent="1" source="0n-EVayrTCi-GV-k-pFp-31" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="212" y="-203" as="sourcePoint" /> + <mxPoint x="215" y="-74" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="0n-EVayrTCi-GV-k-pFp-68" value="<div><br></div><div><br></div><font style="font-size: 15px;" face="Ubuntu Mono">InitAddress = '1'<br>IncrAddress = '0'<br>InitSum = '1' <br>LoadSum = '0'</font><div><font style="font-size: 15px;" face="Ubuntu Mono">LoadOutput = '0'</font></div><div><font style="font-size: 15px;" face="Ubuntu Mono">Sel_Proc = '00'</font></div>" style="rounded=0;whiteSpace=wrap;html=1;align=left;fontStyle=2;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;" parent="1" vertex="1"> + <mxGeometry x="375" y="-672" width="240" height="130" as="geometry" /> + </mxCell> + <mxCell id="0n-EVayrTCi-GV-k-pFp-69" value="<font style="font-size: 15px;" face="Ubuntu Mono"><br>InitAddress = '0'<br>IncrAddress = '1'<br>InitSum = '0' <br>LoadSum = '1'</font><div><font style="font-size: 15px;" face="Ubuntu Mono">LoadOutput = '0'</font></div><div><font style="font-size: 15px;" face="Ubuntu Mono">Sel_Proc = '00'</font></div>" style="rounded=0;whiteSpace=wrap;html=1;align=left;fontStyle=2;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;" parent="1" vertex="1"> + <mxGeometry x="372" y="-530" width="240" height="130" as="geometry" /> + </mxCell> + <mxCell id="0n-EVayrTCi-GV-k-pFp-71" value="<font style="font-size: 15px;" face="Ubuntu Mono"><br>InitAddress = '1'<br>IncrAddress = '0'<br>InitSum = '1' <br>LoadSum = '0'</font><div><font style="font-size: 15px;" face="Ubuntu Mono">LoadOutput = '1'</font></div><div><font style="font-size: 15px;" face="Ubuntu Mono">Sel_Proc = '01'</font></div>" style="rounded=0;whiteSpace=wrap;html=1;align=left;fontStyle=2;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;" parent="1" vertex="1"> + <mxGeometry x="375" y="-389" width="240" height="130" as="geometry" /> + </mxCell> + <mxCell id="0n-EVayrTCi-GV-k-pFp-72" value="<font style="font-size: 15px;" face="Ubuntu Mono"><br>InitAddress = 'I_processingDone'<br>IncrAddress = '1'<br>InitSum = '0' <br>LoadSum = '1'</font><div><font style="font-size: 15px;" face="Ubuntu Mono">LoadOutput = '0'</font></div><div><font style="font-size: 15px;" face="Ubuntu Mono">Sel_Proc = '01'</font></div>" style="rounded=0;whiteSpace=wrap;html=1;align=left;fontStyle=2;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;" parent="1" vertex="1"> + <mxGeometry x="375" y="-247" width="240" height="130" as="geometry" /> + </mxCell> + <mxCell id="0n-EVayrTCi-GV-k-pFp-74" value="<font style="font-size: 15px;" face="Ubuntu Mono"><br>InitAddress = '0'<br>IncrAddress = '1'<br>InitSum = '0' <br>LoadSum = '1'</font><div><font style="font-size: 15px;" face="Ubuntu Mono">LoadOutput = '0'</font></div><div><font style="font-size: 15px;" face="Ubuntu Mono">Sel_Proc = '10'</font></div>" style="rounded=0;whiteSpace=wrap;html=1;align=left;fontStyle=2;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;" parent="1" vertex="1"> + <mxGeometry x="375" y="-91" width="240" height="130" as="geometry" /> + </mxCell> + <mxCell id="0n-EVayrTCi-GV-k-pFp-75" value="<font style="font-size: 15px;" face="Ubuntu Mono"><br>InitAddress = '1'<br>IncrAddress = '0'<br>InitSum = '1' <br>LoadSum = '0'</font><div><font style="font-size: 15px;" face="Ubuntu Mono">LoadOutput = '1'</font></div><div><font style="font-size: 15px;" face="Ubuntu Mono">Sel_Proc = '11'</font></div>" style="rounded=0;whiteSpace=wrap;html=1;align=left;fontStyle=2;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;" parent="1" vertex="1"> + <mxGeometry x="375" y="53" width="240" height="130" as="geometry" /> + </mxCell> + <mxCell id="0n-EVayrTCi-GV-k-pFp-76" value="<font style="font-size: 15px;" face="Ubuntu Mono"><br>InitAddress = '0'<br>IncrAddress = '1'<br>InitSum = '0' <br>LoadSum = '1'</font><div><font style="font-size: 15px;" face="Ubuntu Mono">LoadOutput = '0'</font></div><div><font style="font-size: 15px;" face="Ubuntu Mono">Sel_Proc = '11'</font></div>" style="rounded=0;whiteSpace=wrap;html=1;align=left;fontStyle=2;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;" parent="1" vertex="1"> + <mxGeometry x="375" y="192" width="240" height="130" as="geometry" /> + </mxCell> + <mxCell id="0n-EVayrTCi-GV-k-pFp-77" value="<font style="font-size: 15px;" face="Ubuntu Mono"><br>InitAddress = '0'<br>IncrAddress = '0'<br>InitSum = '0' <br>LoadSum = '0'</font><div><font style="font-size: 15px;" face="Ubuntu Mono">LoadOutput = '1'</font></div><div><font style="font-size: 15px;" face="Ubuntu Mono">Sel_Proc = '00'</font></div>" style="rounded=0;whiteSpace=wrap;html=1;align=left;fontStyle=2;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;" parent="1" vertex="1"> + <mxGeometry x="375" y="332" width="240" height="130" as="geometry" /> + </mxCell> + <mxCell id="0n-EVayrTCi-GV-k-pFp-78" value="<font style="font-size: 15px;" face="Ubuntu Mono"><br>InitAddress = '0'<br>IncrAddress = '0'<br>InitSum = '0' <br>LoadSum = '0'</font><div><font style="font-size: 15px;" face="Ubuntu Mono">LoadOutput = '0'</font></div><div><font style="font-size: 15px;" face="Ubuntu Mono">Sel_Proc = '00'</font></div>" style="rounded=0;whiteSpace=wrap;html=1;align=left;fontStyle=2;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;" parent="1" vertex="1"> + <mxGeometry x="375" y="472" width="240" height="130" as="geometry" /> + </mxCell> + <mxCell id="0n-EVayrTCi-GV-k-pFp-80" value="<div><font style="font-size: 15px;" face="Ubuntu Mono">LoadShiftX = '0'</font></div><div><font style="font-size: 15px;" face="Ubuntu Mono">LoadShiftY = '0'</font></div><div><font style="font-size: 15px;" face="Ubuntu Mono">LoadShiftZ = '0'</font></div>" style="rounded=0;whiteSpace=wrap;html=1;align=left;fontStyle=2;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;" parent="1" vertex="1"> + <mxGeometry x="549" y="-812" width="166" height="130" as="geometry" /> + </mxCell> + <mxCell id="0n-EVayrTCi-GV-k-pFp-81" value="<div><font style="font-size: 15px;" face="Ubuntu Mono">LoadShiftX = '1'</font></div><div><font style="font-size: 15px;" face="Ubuntu Mono">LoadShiftY = '0'</font></div><div><font style="font-size: 15px;" face="Ubuntu Mono">LoadShiftZ = '0'</font></div>" style="rounded=0;whiteSpace=wrap;html=1;align=left;fontStyle=2;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;" parent="1" vertex="1"> + <mxGeometry x="549" y="-672" width="166" height="130" as="geometry" /> + </mxCell> + <mxCell id="0n-EVayrTCi-GV-k-pFp-82" value="<div><font style="font-size: 15px;" face="Ubuntu Mono">LoadShiftX = '0'</font></div><div><font style="font-size: 15px;" face="Ubuntu Mono">LoadShiftY = '0'</font></div><div><font style="font-size: 15px;" face="Ubuntu Mono">LoadShiftZ = '0'</font></div>" style="rounded=0;whiteSpace=wrap;html=1;align=left;fontStyle=2;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;" parent="1" vertex="1"> + <mxGeometry x="549" y="-530" width="166" height="130" as="geometry" /> + </mxCell> + <mxCell id="0n-EVayrTCi-GV-k-pFp-84" value="<div><font style="font-size: 15px;" face="Ubuntu Mono">LoadShiftX = '0'</font></div><div><font style="font-size: 15px;" face="Ubuntu Mono">LoadShiftY = '1'</font></div><div><font style="font-size: 15px;" face="Ubuntu Mono">LoadShiftZ = '0'</font></div>" style="rounded=0;whiteSpace=wrap;html=1;align=left;fontStyle=2;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;" parent="1" vertex="1"> + <mxGeometry x="549" y="-389" width="166" height="130" as="geometry" /> + </mxCell> + <mxCell id="0n-EVayrTCi-GV-k-pFp-85" value="<div><font style="font-size: 15px;" face="Ubuntu Mono">LoadShiftX = '0'</font></div><div><font style="font-size: 15px;" face="Ubuntu Mono">LoadShiftY = '0'</font></div><div><font style="font-size: 15px;" face="Ubuntu Mono">LoadShiftZ = '0'</font></div>" style="rounded=0;whiteSpace=wrap;html=1;align=left;fontStyle=2;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;" parent="1" vertex="1"> + <mxGeometry x="580" y="-247" width="166" height="130" as="geometry" /> + </mxCell> + <mxCell id="0n-EVayrTCi-GV-k-pFp-87" value="<div><font style="font-size: 15px;" face="Ubuntu Mono">LoadShiftX = '0'</font></div><div><font style="font-size: 15px;" face="Ubuntu Mono">LoadShiftY = '0'</font></div><div><font style="font-size: 15px;" face="Ubuntu Mono">LoadShiftZ = '0'</font></div>" style="rounded=0;whiteSpace=wrap;html=1;align=left;fontStyle=2;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;" parent="1" vertex="1"> + <mxGeometry x="549" y="-91" width="166" height="130" as="geometry" /> + </mxCell> + <mxCell id="0n-EVayrTCi-GV-k-pFp-88" value="<div><font style="font-size: 15px;" face="Ubuntu Mono">LoadShiftX = '0'</font></div><div><font style="font-size: 15px;" face="Ubuntu Mono">LoadShiftY = '0'</font></div><div><font style="font-size: 15px;" face="Ubuntu Mono">LoadShiftZ = '1'</font></div>" style="rounded=0;whiteSpace=wrap;html=1;align=left;fontStyle=2;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;" parent="1" vertex="1"> + <mxGeometry x="550" y="53" width="166" height="130" as="geometry" /> + </mxCell> + <mxCell id="0n-EVayrTCi-GV-k-pFp-89" value="<div><font style="font-size: 15px;" face="Ubuntu Mono">LoadShiftX = '0'</font></div><div><font style="font-size: 15px;" face="Ubuntu Mono">LoadShiftY = '0'</font></div><div><font style="font-size: 15px;" face="Ubuntu Mono">LoadShiftZ = '0'</font></div>" style="rounded=0;whiteSpace=wrap;html=1;align=left;fontStyle=2;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;" parent="1" vertex="1"> + <mxGeometry x="550" y="192" width="166" height="130" as="geometry" /> + </mxCell> + <mxCell id="0n-EVayrTCi-GV-k-pFp-90" value="<div><font style="font-size: 15px;" face="Ubuntu Mono">LoadShiftX = '0'</font></div><div><font style="font-size: 15px;" face="Ubuntu Mono">LoadShiftY = '0'</font></div><div><font style="font-size: 15px;" face="Ubuntu Mono">LoadShiftZ = '0'</font></div>" style="rounded=0;whiteSpace=wrap;html=1;align=left;fontStyle=2;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;" parent="1" vertex="1"> + <mxGeometry x="550" y="332" width="166" height="130" as="geometry" /> + </mxCell> + <mxCell id="0n-EVayrTCi-GV-k-pFp-91" value="<div><font style="font-size: 15px;" face="Ubuntu Mono">LoadShiftX = '0'</font></div><div><font style="font-size: 15px;" face="Ubuntu Mono">LoadShiftY = '0'</font></div><div><font style="font-size: 15px;" face="Ubuntu Mono">LoadShiftZ = '0'</font></div>" style="rounded=0;whiteSpace=wrap;html=1;align=left;fontStyle=2;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;" parent="1" vertex="1"> + <mxGeometry x="550" y="472" width="166" height="130" as="geometry" /> + </mxCell> + </root> + </mxGraphModel> + </diagram> +</mxfile> diff --git a/docs/img/FSM.png b/docs/img/FSM.png index 7f6db881fff5cdfb9351c0348dfec49ff082516d..4985c36353b2cb16f093ab3114e7202a811e2aab 100644 Binary files a/docs/img/FSM.png and b/docs/img/FSM.png differ diff --git a/docs/img/OperativeUnit.drawio b/docs/img/OperativeUnit.drawio index 9bb0e4be6bf247cea4d08b3cc71698bff753d164..49c9d0cf210100478c4f80a7cfbe8e0c41212eda 100644 --- a/docs/img/OperativeUnit.drawio +++ b/docs/img/OperativeUnit.drawio @@ -1,423 +1,926 @@ -<mxfile host="Electron" modified="2023-05-02T15:25:12.389Z" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/21.2.1 Chrome/112.0.5615.87 Electron/24.1.2 Safari/537.36" etag="-5AHYXFrDsyYUGHEENvj" version="21.2.1" type="device"> - <diagram name="Page-1" id="HnFJvu7xD7cCTyxCgidn"> - <mxGraphModel dx="1430" dy="830" 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 (iPad; CPU OS 18_3_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/134.0.6998.99 Mobile/15E148 Safari/604.1" version="26.1.1"> + <diagram name="Page-1" id="tTxmOw-MP2QhS8_S80Lf"> + <mxGraphModel dx="3338" dy="2913" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0"> <root> <mxCell id="0" /> <mxCell id="1" parent="0" /> - <mxCell id="uwrRxOYGmB2LabIKb8In-1" value="<font face="Ubuntu Mono">Address<br style="font-size: 17px;">Generator</font>" style="rounded=0;whiteSpace=wrap;html=1;fontSize=17;fillColor=#dae8fc;strokeColor=#6c8ebf;strokeWidth=2;" vertex="1" parent="1"> - <mxGeometry x="340" y="40" width="120" height="80" as="geometry" /> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-1" value="<font face="Ubuntu Mono">Address<br style="font-size: 17px;">Generator</font>" style="rounded=0;whiteSpace=wrap;html=1;fontSize=17;fillColor=#dae8fc;strokeColor=#6c8ebf;strokeWidth=2;" parent="1" vertex="1"> + <mxGeometry x="-192.5" y="-40" width="120" height="80" as="geometry" /> </mxCell> - <mxCell id="uwrRxOYGmB2LabIKb8In-2" value="" style="triangle;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1"> - <mxGeometry x="340" y="90" width="10" height="20" as="geometry" /> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-2" value="" style="triangle;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1"> + <mxGeometry x="-192.5" y="10" width="10" height="20" as="geometry" /> </mxCell> - <mxCell id="uwrRxOYGmB2LabIKb8In-3" value="" style="endArrow=block;html=1;rounded=0;entryX=0;entryY=0.25;entryDx=0;entryDy=0;endFill=1;" edge="1" parent="1" target="uwrRxOYGmB2LabIKb8In-1"> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-3" value="" style="endArrow=block;html=1;rounded=0;entryX=0;entryY=0.25;entryDx=0;entryDy=0;endFill=1;" parent="1" target="NSJiHg1tgZuGjZFiGY6h-1" edge="1"> <mxGeometry width="50" height="50" relative="1" as="geometry"> - <mxPoint x="300" y="60" as="sourcePoint" /> - <mxPoint x="550" y="160" as="targetPoint" /> + <mxPoint x="-232.5" y="-20" as="sourcePoint" /> + <mxPoint x="17.5" y="80" as="targetPoint" /> <Array as="points" /> </mxGeometry> </mxCell> - <mxCell id="uwrRxOYGmB2LabIKb8In-4" value="I_initAddress" style="edgeLabel;html=1;align=right;verticalAlign=middle;resizable=0;points=[];fontFamily=Ubuntu Mono;fontSize=14;fontStyle=0" vertex="1" connectable="0" parent="uwrRxOYGmB2LabIKb8In-3"> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-4" value="I_initAddress" style="edgeLabel;html=1;align=right;verticalAlign=middle;resizable=0;points=[];fontFamily=Ubuntu Mono;fontSize=14;fontStyle=0" parent="NSJiHg1tgZuGjZFiGY6h-3" vertex="1" connectable="0"> <mxGeometry x="0.45" y="1" relative="1" as="geometry"> <mxPoint x="-29" as="offset" /> </mxGeometry> </mxCell> - <mxCell id="uwrRxOYGmB2LabIKb8In-5" value="" style="endArrow=block;html=1;rounded=0;entryX=0;entryY=0.25;entryDx=0;entryDy=0;endFill=1;" edge="1" parent="1"> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-5" value="" style="endArrow=block;html=1;rounded=0;entryX=0;entryY=0.25;entryDx=0;entryDy=0;endFill=1;" parent="1" edge="1"> <mxGeometry width="50" height="50" relative="1" as="geometry"> - <mxPoint x="300" y="79.83" as="sourcePoint" /> - <mxPoint x="340" y="79.83" as="targetPoint" /> + <mxPoint x="-232.5" y="-0.1700000000000017" as="sourcePoint" /> + <mxPoint x="-192.5" y="-0.1700000000000017" as="targetPoint" /> <Array as="points" /> </mxGeometry> </mxCell> - <mxCell id="uwrRxOYGmB2LabIKb8In-6" value="I_incrAddress" style="edgeLabel;html=1;align=right;verticalAlign=middle;resizable=0;points=[];fontFamily=Ubuntu Mono;fontSize=14;fontStyle=0" vertex="1" connectable="0" parent="uwrRxOYGmB2LabIKb8In-5"> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-6" value="I_incrAddress" style="edgeLabel;html=1;align=right;verticalAlign=middle;resizable=0;points=[];fontFamily=Ubuntu Mono;fontSize=14;fontStyle=0" parent="NSJiHg1tgZuGjZFiGY6h-5" vertex="1" connectable="0"> <mxGeometry x="0.45" y="1" relative="1" as="geometry"> - <mxPoint x="-29" as="offset" /> + <mxPoint x="-29" y="1" as="offset" /> </mxGeometry> </mxCell> - <mxCell id="uwrRxOYGmB2LabIKb8In-7" value="" style="endArrow=block;html=1;rounded=0;entryX=0;entryY=0.25;entryDx=0;entryDy=0;endFill=1;" edge="1" parent="1"> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-7" value="" style="endArrow=block;html=1;rounded=0;entryX=0;entryY=0.25;entryDx=0;entryDy=0;endFill=1;" parent="1" edge="1"> <mxGeometry width="50" height="50" relative="1" as="geometry"> - <mxPoint x="460" y="60" as="sourcePoint" /> - <mxPoint x="500" y="60" as="targetPoint" /> + <mxPoint x="-72.5" y="-10" as="sourcePoint" /> + <mxPoint x="-32.5" y="-10" as="targetPoint" /> <Array as="points" /> </mxGeometry> </mxCell> - <mxCell id="uwrRxOYGmB2LabIKb8In-8" value="O_processingDone" style="edgeLabel;html=1;align=left;verticalAlign=middle;resizable=0;points=[];fontFamily=Ubuntu Mono;fontSize=14;fontStyle=0" vertex="1" connectable="0" parent="uwrRxOYGmB2LabIKb8In-7"> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-8" value="O_processingDone" style="edgeLabel;html=1;align=left;verticalAlign=middle;resizable=0;points=[];fontFamily=Ubuntu Mono;fontSize=14;fontStyle=0" parent="NSJiHg1tgZuGjZFiGY6h-7" vertex="1" connectable="0"> <mxGeometry x="0.45" y="1" relative="1" as="geometry"> <mxPoint x="11" as="offset" /> </mxGeometry> </mxCell> - <mxCell id="uwrRxOYGmB2LabIKb8In-9" value="Samples" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;strokeWidth=2;fontFamily=Ubuntu Mono;fontSize=17;" vertex="1" parent="1"> - <mxGeometry x="160" y="200" width="120" height="280" as="geometry" /> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-9" value="<div><font face="Courier New"><i>x_k</i></font></div><div><font face="Courier New"><i><br></i></font></div><div><font face="Courier New"><i>x_k-1</i></font></div><div><font face="Courier New"><i><br></i></font></div><div><font face="Courier New"><i><br></i></font></div><div><font face="Courier New"><i><br></i></font></div><div><font face="Courier New"><i><br></i></font></div><div><font face="Courier New"><i><br></i></font></div><div><font face="Courier New"><i>x_k-94</i></font></div>" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;strokeWidth=2;fontFamily=Ubuntu Mono;fontSize=17;" parent="1" vertex="1"> + <mxGeometry x="-556" y="120" width="120" height="210" as="geometry" /> </mxCell> - <mxCell id="uwrRxOYGmB2LabIKb8In-11" value="" style="endArrow=none;html=1;rounded=0;" edge="1" parent="1"> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-10" value="" style="endArrow=none;html=1;rounded=0;" parent="1" edge="1"> <mxGeometry width="50" height="50" relative="1" as="geometry"> - <mxPoint x="160" y="280" as="sourcePoint" /> - <mxPoint x="280" y="280" as="targetPoint" /> + <mxPoint x="-556" y="200" as="sourcePoint" /> + <mxPoint x="-436.00000000000006" y="200" as="targetPoint" /> + <Array as="points"> + <mxPoint x="-500" y="200" /> + </Array> </mxGeometry> </mxCell> - <mxCell id="uwrRxOYGmB2LabIKb8In-12" value="" style="endArrow=none;html=1;rounded=0;" edge="1" parent="1"> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-11" value="" style="endArrow=none;html=1;rounded=0;" parent="1" edge="1"> <mxGeometry width="50" height="50" relative="1" as="geometry"> - <mxPoint x="160" y="240" as="sourcePoint" /> - <mxPoint x="280" y="240" as="targetPoint" /> + <mxPoint x="-556" y="160" as="sourcePoint" /> + <mxPoint x="-436.00000000000006" y="160" as="targetPoint" /> </mxGeometry> </mxCell> - <mxCell id="uwrRxOYGmB2LabIKb8In-13" value="" style="endArrow=none;html=1;rounded=0;" edge="1" parent="1"> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-13" value="" style="shape=trapezoid;perimeter=trapezoidPerimeter;whiteSpace=wrap;html=1;fixedSize=1;rotation=90;strokeWidth=2;" parent="1" vertex="1"> + <mxGeometry x="-486" y="215" width="210" height="20" as="geometry" /> + </mxCell> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-18" value="" style="endArrow=block;html=1;rounded=0;endFill=1;" parent="1" edge="1"> <mxGeometry width="50" height="50" relative="1" as="geometry"> - <mxPoint x="160" y="440" as="sourcePoint" /> - <mxPoint x="280" y="440" as="targetPoint" /> + <mxPoint x="-496.04999999999995" y="286" as="sourcePoint" /> + <mxPoint x="-496.2600000000001" y="306" as="targetPoint" /> + <Array as="points" /> </mxGeometry> </mxCell> - <mxCell id="uwrRxOYGmB2LabIKb8In-14" value="" style="shape=trapezoid;perimeter=trapezoidPerimeter;whiteSpace=wrap;html=1;fixedSize=1;rotation=90;strokeWidth=2;" vertex="1" parent="1"> - <mxGeometry x="190" y="330" width="280" height="20" as="geometry" /> - </mxCell> - <mxCell id="uwrRxOYGmB2LabIKb8In-15" value="" style="endArrow=block;html=1;rounded=0;entryX=0;entryY=0.25;entryDx=0;entryDy=0;endFill=1;strokeWidth=2;" edge="1" parent="1"> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-19" value="" style="endArrow=block;html=1;rounded=0;endFill=1;" parent="1" edge="1"> <mxGeometry width="50" height="50" relative="1" as="geometry"> - <mxPoint x="280" y="220" as="sourcePoint" /> - <mxPoint x="320" y="220" as="targetPoint" /> + <mxPoint x="-496.23" y="153" as="sourcePoint" /> + <mxPoint x="-495.7600000000001" y="173" as="targetPoint" /> <Array as="points" /> </mxGeometry> </mxCell> - <mxCell id="uwrRxOYGmB2LabIKb8In-17" value="" style="endArrow=block;html=1;rounded=0;entryX=0;entryY=0.25;entryDx=0;entryDy=0;endFill=1;strokeWidth=2;" edge="1" parent="1"> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-20" value="" style="endArrow=block;html=1;rounded=0;endFill=1;" parent="1" edge="1"> <mxGeometry width="50" height="50" relative="1" as="geometry"> - <mxPoint x="280" y="260" as="sourcePoint" /> - <mxPoint x="320" y="260" as="targetPoint" /> - <Array as="points" /> + <mxPoint x="-496.03999999999996" y="193" as="sourcePoint" /> + <mxPoint x="-496.25" y="213" as="targetPoint" /> + <Array as="points"> + <mxPoint x="-496" y="203" /> + </Array> </mxGeometry> </mxCell> - <mxCell id="uwrRxOYGmB2LabIKb8In-18" value="" style="endArrow=block;html=1;rounded=0;entryX=0;entryY=0.25;entryDx=0;entryDy=0;endFill=1;strokeWidth=2;" edge="1" parent="1"> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-34" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;fillColor=#d5e8d4;strokeColor=#82b366;" parent="1" vertex="1"> + <mxGeometry x="-173" y="360" width="80" height="80" as="geometry" /> + </mxCell> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-36" value="" style="endArrow=none;html=1;rounded=0;entryX=1;entryY=0;entryDx=0;entryDy=0;exitX=0;exitY=1;exitDx=0;exitDy=0;fillColor=#d5e8d4;strokeColor=#82b366;strokeWidth=2;" parent="1" source="NSJiHg1tgZuGjZFiGY6h-34" target="NSJiHg1tgZuGjZFiGY6h-34" edge="1"> <mxGeometry width="50" height="50" relative="1" as="geometry"> - <mxPoint x="280" y="460" as="sourcePoint" /> - <mxPoint x="320" y="460" as="targetPoint" /> - <Array as="points" /> + <mxPoint x="-113" y="450" as="sourcePoint" /> + <mxPoint x="-63" y="400" as="targetPoint" /> </mxGeometry> </mxCell> - <mxCell id="uwrRxOYGmB2LabIKb8In-21" value="" style="endArrow=none;dashed=1;html=1;rounded=0;" edge="1" parent="1"> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-37" value="" style="endArrow=none;html=1;rounded=0;entryX=0;entryY=0;entryDx=0;entryDy=0;exitX=1;exitY=1;exitDx=0;exitDy=0;fillColor=#d5e8d4;strokeColor=#82b366;strokeWidth=2;" parent="1" source="NSJiHg1tgZuGjZFiGY6h-34" target="NSJiHg1tgZuGjZFiGY6h-34" edge="1"> <mxGeometry width="50" height="50" relative="1" as="geometry"> - <mxPoint x="300" y="440" as="sourcePoint" /> - <mxPoint x="300" y="280" as="targetPoint" /> + <mxPoint x="-151" y="438" as="sourcePoint" /> + <mxPoint x="-95" y="382" as="targetPoint" /> + <Array as="points"> + <mxPoint x="-133" y="400" /> + </Array> </mxGeometry> </mxCell> - <mxCell id="uwrRxOYGmB2LabIKb8In-25" value="" style="endArrow=block;html=1;rounded=0;endFill=1;" edge="1" parent="1"> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-38" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;fillColor=#d5e8d4;strokeColor=#82b366;" parent="1" vertex="1"> + <mxGeometry x="-177" y="870" width="80" height="80" as="geometry" /> + </mxCell> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-39" value="" style="endArrow=block;html=1;rounded=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;endFill=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;strokeWidth=2;" parent="1" source="NSJiHg1tgZuGjZFiGY6h-34" target="NSJiHg1tgZuGjZFiGY6h-38" edge="1"> <mxGeometry width="50" height="50" relative="1" as="geometry"> - <mxPoint x="219.89" y="430" as="sourcePoint" /> - <mxPoint x="219.89" y="460" as="targetPoint" /> + <mxPoint x="-137" y="820" as="sourcePoint" /> + <mxPoint x="-177" y="930" as="targetPoint" /> <Array as="points" /> </mxGeometry> </mxCell> - <mxCell id="uwrRxOYGmB2LabIKb8In-28" value="" style="endArrow=block;html=1;rounded=0;endFill=1;" edge="1" parent="1"> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-40" value="" style="endArrow=none;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;fillColor=#d5e8d4;strokeColor=#82b366;strokeWidth=2;" parent="1" source="NSJiHg1tgZuGjZFiGY6h-38" target="NSJiHg1tgZuGjZFiGY6h-38" edge="1"> <mxGeometry width="50" height="50" relative="1" as="geometry"> - <mxPoint x="219.94" y="230" as="sourcePoint" /> - <mxPoint x="219.94" y="260" as="targetPoint" /> - <Array as="points" /> + <mxPoint x="-99" y="788" as="sourcePoint" /> + <mxPoint x="-155" y="732" as="targetPoint" /> </mxGeometry> </mxCell> - <mxCell id="uwrRxOYGmB2LabIKb8In-29" value="" style="endArrow=block;html=1;rounded=0;endFill=1;" edge="1" parent="1"> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-41" value="" style="endArrow=none;html=1;rounded=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;fillColor=#d5e8d4;strokeColor=#82b366;strokeWidth=2;" parent="1" source="NSJiHg1tgZuGjZFiGY6h-38" target="NSJiHg1tgZuGjZFiGY6h-38" edge="1"> <mxGeometry width="50" height="50" relative="1" as="geometry"> - <mxPoint x="219.94" y="270" as="sourcePoint" /> - <mxPoint x="219.94" y="300" as="targetPoint" /> - <Array as="points" /> + <mxPoint x="-87" y="920" as="sourcePoint" /> + <mxPoint x="-167" y="920" as="targetPoint" /> </mxGeometry> </mxCell> - <mxCell id="uwrRxOYGmB2LabIKb8In-30" value="Coefficients" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#ffe6cc;strokeColor=#d79b00;strokeWidth=2;fontFamily=Ubuntu Mono;fontSize=17;" vertex="1" parent="1"> - <mxGeometry x="520" y="200" width="120" height="280" as="geometry" /> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-42" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;strokeWidth=2;" parent="1" vertex="1"> + <mxGeometry x="-377" y="880" width="120" height="60" as="geometry" /> + </mxCell> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-43" value="" style="triangle;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;" parent="1" vertex="1"> + <mxGeometry x="-377" y="910" width="10" height="20" as="geometry" /> </mxCell> - <mxCell id="uwrRxOYGmB2LabIKb8In-31" value="" style="endArrow=none;html=1;rounded=0;" edge="1" parent="1"> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-44" value="" style="triangle;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;" parent="1" vertex="1"> + <mxGeometry x="-556" y="303" width="10" height="20" as="geometry" /> + </mxCell> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-45" value="" style="endArrow=block;html=1;rounded=0;endFill=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;strokeWidth=2;" parent="1" source="NSJiHg1tgZuGjZFiGY6h-42" target="NSJiHg1tgZuGjZFiGY6h-38" edge="1"> <mxGeometry width="50" height="50" relative="1" as="geometry"> - <mxPoint x="520" y="280" as="sourcePoint" /> - <mxPoint x="640" y="280" as="targetPoint" /> + <mxPoint x="-127" y="800" as="sourcePoint" /> + <mxPoint x="-197" y="870" as="targetPoint" /> + <Array as="points"> + <mxPoint x="-317" y="840" /> + <mxPoint x="-207" y="840" /> + </Array> </mxGeometry> </mxCell> - <mxCell id="uwrRxOYGmB2LabIKb8In-32" value="" style="endArrow=none;html=1;rounded=0;" edge="1" parent="1"> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-46" value="" style="endArrow=block;html=1;rounded=0;endFill=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;strokeWidth=2;" parent="1" source="NSJiHg1tgZuGjZFiGY6h-38" target="NSJiHg1tgZuGjZFiGY6h-42" edge="1"> <mxGeometry width="50" height="50" relative="1" as="geometry"> - <mxPoint x="520" y="240" as="sourcePoint" /> - <mxPoint x="640" y="240" as="targetPoint" /> + <mxPoint x="-307" y="890" as="sourcePoint" /> + <mxPoint x="-155" y="892" as="targetPoint" /> + <Array as="points"> + <mxPoint x="-137" y="990" /> + <mxPoint x="-267" y="990" /> + </Array> </mxGeometry> </mxCell> - <mxCell id="uwrRxOYGmB2LabIKb8In-33" value="" style="endArrow=none;html=1;rounded=0;" edge="1" parent="1"> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-47" value="" style="endArrow=block;html=1;rounded=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;endFill=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;strokeWidth=2;" parent="1" target="NSJiHg1tgZuGjZFiGY6h-48" edge="1"> <mxGeometry width="50" height="50" relative="1" as="geometry"> - <mxPoint x="520" y="440" as="sourcePoint" /> - <mxPoint x="640" y="440" as="targetPoint" /> + <mxPoint x="-137.02999999999997" y="950" as="sourcePoint" /> + <mxPoint x="-137.02999999999997" y="1030" as="targetPoint" /> + <Array as="points"> + <mxPoint x="-137" y="1010" /> + <mxPoint x="-117" y="1030" /> + </Array> </mxGeometry> </mxCell> - <mxCell id="uwrRxOYGmB2LabIKb8In-34" value="" style="shape=trapezoid;perimeter=trapezoidPerimeter;whiteSpace=wrap;html=1;fixedSize=1;rotation=-90;strokeWidth=2;" vertex="1" parent="1"> - <mxGeometry x="330" y="330" width="280" height="20" as="geometry" /> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-48" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;rotation=90;strokeWidth=2;" parent="1" vertex="1"> + <mxGeometry x="-57" y="1000" width="120" height="60" as="geometry" /> </mxCell> - <mxCell id="uwrRxOYGmB2LabIKb8In-35" value="" style="endArrow=block;html=1;rounded=0;endFill=1;strokeWidth=2;" edge="1" parent="1"> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-49" value="" style="triangle;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;" parent="1" vertex="1"> + <mxGeometry x="-27" y="1060" width="10" height="20" as="geometry" /> + </mxCell> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-50" value="" style="endArrow=block;html=1;rounded=0;endFill=1;exitX=0.5;exitY=0.007;exitDx=0;exitDy=0;exitPerimeter=0;strokeWidth=2;" parent="1" source="NSJiHg1tgZuGjZFiGY6h-48" edge="1"> <mxGeometry width="50" height="50" relative="1" as="geometry"> - <mxPoint x="520" y="220" as="sourcePoint" /> - <mxPoint x="480" y="220" as="targetPoint" /> + <mxPoint x="33" y="1029.98" as="sourcePoint" /> + <mxPoint x="140" y="1030" as="targetPoint" /> <Array as="points" /> </mxGeometry> </mxCell> - <mxCell id="uwrRxOYGmB2LabIKb8In-38" value="" style="endArrow=none;dashed=1;html=1;rounded=0;" edge="1" parent="1"> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-52" value="" style="endArrow=block;html=1;rounded=0;endFill=1;entryX=0.75;entryY=0;entryDx=0;entryDy=0;strokeWidth=2;" parent="1" target="NSJiHg1tgZuGjZFiGY6h-9" edge="1"> <mxGeometry width="50" height="50" relative="1" as="geometry"> - <mxPoint x="500" y="440" as="sourcePoint" /> - <mxPoint x="500" y="280" as="targetPoint" /> + <mxPoint x="-566" y="40" as="sourcePoint" /> + <mxPoint x="-466" y="90" as="targetPoint" /> + <Array as="points"> + <mxPoint x="-496" y="40" /> + <mxPoint x="-486" y="40" /> + <mxPoint x="-466" y="60" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-53" value="I_inputSample" style="edgeLabel;html=1;align=right;verticalAlign=middle;resizable=0;points=[];fontFamily=Ubuntu Mono;fontSize=14;" parent="NSJiHg1tgZuGjZFiGY6h-52" vertex="1" connectable="0"> + <mxGeometry x="-0.9128" y="-1" relative="1" as="geometry"> + <mxPoint x="-16" y="-1" as="offset" /> </mxGeometry> </mxCell> - <mxCell id="uwrRxOYGmB2LabIKb8In-42" value="" style="endArrow=block;html=1;rounded=0;endFill=1;strokeWidth=2;" edge="1" parent="1"> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-54" value="" style="endArrow=block;html=1;rounded=0;endFill=1;entryX=0.25;entryY=0;entryDx=0;entryDy=0;" parent="1" target="NSJiHg1tgZuGjZFiGY6h-9" edge="1"> <mxGeometry width="50" height="50" relative="1" as="geometry"> - <mxPoint x="520" y="260" as="sourcePoint" /> - <mxPoint x="480" y="260" as="targetPoint" /> - <Array as="points" /> + <mxPoint x="-566" y="70" as="sourcePoint" /> + <mxPoint x="-526" y="110" as="targetPoint" /> + <Array as="points"> + <mxPoint x="-536" y="70" /> + <mxPoint x="-526" y="80" /> + </Array> </mxGeometry> </mxCell> - <mxCell id="uwrRxOYGmB2LabIKb8In-43" value="" style="endArrow=block;html=1;rounded=0;endFill=1;strokeWidth=2;" edge="1" parent="1"> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-55" value="I_loadShift_X" style="edgeLabel;html=1;align=right;verticalAlign=middle;resizable=0;points=[];fontSize=14;fontFamily=Ubuntu Mono;" parent="NSJiHg1tgZuGjZFiGY6h-54" vertex="1" connectable="0"> + <mxGeometry x="-0.7861" relative="1" as="geometry"> + <mxPoint x="-19" as="offset" /> + </mxGeometry> + </mxCell> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-56" value="" style="endArrow=block;html=1;rounded=0;endFill=1;entryX=0.25;entryY=0;entryDx=0;entryDy=0;" parent="1" edge="1"> <mxGeometry width="50" height="50" relative="1" as="geometry"> - <mxPoint x="520" y="460" as="sourcePoint" /> - <mxPoint x="480" y="460" as="targetPoint" /> - <Array as="points" /> + <mxPoint x="-407" y="850" as="sourcePoint" /> + <mxPoint x="-367" y="880" as="targetPoint" /> + <Array as="points"> + <mxPoint x="-377" y="850" /> + <mxPoint x="-367" y="860" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-57" value="I_loadSum" style="edgeLabel;html=1;align=right;verticalAlign=middle;resizable=0;points=[];fontSize=14;fontFamily=Ubuntu Mono;" parent="NSJiHg1tgZuGjZFiGY6h-56" vertex="1" connectable="0"> + <mxGeometry x="-0.7298" y="1" relative="1" as="geometry"> + <mxPoint x="-9" y="1" as="offset" /> </mxGeometry> </mxCell> - <mxCell id="uwrRxOYGmB2LabIKb8In-45" value="" style="endArrow=block;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;endFill=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" edge="1" parent="1" source="uwrRxOYGmB2LabIKb8In-1" target="uwrRxOYGmB2LabIKb8In-14"> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-58" value="" style="endArrow=block;html=1;rounded=0;endFill=1;entryX=0.25;entryY=0;entryDx=0;entryDy=0;" parent="1" target="NSJiHg1tgZuGjZFiGY6h-42" edge="1"> <mxGeometry width="50" height="50" relative="1" as="geometry"> - <mxPoint x="400" y="160" as="sourcePoint" /> - <mxPoint x="440" y="160" as="targetPoint" /> + <mxPoint x="-407" y="830" as="sourcePoint" /> + <mxPoint x="-367" y="861" as="targetPoint" /> <Array as="points"> - <mxPoint x="400" y="160" /> + <mxPoint x="-367" y="830" /> + <mxPoint x="-347" y="850" /> </Array> </mxGeometry> </mxCell> - <mxCell id="uwrRxOYGmB2LabIKb8In-46" value="SR_ReadAddress" style="edgeLabel;html=1;align=left;verticalAlign=middle;resizable=0;points=[];fontFamily=Ubuntu Mono;fontSize=14;fontStyle=0" vertex="1" connectable="0" parent="uwrRxOYGmB2LabIKb8In-45"> - <mxGeometry x="0.45" y="1" relative="1" as="geometry"> - <mxPoint x="41" y="-51" as="offset" /> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-59" value="I_initSum" style="edgeLabel;html=1;align=right;verticalAlign=middle;resizable=0;points=[];fontSize=14;fontFamily=Ubuntu Mono;" parent="NSJiHg1tgZuGjZFiGY6h-58" vertex="1" connectable="0"> + <mxGeometry x="-0.7298" y="1" relative="1" as="geometry"> + <mxPoint x="-13" y="1" as="offset" /> + </mxGeometry> + </mxCell> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-60" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="-407" y="1050" as="sourcePoint" /> + <mxPoint x="-27" y="1050" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-61" value="I_loadOutput" style="edgeLabel;html=1;align=right;verticalAlign=middle;resizable=0;points=[];fontSize=14;fontFamily=Ubuntu Mono;" parent="NSJiHg1tgZuGjZFiGY6h-60" vertex="1" connectable="0"> + <mxGeometry x="-0.9221" y="-1" relative="1" as="geometry"> + <mxPoint x="-15" as="offset" /> + </mxGeometry> + </mxCell> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-62" value="" style="endArrow=none;html=1;rounded=0;" parent="1" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="53" y="1040" as="sourcePoint" /> + <mxPoint x="73" y="1020" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-63" value="11" style="edgeLabel;html=1;align=left;verticalAlign=bottom;resizable=0;points=[];labelPosition=right;verticalLabelPosition=top;" parent="NSJiHg1tgZuGjZFiGY6h-62" vertex="1" connectable="0"> + <mxGeometry x="0.5519" y="1" relative="1" as="geometry"> + <mxPoint x="5" y="-4" as="offset" /> + </mxGeometry> + </mxCell> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-64" value="" style="endArrow=none;html=1;rounded=0;" parent="1" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="-97" y="1040" as="sourcePoint" /> + <mxPoint x="-77" y="1020" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-65" value="30" style="edgeLabel;html=1;align=left;verticalAlign=bottom;resizable=0;points=[];labelPosition=right;verticalLabelPosition=top;" parent="NSJiHg1tgZuGjZFiGY6h-64" vertex="1" connectable="0"> + <mxGeometry x="0.5519" y="1" relative="1" as="geometry"> + <mxPoint x="5" y="-4" as="offset" /> + </mxGeometry> + </mxCell> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-66" value="" style="endArrow=none;html=1;rounded=0;" parent="1" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="-147" y="840" as="sourcePoint" /> + <mxPoint x="-127" y="820" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-67" value="(13,10)" style="edgeLabel;html=1;align=left;verticalAlign=bottom;resizable=0;points=[];labelPosition=right;verticalLabelPosition=top;" parent="NSJiHg1tgZuGjZFiGY6h-66" vertex="1" connectable="0"> + <mxGeometry x="0.5519" y="1" relative="1" as="geometry"> + <mxPoint x="5" y="-4" as="offset" /> </mxGeometry> </mxCell> - <mxCell id="uwrRxOYGmB2LabIKb8In-47" value="" style="endArrow=block;html=1;rounded=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;endFill=1;" edge="1" parent="1" target="uwrRxOYGmB2LabIKb8In-34"> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-68" value="" style="endArrow=none;html=1;rounded=0;" parent="1" edge="1"> <mxGeometry width="50" height="50" relative="1" as="geometry"> - <mxPoint x="400" y="120" as="sourcePoint" /> - <mxPoint x="340" y="220" as="targetPoint" /> + <mxPoint x="-536" y="50" as="sourcePoint" /> + <mxPoint x="-516" y="30" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-69" value="11" style="edgeLabel;html=1;align=left;verticalAlign=bottom;resizable=0;points=[];labelPosition=right;verticalLabelPosition=top;" parent="NSJiHg1tgZuGjZFiGY6h-68" vertex="1" connectable="0"> + <mxGeometry x="0.5519" y="1" relative="1" as="geometry"> + <mxPoint x="5" y="-4" as="offset" /> + </mxGeometry> + </mxCell> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-78" value="" style="endArrow=none;html=1;rounded=0;" parent="1" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="-556" y="294" as="sourcePoint" /> + <mxPoint x="-436.00000000000006" y="294" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-80" value="<div><font face="Courier New"><i>Y_k</i></font></div><div><font face="Courier New"><i><br></i></font></div><div><font face="Courier New"><i>Y_k-1</i></font></div><div><font face="Courier New"><i><br></i></font></div><div><font face="Courier New"><i>Y_k-2</i></font></div>" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;strokeWidth=2;fontFamily=Ubuntu Mono;fontSize=17;" parent="1" vertex="1"> + <mxGeometry x="-556" y="345" width="120" height="110" as="geometry" /> + </mxCell> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-81" value="" style="endArrow=none;html=1;rounded=0;" parent="1" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="-556" y="421" as="sourcePoint" /> + <mxPoint x="-436.00000000000006" y="421" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-82" value="" style="endArrow=none;html=1;rounded=0;" parent="1" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="-556" y="378" as="sourcePoint" /> + <mxPoint x="-436.00000000000006" y="378" as="targetPoint" /> <Array as="points"> - <mxPoint x="400" y="160" /> + <mxPoint x="-506" y="378" /> </Array> </mxGeometry> </mxCell> - <mxCell id="uwrRxOYGmB2LabIKb8In-49" value="" style="endArrow=block;html=1;rounded=0;entryX=0;entryY=0;entryDx=0;entryDy=0;endFill=1;strokeWidth=2;" edge="1" parent="1" target="uwrRxOYGmB2LabIKb8In-50"> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-89" value="" style="endArrow=block;html=1;rounded=0;endFill=1;" parent="1" edge="1"> <mxGeometry width="50" height="50" relative="1" as="geometry"> - <mxPoint x="340" y="339.71" as="sourcePoint" /> - <mxPoint x="380" y="339.71" as="targetPoint" /> + <mxPoint x="-496.03999999999996" y="415" as="sourcePoint" /> + <mxPoint x="-496.25" y="435" as="targetPoint" /> <Array as="points"> - <mxPoint x="350" y="340" /> - <mxPoint x="350" y="490" /> + <mxPoint x="-496" y="430" /> </Array> </mxGeometry> </mxCell> - <mxCell id="uwrRxOYGmB2LabIKb8In-50" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;fillColor=#d5e8d4;strokeColor=#82b366;" vertex="1" parent="1"> - <mxGeometry x="360" y="500" width="80" height="80" as="geometry" /> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-90" value="" style="triangle;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;" parent="1" vertex="1"> + <mxGeometry x="-556" y="430" width="10" height="20" as="geometry" /> + </mxCell> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-120" value="" style="shape=trapezoid;perimeter=trapezoidPerimeter;whiteSpace=wrap;html=1;fixedSize=1;rotation=90;strokeWidth=2;" parent="1" vertex="1"> + <mxGeometry x="-437.25" y="390.75" width="112.5" height="20" as="geometry" /> + </mxCell> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-122" value="<div><i><font face="Courier New">Z_k</font></i></div><div><i><font face="Courier New"><br></font></i></div><div><i><font face="Courier New"><br></font></i></div><div><i><font face="Courier New"><br></font></i></div><div><i><font face="Courier New"><br></font></i></div><div><i><font face="Courier New"><br></font></i></div><div><i><font face="Courier New"><br></font></i></div><div><i><font face="Courier New"><br></font></i></div><div><i><font face="Courier New">Z_k-10</font></i></div>" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;strokeWidth=2;fontFamily=Ubuntu Mono;fontSize=17;" parent="1" vertex="1"> + <mxGeometry x="-557.25" y="476" width="120" height="210" as="geometry" /> + </mxCell> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-123" value="" style="endArrow=none;html=1;rounded=0;" parent="1" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="-556" y="551" as="sourcePoint" /> + <mxPoint x="-436.00000000000006" y="551" as="targetPoint" /> + </mxGeometry> </mxCell> - <mxCell id="uwrRxOYGmB2LabIKb8In-51" value="" style="endArrow=block;html=1;rounded=0;entryX=1;entryY=0;entryDx=0;entryDy=0;endFill=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;strokeWidth=2;" edge="1" parent="1" source="uwrRxOYGmB2LabIKb8In-34" target="uwrRxOYGmB2LabIKb8In-50"> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-124" value="" style="endArrow=none;html=1;rounded=0;" parent="1" edge="1"> <mxGeometry width="50" height="50" relative="1" as="geometry"> - <mxPoint x="350" y="349.71" as="sourcePoint" /> - <mxPoint x="382" y="542" as="targetPoint" /> + <mxPoint x="-556" y="516" as="sourcePoint" /> + <mxPoint x="-436.00000000000006" y="516" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-125" value="" style="endArrow=block;html=1;rounded=0;endFill=1;" parent="1" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="-496.04999999999995" y="647" as="sourcePoint" /> + <mxPoint x="-496.2600000000001" y="667" as="targetPoint" /> + <Array as="points" /> + </mxGeometry> + </mxCell> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-126" value="" style="endArrow=block;html=1;rounded=0;endFill=1;" parent="1" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="-496.25" y="511" as="sourcePoint" /> + <mxPoint x="-495.7800000000001" y="531" as="targetPoint" /> + <Array as="points" /> + </mxGeometry> + </mxCell> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-127" value="" style="endArrow=block;html=1;rounded=0;endFill=1;" parent="1" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="-496.03999999999996" y="543" as="sourcePoint" /> + <mxPoint x="-496.25" y="563" as="targetPoint" /> <Array as="points"> - <mxPoint x="450" y="340" /> - <mxPoint x="450" y="490" /> + <mxPoint x="-496" y="553" /> </Array> </mxGeometry> </mxCell> - <mxCell id="uwrRxOYGmB2LabIKb8In-52" value="" style="endArrow=none;html=1;rounded=0;entryX=1;entryY=0;entryDx=0;entryDy=0;exitX=0;exitY=1;exitDx=0;exitDy=0;fillColor=#d5e8d4;strokeColor=#82b366;strokeWidth=2;" edge="1" parent="1" source="uwrRxOYGmB2LabIKb8In-50" target="uwrRxOYGmB2LabIKb8In-50"> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-128" value="" style="triangle;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;" parent="1" vertex="1"> + <mxGeometry x="-556" y="664" width="10" height="20" as="geometry" /> + </mxCell> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-129" value="" style="endArrow=none;html=1;rounded=0;" parent="1" edge="1"> <mxGeometry width="50" height="50" relative="1" as="geometry"> - <mxPoint x="420" y="610" as="sourcePoint" /> - <mxPoint x="470" y="560" as="targetPoint" /> + <mxPoint x="-556" y="655" as="sourcePoint" /> + <mxPoint x="-436.00000000000006" y="655" as="targetPoint" /> </mxGeometry> </mxCell> - <mxCell id="uwrRxOYGmB2LabIKb8In-53" value="" style="endArrow=none;html=1;rounded=0;entryX=0;entryY=0;entryDx=0;entryDy=0;exitX=1;exitY=1;exitDx=0;exitDy=0;fillColor=#d5e8d4;strokeColor=#82b366;strokeWidth=2;" edge="1" parent="1" source="uwrRxOYGmB2LabIKb8In-50" target="uwrRxOYGmB2LabIKb8In-50"> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-130" value="" style="shape=trapezoid;perimeter=trapezoidPerimeter;whiteSpace=wrap;html=1;fixedSize=1;rotation=90;strokeWidth=2;" parent="1" vertex="1"> + <mxGeometry x="-486" y="576" width="210" height="20" as="geometry" /> + </mxCell> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-131" value="" style="shape=trapezoid;perimeter=trapezoidPerimeter;whiteSpace=wrap;html=1;fixedSize=1;rotation=90;strokeWidth=2;" parent="1" vertex="1"> + <mxGeometry x="-396" y="420" width="261.25" height="20" as="geometry" /> + </mxCell> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-132" value="" style="endArrow=classic;html=1;rounded=0;entryX=0.001;entryY=0.038;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" target="NSJiHg1tgZuGjZFiGY6h-80" edge="1"> <mxGeometry width="50" height="50" relative="1" as="geometry"> - <mxPoint x="382" y="598" as="sourcePoint" /> - <mxPoint x="438" y="542" as="targetPoint" /> + <mxPoint x="-636" y="349" as="sourcePoint" /> + <mxPoint x="-616" y="295" as="targetPoint" /> </mxGeometry> </mxCell> - <mxCell id="uwrRxOYGmB2LabIKb8In-54" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;fillColor=#d5e8d4;strokeColor=#82b366;" vertex="1" parent="1"> - <mxGeometry x="360" y="650" width="80" height="80" as="geometry" /> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-134" value="I_loadShift_Y" style="edgeLabel;html=1;align=right;verticalAlign=middle;resizable=0;points=[];fontSize=14;fontFamily=Ubuntu Mono;" parent="1" vertex="1" connectable="0"> + <mxGeometry x="-645.9990909090908" y="349.9999999999998" as="geometry"> + <mxPoint x="4" y="-2" as="offset" /> + </mxGeometry> </mxCell> - <mxCell id="uwrRxOYGmB2LabIKb8In-55" value="" style="endArrow=block;html=1;rounded=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;endFill=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;strokeWidth=2;" edge="1" parent="1" source="uwrRxOYGmB2LabIKb8In-50" target="uwrRxOYGmB2LabIKb8In-54"> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-135" value="" style="endArrow=classic;html=1;rounded=0;entryX=0.001;entryY=0.038;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" edge="1"> <mxGeometry width="50" height="50" relative="1" as="geometry"> - <mxPoint x="400" y="620" as="sourcePoint" /> - <mxPoint x="360" y="710" as="targetPoint" /> - <Array as="points" /> + <mxPoint x="-636" y="370" as="sourcePoint" /> + <mxPoint x="-556" y="370" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-137" value="I_inputY" style="edgeLabel;html=1;align=right;verticalAlign=middle;resizable=0;points=[];fontFamily=Ubuntu Mono;fontSize=14;" parent="1" vertex="1" connectable="0"> + <mxGeometry x="-645.9972727272727" y="369.9999999999998" as="geometry" /> + </mxCell> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-138" value="" style="endArrow=none;html=1;rounded=0;" parent="1" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="-616" y="380" as="sourcePoint" /> + <mxPoint x="-596" y="360" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-147" value="" style="endArrow=classic;html=1;rounded=0;entryX=0.001;entryY=0.038;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="-636" y="491" as="sourcePoint" /> + <mxPoint x="-556" y="491" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-148" value="I_loadShift_Z" style="edgeLabel;html=1;align=right;verticalAlign=middle;resizable=0;points=[];fontSize=14;fontFamily=Ubuntu Mono;" parent="1" vertex="1" connectable="0"> + <mxGeometry x="-645.9990909090908" y="491.9999999999998" as="geometry"> + <mxPoint x="7" y="-1" as="offset" /> + </mxGeometry> + </mxCell> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-149" value="" style="endArrow=classic;html=1;rounded=0;entryX=0.001;entryY=0.038;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="-636" y="512" as="sourcePoint" /> + <mxPoint x="-556" y="512" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-150" value="I_inputZ" style="edgeLabel;html=1;align=right;verticalAlign=middle;resizable=0;points=[];fontFamily=Ubuntu Mono;fontSize=14;" parent="1" vertex="1" connectable="0"> + <mxGeometry x="-645.9972727272727" y="511.9999999999998" as="geometry" /> + </mxCell> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-151" value="" style="endArrow=none;html=1;rounded=0;" parent="1" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="-620" y="502" as="sourcePoint" /> + <mxPoint x="-600" y="482" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-153" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.426;exitY=0.05;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" source="NSJiHg1tgZuGjZFiGY6h-13" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="-366" y="210" as="sourcePoint" /> + <mxPoint x="-276" y="350" as="targetPoint" /> + <Array as="points"> + <mxPoint x="-300" y="260" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-154" value="" style="endArrow=classic;html=1;rounded=0;entryX=0.095;entryY=0.95;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" target="NSJiHg1tgZuGjZFiGY6h-13" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="-436" y="140" as="sourcePoint" /> + <mxPoint x="-394.75" y="140" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-155" value="" style="endArrow=classic;html=1;rounded=0;entryX=0.095;entryY=0.95;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="-436" y="176" as="sourcePoint" /> + <mxPoint x="-390" y="176" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-156" value="" style="endArrow=classic;html=1;rounded=0;entryX=0.095;entryY=0.95;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="-436" y="306" as="sourcePoint" /> + <mxPoint x="-390" y="306" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-157" value="" style="endArrow=classic;html=1;rounded=0;entryX=0.095;entryY=0.95;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="-437" y="364" as="sourcePoint" /> + <mxPoint x="-391" y="364" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-158" value="" style="endArrow=classic;html=1;rounded=0;entryX=0.095;entryY=0.95;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="-436" y="399" as="sourcePoint" /> + <mxPoint x="-390" y="399" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-159" value="" style="endArrow=classic;html=1;rounded=0;entryX=0.095;entryY=0.95;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="-437" y="438" as="sourcePoint" /> + <mxPoint x="-391" y="438" as="targetPoint" /> </mxGeometry> </mxCell> - <mxCell id="uwrRxOYGmB2LabIKb8In-56" value="" style="endArrow=none;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;fillColor=#d5e8d4;strokeColor=#82b366;strokeWidth=2;" edge="1" parent="1" source="uwrRxOYGmB2LabIKb8In-54" target="uwrRxOYGmB2LabIKb8In-54"> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-162" value="" style="endArrow=classic;html=1;rounded=0;entryX=0.095;entryY=0.95;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" edge="1"> <mxGeometry width="50" height="50" relative="1" as="geometry"> - <mxPoint x="438" y="568" as="sourcePoint" /> - <mxPoint x="382" y="512" as="targetPoint" /> + <mxPoint x="-436" y="501" as="sourcePoint" /> + <mxPoint x="-390" y="501" as="targetPoint" /> </mxGeometry> </mxCell> - <mxCell id="uwrRxOYGmB2LabIKb8In-57" value="" style="endArrow=none;html=1;rounded=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;fillColor=#d5e8d4;strokeColor=#82b366;strokeWidth=2;" edge="1" parent="1" source="uwrRxOYGmB2LabIKb8In-54" target="uwrRxOYGmB2LabIKb8In-54"> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-163" value="" style="endArrow=classic;html=1;rounded=0;entryX=0.095;entryY=0.95;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" edge="1"> <mxGeometry width="50" height="50" relative="1" as="geometry"> - <mxPoint x="450" y="700" as="sourcePoint" /> - <mxPoint x="370" y="700" as="targetPoint" /> + <mxPoint x="-436" y="536" as="sourcePoint" /> + <mxPoint x="-390" y="536" as="targetPoint" /> </mxGeometry> </mxCell> - <mxCell id="uwrRxOYGmB2LabIKb8In-58" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;strokeWidth=2;" vertex="1" parent="1"> - <mxGeometry x="160" y="660" width="120" height="60" as="geometry" /> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-164" value="" style="endArrow=classic;html=1;rounded=0;entryX=0.095;entryY=0.95;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="-436" y="669" as="sourcePoint" /> + <mxPoint x="-390" y="669" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-166" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.426;exitY=0.05;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="-372" y="596" as="sourcePoint" /> + <mxPoint x="-276" y="455" as="targetPoint" /> + <Array as="points"> + <mxPoint x="-316" y="595" /> + </Array> + </mxGeometry> </mxCell> - <mxCell id="uwrRxOYGmB2LabIKb8In-59" value="" style="triangle;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;" vertex="1" parent="1"> - <mxGeometry x="160" y="690" width="10" height="20" as="geometry" /> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-167" value="" style="endArrow=none;dashed=1;html=1;rounded=0;" parent="1" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="-416" y="290" as="sourcePoint" /> + <mxPoint x="-416" y="190" as="targetPoint" /> + </mxGeometry> </mxCell> - <mxCell id="uwrRxOYGmB2LabIKb8In-63" value="" style="triangle;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;" vertex="1" parent="1"> - <mxGeometry x="160" y="450" width="10" height="20" as="geometry" /> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-168" value="" style="endArrow=none;dashed=1;html=1;rounded=0;" parent="1" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="-414.75" y="651" as="sourcePoint" /> + <mxPoint x="-414.75" y="551" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-169" value="" style="endArrow=classic;html=1;rounded=0;entryX=0.384;entryY=1.16;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="-368.75" y="400.46" as="sourcePoint" /> + <mxPoint x="-276.57500000000005" y="399.69499999999994" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-317" value="<div><div><font face="Courier New"><i>h17</i></font></div></div><div><b><i><br></i></b></div><div><b><i><br></i></b></div><div><b><i><br></i></b></div><div><b><i><br></i></b></div><div><b><i><br></i></b></div><div><b><i><br></i></b></div><div><b><i><br></i></b></div><div><b><i><br></i></b></div><div><div><font face="Courier New"><i>h111</i></font></div></div>" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#ffe6cc;strokeColor=#d79b00;strokeWidth=2;fontFamily=Ubuntu Mono;fontSize=17;flipV=1;flipH=1;" parent="1" vertex="1"> + <mxGeometry x="164.62772727272727" y="120" width="120" height="210" as="geometry" /> + </mxCell> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-318" value="" style="endArrow=none;html=1;rounded=0;" parent="1" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="284.62772727272727" y="190" as="sourcePoint" /> + <mxPoint x="164.62772727272733" y="190" as="targetPoint" /> + </mxGeometry> </mxCell> - <mxCell id="uwrRxOYGmB2LabIKb8In-64" value="" style="endArrow=block;html=1;rounded=0;endFill=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0;entryY=0;entryDx=0;entryDy=0;strokeWidth=2;" edge="1" parent="1" source="uwrRxOYGmB2LabIKb8In-58" target="uwrRxOYGmB2LabIKb8In-54"> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-319" value="" style="endArrow=none;html=1;rounded=0;" parent="1" edge="1"> <mxGeometry width="50" height="50" relative="1" as="geometry"> - <mxPoint x="410" y="580" as="sourcePoint" /> - <mxPoint x="340" y="650" as="targetPoint" /> + <mxPoint x="284.62772727272727" y="157" as="sourcePoint" /> + <mxPoint x="164.62772727272733" y="157" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-320" value="" style="shape=trapezoid;perimeter=trapezoidPerimeter;whiteSpace=wrap;html=1;fixedSize=1;rotation=90;strokeWidth=2;flipV=1;" parent="1" vertex="1"> + <mxGeometry x="4.62772727272727" y="215" width="210" height="20" as="geometry" /> + </mxCell> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-324" value="" style="triangle;whiteSpace=wrap;html=1;fillColor=#ffe6cc;strokeColor=#d79b00;flipV=0;" parent="1" vertex="1"> + <mxGeometry x="165.87772727272727" y="303" width="10" height="20" as="geometry" /> + </mxCell> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-331" value="" style="endArrow=none;html=1;rounded=0;" parent="1" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="284.62772727272727" y="294" as="sourcePoint" /> + <mxPoint x="164.62772727272733" y="294" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-332" value="<div><font face="Courier New"><i>b0</i></font></div><div><font face="Courier New"><i><br></i></font></div><div><font face="Courier New"><i>b1</i></font></div><div><font face="Courier New"><i><br></i></font></div><div><font face="Courier New"><i>b2</i></font></div>" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#ffe6cc;strokeColor=#d79b00;strokeWidth=2;fontFamily=Ubuntu Mono;fontSize=17;" parent="1" vertex="1"> + <mxGeometry x="164.62772727272727" y="345" width="120" height="110" as="geometry" /> + </mxCell> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-333" value="" style="endArrow=none;html=1;rounded=0;" parent="1" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="284.62772727272727" y="421" as="sourcePoint" /> + <mxPoint x="164.62772727272733" y="421" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-334" value="" style="endArrow=none;html=1;rounded=0;" parent="1" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="284.62772727272727" y="378" as="sourcePoint" /> + <mxPoint x="164.62772727272733" y="378" as="targetPoint" /> <Array as="points"> - <mxPoint x="220" y="620" /> - <mxPoint x="330" y="620" /> + <mxPoint x="234.62772727272727" y="378" /> </Array> </mxGeometry> </mxCell> - <mxCell id="uwrRxOYGmB2LabIKb8In-65" value="" style="endArrow=block;html=1;rounded=0;endFill=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;strokeWidth=2;" edge="1" parent="1" source="uwrRxOYGmB2LabIKb8In-54" target="uwrRxOYGmB2LabIKb8In-58"> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-336" value="" style="triangle;whiteSpace=wrap;html=1;fillColor=#ffe6cc;strokeColor=#d79b00;" parent="1" vertex="1"> + <mxGeometry x="165.87772727272727" y="430" width="10" height="20" as="geometry" /> + </mxCell> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-337" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" parent="1" source="NSJiHg1tgZuGjZFiGY6h-332" target="NSJiHg1tgZuGjZFiGY6h-332" edge="1"> + <mxGeometry relative="1" as="geometry" /> + </mxCell> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-338" value="<div><font face="Courier New"><i>-a0</i></font></div><div><font face="Courier New"><i><br></i></font></div><div><font face="Courier New"><i>-a1</i></font></div>" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#ffe6cc;strokeColor=#d79b00;strokeWidth=2;fontFamily=Ubuntu Mono;fontSize=17;" parent="1" vertex="1"> + <mxGeometry x="164.62772727272727" y="470" width="120" height="70" as="geometry" /> + </mxCell> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-339" value="" style="endArrow=none;html=1;rounded=0;" parent="1" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="284.62772727272727" y="504.63" as="sourcePoint" /> + <mxPoint x="164.62772727272733" y="504.63" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-340" value="" style="triangle;whiteSpace=wrap;html=1;fillColor=#ffe6cc;strokeColor=#d79b00;" parent="1" vertex="1"> + <mxGeometry x="165.87772727272727" y="515" width="10" height="20" as="geometry" /> + </mxCell> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-341" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" parent="1" source="NSJiHg1tgZuGjZFiGY6h-338" target="NSJiHg1tgZuGjZFiGY6h-338" edge="1"> + <mxGeometry relative="1" as="geometry" /> + </mxCell> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-342" value="" style="shape=trapezoid;perimeter=trapezoidPerimeter;whiteSpace=wrap;html=1;fixedSize=1;rotation=90;strokeWidth=2;flipV=1;" parent="1" vertex="1"> + <mxGeometry x="53.37772727272727" y="390.75" width="112.5" height="20" as="geometry" /> + </mxCell> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-343" value="" style="shape=trapezoid;perimeter=trapezoidPerimeter;whiteSpace=wrap;html=1;fixedSize=1;rotation=90;strokeWidth=2;flipV=1;" parent="1" vertex="1"> + <mxGeometry x="75.87772727272727" y="495" width="67.5" height="20" as="geometry" /> + </mxCell> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-344" value="<div><font face="Courier New"><i>g0</i></font></div><div><i><font face="Courier New"><br></font></i></div><div><i><font face="Courier New"><br></font></i></div><div><i><font face="Courier New"><br></font></i></div><div><i><font face="Courier New"><br></font></i></div><div><i><font face="Courier New"><br></font></i></div><div><i><font face="Courier New"><br></font></i></div><div><i><font face="Courier New"><br></font></i></div><div><i><font face="Courier New">g10</font></i></div>" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#ffe6cc;strokeColor=#d79b00;strokeWidth=2;fontFamily=Ubuntu Mono;fontSize=17;" parent="1" vertex="1"> + <mxGeometry x="164.62772727272727" y="550" width="120" height="210" as="geometry" /> + </mxCell> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-345" value="" style="endArrow=none;html=1;rounded=0;" parent="1" edge="1"> <mxGeometry width="50" height="50" relative="1" as="geometry"> - <mxPoint x="230" y="670" as="sourcePoint" /> - <mxPoint x="382" y="672" as="targetPoint" /> + <mxPoint x="284.62772727272727" y="620" as="sourcePoint" /> + <mxPoint x="164.62772727272733" y="620" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-346" value="" style="endArrow=none;html=1;rounded=0;" parent="1" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="284.62772727272727" y="585" as="sourcePoint" /> + <mxPoint x="164.62772727272733" y="585" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-350" value="" style="triangle;whiteSpace=wrap;html=1;fillColor=#ffe6cc;strokeColor=#d79b00;" parent="1" vertex="1"> + <mxGeometry x="165.87772727272727" y="733" width="10" height="20" as="geometry" /> + </mxCell> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-351" value="" style="endArrow=none;html=1;rounded=0;" parent="1" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="284.62772727272727" y="724" as="sourcePoint" /> + <mxPoint x="164.62772727272733" y="724" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-352" value="" style="shape=trapezoid;perimeter=trapezoidPerimeter;whiteSpace=wrap;html=1;fixedSize=1;rotation=90;strokeWidth=2;flipV=1;" parent="1" vertex="1"> + <mxGeometry x="4.62772727272727" y="645" width="210" height="20" as="geometry" /> + </mxCell> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-353" value="" style="shape=trapezoid;perimeter=trapezoidPerimeter;whiteSpace=wrap;html=1;fixedSize=1;rotation=90;strokeWidth=2;flipH=1;flipV=1;" parent="1" vertex="1"> + <mxGeometry x="-136.62227272727273" y="420" width="261.25" height="20" as="geometry" /> + </mxCell> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-372" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.426;exitY=0.05;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" source="NSJiHg1tgZuGjZFiGY6h-320" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="94.62772727272727" y="210" as="sourcePoint" /> + <mxPoint x="4.62772727272727" y="350" as="targetPoint" /> <Array as="points"> - <mxPoint x="400" y="770" /> - <mxPoint x="270" y="770" /> + <mxPoint x="44.62772727272727" y="210" /> </Array> </mxGeometry> </mxCell> - <mxCell id="uwrRxOYGmB2LabIKb8In-67" value="" style="endArrow=block;html=1;rounded=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;endFill=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;strokeWidth=2;" edge="1" parent="1" target="uwrRxOYGmB2LabIKb8In-68"> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-373" value="" style="endArrow=classic;html=1;rounded=0;entryX=0.095;entryY=0.95;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" target="NSJiHg1tgZuGjZFiGY6h-320" edge="1"> <mxGeometry width="50" height="50" relative="1" as="geometry"> - <mxPoint x="399.97" y="730" as="sourcePoint" /> - <mxPoint x="399.97" y="810" as="targetPoint" /> + <mxPoint x="164.62772727272727" y="140" as="sourcePoint" /> + <mxPoint x="123.37772727272727" y="140" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-374" value="" style="endArrow=classic;html=1;rounded=0;entryX=0.095;entryY=0.95;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="164.62772727272727" y="176" as="sourcePoint" /> + <mxPoint x="118.62772727272727" y="176" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-375" value="" style="endArrow=classic;html=1;rounded=0;entryX=0.095;entryY=0.95;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="164.62772727272727" y="306" as="sourcePoint" /> + <mxPoint x="118.62772727272727" y="306" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-376" value="" style="endArrow=classic;html=1;rounded=0;entryX=0.095;entryY=0.95;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="165.62772727272727" y="364" as="sourcePoint" /> + <mxPoint x="119.62772727272727" y="364" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-377" value="" style="endArrow=classic;html=1;rounded=0;entryX=0.095;entryY=0.95;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="164.62772727272727" y="399" as="sourcePoint" /> + <mxPoint x="118.62772727272727" y="399" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-378" value="" style="endArrow=classic;html=1;rounded=0;entryX=0.095;entryY=0.95;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="165.62772727272727" y="438" as="sourcePoint" /> + <mxPoint x="119.62772727272727" y="438" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-379" value="" style="endArrow=classic;html=1;rounded=0;entryX=0.095;entryY=0.95;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="164.62772727272727" y="491" as="sourcePoint" /> + <mxPoint x="118.62772727272727" y="491" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-380" value="" style="endArrow=classic;html=1;rounded=0;entryX=0.095;entryY=0.95;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="164.62772727272727" y="519" as="sourcePoint" /> + <mxPoint x="118.62772727272727" y="519" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-381" value="" style="endArrow=classic;html=1;rounded=0;entryX=0.095;entryY=0.95;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="164.62772727272727" y="570" as="sourcePoint" /> + <mxPoint x="118.62772727272727" y="570" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-382" value="" style="endArrow=classic;html=1;rounded=0;entryX=0.095;entryY=0.95;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="164.62772727272727" y="605" as="sourcePoint" /> + <mxPoint x="118.62772727272727" y="605" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-383" value="" style="endArrow=classic;html=1;rounded=0;entryX=0.095;entryY=0.95;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="164.62772727272727" y="738" as="sourcePoint" /> + <mxPoint x="118.62772727272727" y="738" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-384" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.426;exitY=0.05;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="100.62772727272727" y="665" as="sourcePoint" /> + <mxPoint x="4.62772727272727" y="524" as="targetPoint" /> <Array as="points"> - <mxPoint x="400" y="790" /> - <mxPoint x="420" y="810" /> + <mxPoint x="44.62772727272727" y="664" /> </Array> </mxGeometry> </mxCell> - <mxCell id="uwrRxOYGmB2LabIKb8In-68" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;rotation=90;strokeWidth=2;" vertex="1" parent="1"> - <mxGeometry x="480" y="780" width="120" height="60" as="geometry" /> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-385" value="" style="endArrow=none;dashed=1;html=1;rounded=0;" parent="1" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="144.62772727272727" y="290" as="sourcePoint" /> + <mxPoint x="144.62772727272727" y="190" as="targetPoint" /> + </mxGeometry> </mxCell> - <mxCell id="uwrRxOYGmB2LabIKb8In-69" value="" style="triangle;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;" vertex="1" parent="1"> - <mxGeometry x="510" y="840" width="10" height="20" as="geometry" /> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-386" value="" style="endArrow=none;dashed=1;html=1;rounded=0;" parent="1" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="143.37772727272727" y="720" as="sourcePoint" /> + <mxPoint x="143.37772727272727" y="620" as="targetPoint" /> + </mxGeometry> </mxCell> - <mxCell id="uwrRxOYGmB2LabIKb8In-70" value="" style="endArrow=block;html=1;rounded=0;endFill=1;exitX=0.5;exitY=0.007;exitDx=0;exitDy=0;exitPerimeter=0;strokeWidth=2;" edge="1" parent="1" source="uwrRxOYGmB2LabIKb8In-68"> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-387" value="" style="endArrow=classic;html=1;rounded=0;entryX=0.384;entryY=1.16;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" edge="1"> <mxGeometry width="50" height="50" relative="1" as="geometry"> - <mxPoint x="570" y="809.98" as="sourcePoint" /> - <mxPoint x="650" y="810" as="targetPoint" /> + <mxPoint x="97.37772727272727" y="400.46" as="sourcePoint" /> + <mxPoint x="5.202727272727316" y="399.69499999999994" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-388" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.496;exitY=0.25;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="98.62772727272727" y="504.8699999999998" as="sourcePoint" /> + <mxPoint x="4.62772727272727" y="505" as="targetPoint" /> + <Array as="points"> + <mxPoint x="68.62772727272727" y="505.14" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-395" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.379;exitY=-0.144;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="-16" y="399.75" as="sourcePoint" /> + <mxPoint x="-92" y="399.75" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="NSJiHg1tgZuGjZFiGY6h-396" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.379;exitY=-0.144;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="-253" y="400.5" as="sourcePoint" /> + <mxPoint x="-177" y="400.5" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="LobVDJ5r6b-_70CPCLv5-2" value="" style="endArrow=block;html=1;rounded=0;entryX=0;entryY=0.25;entryDx=0;entryDy=0;endFill=1;" parent="1" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="-233.5" y="19.5" as="sourcePoint" /> + <mxPoint x="-193.5" y="19.5" as="targetPoint" /> <Array as="points" /> </mxGeometry> </mxCell> - <mxCell id="uwrRxOYGmB2LabIKb8In-71" value="O_Y" style="edgeLabel;html=1;align=left;verticalAlign=middle;resizable=0;points=[];fontFamily=Ubuntu Mono;fontSize=14;fontStyle=0" vertex="1" connectable="0" parent="1"> - <mxGeometry x="650.0017647058825" y="810.0000000000002" as="geometry" /> + <mxCell id="LobVDJ5r6b-_70CPCLv5-3" value="I_sel_proc" style="edgeLabel;html=1;align=right;verticalAlign=middle;resizable=0;points=[];fontFamily=Ubuntu Mono;fontSize=14;fontStyle=0" parent="LobVDJ5r6b-_70CPCLv5-2" vertex="1" connectable="0"> + <mxGeometry x="0.45" y="1" relative="1" as="geometry"> + <mxPoint x="-29" y="1" as="offset" /> + </mxGeometry> </mxCell> - <mxCell id="uwrRxOYGmB2LabIKb8In-72" value="" style="endArrow=block;html=1;rounded=0;endFill=1;entryX=0.75;entryY=0;entryDx=0;entryDy=0;strokeWidth=2;" edge="1" parent="1" target="uwrRxOYGmB2LabIKb8In-9"> + <mxCell id="LobVDJ5r6b-_70CPCLv5-15" value="I_sel_proc" style="edgeLabel;html=1;align=right;verticalAlign=middle;resizable=0;points=[];fontFamily=Ubuntu Mono;fontSize=14;fontStyle=0" parent="1" vertex="1" connectable="0"> + <mxGeometry x="-110" y="210" as="geometry" /> + </mxCell> + <mxCell id="LobVDJ5r6b-_70CPCLv5-16" value="" style="endArrow=classic;html=1;rounded=0;entryX=0.036;entryY=0.326;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" target="NSJiHg1tgZuGjZFiGY6h-131" edge="1"> <mxGeometry width="50" height="50" relative="1" as="geometry"> - <mxPoint x="150" y="120" as="sourcePoint" /> - <mxPoint x="250" y="170" as="targetPoint" /> + <mxPoint x="-130" y="220" as="sourcePoint" /> + <mxPoint x="-247.375" y="309.375" as="targetPoint" /> <Array as="points"> - <mxPoint x="220" y="120" /> - <mxPoint x="230" y="120" /> - <mxPoint x="250" y="140" /> + <mxPoint x="-130" y="260" /> </Array> </mxGeometry> </mxCell> - <mxCell id="uwrRxOYGmB2LabIKb8In-74" value="I_inputSample" style="edgeLabel;html=1;align=right;verticalAlign=middle;resizable=0;points=[];fontFamily=Ubuntu Mono;fontSize=14;" vertex="1" connectable="0" parent="uwrRxOYGmB2LabIKb8In-72"> - <mxGeometry x="-0.9128" y="-1" relative="1" as="geometry"> - <mxPoint x="-7" y="-1" as="offset" /> + <mxCell id="LobVDJ5r6b-_70CPCLv5-17" value="" style="endArrow=classic;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" target="NSJiHg1tgZuGjZFiGY6h-353" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="-130" y="220" as="sourcePoint" /> + <mxPoint x="12.00272727272727" y="309.375" as="targetPoint" /> + <Array as="points"> + <mxPoint x="-130" y="260" /> + </Array> </mxGeometry> </mxCell> - <mxCell id="uwrRxOYGmB2LabIKb8In-73" value="" style="endArrow=block;html=1;rounded=0;endFill=1;entryX=0.25;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" target="uwrRxOYGmB2LabIKb8In-9"> + <mxCell id="LobVDJ5r6b-_70CPCLv5-21" value="" style="endArrow=classic;html=1;rounded=0;entryX=0;entryY=0.25;entryDx=0;entryDy=0;exitX=0.523;exitY=1.006;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" source="NSJiHg1tgZuGjZFiGY6h-1" target="NSJiHg1tgZuGjZFiGY6h-13" edge="1"> <mxGeometry width="50" height="50" relative="1" as="geometry"> - <mxPoint x="150" y="150" as="sourcePoint" /> - <mxPoint x="190" y="190" as="targetPoint" /> + <mxPoint x="-118" y="40" as="sourcePoint" /> + <mxPoint x="-250" y="129" as="targetPoint" /> <Array as="points"> - <mxPoint x="180" y="150" /> - <mxPoint x="190" y="160" /> + <mxPoint x="-130" y="80" /> </Array> </mxGeometry> </mxCell> - <mxCell id="uwrRxOYGmB2LabIKb8In-76" value="I_loadShift" style="edgeLabel;html=1;align=right;verticalAlign=middle;resizable=0;points=[];fontSize=14;fontFamily=Ubuntu Mono;" vertex="1" connectable="0" parent="uwrRxOYGmB2LabIKb8In-73"> - <mxGeometry x="-0.7861" relative="1" as="geometry"> - <mxPoint x="-9" as="offset" /> + <mxCell id="LobVDJ5r6b-_70CPCLv5-22" value="" style="endArrow=classic;html=1;rounded=0;entryX=0;entryY=0.75;entryDx=0;entryDy=0;" parent="1" target="NSJiHg1tgZuGjZFiGY6h-320" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="-129" y="40" as="sourcePoint" /> + <mxPoint x="130" y="134" as="targetPoint" /> + <Array as="points"> + <mxPoint x="-129" y="80" /> + </Array> </mxGeometry> </mxCell> - <mxCell id="uwrRxOYGmB2LabIKb8In-77" value="" style="endArrow=block;html=1;rounded=0;endFill=1;entryX=0.25;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1"> + <mxCell id="LobVDJ5r6b-_70CPCLv5-23" value="" style="endArrow=classic;html=1;rounded=0;entryX=0;entryY=0.75;entryDx=0;entryDy=0;" parent="1" target="NSJiHg1tgZuGjZFiGY6h-342" edge="1"> <mxGeometry width="50" height="50" relative="1" as="geometry"> - <mxPoint x="130" y="630" as="sourcePoint" /> - <mxPoint x="170" y="660" as="targetPoint" /> + <mxPoint x="70" y="310" as="sourcePoint" /> + <mxPoint x="107" y="350" as="targetPoint" /> <Array as="points"> - <mxPoint x="160" y="630" /> - <mxPoint x="170" y="640" /> + <mxPoint x="70" y="340" /> </Array> </mxGeometry> </mxCell> - <mxCell id="uwrRxOYGmB2LabIKb8In-78" value="I_loadSum" style="edgeLabel;html=1;align=right;verticalAlign=middle;resizable=0;points=[];fontSize=14;fontFamily=Ubuntu Mono;" vertex="1" connectable="0" parent="uwrRxOYGmB2LabIKb8In-77"> - <mxGeometry x="-0.7298" y="1" relative="1" as="geometry"> - <mxPoint x="-9" y="1" as="offset" /> + <mxCell id="LobVDJ5r6b-_70CPCLv5-25" value="SR_ReadAdress" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="LobVDJ5r6b-_70CPCLv5-23" vertex="1" connectable="0"> + <mxGeometry x="-0.6014" y="1" relative="1" as="geometry"> + <mxPoint y="-21" as="offset" /> </mxGeometry> </mxCell> - <mxCell id="uwrRxOYGmB2LabIKb8In-79" value="" style="endArrow=block;html=1;rounded=0;endFill=1;entryX=0.25;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" target="uwrRxOYGmB2LabIKb8In-58"> + <mxCell id="LobVDJ5r6b-_70CPCLv5-26" value="SR_ReadAdress" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="1" vertex="1" connectable="0"> + <mxGeometry x="-120" y="60" as="geometry" /> + </mxCell> + <mxCell id="LobVDJ5r6b-_70CPCLv5-27" value="" style="endArrow=classic;html=1;rounded=0;entryX=0;entryY=0.75;entryDx=0;entryDy=0;" parent="1" edge="1"> <mxGeometry width="50" height="50" relative="1" as="geometry"> - <mxPoint x="130" y="610" as="sourcePoint" /> - <mxPoint x="170" y="641" as="targetPoint" /> + <mxPoint x="75.88" y="430" as="sourcePoint" /> + <mxPoint x="111.88" y="478" as="targetPoint" /> <Array as="points"> - <mxPoint x="170" y="610" /> - <mxPoint x="190" y="630" /> + <mxPoint x="75.88" y="460" /> </Array> </mxGeometry> </mxCell> - <mxCell id="uwrRxOYGmB2LabIKb8In-80" value="I_initSum" style="edgeLabel;html=1;align=right;verticalAlign=middle;resizable=0;points=[];fontSize=14;fontFamily=Ubuntu Mono;" vertex="1" connectable="0" parent="uwrRxOYGmB2LabIKb8In-79"> - <mxGeometry x="-0.7298" y="1" relative="1" as="geometry"> - <mxPoint x="-13" y="1" as="offset" /> + <mxCell id="LobVDJ5r6b-_70CPCLv5-28" value="SR_ReadAdress" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="LobVDJ5r6b-_70CPCLv5-27" vertex="1" connectable="0"> + <mxGeometry x="-0.6014" y="1" relative="1" as="geometry"> + <mxPoint y="-21" as="offset" /> </mxGeometry> </mxCell> - <mxCell id="uwrRxOYGmB2LabIKb8In-81" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1"> + <mxCell id="LobVDJ5r6b-_70CPCLv5-29" value="" style="endArrow=classic;html=1;rounded=0;entryX=0.053;entryY=0.403;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" target="NSJiHg1tgZuGjZFiGY6h-352" edge="1"> <mxGeometry width="50" height="50" relative="1" as="geometry"> - <mxPoint x="130" y="830" as="sourcePoint" /> - <mxPoint x="510" y="830" as="targetPoint" /> + <mxPoint x="76" y="530" as="sourcePoint" /> + <mxPoint x="111.88" y="563" as="targetPoint" /> + <Array as="points"> + <mxPoint x="75.88" y="545" /> + </Array> </mxGeometry> </mxCell> - <mxCell id="uwrRxOYGmB2LabIKb8In-82" value="I_loadY" style="edgeLabel;html=1;align=right;verticalAlign=middle;resizable=0;points=[];fontSize=14;fontFamily=Ubuntu Mono;" vertex="1" connectable="0" parent="uwrRxOYGmB2LabIKb8In-81"> - <mxGeometry x="-0.9221" y="-1" relative="1" as="geometry"> - <mxPoint x="-15" as="offset" /> + <mxCell id="LobVDJ5r6b-_70CPCLv5-30" value="SR_ReadAdress" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="LobVDJ5r6b-_70CPCLv5-29" vertex="1" connectable="0"> + <mxGeometry x="-0.6014" y="1" relative="1" as="geometry"> + <mxPoint y="-21" as="offset" /> </mxGeometry> </mxCell> - <mxCell id="uwrRxOYGmB2LabIKb8In-83" value="" style="endArrow=none;html=1;rounded=0;" edge="1" parent="1"> + <mxCell id="LobVDJ5r6b-_70CPCLv5-31" value="" style="endArrow=classic;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" target="NSJiHg1tgZuGjZFiGY6h-120" edge="1"> <mxGeometry width="50" height="50" relative="1" as="geometry"> - <mxPoint x="590" y="820" as="sourcePoint" /> - <mxPoint x="610" y="800" as="targetPoint" /> + <mxPoint x="-340" y="340" as="sourcePoint" /> + <mxPoint x="-340" y="360" as="targetPoint" /> + <Array as="points"> + <mxPoint x="-340" y="355" /> + </Array> </mxGeometry> </mxCell> - <mxCell id="uwrRxOYGmB2LabIKb8In-84" value="??" style="edgeLabel;html=1;align=left;verticalAlign=bottom;resizable=0;points=[];labelPosition=right;verticalLabelPosition=top;" vertex="1" connectable="0" parent="uwrRxOYGmB2LabIKb8In-83"> - <mxGeometry x="0.5519" y="1" relative="1" as="geometry"> - <mxPoint x="5" y="-4" as="offset" /> + <mxCell id="LobVDJ5r6b-_70CPCLv5-32" value="SR_ReadAdress" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="LobVDJ5r6b-_70CPCLv5-31" vertex="1" connectable="0"> + <mxGeometry x="-0.6014" y="1" relative="1" as="geometry"> + <mxPoint y="-21" as="offset" /> </mxGeometry> </mxCell> - <mxCell id="uwrRxOYGmB2LabIKb8In-85" value="" style="endArrow=none;html=1;rounded=0;" edge="1" parent="1"> + <mxCell id="LobVDJ5r6b-_70CPCLv5-33" value="" style="endArrow=classic;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" edge="1"> <mxGeometry width="50" height="50" relative="1" as="geometry"> - <mxPoint x="440" y="820" as="sourcePoint" /> - <mxPoint x="460" y="800" as="targetPoint" /> + <mxPoint x="-336" y="476" as="sourcePoint" /> + <mxPoint x="-377" y="491" as="targetPoint" /> + <Array as="points"> + <mxPoint x="-336" y="491" /> + </Array> </mxGeometry> </mxCell> - <mxCell id="uwrRxOYGmB2LabIKb8In-86" value="??" style="edgeLabel;html=1;align=left;verticalAlign=bottom;resizable=0;points=[];labelPosition=right;verticalLabelPosition=top;" vertex="1" connectable="0" parent="uwrRxOYGmB2LabIKb8In-85"> - <mxGeometry x="0.5519" y="1" relative="1" as="geometry"> - <mxPoint x="5" y="-4" as="offset" /> + <mxCell id="LobVDJ5r6b-_70CPCLv5-34" value="SR_ReadAdress" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="LobVDJ5r6b-_70CPCLv5-33" vertex="1" connectable="0"> + <mxGeometry x="-0.6014" y="1" relative="1" as="geometry"> + <mxPoint y="-21" as="offset" /> </mxGeometry> </mxCell> - <mxCell id="uwrRxOYGmB2LabIKb8In-87" value="" style="endArrow=none;html=1;rounded=0;" edge="1" parent="1"> - <mxGeometry width="50" height="50" relative="1" as="geometry"> - <mxPoint x="390" y="620" as="sourcePoint" /> - <mxPoint x="410" y="600" as="targetPoint" /> + <mxCell id="LobVDJ5r6b-_70CPCLv5-35" value="11" style="edgeLabel;html=1;align=left;verticalAlign=bottom;resizable=0;points=[];labelPosition=right;verticalLabelPosition=top;" parent="1" vertex="1" connectable="0"> + <mxGeometry x="-600.0007575950825" y="359.9965440327094" as="geometry" /> + </mxCell> + <mxCell id="LobVDJ5r6b-_70CPCLv5-36" value="11" style="edgeLabel;html=1;align=left;verticalAlign=bottom;resizable=0;points=[];labelPosition=right;verticalLabelPosition=top;" parent="1" vertex="1" connectable="0"> + <mxGeometry x="-590.0007575950825" y="369.9965440327094" as="geometry"> + <mxPoint x="-7" y="139" as="offset" /> </mxGeometry> </mxCell> - <mxCell id="uwrRxOYGmB2LabIKb8In-88" value="??" style="edgeLabel;html=1;align=left;verticalAlign=bottom;resizable=0;points=[];labelPosition=right;verticalLabelPosition=top;" vertex="1" connectable="0" parent="uwrRxOYGmB2LabIKb8In-87"> - <mxGeometry x="0.5519" y="1" relative="1" as="geometry"> - <mxPoint x="5" y="-4" as="offset" /> + <mxCell id="BKrnhedlCoJ_zhHoYPd7-1" value="" style="endArrow=none;html=1;rounded=0;exitX=0.779;exitY=1;exitDx=0;exitDy=0;exitPerimeter=0;" edge="1" parent="1" source="BKrnhedlCoJ_zhHoYPd7-2"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="-210" y="360" as="sourcePoint" /> + <mxPoint x="-70" y="410" as="targetPoint" /> </mxGeometry> </mxCell> - <mxCell id="uwrRxOYGmB2LabIKb8In-89" value="" style="endArrow=none;html=1;rounded=0;" edge="1" parent="1"> + <mxCell id="BKrnhedlCoJ_zhHoYPd7-2" value="(2,10)" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontSize=16;" vertex="1" parent="1"> + <mxGeometry x="-87" y="360" width="70" height="30" as="geometry" /> + </mxCell> + <mxCell id="BKrnhedlCoJ_zhHoYPd7-4" value="O_R" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontSize=16;" vertex="1" parent="1"> + <mxGeometry x="154.63" y="1021" width="60" height="30" as="geometry" /> + </mxCell> + <mxCell id="BKrnhedlCoJ_zhHoYPd7-5" value="" style="endArrow=block;html=1;rounded=0;endFill=1;strokeWidth=2;" edge="1" parent="1"> <mxGeometry width="50" height="50" relative="1" as="geometry"> - <mxPoint x="180" y="130" as="sourcePoint" /> - <mxPoint x="200" y="110" as="targetPoint" /> + <mxPoint x="120" y="1040" as="sourcePoint" /> + <mxPoint x="-710" y="520" as="targetPoint" /> + <Array as="points"> + <mxPoint x="120" y="1130" /> + <mxPoint x="-780" y="1130" /> + <mxPoint x="-780" y="520" /> + </Array> </mxGeometry> </mxCell> - <mxCell id="uwrRxOYGmB2LabIKb8In-90" value="8" style="edgeLabel;html=1;align=left;verticalAlign=bottom;resizable=0;points=[];labelPosition=right;verticalLabelPosition=top;" vertex="1" connectable="0" parent="uwrRxOYGmB2LabIKb8In-89"> - <mxGeometry x="0.5519" y="1" relative="1" as="geometry"> - <mxPoint x="5" y="-4" as="offset" /> + <mxCell id="BKrnhedlCoJ_zhHoYPd7-7" value="" style="endArrow=block;html=1;rounded=0;endFill=1;strokeWidth=2;" edge="1" parent="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="120" y="1030" as="sourcePoint" /> + <mxPoint x="-710" y="370" as="targetPoint" /> + <Array as="points"> + <mxPoint x="120" y="1130" /> + <mxPoint x="-780" y="1130" /> + <mxPoint x="-780" y="370" /> + </Array> </mxGeometry> </mxCell> </root> diff --git a/docs/img/OperativeUnit.png b/docs/img/OperativeUnit.png index 64a947ab89b5c179f8cda30834baa893918774d1..1f41efc15da85a8aed34cf72af15abdc8cc5233e 100644 Binary files a/docs/img/OperativeUnit.png and b/docs/img/OperativeUnit.png differ diff --git a/src/hdl/controlUnit.vhd b/src/hdl/controlUnit.vhd new file mode 100644 index 0000000000000000000000000000000000000000..1c4356ddb44318d2cfa4a1a9b7166d3226772cef --- /dev/null +++ b/src/hdl/controlUnit.vhd @@ -0,0 +1,149 @@ +------------------------------------------------------------------------------- +-- Title : controlUnit +-- Project : +------------------------------------------------------------------------------- +-- File : operativeUnit.vhd +-- Author : Jean-Noel BAZIN <jnbazin@pc-disi-026.enst-bretagne.fr> +-- Company : +-- Created : 2018-04-11 +-- Last update: 2019-02-13 +-- Platform : +-- Standard : VHDL'93/02 +------------------------------------------------------------------------------- +-- Description: Control unit of a sequential FIR filter. +------------------------------------------------------------------------------- +-- Copyright (c) 2018 +------------------------------------------------------------------------------- +-- Revisions : +-- Date Version Author Description +-- 2018-04-11 1.0 jnbazin Created +------------------------------------------------------------------------------- + +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; + +entity controlUnit is + + port ( + I_clock : in std_logic; -- global clock + I_reset : in std_logic; -- asynchronous global reset + I_inputSampleValid : in std_logic; -- Control signal to load the input sample in the sample shift register and shift the register + I_processingDone : in std_logic; + O_loadShiftX : out std_logic; + O_loadShiftY : out std_logic; + O_loadShiftZ : out std_logic; -- filtered sample + O_initAddress : out std_logic; -- Control signal to initialize register read address + O_incrAddress : out std_logic; -- Control signal to increment register read address + O_initSum : out std_logic; -- Control signal to initialize the MAC register + O_loadSum : out std_logic; -- Control signal to load the MAC register; + O_loadOutput : out std_logic; + O_FilteredSampleValid : out std_logic; + O_sel_proc : out std_logic_vector (1 downto 0 )-- Data valid signal for filtered sample + ); + +end entity controlUnit; +architecture archi_operativeUnit of controlUnit is + + + type T_state is (WAIT_SAMPLE, STORE_X, PROCESSING_LOOP_Y, STORE_Y, PROCESSING_LOOP_Z_f, PROCESSING_LOOP_Z_b, STORE_Z, PROCESSING_LOOP_R, OUTPUT, WAIT_END_SAMPLE); -- state list + signal SR_presentState : T_state; + signal SR_futurState : T_state; + +begin + +-- initialisation de l'état + process (I_reset,I_clock) is + begin + if I_reset = '1' then -- asynchronous reset (active high) + SR_presentState <= WAIT_SAMPLE ; + elsif rising_edge(I_clock) then -- rising clock edge + SR_presentState <= SR_futurState ; + end if; + end process; + + +-- transition + process (SR_presentState,I_inputSampleValid,I_processingDone) is + begin + case SR_presentState is + when WAIT_SAMPLE => + if I_inputSampleValid = '1' then + SR_futurState <= STORE_X ; + else + SR_futurState <= WAIT_SAMPLE ; + end if; + + when STORE_X => + SR_futurState <= PROCESSING_LOOP_Y ; + + when PROCESSING_LOOP_Y => + if I_processingDone = '1' then + SR_futurState <= STORE_Y ; + else + SR_futurState <= PROCESSING_LOOP_Y ; + end if; + + when STORE_Y => + SR_futurState <= PROCESSING_LOOP_Z_f ; + + when PROCESSING_LOOP_Z_f => + if I_processingDone = '1' then + SR_futurState <= PROCESSING_LOOP_Z_b ; + else + SR_futurState <= PROCESSING_LOOP_Z_f ; + end if; + + when PROCESSING_LOOP_Z_b => + if I_processingDone = '1' then + SR_futurState <= STORE_Z ; + else + SR_futurState <= PROCESSING_LOOP_Z_b ; + end if; + + when STORE_Z => + SR_futurState <= PROCESSING_LOOP_R ; + + when PROCESSING_LOOP_R => + if I_processingDone = '1' then + SR_futurState <= OUTPUT ; + else + SR_futurState <= PROCESSING_LOOP_R ; + end if; + + when OUTPUT => + SR_futurState <= WAIT_END_SAMPLE; + + when WAIT_END_SAMPLE => + if I_inputSampleValid = '0' then + SR_futurState <= WAIT_SAMPLE; + else + SR_futurState <= WAIT_END_SAMPLE ; + end if; + + when others => + SR_futurState <= WAIT_SAMPLE; + end case; + end process; + + + + + O_loadShiftX <= '1' when SR_presentState = STORE_X else '0' ; + O_loadShiftY <= '1' when SR_presentState = STORE_Y else '0' ; + O_loadShiftZ <= '1' when SR_presentState = STORE_Z else '0' ; + O_initAddress <= '1' when SR_presentState = STORE_X or SR_presentState = STORE_Y or SR_presentState = STORE_Z or (SR_presentState = PROCESSING_LOOP_Z_f and I_processingDone='1') else '0' ; + O_incrAddress <= '1' when (SR_presentState = PROCESSING_LOOP_Y or SR_presentState = PROCESSING_LOOP_Z_f or SR_presentState = PROCESSING_LOOP_Z_b or SR_presentState = PROCESSING_LOOP_R) else '0'; + O_initSum <= '1' when SR_presentState = STORE_X or SR_presentState = STORE_Y or SR_presentState = STORE_Z else '0'; + O_loadSum <= '1' when (SR_presentState = PROCESSING_LOOP_Y or SR_presentState = PROCESSING_LOOP_Z_f or SR_presentState = PROCESSING_LOOP_Z_b or SR_presentState = PROCESSING_LOOP_R) else '0' ; + O_loadOutput <= '1' when SR_presentState = OUTPUT or SR_presentState = STORE_Y or SR_presentState = STORE_Z else '0' ; + O_FilteredSampleValid <= '1' when SR_presentState = OUTPUT else '0' ; + O_sel_proc <= "01" when SR_presentState = STORE_Y or SR_presentState = PROCESSING_LOOP_Z_f else + "10" when SR_presentState = PROCESSING_LOOP_Z_b else + "11" when SR_presentState = STORE_Z or SR_presentState = PROCESSING_LOOP_R else + "00"; + + + + +end architecture archi_operativeUnit; diff --git a/src/hdl/firUnit.vhd b/src/hdl/firUnit.vhd new file mode 100644 index 0000000000000000000000000000000000000000..7dd517feecd2eb92397e0c7f3d440f5432bfe421 --- /dev/null +++ b/src/hdl/firUnit.vhd @@ -0,0 +1,124 @@ +------------------------------------------------------------------------------- +-- Title : firUnit +-- Project : +------------------------------------------------------------------------------- +-- File : operativeUnit.vhd +-- Author : Jean-Noel BAZIN <jnbazin@pc-disi-026.enst-bretagne.fr> +-- Company : +-- Created : 2018-04-11 +-- Last update: 2018-04-11 +-- Platform : +-- Standard : VHDL'93/02 +------------------------------------------------------------------------------- +-- Description: 8 bit FIR +------------------------------------------------------------------------------- +-- Copyright (c) 2018 +------------------------------------------------------------------------------- +-- Revisions : +-- Date Version Author Description +-- 2018-04-11 1.0 jnbazin Created +------------------------------------------------------------------------------- + +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; + +entity firUnit is + + port ( + I_clock : in std_logic; -- global clock + I_reset : in std_logic; -- asynchronous global reset + I_inputSample : in std_logic_vector(10 downto 0); -- 11 bit input sample + I_inputSampleValid : in std_logic; + O_filteredSample : out std_logic_vector(10 downto 0); -- filtered sample + O_filteredSampleValid : out std_logic + ); + +end entity firUnit; + +architecture archi_firUnit of firUnit is + + component controlUnit is + port ( + I_clock : in std_logic; + I_reset : in std_logic; + I_inputSampleValid : in std_logic; + I_processingDone : in std_logic; + O_loadShiftX : out std_logic; + O_loadShiftY : out std_logic; + O_loadShiftZ : out std_logic; + O_initAddress : out std_logic; + O_incrAddress : out std_logic; + O_initSum : out std_logic; + O_loadSum : out std_logic; + O_loadOutput : out std_logic; + O_FilteredSampleValid : out std_logic; + O_sel_proc : out std_logic_vector (1 downto 0)); + end component controlUnit; + + component operativeUnit is + port ( + I_clock : in std_logic; + I_reset : in std_logic; + I_inputSample : in std_logic_vector(10 downto 0); + I_loadShiftX : in std_logic; + I_loadShiftY : in std_logic; + I_loadShiftZ : in std_logic; + I_initAddress : in std_logic; + I_incrAddress : in std_logic; + I_initSum : in std_logic; + I_loadSum : in std_logic; + I_loadOutput : in std_logic; + I_sel_proc : in std_logic_vector (1 downto 0 ); + O_processingDone : out std_logic; + O_R : out std_logic_vector(10 downto 0)); + end component operativeUnit; + + signal SC_processingDone : std_logic; + signal SC_loadShiftX : std_logic; + signal SC_loadShiftY : std_logic; + signal SC_loadShiftZ : std_logic; + signal SC_initAddress : std_logic; + signal SC_incrAddress : std_logic; + signal SC_initSum : std_logic; + signal SC_loadSum : std_logic; + signal SC_loadOutput : std_logic; + signal SC_sel_proc : std_logic_vector (1 downto 0); + +begin + + controlUnit_1 : entity work.controlUnit + port map ( + I_clock => I_clock, + I_reset => I_reset, + I_inputSampleValid => I_inputSampleValid, + I_processingDone => SC_processingDone, + O_loadShiftX => SC_loadShiftX, + O_loadShiftY => SC_loadShiftY, + O_loadShiftZ => SC_loadShiftZ, + O_initAddress => SC_initAddress, + O_incrAddress => SC_incrAddress, + O_initSum => SC_initSum, + O_loadSum => SC_loadSum, + O_loadOutput => SC_loadOutput, + O_FilteredSampleValid => O_FilteredSampleValid, + O_sel_proc => SC_sel_proc); + + operativeUnit_1 : entity work.operativeUnit + port map ( + I_clock => I_clock, + I_reset => I_reset, + I_inputSample => I_inputSample, + I_loadShiftX => SC_loadShiftX, + I_loadShiftY => SC_loadShiftY, + I_loadShiftZ => SC_loadShiftZ, + I_initAddress => SC_initAddress, + I_incrAddress => SC_incrAddress, + I_initSum => SC_initSum, + I_loadSum => SC_loadSum, + I_loadOutput => SC_loadOutput, + I_sel_proc => SC_sel_proc, + O_processingDone => SC_processingDone, + O_R => O_filteredSample); + +end architecture archi_firUnit; diff --git a/src/hdl/operativeUnit.vhd b/src/hdl/operativeUnit.vhd new file mode 100644 index 0000000000000000000000000000000000000000..aa634b1d98d8546379fc46d4a3a00d8432e47980 --- /dev/null +++ b/src/hdl/operativeUnit.vhd @@ -0,0 +1,299 @@ +------------------------------------------------------------------------------- +-- Title : operativeUnit +-- Project : +------------------------------------------------------------------------------- +-- File : operativeUnit.vhd +-- Author : Jean-Noel BAZIN <jnbazin@pc-disi-026.enst-bretagne.fr> +-- Company : +-- Created : 2018-04-11 +-- Last update: 2019-02-13 +-- Platform : +-- Standard : VHDL'93/02 +------------------------------------------------------------------------------- +-- Description: Operative unit of a sequential FIR filter. Including shift +-- register for samples, registers for coefficients, a MAC and a register to +-- store the result +------------------------------------------------------------------------------- +-- Copyright (c) 2018 +------------------------------------------------------------------------------- +-- Revisions : +-- Date Version Author Description +-- 2019-02-13 1.1 marzel Update to provide a 16-tap filter and improve +-- the user experience ;) +-- 2018-04-11 1.0 jnbazin Created +-- 2018-04-18 1.0 marzel Modification of SR_Y assignment to a round +-- instead of a trunc +------------------------------------------------------------------------------- + +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; + +entity operativeUnit is + + port ( + I_clock : in std_logic; -- global clock + I_reset : in std_logic; -- asynchronous global reset + I_inputSample : in std_logic_vector(10 downto 0); -- 8 bit input sample + I_loadShiftX : in std_logic; + I_loadShiftY : in std_logic; + I_loadShiftZ : in std_logic; -- Control signal to load the input sample in the sample shift register and shift the register + I_initAddress : in std_logic; -- Control signal to initialize register read address + 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_loadOutput : in std_logic; + I_sel_proc : in std_logic_vector (1 downto 0 ); + O_processingDone : out std_logic; -- Indicate that processing is done + O_R : out std_logic_vector(10 downto 0) -- filtered sample + ); + +end entity operativeUnit; + +architecture arch_operativeUnit of operativeUnit is + type registerFileH is array(0 to 94) of signed(11 downto 0); + type registerFileB is array(0 to 2) of signed(11 downto 0); + type registerFileA is array(0 to 1) of signed(11 downto 0); + type registerFileG is array(0 to 10) of signed(11 downto 0); + + type registerFileX is array(0 to 94) of signed(10 downto 0); + type registerFileY is array(0 to 2) of signed(10 downto 0); + type registerFileZ is array(0 to 10) of signed(10 downto 0); + + signal SR_shiftRegisterX : registerFileX; + signal SR_shiftRegisterY : registerFileY; + signal SR_shiftRegisterZ : registerFileZ; + + signal SR_coefRegisterH : registerFileH; + signal SR_coefRegisterB : registerFileB; + signal SR_coefRegisterA : registerFileA; + signal SR_coefRegisterG : registerFileG; + + -- shift register file used to store and shift input samples + + + signal SC_multOperand1 : signed(10 downto 0); + signal SC_multOperand2 : signed(11 downto 0); + signal SC_MultResult : signed(22 downto 0); -- Result of the multiplication Xi*Hi + signal SC_addResult : signed(29 downto 0); -- result of the accumulation addition + signal SR_sum : signed(29 downto 0); -- Accumulation register + signal SR_R : signed(10 downto 0); -- filtered sample storage register + signal SR_readAddress : std_logic_vector(6 downto 0); -- register files read address + + + +begin + +-- Low-pass filter provided with octave (or Matlab ;)) command +--fir1(15, .001)/sqrt(sum(fir1(15, .001).^2))*2^6 + +-- for i=18:112 printf("to_signed(%d,11),\n", round(fBaseLine(i)*2^10)) endfor + +SR_coefRegisterH <= (to_signed(-1,12), +to_signed(-1,12), +to_signed(-1,12), +to_signed(-1,12), +to_signed(-1,12), +to_signed(-1,12), +to_signed(-2,12), +to_signed(-2,12), +to_signed(-2,12), +to_signed(-3,12), +to_signed(-3,12), +to_signed(-3,12), +to_signed(-4,12), +to_signed(-4,12), +to_signed(-5,12), +to_signed(-5,12), +to_signed(-6,12), +to_signed(-6,12), +to_signed(-7,12), +to_signed(-7,12), +to_signed(-8,12), +to_signed(-8,12), +to_signed(-9,12), +to_signed(-10,12), +to_signed(-10,12), +to_signed(-11,12), +to_signed(-11,12), +to_signed(-12,12), +to_signed(-13,12), +to_signed(-13,12), +to_signed(-14,12), +to_signed(-14,12), +to_signed(-15,12), +to_signed(-15,12), +to_signed(-16,12), +to_signed(-16,12), +to_signed(-17,12), +to_signed(-17,12), +to_signed(-18,12), +to_signed(-18,12), +to_signed(-18,12), +to_signed(-19,12), +to_signed(-19,12), +to_signed(-19,12), +to_signed(-19,12), +to_signed(-19,12), +to_signed(-19,12), +to_signed(1004,12), +to_signed(-19,12), +to_signed(-19,12), +to_signed(-19,12), +to_signed(-19,12), +to_signed(-19,12), +to_signed(-19,12), +to_signed(-18,12), +to_signed(-18,12), +to_signed(-18,12), +to_signed(-17,12), +to_signed(-17,12), +to_signed(-16,12), +to_signed(-16,12), +to_signed(-15,12), +to_signed(-15,12), +to_signed(-14,12), +to_signed(-14,12), +to_signed(-13,12), +to_signed(-13,12), +to_signed(-12,12), +to_signed(-11,12), +to_signed(-11,12), +to_signed(-10,12), +to_signed(-10,12), +to_signed(-9, 12), +to_signed(-8, 12), +to_signed(-8, 12), +to_signed(-7, 12), +to_signed(-7, 12), +to_signed(-6, 12), +to_signed(-6, 12), +to_signed(-5, 12), +to_signed(-5, 12), +to_signed(-4, 12), +to_signed(-4, 12), +to_signed(-3, 12), +to_signed(-3, 12), +to_signed(-3, 12), +to_signed(-2, 12), +to_signed(-2, 12), +to_signed(-2, 12), +to_signed(-1, 12), +to_signed(-1, 12), +to_signed(-1, 12), +to_signed(-1, 12), +to_signed(-1, 12), +to_signed(-1, 12)); + +SR_coefRegisterA <= (to_signed(-1554,12), to_signed(897,12)); +SR_coefRegisterB <= (to_signed(961,12), to_signed(-1554,12), to_signed(961,12)); + +SR_coefRegisterG <= (to_signed(-119,12), +to_signed(122,12), +to_signed(149,12), +to_signed(191,12), +to_signed(226,12), +to_signed(239,12), +to_signed(226,12), +to_signed(191,12), +to_signed(149,12), +to_signed(122,12), +to_signed(-119,12)); + + + shiftX : process (I_clock,I_reset) is + begin -- process shift + if I_reset = '1' then -- asynchronous reset (active high) + SR_shiftRegisterX <= (others => (others => '0')); + elsif rising_edge (I_clock) then + if I_loadShiftX ='1' then + SR_shiftRegisterX(0 to 93) <= SR_shiftRegisterX(1 to 94); + SR_shiftRegisterX(94) <= signed(I_inputSample); + end if; + end if; + end process shiftX; + + shiftY : process (I_clock,I_reset) is + begin -- process shift + if I_reset = '1' then -- asynchronous reset (active high) + SR_shiftRegisterY <= (others => (others => '0')); + elsif rising_edge (I_clock) then + if I_loadShiftY ='1' then + SR_shiftRegisterY(0 to 1) <= SR_shiftRegisterY(1 to 2); + SR_shiftRegisterY(2) <= SR_R; + end if; + end if; + end process shiftY; + + shiftZ : process (I_clock,I_reset) is + begin -- process shift + if I_reset = '1' then -- asynchronous reset (active high) + SR_shiftRegisterZ <= (others => (others => '0')); + elsif rising_edge (I_clock) then + if I_loadShiftZ ='1' then + SR_shiftRegisterZ(0 to 9) <= SR_shiftRegisterZ(1 to 10); + SR_shiftRegisterZ(10) <= SR_R; + end if; + end if; + end process shiftZ; + + incr_address : process (I_reset,I_clock) is + begin + if I_reset = '1' then -- asynchronous reset (active high) + SR_readAddress <= (others => '0'); + elsif rising_edge (I_clock) then + if I_incrAddress ='1' then + SR_readAddress <= std_logic_vector(unsigned(SR_readAddress) +1); + elsif I_initAddress ='1' then + SR_readAddress <= (others => '0'); + end if; + end if; + end process incr_address; + + O_processingDone <= '1' when (SR_readAddress = std_logic_vector(to_unsigned(93,7)) and I_sel_proc= "00") + OR (SR_readAddress = std_logic_vector(to_unsigned(1,7)) and I_sel_proc= "01") + OR (SR_readAddress = std_logic_vector(to_unsigned(0,7)) and I_sel_proc= "10") + OR (SR_readAddress = std_logic_vector(to_unsigned(9,7)) and I_sel_proc= "11") else '0'; + + + SC_multOperand1 <= SR_shiftRegisterX(to_integer(unsigned(SR_readAddress))) when I_sel_proc= "00" else + SR_shiftRegisterY(to_integer(unsigned(SR_readAddress))) when I_sel_proc= "01" else + SR_shiftRegisterZ(to_integer(unsigned(SR_readAddress))); -- 11 bits + SC_multOperand2 <= SR_coefRegisterH(to_integer(unsigned(SR_readAddress))) when I_sel_proc= "00" else + SR_coefRegisterB(to_integer(unsigned(SR_readAddress))) when I_sel_proc= "01" else + - SR_coefRegisterA(to_integer(unsigned(SR_readAddress))) when I_sel_proc= "10" else + SR_coefRegisterG(to_integer(unsigned(SR_readAddress))); -- 11 bits + SC_MultResult <= SC_multOperand1*SC_multOperand2 ; -- 23 bits + SC_addResult <= resize(SC_MultResult, SC_addResult'length) + SR_sum; + + sum_acc : process (I_reset,I_clock) is + begin + if I_reset = '1' then -- asynchronous reset (active high) + SR_sum <= (others => '0'); + elsif rising_edge (I_clock) then + if I_loadSum ='1' then + SR_sum <= SC_addResult; + elsif I_initSum ='1' then + SR_sum <= (others => '0'); + end if; + end if; + end process sum_acc; + + + store_result : process (I_clock) is + begin + if rising_edge (I_clock) then + if I_loadOutput ='1' then + if SR_sum(9)= '1' then + SR_R <= SR_sum(20 downto 10)+"00000001"; + else + SR_R <= SR_sum(20 downto 10); + end if; + end if; + end if; + + end process store_result; + + O_R <= std_logic_vector(SR_R); + +end architecture arch_operativeUnit;