diff --git a/docs/img/FSM.drawio b/docs/img/FSM.drawio
index bd839a9b01be6c20eb7b6840fcbab9fd73e2336d..99d7eb328651c1c52020d0df7e39679ef199adbb 100644
--- a/docs/img/FSM.drawio
+++ b/docs/img/FSM.drawio
@@ -1,93 +1,84 @@
-<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">
+<mxfile host="app.diagrams.net" agent="Mozilla/5.0 (X11; Linux x86_64; rv:135.0) Gecko/20100101 Firefox/135.0" version="26.1.3">
   <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">
+    <mxGraphModel dx="2170" dy="1977" 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">
+        <mxCell id="bw7OO0sNot4gaAuLXok9-1" value="" style="ellipse;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
           <mxGeometry x="240" y="40" width="160" height="80" as="geometry" />
         </mxCell>
-        <mxCell id="bw7OO0sNot4gaAuLXok9-2" value="&lt;font style=&quot;font-size: 21px;&quot; face=&quot;Ubuntu Mono&quot;&gt;Wait Sample&lt;/font&gt;" style="ellipse;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
+        <mxCell id="bw7OO0sNot4gaAuLXok9-2" value="&lt;font style=&quot;font-size: 21px;&quot; face=&quot;Ubuntu Mono&quot;&gt;Wait Sample&lt;/font&gt;" style="ellipse;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="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">
+        <mxCell id="bw7OO0sNot4gaAuLXok9-3" value="Store" style="ellipse;whiteSpace=wrap;html=1;fontSize=21;fontFamily=Ubuntu Mono;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
           <mxGeometry x="240" y="160" width="160" height="80" as="geometry" />
         </mxCell>
-        <mxCell id="bw7OO0sNot4gaAuLXok9-5" value="Processing&lt;br&gt;Loop" style="ellipse;whiteSpace=wrap;html=1;fontSize=21;fontFamily=Ubuntu Mono;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
+        <mxCell id="bw7OO0sNot4gaAuLXok9-5" value="Processing&lt;br&gt;Loop 1" style="ellipse;whiteSpace=wrap;html=1;fontSize=21;fontFamily=Ubuntu Mono;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="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">
+        <mxCell id="bw7OO0sNot4gaAuLXok9-6" value="Output 1" style="ellipse;whiteSpace=wrap;html=1;fontSize=21;fontFamily=Ubuntu Mono;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
           <mxGeometry x="240" y="400" width="160" height="80" as="geometry" />
         </mxCell>
-        <mxCell id="bw7OO0sNot4gaAuLXok9-7" value="Wait End&lt;br&gt;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 id="bw7OO0sNot4gaAuLXok9-7" value="Wait End&lt;br&gt;Sample" style="ellipse;whiteSpace=wrap;html=1;fontSize=21;fontFamily=Ubuntu Mono;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
+          <mxGeometry x="240" y="1262" 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">
+        <mxCell id="bw7OO0sNot4gaAuLXok9-8" value="" style="endArrow=block;html=1;rounded=0;endFill=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" parent="1" source="bw7OO0sNot4gaAuLXok9-1" target="bw7OO0sNot4gaAuLXok9-3" edge="1">
           <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">
+        <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;" parent="1" target="bw7OO0sNot4gaAuLXok9-5" edge="1">
           <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">
+        <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;" parent="1" target="bw7OO0sNot4gaAuLXok9-6" edge="1">
           <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">
+        <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;" parent="1" source="bw7OO0sNot4gaAuLXok9-6" target="0pIHDGSdodyyA8C9MTDx-32" edge="1">
           <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" />
+            <mxPoint x="320" y="521" 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">
+        <mxCell id="bw7OO0sNot4gaAuLXok9-12" value="" style="curved=1;endArrow=block;html=1;rounded=0;entryX=0;entryY=0;entryDx=0;entryDy=0;endFill=1;exitX=0.275;exitY=0.975;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" source="bw7OO0sNot4gaAuLXok9-7" target="bw7OO0sNot4gaAuLXok9-1" edge="1">
           <mxGeometry width="50" height="50" relative="1" as="geometry">
-            <mxPoint x="510" y="320" as="sourcePoint" />
+            <mxPoint x="217" y="599" as="sourcePoint" />
             <mxPoint x="560" y="270" as="targetPoint" />
             <Array as="points">
-              <mxPoint x="320" y="670" />
-              <mxPoint x="170" y="640" />
+              <mxPoint x="237" y="1371" />
+              <mxPoint x="185" y="1300" />
               <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">
+        <mxCell id="bw7OO0sNot4gaAuLXok9-14" value="" style="endArrow=none;html=1;rounded=0;" parent="1" edge="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="&lt;font style=&quot;font-size: 15px;&quot; face=&quot;Ubuntu Mono&quot;&gt;Condition 1&lt;/font&gt;" style="edgeLabel;html=1;align=left;verticalAlign=middle;resizable=0;points=[];labelBackgroundColor=none;labelBorderColor=none;fontStyle=2" vertex="1" connectable="0" parent="bw7OO0sNot4gaAuLXok9-14">
+        <mxCell id="bw7OO0sNot4gaAuLXok9-17" value="&lt;font face=&quot;Ubuntu Mono&quot;&gt;I_inputSampleValid = 1&lt;/font&gt;" style="edgeLabel;html=1;align=left;verticalAlign=middle;resizable=0;points=[];labelBackgroundColor=none;labelBorderColor=none;fontStyle=2" parent="bw7OO0sNot4gaAuLXok9-14" vertex="1" connectable="0">
           <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">
+        <mxCell id="bw7OO0sNot4gaAuLXok9-15" value="" style="endArrow=none;html=1;rounded=0;" parent="1" edge="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="&lt;font style=&quot;font-size: 15px;&quot; face=&quot;Ubuntu Mono&quot;&gt;Condition 2&lt;/font&gt;" style="edgeLabel;html=1;align=left;verticalAlign=middle;resizable=0;points=[];labelBackgroundColor=none;labelBorderColor=none;fontStyle=2" vertex="1" connectable="0" parent="1">
+        <mxCell id="bw7OO0sNot4gaAuLXok9-18" value="&lt;font face=&quot;Ubuntu Mono&quot;&gt;I_processingDone = 1&lt;/font&gt;" 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="340.00279069767436" y="380" as="geometry" />
         </mxCell>
-        <mxCell id="bw7OO0sNot4gaAuLXok9-19" value="&lt;font style=&quot;font-size: 15px;&quot; face=&quot;Ubuntu Mono&quot;&gt;Condition 3&lt;/font&gt;" 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">
+        <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;" parent="1" target="bw7OO0sNot4gaAuLXok9-1" edge="1">
           <mxGeometry width="50" height="50" relative="1" as="geometry">
             <mxPoint x="350" y="-10" as="sourcePoint" />
             <mxPoint x="460" y="90" as="targetPoint" />
@@ -96,54 +87,210 @@
             </Array>
           </mxGeometry>
         </mxCell>
-        <mxCell id="bw7OO0sNot4gaAuLXok9-21" value="&lt;font face=&quot;Ubuntu Mono&quot;&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;Rst = &#39;1&#39;&lt;/span&gt;&lt;/font&gt;" style="edgeLabel;html=1;align=left;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="1">
+        <mxCell id="bw7OO0sNot4gaAuLXok9-21" value="&lt;font face=&quot;Ubuntu Mono&quot;&gt;&lt;span style=&quot;font-size: 15px;&quot;&gt;Rst = &#39;1&#39;&lt;/span&gt;&lt;/font&gt;" style="edgeLabel;html=1;align=left;verticalAlign=middle;resizable=0;points=[];" parent="1" vertex="1" connectable="0">
           <mxGeometry x="350.00279069767436" y="-10" as="geometry" />
         </mxCell>
