소스 검색

added vhdl process graphs

subDesTagesMitExtraKaese 3 년 전
부모
커밋
92b0d3fb8d
8개의 변경된 파일768개의 추가작업 그리고 4개의 파일을 삭제
  1. 11 3
      README.md
  2. 87 0
      images/button_debounce.drawio
  3. BIN
      images/button_debounce.png
  4. 546 0
      images/data_graph.drawio
  5. BIN
      images/data_graph.png
  6. 0 1
      images/data_graph.xml
  7. 124 0
      images/matrix_multiplex.drawio
  8. BIN
      images/matrix_multiplex.png

+ 11 - 3
README.md

@@ -2,10 +2,18 @@
 
 Pong game on Altera FPGA as exercise in Hardware-/Software-Codesign
 
-## Datenflussdiagramm
+## Data flow
 ![](images/data_graph.png)
 
-## Programmablaufplan des C Programms
+## Flowcharts of the VHDL program
+
+### Multiplex process
+![](images/matrix_multiplex.png)
+
+### Debounce process
+![](images/button_debounce.png)
+
+## Flowcharts of the C program
 Below images show flowcharts for all featured software functions.
 Fist chart feature the main game function. Subfunctions are described below.
 See:    
@@ -18,7 +26,7 @@ See:
 
 ---
 
-### Subfunctions  Flowcharts
+### Subfunctions Flowcharts
 Flowchart of draw function. Function output the virtual screen to the output pins to be processed by VHDL
 
 ![](images/draw.png)

+ 87 - 0
images/button_debounce.drawio

@@ -0,0 +1,87 @@
+<mxfile host="65bd71144e" modified="2021-01-21T12:39:13.224Z" agent="5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Code/1.52.1 Chrome/83.0.4103.122 Electron/9.3.5 Safari/537.36" etag="U1DblBtae2Tq2P1CyZ1p" version="13.10.0" type="embed">
+    <diagram id="mV5jdOatQLIAx37v0qYi" name="Page-1">
+        <mxGraphModel dx="461" dy="417" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
+            <root>
+                <mxCell id="0"/>
+                <mxCell id="1" parent="0"/>
+                <mxCell id="4" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="2" target="3" edge="1">
+                    <mxGeometry relative="1" as="geometry"/>
+                </mxCell>
+                <mxCell id="2" value="button_debounce&lt;br&gt;start" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1">
+                    <mxGeometry x="80" y="1120" width="120" height="80" as="geometry"/>
+                </mxCell>
+                <mxCell id="27" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="3" target="26" edge="1">
+                    <mxGeometry relative="1" as="geometry"/>
+                </mxCell>
+                <mxCell id="3" value="button_timer &amp;lt;= 0;" style="whiteSpace=wrap;html=1;align=center;spacingLeft=0;" parent="1" vertex="1">
+                    <mxGeometry x="80" y="1240" width="120" height="40" as="geometry"/>
+                </mxCell>
+                <mxCell id="33" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="5" target="32">
+                    <mxGeometry relative="1" as="geometry"/>
+                </mxCell>
+                <mxCell id="40" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="5" target="39">
+                    <mxGeometry relative="1" as="geometry"/>
+                </mxCell>
+                <mxCell id="5" value="button_timer = 2**20-1" style="rhombus;whiteSpace=wrap;html=1;" parent="1" vertex="1">
+                    <mxGeometry x="85" y="1440" width="110" height="100" as="geometry"/>
+                </mxCell>
+                <mxCell id="28" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="26" target="5" edge="1">
+                    <mxGeometry relative="1" as="geometry"/>
+                </mxCell>
+                <mxCell id="26" value="wait for&amp;nbsp;rising_edge(clk)" style="shape=process;whiteSpace=wrap;html=1;backgroundOutline=1;align=center;" parent="1" vertex="1">
+                    <mxGeometry x="47" y="1360" width="186" height="40" as="geometry"/>
+                </mxCell>
+                <mxCell id="35" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="32" target="34">
+                    <mxGeometry relative="1" as="geometry"/>
+                </mxCell>
+                <mxCell id="32" value="button_timer &amp;lt;= 0;" style="whiteSpace=wrap;html=1;align=center;spacingLeft=0;" vertex="1" parent="1">
+                    <mxGeometry x="80" y="1580" width="120" height="40" as="geometry"/>
+                </mxCell>
+                <mxCell id="37" value="loop" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" edge="1" parent="1" source="34">
+                    <mxGeometry x="-0.3333" y="14" relative="1" as="geometry">
+                        <mxPoint x="140" y="1790" as="targetPoint"/>
+                        <mxPoint as="offset"/>
+                    </mxGeometry>
+                </mxCell>
+                <mxCell id="41" value="finally" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" edge="1" parent="1" source="34">
+                    <mxGeometry x="-0.9621" y="7" relative="1" as="geometry">
+                        <mxPoint x="140" y="1320" as="targetPoint"/>
+                        <Array as="points">
+                            <mxPoint x="450" y="1704"/>
+                            <mxPoint x="450" y="1320"/>
+                        </Array>
+                        <mxPoint as="offset"/>
+                    </mxGeometry>
+                </mxCell>
+                <mxCell id="34" value="for id in 0 to 7" style="rhombus;whiteSpace=wrap;html=1;" vertex="1" parent="1">
+                    <mxGeometry x="85" y="1654" width="110" height="100" as="geometry"/>
+                </mxCell>
+                <mxCell id="38" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="36" target="34">
+                    <mxGeometry relative="1" as="geometry">
+                        <Array as="points">
+                            <mxPoint x="140" y="1850"/>
+                            <mxPoint x="30" y="1850"/>
+                            <mxPoint x="30" y="1704"/>
+                        </Array>
+                    </mxGeometry>
+                </mxCell>
+                <mxCell id="36" value="button_states(id) &amp;lt;= buttons(id);" style="whiteSpace=wrap;html=1;align=center;spacingLeft=0;" vertex="1" parent="1">
+                    <mxGeometry x="50" y="1790" width="180" height="40" as="geometry"/>
+                </mxCell>
+                <mxCell id="42" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" edge="1" parent="1" source="39">
+                    <mxGeometry relative="1" as="geometry">
+                        <mxPoint x="140" y="1320" as="targetPoint"/>
+                        <Array as="points">
+                            <mxPoint x="335" y="1704"/>
+                            <mxPoint x="450" y="1704"/>
+                            <mxPoint x="450" y="1320"/>
+                        </Array>
+                    </mxGeometry>
+                </mxCell>
+                <mxCell id="39" value="button_timer &amp;lt;= button_timer + 1;" style="whiteSpace=wrap;html=1;align=center;spacingLeft=0;" vertex="1" parent="1">
+                    <mxGeometry x="240" y="1580" width="190" height="40" as="geometry"/>
+                </mxCell>
+            </root>
+        </mxGraphModel>
+    </diagram>
+</mxfile>

BIN
images/button_debounce.png


+ 546 - 0
images/data_graph.drawio

