Save Writeup files and add all images and diagrams

This commit is contained in:
Aadi Desai 2023-06-24 11:53:53 +01:00
parent 70dda89602
commit 3529e7657c
Signed by: supleed2
SSH key fingerprint: SHA256:CkbNRs0yVzXEiUp2zd0PSxsfRUMFF9bLlKXtE1xEbKM
28 changed files with 33010 additions and 87 deletions

BIN
Writeup.docx Normal file

Binary file not shown.

BIN
Writeup.pdf Normal file

Binary file not shown.

BIN
notes/CANdecoder.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

BIN
notes/ata6561.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 79 KiB

BIN
notes/audioInputFormats.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 158 KiB

BIN
notes/canAck.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

BIN
notes/canArbitration.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.1 KiB

BIN
notes/canFrame.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 180 KiB

BIN
notes/cleanwave.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 161 KiB

BIN
notes/glitchingwave.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

BIN
notes/glitchmask.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

BIN
notes/gtkwaveAsyncfifo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

16336
notes/gtkwaveAsyncfifo.vcd Normal file

File diff suppressed because it is too large Load diff

BIN
notes/gtkwaveDacdriver.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

16371
notes/gtkwaveDacdriver.vcd Normal file

File diff suppressed because it is too large Load diff

BIN
notes/perfOrangeCrab.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

BIN
notes/perfStackSynth.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

View file

@ -0,0 +1,208 @@
<mxfile host="app.diagrams.net" modified="2023-06-21T10:52:14.579Z" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36" etag="bfcxcmXbyYLgxDzWKoAU" version="21.5.0" type="device">
<diagram name="Page-1" id="9otSjQJBb4QhwR53-7jV">
<mxGraphModel dx="792" dy="482" 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="CDnSS6xAI5ACOz7psGoO-6" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=0.986;entryY=0.548;entryDx=0;entryDy=0;entryPerimeter=0;startArrow=classic;startFill=1;endArrow=none;endFill=0;" edge="1" parent="1" source="CDnSS6xAI5ACOz7psGoO-1" target="CDnSS6xAI5ACOz7psGoO-5">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="CDnSS6xAI5ACOz7psGoO-19" value="osc" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.25;exitDx=0;exitDy=0;entryX=0;entryY=0.25;entryDx=0;entryDy=0;" edge="1" parent="1" source="CDnSS6xAI5ACOz7psGoO-1" target="CDnSS6xAI5ACOz7psGoO-17">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="CDnSS6xAI5ACOz7psGoO-21" value="osc" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.75;exitDx=0;exitDy=0;entryX=0;entryY=0.25;entryDx=0;entryDy=0;" edge="1" parent="1" source="CDnSS6xAI5ACOz7psGoO-1" target="CDnSS6xAI5ACOz7psGoO-18">
<mxGeometry x="0.6" relative="1" as="geometry">
<Array as="points">
<mxPoint x="240" y="30" />
<mxPoint x="240" y="90" />
</Array>
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="CDnSS6xAI5ACOz7psGoO-1" value="CSRStorage Oscillator Index" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="110" width="120" height="40" as="geometry" />
</mxCell>
<mxCell id="CDnSS6xAI5ACOz7psGoO-8" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1.006;entryY=0.533;entryDx=0;entryDy=0;entryPerimeter=0;startArrow=classic;startFill=1;endArrow=none;endFill=0;" edge="1" parent="1" source="CDnSS6xAI5ACOz7psGoO-2" target="CDnSS6xAI5ACOz7psGoO-5">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="CDnSS6xAI5ACOz7psGoO-22" value="wave" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.75;exitDx=0;exitDy=0;entryX=0;entryY=0.75;entryDx=0;entryDy=0;" edge="1" parent="1" source="CDnSS6xAI5ACOz7psGoO-2" target="CDnSS6xAI5ACOz7psGoO-18">
<mxGeometry x="0.0014" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="CDnSS6xAI5ACOz7psGoO-2" value="CSRStorage Waveform Select" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="110" y="120" width="120" height="40" as="geometry" />
</mxCell>
<mxCell id="CDnSS6xAI5ACOz7psGoO-7" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=0.986;entryY=0.524;entryDx=0;entryDy=0;entryPerimeter=0;startArrow=classic;startFill=1;endArrow=none;endFill=0;" edge="1" parent="1" source="CDnSS6xAI5ACOz7psGoO-3">
<mxGeometry relative="1" as="geometry">
<mxPoint x="120" y="80" as="sourcePoint" />
<mxPoint x="69.01999999999998" y="79.72000000000003" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="CDnSS6xAI5ACOz7psGoO-20" value="freq" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.75;entryDx=0;entryDy=0;" edge="1" parent="1" source="CDnSS6xAI5ACOz7psGoO-3" target="CDnSS6xAI5ACOz7psGoO-17">
<mxGeometry x="0.1124" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="CDnSS6xAI5ACOz7psGoO-3" value="CSRStorage Target Frequency" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="110" y="60" width="120" height="40" as="geometry" />
</mxCell>
<mxCell id="CDnSS6xAI5ACOz7psGoO-5" value="CSR Bus" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
<mxGeometry y="64" width="70" height="30" as="geometry" />
</mxCell>
<mxCell id="CDnSS6xAI5ACOz7psGoO-12" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0.034;entryY=0.461;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="1" source="CDnSS6xAI5ACOz7psGoO-11" target="CDnSS6xAI5ACOz7psGoO-13">
<mxGeometry relative="1" as="geometry">
<mxPoint x="603" y="271" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="CDnSS6xAI5ACOz7psGoO-11" value="Normalise Combined Samples to range 0.5-1 of max" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="452" y="241" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="CDnSS6xAI5ACOz7psGoO-13" value="AsyncFIFO" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
<mxGeometry x="600" y="257" width="80" height="30" as="geometry" />
</mxCell>
<mxCell id="CDnSS6xAI5ACOz7psGoO-16" value="sample" 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;" edge="1" parent="1" source="CDnSS6xAI5ACOz7psGoO-15" target="CDnSS6xAI5ACOz7psGoO-11">
<mxGeometry x="-0.0175" y="-10" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="CDnSS6xAI5ACOz7psGoO-15" value="Signed summation of all samples" style="whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="332" y="241" width="80" height="60" as="geometry" />
</mxCell>
<mxCell id="CDnSS6xAI5ACOz7psGoO-25" value="tf[i]" 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;" edge="1" parent="1" source="CDnSS6xAI5ACOz7psGoO-17" target="CDnSS6xAI5ACOz7psGoO-24">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="CDnSS6xAI5ACOz7psGoO-17" value="Target Freq.s" style="whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="290" width="40" height="40" as="geometry" />
</mxCell>
<mxCell id="CDnSS6xAI5ACOz7psGoO-50" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="CDnSS6xAI5ACOz7psGoO-18" target="CDnSS6xAI5ACOz7psGoO-43">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="310" y="181" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="CDnSS6xAI5ACOz7psGoO-18" value="Waves" style="whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="290" y="80" width="40" height="40" as="geometry" />
</mxCell>
<mxCell id="CDnSS6xAI5ACOz7psGoO-27" value="ps[i]" 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;" edge="1" parent="1" source="CDnSS6xAI5ACOz7psGoO-24" target="CDnSS6xAI5ACOz7psGoO-26">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="CDnSS6xAI5ACOz7psGoO-24" value="Phase Step Calculator" style="whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="374" width="80" height="40" as="geometry" />
</mxCell>
<mxCell id="CDnSS6xAI5ACOz7psGoO-30" 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;strokeWidth=1;" edge="1" parent="1" source="CDnSS6xAI5ACOz7psGoO-26" target="CDnSS6xAI5ACOz7psGoO-28">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="CDnSS6xAI5ACOz7psGoO-26" value="Phase Steps" style="whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="500" width="40" height="40" as="geometry" />
</mxCell>
<mxCell id="CDnSS6xAI5ACOz7psGoO-36" 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;" edge="1" parent="1" source="CDnSS6xAI5ACOz7psGoO-28" target="CDnSS6xAI5ACOz7psGoO-31">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="CDnSS6xAI5ACOz7psGoO-28" value="Phases" style="whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="560" width="50" height="40" as="geometry" />
</mxCell>
<mxCell id="CDnSS6xAI5ACOz7psGoO-37" 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="CDnSS6xAI5ACOz7psGoO-31" target="CDnSS6xAI5ACOz7psGoO-32">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="655" y="61" />
<mxPoint x="407" y="61" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="CDnSS6xAI5ACOz7psGoO-38" 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="CDnSS6xAI5ACOz7psGoO-31" target="CDnSS6xAI5ACOz7psGoO-33">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="655" y="61" />
<mxPoint x="482" y="61" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="CDnSS6xAI5ACOz7psGoO-39" 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="CDnSS6xAI5ACOz7psGoO-31" target="CDnSS6xAI5ACOz7psGoO-34">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="655" y="61" />
<mxPoint x="555" y="61" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="CDnSS6xAI5ACOz7psGoO-51" value="saw" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.75;entryY=1;entryDx=0;entryDy=0;" edge="1" parent="1" source="CDnSS6xAI5ACOz7psGoO-31" target="CDnSS6xAI5ACOz7psGoO-43">
<mxGeometry x="0.8558" relative="1" as="geometry">
<Array as="points">
<mxPoint x="655" y="61" />
<mxPoint x="350" y="61" />
</Array>
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="CDnSS6xAI5ACOz7psGoO-31" value="Phase&lt;br&gt;to Saw" style="whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="630" width="50" height="40" as="geometry" />
</mxCell>
<mxCell id="CDnSS6xAI5ACOz7psGoO-54" value="square" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.54;entryY=1.003;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="1" source="CDnSS6xAI5ACOz7psGoO-32" target="CDnSS6xAI5ACOz7psGoO-43">
<mxGeometry x="0.4137" relative="1" as="geometry">
<Array as="points">
<mxPoint x="407" y="121" />
<mxPoint x="375" y="121" />
</Array>
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="CDnSS6xAI5ACOz7psGoO-32" value="Saw to Square" style="whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="382" y="75" width="50" height="40" as="geometry" />
</mxCell>
<mxCell id="CDnSS6xAI5ACOz7psGoO-55" value="triangle" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.358;entryY=1.011;entryDx=0;entryDy=0;entryPerimeter=0;spacing=2;spacingBottom=-1;" edge="1" parent="1" source="CDnSS6xAI5ACOz7psGoO-33" target="CDnSS6xAI5ACOz7psGoO-43">
<mxGeometry x="-0.2023" y="-10" relative="1" as="geometry">
<Array as="points">
<mxPoint x="482" y="131" />
<mxPoint x="397" y="131" />
</Array>
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="CDnSS6xAI5ACOz7psGoO-33" value="Saw to Triangle" style="whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="457" y="75" width="50" height="40" as="geometry" />
</mxCell>
<mxCell id="CDnSS6xAI5ACOz7psGoO-56" value="sine" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.163;entryY=1.003;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="1" source="CDnSS6xAI5ACOz7psGoO-34" target="CDnSS6xAI5ACOz7psGoO-43">
<mxGeometry x="-0.2371" relative="1" as="geometry">
<Array as="points">
<mxPoint x="555" y="135" />
<mxPoint x="420" y="135" />
</Array>
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="CDnSS6xAI5ACOz7psGoO-34" value="Saw to Sine" style="whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="530" y="75" width="50" height="40" as="geometry" />
</mxCell>
<mxCell id="CDnSS6xAI5ACOz7psGoO-61" value="sample" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="CDnSS6xAI5ACOz7psGoO-43" target="CDnSS6xAI5ACOz7psGoO-59">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="380" y="221" />
<mxPoint x="300" y="221" />
<mxPoint x="250" y="222" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="CDnSS6xAI5ACOz7psGoO-43" value="" style="shape=trapezoid;perimeter=trapezoidPerimeter;whiteSpace=wrap;html=1;fixedSize=1;rotation=-180;horizontal=1;" vertex="1" parent="1">
<mxGeometry x="320" y="151" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="CDnSS6xAI5ACOz7psGoO-49" value="Wave Select" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
<mxGeometry x="335" y="166" width="90" height="30" as="geometry" />
</mxCell>
<mxCell id="CDnSS6xAI5ACOz7psGoO-57" value="saw" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;labelBackgroundColor=default;" vertex="1" parent="1">
<mxGeometry x="602" y="46" width="40" height="30" as="geometry" />
</mxCell>
<mxCell id="CDnSS6xAI5ACOz7psGoO-60" value="samples" 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;" edge="1" parent="1" source="CDnSS6xAI5ACOz7psGoO-59" target="CDnSS6xAI5ACOz7psGoO-15">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="CDnSS6xAI5ACOz7psGoO-59" value="Samples Mem" style="whiteSpace=wrap;html=1;" vertex="1" parent="1">
<mxGeometry x="220" y="242" width="60" height="60" as="geometry" />
</mxCell>
<mxCell id="CDnSS6xAI5ACOz7psGoO-62" value="" style="rounded=0;whiteSpace=wrap;html=1;labelBackgroundColor=none;fontColor=none;noLabel=1;fillColor=none;strokeColor=none;" vertex="1" parent="1">
<mxGeometry width="690" height="310" as="geometry" />
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>