-        <mxCell id="bw7OO0sNot4gaAuLXok9-23" value="&lt;font style=&quot;font-size: 15px;&quot; face=&quot;Ubuntu Mono&quot;&gt;LoadShift = &#39;0&#39;&lt;br&gt;InitAddress = &#39;0&#39;&lt;br&gt;IncrAddress = &#39;0&#39;&lt;br&gt;InitSum = &#39;0&#39;&lt;br&gt;LoadSum = &#39;0&#39;&lt;br&gt;LoadOutput = &#39;1&#39;&lt;br&gt;&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=left;fontStyle=2;container=0;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;" vertex="1" parent="1">
+        <mxCell id="bw7OO0sNot4gaAuLXok9-23" value="&lt;font style=&quot;font-size: 15px;&quot; face=&quot;Ubuntu Mono&quot;&gt;LoadShift_2 = 1&lt;br&gt;&lt;/font&gt;&lt;div&gt;&lt;font style=&quot;font-size: 15px;&quot; face=&quot;Ubuntu Mono&quot;&gt;InitAddress = 1&lt;br&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font style=&quot;font-size: 15px;&quot; face=&quot;Ubuntu Mono&quot;&gt;InitSum = 1&lt;/font&gt;&lt;/div&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=left;fontStyle=2;container=0;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;" parent="1" vertex="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">
+        <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;" parent="1" edge="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="&lt;font style=&quot;font-size: 15px;&quot; face=&quot;Ubuntu Mono&quot;&gt;LoadShift =&amp;nbsp;&lt;br&gt;InitAddress =&amp;nbsp;&lt;br&gt;IncrAddress =&amp;nbsp;&lt;br&gt;InitSum =&amp;nbsp;&lt;br&gt;LoadSum =&amp;nbsp;&lt;br&gt;LoadOutput =&amp;nbsp;&lt;br&gt;&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=left;fontStyle=2;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;" vertex="1" parent="1">
+        <mxCell id="bw7OO0sNot4gaAuLXok9-33" value="" style="rounded=0;whiteSpace=wrap;html=1;align=left;fontStyle=2;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;" parent="1" vertex="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">
+        <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;" parent="1" edge="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="&lt;font style=&quot;font-size: 15px;&quot; face=&quot;Ubuntu Mono&quot;&gt;LoadShift =&amp;nbsp;&lt;br&gt;InitAddress =&amp;nbsp;&lt;br&gt;IncrAddress =&amp;nbsp;&lt;br&gt;InitSum =&amp;nbsp;&lt;br&gt;LoadSum =&amp;nbsp;&lt;br&gt;LoadOutput =&amp;nbsp;&lt;br&gt;&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=left;fontStyle=2;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;" vertex="1" parent="1">
+        <mxCell id="bw7OO0sNot4gaAuLXok9-30" value="&lt;font style=&quot;font-size: 15px;&quot; face=&quot;Ubuntu Mono&quot;&gt;LoadShift_1 = 1&lt;br&gt;InitAddress = 1&lt;br&gt;&lt;/font&gt;&lt;div&gt;&lt;font style=&quot;font-size: 15px;&quot; face=&quot;Ubuntu Mono&quot;&gt;InitSum = 1&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font style=&quot;font-size: 15px;&quot; face=&quot;Ubuntu Mono&quot;&gt;&lt;br&gt;&lt;/font&gt;&lt;/div&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=left;fontStyle=2;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;" parent="1" vertex="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">
+        <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;" parent="1" edge="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="&lt;font style=&quot;font-size: 15px;&quot; face=&quot;Ubuntu Mono&quot;&gt;LoadShift =&amp;nbsp;&lt;br&gt;InitAddress =&amp;nbsp;&lt;br&gt;IncrAddress =&amp;nbsp;&lt;br&gt;InitSum =&amp;nbsp;&lt;br&gt;LoadSum =&amp;nbsp;&lt;br&gt;LoadOutput =&amp;nbsp;&lt;br&gt;&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=left;fontStyle=2;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;" vertex="1" parent="1">
+        <mxCell id="bw7OO0sNot4gaAuLXok9-25" value="&lt;font style=&quot;font-size: 15px;&quot; face=&quot;Ubuntu Mono&quot;&gt;IncrAddress = 1&lt;br&gt;&lt;/font&gt;&lt;div&gt;&lt;font style=&quot;font-size: 15px;&quot; face=&quot;Ubuntu Mono&quot;&gt;LoadSum = 1&lt;br&gt;&lt;/font&gt;&lt;/div&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=left;fontStyle=2;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;" parent="1" vertex="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">
+        <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;" parent="1" edge="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="&lt;font style=&quot;font-size: 15px;&quot; face=&quot;Ubuntu Mono&quot;&gt;LoadShift =&amp;nbsp;&lt;br&gt;InitAddress =&amp;nbsp;&lt;br&gt;IncrAddress =&amp;nbsp;&lt;br&gt;InitSum =&amp;nbsp;&lt;br&gt;LoadSum =&amp;nbsp;&lt;br&gt;LoadOutput =&amp;nbsp;&lt;br&gt;&lt;/font&gt;" 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 id="bw7OO0sNot4gaAuLXok9-36" value="" style="rounded=0;whiteSpace=wrap;html=1;align=left;fontStyle=2;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;" parent="1" vertex="1">
+          <mxGeometry x="480" y="1242" 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;" parent="1" edge="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="400" y="1301.81" as="sourcePoint" />
+            <mxPoint x="480" y="1301.81" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="0pIHDGSdodyyA8C9MTDx-32" value="Processing&lt;br&gt;Loop 2.1" style="ellipse;whiteSpace=wrap;html=1;fontSize=21;fontFamily=Ubuntu Mono;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
+          <mxGeometry x="240" y="526" width="160" height="80" as="geometry" />
+        </mxCell>
+        <mxCell id="0pIHDGSdodyyA8C9MTDx-33" value="Output 2" style="ellipse;whiteSpace=wrap;html=1;fontSize=21;fontFamily=Ubuntu Mono;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
+          <mxGeometry x="240" y="897" width="160" height="80" as="geometry" />
+        </mxCell>
+        <mxCell id="0pIHDGSdodyyA8C9MTDx-35" 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="0pIHDGSdodyyA8C9MTDx-33" edge="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="319.76" y="606" as="sourcePoint" />
+            <mxPoint x="320" y="646" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="0pIHDGSdodyyA8C9MTDx-38" value="" style="endArrow=none;html=1;rounded=0;" parent="1" edge="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="300" y="877" as="sourcePoint" />
+            <mxPoint x="340" y="877" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="0pIHDGSdodyyA8C9MTDx-39" value="&lt;font face=&quot;Ubuntu Mono&quot;&gt;I_processingDone = 1&lt;/font&gt;" 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="340.00279069767436" y="877" as="geometry" />
+        </mxCell>
+        <mxCell id="0pIHDGSdodyyA8C9MTDx-40" value="&lt;font style=&quot;font-size: 15px;&quot; face=&quot;Ubuntu Mono&quot;&gt;LoadShift_3 = 1&lt;br&gt;&lt;/font&gt;&lt;div&gt;&lt;font style=&quot;font-size: 15px;&quot; face=&quot;Ubuntu Mono&quot;&gt;InitAddress = 1&lt;br&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font style=&quot;font-size: 15px;&quot; face=&quot;Ubuntu Mono&quot;&gt;InitSum = 1&lt;/font&gt;&lt;/div&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=left;fontStyle=2;container=0;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;" parent="1" vertex="1">
+          <mxGeometry x="480" y="877" width="240" height="110" as="geometry" />
+        </mxCell>
+        <mxCell id="0pIHDGSdodyyA8C9MTDx-41" 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="400" y="936.77" as="sourcePoint" />
+            <mxPoint x="480" y="936.77" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="0pIHDGSdodyyA8C9MTDx-44" value="&lt;font style=&quot;font-size: 15px;&quot; face=&quot;Ubuntu Mono&quot;&gt;IncrAddress = 1 &lt;br&gt;LoadSum = 1&lt;br&gt;&lt;/font&gt;&lt;div&gt;&lt;font style=&quot;font-size: 15px;&quot; face=&quot;Ubuntu Mono&quot;&gt;coef_select = 01&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=left;fontStyle=2;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;" parent="1" vertex="1">
+          <mxGeometry x="480" y="506" width="240" height="110" as="geometry" />
+        </mxCell>
+        <mxCell id="0pIHDGSdodyyA8C9MTDx-45" 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="400" y="565.81" as="sourcePoint" />
+            <mxPoint x="480" y="565.81" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="0pIHDGSdodyyA8C9MTDx-47" value="Processing&lt;br&gt;Loop 3" style="ellipse;whiteSpace=wrap;html=1;fontSize=21;fontFamily=Ubuntu Mono;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
+          <mxGeometry x="240" y="1021" width="160" height="80" as="geometry" />
+        </mxCell>
+        <mxCell id="0pIHDGSdodyyA8C9MTDx-48" value="Output 3" style="ellipse;whiteSpace=wrap;html=1;fontSize=21;fontFamily=Ubuntu Mono;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
+          <mxGeometry x="240" y="1141" width="160" height="80" as="geometry" />
+        </mxCell>
+        <mxCell id="0pIHDGSdodyyA8C9MTDx-50" 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="0pIHDGSdodyyA8C9MTDx-48" edge="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="319.76" y="1101" as="sourcePoint" />
+            <mxPoint x="320" y="1141" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="0pIHDGSdodyyA8C9MTDx-53" value="" style="endArrow=none;html=1;rounded=0;" parent="1" edge="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="300" y="1121" as="sourcePoint" />
+            <mxPoint x="340" y="1121" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="0pIHDGSdodyyA8C9MTDx-54" value="&lt;font face=&quot;Ubuntu Mono&quot;&gt;I_processingDone = 1&lt;/font&gt;" 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="340.00279069767436" y="1121" as="geometry" />
+        </mxCell>
+        <mxCell id="0pIHDGSdodyyA8C9MTDx-55" value="&lt;font style=&quot;font-size: 15px;&quot; face=&quot;Ubuntu Mono&quot;&gt;LoadOutput = 1&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=left;fontStyle=2;container=0;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;" parent="1" vertex="1">
+          <mxGeometry x="480" y="1121" width="240" height="110" as="geometry" />
+        </mxCell>
+        <mxCell id="0pIHDGSdodyyA8C9MTDx-56" 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="400" y="1180.77" as="sourcePoint" />
+            <mxPoint x="480" y="1180.77" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="0pIHDGSdodyyA8C9MTDx-59" value="&lt;font style=&quot;font-size: 15px;&quot; face=&quot;Ubuntu Mono&quot;&gt;IncrAddress = 1 &lt;br&gt;LoadSum = 1&lt;br&gt;&lt;/font&gt;&lt;div&gt;&lt;font style=&quot;font-size: 15px;&quot; face=&quot;Ubuntu Mono&quot;&gt;coef_select = 11&lt;/font&gt;&lt;/div&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=left;fontStyle=2;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;" parent="1" vertex="1">
+          <mxGeometry x="480" y="1001" width="240" height="110" as="geometry" />
+        </mxCell>
+        <mxCell id="0pIHDGSdodyyA8C9MTDx-60" 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="400" y="1060.81" as="sourcePoint" />
+            <mxPoint x="480" y="1060.81" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="0pIHDGSdodyyA8C9MTDx-61" value="" style="endArrow=block;html=1;rounded=0;endFill=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" parent="1" source="0pIHDGSdodyyA8C9MTDx-33" target="0pIHDGSdodyyA8C9MTDx-47" edge="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="329.76" y="862" as="sourcePoint" />
+            <mxPoint x="320" y="1129" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="0pIHDGSdodyyA8C9MTDx-62" value="Processing&lt;br&gt;Loop 2.2" style="ellipse;whiteSpace=wrap;html=1;fontSize=21;fontFamily=Ubuntu Mono;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
+          <mxGeometry x="240" y="771" width="160" height="80" as="geometry" />
+        </mxCell>
+        <mxCell id="0pIHDGSdodyyA8C9MTDx-63" 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="0pIHDGSdodyyA8C9MTDx-62" edge="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="319.76" y="606" as="sourcePoint" />
+            <mxPoint x="319.76" y="686" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="0pIHDGSdodyyA8C9MTDx-67" value="&lt;font style=&quot;font-size: 15px;&quot; face=&quot;Ubuntu Mono&quot;&gt;IncrAddress = 1 &lt;br&gt;LoadSum = 1&lt;br&gt;&lt;/font&gt;&lt;div&gt;&lt;font style=&quot;font-size: 15px;&quot; face=&quot;Ubuntu Mono&quot;&gt;coef_select = 10&lt;/font&gt;&lt;/div&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=left;fontStyle=2;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;" parent="1" vertex="1">
+          <mxGeometry x="480" y="751" width="240" height="110" as="geometry" />
+        </mxCell>
+        <mxCell id="0pIHDGSdodyyA8C9MTDx-68" 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="400" y="810.81" as="sourcePoint" />
+            <mxPoint x="480" y="810.81" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="0pIHDGSdodyyA8C9MTDx-76" value="Address reset" style="ellipse;whiteSpace=wrap;html=1;fontSize=21;fontFamily=Ubuntu Mono;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
+          <mxGeometry x="240" y="651" width="160" height="80" as="geometry" />
+        </mxCell>
+        <mxCell id="0pIHDGSdodyyA8C9MTDx-77" 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="0pIHDGSdodyyA8C9MTDx-76" edge="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="319.76" y="611" as="sourcePoint" />
+            <mxPoint x="319.76" y="691" as="targetPoint" />
+          </mxGeometry>
         </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">
+        <mxCell id="0pIHDGSdodyyA8C9MTDx-78" 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" edge="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" />
+            <mxPoint x="319.76" y="731" as="sourcePoint" />
+            <mxPoint x="320" y="771" as="targetPoint" />
           </mxGeometry>
         </mxCell>
+        <mxCell id="0pIHDGSdodyyA8C9MTDx-81" value="&lt;font style=&quot;font-size: 15px;&quot; face=&quot;Ubuntu Mono&quot;&gt;InitAddress = 1&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=left;fontStyle=2;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;" parent="1" vertex="1">
+          <mxGeometry x="480" y="631" width="240" height="110" as="geometry" />
+        </mxCell>
+        <mxCell id="0pIHDGSdodyyA8C9MTDx-82" 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="400" y="690.81" as="sourcePoint" />
+            <mxPoint x="480" y="690.81" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="0pIHDGSdodyyA8C9MTDx-83" 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="0pIHDGSdodyyA8C9MTDx-48" target="bw7OO0sNot4gaAuLXok9-7" edge="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="329.76" y="991" as="sourcePoint" />
+            <mxPoint x="330" y="1031" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="0pIHDGSdodyyA8C9MTDx-84" value="&lt;div&gt;&lt;font style=&quot;font-size: 15px;&quot; face=&quot;Ubuntu Mono&quot;&gt;LoadShift_1 = 0&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font style=&quot;font-size: 15px;&quot; face=&quot;Ubuntu Mono&quot;&gt;LoadShift_2 = 0&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font style=&quot;font-size: 15px;&quot; face=&quot;Ubuntu Mono&quot;&gt;LoadShift_3 = 0&lt;/font&gt;&lt;/div&gt;&lt;font style=&quot;font-size: 15px;&quot; face=&quot;Ubuntu Mono&quot;&gt;InitAddress = 0&lt;br&gt;IncrAddress = 0&lt;/font&gt;&lt;div&gt;&lt;font style=&quot;font-size: 15px;&quot; face=&quot;Ubuntu Mono&quot;&gt;InitSum = 0&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font style=&quot;font-size: 15px;&quot; face=&quot;Ubuntu Mono&quot;&gt;LoadSum = 0&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font style=&quot;font-size: 15px;&quot; face=&quot;Ubuntu Mono&quot;&gt;LoadOutput = 0&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font style=&quot;font-size: 15px;&quot; face=&quot;Ubuntu Mono&quot;&gt;coef_select[0:1] = 00&lt;/font&gt;&lt;/div&gt;" style="rounded=0;whiteSpace=wrap;html=1;align=left;fontStyle=2;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;" parent="1" vertex="1">
+          <mxGeometry x="-40" y="30" width="197" height="230" as="geometry" />
+        </mxCell>
+        <mxCell id="BXdns4b3WUyTXZ1IiLj_-1" value="&lt;div&gt;&lt;font face=&quot;Ubuntu Mono&quot;&gt;I_inputSampleValid = 0&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font face=&quot;Ubuntu Mono&quot;&gt;&lt;br&gt;&lt;/font&gt;&lt;/div&gt;" style="text;whiteSpace=wrap;html=1;" parent="1" vertex="1">
+          <mxGeometry x="20" y="1286" width="176" height="37" as="geometry" />
+        </mxCell>
+        <mxCell id="BXdns4b3WUyTXZ1IiLj_-2" value="" style="endArrow=none;html=1;rounded=0;" parent="1" edge="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="175" y="1299" as="sourcePoint" />
+            <mxPoint x="215" y="1299" as="targetPoint" />
+            <Array as="points">
+              <mxPoint x="177" y="1299" />
+            </Array>
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="BXdns4b3WUyTXZ1IiLj_-3" value="" style="endArrow=none;html=1;rounded=0;" parent="1" edge="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="302" y="628" as="sourcePoint" />
+            <mxPoint x="342" y="628" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="BXdns4b3WUyTXZ1IiLj_-4" value="&lt;font face=&quot;Ubuntu Mono&quot;&gt;I_processingDone = 1&lt;/font&gt;" 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="342.00279069767436" y="628" as="geometry" />
+        </mxCell>
       </root>
     </mxGraphModel>
   </diagram>
diff --git a/docs/img/FSM.png b/docs/img/FSM.png
index 7f6db881fff5cdfb9351c0348dfec49ff082516d..ce3e56e224739d61ccb8245a4121e76dc23d728c 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..92b94638ef85556e0e5c7b27b3bacb30938901cf 100644
--- a/docs/img/OperativeUnit.drawio
+++ b/docs/img/OperativeUnit.drawio
@@ -1,274 +1,279 @@
-<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">
+<mxfile host="app.diagrams.net" agent="Mozilla/5.0 (X11; Linux x86_64; rv:135.0) Gecko/20100101 Firefox/135.0" version="26.1.3">
   <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">
+    <mxGraphModel dx="1930" dy="1977" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1169" pageHeight="827" math="0" shadow="0">
       <root>
         <mxCell id="0" />
         <mxCell id="1" parent="0" />
