docs: data_offload: Add docs (#1333)

Import documentation from the IP library and wiki page.
Make the background of the clock images less opaque so it's easier to
read.
Don't split roles, even though are valid, are a nightmare to
regex-match, if necessary.

Signed-off-by: Ionut Podgoreanu <ionut.podgoreanu@analog.com>
Signed-off-by: Jorge Marques <jorge.marques@analog.com>
main
podgori 2024-05-21 15:47:22 +03:00 committed by GitHub
parent 25bdc9877f
commit c2754429c1
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
15 changed files with 1412 additions and 1956 deletions

View File

Before

Width:  |  Height:  |  Size: 58 KiB

After

Width:  |  Height:  |  Size: 58 KiB

View File

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 21 KiB

View File

@ -0,0 +1,614 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="800"
height="400"
viewBox="0 0 800.00001 400.00001"
id="svg4885"
version="1.1"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<defs
id="defs4887">
<linearGradient
id="linearGradient4385">
<stop
style="stop-color:#f05028;stop-opacity:1"
offset="0"
id="stop4387" />
<stop
style="stop-color:#100def;stop-opacity:1"
offset="1"
id="stop4389" />
</linearGradient>
<linearGradient
id="linearGradient4377">
<stop
style="stop-color:#f05028;stop-opacity:0.9254902"
offset="0"
id="stop4379" />
<stop
style="stop-color:#100def;stop-opacity:1"
offset="1"
id="stop4381" />
</linearGradient>
<linearGradient
id="linearGradient4369">
<stop
style="stop-color:#006400;stop-opacity:1"
offset="0"
id="stop4371" />
<stop
style="stop-color:#100def;stop-opacity:1"
offset="1"
id="stop4373" />
</linearGradient>
<linearGradient
id="linearGradient4361">
<stop
style="stop-color:#100def;stop-opacity:1;"
offset="0"
id="stop4363" />
<stop
style="stop-color:#c8c800;stop-opacity:1"
offset="1"
id="stop4365" />
</linearGradient>
<linearGradient
id="linearGradient4349">
<stop
style="stop-color:#0000ff;stop-opacity:1"
offset="0"
id="stop4351" />
<stop
style="stop-color:#ffc800;stop-opacity:1"
offset="1"
id="stop4353" />
</linearGradient>
<marker
orient="auto"
refY="0"
refX="0"
id="marker8368"
style="overflow:visible">
<path
id="path8370"
d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
transform="scale(0.8,0.8)" />
</marker>
<marker
style="overflow:visible"
id="marker7024"
refX="0"
refY="0"
orient="auto">
<path
transform="scale(0.8,0.8)"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
id="path7026" />
</marker>
<marker
style="overflow:visible"
id="marker6894"
refX="0"
refY="0"
orient="auto">
<path
transform="scale(0.8,0.8)"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
id="path6896" />
</marker>
<marker
style="overflow:visible"
id="marker6770"
refX="0"
refY="0"
orient="auto">
<path
transform="scale(0.8,0.8)"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
id="path6772" />
</marker>
<marker
orient="auto"
refY="0"
refX="0"
id="marker6384"
style="overflow:visible">
<path
id="path6386"
d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
transform="scale(0.8,0.8)" />
</marker>
<marker
orient="auto"
refY="0"
refX="0"
id="marker5850"
style="overflow:visible">
<path
id="path5852"
d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
transform="scale(0.8,0.8)" />
</marker>
<marker
orient="auto"
refY="0"
refX="0"
id="marker5774"
style="overflow:visible">
<path
id="path5776"
d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
transform="scale(0.8,0.8)" />
</marker>
<marker
orient="auto"
refY="0"
refX="0"
id="TriangleOutL-5-7-7"
style="overflow:visible">
<path
id="path4988-2-1-3"
d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
transform="scale(0.8,0.8)" />
</marker>
<linearGradient
xlink:href="#linearGradient4349"
id="linearGradient4359"
x1="670"
y1="632.36218"
x2="720"
y2="632.36218"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(0,148)" />
<linearGradient
xlink:href="#linearGradient4361"
id="linearGradient4367"
x1="667.95374"
y1="813.99072"
x2="735"
y2="812.36218"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(0,148)" />
<linearGradient
xlink:href="#linearGradient4369"
id="linearGradient4375"
x1="400"
y1="512.36218"
x2="400"
y2="592.36218"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(0,148)" />
<linearGradient
xlink:href="#linearGradient4377"
id="linearGradient4383"
x1="75"
y1="632.36218"
x2="130.82559"
y2="634.90942"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(0,148)" />
<linearGradient
xlink:href="#linearGradient4385"
id="linearGradient4391"
x1="75"
y1="817.36218"
x2="130.4312"
y2="815.65063"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(0,148)" />
</defs>
<metadata
id="metadata4890">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<g
id="layer1"
transform="translate(0,-652.36216)">
<rect
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.5;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:url(#linearGradient4383);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
id="rect4684"
width="73.38298"
height="155.3896"
x="56.692612"
y="705.2146" />
<rect
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.5;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#100def;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
id="rect4684-2"
width="73.38298"
height="155.3896"
x="192.66696"
y="705.2146" />
<rect
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.5;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#100def;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
id="rect4684-2-3"
width="73.38298"
height="155.3896"
x="547.71106"
y="705.2146" />
<rect
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.5;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:url(#linearGradient4359);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
id="rect4684-2-3-3"
width="73.38298"
height="155.3896"
x="667.95624"
y="705.2146" />
<rect
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.5;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#100def;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
id="rect4731"
width="164.03253"
height="153.97696"
x="325.40378"
y="773.92096" />
<rect
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.5;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#100def;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
id="rect4733"
width="164.25298"
height="63.581898"
x="325.39706"
y="933.32959" />
<rect
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.5;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:url(#linearGradient4375);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
id="rect4733-2"
width="167.27"
height="63.568466"
x="322.86417"
y="664.914" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="93.016663"
y="778.31653"
id="text4777"><tspan
id="tspan4779"
x="93.016663"
y="778.31653"
style="font-size:17.5px;line-height:1.25;text-align:center;text-anchor:middle">CDC</tspan><tspan
x="93.016663"
y="797.77869"
id="tspan4781"
style="font-size:17.5px;line-height:1.25;text-align:center;text-anchor:middle">FIFO</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="704.28027"
y="778.31653"
id="text4777-0"><tspan
id="tspan4779-0"
x="704.28027"
y="778.31653"
style="font-size:17.5px;line-height:1.25;text-align:center;text-anchor:middle">CDC</tspan><tspan
x="704.28027"
y="797.77869"
id="tspan4781-0"
style="font-size:17.5px;line-height:1.25;text-align:center;text-anchor:middle">FIFO</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="406.37463"
y="692.875"
id="text4804"><tspan
id="tspan4806"
x="406.37463"
y="692.875"
style="font-size:15px;line-height:1.25;text-align:center;text-anchor:middle">AXI REGISTER</tspan><tspan
x="406.37463"
y="711.625"
id="tspan4808"
style="font-size:15px;line-height:1.25;text-align:center;text-anchor:middle">MAP</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="367.93396"
y="857.27112"
id="text4810"><tspan
id="tspan4812"
x="367.93396"
y="857.27112"
style="font-size:17.5px;line-height:1.25">MEMORY</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="-826.38171"
y="235.72015"
id="text4814"
transform="rotate(-90)"><tspan
id="tspan4816"
x="-826.38171"
y="235.72015"
style="font-size:17.5px;line-height:1.25">GEARBOX</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="-826.38171"
y="590.76422"
id="text4814-5"
transform="rotate(-90)"><tspan
id="tspan4816-3"
x="-826.38171"
y="590.76422"
style="font-size:17.5px;line-height:1.25">GEARBOX</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="348.77411"
y="962.638"
id="text4836"
transform="scale(0.99083586,1.0092489)"><tspan
id="tspan4838"
x="348.77411"
y="962.638"
style="font-size:17.5px;line-height:1.25">OFFLOAD FSM</tspan></text>
<rect
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.5;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:url(#linearGradient4391);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
id="rect4684-7"
width="73.38298"
height="155.3896"
x="56.298218"
y="885.95581" />
<rect
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.5;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#100def;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
id="rect4684-2-8"
width="73.38298"
height="155.3896"
x="192.27258"
y="885.95581" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="92.622276"
y="959.05774"
id="text4777-7"><tspan
id="tspan4779-4"
x="92.622276"
y="959.05774"
style="font-size:17.5px;line-height:1.25;text-align:center;text-anchor:middle">CDC</tspan><tspan
x="92.622276"
y="978.5199"
id="tspan4781-4"
style="font-size:17.5px;line-height:1.25;text-align:center;text-anchor:middle">FIFO</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="-1007.1229"
y="235.32578"
id="text4814-0"
transform="rotate(-90)"><tspan
id="tspan4816-0"
x="-1007.1229"
y="235.32578"
style="font-size:17.5px;line-height:1.25">GEARBOX</tspan></text>
<rect
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.5;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#100def;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
id="rect4684-2-3-7"
width="73.38298"
height="155.3896"
x="548.45856"
y="884.2959" />
<rect
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:0.5;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:url(#linearGradient4367);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
id="rect4684-2-3-3-0"
width="73.38298"
height="155.3896"
x="668.70374"
y="884.2959" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="705.02777"
y="957.39783"
id="text4777-0-5"><tspan
id="tspan4779-0-5"
x="705.02777"
y="957.39783"
style="font-size:17.5px;line-height:1.25;text-align:center;text-anchor:middle">CDC</tspan><tspan
x="705.02777"
y="976.85999"
id="tspan4781-0-0"
style="font-size:17.5px;line-height:1.25;text-align:center;text-anchor:middle">FIFO</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="-1005.463"
y="591.51172"
id="text4814-5-4"
transform="rotate(-90)"><tspan
id="tspan4816-3-7"
x="-1005.463"
y="591.51172"
style="font-size:17.5px;line-height:1.25">GEARBOX</tspan></text>
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 56.599504,823.30859 7.955357,7.23214 -7.642857,7.1875"
id="path5891" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 130.15505,823.30859 -7.95536,7.23214 7.64286,7.1875"
id="path5891-5" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 56.199504,1008.3086 7.955358,7.2321 -7.642858,7.1875"
id="path5891-7" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 129.75505,1008.3086 -7.95536,7.2321 7.64286,7.1875"
id="path5891-5-7" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 668.4995,1008.1082 7.95536,7.2321 -7.64286,7.1875"
id="path5891-7-0" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 742.05505,1008.1082 -7.95536,7.2321 7.64286,7.1875"
id="path5891-5-7-2" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 667.7995,823.10816 7.95536,7.23214 -7.64286,7.1875"
id="path5891-7-0-9" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 741.35505,823.10816 -7.95536,7.23214 7.64286,7.1875"
id="path5891-5-7-2-1" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 548.4995,1008.2082 7.95536,7.2321 -7.64286,7.1875"
id="path5891-7-0-7" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 547.3995,823.20816 7.95536,7.23214 -7.64286,7.1875"
id="path5891-7-0-7-3" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 322.7995,688.20816 7.95536,7.23214 -7.64286,7.1875"
id="path5891-7-0-7-3-8" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 192.3995,1008.3086 7.95536,7.2321 -7.64286,7.1875"
id="path5891-7-8" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 192.6995,823.20816 7.95536,7.23214 -7.64286,7.1875"
id="path5891-7-8-4" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 325.1995,958.30859 7.95536,7.23214 -7.64286,7.1875"
id="path5891-7-8-5" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="383.5553"
y="784.36218"
id="text4252"><tspan
id="tspan4254"
x="383.5553"
y="784.36218"
style="font-size:10px;line-height:1.25;fill:#000000;fill-opacity:1">USR_CLK</tspan></text>
<path
style="fill:none;fill-rule:evenodd;stroke:#0000ff;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 405,775.36216 0,-30 120,0 0,85 23,0"
id="path4256" />
<path
style="fill:none;fill-rule:evenodd;stroke:#0000ff;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 525,830.36216 0,185.00004 23,0"
id="path4258" />
<path
style="fill:none;fill-rule:evenodd;stroke:#0000ff;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 525,870.36216 120,0 0,-40 23,0"
id="path4260" />
<path
style="fill:none;fill-rule:evenodd;stroke:#0000ff;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 645,870.36216 0,145.00004 24,0"
id="path4262" />
<path
style="fill:none;fill-rule:evenodd;stroke:#0000ff;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 405,745.36216 -110,0 0,125 -135,0 0,-40 33,0"
id="path4264" />
<path
style="fill:none;fill-rule:evenodd;stroke:#0000ff;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 160,830.36216 -30,0"
id="path4266" />
<path
style="fill:none;fill-rule:evenodd;stroke:#0000ff;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 160,870.36216 0,145.00004 32,0"
id="path4268" />
<path
style="fill:none;fill-rule:evenodd;stroke:#0000ff;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 160,1015.3622 -30,0"
id="path4270" />
<path
style="fill:none;fill-rule:evenodd;stroke:#0000ff;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 295,870.36216 0,95 30,0"
id="path4272" />
<path
style="fill:none;fill-rule:evenodd;stroke:#006400;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 321.84327,695.23589 275,695.36216"
id="path4274" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="270"
y="690.36218"
id="text4276"><tspan
id="tspan4278"
x="270"
y="690.36218"
style="font-size:10px;line-height:1.25;fill:#006400;fill-opacity:1">SYS_CLK</tspan></text>
<path
style="fill:none;fill-rule:evenodd;stroke:#f05028;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 55,830.36216 -45,0"
id="path4280" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="3"
y="827.36218"
id="text4282"><tspan
id="tspan4284"
x="3"
y="827.36218"
style="font-size:10px;line-height:1.25;fill:#f05028;fill-opacity:1">DMA_CLK</tspan></text>
<path
style="fill:none;fill-rule:evenodd;stroke:#f05028;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 55.500438,1015.3622 -45,0"
id="path4280-9" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="3.5004375"
y="1012.3619"
id="text4282-5"><tspan
id="tspan4284-5"
x="3.5004375"
y="1012.3619"
style="font-size:10px;line-height:1.25;fill:#f05028;fill-opacity:1">DMA_CLK</tspan></text>
<path
style="fill:none;fill-rule:evenodd;stroke:#ffc800;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 742,830.36216 38,0"
id="path4307" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="748.92859"
y="824.64789"
id="text4324"><tspan
id="tspan4326"
x="748.92859"
y="824.64789"
style="font-size:10px;line-height:1.25;fill:#ffc800;fill-opacity:1">DAC_CLK</tspan></text>
<path
style="fill:none;fill-rule:evenodd;stroke:#c8c800;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 742.7,1015.3622 38,0"
id="path4307-5" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="749.62842"
y="1009.6479"
id="text4324-8"><tspan
id="tspan4326-5"
x="749.62842"
y="1009.6479"
style="font-size:10px;line-height:1.25;fill:#c8c800;fill-opacity:1">ADC_CLK</tspan></text>
</g>
</svg>

After

Width:  |  Height:  |  Size: 31 KiB

View File

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 24 KiB

View File

@ -0,0 +1,491 @@
.. _data_offload:
Data Offload
================================================================================
.. hdl-component-diagram::
The :git-hdl:`Data Offload Engine <library/data_offload>` is, in essence, a
clock-domain crossing store-and-forward buffer (or FIFO) with some extra features
useful in bursty RF applications. More specifically, it was designed to sit
between the DMA and the DAC for the TX and between the ADC and the DMA for the
RX path of a digital RF chain. This is reflected in the synthesis settings of the
device, that also enable or disable certain other settings of features where
appropriate. For example, in the receive path cyclic operation isn't supported.
Features
--------------------------------------------------------------------------------
* Configurable storage unit with support for Block-RAM and External DRAM (Up to
16 GiB) or external High Bandwidth Memory (HBM)
* Configurable interface width and rates
* External timing synchronization for precisely timed buffers (For example, in
combination with the Timing-Division Duplexing Controller)
* Cyclic and oneshot store and forward operation
* Bypass mode to completely bypass all features and act as a pure CDC FIFO
* Many settings configurable at runtime via MM AXI4-Lite bus
.. note::
The data offload does NOT support, in its current state, continuous streaming
except when in bypass mode (thus disabling all other functionality).
Utilization
--------------------------------------------------------------------------------
.. list-table::
:header-rows: 1
* - Device Family
- LUTs
- FFs
* - Xilinx Zynq UltraScale+
- 750
- 2000
Files
--------------------------------------------------------------------------------
.. list-table::
:header-rows: 1
* - Name
- Description
* - :git-hdl:`library/data_offload/data_offload.v`
- Verilog source for the peripheral.
* - :git-linux:`drivers/misc/adi-axi-data-offload.c`
- Linux Driver.
* - :git-linux:`arch/arm64/boot/dts/xilinx/zynqmp-zcu102-rev10-ad9081-m8-l4-do.dts`
- Example device tree using the data offload.
Block Diagram
--------------------------------------------------------------------------------
.. image:: block_diagram.svg
:alt: Data Offload block diagram
:align: center
Configuration Parameters
--------------------------------------------------------------------------------
.. hdl-parameters::
* - ID
- Instance identification number.
* - MEM_TYPE
- Define the used storage type: 0: BlockRAM; 1: external DDR.
* - MEM_SIZE_LOG2
- Define the log2 size of the storage element in bytes.
* - TX_OR_RXN_PATH
- If set TX path enabled, otherwise RX.
* - SRC_DATA_WIDTH
- The data width of the source interface.
* - DST_DATA_WIDTH
- The data width of the destination interface.
* - DST_CYCLIC_EN
- Enables CYCLIC mode for destinations like DAC.
* - AUTO_BRINGUP
- If enabled the IP runs automatically after bootup.
* - SYNC_EXT_ADD_INTERNAL_CDC
- If enabled the CDC circuitry for the external sync signal is added.
* - HAS_BYPASS
- If enabled the bypass circuitry is added.
Interface
--------------------------------------------------------------------------------
.. hdl-interfaces::
* - s_axi_aclk
- AXI4-Lite clock signal.
* - s_axi_aresetn
- Control-Domain Reset Input.
* - s_axi
- Memory mapped AXI4-Lite control interface.
* - init_req
- Indicator that the signal source (e.g. DMA) intends to provide new data soon.
* - sync_ext
- External synchronization signal, with or without internal clock-domain
crossing logic. Can be used to couple certain state machine transitions to
external processes.
* - ddr_calib_done
- Allows the user to read back status information about the DDR calibration
status from software.
* - s_axis_aclk
- Source Domain Clock Signal Input.
* - s_axis
- AXI4-Stream subordinate data input.
* - m_axis_aclk
- Destination Domain Clock Signal Input.
* - m_axis
- AXI4-Stream manager output stream.
Register Map
--------------------------------------------------------------------------------
.. hdl-regmap::
:name: DO
Detailed Description
--------------------------------------------------------------------------------
General Use Cases
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. note::
This IP will always have a storage unit (internal or external to the
FPGA) and is designed to handle high data rates. If your data paths will run
in a lower data rate, and your intention is just to transfer the data to another
clock domain or to adjust the bus width of the data path, you may want to check
out the util_axis_fifo or util_axis_fifo_asym IPs.
The initialization and data transfer looks as follows:
* in case of DAC, the DMA initializes the storage unit, after that the controller
will push the data to the DAC interface in one-shot or cyclic way.
* in case of ADC, the DMA requests a transfer, the controller saves the data into
the storage unit, after that it will push it to the DMA.
* BYPASS mode: simple streaming FIFO in case of clock rate or data width
differences between source and sink interfaces (data rate MUST match in order
to work); the BYPASS mode is used when an initially high rate path is downgraded
to lower rates.
Generic Architecture
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The main role of our data paths is to stream data from point A to point B in a
particular system. There are always a SOURCE and a DESTINATION point, which can
be a device (ADC or DAC), a DMA (for system memory) or any other data processing IP.
In the context of Data Offload IP, we don't need to know who is the source and
who is the destination. Both interfaces are AXI4 Stream interfaces, which can be
supported in both Xilinx's an Intel's architecture, and can be connected to any
device core or DMA.
The storage unit is connected to the Data Offload controller via two AXIS interfaces.
This way the same controller can be used for various storage solutions. (BRAM,
URAM, external memory etc.)
Interfaces and Signals
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Register Map Configuration Interface
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AXI4 Lite Memory Mapped Subordinate (S_AXI4_LITE)
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
This interface is used to access the register map.
.. code:: verilog
// interface clock -- system clock -- 100 MHz
input s_axi_aclk
// interface resetn -- synchronous reset active low
input s_axi_aresetn
/* write address channel */
// validates the address on the bus
input s_axi_awvalid
// write address
input [15:0] s_axi_awaddr
// protection type -- not used in the core
input [ 2:0] s_axi_awprot
// write ready, indicates that the subordinate can accept the address
output s_axi_awready
/* write data channel */
// validate the data on the bus
input s_axi_wvalid
// write data
input [31:0] s_axi_wdata
// write strobe, indicates which byte lanes to update
input [ 3:0] s_axi_wstrb
// write ready, indicates that the subordinate can accept the data
output s_axi_wready
/* write response channel */
// validates the write response of the subordinate
output s_axi_bvalid
// write response, indicates the status of the transfer
output [ 1:0] s_axi_bresp
// response ready, indicates that the manager can accept the data
input s_axi_bready
/* read address channel */
// validates the address on the bus
input s_axi_arvalid
// read address
input [15:0] s_axi_araddr
// protection type -- not used in the core
input [ 2:0] s_axi_arprot
// read ready, indicates that the subordinate can accept the address
output s_axi_arready
/* read data channel */
// validates the data on the bus
output s_axi_rvalid
// read response, indicates the status of the transfer
output [ 1:0] s_axi_rresp
// read data driven by the subordinate
output [31:0] s_axi_rdata
// read ready, indicates that the manager can accept the data
input s_axi_rready
Supported Data Interfaces
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AXI4 Stream Interface (S_AXIS | M_AXIS)
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
* The AXI Stream Subordinate (S_AXIS) interface is used to receive AXI stream
from the transmit DMA or ADC device.
* The AXI Stream Manager (M_AXIS) interface is used to transmit AXI stream to
receive DMA or DAC device.
.. code:: verilog
// NOTE: this reference is a manager interface
// interface clock -- can be device/core clock or DMA clock
input m_axis_aclk
// interface resetn -- synchronous reset with the system clock
input m_axis_resetn
// indicates that the subordinate can accept a transfer in the current cycle (in case of an ADC core, this will control the stream)
input m_axis_ready
// indicates that the manager is driving a valid transfer
output m_axis_valid
// primary payload
output [DATA_WIDTH-1:0] m_axis_data
// indicates the boundary of a packet
output m_axis_last
// byte qualifier, we need this so we can have different DMA and device data widths
output [(DATA_WIDTH/8)-1:0] m_axis_tkeep
.. note::
A packet will always be a full buffer. All the data beats are going to be
full beats (all the bytes of the bus are valid), except for the last one.
**axis_last** and **axis_tkeep** will be used to indicate a partial last beat.
This information should be transferred from the source domain to the sink domain,
so we can read back the data from memory correctly.
AXIS Source and Destination Interface to the Storage Unit
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
This is a blocking (back-pressure) interface for the storage unit, with similar
behavior of main AXIS data interfaces.
Initialization Request Interface
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Defines a simple request interface to initialize the memory:
* The request will come from the system and will put the data offload FSM into
a standby/ready state.
Synchronization Modes
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
* **AUTOMATIC**
* ADC: The IP will start to fill up the buffer with samples as soon as possible.
* DAC: As the DMA will send a valid last, the FSM will start to send the stored
data to the device.
* **HARDWARE**
* ADC and DAC: An external signal will trigger the write or read into or from
the memory.
* **SOFTWARE**
* The software writes a RW1C register which will trigger the reads or writes
into or from the memory.
.. note::
In case of DAC, if the DMA does not send all the data into the buffer, before
a hardware sync event, then the unsent data will be ignored. It's the
user/software responsibility to sync up these events accordingly.
Clock Tree
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In general there are at least two different clocks in the data offload module:
* DMA or system clock : on this clock will run all the front end interfaces
* Memory Controller user clock : user interface clock of the DDRx controller
(**optional**)
* Device clock : the digital interface clock of the converter
.. image:: clocks.svg
:alt: Clock Domains diagram
:align: center
A general frequency relationship of the above clocks are:
.. code::
CLKdma <= CLKddr <= CLKconverter
The clock domain crossing should be handled by the
:git-hdl:`util_axis_fifo <library/util_axis_fifo>` module.
All the back end paths (device side) are time critical. The module must read or
write from or into the storage at the speed of the device.
.. code::
DDR data rate >= Device data rate
DDR data rate >= ADC data rate + DAC data rate
Data Path
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. image:: datapath.svg
:alt: Data Path diagram
:align: center
* The data path should be designed to support any difference between the source,
memory and sink data width.
* The data width adjustments will be made by the CDC FIFO.
* In both paths (ADC and DAC) the data stream at the front-end side is packetized,
meaning there is a valid TLAST/TKEEP in the stream. While in the back-end side
the stream is continuous (no TLAST/TKEEP).
* The DAC path has to have a depacketizer to get rid of the last partial beat
of the stream.
* Because the ADC path already arrives in a packed form, and we always will
fill up the whole storage, we don't need to treat special use-cases.
Used Storage Elements
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+-----------------------+--------------------+-------------------+------------------+
| | ZC706 | ZCU102 | A10SOC |
+=======================+====================+===================+==================+
| FPGA | XC7Z045 FFG900 2 | XCZU9EG-2FFVB1156 | 10AS066N3F40E2SG |
+-----------------------+--------------------+-------------------+------------------+
| External Memory Type | DDR3 SODIMM | DDR4 | DDR4 HILO |
+-----------------------+--------------------+-------------------+------------------+
| External Memory Size | 1 GB | 512 MB | 2 GB |
+-----------------------+--------------------+-------------------+------------------+
| Embedded Memory Type | BRAM | BRAM | M20K |
+-----------------------+--------------------+-------------------+------------------+
| Embedded Memory Size | 19.1 Mb | 32.1 Mb | 41 Mb |
+-----------------------+--------------------+-------------------+------------------+
Data Width Manipulation
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
* Data width differences should be treated by the CDC FIFO.
* The smallest granularity should be 8 bits. This constraint will mainly generate
additional logic just in the TX path, taking the fact that the data from the ADC
will come packed.
* The main role of the gearbox is to improve the DDR's bandwidth, stripping the
padding bits of each samples, so the raw data could be stored into the memory.
Xilinx's MIG vs. Intel's EMIF
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
* Incrementing burst support for 1 to 256 beats, the length of the burst should
be defined by the internal controller.
* Concurrent read/write access, the external memory to be shared between an ADC
and DAC.
* Dynamic burst length tuning: an FSM reads and writes dummy data until both
ADC's overflow and DAC's underflow lines are de-asserted. Pre-requisites: both
devices' interfaces should be up and running.
* Optional gearbox to congest the samples in order to increase the maximum data rate.
* In general all samples are packed into 16 bits. This can add a significant
overhead to the maximum real data rate on the memory interface. The gearbox's
main role is to pack and unpack the device's samples into the required data width
(in general 512 or 1024 bits).
Boards with FPGA side DDR3/4 SODIMMs/HILO: ZC706, ZCU102, A10SOC.
+------------------------------+-----------+------------+-------------------+
| | ZC706 | ZCU102 | A10SOC |
+==============================+===========+============+===================+
| Max data throughputs (MT/s) | 1600 | 2400 | 2133 |
+------------------------------+-----------+------------+-------------------+
| DDRx reference clocks | 200 MHz | 300 MHz | 133 MHz |
+------------------------------+-----------+------------+-------------------+
| DDRx Data bus width | 64 | 16 | 64 |
+------------------------------+-----------+------------+-------------------+
| Memory to FPGA clock ratio | 4:1 | 4:1 | 4:1 |
+------------------------------+-----------+------------+-------------------+
| UI type & burst length | AXI4-256 | AXI4-256 | Avalon Memory Map |
+------------------------------+-----------+------------+-------------------+
| UI data width | 512 | 128 | 512 |
+------------------------------+-----------+------------+-------------------+
Internal Cyclic Buffer Support for the TX Path
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. image:: architecture_DDR.svg
:alt: Data Path with external storage diagram
:align: center
* On the front end side of the TX path, a special buffer will handle the data
width up/down conversions and run in cyclic mode if the length of the data set
is smaller than 4/8 AXI/Avalon bursts. This way, we can avoid to overload the
memory interface with small bursts.
* On the back end side, because the smallest granularity can be 8 bytes, we need
a dynamic 'depacketizer' or re-aligner, which will filter out the invalid data
bytes from the data stream (this module will use the tlast and tkeep signal of
the AXI stream interface).
Control Path - Offload FSM
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. list-table::
* - .. figure:: tx_bram_fsm.svg
TX Control FSM for Internal RAM Mode
- .. figure:: rx_bram_fsm.svg
RX Control FSM for Internal RAM Mode
Linux Driver
--------------------------------------------------------------------------------
The linux driver has two responsibilities:
* Initializes the data offload on startup.
* Integrates with cf_axi_dds to allow IIO to utilize the data offload for cyclic
operation.
The former of those two is covered by the device tree, which implements five
options:
* ``adi,bringup`` will automatically enable the data offload on startup. Note
that this option isn't always necessary, because the HDL itself may have been
synthesized with auto-bringup.
* ``adi,oneshot`` configures the default mode of operation for TX data offloads.
This will usually be overridden by the IIO buffer integration and thus doesn't
have an effect in most situations.
* ``adi,bypass`` enables bypass mode, i.e. disables all functionality and makes
the data offload act like a small asynchronous FIFO.
* ``adi,sync-config`` determines how the synchronization mechanism should operate.
More information about this value can be found in the register map.
* ``adi,transfer-length`` is useful for RX instances, where the size of the receive
buffer can be reduced from the default (All available storage).
The latter is addressed by the integration into
:git-linux:`cf_axi_dds.c <drivers/iio/frequency/cf_axi_dds.c>` and
:git-linux:`cf_axi_dds_buffer_stream.c <drivers/iio/frequency/cf_axi_dds_buffer_stream.c>`,
which allow the drivers to control the oneshot functionality of the data offload
based on what was requested with the current IIO buffer, assuming that bypass
was disabled.

View File

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 23 KiB

View File

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 23 KiB

View File

@ -43,6 +43,7 @@ Contents
axi_pwm_gen/index
axi_sysid/index
axi_tdd/index
data_offload/index
i3c_controller/index
jesd204/index
spi_engine/index

View File

@ -0,0 +1,276 @@
TITLE
Data Offload Engine (data_offload)
DO
ENDTITLE
############################################################################################
############################################################################################
REG
0x000
VERSION
Version of the peripheral. Follows semantic versioning. Current version 1.00.61.
ENDREG
FIELD
[31:16] 0x00000001
VERSION_MAJOR
RO
ENDFIELD
FIELD
[15:8] 0x00000000
VERSION_MINOR
RO
ENDFIELD
FIELD
[7:0] 0x00000061
VERSION_PATCH
RO
ENDFIELD
############################################################################################
############################################################################################
REG
0x001
PERIPHERAL_ID
ENDREG
FIELD
[31:0] ''ID''
PERIPHERAL_ID
RO
Value of the ID configuration parameter.
ENDFIELD
############################################################################################
############################################################################################
REG
0x002
SCRATCH
ENDREG
FIELD
[31:0] 0x00000000
SCRATCH
RW
Scratch register useful for debug.
ENDFIELD
############################################################################################
############################################################################################
REG
0x003
IDENTIFICATION
ENDREG
FIELD
[31:0] 0x44414F46
IDENTIFICATION
RO
Peripheral identification ('D', 'A', 'O', 'F').
ENDFIELD
############################################################################################
############################################################################################
REG
0x004
SYNTHESIS_CONFIG_1
ENDREG
FIELD
[2] ''HAS_BYPASS''
HAS_BYPASS
RO
If set the bypass logic is implemented.
ENDFIELD
FIELD
[1] ''TX_OR_RXN_PATH''
TX_OR_RXN_PATH
RO
If this device was configured for the TX path, this bit will be set to 1.
Conversely, the bit will be 0 for the RX path.
ENDFIELD
FIELD
[0] ''MEM_TYPE''
MEMORY_TYPE
RO
This bit identifies the type of memory that was chosen during synthesis. A value of 1
identifies external memory, while a value of zero indicates that block ram was used.
ENDFIELD
############################################################################################
############################################################################################
REG
0x005
SYNTHESIS_CONFIG_2
ENDREG
FIELD
[31:0] 1<<''MEM_SIZE_LOG2''
MEM_SIZE_LSB
RO
32 bits (LSB) of the storage unit size.
ENDFIELD
############################################################################################
############################################################################################
REG
0x006
SYNTHESIS_CONFIG_3
ENDREG
FIELD
[1:0] (1<<''MEM_SIZE_LOG2'')>>32
MEM_SIZE_MSB
RO
2 bits (MSB) of the storage unit size.
ENDFIELD
############################################################################################
############################################################################################
REG
0x007
TRANSFER_LENGTH
ENDREG
FIELD
[31:0] (2^''MEM_SIZE_LOG2''-1)>>6
TRANSFER_LENGTH
RW
The transfer length register can be used to override the transfer length in RX mode in increments of 64 bytes.
ENDFIELD
############################################################################################
############################################################################################
REG
0x020
MEM_PHY_STATE
ENDREG
FIELD
[5] 0x00000000
UNDERFLOW
RW1C
Indicates that storage could not handle data rate during play. Available when core is in TX mode.
ENDFIELD
FIELD
[4] 0x00000000
OVERFLOW
RW1C
Indicates that storage could not handle data rate during capture. Available when core is in RX mode.
ENDFIELD
FIELD
[0] 0x00000000
CALIB_COMPLETE
RO
Indicates that the memory initialization and calibration have completed successfully.
ENDFIELD
############################################################################################
############################################################################################
REG
0x021
RESET_OFFLOAD
ENDREG
FIELD
[0] ''AUTO_BRINGUP''
RESETN
RW
"Software Reset": Resets all the internal address registers and state machines.
ENDFIELD
############################################################################################
############################################################################################
REG
0x022
CONTROL
ENDREG
FIELD
[1] ~''TX_OR_RXN_PATH''
ONESHOT_EN
RW
Enables oneshot mode. This means that the data offload will only play a received buffer once,
and then stop. This mode is useful when you want to use the data offload for its synchronization
features, but don't need the repeating output.
ENDFIELD
FIELD
[0] 0x00000000
OFFLOAD_BYPASS
RW
Enables bypass mode. In this mode pretty much **all** functionality of the data offload is bypassed,
and the data offload will simply act as an asynchronous dual-port FIFO and forward your data stream.
ENDFIELD
############################################################################################
############################################################################################
REG
0x040
SYNC_TRIGGER
ENDREG
FIELD
[0] 0x00000000
SYNC_TRIGGER
RW1C
Software trigger for software sync mode.
ENDFIELD
############################################################################################
############################################################################################
REG
0x041
SYNC_CONFIG
ENDREG
FIELD
[1:0] 0x00000000
SYNC_CONFIG
RW
Synchronization mode: 0: Auto, 1: Hardware trigger, 2: Software trigger, 3: Reserved.
ENDFIELD
############################################################################################
############################################################################################
REG
0x080
FSM_BDG
ENDREG
FIELD
[11:8] 0xXXXXXXXX
FSM_STATE_READ
RO
It force the Rx side offload state machine into the required state.
ENDFIELD
FIELD
[4:0] 0xXXXXXXXX
FSM_STATE_WRITE
RO
The current state of the offload state machine.
ENDFIELD
############################################################################################
############################################################################################

View File

@ -15,7 +15,7 @@ Contents
creating_new_ip
use_adi_ips
up_if
interfaces
axi_adc/index
axi_dac/index
@ -41,6 +41,11 @@ ADC/DAC
- :ref:`axi_ad9963`
- :ref:`axi_adaq8092`
Data Offload
-------------------------------------------------------------------------------
- :ref:`data_offload`
DMA
-------------------------------------------------------------------------------

View File

@ -1,7 +1,12 @@
.. _interfaces:
Interfaces
================================================================================
.. _up_if:
Microprocessor interface
===============================================================================
Microprocessor Interface
--------------------------------------------------------------------------------
All the ADI IP cores contains multiple AXI register map modules, which control
a well specified part of the IP.
@ -14,8 +19,8 @@ and an acknowledge (driven by subordinate) control signals.
All the uP interface signals names have a ``up_`` prefix, this differentiate
themselves clearly from other internal signals.
uP interface and signals
------------------------------------------------------------------------------
uP Interface and Signals
--------------------------------------------------------------------------------
.. list-table:: Clock and reset
@ -71,7 +76,7 @@ uP interface and signals
perspective.
Timing diagram
-------------------------------------------------------------------------------
--------------------------------------------------------------------------------
The following timing diagram illustrates the signals and functionality of the
interface. It show a register write access and two consecutive register read access.
@ -105,3 +110,17 @@ interface. It show a register write access and two consecutive register read acc
['tspan', {class:'info h3'}, 'UP interface']
}
}
References
--------------------------------------------------------------------------------
AMBA AXI
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* AMBA `Specification <https://www.arm.com/architecture/system-architectures/amba/amba-specifications>`__
* Vivado Design Suite: `AXI Reference Guide <https://docs.amd.com/v/u/en-US/ug1037-vivado-axi-reference-guide>`__
Avalon
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* Avalon Interface `Specification <https://www.intel.com/content/www/us/en/docs/programmable/683091/22-3/introduction-to-the-interface-specifications.html>`__

View File

@ -1,392 +0,0 @@
# Data offload IP core
## Description, general use cases
Data offload module for high-speed converters:
**NOTE**: This IP will always have a storage unit (internal or external to the FPGA) and is
designed to handle high data rates. If your data paths will run in a lower data
rate, and your intention is just to transfer the data to another clock domain or
to adjust the bus width of the data path, you may want to check out the util_axis_fifo or
util_axis_fifo_asym IPs.
The initialization and data transfer looks as follows:
* in case of DAC, the DMA initialize the storage unit, after that the controller
will push the data to the DAC interface in one-shot or cyclic way
* in case of ADC, the DMA request a transfer, the controller will save the data into
the storage unit, after that will push it to the DMA
* BYPASS mode: simple streaming FIFO in case of clock rate or data width differences
between source and sink interfaces (data rate MUST match in order to work); the BYPASS
mode is used when an initially high rate path is downgraded to lower rates.
## Table of content
* [Block diagrams](README.md#block-diagram)
* [Parameters](README.md#parameters)
* [Interfaces](README.md#interfaces)
* [Register map](README.md#register-map)
* [Clock tree](README.md#clock-tree)
* [Data path](README.md#data-path)
* [Control path](README.md#control-path-offload-fsm)
## Generic arhitecture
The main role of our data paths, is to stream data from point A to point B
in a particular system. There are always a SOURCE and a DESTINATION
point, which can be a device (ADC or DAC), a DMA (for system memory) or any other
data processing IP.
In the context of Data Offload IP, we don't need to know who is the source and
who is the destination. Both interface is a AXI4 Stream interface, which can be
supported in both Xilinx's an Intel's architecture, and can be connected to any device
core or DMA.
The storage unit is connected to the Data Offload controller via two FIFO interface.
This way the same controller can be used for various storage solutions. (BRAM,
URAM, external memory etc.)
## Block diagram
![Generic Block Diagram](./docs/generic_bd.svg)
## Parameters
| NAME | TYPE | DEFAULT | DESCRIPTION |
|----------------------|:-----------:|:----------:|:---------------------------:|
|ID | integer | 0 | Instance ID number |
|MEM_TYPE | [ 0:0] | 0 | Define the used storage type: FPGA RAM - 0; external DDR - 1 |
|MEM_SIZE_LOG2 | integer | 10 | Log2 value of storage size, defines the width of transfer length control signals. |
|TX_OR_RXN_PATH | [ 0:0] | 1 | If set TX path enabled, otherwise RX |
|SRC_DATA_WIDTH | integer | 64 | The data width of the source interface |
|DST_DATA_WIDTH | integer | 124 | The data width of the destination interface |
|DST_CYCLIC_EN | [ 0:0] | 0 | Enables CYCLIC mode for destinations like DAC |
|AUTO_BRINGUP | [ 0:0] | 1 | If enabled the IP runs automatically after bootup |
|SYNC_EXT_ADD_INTERNAL_CDC | [ 0:0] | 1 | If enabled the external sync pin is synchronized to the internal clock domain with a CDC. |
|HAS_BYPASS | [ 0:0] | 1 | If set to zero the bypass FIFO is not implemented. |
## Interfaces
### AXI4 Lite Memory Mapped Slave (S_AXI4_LITE)
This interface is used to access the register map.
```verilog
// interface clock -- system clock -- 100 MHz
input s_axi_aclk
// interface resetn -- synchronous reset active low
input s_axi_aresetn
/* write address channel */
// validates the address on the bus
input s_axi_awvalid
// write address
input [15:0] s_axi_awaddr
// protection type -- not used in the core
input [ 2:0] s_axi_awprot
// write ready, indicates that the slave can accept the address
output s_axi_awready
/* write data channel */
// validate the data on the bus
input s_axi_wvalid
// write data
input [31:0] s_axi_wdata
// write strobe, indicates which byte lanes to update
input [ 3:0] s_axi_wstrb
// write ready, indicates that the slave can accept the data
output s_axi_wready
/* write response channel */
// validates the write response of the slave
output s_axi_bvalid
// write response, indicate the status of the transfer
output [ 1:0] s_axi_bresp
// response ready, indicates that the master can accept the data
input s_axi_bready
/* read address channel */
// validates the address on the bus
input s_axi_arvalid
// read address
input [15:0] s_axi_araddr
// protection type -- not used in the core
input [ 2:0] s_axi_arprot
// read ready, indicates that the slave can accept the address
output s_axi_arready
/* read data channel */
// validate the data on the bus
output s_axi_rvalid
// read response, indicate the status of the transfer
output [ 1:0] s_axi_rresp
// read data drivers by the slave
output [31:0] s_axi_rdata
// read ready, indicates that the master can accept the data
input s_axi_rready
```
### Supported data interfaces
**NOTE**: To simplify the design both the source and destination data interface is
an AXI4 streaming interface. A FIFO write (ADC) interface can be treated as AXI4
stream where only the master controls the data rate (s_axis_ready is always asserted),
and a FIFO read (DAC) interface can be treated as an AXI4 stream where only the slave
controls the data rate. (m_axis_valid is always asserted).
#### AXI4 Stream interface (S_AXIS | M_AXIS)
* The AXI Stream Slave (S_AXIS) interface is used to receive AXI stream from
the transmit DMA or ADC device.
* The AXI Stream Master (M_AXIS) interface is used to transmit AXI stream
to receive DMA or DAC device
```verilog
// NOTE: this reference is a master interface
// interface clock -- can be device/core clock or DMA clock
input m_axis_aclk
// interface resetn -- synchronous reset with the system clock
input m_axis_resetn
// indicates that the slave can accept a transfer in the current cycle (in case of an ADC core, this will control the stream)
input m_axis_ready
// indicates that the master is driving a valid transfer
output m_axis_valid
// primary payload
output [DATA_WIDTH-1:0] m_axis_data
// indicates the boundary of a packet
output m_axis_last
// byte qualifier, we need this so we can have different DMA and device data widths
output [(DATA_WIDTH/8)-1:0] m_axis_tkeep
```
**NOTE**: A packet will always be a full buffer. All the data beats going to be
full beats (all the bytes of the bus are valid), except the last one. **axis_last**
and **axis_tkeep** will be used to indicate a partial last beat. This information
should be transferred from the source domain to the sink domain, so we can read
back the data from memory correctly.
#### AXIS source and destination interface to the storage unit
This is blocking (back-pressure) interface for the storage unit,
with similar behavior of main AXIS data interfaces.
### Initialization request interface
Define a simple request interface to initialize the memory:
* The request will comes from the system and will put the data offload FSM
into a standby/ready state.
#### Synchronization modes
* **AUTOMATIC**
* ADC: The IP will start to fill up the buffer with samples as soon as possible.
* DAC: As the DMA will send a valid last, the FSM will start to send the
stored data to the device.
* **HARDWARE**
* ADC and DAC: An external signal will trigger the write or read into or from
the memory.
* **NOTE**: In case of DAC, if the DMA does not sent all the data into the
buffer, before a hardware sync event, the unsent data will be ignored. It's the
user/software responsibility to sync up these events accordingly.
* **SOFTWARE**
* The software write a RW1C register which will trigger the reads or writes
into or from the memory.
## Register Map
| WORD | BYTE | BITS | NAME | TYPE | CLOCK DOMAIN | DESCRIPTION |
|-------:|:--------:|:--------:|:---------------------:|:-----:|:------------:|:-----------------------:|
| 0x0000 | 0x0000 | | `VERSION` | RO | SYS | Version number |
| | | [31:16] | `MAJOR` | | | |
| | | [15: 8] | `MINOR` | | | |
| | | [ 7: 0] | `PATCH` | | | |
| 0x0001 | 0x0004 | | `PERIPHERAL_ID` | RO | SYS | Value of the IP configuration parameter |
| 0x0002 | 0x0008 | | `SCRATCH` | RW | SYS | Scratch register |
| 0x0003 | 0x000C | | `IDENTIFICATION` | RO | SYS | Peripheral identification. Default value: 0x44414F46 - ('D','A','O','F') |
| 0x0004 | 0x0010 | | `SYNTHESIS_CONFIG` | RO | SYS | Core configuration registers |
| | | [13: 8] | `MEM_SIZE_LOG2` | | | Log2 of memory size in bytes |
| | | [ 2: 2] | `HAS_BYPASS` | | | If not set the bypass logic is not implemented. |
| | | [ 1: 1] | `TX_OR_RXN_PATH` | | | RX Path => 0, TX => 1 |
| | | [ 0: 0] | `MEMORY_TYPE` | | | The used storage type (embedded => 0 or external => 1) |
| 0x0007 | 0x001C | | `TRANSFER_LENGTH` | RW | SRC | Transfer length |
| 0x0020 | 0x0080 | | `MEM_PHY_STATE` | RO | DDR | Status bits of the memory controller IP |
| | | [ 5: 5] | `UNDERFLOW` | RW1C | | Indicates that storage could not handle data rate during play. Available when core is in TX mode.|
| | | [ 4: 4] | `OVERFLOW` | RW1C | | Indicates that storage could not handle data rate during capture. Available when core is in RX mode. |
| | | [ 0: 0] | `CALIB_COMPLETE` | | | Indicates that the memory initialization and calibration have completed successfully |
| 0x0021 | 0x0084 | | `RESETN_OFFLOAD` | RW | DST/SRC | Reset all the internal address registers and state machines |
| | | [ 0: 0] | `RESETN` | | | |
| 0x0022 | 0x0088 | | `CONTROL` | RW | DST | A global control register |
| | | [ 1: 1] | `ONESHOT_EN` | | | By default the TX path runs on CYCLIC mode, set this bit to switch it to ONE-SHOT mode |
| | | [ 0: 0] | `OFFLOAD_BYPASS` | | | Bypass the offload storage, the data path consist just of a CDC FIFO |
| 0x0040 | 0x0100 | | `SYNC_TRIGGER` | RW1C | SRC | Synchronization setup for RX and TX path |
| | | [ 0: 0] | `SYNC_TRIGGER` | | | Trigger the data capture |
| 0x0041 | 0x0104 | | `SYNC_CONFIG` | RW | SRC | Synchronization setup |
| | | [ 1: 0] | `SYNC_CONFIG` | | | Auto - '0'; hardware - '1'; software - '2' |
| 0x0080 | 0x0200 | | `FSM_DBG` | RO | | Debug register for the offload FSM |
| | | [11: 8] | `FSM_STATE_READ` | | SRC | The current state of the read-offload state machine |
| | | [ 4: 0] | `FSM_STATE_WRITE` | | DST | The current state of the write-offload state machine |
## Clock tree
In general there are at least two different clock in the data offload module:
* DMA or system clock : on this clock will run all the front end interfaces
* Memory Controller user clock : user interface clock of the DDRx controller (**optional**)
* Device clock : the digital interface clock of the converter
![Clocks](./docs/clocks.svg)
A general frequency relationship of the above clocks are:
```
CLKdma <= CLKddr <= CLKconverter
```
The clock domain crossing should be handled by the [util_axis_fifo](https://github.com/analogdevicesinc/hdl/tree/main/library/util_axis_fifo) module.
* **TODO** : Make sure that we support both AXIS and FIFO
* **TODO** : Add support for asymmetric aspect ratio.
All the back end paths (device side) are time critical. The module must read or
write from or into the storage at the speed of the device.
```
DDR data rate >= Device data rate
DDR data rate >= ADC data rate + DAC data rate
```
## Data path
![Data path](./docs/datapath.svg)
* The data path should be designed to support any kind of difference between
the source, memory and sink data width.
* The data width adjustments will be made by the CDC_FIFO.
* In both path (ADC and DAC) the data stream at the front-end side is packatized,
meaning there is a valid TLAS/TKEEP in the stream. While in the back-end side
the stream is continuous. (no TLAST/TKEEP)
* The DAC path have to have a depacketizer to get rid of the last partial beat
from the stream.
* Because the ADC path already arrive in a packed form, and we always will
fill up the whole storage, we don't need to treat special use-cases.
### Used storage elements
| | ZC706 | ZCU102 | A10SOC |
|:----------------------|:------------------:|:-----------------:|:----------------:|
| FPGA | XC7Z045 FFG900 2 | XCZU9EG-2FFVB1156 | 10AS066N3F40E2SG |
| External Memory Type | DDR3 SODIMM | DDR4 | DDR4 HILO |
| External Memory Size | 1 GB | 512 MB | 2 GB |
| Embedded Memory Type | BRAM | BRAM | M20K |
| Embedded Memory Size | 19.1 Mb | 32.1 Mb | 41 Mb |
### Data width manipulation
* data width differences should be treated by the CDC FIFO
* the smallest granularity should be 8 bits. This constraints mainly will generate
additional logic just in the TX path, taking the fact that the data from the ADC
will come packed.
* the gearbox main role is to improve the DDR's bandwidth, strips the padding bits
of each samples, so the raw data could be stored into the memory.
### Xilinx's MIG vs. Intel's EMIF
* Incrementing burst support for 1 to 256 beats, the length of the burst should
be defined by the internal controller
* Concurrent read/write access, the external memory to be shared between an ADC
and DAC
* Dynamic burst length tuning: an FSM reads and writes dummy data until both
ADC's overflow and DAC's underflow lines are de-asserted. Pre-requisites : both
device's interface should be up and running.
* **TODO**: prefetch the next transfer if it's possible, by driving the address channels ahead (e.g. Overlapping read burst in case of AXI4)
* Optional gearbox to congest the samples in order to increase the maximum data rate.
* In general we packing all samples into 16 bits. This can add a significant
overhand to the maximum real data rate on the memory interface. The gearbox main
role is to pack and unpack the device's samples into the required data width. (in general 512 or 1024 bit)
Boards with FPGA side DDR3/4 SODIMMs/HILO: ZC706, ZCU102, A10SOC
| | ZC706 | ZCU102 | A10SOC |
|------------------------------|:---------:|:----------:|:----------:|
| Max data throughputs (MT/s) | 1600 | 2400 | 2133 |
| DDRx reference clocks | 200 MHz | 300 MHz | 133 MHz |
| DDRx Data bus width | 64 | 16 | 64 |
| Memory to FPGA clock ratio | 4:1 | 4:1 | 4:1 |
| UI type & burst length | AXI4-256 | AXI4-256 | Avalon Memory Map |
| UI data width | 512 | 128 | 512 |
### Internal cyclic buffer support for the TX path
![Data path with external storage](./docs/architecture_DDR.svg)
* On the front end side if the TX path, a special buffer will handle the data
width up/down conversions and run in cyclic mode if the length of the data set
is smaller than 4/8 AXI/Avalon burst. This way we can avoid to overload the memory
interface with small bursts.
* On the back end side, because the smallest granularity can be 8 bytes, we need
a dynamic 'depackatizer' or re-aligner, which will filter out the invalid data
bytes from the data stream. (this module will use the tlast and tkeep signal of
the AXI stream interface)
## Control path - Offload FSM
### RX control FSM for internal RAM mode
![RX_control FMS for internal RAM mode](./docs/rx_bram_fsm.svg)
### TX control FSM for internal RAM mode
![TX_control FMS for internal RAM mode](./docs/tx_bram_fsm.svg)
**TODO** FSMs for the external DDR mode
## References
### AMBA AXI
* [AMBA specification](http://infocenter.arm.com/help/topic/com.arm.doc.set.amba/index.html#specs)
* [UG761 AXI Reference Guide](https://www.xilinx.com/support/documentation/ip_documentation/ug761_axi_reference_guide.pdf)
### Avalon
* [Avalon Interface Specification](https://www.altera.com/en_US/pdfs/literature/manual/mnl_avalon_spec.pdf)
### Xilinx
* [Device Memory Interface Solutions](https://www.xilinx.com/support/documentation/ip_documentation/mig_7series/v4_2/ds176_7Series_MIS.pdf)
* [Device Memory Interface Solutions User Guide](https://www.xilinx.com/support/documentation/ip_documentation/mig_7series/v4_2/ug586_7Series_MIS.pdf)
* [Ultrascale Architecutre-Based FPGAs Memory IP (v1.4)](https://www.xilinx.com/support/documentation/ip_documentation/ultrascale_memory_ip/v1_4/pg150-ultrascale-memory-ip.pdf)
* [Xilinx FIFO Generator](https://www.xilinx.com/products/intellectual-property/fifo_generator.html#documentation)
* [7 Series FPGAs Memory Resources](https://www.xilinx.com/support/documentation/user_guides/ug473_7Series_Memory_Resources.pdf)
* [Ultrascale Memory Resources](https://www.xilinx.com/support/documentation/user_guides/ug573-ultrascale-memory-resources.pdf)
### Intel
* [Intel Arria 10 Core Fabric and General Purpose I/Os Handbook](https://www.altera.com/en_US/pdfs/literature/hb/arria-10/a10_handbook.pdf)
* [Intel Arria 10 External Memory Interface IP User Guide](https://www.altera.com/en_US/pdfs/literature/ug/ug-20115.pdf)
* [Intel Arria 10 External Memory Interface IP Design Example](https://www.altera.com/en_US/pdfs/literature/ug/ug-20118.pdf)
* [Intel SCFIFO and DCFIFO](https://www.altera.com/content/dam/altera-www/global/en_US/pdfs/literature/ug/ug_fifo.pdf)
* [Intel Startix 10 High-Performance Design Handbook](https://www.altera.com/content/dam/altera-www/global/en_US/pdfs/literature/hb/stratix-10/s10_hp_hb.pdf)
* [Intel Stratix 10 Embedded Memory User Guide](https://www.altera.com/en_US/pdfs/literature/hb/stratix-10/ug-s10-memory.pdf)
### Supported FPGA boards
* [ZC706](https://www.xilinx.com/products/boards-and-kits/ek-z7-zc706-g.html)
* [ZCU102](https://www.xilinx.com/products/boards-and-kits/ek-u1-zcu102-g.html)
* [A10SOC](https://www.altera.com/products/boards_and_kits/dev-kits/altera/arria-10-soc-development-kit.html)

View File

@ -1,761 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="800"
height="400"
viewBox="0 0 800.00001 400.00001"
id="svg4885"
version="1.1"
inkscape:version="0.91 r13725"
sodipodi:docname="clocks.svg">
<defs
id="defs4887">
<linearGradient
inkscape:collect="always"
id="linearGradient4385">
<stop
style="stop-color:#f05028;stop-opacity:1"
offset="0"
id="stop4387" />
<stop
style="stop-color:#100def;stop-opacity:1"
offset="1"
id="stop4389" />
</linearGradient>
<linearGradient
inkscape:collect="always"
id="linearGradient4377">
<stop
style="stop-color:#f05028;stop-opacity:0.9254902"
offset="0"
id="stop4379" />
<stop
style="stop-color:#100def;stop-opacity:1"
offset="1"
id="stop4381" />
</linearGradient>
<linearGradient
inkscape:collect="always"
id="linearGradient4369">
<stop
style="stop-color:#006400;stop-opacity:1"
offset="0"
id="stop4371" />
<stop
style="stop-color:#100def;stop-opacity:1"
offset="1"
id="stop4373" />
</linearGradient>
<linearGradient
inkscape:collect="always"
id="linearGradient4361">
<stop
style="stop-color:#100def;stop-opacity:1;"
offset="0"
id="stop4363" />
<stop
style="stop-color:#c8c800;stop-opacity:1"
offset="1"
id="stop4365" />
</linearGradient>
<linearGradient
inkscape:collect="always"
id="linearGradient4349">
<stop
style="stop-color:#0000ff;stop-opacity:1"
offset="0"
id="stop4351" />
<stop
style="stop-color:#ffc800;stop-opacity:1"
offset="1"
id="stop4353" />
</linearGradient>
<marker
inkscape:stockid="TriangleOutL"
orient="auto"
refY="0"
refX="0"
id="marker8368"
style="overflow:visible"
inkscape:isstock="true">
<path
inkscape:connector-curvature="0"
id="path8370"
d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
transform="scale(0.8,0.8)" />
</marker>
<marker
inkscape:isstock="true"
style="overflow:visible"
id="marker7024"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="TriangleOutL">
<path
transform="scale(0.8,0.8)"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
id="path7026"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:isstock="true"
style="overflow:visible"
id="marker6894"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="TriangleOutL">
<path
transform="scale(0.8,0.8)"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
id="path6896"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:isstock="true"
style="overflow:visible"
id="marker6770"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="TriangleOutL">
<path
transform="scale(0.8,0.8)"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
id="path6772"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:stockid="TriangleOutL"
orient="auto"
refY="0"
refX="0"
id="marker6384"
style="overflow:visible"
inkscape:isstock="true">
<path
inkscape:connector-curvature="0"
id="path6386"
d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
transform="scale(0.8,0.8)" />
</marker>
<marker
inkscape:stockid="TriangleOutL"
orient="auto"
refY="0"
refX="0"
id="marker5850"
style="overflow:visible"
inkscape:isstock="true">
<path
inkscape:connector-curvature="0"
id="path5852"
d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
transform="scale(0.8,0.8)" />
</marker>
<marker
inkscape:stockid="TriangleOutL"
orient="auto"
refY="0"
refX="0"
id="marker5774"
style="overflow:visible"
inkscape:isstock="true">
<path
inkscape:connector-curvature="0"
id="path5776"
d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
transform="scale(0.8,0.8)" />
</marker>
<marker
inkscape:stockid="TriangleOutL"
orient="auto"
refY="0"
refX="0"
id="TriangleOutL-5-7-7"
style="overflow:visible"
inkscape:isstock="true">
<path
inkscape:connector-curvature="0"
id="path4988-2-1-3"
d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
transform="scale(0.8,0.8)" />
</marker>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient4349"
id="linearGradient4359"
x1="670"
y1="632.36218"
x2="720"
y2="632.36218"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(0,148)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient4361"
id="linearGradient4367"
x1="667.95374"
y1="813.99072"
x2="735"
y2="812.36218"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(0,148)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient4369"
id="linearGradient4375"
x1="400"
y1="512.36218"
x2="400"
y2="592.36218"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(0,148)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient4377"
id="linearGradient4383"
x1="75"
y1="632.36218"
x2="130.82559"
y2="634.90942"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(0,148)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient4385"
id="linearGradient4391"
x1="75"
y1="817.36218"
x2="130.4312"
y2="815.65063"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(0,148)" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.9899495"
inkscape:cx="356.24123"
inkscape:cy="318.17777"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="true"
units="px"
showguides="true"
inkscape:window-width="1920"
inkscape:window-height="1005"
inkscape:window-x="1911"
inkscape:window-y="-9"
inkscape:window-maximized="1">
<inkscape:grid
type="xygrid"
id="grid5889" />
</sodipodi:namedview>
<metadata
id="metadata4890">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-652.36216)">
<rect
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:url(#linearGradient4383);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
id="rect4684"
width="73.38298"
height="155.3896"
x="56.692612"
y="705.2146" />
<rect
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#100def;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
id="rect4684-2"
width="73.38298"
height="155.3896"
x="192.66696"
y="705.2146" />
<rect
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#100def;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
id="rect4684-2-3"
width="73.38298"
height="155.3896"
x="547.71106"
y="705.2146" />
<rect
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:url(#linearGradient4359);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
id="rect4684-2-3-3"
width="73.38298"
height="155.3896"
x="667.95624"
y="705.2146" />
<rect
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#100def;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
id="rect4731"
width="164.03253"
height="153.97696"
x="325.40378"
y="773.92096" />
<rect
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#100def;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
id="rect4733"
width="164.25298"
height="63.581898"
x="325.39706"
y="933.32959" />
<rect
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:url(#linearGradient4375);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
id="rect4733-2"
width="167.27"
height="63.568466"
x="322.86417"
y="664.914" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="93.016663"
y="778.31653"
id="text4777"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4779"
x="93.016663"
y="778.31653"
style="font-size:17.5px;text-align:center;text-anchor:middle">CDC</tspan><tspan
sodipodi:role="line"
x="93.016663"
y="800.19153"
id="tspan4781"
style="font-size:17.5px;text-align:center;text-anchor:middle">FIFO</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="704.28027"
y="778.31653"
id="text4777-0"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4779-0"
x="704.28027"
y="778.31653"
style="font-size:17.5px;text-align:center;text-anchor:middle">CDC</tspan><tspan
sodipodi:role="line"
x="704.28027"
y="800.19153"
id="tspan4781-0"
style="font-size:17.5px;text-align:center;text-anchor:middle">FIFO</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="406.37463"
y="692.875"
id="text4804"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4806"
x="406.37463"
y="692.875"
style="text-align:center;text-anchor:middle">AXI REGISTER</tspan><tspan
sodipodi:role="line"
x="406.37463"
y="711.625"
id="tspan4808"
style="text-align:center;text-anchor:middle">MAP</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="367.93396"
y="857.27112"
id="text4810"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4812"
x="367.93396"
y="857.27112"
style="font-size:17.5px">MEMORY</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="-826.38171"
y="235.72015"
id="text4814"
sodipodi:linespacing="125%"
transform="matrix(0,-1,1,0,0,0)"><tspan
sodipodi:role="line"
id="tspan4816"
x="-826.38171"
y="235.72015"
style="font-size:17.5px">GEARBOX</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="-826.38171"
y="590.76422"
id="text4814-5"
sodipodi:linespacing="125%"
transform="matrix(0,-1,1,0,0,0)"><tspan
sodipodi:role="line"
id="tspan4816-3"
x="-826.38171"
y="590.76422"
style="font-size:17.5px">GEARBOX</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:14.86567879px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="348.77411"
y="962.638"
id="text4836"
sodipodi:linespacing="125%"
transform="scale(0.99083586,1.0092489)"><tspan
sodipodi:role="line"
id="tspan4838"
x="348.77411"
y="962.638"
style="font-size:17.5px">OFFLOAD FSM</tspan></text>
<rect
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:url(#linearGradient4391);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
id="rect4684-7"
width="73.38298"
height="155.3896"
x="56.298218"
y="885.95581" />
<rect
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#100def;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
id="rect4684-2-8"
width="73.38298"
height="155.3896"
x="192.27258"
y="885.95581" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="92.622276"
y="959.05774"
id="text4777-7"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4779-4"
x="92.622276"
y="959.05774"
style="font-size:17.5px;text-align:center;text-anchor:middle">CDC</tspan><tspan
sodipodi:role="line"
x="92.622276"
y="980.93274"
id="tspan4781-4"
style="font-size:17.5px;text-align:center;text-anchor:middle">FIFO</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="-1007.1229"
y="235.32578"
id="text4814-0"
sodipodi:linespacing="125%"
transform="matrix(0,-1,1,0,0,0)"><tspan
sodipodi:role="line"
id="tspan4816-0"
x="-1007.1229"
y="235.32578"
style="font-size:17.5px">GEARBOX</tspan></text>
<rect
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#100def;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
id="rect4684-2-3-7"
width="73.38298"
height="155.3896"
x="548.45856"
y="884.2959" />
<rect
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:url(#linearGradient4367);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
id="rect4684-2-3-3-0"
width="73.38298"
height="155.3896"
x="668.70374"
y="884.2959" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="705.02777"
y="957.39783"
id="text4777-0-5"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4779-0-5"
x="705.02777"
y="957.39783"
style="font-size:17.5px;text-align:center;text-anchor:middle">CDC</tspan><tspan
sodipodi:role="line"
x="705.02777"
y="979.27283"
id="tspan4781-0-0"
style="font-size:17.5px;text-align:center;text-anchor:middle">FIFO</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="-1005.463"
y="591.51172"
id="text4814-5-4"
sodipodi:linespacing="125%"
transform="matrix(0,-1,1,0,0,0)"><tspan
sodipodi:role="line"
id="tspan4816-3-7"
x="-1005.463"
y="591.51172"
style="font-size:17.5px">GEARBOX</tspan></text>
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 56.599504,823.30859 7.955357,7.23214 -7.642857,7.1875"
id="path5891"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccc" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 130.15505,823.30859 -7.95536,7.23214 7.64286,7.1875"
id="path5891-5"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccc" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 56.199504,1008.3086 7.955358,7.2321 -7.642858,7.1875"
id="path5891-7"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccc" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 129.75505,1008.3086 -7.95536,7.2321 7.64286,7.1875"
id="path5891-5-7"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccc" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 668.4995,1008.1082 7.95536,7.2321 -7.64286,7.1875"
id="path5891-7-0"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccc" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 742.05505,1008.1082 -7.95536,7.2321 7.64286,7.1875"
id="path5891-5-7-2"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccc" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 667.7995,823.10816 7.95536,7.23214 -7.64286,7.1875"
id="path5891-7-0-9"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccc" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 741.35505,823.10816 -7.95536,7.23214 7.64286,7.1875"
id="path5891-5-7-2-1"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccc" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 548.4995,1008.2082 7.95536,7.2321 -7.64286,7.1875"
id="path5891-7-0-7"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccc" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 547.3995,823.20816 7.95536,7.23214 -7.64286,7.1875"
id="path5891-7-0-7-3"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccc" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 322.7995,688.20816 7.95536,7.23214 -7.64286,7.1875"
id="path5891-7-0-7-3-8"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccc" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 192.3995,1008.3086 7.95536,7.2321 -7.64286,7.1875"
id="path5891-7-8"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccc" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 192.6995,823.20816 7.95536,7.23214 -7.64286,7.1875"
id="path5891-7-8-4"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccc" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 325.1995,958.30859 7.95536,7.23214 -7.64286,7.1875"
id="path5891-7-8-5"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccc" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="383.5553"
y="784.36218"
id="text4252"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4254"
x="383.5553"
y="784.36218"
style="font-size:10px;fill:#000000;fill-opacity:1">USR_CLK</tspan></text>
<path
style="fill:none;fill-rule:evenodd;stroke:#0000ff;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 405,775.36216 0,-30 120,0 0,85 23,0"
id="path4256"
inkscape:connector-curvature="0" />
<path
style="fill:none;fill-rule:evenodd;stroke:#0000ff;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 525,830.36216 0,185.00004 23,0"
id="path4258"
inkscape:connector-curvature="0" />
<path
style="fill:none;fill-rule:evenodd;stroke:#0000ff;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 525,870.36216 120,0 0,-40 23,0"
id="path4260"
inkscape:connector-curvature="0" />
<path
style="fill:none;fill-rule:evenodd;stroke:#0000ff;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 645,870.36216 0,145.00004 24,0"
id="path4262"
inkscape:connector-curvature="0" />
<path
style="fill:none;fill-rule:evenodd;stroke:#0000ff;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 405,745.36216 -110,0 0,125 -135,0 0,-40 33,0"
id="path4264"
inkscape:connector-curvature="0" />
<path
style="fill:none;fill-rule:evenodd;stroke:#0000ff;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 160,830.36216 -30,0"
id="path4266"
inkscape:connector-curvature="0" />
<path
style="fill:none;fill-rule:evenodd;stroke:#0000ff;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 160,870.36216 0,145.00004 32,0"
id="path4268"
inkscape:connector-curvature="0" />
<path
style="fill:none;fill-rule:evenodd;stroke:#0000ff;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 160,1015.3622 -30,0"
id="path4270"
inkscape:connector-curvature="0" />
<path
style="fill:none;fill-rule:evenodd;stroke:#0000ff;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 295,870.36216 0,95 30,0"
id="path4272"
inkscape:connector-curvature="0" />
<path
style="fill:none;fill-rule:evenodd;stroke:#006400;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 321.84327,695.23589 275,695.36216"
id="path4274"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="270"
y="690.36218"
id="text4276"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4278"
x="270"
y="690.36218"
style="font-size:10px;fill:#006400;fill-opacity:1">SYS_CLK</tspan></text>
<path
style="fill:none;fill-rule:evenodd;stroke:#f05028;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 55,830.36216 -45,0"
id="path4280"
inkscape:connector-curvature="0" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="3"
y="827.36218"
id="text4282"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4284"
x="3"
y="827.36218"
style="font-size:10px;fill:#f05028;fill-opacity:1">DMA_CLK</tspan></text>
<path
style="fill:none;fill-rule:evenodd;stroke:#f05028;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 55.500438,1015.3622 -45,0"
id="path4280-9"
inkscape:connector-curvature="0" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="3.5004375"
y="1012.3619"
id="text4282-5"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4284-5"
x="3.5004375"
y="1012.3619"
style="font-size:10px;fill:#f05028;fill-opacity:1">DMA_CLK</tspan></text>
<path
style="fill:none;fill-rule:evenodd;stroke:#ffc800;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 742,830.36216 38,0"
id="path4307"
inkscape:connector-curvature="0" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="748.92859"
y="824.64789"
id="text4324"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4326"
x="748.92859"
y="824.64789"
style="font-size:10px;fill:#ffc800;fill-opacity:1">DAC_CLK</tspan></text>
<path
style="fill:none;fill-rule:evenodd;stroke:#c8c800;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 742.7,1015.3622 38,0"
id="path4307-5"
inkscape:connector-curvature="0" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="749.62842"
y="1009.6479"
id="text4324-8"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4326-5"
x="749.62842"
y="1009.6479"
style="font-size:10px;fill:#c8c800;fill-opacity:1">ADC_CLK</tspan></text>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 36 KiB

View File

@ -1,572 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="800"
height="500"
viewBox="0 0 799.99999 500.00001"
id="svg8759"
version="1.1"
inkscape:version="0.91 r13725"
sodipodi:docname="interface.svg">
<defs
id="defs8761">
<marker
inkscape:stockid="TriangleOutL"
orient="auto"
refY="0"
refX="0"
id="marker9999"
style="overflow:visible"
inkscape:isstock="true">
<path
inkscape:connector-curvature="0"
id="path10001"
d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
transform="scale(0.8,0.8)" />
</marker>
<marker
inkscape:isstock="true"
style="overflow:visible"
id="marker9893"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="TriangleOutL">
<path
transform="scale(0.8,0.8)"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
id="path9895"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:isstock="true"
style="overflow:visible"
id="marker9805"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="TriangleOutL">
<path
transform="scale(0.8,0.8)"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
id="path9807"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:stockid="TriangleOutL"
orient="auto"
refY="0"
refX="0"
id="marker8368"
style="overflow:visible"
inkscape:isstock="true">
<path
inkscape:connector-curvature="0"
id="path8370"
d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
transform="scale(0.8,0.8)" />
</marker>
<marker
inkscape:isstock="true"
style="overflow:visible"
id="marker7024"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="TriangleOutL">
<path
transform="scale(0.8,0.8)"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
id="path7026"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:isstock="true"
style="overflow:visible"
id="marker6894"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="TriangleOutL">
<path
transform="scale(0.8,0.8)"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
id="path6896"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:isstock="true"
style="overflow:visible"
id="marker6770"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="TriangleOutL"
inkscape:collect="always">
<path
transform="scale(0.8,0.8)"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
id="path6772"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:stockid="TriangleOutL"
orient="auto"
refY="0"
refX="0"
id="marker6384"
style="overflow:visible"
inkscape:isstock="true">
<path
inkscape:connector-curvature="0"
id="path6386"
d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
transform="scale(0.8,0.8)" />
</marker>
<marker
inkscape:stockid="TriangleOutL"
orient="auto"
refY="0"
refX="0"
id="marker5850"
style="overflow:visible"
inkscape:isstock="true"
inkscape:collect="always">
<path
inkscape:connector-curvature="0"
id="path5852"
d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
transform="scale(0.8,0.8)" />
</marker>
<marker
inkscape:stockid="TriangleOutL"
orient="auto"
refY="0"
refX="0"
id="marker5774"
style="overflow:visible"
inkscape:isstock="true">
<path
inkscape:connector-curvature="0"
id="path5776"
d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
transform="scale(0.8,0.8)" />
</marker>
<marker
inkscape:stockid="TriangleOutL"
orient="auto"
refY="0"
refX="0"
id="TriangleOutL-5-7-7"
style="overflow:visible"
inkscape:isstock="true">
<path
inkscape:connector-curvature="0"
id="path4988-2-1-3"
d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
transform="scale(0.8,0.8)" />
</marker>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="1.4"
inkscape:cx="492.95261"
inkscape:cy="273.34624"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
units="px"
inkscape:window-width="1920"
inkscape:window-height="1005"
inkscape:window-x="1911"
inkscape:window-y="-9"
inkscape:window-maximized="1" />
<metadata
id="metadata8764">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-552.36216)">
<rect
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
id="rect4684-2"
width="73.38298"
height="155.3896"
x="184.82431"
y="673.53949" />
<rect
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
id="rect4684-2-3"
width="73.38298"
height="155.3896"
x="539.86841"
y="673.53949" />
<rect
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
id="rect4731"
width="164.03253"
height="153.97696"
x="317.5611"
y="742.24585" />
<rect
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
id="rect4733-2"
width="167.27"
height="63.568466"
x="315.02148"
y="633.23889" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="398.53198"
y="661.19989"
id="text4804"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4806"
x="398.53198"
y="661.19989"
style="text-align:center;text-anchor:middle">AXI REGISTER</tspan><tspan
sodipodi:role="line"
x="398.53198"
y="679.94989"
id="tspan4808"
style="text-align:center;text-anchor:middle">MAP</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="360.09128"
y="825.59601"
id="text4810"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4812"
x="360.09128"
y="825.59601"
style="font-size:17.5px">MEMORY</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="-752.0119"
y="216.94"
id="text4814"
sodipodi:linespacing="125%"
transform="matrix(0,-1,1,0,0,0)"><tspan
sodipodi:role="line"
id="tspan4816"
x="-748.93573"
y="216.94"
style="font-size:17.5px;text-align:center;text-anchor:middle">CDC FIFO &amp; </tspan><tspan
sodipodi:role="line"
x="-752.0119"
y="238.815"
style="font-size:17.5px;text-align:center;text-anchor:middle"
id="tspan10101">GEARBOX</tspan></text>
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker5774)"
d="m 122.21245,747.32086 52.77607,0"
id="path4840-5"
inkscape:connector-curvature="0" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker9893)"
d="m 258.82724,746.96371 51.71647,58.58885"
id="path4840-5-8"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.47677636;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker6894)"
d="m 481.26529,812.76648 51.91399,-58.15992"
id="path4840-5-8-1"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker6770)"
d="m 612.98157,749.82085 39.6379,0"
id="path4840-5-8-1-9"
inkscape:connector-curvature="0" />
<rect
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
id="rect4684-2-8"
width="73.38298"
height="155.3896"
x="184.42993"
y="854.2807" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker6384)"
d="m 183.01679,928.06206 -52.77607,0"
id="path4840-5-4"
inkscape:connector-curvature="0" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker8368)"
d="m 317.56183,831.74042 -54.63489,94.89306"
id="path4840-5-8-3"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
<rect
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
id="rect4684-2-3-7"
width="73.38298"
height="155.3896"
x="540.61591"
y="852.62079" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.47677636;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker9805)"
d="M 540.07616,926.90214 486.74411,845.55948"
id="path4840-5-8-1-6"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker5850)"
d="m 661.78962,928.90214 -39.6379,0"
id="path4840-5-8-1-9-9"
inkscape:connector-curvature="0" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker9999)"
d="m 399.14237,587.82464 0,37.14286"
id="path8360"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="401.64236"
y="598.68176"
id="text8660"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan8662"
x="401.64236"
y="598.68176"
style="fill:#ff0000;fill-opacity:1">AXI_MM</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="-932.75311"
y="216.54562"
id="text4814-7"
sodipodi:linespacing="125%"
transform="matrix(0,-1,1,0,0,0)"><tspan
sodipodi:role="line"
id="tspan4816-0"
x="-929.67694"
y="216.54562"
style="font-size:17.5px;text-align:center;text-anchor:middle">CDC FIFO &amp; </tspan><tspan
sodipodi:role="line"
x="-932.75311"
y="238.42062"
style="font-size:17.5px;text-align:center;text-anchor:middle"
id="tspan10101-8">GEARBOX</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="-752.0119"
y="571.98407"
id="text4814-7-4"
sodipodi:linespacing="125%"
transform="matrix(0,-1,1,0,0,0)"><tspan
sodipodi:role="line"
id="tspan4816-0-7"
x="-748.93573"
y="571.98407"
style="font-size:17.5px;text-align:center;text-anchor:middle">CDC FIFO &amp; </tspan><tspan
sodipodi:role="line"
x="-752.0119"
y="593.85907"
style="font-size:17.5px;text-align:center;text-anchor:middle"
id="tspan10101-8-4">GEARBOX</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="-931.0932"
y="572.73157"
id="text4814-7-9"
sodipodi:linespacing="125%"
transform="matrix(0,-1,1,0,0,0)"><tspan
sodipodi:role="line"
id="tspan4816-0-2"
x="-928.01703"
y="572.73157"
style="font-size:17.5px;text-align:center;text-anchor:middle">CDC FIFO &amp; </tspan><tspan
sodipodi:role="line"
x="-931.0932"
y="594.60657"
style="font-size:17.5px;text-align:center;text-anchor:middle"
id="tspan10101-8-6">GEARBOX</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="719.14288"
y="756.64789"
id="text10159"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan10161"
x="719.14288"
y="756.64789"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:25px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#000000;fill-opacity:0.53465349">DAC</tspan></text>
<g
id="g10305"
transform="translate(-8,120)">
<text
sodipodi:linespacing="125%"
id="text10171"
y="654.48474"
x="129.54361"
style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
xml:space="preserve"><tspan
style="fill:#ff0000;fill-opacity:1"
y="654.48474"
x="129.54361"
id="tspan10173"
sodipodi:role="line">S_AXIS</tspan><tspan
style="fill:#ff0000;fill-opacity:1"
y="673.23474"
x="129.54361"
sodipodi:role="line"
id="tspan10311" /></text>
<text
sodipodi:linespacing="125%"
id="text10175"
y="675.93359"
x="108.85715"
style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
xml:space="preserve"><tspan
style="fill:#ff0000;fill-opacity:1"
y="675.93359"
x="108.85715"
id="tspan10177"
sodipodi:role="line" /></text>
</g>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="630.44104"
y="951.24744"
id="text10175-7"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan10177-0"
x="630.44104"
y="951.24744"
style="fill:#ff0000;fill-opacity:1">FIFO_WR</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="120.79704"
y="952.88525"
id="text10171-16"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan10173-9"
x="120.79704"
y="952.88525"
style="fill:#ff0000;fill-opacity:1">M_AXIS</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="98.86956"
y="974.81885"
id="text10175-0"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan10177-9"
x="98.86956"
y="974.81885"
style="fill:#ff0000;fill-opacity:1" /></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="632.30347"
y="774.81891"
id="text10171-16-1"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan10173-9-7"
x="632.30347"
y="774.81891"
style="fill:#ff0000;fill-opacity:1" /></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="630.16058"
y="775.53314"
id="text10175-0-0"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan10177-9-9"
x="630.16058"
y="775.53314"
style="fill:#ff0000;fill-opacity:1">FIFO_RD</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="720.15607"
y="935.73602"
id="text10159-6"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan10161-5"
x="720.15607"
y="935.73602"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:25px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#000000;fill-opacity:0.53465349">ADC</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="26.13398"
y="935.73602"
id="text10159-6-2"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan10161-5-1"
x="26.13398"
y="935.73602"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:25px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#000000;fill-opacity:0.53465349">DMA</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="26.13398"
y="753.59314"
id="text10159-6-2-0"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan10161-5-1-5"
x="26.13398"
y="753.59314"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:25px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#000000;fill-opacity:0.53465349">DMA</tspan></text>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 26 KiB

View File

@ -1,225 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="300"
height="300"
viewBox="0 0 300 300"
id="svg2"
version="1.1"
inkscape:version="0.91 r13725"
sodipodi:docname="simple_fifo.svg">
<defs
id="defs4">
<marker
inkscape:stockid="TriangleOutM"
orient="auto"
refY="0.0"
refX="0.0"
id="TriangleOutM"
style="overflow:visible"
inkscape:isstock="true">
<path
id="path4291"
d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z "
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
transform="scale(0.4)" />
</marker>
<marker
inkscape:stockid="TriangleOutL"
orient="auto"
refY="0.0"
refX="0.0"
id="TriangleOutL"
style="overflow:visible"
inkscape:isstock="true">
<path
id="path4288"
d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z "
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
transform="scale(0.8)" />
</marker>
<marker
inkscape:stockid="TriangleOutM"
orient="auto"
refY="0"
refX="0"
id="TriangleOutM-6"
style="overflow:visible"
inkscape:isstock="true">
<path
inkscape:connector-curvature="0"
id="path4291-7"
d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
transform="scale(0.4,0.4)" />
</marker>
<marker
inkscape:stockid="TriangleOutM"
orient="auto"
refY="0"
refX="0"
id="TriangleOutM-6-6"
style="overflow:visible"
inkscape:isstock="true">
<path
inkscape:connector-curvature="0"
id="path4291-7-0"
d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
transform="scale(0.4,0.4)" />
</marker>
<marker
inkscape:stockid="TriangleOutM"
orient="auto"
refY="0"
refX="0"
id="TriangleOutM-6-6-8"
style="overflow:visible"
inkscape:isstock="true">
<path
inkscape:connector-curvature="0"
id="path4291-7-0-7"
d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
transform="scale(0.4,0.4)" />
</marker>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.98994949"
inkscape:cx="-67.891819"
inkscape:cy="146.4896"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="true"
units="px"
inkscape:window-width="1920"
inkscape:window-height="1005"
inkscape:window-x="1911"
inkscape:window-y="-9"
inkscape:window-maximized="1">
<inkscape:grid
type="xygrid"
id="grid4136" />
</sodipodi:namedview>
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-752.36216)">
<rect
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2.40730953;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
id="rect4138"
width="150"
height="200"
x="76"
y="802.36218"
rx="27.8571"
ry="0" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:12.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="121.00732"
y="911.45032"
id="text5177"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan5179"
x="121.00732"
y="911.45032"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:25px;font-family:sans-serif;-inkscape-font-specification:sans-serif">FIFO</tspan></text>
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.66752243;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutM)"
d="m 11.808377,875.04952 c 55.34415,0 55.34415,0 55.34415,0"
id="path4140"
inkscape:connector-curvature="0" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.66752243;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutM-6)"
d="m 11.808375,944.94799 c 55.344153,0 55.344153,0 55.344153,0"
id="path4140-8"
inkscape:connector-curvature="0" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:12.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="12.582211"
y="866.00897"
id="text5193"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan5195"
x="12.582211"
y="866.00897"
style="font-size:17.5px">WREN</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:12.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="5.908627"
y="935.04956"
id="text5215"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan5217"
x="5.908627"
y="935.04956"
style="font-size:17.5px">WDATA</tspan></text>
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.66752243;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutM-6-6)"
d="m 290.40064,875.78305 c -55.34416,0 -55.34416,0 -55.34416,0"
id="path4140-8-4"
inkscape:connector-curvature="0" />
<path
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2.66752243;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutM-6-6-8)"
d="m 227.56726,945.68151 c 55.34416,0 55.34416,0 55.34416,0"
id="path4140-8-4-9"
inkscape:connector-curvature="0" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:12.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="240.95631"
y="865.27545"
id="text5193-4"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan5195-8"
x="240.95631"
y="865.27545"
style="font-size:17.5px">RDEN</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:12.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="234.94923"
y="935.78308"
id="text5219"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan5221"
x="234.94923"
y="935.78308"
style="font-size:17.5px">RDATA</tspan></text>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 9.0 KiB