@@ -0,0 +1,546 @@
+<mxfile host="65bd71144e" modified="2021-01-21T12:41:44.228Z" agent="5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Code/1.52.1 Chrome/83.0.4103.122 Electron/9.3.5 Safari/537.36" etag="NO1Kxh57NsQxOEffuRte" version="13.10.0" type="embed">
+    <diagram id="dndTqMl42t8FOz0hNXP6" name="Page-1">
+        <mxGraphModel dx="309" dy="417" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
+            <root>
+                <mxCell id="0"/>
+                <mxCell id="1" parent="0"/>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-8" value="" style="rounded=0;whiteSpace=wrap;html=1;strokeColor=none;fillColor=#D4E1F5;" parent="1" vertex="1">
+                    <mxGeometry x="20" y="50" width="187" height="310" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-7" value="" style="rounded=0;whiteSpace=wrap;html=1;strokeColor=none;fillColor=#FFF2CC;" parent="1" vertex="1">
+                    <mxGeometry x="207" y="50" width="263" height="310" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-11" value="" style="endArrow=none;dashed=1;html=1;strokeColor=#949494;exitX=1;exitY=1;exitDx=0;exitDy=0;entryX=0;entryY=0;entryDx=0;entryDy=0;" parent="1" source="nIfb_Fn2fhgGED4d8qRQ-8" target="nIfb_Fn2fhgGED4d8qRQ-7" edge="1">
+                    <mxGeometry width="50" height="50" relative="1" as="geometry">
+                        <mxPoint x="207" y="349" as="sourcePoint"/>
+                        <mxPoint x="207" y="110" as="targetPoint"/>
+                    </mxGeometry>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-10" value="" style="rounded=0;whiteSpace=wrap;html=1;strokeColor=none;fillColor=#F8CECC;" parent="1" vertex="1">
+                    <mxGeometry x="470" y="50" width="310" height="310" as="geometry"/>
+                </mxCell>
+                <mxCell id="EJB7Lrfot6i9KQ9_-2WL-1" value="" style="rounded=1;whiteSpace=wrap;html=1;shadow=1;fillColor=none;" parent="1" vertex="1">
+                    <mxGeometry x="40" y="120" width="80" height="80" as="geometry"/>
+                </mxCell>
+                <mxCell id="EJB7Lrfot6i9KQ9_-2WL-2" value="&lt;div&gt;Buttons&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;" style="rounded=1;whiteSpace=wrap;html=1;shadow=1;fillColor=none;" parent="1" vertex="1">
+                    <mxGeometry x="30" y="230" width="100" height="60" as="geometry"/>
+                </mxCell>
+                <mxCell id="EJB7Lrfot6i9KQ9_-2WL-3" value="" style="endArrow=none;dashed=1;html=1;strokeColor=#949494;exitX=1;exitY=1;exitDx=0;exitDy=0;entryX=1;entryY=0;entryDx=0;entryDy=0;" parent="1" source="nIfb_Fn2fhgGED4d8qRQ-7" target="nIfb_Fn2fhgGED4d8qRQ-7" edge="1">
+                    <mxGeometry width="50" height="50" relative="1" as="geometry">
+                        <mxPoint x="450" y="350" as="sourcePoint"/>
+                        <mxPoint x="450" y="90" as="targetPoint"/>
+                    </mxGeometry>
+                </mxCell>
+                <mxCell id="EJB7Lrfot6i9KQ9_-2WL-4" value="&lt;font style=&quot;font-size: 32px&quot;&gt;Hardware&lt;/font&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
+                    <mxGeometry x="70" y="60" width="90" height="30" as="geometry"/>
+                </mxCell>
+                <mxCell id="EJB7Lrfot6i9KQ9_-2WL-6" value="&lt;font style=&quot;font-size: 32px&quot;&gt;Software&lt;/font&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
+                    <mxGeometry x="580" y="60" width="90" height="30" as="geometry"/>
+                </mxCell>
+                <mxCell id="EJB7Lrfot6i9KQ9_-2WL-12" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;strokeColor=#000000;startArrow=classic;startFill=1;endArrow=none;endFill=0;" parent="1" source="EJB7Lrfot6i9KQ9_-2WL-7" target="EJB7Lrfot6i9KQ9_-2WL-2" edge="1">
+                    <mxGeometry relative="1" as="geometry"/>
+                </mxCell>
+                <mxCell id="EJB7Lrfot6i9KQ9_-2WL-33" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;startArrow=none;startFill=0;endArrow=classic;endFill=1;strokeColor=#000000;" parent="1" source="EJB7Lrfot6i9KQ9_-2WL-7" target="EJB7Lrfot6i9KQ9_-2WL-23" edge="1">
+                    <mxGeometry relative="1" as="geometry">
+                        <Array as="points">
+                            <mxPoint x="450" y="260"/>
+                            <mxPoint x="450" y="201"/>
+                        </Array>
+                    </mxGeometry>
+                </mxCell>
+                <mxCell id="EJB7Lrfot6i9KQ9_-2WL-7" value="&lt;div&gt;button_&lt;/div&gt;&lt;div&gt;debounce&lt;br&gt;&lt;/div&gt;" style="shape=parallelogram;perimeter=parallelogramPerimeter;whiteSpace=wrap;html=1;fixedSize=1;shadow=1;fillColor=none;strokeWidth=2;" parent="1" vertex="1">
+                    <mxGeometry x="278.5" y="240" width="100" height="40" as="geometry"/>
+                </mxCell>
+                <mxCell id="EJB7Lrfot6i9KQ9_-2WL-8" value="8 x 12&lt;br&gt;matrix_s" style="shape=cylinder3;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;size=15;shadow=1;fillColor=none;strokeWidth=2;" parent="1" vertex="1">
+                    <mxGeometry x="370" y="120" width="60" height="80" as="geometry"/>
+                </mxCell>
+                <mxCell id="EJB7Lrfot6i9KQ9_-2WL-10" value="" style="endArrow=classic;html=1;entryX=0.999;entryY=0.355;entryDx=0;entryDy=0;entryPerimeter=0;exitX=0;exitY=0;exitDx=0;exitDy=0;" parent="1" source="EJB7Lrfot6i9KQ9_-2WL-13" target="EJB7Lrfot6i9KQ9_-2WL-1" edge="1">
+                    <mxGeometry width="50" height="50" relative="1" as="geometry">
+                        <mxPoint x="240" y="140" as="sourcePoint"/>
+                        <mxPoint x="270" y="230" as="targetPoint"/>
+                    </mxGeometry>
+                </mxCell>
+                <mxCell id="EJB7Lrfot6i9KQ9_-2WL-15" value="matrix_rows" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];labelBackgroundColor=#D4E1F5;" parent="EJB7Lrfot6i9KQ9_-2WL-10" vertex="1" connectable="0">
+                    <mxGeometry x="0.5511" y="1" relative="1" as="geometry">
+                        <mxPoint x="10.669999999999993" y="-9.39" as="offset"/>
+                    </mxGeometry>
+                </mxCell>
+                <mxCell id="EJB7Lrfot6i9KQ9_-2WL-11" value="" style="endArrow=classic;html=1;entryX=1;entryY=0.75;entryDx=0;entryDy=0;exitX=0;exitY=0.25;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" target="EJB7Lrfot6i9KQ9_-2WL-1" edge="1">
+                    <mxGeometry width="50" height="50" relative="1" as="geometry">
+                        <mxPoint x="240.00000000000006" y="180" as="sourcePoint"/>
+                        <mxPoint x="160" y="180" as="targetPoint"/>
+                    </mxGeometry>
+                </mxCell>
+                <mxCell id="EJB7Lrfot6i9KQ9_-2WL-16" value="matrix_columns" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];labelBackgroundColor=#D4E1F5;" parent="EJB7Lrfot6i9KQ9_-2WL-11" vertex="1" connectable="0">
+                    <mxGeometry x="0.6549" y="-1" relative="1" as="geometry">
+                        <mxPoint x="26.17" y="-8" as="offset"/>
+                    </mxGeometry>
+                </mxCell>
+                <mxCell id="EJB7Lrfot6i9KQ9_-2WL-14" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.556;entryDx=0;entryDy=0;entryPerimeter=0;startArrow=classic;startFill=1;endArrow=none;endFill=0;strokeColor=#000000;" parent="1" source="EJB7Lrfot6i9KQ9_-2WL-13" target="EJB7Lrfot6i9KQ9_-2WL-8" edge="1">
+                    <mxGeometry relative="1" as="geometry"/>
+                </mxCell>
+                <mxCell id="EJB7Lrfot6i9KQ9_-2WL-13" value="&lt;div&gt;matrix_&lt;/div&gt;&lt;div&gt;multiplex&lt;/div&gt;" style="shape=parallelogram;perimeter=parallelogramPerimeter;whiteSpace=wrap;html=1;fixedSize=1;shadow=1;fillColor=none;strokeWidth=2;" parent="1" vertex="1">
+                    <mxGeometry x="230" y="140" width="100" height="50" as="geometry"/>
+                </mxCell>
+                <mxCell id="EJB7Lrfot6i9KQ9_-2WL-17" value="" style="endArrow=none;html=1;strokeColor=#000000;" parent="1" edge="1">
+                    <mxGeometry width="50" height="50" relative="1" as="geometry">
+                        <mxPoint x="212" y="152" as="sourcePoint"/>
+                        <mxPoint x="215" y="145" as="targetPoint"/>
+                    </mxGeometry>
+                </mxCell>
+                <mxCell id="EJB7Lrfot6i9KQ9_-2WL-18" value="12" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
+                    <mxGeometry x="210" y="150" width="20" height="10" as="geometry"/>
+                </mxCell>
+                <mxCell id="EJB7Lrfot6i9KQ9_-2WL-19" value="" style="endArrow=none;html=1;strokeColor=#000000;" parent="1" edge="1">
+                    <mxGeometry width="50" height="50" relative="1" as="geometry">
+                        <mxPoint x="212" y="183" as="sourcePoint"/>
+                        <mxPoint x="215.00000000000006" y="176" as="targetPoint"/>
+                    </mxGeometry>
+                </mxCell>
+                <mxCell id="EJB7Lrfot6i9KQ9_-2WL-20" value="8" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
+                    <mxGeometry x="215" y="182" width="8" height="10" as="geometry"/>
+                </mxCell>
+                <mxCell id="EJB7Lrfot6i9KQ9_-2WL-21" value="" style="endArrow=none;html=1;strokeColor=#000000;" parent="1" edge="1">
+                    <mxGeometry width="50" height="50" relative="1" as="geometry">
+                        <mxPoint x="258" y="263" as="sourcePoint"/>
+                        <mxPoint x="261" y="256" as="targetPoint"/>
+                    </mxGeometry>
+                </mxCell>
+                <mxCell id="EJB7Lrfot6i9KQ9_-2WL-22" value="8" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
+                    <mxGeometry x="261" y="262" width="8" height="10" as="geometry"/>
+                </mxCell>
+                <mxCell id="EJB7Lrfot6i9KQ9_-2WL-40" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;entryPerimeter=0;startArrow=none;startFill=0;endArrow=classic;endFill=1;strokeColor=#000000;" parent="1" source="EJB7Lrfot6i9KQ9_-2WL-23" target="EJB7Lrfot6i9KQ9_-2WL-8" edge="1">
+                    <mxGeometry relative="1" as="geometry">
+                        <Array as="points">
+                            <mxPoint x="635" y="160"/>
+                        </Array>
+                    </mxGeometry>
+                </mxCell>
+                <mxCell id="EJB7Lrfot6i9KQ9_-2WL-41" value="matrix instructions" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];labelBackgroundColor=#F8CECC;" parent="EJB7Lrfot6i9KQ9_-2WL-40" vertex="1" connectable="0">
+                    <mxGeometry x="0.6836" relative="1" as="geometry">
+                        <mxPoint x="51.879999999999995" y="7" as="offset"/>
+                    </mxGeometry>
+                </mxCell>
+                <mxCell id="EJB7Lrfot6i9KQ9_-2WL-34" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;startArrow=classic;startFill=1;endArrow=classic;endFill=1;strokeColor=#000000;curved=1;" parent="1" source="EJB7Lrfot6i9KQ9_-2WL-25" edge="1">
+                    <mxGeometry relative="1" as="geometry">
+                        <mxPoint x="625" y="231" as="targetPoint"/>
+                    </mxGeometry>
+                </mxCell>
+                <mxCell id="EJB7Lrfot6i9KQ9_-2WL-25" value="Left Paddle" style="swimlane;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;shadow=1;fillColor=none;" parent="1" vertex="1">
+                    <mxGeometry x="580" y="271" width="90" height="78" as="geometry"/>
+                </mxCell>
+                <mxCell id="EJB7Lrfot6i9KQ9_-2WL-26" value="y position" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="EJB7Lrfot6i9KQ9_-2WL-25" vertex="1">
+                    <mxGeometry y="26" width="90" height="26" as="geometry"/>
+                </mxCell>
+                <mxCell id="EJB7Lrfot6i9KQ9_-2WL-27" value="length" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="EJB7Lrfot6i9KQ9_-2WL-25" vertex="1">
+                    <mxGeometry y="52" width="90" height="26" as="geometry"/>
+                </mxCell>
+                <mxCell id="EJB7Lrfot6i9KQ9_-2WL-35" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.607;entryY=1.004;entryDx=0;entryDy=0;entryPerimeter=0;startArrow=classic;startFill=1;endArrow=classic;endFill=1;strokeColor=#000000;curved=1;" parent="1" source="EJB7Lrfot6i9KQ9_-2WL-29" target="EJB7Lrfot6i9KQ9_-2WL-23" edge="1">
+                    <mxGeometry relative="1" as="geometry"/>
+                </mxCell>
+                <mxCell id="EJB7Lrfot6i9KQ9_-2WL-29" value="Ball" style="swimlane;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;shadow=1;fillColor=none;" parent="1" vertex="1">
+                    <mxGeometry x="680" y="271" width="90" height="78" as="geometry"/>
+                </mxCell>
+                <mxCell id="EJB7Lrfot6i9KQ9_-2WL-30" value="x, y coordinate" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="EJB7Lrfot6i9KQ9_-2WL-29" vertex="1">
+                    <mxGeometry y="26" width="90" height="26" as="geometry"/>
+                </mxCell>
+                <mxCell id="EJB7Lrfot6i9KQ9_-2WL-31" value="x, y velocity" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="EJB7Lrfot6i9KQ9_-2WL-29" vertex="1">
+                    <mxGeometry y="52" width="90" height="26" as="geometry"/>
+                </mxCell>
+                <mxCell id="EJB7Lrfot6i9KQ9_-2WL-39" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.25;entryY=1;entryDx=0;entryDy=0;startArrow=classic;startFill=1;endArrow=classic;endFill=1;strokeColor=#000000;curved=1;" parent="1" source="EJB7Lrfot6i9KQ9_-2WL-36" target="EJB7Lrfot6i9KQ9_-2WL-23" edge="1">
+                    <mxGeometry relative="1" as="geometry"/>
+                </mxCell>
+                <mxCell id="EJB7Lrfot6i9KQ9_-2WL-36" value="Right Paddle" style="swimlane;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;shadow=1;fillColor=none;strokeWidth=1;" parent="1" vertex="1">
+                    <mxGeometry x="480" y="271" width="90" height="78" as="geometry"/>
+                </mxCell>
+                <mxCell id="EJB7Lrfot6i9KQ9_-2WL-37" value="y position" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="EJB7Lrfot6i9KQ9_-2WL-36" vertex="1">
+                    <mxGeometry y="26" width="90" height="26" as="geometry"/>
+                </mxCell>
+                <mxCell id="EJB7Lrfot6i9KQ9_-2WL-38" value="length" style="text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;" parent="EJB7Lrfot6i9KQ9_-2WL-36" vertex="1">
+                    <mxGeometry y="52" width="90" height="26" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-1" value="" style="endArrow=none;html=1;strokeColor=#000000;" parent="1" edge="1">
+                    <mxGeometry width="50" height="50" relative="1" as="geometry">
+                        <mxPoint x="337" y="169" as="sourcePoint"/>
+                        <mxPoint x="340" y="162" as="targetPoint"/>
+                    </mxGeometry>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-2" value="&lt;div&gt;96&lt;/div&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
+                    <mxGeometry x="335" y="167" width="20" height="10" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-3" value="8" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
+                    <mxGeometry x="386" y="262" width="8" height="10" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-4" value="" style="endArrow=none;html=1;strokeColor=#000000;" parent="1" edge="1">
+                    <mxGeometry width="50" height="50" relative="1" as="geometry">
+                        <mxPoint x="383" y="263" as="sourcePoint"/>
+                        <mxPoint x="386" y="256" as="targetPoint"/>
+                    </mxGeometry>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-5" value="20" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
+                    <mxGeometry x="443" y="162" width="20" height="10" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-6" value="" style="endArrow=none;html=1;strokeColor=#000000;" parent="1" edge="1">
+                    <mxGeometry width="50" height="50" relative="1" as="geometry">
+                        <mxPoint x="445" y="164" as="sourcePoint"/>
+                        <mxPoint x="448" y="157" as="targetPoint"/>
+                    </mxGeometry>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-12" value="&lt;font style=&quot;font-size: 32px&quot;&gt;VHDL&lt;/font&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
+                    <mxGeometry x="283.5" y="60" width="90" height="30" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-110" value="" style="group" parent="1" vertex="1" connectable="0">
+                    <mxGeometry x="60" y="130" width="40" height="60" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-13" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;shadow=0;labelBackgroundColor=#F8CECC;strokeWidth=1;dashed=1;dashPattern=1 4;strokeColor=none;sketch=0;fillColor=#FF333377;" parent="nIfb_Fn2fhgGED4d8qRQ-110" vertex="1">
+                    <mxGeometry width="5" height="5" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-14" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;shadow=0;labelBackgroundColor=#F8CECC;strokeWidth=1;dashed=1;dashPattern=1 4;strokeColor=none;sketch=0;fillColor=#FF333377;" parent="nIfb_Fn2fhgGED4d8qRQ-110" vertex="1">
+                    <mxGeometry x="5" width="5" height="5" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-15" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;shadow=0;labelBackgroundColor=#F8CECC;strokeWidth=1;dashed=1;dashPattern=1 4;strokeColor=none;sketch=0;fillColor=#FF333377;" parent="nIfb_Fn2fhgGED4d8qRQ-110" vertex="1">
+                    <mxGeometry x="10" width="5" height="5" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-16" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;shadow=0;labelBackgroundColor=#F8CECC;strokeWidth=1;dashed=1;dashPattern=1 4;strokeColor=none;sketch=0;fillColor=#FF333377;" parent="nIfb_Fn2fhgGED4d8qRQ-110" vertex="1">
+                    <mxGeometry x="15" width="5" height="5" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-17" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;shadow=0;labelBackgroundColor=#F8CECC;strokeWidth=1;dashed=1;dashPattern=1 4;strokeColor=none;sketch=0;fillColor=#FF333377;" parent="nIfb_Fn2fhgGED4d8qRQ-110" vertex="1">
+                    <mxGeometry x="20" width="5" height="5" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-18" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;shadow=0;labelBackgroundColor=#F8CECC;strokeWidth=1;dashed=1;dashPattern=1 4;strokeColor=none;sketch=0;fillColor=#FF333377;" parent="nIfb_Fn2fhgGED4d8qRQ-110" vertex="1">
+                    <mxGeometry x="25" width="5" height="5" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-19" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;shadow=0;labelBackgroundColor=#F8CECC;strokeWidth=1;dashed=1;dashPattern=1 4;strokeColor=none;sketch=0;fillColor=#FF333377;" parent="nIfb_Fn2fhgGED4d8qRQ-110" vertex="1">
+                    <mxGeometry x="30" width="5" height="5" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-20" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;shadow=0;labelBackgroundColor=#F8CECC;strokeWidth=1;dashed=1;dashPattern=1 4;strokeColor=none;sketch=0;fillColor=#FF333377;" parent="nIfb_Fn2fhgGED4d8qRQ-110" vertex="1">
+                    <mxGeometry x="35" width="5" height="5" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-21" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;shadow=0;labelBackgroundColor=#F8CECC;strokeWidth=1;dashed=1;dashPattern=1 4;strokeColor=none;sketch=0;fillColor=#FF333377;" parent="nIfb_Fn2fhgGED4d8qRQ-110" vertex="1">
+                    <mxGeometry y="5" width="5" height="5" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-22" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;shadow=0;labelBackgroundColor=#F8CECC;strokeWidth=1;dashed=1;dashPattern=1 4;strokeColor=none;sketch=0;fillColor=#FF333377;" parent="nIfb_Fn2fhgGED4d8qRQ-110" vertex="1">
+                    <mxGeometry x="5" y="5" width="5" height="5" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-23" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;shadow=0;labelBackgroundColor=#F8CECC;strokeWidth=1;dashed=1;dashPattern=1 4;strokeColor=none;sketch=0;fillColor=#FF333377;" parent="nIfb_Fn2fhgGED4d8qRQ-110" vertex="1">
+                    <mxGeometry x="10" y="5" width="5" height="5" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-24" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;shadow=0;labelBackgroundColor=#F8CECC;strokeWidth=1;dashed=1;dashPattern=1 4;strokeColor=none;sketch=0;fillColor=#FF333377;" parent="nIfb_Fn2fhgGED4d8qRQ-110" vertex="1">
+                    <mxGeometry x="15" y="5" width="5" height="5" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-25" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;shadow=0;labelBackgroundColor=#F8CECC;strokeWidth=1;dashed=1;dashPattern=1 4;strokeColor=none;sketch=0;fillColor=#FF333377;" parent="nIfb_Fn2fhgGED4d8qRQ-110" vertex="1">
+                    <mxGeometry x="20" y="5" width="5" height="5" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-26" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;shadow=0;labelBackgroundColor=#F8CECC;strokeWidth=1;dashed=1;dashPattern=1 4;strokeColor=none;sketch=0;fillColor=#FF333377;" parent="nIfb_Fn2fhgGED4d8qRQ-110" vertex="1">
+                    <mxGeometry x="25" y="5" width="5" height="5" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-27" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;shadow=0;labelBackgroundColor=#F8CECC;strokeWidth=1;dashed=1;dashPattern=1 4;strokeColor=none;sketch=0;fillColor=#FF333377;" parent="nIfb_Fn2fhgGED4d8qRQ-110" vertex="1">
+                    <mxGeometry x="30" y="5" width="5" height="5" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-28" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;shadow=0;labelBackgroundColor=#F8CECC;strokeWidth=1;dashed=1;dashPattern=1 4;strokeColor=none;sketch=0;fillColor=#FF333377;" parent="nIfb_Fn2fhgGED4d8qRQ-110" vertex="1">
+                    <mxGeometry x="35" y="5" width="5" height="5" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-29" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;shadow=0;labelBackgroundColor=#F8CECC;strokeWidth=1;dashed=1;dashPattern=1 4;strokeColor=none;sketch=0;fillColor=#FF333377;" parent="nIfb_Fn2fhgGED4d8qRQ-110" vertex="1">
+                    <mxGeometry y="10" width="5" height="5" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-30" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;shadow=0;labelBackgroundColor=#F8CECC;strokeWidth=1;dashed=1;dashPattern=1 4;strokeColor=none;sketch=0;fillColor=#FF333377;" parent="nIfb_Fn2fhgGED4d8qRQ-110" vertex="1">
+                    <mxGeometry x="5" y="10" width="5" height="5" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-31" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;shadow=0;labelBackgroundColor=#F8CECC;strokeWidth=1;dashed=1;dashPattern=1 4;strokeColor=none;sketch=0;fillColor=#FF333377;" parent="nIfb_Fn2fhgGED4d8qRQ-110" vertex="1">
+                    <mxGeometry x="10" y="10" width="5" height="5" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-32" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;shadow=0;labelBackgroundColor=#F8CECC;strokeWidth=1;dashed=1;dashPattern=1 4;strokeColor=none;sketch=0;fillColor=#FF333377;" parent="nIfb_Fn2fhgGED4d8qRQ-110" vertex="1">
+                    <mxGeometry x="15" y="10" width="5" height="5" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-33" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;shadow=0;labelBackgroundColor=#F8CECC;strokeWidth=1;dashed=1;dashPattern=1 4;strokeColor=none;sketch=0;fillColor=#FF333377;" parent="nIfb_Fn2fhgGED4d8qRQ-110" vertex="1">
+                    <mxGeometry x="20" y="10" width="5" height="5" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-34" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;shadow=0;labelBackgroundColor=#F8CECC;strokeWidth=1;dashed=1;dashPattern=1 4;strokeColor=none;sketch=0;fillColor=#FF333377;" parent="nIfb_Fn2fhgGED4d8qRQ-110" vertex="1">
+                    <mxGeometry x="25" y="10" width="5" height="5" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-35" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;shadow=0;labelBackgroundColor=#F8CECC;strokeWidth=1;dashed=1;dashPattern=1 4;strokeColor=none;sketch=0;fillColor=#FF333377;" parent="nIfb_Fn2fhgGED4d8qRQ-110" vertex="1">
+                    <mxGeometry x="30" y="10" width="5" height="5" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-36" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;shadow=0;labelBackgroundColor=#F8CECC;strokeWidth=1;dashed=1;dashPattern=1 4;strokeColor=none;sketch=0;fillColor=#FF333377;" parent="nIfb_Fn2fhgGED4d8qRQ-110" vertex="1">
+                    <mxGeometry x="35" y="10" width="5" height="5" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-37" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;shadow=0;labelBackgroundColor=#F8CECC;strokeWidth=1;dashed=1;dashPattern=1 4;strokeColor=none;sketch=0;fillColor=#FF333377;" parent="nIfb_Fn2fhgGED4d8qRQ-110" vertex="1">
+                    <mxGeometry y="15" width="5" height="5" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-38" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;shadow=0;labelBackgroundColor=#F8CECC;strokeWidth=1;dashed=1;dashPattern=1 4;strokeColor=none;sketch=0;fillColor=#FF333377;" parent="nIfb_Fn2fhgGED4d8qRQ-110" vertex="1">
+                    <mxGeometry x="5" y="15" width="5" height="5" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-39" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;shadow=0;labelBackgroundColor=#F8CECC;strokeWidth=1;dashed=1;dashPattern=1 4;strokeColor=none;sketch=0;fillColor=#FF333377;" parent="nIfb_Fn2fhgGED4d8qRQ-110" vertex="1">
+                    <mxGeometry x="10" y="15" width="5" height="5" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-40" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;shadow=0;labelBackgroundColor=#F8CECC;strokeWidth=1;dashed=1;dashPattern=1 4;strokeColor=none;sketch=0;fillColor=#FF333377;" parent="nIfb_Fn2fhgGED4d8qRQ-110" vertex="1">
+                    <mxGeometry x="15" y="15" width="5" height="5" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-41" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;shadow=0;labelBackgroundColor=#F8CECC;strokeWidth=1;dashed=1;dashPattern=1 4;strokeColor=none;sketch=0;fillColor=#FF333377;" parent="nIfb_Fn2fhgGED4d8qRQ-110" vertex="1">
+                    <mxGeometry x="20" y="15" width="5" height="5" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-42" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;shadow=0;labelBackgroundColor=#F8CECC;strokeWidth=1;dashed=1;dashPattern=1 4;strokeColor=none;sketch=0;fillColor=#FF333377;" parent="nIfb_Fn2fhgGED4d8qRQ-110" vertex="1">
+                    <mxGeometry x="25" y="15" width="5" height="5" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-43" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;shadow=0;labelBackgroundColor=#F8CECC;strokeWidth=1;dashed=1;dashPattern=1 4;strokeColor=none;sketch=0;fillColor=#FF333377;" parent="nIfb_Fn2fhgGED4d8qRQ-110" vertex="1">
+                    <mxGeometry x="30" y="15" width="5" height="5" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-44" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;shadow=0;labelBackgroundColor=#F8CECC;strokeWidth=1;dashed=1;dashPattern=1 4;strokeColor=none;sketch=0;fillColor=#FF333377;" parent="nIfb_Fn2fhgGED4d8qRQ-110" vertex="1">
+                    <mxGeometry x="35" y="15" width="5" height="5" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-45" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;shadow=0;labelBackgroundColor=#F8CECC;strokeWidth=1;dashed=1;dashPattern=1 4;strokeColor=none;sketch=0;fillColor=#FF333377;" parent="nIfb_Fn2fhgGED4d8qRQ-110" vertex="1">
+                    <mxGeometry y="20" width="5" height="5" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-46" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;shadow=0;labelBackgroundColor=#F8CECC;strokeWidth=1;dashed=1;dashPattern=1 4;strokeColor=none;sketch=0;fillColor=#FF333377;" parent="nIfb_Fn2fhgGED4d8qRQ-110" vertex="1">
+                    <mxGeometry x="5" y="20" width="5" height="5" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-47" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;shadow=0;labelBackgroundColor=#F8CECC;strokeWidth=1;dashed=1;dashPattern=1 4;strokeColor=none;sketch=0;fillColor=#FF333377;" parent="nIfb_Fn2fhgGED4d8qRQ-110" vertex="1">
+                    <mxGeometry x="10" y="20" width="5" height="5" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-48" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;shadow=0;labelBackgroundColor=#F8CECC;strokeWidth=1;dashed=1;dashPattern=1 4;strokeColor=none;sketch=0;fillColor=#FF333377;" parent="nIfb_Fn2fhgGED4d8qRQ-110" vertex="1">
+                    <mxGeometry x="15" y="20" width="5" height="5" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-49" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;shadow=0;labelBackgroundColor=#F8CECC;strokeWidth=1;dashed=1;dashPattern=1 4;strokeColor=none;sketch=0;fillColor=#FF333377;" parent="nIfb_Fn2fhgGED4d8qRQ-110" vertex="1">
+                    <mxGeometry x="20" y="20" width="5" height="5" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-50" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;shadow=0;labelBackgroundColor=#F8CECC;strokeWidth=1;dashed=1;dashPattern=1 4;strokeColor=none;sketch=0;fillColor=#FF333377;" parent="nIfb_Fn2fhgGED4d8qRQ-110" vertex="1">
+                    <mxGeometry x="25" y="20" width="5" height="5" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-51" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;shadow=0;labelBackgroundColor=#F8CECC;strokeWidth=1;dashed=1;dashPattern=1 4;strokeColor=none;sketch=0;fillColor=#FF333377;" parent="nIfb_Fn2fhgGED4d8qRQ-110" vertex="1">
+                    <mxGeometry x="30" y="20" width="5" height="5" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-52" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;shadow=0;labelBackgroundColor=#F8CECC;strokeWidth=1;dashed=1;dashPattern=1 4;strokeColor=none;sketch=0;fillColor=#FF333377;" parent="nIfb_Fn2fhgGED4d8qRQ-110" vertex="1">
+                    <mxGeometry x="35" y="20" width="5" height="5" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-53" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;shadow=0;labelBackgroundColor=#F8CECC;strokeWidth=1;dashed=1;dashPattern=1 4;strokeColor=none;sketch=0;fillColor=#FF333377;" parent="nIfb_Fn2fhgGED4d8qRQ-110" vertex="1">
+                    <mxGeometry y="25" width="5" height="5" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-54" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;shadow=0;labelBackgroundColor=#F8CECC;strokeWidth=1;dashed=1;dashPattern=1 4;strokeColor=none;sketch=0;fillColor=#FF333377;" parent="nIfb_Fn2fhgGED4d8qRQ-110" vertex="1">
+                    <mxGeometry x="5" y="25" width="5" height="5" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-55" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;shadow=0;labelBackgroundColor=#F8CECC;strokeWidth=1;dashed=1;dashPattern=1 4;strokeColor=none;sketch=0;fillColor=#FF333377;" parent="nIfb_Fn2fhgGED4d8qRQ-110" vertex="1">
+                    <mxGeometry x="10" y="25" width="5" height="5" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-56" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;shadow=0;labelBackgroundColor=#F8CECC;strokeWidth=1;dashed=1;dashPattern=1 4;strokeColor=none;sketch=0;fillColor=#FF333377;" parent="nIfb_Fn2fhgGED4d8qRQ-110" vertex="1">
+                    <mxGeometry x="15" y="25" width="5" height="5" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-57" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;shadow=0;labelBackgroundColor=#F8CECC;strokeWidth=1;dashed=1;dashPattern=1 4;strokeColor=none;sketch=0;fillColor=#FF333377;" parent="nIfb_Fn2fhgGED4d8qRQ-110" vertex="1">
+                    <mxGeometry x="20" y="25" width="5" height="5" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-58" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;shadow=0;labelBackgroundColor=#F8CECC;strokeWidth=1;dashed=1;dashPattern=1 4;strokeColor=none;sketch=0;fillColor=#FF333377;" parent="nIfb_Fn2fhgGED4d8qRQ-110" vertex="1">
+                    <mxGeometry x="25" y="25" width="5" height="5" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-59" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;shadow=0;labelBackgroundColor=#F8CECC;strokeWidth=1;dashed=1;dashPattern=1 4;strokeColor=none;sketch=0;fillColor=#FF333377;" parent="nIfb_Fn2fhgGED4d8qRQ-110" vertex="1">
+                    <mxGeometry x="30" y="25" width="5" height="5" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-60" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;shadow=0;labelBackgroundColor=#F8CECC;strokeWidth=1;dashed=1;dashPattern=1 4;strokeColor=none;sketch=0;fillColor=#FF333377;" parent="nIfb_Fn2fhgGED4d8qRQ-110" vertex="1">
+                    <mxGeometry x="35" y="25" width="5" height="5" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-61" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;shadow=0;labelBackgroundColor=#F8CECC;strokeWidth=1;dashed=1;dashPattern=1 4;strokeColor=none;sketch=0;fillColor=#FF333377;" parent="nIfb_Fn2fhgGED4d8qRQ-110" vertex="1">
+                    <mxGeometry y="30" width="5" height="5" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-62" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;shadow=0;labelBackgroundColor=#F8CECC;strokeWidth=1;dashed=1;dashPattern=1 4;strokeColor=none;sketch=0;fillColor=#FF333377;" parent="nIfb_Fn2fhgGED4d8qRQ-110" vertex="1">
+                    <mxGeometry x="5" y="30" width="5" height="5" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-63" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;shadow=0;labelBackgroundColor=#F8CECC;strokeWidth=1;dashed=1;dashPattern=1 4;strokeColor=none;sketch=0;fillColor=#FF333377;" parent="nIfb_Fn2fhgGED4d8qRQ-110" vertex="1">
+                    <mxGeometry x="10" y="30" width="5" height="5" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-64" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;shadow=0;labelBackgroundColor=#F8CECC;strokeWidth=1;dashed=1;dashPattern=1 4;strokeColor=none;sketch=0;fillColor=#FF333377;" parent="nIfb_Fn2fhgGED4d8qRQ-110" vertex="1">
+                    <mxGeometry x="15" y="30" width="5" height="5" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-65" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;shadow=0;labelBackgroundColor=#F8CECC;strokeWidth=1;dashed=1;dashPattern=1 4;strokeColor=none;sketch=0;fillColor=#FF333377;" parent="nIfb_Fn2fhgGED4d8qRQ-110" vertex="1">
+                    <mxGeometry x="20" y="30" width="5" height="5" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-66" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;shadow=0;labelBackgroundColor=#F8CECC;strokeWidth=1;dashed=1;dashPattern=1 4;strokeColor=none;sketch=0;fillColor=#FF333377;" parent="nIfb_Fn2fhgGED4d8qRQ-110" vertex="1">
+                    <mxGeometry x="25" y="30" width="5" height="5" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-67" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;shadow=0;labelBackgroundColor=#F8CECC;strokeWidth=1;dashed=1;dashPattern=1 4;strokeColor=none;sketch=0;fillColor=#FF333377;" parent="nIfb_Fn2fhgGED4d8qRQ-110" vertex="1">
+                    <mxGeometry x="30" y="30" width="5" height="5" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-68" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;shadow=0;labelBackgroundColor=#F8CECC;strokeWidth=1;dashed=1;dashPattern=1 4;strokeColor=none;sketch=0;fillColor=#FF333377;" parent="nIfb_Fn2fhgGED4d8qRQ-110" vertex="1">
+                    <mxGeometry x="35" y="30" width="5" height="5" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-69" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;shadow=0;labelBackgroundColor=#F8CECC;strokeWidth=1;dashed=1;dashPattern=1 4;strokeColor=none;sketch=0;fillColor=#FF333377;" parent="nIfb_Fn2fhgGED4d8qRQ-110" vertex="1">
+                    <mxGeometry y="35" width="5" height="5" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-70" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;shadow=0;labelBackgroundColor=#F8CECC;strokeWidth=1;dashed=1;dashPattern=1 4;strokeColor=none;sketch=0;fillColor=#FF333377;" parent="nIfb_Fn2fhgGED4d8qRQ-110" vertex="1">
+                    <mxGeometry x="5" y="35" width="5" height="5" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-71" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;shadow=0;labelBackgroundColor=#F8CECC;strokeWidth=1;dashed=1;dashPattern=1 4;strokeColor=none;sketch=0;fillColor=#FF333377;" parent="nIfb_Fn2fhgGED4d8qRQ-110" vertex="1">
+                    <mxGeometry x="10" y="35" width="5" height="5" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-72" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;shadow=0;labelBackgroundColor=#F8CECC;strokeWidth=1;dashed=1;dashPattern=1 4;strokeColor=none;sketch=0;fillColor=#FF333377;" parent="nIfb_Fn2fhgGED4d8qRQ-110" vertex="1">
+                    <mxGeometry x="15" y="35" width="5" height="5" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-73" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;shadow=0;labelBackgroundColor=#F8CECC;strokeWidth=1;dashed=1;dashPattern=1 4;strokeColor=none;sketch=0;fillColor=#FF333377;" parent="nIfb_Fn2fhgGED4d8qRQ-110" vertex="1">
+                    <mxGeometry x="20" y="35" width="5" height="5" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-74" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;shadow=0;labelBackgroundColor=#F8CECC;strokeWidth=1;dashed=1;dashPattern=1 4;strokeColor=none;sketch=0;fillColor=#FF333377;" parent="nIfb_Fn2fhgGED4d8qRQ-110" vertex="1">
+                    <mxGeometry x="25" y="35" width="5" height="5" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-75" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;shadow=0;labelBackgroundColor=#F8CECC;strokeWidth=1;dashed=1;dashPattern=1 4;strokeColor=none;sketch=0;fillColor=#FF333377;" parent="nIfb_Fn2fhgGED4d8qRQ-110" vertex="1">
+                    <mxGeometry x="30" y="35" width="5" height="5" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-76" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;shadow=0;labelBackgroundColor=#F8CECC;strokeWidth=1;dashed=1;dashPattern=1 4;strokeColor=none;sketch=0;fillColor=#FF333377;" parent="nIfb_Fn2fhgGED4d8qRQ-110" vertex="1">
+                    <mxGeometry x="35" y="35" width="5" height="5" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-77" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;shadow=0;labelBackgroundColor=#F8CECC;strokeWidth=1;dashed=1;dashPattern=1 4;strokeColor=none;sketch=0;fillColor=#FF333377;" parent="nIfb_Fn2fhgGED4d8qRQ-110" vertex="1">
+                    <mxGeometry y="40" width="5" height="5" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-78" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;shadow=0;labelBackgroundColor=#F8CECC;strokeWidth=1;dashed=1;dashPattern=1 4;strokeColor=none;sketch=0;fillColor=#FF333377;" parent="nIfb_Fn2fhgGED4d8qRQ-110" vertex="1">
+                    <mxGeometry x="5" y="40" width="5" height="5" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-79" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;shadow=0;labelBackgroundColor=#F8CECC;strokeWidth=1;dashed=1;dashPattern=1 4;strokeColor=none;sketch=0;fillColor=#FF333377;" parent="nIfb_Fn2fhgGED4d8qRQ-110" vertex="1">
+                    <mxGeometry x="10" y="40" width="5" height="5" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-80" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;shadow=0;labelBackgroundColor=#F8CECC;strokeWidth=1;dashed=1;dashPattern=1 4;strokeColor=none;sketch=0;fillColor=#FF333377;" parent="nIfb_Fn2fhgGED4d8qRQ-110" vertex="1">
+                    <mxGeometry x="15" y="40" width="5" height="5" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-81" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;shadow=0;labelBackgroundColor=#F8CECC;strokeWidth=1;dashed=1;dashPattern=1 4;strokeColor=none;sketch=0;fillColor=#FF333377;" parent="nIfb_Fn2fhgGED4d8qRQ-110" vertex="1">
+                    <mxGeometry x="20" y="40" width="5" height="5" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-82" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;shadow=0;labelBackgroundColor=#F8CECC;strokeWidth=1;dashed=1;dashPattern=1 4;strokeColor=none;sketch=0;fillColor=#FF333377;" parent="nIfb_Fn2fhgGED4d8qRQ-110" vertex="1">
+                    <mxGeometry x="25" y="40" width="5" height="5" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-83" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;shadow=0;labelBackgroundColor=#F8CECC;strokeWidth=1;dashed=1;dashPattern=1 4;strokeColor=none;sketch=0;fillColor=#FF333377;" parent="nIfb_Fn2fhgGED4d8qRQ-110" vertex="1">
+                    <mxGeometry x="30" y="40" width="5" height="5" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-84" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;shadow=0;labelBackgroundColor=#F8CECC;strokeWidth=1;dashed=1;dashPattern=1 4;strokeColor=none;sketch=0;fillColor=#FF333377;" parent="nIfb_Fn2fhgGED4d8qRQ-110" vertex="1">
+                    <mxGeometry x="35" y="40" width="5" height="5" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-85" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;shadow=0;labelBackgroundColor=#F8CECC;strokeWidth=1;dashed=1;dashPattern=1 4;strokeColor=none;sketch=0;fillColor=#FF333377;" parent="nIfb_Fn2fhgGED4d8qRQ-110" vertex="1">
+                    <mxGeometry y="45" width="5" height="5" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-86" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;shadow=0;labelBackgroundColor=#F8CECC;strokeWidth=1;dashed=1;dashPattern=1 4;strokeColor=none;sketch=0;fillColor=#FF333377;" parent="nIfb_Fn2fhgGED4d8qRQ-110" vertex="1">
+                    <mxGeometry x="5" y="45" width="5" height="5" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-87" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;shadow=0;labelBackgroundColor=#F8CECC;strokeWidth=1;dashed=1;dashPattern=1 4;strokeColor=none;sketch=0;fillColor=#FF333377;" parent="nIfb_Fn2fhgGED4d8qRQ-110" vertex="1">
+                    <mxGeometry x="10" y="45" width="5" height="5" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-88" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;shadow=0;labelBackgroundColor=#F8CECC;strokeWidth=1;dashed=1;dashPattern=1 4;strokeColor=none;sketch=0;fillColor=#FF333377;" parent="nIfb_Fn2fhgGED4d8qRQ-110" vertex="1">
+                    <mxGeometry x="15" y="45" width="5" height="5" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-89" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;shadow=0;labelBackgroundColor=#F8CECC;strokeWidth=1;dashed=1;dashPattern=1 4;strokeColor=none;sketch=0;fillColor=#FF333377;" parent="nIfb_Fn2fhgGED4d8qRQ-110" vertex="1">
+                    <mxGeometry x="20" y="45" width="5" height="5" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-90" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;shadow=0;labelBackgroundColor=#F8CECC;strokeWidth=1;dashed=1;dashPattern=1 4;strokeColor=none;sketch=0;fillColor=#FF333377;" parent="nIfb_Fn2fhgGED4d8qRQ-110" vertex="1">
+                    <mxGeometry x="25" y="45" width="5" height="5" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-91" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;shadow=0;labelBackgroundColor=#F8CECC;strokeWidth=1;dashed=1;dashPattern=1 4;strokeColor=none;sketch=0;fillColor=#FF333377;" parent="nIfb_Fn2fhgGED4d8qRQ-110" vertex="1">
+                    <mxGeometry x="30" y="45" width="5" height="5" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-92" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;shadow=0;labelBackgroundColor=#F8CECC;strokeWidth=1;dashed=1;dashPattern=1 4;strokeColor=none;sketch=0;fillColor=#FF333377;" parent="nIfb_Fn2fhgGED4d8qRQ-110" vertex="1">
+                    <mxGeometry x="35" y="45" width="5" height="5" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-93" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;shadow=0;labelBackgroundColor=#F8CECC;strokeWidth=1;dashed=1;dashPattern=1 4;strokeColor=none;sketch=0;fillColor=#FF333377;" parent="nIfb_Fn2fhgGED4d8qRQ-110" vertex="1">
+                    <mxGeometry y="50" width="5" height="5" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-94" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;shadow=0;labelBackgroundColor=#F8CECC;strokeWidth=1;dashed=1;dashPattern=1 4;strokeColor=none;sketch=0;fillColor=#FF333377;" parent="nIfb_Fn2fhgGED4d8qRQ-110" vertex="1">
+                    <mxGeometry x="5" y="50" width="5" height="5" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-95" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;shadow=0;labelBackgroundColor=#F8CECC;strokeWidth=1;dashed=1;dashPattern=1 4;strokeColor=none;sketch=0;fillColor=#FF333377;" parent="nIfb_Fn2fhgGED4d8qRQ-110" vertex="1">
+                    <mxGeometry x="10" y="50" width="5" height="5" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-96" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;shadow=0;labelBackgroundColor=#F8CECC;strokeWidth=1;dashed=1;dashPattern=1 4;strokeColor=none;sketch=0;fillColor=#FF333377;" parent="nIfb_Fn2fhgGED4d8qRQ-110" vertex="1">
+                    <mxGeometry x="15" y="50" width="5" height="5" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-97" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;shadow=0;labelBackgroundColor=#F8CECC;strokeWidth=1;dashed=1;dashPattern=1 4;strokeColor=none;sketch=0;fillColor=#FF333377;" parent="nIfb_Fn2fhgGED4d8qRQ-110" vertex="1">
+                    <mxGeometry x="20" y="50" width="5" height="5" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-98" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;shadow=0;labelBackgroundColor=#F8CECC;strokeWidth=1;dashed=1;dashPattern=1 4;strokeColor=none;sketch=0;fillColor=#FF333377;" parent="nIfb_Fn2fhgGED4d8qRQ-110" vertex="1">
+                    <mxGeometry x="25" y="50" width="5" height="5" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-99" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;shadow=0;labelBackgroundColor=#F8CECC;strokeWidth=1;dashed=1;dashPattern=1 4;strokeColor=none;sketch=0;fillColor=#FF333377;" parent="nIfb_Fn2fhgGED4d8qRQ-110" vertex="1">
+                    <mxGeometry x="30" y="50" width="5" height="5" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-100" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;shadow=0;labelBackgroundColor=#F8CECC;strokeWidth=1;dashed=1;dashPattern=1 4;strokeColor=none;sketch=0;fillColor=#FF333377;" parent="nIfb_Fn2fhgGED4d8qRQ-110" vertex="1">
+                    <mxGeometry x="35" y="50" width="5" height="5" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-101" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;shadow=0;labelBackgroundColor=#F8CECC;strokeWidth=1;dashed=1;dashPattern=1 4;strokeColor=none;sketch=0;fillColor=#FF333377;" parent="nIfb_Fn2fhgGED4d8qRQ-110" vertex="1">
+                    <mxGeometry y="55" width="5" height="5" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-102" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;shadow=0;labelBackgroundColor=#F8CECC;strokeWidth=1;dashed=1;dashPattern=1 4;strokeColor=none;sketch=0;fillColor=#FF333377;" parent="nIfb_Fn2fhgGED4d8qRQ-110" vertex="1">
+                    <mxGeometry x="5" y="55" width="5" height="5" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-103" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;shadow=0;labelBackgroundColor=#F8CECC;strokeWidth=1;dashed=1;dashPattern=1 4;strokeColor=none;sketch=0;fillColor=#FF333377;" parent="nIfb_Fn2fhgGED4d8qRQ-110" vertex="1">
+                    <mxGeometry x="10" y="55" width="5" height="5" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-104" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;shadow=0;labelBackgroundColor=#F8CECC;strokeWidth=1;dashed=1;dashPattern=1 4;strokeColor=none;sketch=0;fillColor=#FF333377;" parent="nIfb_Fn2fhgGED4d8qRQ-110" vertex="1">
+                    <mxGeometry x="15" y="55" width="5" height="5" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-105" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;shadow=0;labelBackgroundColor=#F8CECC;strokeWidth=1;dashed=1;dashPattern=1 4;strokeColor=none;sketch=0;fillColor=#FF333377;" parent="nIfb_Fn2fhgGED4d8qRQ-110" vertex="1">
+                    <mxGeometry x="20" y="55" width="5" height="5" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-106" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;shadow=0;labelBackgroundColor=#F8CECC;strokeWidth=1;dashed=1;dashPattern=1 4;strokeColor=none;sketch=0;fillColor=#FF333377;" parent="nIfb_Fn2fhgGED4d8qRQ-110" vertex="1">
+                    <mxGeometry x="25" y="55" width="5" height="5" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-107" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;shadow=0;labelBackgroundColor=#F8CECC;strokeWidth=1;dashed=1;dashPattern=1 4;strokeColor=none;sketch=0;fillColor=#FF333377;" parent="nIfb_Fn2fhgGED4d8qRQ-110" vertex="1">
+                    <mxGeometry x="30" y="55" width="5" height="5" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-108" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;shadow=0;labelBackgroundColor=#F8CECC;strokeWidth=1;dashed=1;dashPattern=1 4;strokeColor=none;sketch=0;fillColor=#FF333377;" parent="nIfb_Fn2fhgGED4d8qRQ-110" vertex="1">
+                    <mxGeometry x="35" y="55" width="5" height="5" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-123" value="LED Matrix" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];labelBackgroundColor=#D4E1F577;" parent="nIfb_Fn2fhgGED4d8qRQ-110" vertex="1" connectable="0">
+                    <mxGeometry x="20.00114093959732" y="29.999999999999943" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-120" value="" style="group;rounded=0;shadow=0;" parent="1" vertex="1" connectable="0">
+                    <mxGeometry x="40" y="260" width="80" height="10" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-112" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;shadow=1;labelBackgroundColor=#F8CECC;sketch=0;strokeColor=#000000;strokeWidth=1;dashed=1;fillColor=#7E8591;" parent="nIfb_Fn2fhgGED4d8qRQ-120" vertex="1">
+                    <mxGeometry width="10" height="10" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-113" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;shadow=1;labelBackgroundColor=#F8CECC;sketch=0;strokeColor=#000000;strokeWidth=1;dashed=1;fillColor=#7E8591;" parent="nIfb_Fn2fhgGED4d8qRQ-120" vertex="1">
+                    <mxGeometry x="10" width="10" height="10" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-114" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;shadow=1;labelBackgroundColor=#F8CECC;sketch=0;strokeColor=#000000;strokeWidth=1;dashed=1;fillColor=#7E8591;" parent="nIfb_Fn2fhgGED4d8qRQ-120" vertex="1">
+                    <mxGeometry x="20" width="10" height="10" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-115" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;shadow=1;labelBackgroundColor=#F8CECC;sketch=0;strokeColor=#000000;strokeWidth=1;dashed=1;fillColor=#7E8591;" parent="nIfb_Fn2fhgGED4d8qRQ-120" vertex="1">
+                    <mxGeometry x="30" width="10" height="10" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-116" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;shadow=1;labelBackgroundColor=#F8CECC;sketch=0;strokeColor=#000000;strokeWidth=1;dashed=1;fillColor=#7E8591;" parent="nIfb_Fn2fhgGED4d8qRQ-120" vertex="1">
+                    <mxGeometry x="40" width="10" height="10" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-117" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;shadow=1;labelBackgroundColor=#F8CECC;sketch=0;strokeColor=#000000;strokeWidth=1;dashed=1;fillColor=#7E8591;" parent="nIfb_Fn2fhgGED4d8qRQ-120" vertex="1">
+                    <mxGeometry x="50" width="10" height="10" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-118" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;shadow=1;labelBackgroundColor=#F8CECC;sketch=0;strokeColor=#000000;strokeWidth=1;dashed=1;fillColor=#7E8591;" parent="nIfb_Fn2fhgGED4d8qRQ-120" vertex="1">
+                    <mxGeometry x="60" width="10" height="10" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-119" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;shadow=1;labelBackgroundColor=#F8CECC;sketch=0;strokeColor=#000000;strokeWidth=1;dashed=1;fillColor=#7E8591;" parent="nIfb_Fn2fhgGED4d8qRQ-120" vertex="1">
+                    <mxGeometry x="70" width="10" height="10" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-124" value="buttons" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];labelBackgroundColor=#FFF4C3;" parent="1" vertex="1" connectable="0">
+                    <mxGeometry x="229.99619047619043" y="251.9999999999999" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-126" value="pio_matrix_ext_conn_export" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];labelBackgroundColor=#F8CECC;fontSize=9;" parent="1" vertex="1" connectable="0">
+                    <mxGeometry x="528.9952380952382" y="153" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-127" value="&lt;div style=&quot;font-size: 9px&quot;&gt;pio_button_ext_&lt;/div&gt;&lt;div style=&quot;font-size: 9px&quot;&gt;conn_export&lt;/div&gt;" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];labelBackgroundColor=#F8CECC;fontSize=9;" parent="1" vertex="1" connectable="0">
+                    <mxGeometry x="508.99523809523816" y="212" as="geometry"/>
+                </mxCell>
+                <mxCell id="EJB7Lrfot6i9KQ9_-2WL-23" value="check buttons,&lt;br&gt;calculate positions,&lt;br&gt;update screen" style="shape=parallelogram;perimeter=parallelogramPerimeter;whiteSpace=wrap;html=1;fixedSize=1;shadow=1;fillColor=none;strokeWidth=2;" parent="1" vertex="1">
+                    <mxGeometry x="550" y="171" width="170" height="60" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-128" value="myfirst_niosii.vhd:151" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;shadow=1;dashed=1;sketch=0;fontSize=9;fontColor=#000000AA;" parent="1" vertex="1">
+                    <mxGeometry x="274.5" y="280" width="99" height="20" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-129" value="myfirst_niosii.vhd:114" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;shadow=1;dashed=1;sketch=0;fontSize=9;fontColor=#000000AA;" parent="1" vertex="1">
+                    <mxGeometry x="227.5" y="192" width="105" height="20" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-130" value="myfirst_niosii.vhd:91" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;shadow=1;dashed=1;sketch=0;fontSize=9;fontColor=#000000AA;" parent="1" vertex="1">
+                    <mxGeometry x="355.5" y="200" width="89" height="20" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-131" value="Main.c:64" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;shadow=1;dashed=1;sketch=0;fontSize=9;fontColor=#000000AA;" parent="1" vertex="1">
+                    <mxGeometry x="720" y="177" width="50" height="20" as="geometry"/>
+                </mxCell>
+                <mxCell id="nIfb_Fn2fhgGED4d8qRQ-132" value="structs.h" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;shadow=1;dashed=1;sketch=0;fontSize=9;fontColor=#000000AA;" parent="1" vertex="1">
+                    <mxGeometry x="730" y="255" width="50" height="20" as="geometry"/>
+                </mxCell>
+                <mxCell id="2" value="&lt;font style=&quot;font-size: 11px&quot;&gt;button_states&lt;/font&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontSize=9;" vertex="1" parent="1">
+                    <mxGeometry x="382" y="245" width="64" height="10" as="geometry"/>
+                </mxCell>
+            </root>
+        </mxGraphModel>
+    </diagram>
+</mxfile>

BIN
images/data_graph.png


파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 0 - 1
images/data_graph.xml


파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 124 - 0
images/matrix_multiplex.drawio


BIN
images/matrix_multiplex.png