-        <mxCell id="uwrRxOYGmB2LabIKb8In-1" value="&lt;font face=&quot;Ubuntu Mono&quot;&gt;Address&lt;br style=&quot;font-size: 17px;&quot;&gt;Generator&lt;/font&gt;" 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="uwrRxOYGmB2LabIKb8In-1" value="&lt;font face=&quot;Ubuntu Mono&quot;&gt;Address&lt;br style=&quot;font-size: 17px;&quot;&gt;Generator&lt;/font&gt;" style="rounded=0;whiteSpace=wrap;html=1;fontSize=17;fillColor=#dae8fc;strokeColor=#6c8ebf;strokeWidth=2;" parent="1" vertex="1">
+          <mxGeometry x="340" y="-60" 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="uwrRxOYGmB2LabIKb8In-2" value="" style="triangle;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
+          <mxGeometry x="340" 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="uwrRxOYGmB2LabIKb8In-3" value="" style="endArrow=block;html=1;rounded=0;entryX=0;entryY=0.25;entryDx=0;entryDy=0;endFill=1;" parent="1" target="uwrRxOYGmB2LabIKb8In-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="300" y="-40" as="sourcePoint" />
+            <mxPoint x="550" y="60" 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="uwrRxOYGmB2LabIKb8In-4" value="I_initAddress" style="edgeLabel;html=1;align=right;verticalAlign=middle;resizable=0;points=[];fontFamily=Ubuntu Mono;fontSize=14;fontStyle=0" parent="uwrRxOYGmB2LabIKb8In-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="uwrRxOYGmB2LabIKb8In-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="300" y="-20.17" as="sourcePoint" />
+            <mxPoint x="340" y="-20.17" 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="uwrRxOYGmB2LabIKb8In-6" value="I_incrAddress" style="edgeLabel;html=1;align=right;verticalAlign=middle;resizable=0;points=[];fontFamily=Ubuntu Mono;fontSize=14;fontStyle=0" parent="uwrRxOYGmB2LabIKb8In-5" vertex="1" connectable="0">
           <mxGeometry x="0.45" y="1" relative="1" as="geometry">
             <mxPoint x="-29" 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="uwrRxOYGmB2LabIKb8In-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="460" y="-40" as="sourcePoint" />
+            <mxPoint x="500" y="-40" 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="uwrRxOYGmB2LabIKb8In-8" value="O_processingDone" style="edgeLabel;html=1;align=left;verticalAlign=middle;resizable=0;points=[];fontFamily=Ubuntu Mono;fontSize=14;fontStyle=0" parent="uwrRxOYGmB2LabIKb8In-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="uwrRxOYGmB2LabIKb8In-9" value="Samples" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;strokeWidth=2;fontFamily=Ubuntu Mono;fontSize=17;" parent="1" vertex="1">
+          <mxGeometry x="160" y="100" width="120" height="280" as="geometry" />
         </mxCell>
-        <mxCell id="uwrRxOYGmB2LabIKb8In-11" value="" style="endArrow=none;html=1;rounded=0;" edge="1" parent="1">
+        <mxCell id="uwrRxOYGmB2LabIKb8In-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="280" as="sourcePoint" />
-            <mxPoint x="280" y="280" as="targetPoint" />
+            <mxPoint x="160" y="180" as="sourcePoint" />
+            <mxPoint x="280" y="180" as="targetPoint" />
           </mxGeometry>
         </mxCell>
-        <mxCell id="uwrRxOYGmB2LabIKb8In-12" value="" style="endArrow=none;html=1;rounded=0;" edge="1" parent="1">
+        <mxCell id="uwrRxOYGmB2LabIKb8In-12" 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="160" y="140" as="sourcePoint" />
+            <mxPoint x="280" y="140" as="targetPoint" />
           </mxGeometry>
         </mxCell>
-        <mxCell id="uwrRxOYGmB2LabIKb8In-13" value="" style="endArrow=none;html=1;rounded=0;" edge="1" parent="1">
+        <mxCell id="uwrRxOYGmB2LabIKb8In-13" 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="440" as="sourcePoint" />
-            <mxPoint x="280" y="440" as="targetPoint" />
+            <mxPoint x="160" y="340" as="sourcePoint" />
+            <mxPoint x="280" y="340" as="targetPoint" />
           </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 id="uwrRxOYGmB2LabIKb8In-14" value="" style="shape=trapezoid;perimeter=trapezoidPerimeter;whiteSpace=wrap;html=1;fixedSize=1;rotation=90;strokeWidth=2;" parent="1" vertex="1">
+          <mxGeometry x="190" y="230" 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="uwrRxOYGmB2LabIKb8In-15" value="" style="endArrow=block;html=1;rounded=0;entryX=0;entryY=0.25;entryDx=0;entryDy=0;endFill=1;strokeWidth=2;" 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="280" y="120" as="sourcePoint" />
+            <mxPoint x="320" y="120" 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="uwrRxOYGmB2LabIKb8In-17" value="" style="endArrow=block;html=1;rounded=0;entryX=0;entryY=0.25;entryDx=0;entryDy=0;endFill=1;strokeWidth=2;" 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" />
+            <mxPoint x="280" y="160" as="sourcePoint" />
+            <mxPoint x="320" y="160" as="targetPoint" />
             <Array as="points" />
           </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="uwrRxOYGmB2LabIKb8In-18" value="" style="endArrow=block;html=1;rounded=0;entryX=0;entryY=0.25;entryDx=0;entryDy=0;endFill=1;strokeWidth=2;" parent="1" 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" />
+            <mxPoint x="280" y="360" as="sourcePoint" />
+            <mxPoint x="320" y="360" as="targetPoint" />
             <Array as="points" />
           </mxGeometry>
         </mxCell>
-        <mxCell id="uwrRxOYGmB2LabIKb8In-21" value="" style="endArrow=none;dashed=1;html=1;rounded=0;" edge="1" parent="1">
+        <mxCell id="uwrRxOYGmB2LabIKb8In-21" 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="300" y="440" as="sourcePoint" />
-            <mxPoint x="300" y="280" as="targetPoint" />
+            <mxPoint x="300" y="340" as="sourcePoint" />
+            <mxPoint x="300" y="180" as="targetPoint" />
           </mxGeometry>
         </mxCell>
-        <mxCell id="uwrRxOYGmB2LabIKb8In-25" value="" style="endArrow=block;html=1;rounded=0;endFill=1;" edge="1" parent="1">
+        <mxCell id="uwrRxOYGmB2LabIKb8In-25" 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="219.89" y="430" as="sourcePoint" />
-            <mxPoint x="219.89" y="460" as="targetPoint" />
+            <mxPoint x="219.89" y="330" as="sourcePoint" />
+            <mxPoint x="219.89" y="360" 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="uwrRxOYGmB2LabIKb8In-28" 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="219.94" y="230" as="sourcePoint" />
-            <mxPoint x="219.94" y="260" as="targetPoint" />
+            <mxPoint x="219.94" y="130" as="sourcePoint" />
+            <mxPoint x="219.94" y="160" as="targetPoint" />
             <Array as="points" />
           </mxGeometry>
         </mxCell>
-        <mxCell id="uwrRxOYGmB2LabIKb8In-29" value="" style="endArrow=block;html=1;rounded=0;endFill=1;" edge="1" parent="1">
+        <mxCell id="uwrRxOYGmB2LabIKb8In-29" 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="219.94" y="270" as="sourcePoint" />
-            <mxPoint x="219.94" y="300" as="targetPoint" />
+            <mxPoint x="219.94" y="170" as="sourcePoint" />
+            <mxPoint x="219.94" y="200" as="targetPoint" />
             <Array as="points" />
           </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="uwrRxOYGmB2LabIKb8In-30" value="Coefficients" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#ffe6cc;strokeColor=#d79b00;strokeWidth=2;fontFamily=Ubuntu Mono;fontSize=17;" parent="1" vertex="1">
+          <mxGeometry x="520" y="100" width="120" height="280" as="geometry" />
         </mxCell>
-        <mxCell id="uwrRxOYGmB2LabIKb8In-31" value="" style="endArrow=none;html=1;rounded=0;" edge="1" parent="1">
+        <mxCell id="uwrRxOYGmB2LabIKb8In-31" value="" style="endArrow=none;html=1;rounded=0;" parent="1" 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="520" y="180" as="sourcePoint" />
+            <mxPoint x="640" y="180" as="targetPoint" />
           </mxGeometry>
         </mxCell>
-        <mxCell id="uwrRxOYGmB2LabIKb8In-32" value="" style="endArrow=none;html=1;rounded=0;" edge="1" parent="1">
+        <mxCell id="uwrRxOYGmB2LabIKb8In-32" value="" style="endArrow=none;html=1;rounded=0;" parent="1" 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="520" y="140" as="sourcePoint" />
+            <mxPoint x="640" y="140" as="targetPoint" />
           </mxGeometry>
         </mxCell>
-        <mxCell id="uwrRxOYGmB2LabIKb8In-33" value="" style="endArrow=none;html=1;rounded=0;" edge="1" parent="1">
+        <mxCell id="uwrRxOYGmB2LabIKb8In-33" value="" style="endArrow=none;html=1;rounded=0;" parent="1" 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="520" y="340" as="sourcePoint" />
+            <mxPoint x="640" y="340" as="targetPoint" />
           </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="uwrRxOYGmB2LabIKb8In-34" value="" style="shape=trapezoid;perimeter=trapezoidPerimeter;whiteSpace=wrap;html=1;fixedSize=1;rotation=-90;strokeWidth=2;" parent="1" vertex="1">
+          <mxGeometry x="330" y="230" width="280" height="20" 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="uwrRxOYGmB2LabIKb8In-35" value="" style="endArrow=block;html=1;rounded=0;endFill=1;strokeWidth=2;" parent="1" 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="520" y="120" as="sourcePoint" />
+            <mxPoint x="480" y="120" 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="uwrRxOYGmB2LabIKb8In-38" 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="500" y="440" as="sourcePoint" />
-            <mxPoint x="500" y="280" as="targetPoint" />
+            <mxPoint x="500" y="340" as="sourcePoint" />
+            <mxPoint x="500" y="180" as="targetPoint" />
           </mxGeometry>
         </mxCell>
-        <mxCell id="uwrRxOYGmB2LabIKb8In-42" value="" style="endArrow=block;html=1;rounded=0;endFill=1;strokeWidth=2;" edge="1" parent="1">
+        <mxCell id="uwrRxOYGmB2LabIKb8In-42" value="" style="endArrow=block;html=1;rounded=0;endFill=1;strokeWidth=2;" parent="1" 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" />
+            <mxPoint x="520" y="160" as="sourcePoint" />
+            <mxPoint x="480" y="160" as="targetPoint" />
             <Array as="points" />
           </mxGeometry>
         </mxCell>
-        <mxCell id="uwrRxOYGmB2LabIKb8In-43" value="" style="endArrow=block;html=1;rounded=0;endFill=1;strokeWidth=2;" edge="1" parent="1">
+        <mxCell id="uwrRxOYGmB2LabIKb8In-43" value="" style="endArrow=block;html=1;rounded=0;endFill=1;strokeWidth=2;" 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" />
+            <mxPoint x="520" y="360" as="sourcePoint" />
+            <mxPoint x="480" y="360" as="targetPoint" />
             <Array as="points" />
           </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="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;" parent="1" source="uwrRxOYGmB2LabIKb8In-1" target="uwrRxOYGmB2LabIKb8In-14" 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="400" y="60" as="sourcePoint" />
+            <mxPoint x="440" y="60" as="targetPoint" />
             <Array as="points">
-              <mxPoint x="400" y="160" />
+              <mxPoint x="400" y="60" />
             </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">
+        <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" parent="uwrRxOYGmB2LabIKb8In-45" vertex="1" connectable="0">
           <mxGeometry x="0.45" y="1" relative="1" as="geometry">
             <mxPoint x="41" y="-51" 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="uwrRxOYGmB2LabIKb8In-47" value="" style="endArrow=block;html=1;rounded=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;endFill=1;" parent="1" target="uwrRxOYGmB2LabIKb8In-34" 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="400" y="20" as="sourcePoint" />
+            <mxPoint x="340" y="120" as="targetPoint" />
             <Array as="points">
-              <mxPoint x="400" y="160" />
+              <mxPoint x="400" y="60" />
             </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="uwrRxOYGmB2LabIKb8In-49" value="" style="endArrow=block;html=1;rounded=0;endFill=1;strokeWidth=2;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.25;entryY=1;entryDx=0;entryDy=0;" parent="1" source="uwrRxOYGmB2LabIKb8In-14" target="NDYOjcKuVLoNuB3YkQ-f-90" 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="240" y="450" as="targetPoint" />
             <Array as="points">
+              <mxPoint x="350" y="240" />
               <mxPoint x="350" y="340" />
-              <mxPoint x="350" y="490" />
+              <mxPoint x="350" y="410" />
+              <mxPoint x="220" y="410" />
+              <mxPoint x="220" y="458" />
             </Array>
           </mxGeometry>
         </mxCell>