BIN
notes/sampleGenerator.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 807 KiB

BIN
notes/signedsine.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

View file

@ -1,10 +1,10 @@
<mxfile host="app.diagrams.net" modified="2023-06-15T13:25:07.730Z" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36" etag="54LhgG8u05B9wUtX7gQx" version="21.4.0" type="device">
<mxfile host="app.diagrams.net" modified="2023-06-21T10:00:06.590Z" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36" etag="U2DtCNf9zLJCOXEBuv8K" version="21.5.0" type="device">
<diagram name="Page-1" id="WSSuTlXPczb5rmeiZLX3">
<mxGraphModel dx="1311" dy="988" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="0" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
<mxGraphModel dx="1311" dy="954" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="0" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="hBXv7jzEsvArLMJGQopC-38" value="clk" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.25;entryDx=0;entryDy=0;jumpStyle=arc;jumpSize=8;fontSize=11;" edge="1" parent="1" target="hBXv7jzEsvArLMJGQopC-37">
<mxCell id="hBXv7jzEsvArLMJGQopC-38" value="clk" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.25;entryDx=0;entryDy=0;jumpStyle=arc;jumpSize=8;fontSize=11;" parent="1" target="hBXv7jzEsvArLMJGQopC-37" edge="1">
<mxGeometry x="0.5999" relative="1" as="geometry">
<mxPoint x="360" y="100" as="sourcePoint" />
<Array as="points">
@ -14,7 +14,7 @@
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="hBXv7jzEsvArLMJGQopC-107" value="CSR&lt;br style=&quot;font-size: 11px;&quot;&gt;Bus" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.75;entryDx=0;entryDy=0;jumpStyle=arc;jumpSize=8;labelBackgroundColor=none;strokeWidth=2;fontSize=11;" edge="1" parent="1" target="hBXv7jzEsvArLMJGQopC-37">
<mxCell id="hBXv7jzEsvArLMJGQopC-107" value="CSR&lt;br style=&quot;font-size: 11px;&quot;&gt;Bus" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.75;entryDx=0;entryDy=0;jumpStyle=arc;jumpSize=8;labelBackgroundColor=none;strokeWidth=2;fontSize=11;" parent="1" target="hBXv7jzEsvArLMJGQopC-37" edge="1">
<mxGeometry x="-0.7605" relative="1" as="geometry">
<mxPoint x="290" y="200" as="sourcePoint" />
<Array as="points">
@ -25,7 +25,7 @@
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="hBXv7jzEsvArLMJGQopC-40" value="clk" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.25;entryDx=0;entryDy=0;fontSize=11;jumpStyle=none;" edge="1" parent="1" target="hBXv7jzEsvArLMJGQopC-39">
<mxCell id="hBXv7jzEsvArLMJGQopC-40" value="clk" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.25;entryDx=0;entryDy=0;fontSize=11;jumpStyle=none;" parent="1" target="hBXv7jzEsvArLMJGQopC-39" edge="1">
<mxGeometry x="0.5999" relative="1" as="geometry">
<mxPoint x="360" y="100" as="sourcePoint" />
<Array as="points">
@ -35,7 +35,7 @@
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="hBXv7jzEsvArLMJGQopC-76" value="clk" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.25;entryDx=0;entryDy=0;fontSize=11;" edge="1" parent="1" target="hBXv7jzEsvArLMJGQopC-75">
<mxCell id="hBXv7jzEsvArLMJGQopC-76" value="clk" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.25;entryDx=0;entryDy=0;fontSize=11;" parent="1" target="hBXv7jzEsvArLMJGQopC-75" edge="1">
<mxGeometry x="-0.3333" relative="1" as="geometry">
<mxPoint x="360" y="100" as="sourcePoint" />
<Array as="points">
@ -45,22 +45,22 @@
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="hBXv7jzEsvArLMJGQopC-6" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.75;exitY=1;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;fontSize=11;" edge="1" parent="1" source="hBXv7jzEsvArLMJGQopC-1" target="hBXv7jzEsvArLMJGQopC-5">
<mxCell id="hBXv7jzEsvArLMJGQopC-6" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.75;exitY=1;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;fontSize=11;" parent="1" source="hBXv7jzEsvArLMJGQopC-1" target="hBXv7jzEsvArLMJGQopC-5" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="hBXv7jzEsvArLMJGQopC-8" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.25;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;fontSize=11;" edge="1" parent="1" source="hBXv7jzEsvArLMJGQopC-1" target="hBXv7jzEsvArLMJGQopC-7">
<mxCell id="hBXv7jzEsvArLMJGQopC-8" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.25;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;fontSize=11;" parent="1" source="hBXv7jzEsvArLMJGQopC-1" target="hBXv7jzEsvArLMJGQopC-7" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="hBXv7jzEsvArLMJGQopC-1" value="PLL Clock Generator" style="rounded=0;whiteSpace=wrap;html=1;fontSize=11;" vertex="1" parent="1">
<mxCell id="hBXv7jzEsvArLMJGQopC-1" value="PLL Clock Generator" style="rounded=0;whiteSpace=wrap;html=1;fontSize=11;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="100" width="80" height="40" as="geometry" />
</mxCell>
<mxCell id="hBXv7jzEsvArLMJGQopC-11" value="UART" 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=classic;startFill=1;strokeColor=default;fontSize=11;strokeWidth=2;" edge="1" parent="1" source="hBXv7jzEsvArLMJGQopC-4" target="hBXv7jzEsvArLMJGQopC-10">
<mxCell id="hBXv7jzEsvArLMJGQopC-11" value="UART" 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=classic;startFill=1;strokeColor=default;fontSize=11;strokeWidth=2;" parent="1" source="hBXv7jzEsvArLMJGQopC-4" target="hBXv7jzEsvArLMJGQopC-10" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="hBXv7jzEsvArLMJGQopC-4" value="ValentyUSB ACM USB-to-UART" style="rounded=0;whiteSpace=wrap;html=1;fontSize=11;" vertex="1" parent="1">
<mxCell id="hBXv7jzEsvArLMJGQopC-4" value="ValentyUSB ACM USB-to-UART" style="rounded=0;whiteSpace=wrap;html=1;fontSize=11;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="20" y="180" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="hBXv7jzEsvArLMJGQopC-83" value="sck (dac clock)" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.75;exitDx=0;exitDy=0;entryX=0;entryY=0;entryDx=0;entryDy=0;jumpStyle=arc;fontSize=11;jumpSize=8;" edge="1" parent="1" source="hBXv7jzEsvArLMJGQopC-5" target="hBXv7jzEsvArLMJGQopC-70">
<mxCell id="hBXv7jzEsvArLMJGQopC-83" value="sck (dac clock)" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.75;exitDx=0;exitDy=0;entryX=0;entryY=0;entryDx=0;entryDy=0;jumpStyle=arc;fontSize=11;jumpSize=8;" parent="1" source="hBXv7jzEsvArLMJGQopC-5" target="hBXv7jzEsvArLMJGQopC-70" edge="1">
<mxGeometry x="0.1579" relative="1" as="geometry">
<mxPoint x="290" y="80" as="sourcePoint" />
<Array as="points">
@ -70,15 +70,15 @@
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="hBXv7jzEsvArLMJGQopC-5" value="36.864MHz Clock" style="whiteSpace=wrap;html=1;fontSize=11;" vertex="1" parent="1">
<mxCell id="hBXv7jzEsvArLMJGQopC-5" value="36.864MHz Clock" style="whiteSpace=wrap;html=1;fontSize=11;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="220" y="50" width="80" height="40" as="geometry" />
</mxCell>
<mxCell id="hBXv7jzEsvArLMJGQopC-9" value="clk" 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;fontSize=11;" edge="1" parent="1" source="hBXv7jzEsvArLMJGQopC-7" target="hBXv7jzEsvArLMJGQopC-4">
<mxCell id="hBXv7jzEsvArLMJGQopC-9" value="clk" 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;fontSize=11;" parent="1" source="hBXv7jzEsvArLMJGQopC-7" target="hBXv7jzEsvArLMJGQopC-4" edge="1">
<mxGeometry x="0.5" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="hBXv7jzEsvArLMJGQopC-12" value="clk" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.75;exitY=1;exitDx=0;exitDy=0;entryX=0.25;entryY=0;entryDx=0;entryDy=0;fontSize=11;" edge="1" parent="1" source="hBXv7jzEsvArLMJGQopC-7" target="hBXv7jzEsvArLMJGQopC-10">
<mxCell id="hBXv7jzEsvArLMJGQopC-12" value="clk" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.75;exitY=1;exitDx=0;exitDy=0;entryX=0.25;entryY=0;entryDx=0;entryDy=0;fontSize=11;" parent="1" source="hBXv7jzEsvArLMJGQopC-7" target="hBXv7jzEsvArLMJGQopC-10" edge="1">
<mxGeometry x="0.8049" relative="1" as="geometry">
<Array as="points">
<mxPoint x="80" y="140" />
@ -87,7 +87,7 @@
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="hBXv7jzEsvArLMJGQopC-45" value="clk" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.25;exitY=1;exitDx=0;exitDy=0;entryX=0.25;entryY=0;entryDx=0;entryDy=0;fontSize=11;" edge="1" parent="1" source="hBXv7jzEsvArLMJGQopC-7" target="hBXv7jzEsvArLMJGQopC-41">
<mxCell id="hBXv7jzEsvArLMJGQopC-45" value="clk" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.25;exitY=1;exitDx=0;exitDy=0;entryX=0.25;entryY=0;entryDx=0;entryDy=0;fontSize=11;" parent="1" source="hBXv7jzEsvArLMJGQopC-7" target="hBXv7jzEsvArLMJGQopC-41" edge="1">
<mxGeometry x="0.8133" relative="1" as="geometry">
<Array as="points">
<mxPoint x="40" y="140" />
@ -98,7 +98,7 @@
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="hBXv7jzEsvArLMJGQopC-88" value="clk" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;jumpStyle=arc;jumpSize=8;fontSize=11;" edge="1" parent="1" target="hBXv7jzEsvArLMJGQopC-81">
<mxCell id="hBXv7jzEsvArLMJGQopC-88" value="clk" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;jumpStyle=arc;jumpSize=8;fontSize=11;" parent="1" target="hBXv7jzEsvArLMJGQopC-81" edge="1">
<mxGeometry x="0.2571" relative="1" as="geometry">
<mxPoint x="360" y="30" as="sourcePoint" />
<Array as="points">
@ -108,27 +108,27 @@
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="hBXv7jzEsvArLMJGQopC-119" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;endArrow=none;endFill=0;jumpStyle=arc;jumpSize=8;" edge="1" parent="1" source="hBXv7jzEsvArLMJGQopC-7">
<mxCell id="hBXv7jzEsvArLMJGQopC-119" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;endArrow=none;endFill=0;jumpStyle=arc;jumpSize=8;" parent="1" source="hBXv7jzEsvArLMJGQopC-7" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="360" y="100" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="hBXv7jzEsvArLMJGQopC-7" value="48MHz Clock" style="rounded=0;whiteSpace=wrap;html=1;fontSize=11;" vertex="1" parent="1">
<mxCell id="hBXv7jzEsvArLMJGQopC-7" value="48MHz Clock" style="rounded=0;whiteSpace=wrap;html=1;fontSize=11;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="20" y="80" width="80" height="40" as="geometry" />
</mxCell>
<mxCell id="hBXv7jzEsvArLMJGQopC-10" value="VexRiscV CPU + DDR3L RAM" style="whiteSpace=wrap;html=1;fontSize=11;" vertex="1" parent="1">
<mxCell id="hBXv7jzEsvArLMJGQopC-10" value="VexRiscV CPU + DDR3L RAM" style="whiteSpace=wrap;html=1;fontSize=11;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="200" y="180" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="hBXv7jzEsvArLMJGQopC-69" 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;fontSize=11;" edge="1" parent="1" source="hBXv7jzEsvArLMJGQopC-13" target="hBXv7jzEsvArLMJGQopC-68">
<mxCell id="hBXv7jzEsvArLMJGQopC-69" 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;fontSize=11;" parent="1" source="hBXv7jzEsvArLMJGQopC-13" target="hBXv7jzEsvArLMJGQopC-68" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="hBXv7jzEsvArLMJGQopC-13" value="LED PWM Driver" style="rounded=0;whiteSpace=wrap;html=1;fontSize=11;" vertex="1" parent="1">
<mxCell id="hBXv7jzEsvArLMJGQopC-13" value="LED PWM Driver" style="rounded=0;whiteSpace=wrap;html=1;fontSize=11;fillColor=#d5e8d4;strokeColor=#82b366;" parent="1" vertex="1">
<mxGeometry x="390" y="210" width="120" height="40" as="geometry" />
</mxCell>
<mxCell id="hBXv7jzEsvArLMJGQopC-62" value="TX" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.25;exitDx=0;exitDy=0;entryX=0;entryY=0.25;entryDx=0;entryDy=0;fontSize=11;" edge="1" parent="1" source="hBXv7jzEsvArLMJGQopC-32" target="hBXv7jzEsvArLMJGQopC-61">
<mxCell id="hBXv7jzEsvArLMJGQopC-62" value="TX" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.25;exitDx=0;exitDy=0;entryX=0;entryY=0.25;entryDx=0;entryDy=0;fontSize=11;" parent="1" source="hBXv7jzEsvArLMJGQopC-32" target="hBXv7jzEsvArLMJGQopC-61" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="hBXv7jzEsvArLMJGQopC-110" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.75;exitDx=0;exitDy=0;jumpStyle=none;jumpSize=8;startArrow=classic;startFill=1;endArrow=none;endFill=0;strokeWidth=2;fontSize=11;" edge="1" parent="1" source="hBXv7jzEsvArLMJGQopC-32">
<mxCell id="hBXv7jzEsvArLMJGQopC-110" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.75;exitDx=0;exitDy=0;jumpStyle=none;jumpSize=8;startArrow=classic;startFill=1;endArrow=none;endFill=0;strokeWidth=2;fontSize=11;" parent="1" source="hBXv7jzEsvArLMJGQopC-32" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="340" y="200" as="targetPoint" />
<Array as="points">
@ -136,86 +136,86 @@
</Array>
</mxGeometry>
</mxCell>
<mxCell id="hBXv7jzEsvArLMJGQopC-32" value="CAN Rx Block" style="whiteSpace=wrap;html=1;fontSize=11;" vertex="1" parent="1">
<mxCell id="hBXv7jzEsvArLMJGQopC-32" value="CAN Rx Block" style="whiteSpace=wrap;html=1;fontSize=11;fillColor=#d5e8d4;strokeColor=#82b366;" parent="1" vertex="1">
<mxGeometry x="390" y="260" width="60" height="40" as="geometry" />
</mxCell>
<mxCell id="hBXv7jzEsvArLMJGQopC-96" value="data" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.75;exitDx=0;exitDy=0;entryX=0;entryY=0.75;entryDx=0;entryDy=0;fontSize=11;" edge="1" parent="1" source="hBXv7jzEsvArLMJGQopC-37" target="hBXv7jzEsvArLMJGQopC-87">
<mxCell id="hBXv7jzEsvArLMJGQopC-96" value="data" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.75;exitDx=0;exitDy=0;entryX=0;entryY=0.75;entryDx=0;entryDy=0;fontSize=11;" parent="1" source="hBXv7jzEsvArLMJGQopC-37" target="hBXv7jzEsvArLMJGQopC-87" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="hBXv7jzEsvArLMJGQopC-97" value="valid" 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;fontSize=11;" edge="1" parent="1" source="hBXv7jzEsvArLMJGQopC-37" target="hBXv7jzEsvArLMJGQopC-87">
<mxCell id="hBXv7jzEsvArLMJGQopC-97" value="valid" 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;fontSize=11;" parent="1" source="hBXv7jzEsvArLMJGQopC-37" target="hBXv7jzEsvArLMJGQopC-87" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="hBXv7jzEsvArLMJGQopC-37" value="Wave Sample Generator Block" style="whiteSpace=wrap;html=1;fontSize=11;" vertex="1" parent="1">
<mxCell id="hBXv7jzEsvArLMJGQopC-37" value="Wave Sample Generator Block" style="whiteSpace=wrap;html=1;fontSize=11;fillColor=#d5e8d4;strokeColor=#82b366;" parent="1" vertex="1">
<mxGeometry x="390" y="20" width="110" height="40" as="geometry" />
</mxCell>
<mxCell id="hBXv7jzEsvArLMJGQopC-46" value="scl" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.25;exitDx=0;exitDy=0;entryX=0;entryY=0.25;entryDx=0;entryDy=0;fontSize=11;" edge="1" parent="1" source="hBXv7jzEsvArLMJGQopC-39" target="hBXv7jzEsvArLMJGQopC-48">
<mxCell id="hBXv7jzEsvArLMJGQopC-46" value="scl" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.25;exitDx=0;exitDy=0;entryX=0;entryY=0.25;entryDx=0;entryDy=0;fontSize=11;" parent="1" source="hBXv7jzEsvArLMJGQopC-39" target="hBXv7jzEsvArLMJGQopC-48" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="500" y="170" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="hBXv7jzEsvArLMJGQopC-47" value="sda" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.75;exitDx=0;exitDy=0;startArrow=classic;startFill=1;entryX=0;entryY=0.75;entryDx=0;entryDy=0;fontSize=11;" edge="1" parent="1" source="hBXv7jzEsvArLMJGQopC-39" target="hBXv7jzEsvArLMJGQopC-48">
<mxCell id="hBXv7jzEsvArLMJGQopC-47" value="sda" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.75;exitDx=0;exitDy=0;startArrow=classic;startFill=1;entryX=0;entryY=0.75;entryDx=0;entryDy=0;fontSize=11;" parent="1" source="hBXv7jzEsvArLMJGQopC-39" target="hBXv7jzEsvArLMJGQopC-48" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="500" y="190" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="hBXv7jzEsvArLMJGQopC-39" value="I2C Master" style="whiteSpace=wrap;html=1;fontSize=11;" vertex="1" parent="1">
<mxCell id="hBXv7jzEsvArLMJGQopC-39" value="I2C Master" style="whiteSpace=wrap;html=1;fontSize=11;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="390" y="160" width="40" height="40" as="geometry" />
</mxCell>
<mxCell id="hBXv7jzEsvArLMJGQopC-44" value="Debug input&lt;br style=&quot;font-size: 11px;&quot;&gt;from blocks" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;startArrow=classic;startFill=1;endArrow=none;endFill=0;strokeWidth=2;fontSize=11;" edge="1" parent="1" source="hBXv7jzEsvArLMJGQopC-41">
<mxCell id="hBXv7jzEsvArLMJGQopC-44" value="Debug input&lt;br style=&quot;font-size: 11px;&quot;&gt;from blocks" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;startArrow=classic;startFill=1;endArrow=none;endFill=0;strokeWidth=2;fontSize=11;" parent="1" source="hBXv7jzEsvArLMJGQopC-41" edge="1">
<mxGeometry x="0.3372" relative="1" as="geometry">
<mxPoint x="330" y="280" as="targetPoint" />
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="hBXv7jzEsvArLMJGQopC-41" value="LiteScope Analyzer" style="whiteSpace=wrap;html=1;fontSize=11;" vertex="1" parent="1">
<mxCell id="hBXv7jzEsvArLMJGQopC-41" value="LiteScope Analyzer" style="whiteSpace=wrap;html=1;fontSize=11;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="180" y="260" width="60" height="40" as="geometry" />
</mxCell>
<mxCell id="hBXv7jzEsvArLMJGQopC-43" value="UART" 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=classic;startFill=1;strokeWidth=2;fontSize=11;" edge="1" parent="1" source="hBXv7jzEsvArLMJGQopC-42" target="hBXv7jzEsvArLMJGQopC-41">
<mxCell id="hBXv7jzEsvArLMJGQopC-43" value="UART" 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=classic;startFill=1;strokeWidth=2;fontSize=11;" parent="1" source="hBXv7jzEsvArLMJGQopC-42" target="hBXv7jzEsvArLMJGQopC-41" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="hBXv7jzEsvArLMJGQopC-42" value="FTDI232 Adapter USB-to-UART" style="whiteSpace=wrap;html=1;fontSize=11;" vertex="1" parent="1">
<mxCell id="hBXv7jzEsvArLMJGQopC-42" value="FTDI232 Adapter USB-to-UART" style="whiteSpace=wrap;html=1;fontSize=11;" parent="1" vertex="1">
<mxGeometry y="260" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="hBXv7jzEsvArLMJGQopC-50" value="L" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.25;exitDx=0;exitDy=0;entryX=0;entryY=0.25;entryDx=0;entryDy=0;dashed=1;dashPattern=1 1;fontSize=11;" edge="1" parent="1" source="hBXv7jzEsvArLMJGQopC-48" target="hBXv7jzEsvArLMJGQopC-49">
<mxCell id="hBXv7jzEsvArLMJGQopC-50" value="L" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.25;exitDx=0;exitDy=0;entryX=0;entryY=0.25;entryDx=0;entryDy=0;dashed=1;dashPattern=1 1;fontSize=11;" parent="1" source="hBXv7jzEsvArLMJGQopC-48" target="hBXv7jzEsvArLMJGQopC-49" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="hBXv7jzEsvArLMJGQopC-51" value="R" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.75;exitDx=0;exitDy=0;entryX=0;entryY=0.75;entryDx=0;entryDy=0;dashed=1;dashPattern=1 1;fontSize=11;" edge="1" parent="1" source="hBXv7jzEsvArLMJGQopC-48" target="hBXv7jzEsvArLMJGQopC-49">
<mxCell id="hBXv7jzEsvArLMJGQopC-51" value="R" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.75;exitDx=0;exitDy=0;entryX=0;entryY=0.75;entryDx=0;entryDy=0;dashed=1;dashPattern=1 1;fontSize=11;" parent="1" source="hBXv7jzEsvArLMJGQopC-48" target="hBXv7jzEsvArLMJGQopC-49" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="hBXv7jzEsvArLMJGQopC-48" value="DS1881E Digital Potentiometer" style="whiteSpace=wrap;html=1;fontSize=11;" vertex="1" parent="1">
<mxCell id="hBXv7jzEsvArLMJGQopC-48" value="DS1881E Digital Potentiometer" style="whiteSpace=wrap;html=1;fontSize=11;fillColor=#f8cecc;strokeColor=#b85450;" parent="1" vertex="1">
<mxGeometry x="470" y="160" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="hBXv7jzEsvArLMJGQopC-55" value="L" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.25;exitDx=0;exitDy=0;entryX=0;entryY=0.25;entryDx=0;entryDy=0;dashed=1;dashPattern=1 1;fontSize=11;" edge="1" parent="1" source="hBXv7jzEsvArLMJGQopC-49" target="hBXv7jzEsvArLMJGQopC-54">
<mxCell id="hBXv7jzEsvArLMJGQopC-55" value="L" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.25;exitDx=0;exitDy=0;entryX=0;entryY=0.25;entryDx=0;entryDy=0;dashed=1;dashPattern=1 1;fontSize=11;" parent="1" source="hBXv7jzEsvArLMJGQopC-49" target="hBXv7jzEsvArLMJGQopC-54" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="hBXv7jzEsvArLMJGQopC-56" value="R" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.75;exitDx=0;exitDy=0;entryX=0;entryY=0.75;entryDx=0;entryDy=0;dashed=1;dashPattern=1 1;fontSize=11;" edge="1" parent="1" source="hBXv7jzEsvArLMJGQopC-49" target="hBXv7jzEsvArLMJGQopC-54">
<mxCell id="hBXv7jzEsvArLMJGQopC-56" value="R" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.75;exitDx=0;exitDy=0;entryX=0;entryY=0.75;entryDx=0;entryDy=0;dashed=1;dashPattern=1 1;fontSize=11;" parent="1" source="hBXv7jzEsvArLMJGQopC-49" target="hBXv7jzEsvArLMJGQopC-54" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="hBXv7jzEsvArLMJGQopC-49" value="TS482 2ch Amplifier" style="whiteSpace=wrap;html=1;fontSize=11;" vertex="1" parent="1">
<mxCell id="hBXv7jzEsvArLMJGQopC-49" value="TS482 2ch Amplifier" style="whiteSpace=wrap;html=1;fontSize=11;fillColor=#f8cecc;strokeColor=#b85450;" parent="1" vertex="1">
<mxGeometry x="600" y="160" width="70" height="40" as="geometry" />
</mxCell>
<mxCell id="hBXv7jzEsvArLMJGQopC-54" value="3.5mm Audio Port" style="whiteSpace=wrap;html=1;fontSize=11;" vertex="1" parent="1">
<mxCell id="hBXv7jzEsvArLMJGQopC-54" value="3.5mm Audio Port" style="whiteSpace=wrap;html=1;fontSize=11;fillColor=#f8cecc;strokeColor=#b85450;" parent="1" vertex="1">
<mxGeometry x="700" y="160" width="70" height="40" as="geometry" />
</mxCell>
<mxCell id="hBXv7jzEsvArLMJGQopC-63" value="RX" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.75;exitDx=0;exitDy=0;entryX=1;entryY=0.75;entryDx=0;entryDy=0;fontSize=11;" edge="1" parent="1" source="hBXv7jzEsvArLMJGQopC-61" target="hBXv7jzEsvArLMJGQopC-32">
<mxCell id="hBXv7jzEsvArLMJGQopC-63" value="RX" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.75;exitDx=0;exitDy=0;entryX=1;entryY=0.75;entryDx=0;entryDy=0;fontSize=11;" parent="1" source="hBXv7jzEsvArLMJGQopC-61" target="hBXv7jzEsvArLMJGQopC-32" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="hBXv7jzEsvArLMJGQopC-66" value="CANH" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.25;exitDx=0;exitDy=0;entryX=0;entryY=0.25;entryDx=0;entryDy=0;startArrow=classic;startFill=1;fontSize=11;" edge="1" parent="1" source="hBXv7jzEsvArLMJGQopC-61" target="hBXv7jzEsvArLMJGQopC-65">
<mxCell id="hBXv7jzEsvArLMJGQopC-66" value="CANH" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.25;exitDx=0;exitDy=0;entryX=0;entryY=0.25;entryDx=0;entryDy=0;startArrow=classic;startFill=1;fontSize=11;" parent="1" source="hBXv7jzEsvArLMJGQopC-61" target="hBXv7jzEsvArLMJGQopC-65" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="hBXv7jzEsvArLMJGQopC-67" value="CANL" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.75;exitDx=0;exitDy=0;entryX=0;entryY=0.75;entryDx=0;entryDy=0;startArrow=classic;startFill=1;fontSize=11;" edge="1" parent="1" source="hBXv7jzEsvArLMJGQopC-61" target="hBXv7jzEsvArLMJGQopC-65">
<mxCell id="hBXv7jzEsvArLMJGQopC-67" value="CANL" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.75;exitDx=0;exitDy=0;entryX=0;entryY=0.75;entryDx=0;entryDy=0;startArrow=classic;startFill=1;fontSize=11;" parent="1" source="hBXv7jzEsvArLMJGQopC-61" target="hBXv7jzEsvArLMJGQopC-65" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="hBXv7jzEsvArLMJGQopC-61" value="ATA6561 CAN Transceiver" style="whiteSpace=wrap;html=1;fontSize=11;" vertex="1" parent="1">
<mxCell id="hBXv7jzEsvArLMJGQopC-61" value="ATA6561 CAN Transceiver" style="whiteSpace=wrap;html=1;fontSize=11;fillColor=#f8cecc;strokeColor=#b85450;" parent="1" vertex="1">
<mxGeometry x="490" y="260" width="90" height="40" as="geometry" />
</mxCell>
<mxCell id="hBXv7jzEsvArLMJGQopC-65" value="StackSynth Inter-board Connector" style="whiteSpace=wrap;html=1;fontSize=11;" vertex="1" parent="1">
<mxCell id="hBXv7jzEsvArLMJGQopC-65" value="StackSynth Inter-board Connector" style="whiteSpace=wrap;html=1;fontSize=11;fillColor=#f8cecc;strokeColor=#b85450;" parent="1" vertex="1">
<mxGeometry x="640" y="260" width="130" height="40" as="geometry" />
</mxCell>
<mxCell id="hBXv7jzEsvArLMJGQopC-68" value="RGB User-led Pins" style="whiteSpace=wrap;html=1;fontSize=11;" vertex="1" parent="1">
<mxCell id="hBXv7jzEsvArLMJGQopC-68" value="RGB User-led Pins" style="whiteSpace=wrap;html=1;fontSize=11;fillColor=#ffe6cc;strokeColor=#d79b00;" parent="1" vertex="1">
<mxGeometry x="650" y="210" width="120" height="40" as="geometry" />
</mxCell>
<mxCell id="hBXv7jzEsvArLMJGQopC-73" value="OUTR" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.75;exitY=1;exitDx=0;exitDy=0;entryX=0.75;entryY=0;entryDx=0;entryDy=0;dashed=1;dashPattern=1 1;fontSize=11;" edge="1" parent="1" source="hBXv7jzEsvArLMJGQopC-70" target="hBXv7jzEsvArLMJGQopC-48">
<mxCell id="hBXv7jzEsvArLMJGQopC-73" value="OUTR" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.75;exitY=1;exitDx=0;exitDy=0;entryX=0.75;entryY=0;entryDx=0;entryDy=0;dashed=1;dashPattern=1 1;fontSize=11;" parent="1" source="hBXv7jzEsvArLMJGQopC-70" target="hBXv7jzEsvArLMJGQopC-48" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="745" y="150" />
@ -223,7 +223,7 @@
</Array>
</mxGeometry>
</mxCell>
<mxCell id="hBXv7jzEsvArLMJGQopC-74" value="OUTL" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.25;exitY=1;exitDx=0;exitDy=0;entryX=0.25;entryY=0;entryDx=0;entryDy=0;dashed=1;dashPattern=1 1;fontSize=11;" edge="1" parent="1" source="hBXv7jzEsvArLMJGQopC-70" target="hBXv7jzEsvArLMJGQopC-48">
<mxCell id="hBXv7jzEsvArLMJGQopC-74" value="OUTL" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.25;exitY=1;exitDx=0;exitDy=0;entryX=0.25;entryY=0;entryDx=0;entryDy=0;dashed=1;dashPattern=1 1;fontSize=11;" parent="1" source="hBXv7jzEsvArLMJGQopC-70" target="hBXv7jzEsvArLMJGQopC-48" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="695" y="140" />
@ -231,26 +231,26 @@
</Array>
</mxGeometry>
</mxCell>
<mxCell id="hBXv7jzEsvArLMJGQopC-70" value="PCM1780 DAC" style="whiteSpace=wrap;html=1;fontSize=11;" vertex="1" parent="1">
<mxCell id="hBXv7jzEsvArLMJGQopC-70" value="PCM1780 DAC" style="whiteSpace=wrap;html=1;fontSize=11;fillColor=#f8cecc;strokeColor=#b85450;" parent="1" vertex="1">
<mxGeometry x="670" y="90" width="100" height="40" as="geometry" />
</mxCell>
<mxCell id="hBXv7jzEsvArLMJGQopC-77" value="m̅s̅ (select)" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.25;exitDx=0;exitDy=0;entryX=0;entryY=0.25;entryDx=0;entryDy=0;fontSize=11;" edge="1" parent="1" source="hBXv7jzEsvArLMJGQopC-75" target="hBXv7jzEsvArLMJGQopC-70">
<mxCell id="hBXv7jzEsvArLMJGQopC-77" value="m̅s̅ (select)" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.25;exitDx=0;exitDy=0;entryX=0;entryY=0.25;entryDx=0;entryDy=0;fontSize=11;" parent="1" source="hBXv7jzEsvArLMJGQopC-75" target="hBXv7jzEsvArLMJGQopC-70" edge="1">
<mxGeometry x="-0.5238" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="hBXv7jzEsvArLMJGQopC-79" value="mc (clock)" 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;fontSize=11;" edge="1" parent="1" source="hBXv7jzEsvArLMJGQopC-75" target="hBXv7jzEsvArLMJGQopC-70">
<mxCell id="hBXv7jzEsvArLMJGQopC-79" value="mc (clock)" 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;fontSize=11;" parent="1" source="hBXv7jzEsvArLMJGQopC-75" target="hBXv7jzEsvArLMJGQopC-70" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="hBXv7jzEsvArLMJGQopC-80" value="md (data)" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.75;exitDx=0;exitDy=0;entryX=0;entryY=0.75;entryDx=0;entryDy=0;fontSize=11;" edge="1" parent="1" source="hBXv7jzEsvArLMJGQopC-75" target="hBXv7jzEsvArLMJGQopC-70">
<mxCell id="hBXv7jzEsvArLMJGQopC-80" value="md (data)" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.75;exitDx=0;exitDy=0;entryX=0;entryY=0.75;entryDx=0;entryDy=0;fontSize=11;" parent="1" source="hBXv7jzEsvArLMJGQopC-75" target="hBXv7jzEsvArLMJGQopC-70" edge="1">
<mxGeometry x="0.5238" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="hBXv7jzEsvArLMJGQopC-75" value="DAC Mode Bus Driver" style="whiteSpace=wrap;html=1;fontSize=11;" vertex="1" parent="1">
<mxCell id="hBXv7jzEsvArLMJGQopC-75" value="DAC Mode Bus Driver" style="whiteSpace=wrap;html=1;fontSize=11;fillColor=#d5e8d4;strokeColor=#82b366;" parent="1" vertex="1">
<mxGeometry x="390" y="90" width="70" height="40" as="geometry" />
</mxCell>
<mxCell id="hBXv7jzEsvArLMJGQopC-82" value="bck" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.75;exitDx=0;exitDy=0;entryX=0.25;entryY=0;entryDx=0;entryDy=0;fontSize=11;" edge="1" parent="1" source="hBXv7jzEsvArLMJGQopC-81" target="hBXv7jzEsvArLMJGQopC-70">
<mxCell id="hBXv7jzEsvArLMJGQopC-82" value="bck" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.75;exitDx=0;exitDy=0;entryX=0.25;entryY=0;entryDx=0;entryDy=0;fontSize=11;" parent="1" source="hBXv7jzEsvArLMJGQopC-81" target="hBXv7jzEsvArLMJGQopC-70" edge="1">
<mxGeometry x="0.2727" relative="1" as="geometry">
<Array as="points">
<mxPoint x="695" y="50" />
@ -258,20 +258,20 @@
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="hBXv7jzEsvArLMJGQopC-84" value="lrck" 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;fontSize=11;" edge="1" parent="1" source="hBXv7jzEsvArLMJGQopC-81" target="hBXv7jzEsvArLMJGQopC-70">
<mxCell id="hBXv7jzEsvArLMJGQopC-84" value="lrck" 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;fontSize=11;" parent="1" source="hBXv7jzEsvArLMJGQopC-81" target="hBXv7jzEsvArLMJGQopC-70" edge="1">
<mxGeometry x="0.3333" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="hBXv7jzEsvArLMJGQopC-85" value="data" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.25;exitDx=0;exitDy=0;entryX=0.75;entryY=0;entryDx=0;entryDy=0;fontSize=11;" edge="1" parent="1" source="hBXv7jzEsvArLMJGQopC-81" target="hBXv7jzEsvArLMJGQopC-70">
<mxCell id="hBXv7jzEsvArLMJGQopC-85" value="data" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.25;exitDx=0;exitDy=0;entryX=0.75;entryY=0;entryDx=0;entryDy=0;fontSize=11;" parent="1" source="hBXv7jzEsvArLMJGQopC-81" target="hBXv7jzEsvArLMJGQopC-70" edge="1">
<mxGeometry x="0.36" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="hBXv7jzEsvArLMJGQopC-81" value="DAC Driver" style="whiteSpace=wrap;html=1;fontSize=11;" vertex="1" parent="1">
<mxCell id="hBXv7jzEsvArLMJGQopC-81" value="DAC Driver" style="whiteSpace=wrap;html=1;fontSize=11;fillColor=#d5e8d4;strokeColor=#82b366;" parent="1" vertex="1">
<mxGeometry x="640" y="20" width="40" height="40" as="geometry" />
</mxCell>
<mxCell id="hBXv7jzEsvArLMJGQopC-89" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;startArrow=classic;startFill=1;endArrow=none;endFill=0;fontSize=11;" edge="1" parent="1" source="hBXv7jzEsvArLMJGQopC-87">
<mxCell id="hBXv7jzEsvArLMJGQopC-89" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;startArrow=classic;startFill=1;endArrow=none;endFill=0;fontSize=11;" parent="1" source="hBXv7jzEsvArLMJGQopC-87" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="570" y="80" as="targetPoint" />
<Array as="points">
@ -280,7 +280,7 @@
</Array>
</mxGeometry>
</mxCell>
<mxCell id="hBXv7jzEsvArLMJGQopC-90" 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=none;endFill=0;fontSize=11;" edge="1" parent="1" source="hBXv7jzEsvArLMJGQopC-87">
<mxCell id="hBXv7jzEsvArLMJGQopC-90" 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=none;endFill=0;fontSize=11;" parent="1" source="hBXv7jzEsvArLMJGQopC-87" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="570" as="targetPoint" />
<Array as="points">
@ -289,60 +289,60 @@
</Array>
</mxGeometry>
</mxCell>
<mxCell id="hBXv7jzEsvArLMJGQopC-98" value="wait" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.25;exitDx=0;exitDy=0;entryX=1;entryY=0.25;entryDx=0;entryDy=0;fontSize=11;" edge="1" parent="1" source="hBXv7jzEsvArLMJGQopC-87" target="hBXv7jzEsvArLMJGQopC-37">
<mxCell id="hBXv7jzEsvArLMJGQopC-98" value="wait" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.25;exitDx=0;exitDy=0;entryX=1;entryY=0.25;entryDx=0;entryDy=0;fontSize=11;" parent="1" source="hBXv7jzEsvArLMJGQopC-87" target="hBXv7jzEsvArLMJGQopC-37" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="hBXv7jzEsvArLMJGQopC-87" value="Async FIFO" style="whiteSpace=wrap;html=1;fontSize=11;" vertex="1" parent="1">
<mxCell id="hBXv7jzEsvArLMJGQopC-87" value="Async FIFO" style="whiteSpace=wrap;html=1;fontSize=11;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
<mxGeometry x="550" y="20" width="40" height="40" as="geometry" />
</mxCell>
<mxCell id="hBXv7jzEsvArLMJGQopC-94" value="data" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.75;exitDx=0;exitDy=0;entryX=0;entryY=0.75;entryDx=0;entryDy=0;fontSize=11;" edge="1" parent="1" source="hBXv7jzEsvArLMJGQopC-87" target="hBXv7jzEsvArLMJGQopC-81">
<mxCell id="hBXv7jzEsvArLMJGQopC-94" value="data" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.75;exitDx=0;exitDy=0;entryX=0;entryY=0.75;entryDx=0;entryDy=0;fontSize=11;" parent="1" source="hBXv7jzEsvArLMJGQopC-87" target="hBXv7jzEsvArLMJGQopC-81" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="hBXv7jzEsvArLMJGQopC-93" value="req" 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;fontSize=11;" edge="1" parent="1" source="hBXv7jzEsvArLMJGQopC-81" target="hBXv7jzEsvArLMJGQopC-87">
<mxCell id="hBXv7jzEsvArLMJGQopC-93" value="req" 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;fontSize=11;" parent="1" source="hBXv7jzEsvArLMJGQopC-81" target="hBXv7jzEsvArLMJGQopC-87" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="hBXv7jzEsvArLMJGQopC-92" value="ready" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.25;exitDx=0;exitDy=0;entryX=0;entryY=0.25;entryDx=0;entryDy=0;fontSize=11;" edge="1" parent="1" source="hBXv7jzEsvArLMJGQopC-87" target="hBXv7jzEsvArLMJGQopC-81">
<mxCell id="hBXv7jzEsvArLMJGQopC-92" value="ready" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.25;exitDx=0;exitDy=0;entryX=0;entryY=0.25;entryDx=0;entryDy=0;fontSize=11;" parent="1" source="hBXv7jzEsvArLMJGQopC-87" target="hBXv7jzEsvArLMJGQopC-81" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="hBXv7jzEsvArLMJGQopC-114" value="clk" 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;fontSize=11;" edge="1" parent="1" source="hBXv7jzEsvArLMJGQopC-113" target="hBXv7jzEsvArLMJGQopC-1">
<mxCell id="hBXv7jzEsvArLMJGQopC-114" value="clk" 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;fontSize=11;" parent="1" source="hBXv7jzEsvArLMJGQopC-113" target="hBXv7jzEsvArLMJGQopC-1" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="hBXv7jzEsvArLMJGQopC-113" value="48MHz Oscillator" style="whiteSpace=wrap;html=1;fontSize=11;" vertex="1" parent="1">
<mxCell id="hBXv7jzEsvArLMJGQopC-113" value="48MHz Oscillator" style="whiteSpace=wrap;html=1;fontSize=11;fillColor=#ffe6cc;strokeColor=#d79b00;" parent="1" vertex="1">
<mxGeometry width="60" height="40" as="geometry" />
</mxCell>
<mxCell id="hBXv7jzEsvArLMJGQopC-115" value="Digital" style="endArrow=none;html=1;rounded=0;fontSize=11;" edge="1" parent="1">
<mxCell id="hBXv7jzEsvArLMJGQopC-115" value="Digital" style="endArrow=none;html=1;rounded=0;fontSize=11;" parent="1" edge="1">
<mxGeometry x="1" y="20" width="50" height="50" relative="1" as="geometry">
<mxPoint x="200" y="9.83" as="sourcePoint" />
<mxPoint x="220" y="9.83" as="targetPoint" />
<mxPoint x="20" y="20" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="hBXv7jzEsvArLMJGQopC-116" value="Analogue" style="endArrow=none;html=1;rounded=0;dashed=1;dashPattern=1 1;fontSize=11;" edge="1" parent="1">
<mxCell id="hBXv7jzEsvArLMJGQopC-116" value="Analogue" style="endArrow=none;html=1;rounded=0;dashed=1;dashPattern=1 1;fontSize=11;" parent="1" edge="1">
<mxGeometry x="1" y="30" width="50" height="50" relative="1" as="geometry">
<mxPoint x="200" y="29.83" as="sourcePoint" />
<mxPoint x="220" y="29.83" as="targetPoint" />
<mxPoint x="30" y="30" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="hBXv7jzEsvArLMJGQopC-117" value="Bus" style="endArrow=none;html=1;rounded=0;strokeWidth=2;fontSize=11;" edge="1" parent="1">
<mxCell id="hBXv7jzEsvArLMJGQopC-117" value="Bus" style="endArrow=none;html=1;rounded=0;strokeWidth=2;fontSize=11;" parent="1" edge="1">
<mxGeometry x="1" y="20" width="50" height="50" relative="1" as="geometry">
<mxPoint x="270" y="9.999999999999998" as="sourcePoint" />
<mxPoint x="290" y="9.999999999999998" as="targetPoint" />
<mxPoint x="20" y="20" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="hBXv7jzEsvArLMJGQopC-121" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.75;exitDx=0;exitDy=0;jumpStyle=arc;jumpSize=8;startArrow=classic;startFill=1;endArrow=none;endFill=0;strokeWidth=2;" edge="1" parent="1" source="hBXv7jzEsvArLMJGQopC-75">
<mxCell id="hBXv7jzEsvArLMJGQopC-121" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.75;exitDx=0;exitDy=0;jumpStyle=arc;jumpSize=8;startArrow=classic;startFill=1;endArrow=none;endFill=0;strokeWidth=2;" parent="1" source="hBXv7jzEsvArLMJGQopC-75" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="340" y="120" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="hBXv7jzEsvArLMJGQopC-34" value="clk" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.25;entryDx=0;entryDy=0;fontSize=11;" edge="1" parent="1" target="hBXv7jzEsvArLMJGQopC-32">
<mxCell id="hBXv7jzEsvArLMJGQopC-34" value="clk" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.25;entryDx=0;entryDy=0;fontSize=11;" parent="1" target="hBXv7jzEsvArLMJGQopC-32" edge="1">
<mxGeometry x="0.8" relative="1" as="geometry">
<mxPoint x="360" y="100" as="sourcePoint" />
<Array as="points">
@ -352,12 +352,12 @@
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="hBXv7jzEsvArLMJGQopC-109" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.75;exitDx=0;exitDy=0;jumpStyle=arc;jumpSize=8;endArrow=none;endFill=0;startArrow=classic;startFill=1;strokeWidth=2;fontSize=11;" edge="1" parent="1" source="hBXv7jzEsvArLMJGQopC-39">
<mxCell id="hBXv7jzEsvArLMJGQopC-109" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.75;exitDx=0;exitDy=0;jumpStyle=arc;jumpSize=8;endArrow=none;endFill=0;startArrow=classic;startFill=1;strokeWidth=2;fontSize=11;" parent="1" source="hBXv7jzEsvArLMJGQopC-39" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="340" y="190" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="hBXv7jzEsvArLMJGQopC-14" value="clk" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.25;entryDx=0;entryDy=0;fontSize=11;" edge="1" parent="1" target="hBXv7jzEsvArLMJGQopC-13">
<mxCell id="hBXv7jzEsvArLMJGQopC-14" value="clk" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.25;entryDx=0;entryDy=0;fontSize=11;" parent="1" target="hBXv7jzEsvArLMJGQopC-13" edge="1">
<mxGeometry x="0.7333" relative="1" as="geometry">
<mxPoint x="360" y="100" as="sourcePoint" />
<Array as="points">
@ -367,12 +367,12 @@
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="hBXv7jzEsvArLMJGQopC-111" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.75;exitDx=0;exitDy=0;startArrow=classic;startFill=1;endArrow=none;endFill=0;jumpSize=8;jumpStyle=arc;strokeWidth=2;fontSize=11;" edge="1" parent="1" source="hBXv7jzEsvArLMJGQopC-13">
<mxCell id="hBXv7jzEsvArLMJGQopC-111" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.75;exitDx=0;exitDy=0;startArrow=classic;startFill=1;endArrow=none;endFill=0;jumpSize=8;jumpStyle=arc;strokeWidth=2;fontSize=11;" parent="1" source="hBXv7jzEsvArLMJGQopC-13" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="340" y="240" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="hBXv7jzEsvArLMJGQopC-124" value="" style="rounded=0;whiteSpace=wrap;html=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
<mxCell id="hBXv7jzEsvArLMJGQopC-124" value="" style="rounded=0;whiteSpace=wrap;html=1;strokeColor=none;fillColor=none;" parent="1" vertex="1">
<mxGeometry width="780" height="310" as="geometry" />
</mxCell>
</root>