-        <mxCell id="uwrRxOYGmB2LabIKb8In-50" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;fillColor=#d5e8d4;strokeColor=#82b366;" vertex="1" parent="1">
+        <mxCell id="uwrRxOYGmB2LabIKb8In-50" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;fillColor=#d5e8d4;strokeColor=#82b366;" parent="1" vertex="1">
           <mxGeometry x="360" y="500" width="80" height="80" as="geometry" />
         </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="uwrRxOYGmB2LabIKb8In-51" value="" style="endArrow=block;html=1;rounded=0;endFill=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;strokeWidth=2;entryX=0.75;entryY=1;entryDx=0;entryDy=0;" parent="1" source="uwrRxOYGmB2LabIKb8In-34" target="NDYOjcKuVLoNuB3YkQ-f-52" 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="430" y="430" as="targetPoint" />
             <Array as="points">
-              <mxPoint x="450" y="340" />
-              <mxPoint x="450" y="490" />
+              <mxPoint x="450" y="240" />
+              <mxPoint x="450" y="400" />
+              <mxPoint x="560" y="400" />
+              <mxPoint x="560" y="453" />
             </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="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;" parent="1" source="uwrRxOYGmB2LabIKb8In-50" target="uwrRxOYGmB2LabIKb8In-50" 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" />
           </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="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;" parent="1" source="uwrRxOYGmB2LabIKb8In-50" target="uwrRxOYGmB2LabIKb8In-50" 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" />
           </mxGeometry>
         </mxCell>
-        <mxCell id="uwrRxOYGmB2LabIKb8In-54" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;fillColor=#d5e8d4;strokeColor=#82b366;" vertex="1" parent="1">
+        <mxCell id="uwrRxOYGmB2LabIKb8In-54" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;fillColor=#d5e8d4;strokeColor=#82b366;" parent="1" vertex="1">
           <mxGeometry x="360" y="650" width="80" height="80" as="geometry" />
         </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="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;" parent="1" source="uwrRxOYGmB2LabIKb8In-50" target="uwrRxOYGmB2LabIKb8In-54" 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" />
           </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="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;" parent="1" source="uwrRxOYGmB2LabIKb8In-54" target="uwrRxOYGmB2LabIKb8In-54" 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" />
           </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="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;" parent="1" source="uwrRxOYGmB2LabIKb8In-54" target="uwrRxOYGmB2LabIKb8In-54" 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" />
           </mxGeometry>
         </mxCell>
-        <mxCell id="uwrRxOYGmB2LabIKb8In-58" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;strokeWidth=2;" vertex="1" parent="1">
+        <mxCell id="uwrRxOYGmB2LabIKb8In-58" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;strokeWidth=2;" parent="1" vertex="1">
           <mxGeometry x="160" y="660" width="120" height="60" as="geometry" />
         </mxCell>
-        <mxCell id="uwrRxOYGmB2LabIKb8In-59" value="" style="triangle;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;" vertex="1" parent="1">
+        <mxCell id="uwrRxOYGmB2LabIKb8In-59" value="" style="triangle;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;" parent="1" vertex="1">
           <mxGeometry x="160" y="690" width="10" height="20" as="geometry" />
         </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="uwrRxOYGmB2LabIKb8In-63" value="" style="triangle;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;" parent="1" vertex="1">
+          <mxGeometry x="160" y="350" width="10" height="20" as="geometry" />
         </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="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;" parent="1" source="uwrRxOYGmB2LabIKb8In-58" target="uwrRxOYGmB2LabIKb8In-54" edge="1">
           <mxGeometry width="50" height="50" relative="1" as="geometry">
-            <mxPoint x="410" y="580" as="sourcePoint" />
+            <mxPoint x="305" y="590" as="sourcePoint" />
             <mxPoint x="340" y="650" as="targetPoint" />
             <Array as="points">
-              <mxPoint x="220" y="620" />
-              <mxPoint x="330" y="620" />
+              <mxPoint x="220" y="590" />
+              <mxPoint x="330" y="590" />
             </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="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;" parent="1" source="uwrRxOYGmB2LabIKb8In-54" target="uwrRxOYGmB2LabIKb8In-58" 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" />
@@ -278,7 +283,7 @@
             </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="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;" parent="1" target="uwrRxOYGmB2LabIKb8In-68" 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" />
@@ -288,138 +293,651 @@
             </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">
+        <mxCell id="uwrRxOYGmB2LabIKb8In-68" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;rotation=90;strokeWidth=2;" parent="1" vertex="1">
           <mxGeometry x="480" y="780" width="120" height="60" as="geometry" />
         </mxCell>
-        <mxCell id="uwrRxOYGmB2LabIKb8In-69" value="" style="triangle;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;" vertex="1" parent="1">
+        <mxCell id="uwrRxOYGmB2LabIKb8In-69" value="" style="triangle;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;" parent="1" vertex="1">
           <mxGeometry x="510" y="840" width="10" height="20" as="geometry" />
         </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="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;" parent="1" source="uwrRxOYGmB2LabIKb8In-68" 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" />
             <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">
+        <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" parent="1" vertex="1" connectable="0">
           <mxGeometry x="650.0017647058825" y="810.0000000000002" as="geometry" />
         </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="uwrRxOYGmB2LabIKb8In-72" value="" style="endArrow=block;html=1;rounded=0;endFill=1;entryX=0.75;entryY=0;entryDx=0;entryDy=0;strokeWidth=2;" parent="1" target="uwrRxOYGmB2LabIKb8In-9" 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="150" y="20" as="sourcePoint" />
+            <mxPoint x="250" y="70" as="targetPoint" />
             <Array as="points">
-              <mxPoint x="220" y="120" />
-              <mxPoint x="230" y="120" />
-              <mxPoint x="250" y="140" />
+              <mxPoint x="220" y="20" />
+              <mxPoint x="230" y="20" />
+              <mxPoint x="250" y="40" />
             </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">
+        <mxCell id="uwrRxOYGmB2LabIKb8In-74" value="I_inputSample" style="edgeLabel;html=1;align=right;verticalAlign=middle;resizable=0;points=[];fontFamily=Ubuntu Mono;fontSize=14;" parent="uwrRxOYGmB2LabIKb8In-72" vertex="1" connectable="0">
           <mxGeometry x="-0.9128" y="-1" relative="1" as="geometry">
             <mxPoint x="-7" y="-1" as="offset" />
           </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="uwrRxOYGmB2LabIKb8In-73" value="" style="endArrow=block;html=1;rounded=0;endFill=1;entryX=0.25;entryY=0;entryDx=0;entryDy=0;" parent="1" target="uwrRxOYGmB2LabIKb8In-9" 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="150" y="50" as="sourcePoint" />
+            <mxPoint x="190" y="90" as="targetPoint" />
             <Array as="points">
-              <mxPoint x="180" y="150" />
-              <mxPoint x="190" y="160" />
+              <mxPoint x="180" y="50" />
+              <mxPoint x="190" y="60" />
             </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">
+        <mxCell id="uwrRxOYGmB2LabIKb8In-76" value="I_loadShift1" style="edgeLabel;html=1;align=right;verticalAlign=middle;resizable=0;points=[];fontSize=14;fontFamily=Ubuntu Mono;" parent="uwrRxOYGmB2LabIKb8In-73" vertex="1" connectable="0">
           <mxGeometry x="-0.7861" relative="1" as="geometry">
             <mxPoint x="-9" as="offset" />
           </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="uwrRxOYGmB2LabIKb8In-77" 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="130" y="630" as="sourcePoint" />
-            <mxPoint x="170" y="660" as="targetPoint" />
+            <mxPoint x="135" y="630" as="sourcePoint" />
+            <mxPoint x="175" y="660" as="targetPoint" />
             <Array as="points">
-              <mxPoint x="160" y="630" />
-              <mxPoint x="170" y="640" />
+              <mxPoint x="165" y="630" />
+              <mxPoint x="175" y="640" />
             </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">
+        <mxCell id="uwrRxOYGmB2LabIKb8In-78" value="I_loadSum" style="edgeLabel;html=1;align=right;verticalAlign=middle;resizable=0;points=[];fontSize=14;fontFamily=Ubuntu Mono;" parent="uwrRxOYGmB2LabIKb8In-77" 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-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="uwrRxOYGmB2LabIKb8In-79" 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="130" y="610" as="sourcePoint" />
-            <mxPoint x="170" y="641" as="targetPoint" />
+            <mxPoint x="135" y="610" as="sourcePoint" />
+            <mxPoint x="195" y="660" as="targetPoint" />
             <Array as="points">
-              <mxPoint x="170" y="610" />
-              <mxPoint x="190" y="630" />
+              <mxPoint x="175" y="610" />
+              <mxPoint x="195" y="630" />
             </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">
+        <mxCell id="uwrRxOYGmB2LabIKb8In-80" value="I_initSum" style="edgeLabel;html=1;align=right;verticalAlign=middle;resizable=0;points=[];fontSize=14;fontFamily=Ubuntu Mono;" parent="uwrRxOYGmB2LabIKb8In-79" 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="uwrRxOYGmB2LabIKb8In-81" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
+        <mxCell id="uwrRxOYGmB2LabIKb8In-81" value="" style="endArrow=classic;html=1;rounded=0;" parent="1" 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" />
           </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">
+        <mxCell id="uwrRxOYGmB2LabIKb8In-82" value="I_loadY" style="edgeLabel;html=1;align=right;verticalAlign=middle;resizable=0;points=[];fontSize=14;fontFamily=Ubuntu Mono;" parent="uwrRxOYGmB2LabIKb8In-81" vertex="1" connectable="0">
           <mxGeometry x="-0.9221" y="-1" relative="1" as="geometry">
             <mxPoint x="-15" as="offset" />
           </mxGeometry>
         </mxCell>
-        <mxCell id="uwrRxOYGmB2LabIKb8In-83" value="" style="endArrow=none;html=1;rounded=0;" edge="1" parent="1">
+        <mxCell id="uwrRxOYGmB2LabIKb8In-83" value="" style="endArrow=none;html=1;rounded=0;" parent="1" 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" />
           </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">
+        <mxCell id="uwrRxOYGmB2LabIKb8In-84" value="11 bits" style="edgeLabel;html=1;align=left;verticalAlign=bottom;resizable=0;points=[];labelPosition=right;verticalLabelPosition=top;" parent="uwrRxOYGmB2LabIKb8In-83" 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-85" value="" style="endArrow=none;html=1;rounded=0;" edge="1" parent="1">
+        <mxCell id="uwrRxOYGmB2LabIKb8In-85" value="" style="endArrow=none;html=1;rounded=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" />
           </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">
+        <mxCell id="uwrRxOYGmB2LabIKb8In-86" value="(11, 0)" style="edgeLabel;html=1;align=left;verticalAlign=bottom;resizable=0;points=[];labelPosition=right;verticalLabelPosition=top;" parent="uwrRxOYGmB2LabIKb8In-85" 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-87" value="" style="endArrow=none;html=1;rounded=0;" edge="1" parent="1">
+        <mxCell id="uwrRxOYGmB2LabIKb8In-87" value="" style="endArrow=none;html=1;rounded=0;" parent="1" edge="1">
           <mxGeometry width="50" height="50" relative="1" as="geometry">
             <mxPoint x="390" y="620" as="sourcePoint" />
             <mxPoint x="410" y="600" as="targetPoint" />
           </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">
+        <mxCell id="uwrRxOYGmB2LabIKb8In-88" value="(12,10)" style="edgeLabel;html=1;align=left;verticalAlign=bottom;resizable=0;points=[];labelPosition=right;verticalLabelPosition=top;" parent="uwrRxOYGmB2LabIKb8In-87" 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-89" value="" style="endArrow=none;html=1;rounded=0;" edge="1" parent="1">
+        <mxCell id="uwrRxOYGmB2LabIKb8In-89" value="" style="endArrow=none;html=1;rounded=0;" parent="1" edge="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="180" y="30" as="sourcePoint" />
+            <mxPoint x="200" y="10" as="targetPoint" />
           </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">