BIN
notes/systemOverview.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 988 KiB

BIN
notes/testPropTiming.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

BIN
notes/unsignedsine.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 MiB

View file

@ -20,7 +20,9 @@ Standard Template is on Intranet
# Acknowledgements
I would like to thank Dr Ed Stott for his time and patience in the many meetings it took to discuss this project, as well as his guidance in architectural decisions that impacted the entire project. Without this insight, much more time may have been spend investigating alternatives and this project may not have reached a Proof-of-Concept stage that is useful for future students of the 3rd Year Embedded Systems module..
I would like to thank Dr Ed Stott for his time and patience in the many meetings it took to discuss this project, as well as his guidance in architectural decisions that impacted the entire project. Without this insight, much more time may have been spend investigating alternatives and this project may not have reached a Proof-of-Concept stage that is useful for future students of the 3rd Year Embedded Systems module.
I would also like to thank my friends and family for their support and encouragement throughout the project, especially my peers who stayed up late with me as we worked on our projects together.
# Abstract
@ -82,10 +84,16 @@ The API for controlling the custom SystemVerilog logic has been designed to be s
# List of Figures
TODO
# List of Listings
TODO
# List of Tables
TODO
# List of Abbreviations
- ACM: Abstract Control Model (USB Class)
@ -137,7 +145,7 @@ The report is structured as follows:
- **Chapter 4 - Implementation** - Details the design decisions made during development and features of the project as completed
- **Chapter 5 - Testing and Results** - Covers testing throughout the project used to verify functional correctness of the design and measure performance
- **Chapter 6 - Evaluation** - Evaluates the project on progress against the identified objectives and areas that can be improved
- **Chapter 7 - Conclusion** - Concludes the project, including insights into future work
- **Chapter 7 - Conclusions** - Concludes the project, including insights into future work
# Background
@ -305,7 +313,7 @@ The CAN protocol is a NRZ (Non Return-to-Zero) protocol, meaning consecutive bit
[Listing: Bit stuffing example]
$0000011110 \rightarrow 00000\textcolor{red}{1}1111\textcolor{red}{0}0$
$0000011110 \rightarrow 00000{red}{1}1111{red}{0}0$
A complete CAN bus frame is shown in Figure x.y, from the [Wikipedia page on the CAN bus](https://en.wikipedia.org/wiki/CAN_bus), where the frame ID is 0x14 and the frame contains 1 byte of data. In the case of the StackSynth module, the data length is hardcoded to 8 bytes within the CAN helper library, with unused bytes being ignored by the receiving device.
@ -1062,16 +1070,16 @@ fatal error: gnu/stubs-ilp32.h: No such file or directory
8 | # include <gnu/stubs-ilp32.h>
```
- TODO: Measure SNR and fill in
And finally, a measure of the performance improvement in audio quality between the StackSynth and FPGA Extension boards is the SNR (Signal-to-Noise Ratio) of the audio output as a higher SNR would result in a lower noise floor and clearer audio for the same signal amplitude. Table x.y contains the frequency, SNR and THD results for the StackSynth board and the FPGA Extension board when using a target frequency of 3520Hz (A7), each using 500 samples in the measurement. The screenshots of the PicoScope measurements are included in Appendix x.y.
Finally, a useful measure of the performance improvement in audio quality between the StackSynth and FPGA Extension boards is the SNR (Signal-to-Noise Ratio) of the audio output as a higher SNR would result in a lower noise floor and clearer audio. As shown in Table x.y, the average measured SNR of the StackSynth board was ??.? dB and of the FPGA Extension board was ??.? dB, showing a significant improvement in audio quality. The screenshots of the PicoScope measurements are included in Appendix x.y.
The results show a small but measurable improvement in SND as well as THD, while the frequency is slightly further from the target on the FPGA. Overall the audio performance of a single oscillator is similar, however the FPGA accelerator is capable of many more oscillators simultaneously.
[Table: SNR of StackSynth and FPGA Extension boards]
[Table: SNR and THD of StackSynth and FPGA Extension boards]
| Board | SNR (dB) |
| -------------- | -------- |
| StackSynth | ??.?? |
| FPGA Extension | ??.?? |
| Board | Frequency (Hz) | SNR (dBc) | THD (%) |
| -------------- | -------------- | --------- | ------- |
| StackSynth | 3520.29 | 24.48 | 2.71 |
| FPGA Extension | 3520.60 | 25.18 | 2.12 |
# Evaluation