+        <mxCell id="uwrRxOYGmB2LabIKb8In-90" value="11 bits" style="edgeLabel;html=1;align=left;verticalAlign=bottom;resizable=0;points=[];labelPosition=right;verticalLabelPosition=top;" parent="uwrRxOYGmB2LabIKb8In-89" 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="NDYOjcKuVLoNuB3YkQ-f-31" value="Coefficients" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#ffe6cc;strokeColor=#d79b00;strokeWidth=2;fontFamily=Ubuntu Mono;fontSize=17;" parent="1" vertex="1">
+          <mxGeometry x="760" y="100" width="120" height="280" as="geometry" />
+        </mxCell>
+        <mxCell id="NDYOjcKuVLoNuB3YkQ-f-32" value="" style="endArrow=none;html=1;rounded=0;" parent="1" edge="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="760" y="180" as="sourcePoint" />
+            <mxPoint x="880" y="180" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="NDYOjcKuVLoNuB3YkQ-f-33" value="" style="endArrow=none;html=1;rounded=0;" parent="1" edge="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="760" y="140" as="sourcePoint" />
+            <mxPoint x="880" y="140" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="NDYOjcKuVLoNuB3YkQ-f-34" value="" style="endArrow=none;html=1;rounded=0;" parent="1" edge="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="760" y="340" as="sourcePoint" />
+            <mxPoint x="880" y="340" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="NDYOjcKuVLoNuB3YkQ-f-35" value="" style="shape=trapezoid;perimeter=trapezoidPerimeter;whiteSpace=wrap;html=1;fixedSize=1;rotation=-90;strokeWidth=2;" parent="1" vertex="1">
+          <mxGeometry x="570" y="230" width="280" height="20" as="geometry" />
+        </mxCell>
+        <mxCell id="NDYOjcKuVLoNuB3YkQ-f-36" value="" style="endArrow=block;html=1;rounded=0;endFill=1;strokeWidth=2;" parent="1" edge="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="760" y="120" as="sourcePoint" />
+            <mxPoint x="720" y="120" as="targetPoint" />
+            <Array as="points" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="NDYOjcKuVLoNuB3YkQ-f-37" 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="740" y="340" as="sourcePoint" />
+            <mxPoint x="740" y="180" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="NDYOjcKuVLoNuB3YkQ-f-38" value="" style="endArrow=block;html=1;rounded=0;endFill=1;strokeWidth=2;" parent="1" edge="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="760" y="160" as="sourcePoint" />
+            <mxPoint x="720" y="160" as="targetPoint" />
+            <Array as="points" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="NDYOjcKuVLoNuB3YkQ-f-39" value="" style="endArrow=block;html=1;rounded=0;endFill=1;strokeWidth=2;" parent="1" edge="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="760" y="360" as="sourcePoint" />
+            <mxPoint x="720" y="360" as="targetPoint" />
+            <Array as="points" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="NDYOjcKuVLoNuB3YkQ-f-40" value="Coefficients" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#ffe6cc;strokeColor=#d79b00;strokeWidth=2;fontFamily=Ubuntu Mono;fontSize=17;" parent="1" vertex="1">
+          <mxGeometry x="970" y="100" width="120" height="280" as="geometry" />
+        </mxCell>
+        <mxCell id="NDYOjcKuVLoNuB3YkQ-f-41" value="" style="endArrow=none;html=1;rounded=0;" parent="1" edge="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="970" y="180" as="sourcePoint" />
+            <mxPoint x="1090" y="180" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="NDYOjcKuVLoNuB3YkQ-f-42" value="" style="endArrow=none;html=1;rounded=0;" parent="1" edge="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="970" y="140" as="sourcePoint" />
+            <mxPoint x="1090" y="140" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="NDYOjcKuVLoNuB3YkQ-f-43" value="" style="endArrow=none;html=1;rounded=0;" parent="1" edge="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="970" y="340" as="sourcePoint" />
+            <mxPoint x="1090" y="340" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="NDYOjcKuVLoNuB3YkQ-f-44" value="" style="shape=trapezoid;perimeter=trapezoidPerimeter;whiteSpace=wrap;html=1;fixedSize=1;rotation=-90;strokeWidth=2;" parent="1" vertex="1">
+          <mxGeometry x="780" y="230" width="280" height="20" as="geometry" />
+        </mxCell>
+        <mxCell id="NDYOjcKuVLoNuB3YkQ-f-45" value="" style="endArrow=block;html=1;rounded=0;endFill=1;strokeWidth=2;" parent="1" edge="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="970" y="120" as="sourcePoint" />
+            <mxPoint x="930" y="120" as="targetPoint" />
+            <Array as="points" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="NDYOjcKuVLoNuB3YkQ-f-46" 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="950" y="340" as="sourcePoint" />
+            <mxPoint x="950" y="180" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="NDYOjcKuVLoNuB3YkQ-f-47" value="" style="endArrow=block;html=1;rounded=0;endFill=1;strokeWidth=2;" parent="1" edge="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="970" y="160" as="sourcePoint" />
+            <mxPoint x="930" y="160" as="targetPoint" />
+            <Array as="points" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="NDYOjcKuVLoNuB3YkQ-f-48" value="" style="endArrow=block;html=1;rounded=0;endFill=1;strokeWidth=2;" parent="1" edge="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="970" y="360" as="sourcePoint" />
+            <mxPoint x="930" y="360" as="targetPoint" />
+            <Array as="points" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="NDYOjcKuVLoNuB3YkQ-f-49" value="" style="endArrow=block;html=1;rounded=0;endFill=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;strokeWidth=2;entryX=0.621;entryY=1.15;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" target="NDYOjcKuVLoNuB3YkQ-f-52" edge="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="702" y="240" as="sourcePoint" />
+            <mxPoint x="550" y="470" as="targetPoint" />
+            <Array as="points">
+              <mxPoint x="692" y="240" />
+              <mxPoint x="690" y="470" />
+            </Array>
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="NDYOjcKuVLoNuB3YkQ-f-50" value="" style="endArrow=block;html=1;rounded=0;entryX=0.424;entryY=1.025;entryDx=0;entryDy=0;endFill=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;strokeWidth=2;entryPerimeter=0;" parent="1" target="NDYOjcKuVLoNuB3YkQ-f-52" edge="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="912" y="230" as="sourcePoint" />
+            <mxPoint x="880" y="502" as="targetPoint" />
+            <Array as="points">
+              <mxPoint x="902" y="230" />
+              <mxPoint x="900" y="488" />
+            </Array>
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="NDYOjcKuVLoNuB3YkQ-f-51" value="" style="endArrow=block;html=1;rounded=0;endFill=1;strokeWidth=2;entryX=1;entryY=0;entryDx=0;entryDy=0;" parent="1" target="uwrRxOYGmB2LabIKb8In-50" edge="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="515.86" y="480" as="sourcePoint" />
+            <mxPoint x="430" y="510" as="targetPoint" />
+            <Array as="points">
+              <mxPoint x="465.86" y="480" />
+            </Array>
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="NDYOjcKuVLoNuB3YkQ-f-52" value="" style="shape=trapezoid;perimeter=trapezoidPerimeter;whiteSpace=wrap;html=1;fixedSize=1;rotation=-90;strokeWidth=2;" parent="1" vertex="1">
+          <mxGeometry x="470" y="470" width="110" height="20" as="geometry" />
+        </mxCell>
+        <mxCell id="NDYOjcKuVLoNuB3YkQ-f-53" value="Samples" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;strokeWidth=2;fontFamily=Ubuntu Mono;fontSize=17;" parent="1" vertex="1">
+          <mxGeometry x="-60" y="100" width="120" height="280" as="geometry" />
+        </mxCell>
+        <mxCell id="NDYOjcKuVLoNuB3YkQ-f-54" value="" style="endArrow=none;html=1;rounded=0;" parent="1" edge="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="-60" y="180" as="sourcePoint" />
+            <mxPoint x="60" y="180" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="NDYOjcKuVLoNuB3YkQ-f-55" value="" style="endArrow=none;html=1;rounded=0;" parent="1" edge="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="-60" y="140" as="sourcePoint" />
+            <mxPoint x="60" y="140" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="NDYOjcKuVLoNuB3YkQ-f-56" value="" style="endArrow=none;html=1;rounded=0;" parent="1" edge="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="-60" y="340" as="sourcePoint" />
+            <mxPoint x="60" y="340" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="NDYOjcKuVLoNuB3YkQ-f-57" value="" style="shape=trapezoid;perimeter=trapezoidPerimeter;whiteSpace=wrap;html=1;fixedSize=1;rotation=90;strokeWidth=2;" parent="1" vertex="1">
+          <mxGeometry x="-30" y="230" width="280" height="20" as="geometry" />
+        </mxCell>
+        <mxCell id="NDYOjcKuVLoNuB3YkQ-f-58" value="" style="endArrow=block;html=1;rounded=0;entryX=0;entryY=0.25;entryDx=0;entryDy=0;endFill=1;strokeWidth=2;" parent="1" edge="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="60" y="120" as="sourcePoint" />
+            <mxPoint x="100" y="120" as="targetPoint" />
+            <Array as="points" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="NDYOjcKuVLoNuB3YkQ-f-59" value="" style="endArrow=block;html=1;rounded=0;entryX=0;entryY=0.25;entryDx=0;entryDy=0;endFill=1;strokeWidth=2;" parent="1" edge="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="60" y="160" as="sourcePoint" />
+            <mxPoint x="100" y="160" as="targetPoint" />
+            <Array as="points" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="NDYOjcKuVLoNuB3YkQ-f-60" value="" style="endArrow=block;html=1;rounded=0;entryX=0;entryY=0.25;entryDx=0;entryDy=0;endFill=1;strokeWidth=2;" parent="1" edge="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="60" y="360" as="sourcePoint" />
+            <mxPoint x="100" y="360" as="targetPoint" />
+            <Array as="points" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="NDYOjcKuVLoNuB3YkQ-f-61" 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="80" y="340" as="sourcePoint" />
+            <mxPoint x="80" y="180" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="NDYOjcKuVLoNuB3YkQ-f-62" 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="-0.11000000000001364" y="330" as="sourcePoint" />
+            <mxPoint x="-0.11000000000001364" y="360" as="targetPoint" />
+            <Array as="points" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="NDYOjcKuVLoNuB3YkQ-f-63" 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="-0.060000000000002274" y="130" as="sourcePoint" />
+            <mxPoint x="-0.060000000000002274" y="160" as="targetPoint" />
+            <Array as="points" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="NDYOjcKuVLoNuB3YkQ-f-64" 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="-0.060000000000002274" y="170" as="sourcePoint" />
+            <mxPoint x="-0.060000000000002274" y="200" as="targetPoint" />
+            <Array as="points" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="NDYOjcKuVLoNuB3YkQ-f-65" value="" style="triangle;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;" parent="1" vertex="1">
+          <mxGeometry x="-60" y="350" width="10" height="20" as="geometry" />
+        </mxCell>
+        <mxCell id="NDYOjcKuVLoNuB3YkQ-f-66" value="Samples" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;strokeWidth=2;fontFamily=Ubuntu Mono;fontSize=17;" parent="1" vertex="1">
+          <mxGeometry x="-280" y="100" width="120" height="280" as="geometry" />
+        </mxCell>
+        <mxCell id="NDYOjcKuVLoNuB3YkQ-f-67" value="" style="endArrow=none;html=1;rounded=0;" parent="1" edge="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="-280" y="180" as="sourcePoint" />
+            <mxPoint x="-160" y="180" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="NDYOjcKuVLoNuB3YkQ-f-68" value="" style="endArrow=none;html=1;rounded=0;" parent="1" edge="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="-280" y="140" as="sourcePoint" />
+            <mxPoint x="-160" y="140" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="NDYOjcKuVLoNuB3YkQ-f-69" value="" style="endArrow=none;html=1;rounded=0;" parent="1" edge="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="-280" y="340" as="sourcePoint" />
+            <mxPoint x="-160" y="340" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="NDYOjcKuVLoNuB3YkQ-f-70" value="" style="shape=trapezoid;perimeter=trapezoidPerimeter;whiteSpace=wrap;html=1;fixedSize=1;rotation=90;strokeWidth=2;" parent="1" vertex="1">
+          <mxGeometry x="-250" y="230" width="280" height="20" as="geometry" />
+        </mxCell>
+        <mxCell id="NDYOjcKuVLoNuB3YkQ-f-71" value="" style="endArrow=block;html=1;rounded=0;entryX=0;entryY=0.25;entryDx=0;entryDy=0;endFill=1;strokeWidth=2;" parent="1" edge="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="-160" y="120" as="sourcePoint" />
+            <mxPoint x="-120" y="120" as="targetPoint" />
+            <Array as="points" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="NDYOjcKuVLoNuB3YkQ-f-72" value="" style="endArrow=block;html=1;rounded=0;entryX=0;entryY=0.25;entryDx=0;entryDy=0;endFill=1;strokeWidth=2;" parent="1" edge="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="-160" y="160" as="sourcePoint" />
+            <mxPoint x="-120" y="160" as="targetPoint" />
+            <Array as="points" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="NDYOjcKuVLoNuB3YkQ-f-73" value="" style="endArrow=block;html=1;rounded=0;entryX=0;entryY=0.25;entryDx=0;entryDy=0;endFill=1;strokeWidth=2;" parent="1" edge="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="-160" y="360" as="sourcePoint" />
+            <mxPoint x="-120" y="360" as="targetPoint" />
+            <Array as="points" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="NDYOjcKuVLoNuB3YkQ-f-74" 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="-140" y="340" as="sourcePoint" />
+            <mxPoint x="-140" y="180" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="NDYOjcKuVLoNuB3YkQ-f-75" 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="-220.11" y="330" as="sourcePoint" />
+            <mxPoint x="-220.11" y="360" as="targetPoint" />
+            <Array as="points" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="NDYOjcKuVLoNuB3YkQ-f-76" 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="-220.06" y="130" as="sourcePoint" />
+            <mxPoint x="-220.06" y="160" as="targetPoint" />
+            <Array as="points" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="NDYOjcKuVLoNuB3YkQ-f-77" 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="-220.06" y="170" as="sourcePoint" />
+            <mxPoint x="-220.06" y="200" as="targetPoint" />
+            <Array as="points" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="NDYOjcKuVLoNuB3YkQ-f-78" value="" style="triangle;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;" parent="1" vertex="1">
+          <mxGeometry x="-280" y="350" width="10" height="20" as="geometry" />
+        </mxCell>
+        <mxCell id="NDYOjcKuVLoNuB3YkQ-f-79" value="Coefficients" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#ffe6cc;strokeColor=#d79b00;strokeWidth=2;fontFamily=Ubuntu Mono;fontSize=17;" parent="1" vertex="1">
+          <mxGeometry x="1190" y="100" width="120" height="280" as="geometry" />
+        </mxCell>
+        <mxCell id="NDYOjcKuVLoNuB3YkQ-f-80" value="" style="endArrow=none;html=1;rounded=0;" parent="1" edge="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="1190" y="180" as="sourcePoint" />
+            <mxPoint x="1310" y="180" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="NDYOjcKuVLoNuB3YkQ-f-81" value="" style="endArrow=none;html=1;rounded=0;" parent="1" edge="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="1190" y="140" as="sourcePoint" />
+            <mxPoint x="1310" y="140" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="NDYOjcKuVLoNuB3YkQ-f-82" value="" style="endArrow=none;html=1;rounded=0;" parent="1" edge="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="1190" y="340" as="sourcePoint" />
+            <mxPoint x="1310" y="340" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="NDYOjcKuVLoNuB3YkQ-f-83" value="" style="shape=trapezoid;perimeter=trapezoidPerimeter;whiteSpace=wrap;html=1;fixedSize=1;rotation=-90;strokeWidth=2;" parent="1" vertex="1">
+          <mxGeometry x="1000" y="230" width="280" height="20" as="geometry" />
+        </mxCell>
+        <mxCell id="NDYOjcKuVLoNuB3YkQ-f-84" value="" style="endArrow=block;html=1;rounded=0;endFill=1;strokeWidth=2;" parent="1" edge="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="1190" y="120" as="sourcePoint" />
+            <mxPoint x="1150" y="120" as="targetPoint" />
+            <Array as="points" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="NDYOjcKuVLoNuB3YkQ-f-85" 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="1170" y="340" as="sourcePoint" />
+            <mxPoint x="1170" y="180" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="NDYOjcKuVLoNuB3YkQ-f-86" value="" style="endArrow=block;html=1;rounded=0;endFill=1;strokeWidth=2;" parent="1" edge="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="1190" y="160" as="sourcePoint" />
+            <mxPoint x="1150" y="160" as="targetPoint" />
+            <Array as="points" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="NDYOjcKuVLoNuB3YkQ-f-87" value="" style="endArrow=block;html=1;rounded=0;endFill=1;strokeWidth=2;" parent="1" edge="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="1190" y="360" as="sourcePoint" />
+            <mxPoint x="1150" y="360" as="targetPoint" />
+            <Array as="points" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="NDYOjcKuVLoNuB3YkQ-f-88" value="" style="endArrow=block;html=1;rounded=0;entryX=0.25;entryY=1;entryDx=0;entryDy=0;endFill=1;strokeWidth=2;" parent="1" source="NDYOjcKuVLoNuB3YkQ-f-83" target="NDYOjcKuVLoNuB3YkQ-f-52" edge="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="1127" y="250" as="sourcePoint" />
+            <mxPoint x="750" y="513" as="targetPoint" />
+            <Array as="points">
+              <mxPoint x="1120" y="240" />
+              <mxPoint x="1120" y="508" />
+            </Array>
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="NDYOjcKuVLoNuB3YkQ-f-89" value="" style="endArrow=block;html=1;rounded=0;endFill=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.079;entryY=0.188;entryDx=0;entryDy=0;strokeWidth=2;entryPerimeter=0;" parent="1" source="NDYOjcKuVLoNuB3YkQ-f-90" target="uwrRxOYGmB2LabIKb8In-50" edge="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="394" y="450" as="sourcePoint" />
+            <mxPoint x="356" y="532" as="targetPoint" />
+            <Array as="points">
+              <mxPoint x="320" y="480" />
+            </Array>
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="NDYOjcKuVLoNuB3YkQ-f-90" value="" style="shape=trapezoid;perimeter=trapezoidPerimeter;whiteSpace=wrap;html=1;fixedSize=1;rotation=90;strokeWidth=2;" parent="1" vertex="1">
+          <mxGeometry x="234" y="470" width="90" height="20" as="geometry" />
+        </mxCell>
+        <mxCell id="NDYOjcKuVLoNuB3YkQ-f-91" value="" style="endArrow=block;html=1;rounded=0;endFill=1;strokeWidth=2;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" parent="1" target="NDYOjcKuVLoNuB3YkQ-f-90" edge="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="120" y="240" as="sourcePoint" />
+            <mxPoint x="49" y="438" as="targetPoint" />
+            <Array as="points">
+              <mxPoint x="130" y="240" />
+              <mxPoint x="130" y="340" />
+              <mxPoint x="130" y="410" />
+              <mxPoint x="130" y="480" />
+            </Array>
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="NDYOjcKuVLoNuB3YkQ-f-92" value="" style="endArrow=block;html=1;rounded=0;endFill=1;strokeWidth=2;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.75;entryY=1;entryDx=0;entryDy=0;" parent="1" target="NDYOjcKuVLoNuB3YkQ-f-90" edge="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="-100" y="240" as="sourcePoint" />
+            <mxPoint x="49" y="460" as="targetPoint" />
+            <Array as="points">
+              <mxPoint x="-90" y="240" />
+              <mxPoint x="-90" y="340" />
+              <mxPoint x="-90" y="410" />
+              <mxPoint x="-90" y="500" />
+            </Array>
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="NDYOjcKuVLoNuB3YkQ-f-93" value="" style="endArrow=block;html=1;rounded=0;endFill=1;strokeWidth=2;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" target="NDYOjcKuVLoNuB3YkQ-f-66" edge="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="400" y="740" as="sourcePoint" />
+            <mxPoint x="-240" y="690" as="targetPoint" />
+            <Array as="points">
+              <mxPoint x="400" y="770" />
+              <mxPoint x="-440" y="770" />
+              <mxPoint x="-440" />
+              <mxPoint x="-220" />
+            </Array>
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="NDYOjcKuVLoNuB3YkQ-f-94" value="" style="endArrow=block;html=1;rounded=0;endFill=1;strokeWidth=2;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" target="NDYOjcKuVLoNuB3YkQ-f-53" edge="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="400" y="740" as="sourcePoint" />
+            <mxPoint x="-220" y="100" as="targetPoint" />
+            <Array as="points">
+              <mxPoint x="400" y="770" />
+              <mxPoint x="-440" y="770" />
+              <mxPoint x="-440" />
+              <mxPoint />
+            </Array>
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="NJnLxzagAcODFD03IEvC-1" value="" style="endArrow=none;html=1;rounded=0;" parent="1" edge="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="210" y="630" as="sourcePoint" />
+            <mxPoint x="230" y="610" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="NJnLxzagAcODFD03IEvC-2" value="(19, 10)" style="edgeLabel;html=1;align=left;verticalAlign=bottom;resizable=0;points=[];labelPosition=right;verticalLabelPosition=top;" parent="NJnLxzagAcODFD03IEvC-1" 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="NJnLxzagAcODFD03IEvC-3" value="" style="endArrow=none;html=1;rounded=0;" parent="1" edge="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="130" y="780" as="sourcePoint" />
+            <mxPoint x="150" y="760" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="NJnLxzagAcODFD03IEvC-4" value="(11, 0)" style="edgeLabel;html=1;align=left;verticalAlign=bottom;resizable=0;points=[];labelPosition=right;verticalLabelPosition=top;" parent="NJnLxzagAcODFD03IEvC-3" 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="NJnLxzagAcODFD03IEvC-5" value="" style="endArrow=none;html=1;rounded=0;" parent="1" edge="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="240" y="760" as="sourcePoint" />
+            <mxPoint x="260" y="740" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="NJnLxzagAcODFD03IEvC-6" value="(19, 10)" style="edgeLabel;html=1;align=left;verticalAlign=bottom;resizable=0;points=[];labelPosition=right;verticalLabelPosition=top;" parent="NJnLxzagAcODFD03IEvC-5" 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="NJnLxzagAcODFD03IEvC-7" value="" style="endArrow=none;html=1;rounded=0;" parent="1" edge="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="470" y="490" as="sourcePoint" />
+            <mxPoint x="490" y="470" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="NJnLxzagAcODFD03IEvC-8" value="&lt;div&gt;(1, 10)&lt;/div&gt;" style="edgeLabel;html=1;align=left;verticalAlign=bottom;resizable=0;points=[];labelPosition=right;verticalLabelPosition=top;" parent="NJnLxzagAcODFD03IEvC-7" 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="NJnLxzagAcODFD03IEvC-9" value="" style="endArrow=none;html=1;rounded=0;" parent="1" edge="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="300" y="490" as="sourcePoint" />
+            <mxPoint x="320" y="470" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="NJnLxzagAcODFD03IEvC-10" value="(11, 0)" style="edgeLabel;html=1;align=left;verticalAlign=bottom;resizable=0;points=[];labelPosition=right;verticalLabelPosition=top;" parent="NJnLxzagAcODFD03IEvC-9" 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="x3sh3fDmEHBjpIoTDSR_-3" value="" style="endArrow=block;html=1;rounded=0;endFill=1;entryX=0.25;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="-80" y="50" as="sourcePoint" />
+            <mxPoint x="-40" y="100" as="targetPoint" />
+            <Array as="points">
+              <mxPoint x="-50" y="50" />
+              <mxPoint x="-40" y="60" />
+            </Array>
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="x3sh3fDmEHBjpIoTDSR_-4" value="I_loadShift2" style="edgeLabel;html=1;align=right;verticalAlign=middle;resizable=0;points=[];fontSize=14;fontFamily=Ubuntu Mono;" vertex="1" connectable="0" parent="x3sh3fDmEHBjpIoTDSR_-3">
+          <mxGeometry x="-0.7861" relative="1" as="geometry">
+            <mxPoint x="-9" as="offset" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="x3sh3fDmEHBjpIoTDSR_-5" value="" style="endArrow=block;html=1;rounded=0;endFill=1;entryX=0.25;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="-300" y="50" as="sourcePoint" />
+            <mxPoint x="-260" y="100" as="targetPoint" />
+            <Array as="points">
+              <mxPoint x="-270" y="50" />
+              <mxPoint x="-260" y="60" />
+            </Array>
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="x3sh3fDmEHBjpIoTDSR_-6" value="I_loadShift3" style="edgeLabel;html=1;align=right;verticalAlign=middle;resizable=0;points=[];fontSize=14;fontFamily=Ubuntu Mono;" vertex="1" connectable="0" parent="x3sh3fDmEHBjpIoTDSR_-5">
+          <mxGeometry x="-0.7861" relative="1" as="geometry">
+            <mxPoint x="-9" as="offset" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="x3sh3fDmEHBjpIoTDSR_-7" value="" style="endArrow=block;html=1;rounded=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;endFill=1;" edge="1" parent="1" target="NDYOjcKuVLoNuB3YkQ-f-90">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="400" y="410" as="sourcePoint" />
+            <mxPoint x="330" y="459" as="targetPoint" />
+            <Array as="points">
+              <mxPoint x="400" y="430" />
+            </Array>
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="x3sh3fDmEHBjpIoTDSR_-8" value="I_coefSelect" style="edgeLabel;html=1;align=left;verticalAlign=middle;resizable=0;points=[];fontFamily=Ubuntu Mono;fontSize=14;fontStyle=0" vertex="1" connectable="0" parent="x3sh3fDmEHBjpIoTDSR_-7">
+          <mxGeometry x="0.45" y="1" relative="1" as="geometry">
+            <mxPoint x="32" y="-41" as="offset" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="x3sh3fDmEHBjpIoTDSR_-9" value="" style="endArrow=block;html=1;rounded=0;entryX=1;entryY=0.25;entryDx=0;entryDy=0;endFill=1;" edge="1" parent="1" target="NDYOjcKuVLoNuB3YkQ-f-52">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="400" y="410" as="sourcePoint" />
+            <mxPoint x="470" y="459" as="targetPoint" />
+            <Array as="points">
+              <mxPoint x="400" y="430" />
+            </Array>
+          </mxGeometry>
+        </mxCell>
       </root>
     </mxGraphModel>
   </diagram>
diff --git a/docs/img/OperativeUnit.png b/docs/img/OperativeUnit.png
index 64a947ab89b5c179f8cda30834baa893918774d1..12b344251c2d86da2dd0fdc330bdd96af0867535 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..4b08342baf8b23039bac65422d7b94614007bfd1
--- /dev/null
+++ b/src/hdl/controlUnit.vhd
@@ -0,0 +1,147 @@
+-------------------------------------------------------------------------------
+-- 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_loadShift1           : out std_logic;  -- filtered sample
+    O_loadShift2           : out std_logic;  -- filtered sample
+    O_loadShift3           : 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_loadY               : out std_logic;  -- Control signal to load Y register
+    O_coefSelect          : out std_logic_vector(1 downto 0);
+    O_FilteredSampleValid : out std_logic  -- Data valid signal for filtered sample
+    );
+
+end entity controlUnit;
+architecture archi_operativeUnit of controlUnit is
+
+
+  type T_state is (WAIT_SAMPLE, STORE, PROCESSING_LOOP_1, PROCESSING_LOOP_2_1, PROCESSING_LOOP_2_2, PROCESSING_LOOP_3, OUTPUT_1, OUTPUT_2, OUTPUT_3, ADDRESS_RESET, WAIT_END_SAMPLE);  -- state list
+  signal SR_presentState : T_state;
+  signal SR_futurState   : T_state;
+
+begin
+
+  process (I_clock,I_reset) 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;
+
+  process (SR_presentState, I_inputSampleValid, I_processingDone) is
+  begin
+    case SR_presentState is
+
+      when WAIT_SAMPLE =>
+        if I_inputSampleValid = '1' then
+          SR_futurState <= STORE;
+        else 
+          SR_futurState <= WAIT_SAMPLE;
+        end if;
+
+      when STORE =>
+          SR_futurState <= PROCESSING_LOOP_1;
+
+      when PROCESSING_LOOP_1 =>
+      O_coefSelect <= "00";
+        if I_processingDone = '1' then
+          SR_futurState <= OUTPUT_1;
+        else 
+          SR_futurState <= PROCESSING_LOOP_1;
+        end if;
+      
+      when OUTPUT_1 =>
+        SR_futurState <= PROCESSING_LOOP_2_1;
+
+      when PROCESSING_LOOP_2_1 =>
+      O_coefSelect <= "01";
+        if I_processingDone = '1' then
+          SR_futurState <= ADDRESS_RESET;
+        else 
+          SR_futurState <= PROCESSING_LOOP_2_1;
+        end if;
+
+      when ADDRESS_RESET =>
+        SR_futurState <= PROCESSING_LOOP_2_2;
+
+      when PROCESSING_LOOP_2_2 =>
+      O_coefSelect <= "10";
+        if I_processingDone = '1' then
+          SR_futurState <= OUTPUT_2;
+        else 
+          SR_futurState <= PROCESSING_LOOP_2_2;
+        end if;
+
+      when OUTPUT_2 =>
+        SR_futurState <= PROCESSING_LOOP_3;
+
+      when PROCESSING_LOOP_3 =>
+      O_coefSelect <= "11";
+        if I_processingDone = '1' then
+          SR_futurState <= OUTPUT_3;
+        else 
+          SR_futurState <= PROCESSING_LOOP_3;
+        end if;
+
+      when OUTPUT_3 =>
+        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 => null;
+    end case;
+  end process;
+
+  O_loadShift1           <= '1' when SR_presentState = Store else '0';
+  O_loadShift2           <= '1' when SR_presentState = OUTPUT_1 else '0';
+  O_loadShift3           <= '1' when SR_presentState = OUTPUT_2 else '0';
+  O_initAddress         <= '1' when SR_presentState = Store or SR_presentState = OUTPUT_1 or SR_presentState = OUTPUT_2 or SR_presentState = ADDRESS_RESET else '0';
+  O_incrAddress         <= '1' when SR_presentState = PROCESSING_LOOP_1 or SR_presentState = PROCESSING_LOOP_2_1 or SR_presentState = PROCESSING_LOOP_2_2 or SR_presentState = PROCESSING_LOOP_3 else '0';
+  O_initSum             <= '1' when SR_presentState = Store or SR_presentState = OUTPUT_1 or SR_presentState = OUTPUT_2 else '0';
+  O_loadSum             <= '1' when SR_presentState = PROCESSING_LOOP_1 or SR_presentState = PROCESSING_LOOP_2_1 or SR_presentState = PROCESSING_LOOP_2_2 or SR_presentState = PROCESSING_LOOP_3 else '0';
+  O_loadY               <= '1' when SR_presentState = OUTPUT_3 else '0';
+  O_FilteredSampleValid <= '1' when SR_presentState = WAIT_END_SAMPLE else '0';
+
+
+
+
+
+end architecture archi_operativeUnit;
diff --git a/src/hdl/filterUnit.vhd b/src/hdl/filterUnit.vhd
new file mode 100644
index 0000000000000000000000000000000000000000..ac96ccdf5023741b75ca669803ab6cef946078b4
--- /dev/null
+++ b/src/hdl/filterUnit.vhd
@@ -0,0 +1,125 @@
+-------------------------------------------------------------------------------
+-- 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 filterUnit 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_inputSampleValid    : in  std_logic;
+    O_filteredSample      : out std_logic_vector(10 downto 0);  -- filtered sample
+    O_filteredSampleValid : out std_logic
+    );
+
+end entity filterUnit;
+
+architecture archi_filterUnit of filterUnit 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_loadShift1          : out std_logic;
+      O_loadShift2          : out std_logic;
+      O_loadShift3          : out std_logic;
+      O_initAddress         : out std_logic;
+      O_incrAddress         : out std_logic;
+      O_initSum             : out std_logic;
+      O_loadSum             : out std_logic;
+      O_loadY               : out std_logic;
+      O_coefSelect          : out std_logic_vector(1 downto 0);
+      O_FilteredSampleValid : out std_logic);
+  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_loadShift1     : in  std_logic;
+      I_loadShift2     : in  std_logic;
+      I_loadShift3     : in  std_logic;
+      I_initAddress    : in  std_logic;
+      I_incrAddress    : in  std_logic;
+      I_initSum        : in  std_logic;
+      I_loadSum        : in  std_logic;
+      I_loadY          : in  std_logic;
+      I_coefSelect     : out std_logic_vector(1 downto 0);
+      O_processingDone : out std_logic;
+      O_Y              : out std_logic_vector(10 downto 0));
+  end component operativeUnit;
+
+  signal SC_processingDone : std_logic;
+  signal SC_loadShift1     : std_logic;
+  signal SC_loadShift2     : std_logic;
+  signal SC_loadShift3     : std_logic;
+  signal SC_initAddress    : std_logic;
+  signal SC_incrAddress    : std_logic;
+  signal SC_initSum        : std_logic;
+  signal SC_loadSum        : std_logic;
+  signal SC_loadY          : std_logic;
+  signal SC_coefSelect     : 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_loadShift1          => SC_loadShift1,
+      O_loadShift2          => SC_loadShift2,
+      O_loadShift3          => SC_loadShift3,
+      O_initAddress         => SC_initAddress,
+      O_incrAddress         => SC_incrAddress,
+      O_initSum             => SC_initSum,
+      O_loadSum             => SC_loadSum,
+      O_loadY               => SC_loadY,
+      O_coefSelect          => SC_coefSelect,
+      O_FilteredSampleValid => O_FilteredSampleValid);
+
+  operativeUnit_1 : entity work.operativeUnit
+    port map (
+      I_clock          => I_clock,
+      I_reset          => I_reset,
+      I_inputSample    => I_inputSample,
+      I_loadShift1     => SC_loadShift1,
+      I_loadShift2     => SC_loadShift2,
+      I_loadShift3     => SC_loadShift3,
+      I_initAddress    => SC_initAddress,
+      I_incrAddress    => SC_incrAddress,
+      I_initSum        => SC_initSum,
+      I_loadSum        => SC_loadSum,
+      I_loadY          => SC_loadY,
+      I_coefSelect     => SC_coefSelect,
+      O_processingDone => SC_processingDone,
+      O_Y              => O_filteredSample);
+
+end architecture archi_filterUnit;
diff --git a/src/hdl/mac.vhd b/src/hdl/mac.vhd
new file mode 100644
index 0000000000000000000000000000000000000000..a38ab016b58d1bf18142b34c778108614911d756
--- /dev/null
+++ b/src/hdl/mac.vhd
@@ -0,0 +1,37 @@
+library ieee;
+use ieee.std_logic_1164.all;
+use ieee.numeric_std.all;
+
+entity mac is
+    Port ( clk        : in  STD_LOGIC;
+           rst        : in  STD_LOGIC;
+           sum_rst    : in std_logic;
+           enable     : in std_logic;
+           smpl          : in  signed(10 downto 0); -- 11-bit input a
+           coef          : in  signed(10 downto 0); -- 11-bit input b
+           acc_out    : inout signed(28 downto 0) -- 29-bit acc output
+           );
+end entity mac;
+
+architecture Behavioral of mac is
+    signal acc : signed(28 downto 0) := (others => '0'); -- 29-bit acc
+begin
+
+    -- Process that handles multiplication and accumulation
+    process(clk, rst)
+    begin
+        if rst = '1' then
+            acc <= (others => '0'); -- Reset acc to 0
+        elsif rising_edge(clk) then
+            if (sum_rst = '1') then 
+                acc <= (others => '0');
+            elsif (enable = '1') then
+                acc <= acc_out; -- Add prod to acc
+            end if;
+        end if;
+    end process;
+
+    -- Output the acc
+    acc_out <= acc + smpl * coef;
+
+end Behavioral;
\ No newline at end of file
diff --git a/src/hdl/mux4.vhd b/src/hdl/mux4.vhd
new file mode 100644
index 0000000000000000000000000000000000000000..ed8ff12b23da2934a5d673ad085b9e4620c7e397
--- /dev/null
+++ b/src/hdl/mux4.vhd
@@ -0,0 +1,31 @@
+library ieee;
+use ieee.std_logic_1164.all;
+use ieee.numeric_std.all;
+
+entity mux4to1 is
+    generic (
+        DATA_WIDTH : integer := 11 -- Default width of the input data (can be changed)
+    );
+    Port ( 
+        sel        : in  STD_LOGIC_VECTOR(1 downto 0); -- 2-bit select input to choose between 4 entries
+        a          : in  signed(DATA_WIDTH-1 downto 0); -- 1st input (configurable width)
+        b          : in  signed(DATA_WIDTH-1 downto 0); -- 2nd input (configurable width)
+        c          : in  signed(DATA_WIDTH-1 downto 0); -- 3rd input (configurable width)
+        d          : in  signed(DATA_WIDTH-1 downto 0); -- 4th input (configurable width)
+        mux_out    : out signed(DATA_WIDTH-1 downto 0) -- Output with configurable width
+    );
+end entity mux4to1;
+
+architecture Behavioral of mux4to1 is
+begin
+    process(sel, a, b, c, d)
+    begin
+        case sel is
+            when "00" => mux_out <= a; -- Select input 'a'
+            when "01" => mux_out <= b; -- Select input 'b'
+            when "10" => mux_out <= c; -- Select input 'c'
+            when "11" => mux_out <= d; -- Select input 'd'
+            when others => mux_out <= (others => '0'); -- Default case
+        end case;
+    end process;
+end Behavioral;
\ No newline at end of file
diff --git a/src/hdl/operativeUnit.vhd b/src/hdl/operativeUnit.vhd
new file mode 100644
index 0000000000000000000000000000000000000000..ff5665cab44be00c980217aae0d8ac714cabb0cf
--- /dev/null
+++ b/src/hdl/operativeUnit.vhd
@@ -0,0 +1,380 @@
+-------------------------------------------------------------------------------
+-- 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_loadShift1           : in std_logic;  -- filtered sample
+    I_loadShift2           : in std_logic;  -- filtered sample
+    I_loadShift3           : in std_logic;  -- filtered sample
+    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_loadY               : in std_logic;  -- Control signal to load Y register
+    I_coefSelect          : in std_logic_vector(1 downto 0);
+    O_processingDone : out std_logic;   -- Indicate that processing is done
+    O_Y              : out std_logic_vector(10 downto 0)   -- filtered sample
+    );
+
+end entity operativeUnit;
+
+architecture arch_operativeUnit of operativeUnit is
+  signal SC_smpl  : signed(10 downto 0);
+  signal SC_coef  : signed(10 downto 0);
+  signal SC_result     : signed(28 downto 0);  -- result of the accumulation addition
+  signal SR_Y             : signed(10 downto 0);  -- filtered sample storage register
+  signal SR_readAddress   : integer range 0 to 94;  -- register files read address
+
+  signal SR_readAddress2_1   : integer range 0 to 2;  -- register files read address
+  signal SR_readAddress2_2   : integer range 0 to 1;  -- register files read address
+  signal SR_readAddress3   : integer range 0 to 10;  -- register files read address
+  
+
+  type registerFile1 is array(0 to 94) of signed(10 downto 0);
+  signal sampleReg1        : registerFile1;
+  type registerFile2 is array(0 to 2) of signed(10 downto 0);
+  signal sampleReg2        : registerFile2;
+  type registerFile3 is array(0 to 10) of signed(10 downto 0);
+  signal sampleReg3        : registerFile3;
+  signal maxSum            : integer;
+
+  signal SR_coefRegister1        : registerFile1;
+  signal SR_coefRegister2_1        : registerFile2;
+  type registerFile2_2 is array(0 to 1) of signed(10 downto 0);
+  signal SR_coefRegister2_2        : registerFile2_2;
+  signal SR_coefRegister3        : registerFile3;
+
+  component mac is
+    Port ( clk        : in  STD_LOGIC;
+           rst        : in  STD_LOGIC;
+           sum_rst    : in std_logic;
+           enable: in std_logic;
+           smpl          : in  signed(10 downto 0); -- 11-bit input a
+           coef          : in  signed(10 downto 0); -- 11-bit input b
+           acc_out    : inout signed(28 downto 0) -- 29-bit acc output
+           );
+  end component mac;
+
+  component mux4to1 is
+    generic (
+        DATA_WIDTH : integer := 11 -- Default width of the input data (can be changed)
+    );
+    Port ( 
+        sel        : in  STD_LOGIC_VECTOR(1 downto 0); -- 2-bit select input to choose between 4 entries
+        a          : in  signed(DATA_WIDTH-1 downto 0); -- 1st input (configurable width)
+        b          : in  signed(DATA_WIDTH-1 downto 0); -- 2nd input (configurable width)
+        c          : in  signed(DATA_WIDTH-1 downto 0); -- 3rd input (configurable width)
+        d          : in  signed(DATA_WIDTH-1 downto 0); -- 4th input (configurable width)
+        mux_out    : out signed(DATA_WIDTH-1 downto 0) -- Output with configurable width
+    );
+end component mux4to1;
+
+begin
+
+  mac1 : mac
+    port map (
+      clk        => I_clock,
+      rst        => I_reset,
+      sum_rst    => I_initSum,
+      enable     => I_loadSum,
+      smpl       => SC_smpl,
+      coef       => SC_coef,
+      acc_out    => SC_result
+    );
+
+--  mux_coef : mux4to1 
+--    port map(
+--      sel        => I_coefSelect,
+--      a          => SR_coefRegister1(SR_readAddress),
+--      b          => SR_coefRegister2_1(SR_readAddress),
+--      c          => SR_coefRegister2_2(SR_readAddress),
+--      d          => SR_coefRegister3(SR_readAddress),
+--      mux_out    => SC_coef
+--      );
+      
+      
+    SR_readAddress2_1 <=   SR_readAddress when(I_coefSelect = "01") else 0;
+    SR_readAddress2_2 <=   SR_readAddress when(I_coefSelect = "10") else 0;
+    SR_readAddress3 <=   SR_readAddress when(I_coefSelect = "11") else 0;
+      
+    SC_coef <=  SR_coefRegister1(SR_readAddress)   when(I_coefSelect = "00")else
+                SR_coefRegister2_1(SR_readAddress2_1) when(I_coefSelect = "01")else
+                SR_coefRegister2_2(SR_readAddress2_2) when(I_coefSelect = "10")else
+                SR_coefRegister3(SR_readAddress3);
+    
+--  mux_smpl : mux4to1 
+--    port map(
+--      sel        => I_coefSelect,
+--      a          => sampleReg1(SR_readAddress),
+--      b          => sampleReg2(SR_readAddress2_1),
+--      c          => sampleReg3(SR_readAddress2_2),
+--      d          => sampleReg3(SR_readAddress3),
+--      mux_out    => SC_smpl
+--      );
+      
+      SC_smpl <=  sampleReg1(SR_readAddress)   when(I_coefSelect = "00")else
+                sampleReg2(SR_readAddress2_1) when(I_coefSelect = "01")else
+                sampleReg3(SR_readAddress3);
+
+  shift : process (I_clock, I_reset) is
+  begin  -- process shift
+    if I_reset = '1' then               -- asynchronous reset (active high)
+      sampleReg1 <= (others => (others => '0'));
+      sampleReg2 <= (others => (others => '0'));
+      sampleReg3 <= (others => (others => '0'));
+    elsif rising_edge(I_clock) then
+      if I_loadShift1 = '1' then
+
+        for i in 0 to 93 loop 
+
+        sampleReg1(i+1) <= sampleReg1(i);
+
+        end loop;
+
+        sampleReg1(0) <= Signed(I_inputSample);
+      
+      elsif I_loadShift2 = '1' then
+
+        for i in 0 to 1 loop 
+  
+        sampleReg2(i+1) <= sampleReg2(i);
+
+       end loop;
+
+       sampleReg2(0) <= signed(SC_result(20 downto 10));
+
+      elsif I_loadShift3 = '1' then
+
+        for i in 0 to 9 loop 
+
+        sampleReg3(i+1) <= sampleReg3(i);
+
+        end loop;
+
+        sampleReg3(0) <= signed(SC_result(19 downto 9));
+
+      end if;
+
+    end if;
+  end process shift;
+
+  incr_address : process (I_clock, I_reset) is
+  begin
+    if I_reset = '1' then               -- asynchronous reset (active high)
+      SR_readAddress <= 0;
+    
+    elsif rising_edge(I_clock) then
+      if I_initAddress = '1' then
+        SR_readAddress <= 0; 
+      elsif I_incrAddress = '1' then
+        SR_readAddress <= SR_readAddress+1;
+      end if;
+
+    end if;
+  end process incr_address;
+
+  maxSumSel : process (I_coefSelect) is
+  begin 
+    case I_coefSelect is
+      when "00" =>
+        maxSum <= 93;
+      when "01" =>
+        maxSum <= 1;
+      when "10" =>
+        maxSum <= 0;
+      when "11" =>
+        maxSum <= 9;
+      when others => 
+        maxSum <= 0;
+    end case;
+  end process maxSumSel;
+ 
+  O_processingDone <= '1' when SR_readAddress = maxSum else '0' ; 
+
+  -- SC_multOperand1 <= SR_shiftRegister(SR_readAddress) ;   -- 8 bits
+  -- SC_multOperand2 <= SR_coefRegister(SR_readAddress) ;    -- 8 bits
+  -- SC_MultResult   <= SC_multOperand1 * SC_multOperand2 ;  -- 16 bits
+  -- SC_addResult    <= resize(SC_MultResult, SC_addResult'length) + SR_sum;
+
+  -- sum_acc : process (I_clock, I_reset) is
+  -- begin
+  --   if I_reset = '1' then               -- asynchronous reset (active high)
+  --     SR_sum <= (others => '0');
+  --   elsif rising_edge(I_clock) then
+  --     if I_initSum = '1' then
+  --       SR_sum <= (others => '0');
+  --     elsif I_loadSum = '1' then
+  --       SR_sum <= SC_addResult;
+  --     end if;
+
+  --   end if;
+  -- end process sum_acc;
+
+  store_result : process (I_clock, I_reset) is
+  begin
+      if I_reset = '1' then               -- asynchronous reset (active high)
+        SR_Y <= (others => '0');
+      elsif rising_edge(I_clock) then
+        if I_loadY = '1' then
+          SR_Y <= SC_result(20 downto 10); --TODO: changer la sortie
+        end if;
+  
+      end if;
+  end process store_result;
+
+  O_Y <= std_logic_vector(SR_Y);
+
+
+-- Low-pass filter provided with octave (or Matlab ;)) command
+--fir1(15, .001)/sqrt(sum(fir1(15, .001).^2))*2^6
+SR_coefRegister1 <= (to_signed(-1, 11),
+to_signed(-1, 11),
+to_signed(-1, 11),
+to_signed(-1, 11),
+to_signed(-1, 11),
+to_signed(-1, 11),
+to_signed(-2, 11),
+to_signed(-2, 11),
+to_signed(-2, 11),
+to_signed(-3, 11),
+to_signed(-3, 11),
+to_signed(-3, 11),
+to_signed(-4, 11),
+to_signed(-4, 11),
+to_signed(-5, 11),
+to_signed(-5, 11),
+to_signed(-6, 11),
+to_signed(-6, 11),
+to_signed(-7, 11),
+to_signed(-7, 11),
+to_signed(-8, 11),
+to_signed(-8, 11),
+to_signed(-9, 11),
+to_signed(-10, 11),
+to_signed(-10, 11),
+to_signed(-11, 11),
+to_signed(-11, 11),
+to_signed(-12, 11),
+to_signed(-13, 11),
+to_signed(-13, 11),
+to_signed(-14, 11),
+to_signed(-14, 11),
+to_signed(-15, 11),
+to_signed(-15, 11),
+to_signed(-16, 11),
+to_signed(-16, 11),
+to_signed(-17, 11),
+to_signed(-17, 11),
+to_signed(-18, 11),
+to_signed(-18, 11),
+to_signed(-18, 11),
+to_signed(-19, 11),
+to_signed(-19, 11),
+to_signed(-19, 11),
+to_signed(-19, 11),
+to_signed(-19, 11),
+to_signed(-19, 11),
+to_signed(1004, 11),
+to_signed(-19, 11),
+to_signed(-19, 11),
+to_signed(-19, 11),
+to_signed(-19, 11),
+to_signed(-19, 11),
+to_signed(-19, 11),
+to_signed(-18, 11),
+to_signed(-18, 11),
+to_signed(-18, 11),
+to_signed(-17, 11),
+to_signed(-17, 11),
+to_signed(-16, 11),
+to_signed(-16, 11),
+to_signed(-15, 11),
+to_signed(-15, 11),
+to_signed(-14, 11),
+to_signed(-14, 11),
+to_signed(-13, 11),
+to_signed(-13, 11),
+to_signed(-12, 11),
+to_signed(-11, 11),
+to_signed(-11, 11),
+to_signed(-10, 11),
+to_signed(-10, 11),
+to_signed(-9, 11),
+to_signed(-8, 11),
+to_signed(-8, 11),
+to_signed(-7, 11),
+to_signed(-7, 11),
+to_signed(-6, 11),
+to_signed(-6, 11),
+to_signed(-5, 11),
+to_signed(-5, 11),
+to_signed(-4, 11),
+to_signed(-4, 11),
+to_signed(-3, 11),
+to_signed(-3, 11),
+to_signed(-3, 11),
+to_signed(-2, 11),
+to_signed(-2, 11),
+to_signed(-2, 11),
+to_signed(-1, 11),
+to_signed(-1, 11),
+to_signed(-1, 11),
+to_signed(-1, 11),
+to_signed(-1, 11),
+to_signed(-1, 11));
+
+
+SR_coefRegister2_1 <= (to_signed(480, 11),
+to_signed(-777, 11),
+to_signed(480, 11));
+
+SR_coefRegister2_2 <= (to_signed(777, 11),
+to_signed(-449, 11));
+
+SR_coefRegister3 <= (to_signed(-119, 11),
+to_signed(122, 11),
+to_signed(149, 11),
+to_signed(191, 11),
+to_signed(226, 11),
+to_signed(239, 11),
+to_signed(226, 11),
+to_signed(191, 11),
+to_signed(149, 11),
+to_signed(122, 11),
+to_signed(-119, 11));
+
+
+
+end architecture arch_operativeUnit;
diff --git a/src/hdl/tb_firUnit.vhd b/src/hdl/tb_firUnit.vhd
new file mode 100644
index 0000000000000000000000000000000000000000..614b3dc83c7a8262707f2ef24df123b73ad26804
--- /dev/null
+++ b/src/hdl/tb_firUnit.vhd
@@ -0,0 +1,79 @@
+-------------------------------------------------------------------------------
+-- Title      : FirUnit
+-- Project    : 
+-------------------------------------------------------------------------------
+-- File       : operativeUnit.vhd
+-- Author     : Jean-Noel BAZIN  <jnbazin@pc-disi-026.enst-bretagne.fr>
+-- Company    : 
+-- Created    : 2018-04-11
+-- Last update: 2019-02-26
+-- Platform   : 
+-- Standard   : VHDL'93/02
+-------------------------------------------------------------------------------
+-- Description: 8 bit FIR
+-------------------------------------------------------------------------------
+-- Copyright (c) 2018 
+-------------------------------------------------------------------------------
+-- Revisions  :
+-- Date        Version  Author  Description
+-- 2018-04-11  1.0      jnbazin Created
+-- 2018-04-18  1.1      marzel	Modified to add more test inputs
+-- 2019-02-26  1.1      marzel  Adapted to 16-tap filtering
+-------------------------------------------------------------------------------
+
+library ieee;
+use ieee.std_logic_1164.all;
+use ieee.numeric_std.all;
+
+entity tb_filterUnit is
+end entity tb_filterUnit;
+
+architecture archi_tb_filterUnit of tb_filterUnit is
+  component filterUnit is
+    port (
+      I_clock               : in  std_logic;
+      I_reset               : in  std_logic;
+      I_inputSample         : in  std_logic_vector(10 downto 0);
+      I_inputSampleValid    : in  std_logic;
+      O_filteredSample      : out std_logic_vector(10 downto 0);
+      O_filteredSampleValid : out std_logic);
+  end component filterUnit;
+
+  signal SC_clock               : std_logic := '0';
+  signal SC_reset               : std_logic;
+  signal SC_inputSample         : std_logic_vector(10 downto 0);
+  signal SC_inputSampleValid    : std_logic:='0';
+  signal SC_filteredSample      : std_logic_vector(10 downto 0);
+  signal SC_filteredSampleValid : std_logic;
+
+begin
+
+  SC_clock <= not SC_clock after 5 ns;
+  SC_reset <= '0', '1' after 19 ns, '0' after 57 ns;
+
+  -- Sample period = 20 clk period
+  SC_inputSampleValid <= not SC_inputSampleValid after 100 ns;
+
+  -- Null signal followed by a Dirac and then an arbitrary sequence
+  SC_inputSample <= "00000000000",
+                    "01111111111" after 401 ns,
+                    "00000000000" after 5601 ns;
+
+
+-- the filter output on 8 bits is a sequence of signed numbers (with the  assumption
+-- of rounding the output, so the accuracy can be slightly different depending
+-- on your final stage):
+  -- 0 2 3 6 10 15 20 24 26 26 24 20 15 10 6 3 2 0 0 0 1 2 3 5 7 7 8  4 -1 -8
+  -- -17 -27 -38 -49 -61 -71 -82 -93 -101 -107 -112 -113 -116
+  
+
+  filterUnit_1 : entity work.filterUnit
+    port map (
+      I_clock               => SC_clock,
+      I_reset               => SC_reset,
+      I_inputSample         => SC_inputSample,
+      I_inputSampleValid    => SC_inputSampleValid,
+      O_filteredSample      => SC_filteredSample,
+      O_filteredSampleValid => SC_filteredSampleValid);
+
+end architecture archi_tb_filterUnit;