提交 348288ca 创建 作者: 赵鹏翀's avatar 赵鹏翀

Initial commit

上级
*.cir
*.xml
*.bak
/.vs
\ No newline at end of file
添加文件
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<svg height="2097" version="1.1" width="2143" xmlns="http://www.w3.org/2000/svg">
<polyline fill="none" points="1121 554, 1371 554, 1371 1754, 1121 1754" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1121 574, 1391 574, 1391 1774, 1121 1774" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1121 594, 1411 594, 1411 1794, 1121 1794" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1121 614, 1431 614, 1431 1814, 1121 1814" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1121 634, 1451 634, 1451 1834, 1121 1834" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1121 654, 1471 654, 1471 1854, 1121 1854" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1121 534, 1351 534, 1351 1734, 1121 1734" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1121 1714, 1331 1714, 1331 514, 1121 514" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1121 494, 1311 494, 1311 1694, 1121 1694" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1121 1674, 1291 1674, 1291 474, 1121 474" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1121 454, 1271 454, 1271 1654, 1121 1654" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1121 1634, 1251 1634, 1251 434, 1121 434" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1121 674, 1491 674, 1491 1874, 1121 1874" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1121 1894, 1511 1894, 1511 694, 1121 694" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1121 714, 1531 714, 1531 1914, 1121 1914" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1121 1934, 1551 1934, 1551 734, 1121 734" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1251 434, 1771 434" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1271 454, 1771 454" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1291 474, 1771 474" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1311 494, 1771 494" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1331 514, 1771 514" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1351 534, 1771 534" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1371 554, 1771 554" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1391 574, 1771 574" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1411 594, 1771 594" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1431 614, 1771 614" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1451 634, 1771 634" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1471 654, 1771 654" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1491 674, 1771 674" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1511 694, 1771 694" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1531 714, 1771 714" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1551 734, 1771 734" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="1771" x2="1821" y1="434" y2="384"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="1771" x2="1821" y1="454" y2="404"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="1771" x2="1821" y1="474" y2="424"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="1771" x2="1821" y1="494" y2="444"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="1771" x2="1821" y1="514" y2="464"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="1771" x2="1821" y1="534" y2="484"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="1771" x2="1821" y1="554" y2="504"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="1771" x2="1821" y1="574" y2="524"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="1771" x2="1821" y1="594" y2="544"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="1771" x2="1821" y1="614" y2="564"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="1771" x2="1821" y1="634" y2="584"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="1771" x2="1821" y1="654" y2="604"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="1771" x2="1821" y1="674" y2="624"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="1771" x2="1821" y1="694" y2="644"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="1771" x2="1821" y1="714" y2="664"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="1771" x2="1821" y1="734" y2="684"/>
<polyline fill="none" points="871 434, 371 434" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="871 454, 371 454" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="871 474, 371 474" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="871 494, 371 494" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="871 514, 371 514" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="871 534, 371 534" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="871 554, 371 554" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="871 574, 371 574" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="871 594, 371 594" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="871 614, 371 614" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="871 634, 371 634" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="871 654, 371 654" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="871 674, 371 674" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="871 694, 371 694" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="871 714, 371 714" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="871 734, 371 734" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="871 1634, 371 1634" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="871 1654, 371 1654" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="871 1674, 371 1674" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="871 1694, 371 1694" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="871 1714, 371 1714" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="871 1734, 371 1734" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="871 1754, 371 1754" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="871 1774, 371 1774" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="871 1794, 371 1794" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="871 1814, 371 1814" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="871 1834, 371 1834" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="871 1854, 371 1854" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="871 1874, 371 1874" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="871 1894, 381 1894, 371 1894" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="871 1914, 371 1914" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="871 1934, 371 1934" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="321" x2="371" y1="1984" y2="1934"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="321" x2="371" y1="1964" y2="1914"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="321" x2="371" y1="1944" y2="1894"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="321" x2="371" y1="1924" y2="1874"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="321" x2="371" y1="1904" y2="1854"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="321" x2="371" y1="1884" y2="1834"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="321" x2="371" y1="1864" y2="1814"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="321" x2="371" y1="1844" y2="1794"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="321" x2="371" y1="1824" y2="1774"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="321" x2="371" y1="1804" y2="1754"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="321" x2="371" y1="1784" y2="1734"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="321" x2="371" y1="1764" y2="1714"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="321" x2="371" y1="1744" y2="1694"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="321" x2="371" y1="1724" y2="1674"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="321" x2="371" y1="1704" y2="1654"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="321" x2="371" y1="1684" y2="1634"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="321" x2="371" y1="784" y2="734"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="321" x2="371" y1="764" y2="714"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="321" x2="371" y1="744" y2="694"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="321" x2="371" y1="724" y2="674"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="321" x2="371" y1="704" y2="654"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="321" x2="371" y1="684" y2="634"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="321" x2="371" y1="664" y2="614"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="321" x2="371" y1="644" y2="594"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="321" x2="371" y1="624" y2="574"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="321" x2="371" y1="604" y2="554"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="321" x2="371" y1="584" y2="534"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="321" x2="371" y1="564" y2="514"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="321" x2="371" y1="544" y2="494"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="321" x2="371" y1="524" y2="474"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="321" x2="371" y1="504" y2="454"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="321" x2="371" y1="484" y2="434"/>
<polygon fill="#ffff80" points="21 434, 21 409, 146 409, 171 434, 146 459, 21 459, 21 434" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="21" y="434">A[15..0]</text>
<polygon fill="#ffff80" points="21 1634, 21 1609, 146 1609, 171 1634, 146 1659, 21 1659, 21 1634" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="21" y="1634">B[15..0]</text>
<polygon fill="#ffff80" points="21 1144, 21 1119, 146 1119, 171 1144, 146 1169, 21 1169, 21 1144" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="21" y="1144">Select</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="771" x2="771" y1="974" y2="1034"/>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="771" x2="771" y1="894" y2="834"/>
<circle cx="771" cy="898" fill="none" r="5" stroke="#000000" stroke-width="5"/>
<polygon fill="#ffffff" fill-opacity="0.5" points="721 974, 821 974, 771 904, 721 974" stroke="#000000" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" transform="rotate(-90 735 954)" x="735" y="954">U1</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" transform="rotate(-90 867 974)" x="867" y="974">NOT</text>
<polyline fill="none" points="871 1984, 771 1984, 771 1444, 771 1034" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="471" y="434">A0</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="471" y="454">A1</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="471" y="474">A2</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="471" y="494">A3</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="471" y="514">A4</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="471" y="534">A5</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="471" y="554">A6</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="471" y="574">A7</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="471" y="594">A8</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="471" y="614">A9</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="471" y="634">A10</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="471" y="654">A11</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="471" y="674">A12</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="471" y="694">A13</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="471" y="714">A14</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="471" y="734">A15</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="471" y="1634">B0</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="471" y="1654">B1</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="471" y="1674">B2</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="471" y="1694">B3</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="471" y="1714">B4</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="471" y="1734">B5</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="471" y="1754">B6</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="471" y="1774">B7</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="471" y="1794">B8</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="471" y="1814">B9</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="471" y="1834">B10</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="471" y="1854">B11</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="471" y="1874">B12</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="471" y="1894">B13</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="471" y="1914">B14</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="471" y="1934">B15</text>
<polyline fill="none" points="871 784, 771 784, 771 834" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="171 1144, 771 1144" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="1251" y="434">S0</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="1271" y="454">S1</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="1291" y="474">S2</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="1311" y="494">S3</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="1331" y="514">S4</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="1351" y="534">S5</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="1371" y="554">S6</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="1391" y="574">S7</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="1411" y="594">S8</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="1431" y="614">S9</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="1451" y="634">S10</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="1471" y="654">S11</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="1491" y="674">S12</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="1511" y="694">S13</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="1531" y="714">S14</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="1551" y="734">S15</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="微软雅黑" font-size="180" font-weight="700" text-anchor="start" x="471" y="234">2选1复用器</text>
<polyline fill="none" points="321 784, 321 434, 171 434" stroke="#000080" stroke-linecap="round" stroke-linejoin="round" stroke-width="20"/>
<polyline fill="none" points="321 1984, 321 1634, 171 1634" stroke="#000080" stroke-linecap="round" stroke-linejoin="round" stroke-width="20"/>
<polyline fill="none" points="1821 684, 1821 334, 1971 334" stroke="#000080" stroke-linecap="round" stroke-linejoin="round" stroke-width="20"/>
<polygon fill="#ffff80" points="1971 334, 1971 309, 2096 309, 2121 334, 2096 359, 1971 359, 1971 334" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="1971" y="334">S[15..0]</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="921" x2="871" y1="434" y2="434"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="964" y="434">A0</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="921" x2="871" y1="454" y2="454"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="964" y="454">A1</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="921" x2="871" y1="474" y2="474"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="964" y="474">A2</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="921" x2="871" y1="494" y2="494"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="964" y="494">A3</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="921" x2="871" y1="514" y2="514"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="964" y="514">A4</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="921" x2="871" y1="534" y2="534"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="964" y="534">A5</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="921" x2="871" y1="554" y2="554"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="964" y="554">A6</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="921" x2="871" y1="574" y2="574"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="964" y="574">A7</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="921" x2="871" y1="594" y2="594"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="964" y="594">A8</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="921" x2="871" y1="614" y2="614"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="964" y="614">A9</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="921" x2="871" y1="634" y2="634"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="974" y="634">A10</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="921" x2="871" y1="654" y2="654"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="974" y="654">A11</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="921" x2="871" y1="674" y2="674"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="974" y="674">A12</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="921" x2="871" y1="694" y2="694"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="974" y="694">A13</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="921" x2="871" y1="714" y2="714"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="974" y="714">A14</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="921" x2="871" y1="734" y2="734"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="974" y="734">A15</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1071" x2="1121" y1="434" y2="434"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1028" y="434">D0</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1071" x2="1121" y1="454" y2="454"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1028" y="454">D1</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1071" x2="1121" y1="474" y2="474"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1028" y="474">D2</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1071" x2="1121" y1="494" y2="494"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1028" y="494">D3</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1071" x2="1121" y1="514" y2="514"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1028" y="514">D4</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1071" x2="1121" y1="534" y2="534"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1028" y="534">D5</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1071" x2="1121" y1="554" y2="554"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1028" y="554">D6</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1071" x2="1121" y1="574" y2="574"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1028" y="574">D7</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1071" x2="1121" y1="594" y2="594"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1028" y="594">D8</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1071" x2="1121" y1="614" y2="614"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1028" y="614">D9</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1071" x2="1121" y1="634" y2="634"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1028" y="634">D10</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1071" x2="1121" y1="654" y2="654"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1028" y="654">D11</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1071" x2="1121" y1="674" y2="674"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1028" y="674">D12</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1071" x2="1121" y1="694" y2="694"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1028" y="694">D13</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1071" x2="1121" y1="714" y2="714"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1028" y="714">D14</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1071" x2="1121" y1="734" y2="734"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1028" y="734">D15</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="911" x2="871" y1="784" y2="784"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="964" y="784">^EN</text>
<rect fill="#a0c0ff" fill-opacity="0.5" height="420" stroke="#000000" stroke-width="5" width="150" x="921" y="404"/>
<circle cx="916" cy="784" fill="none" r="5" stroke="#000000" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="981" y="394">1</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="881" y="874">BUS_TRANS16</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="921" x2="871" y1="1634" y2="1634"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="964" y="1634">A0</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="921" x2="871" y1="1654" y2="1654"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="964" y="1654">A1</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="921" x2="871" y1="1674" y2="1674"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="964" y="1674">A2</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="921" x2="871" y1="1694" y2="1694"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="964" y="1694">A3</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="921" x2="871" y1="1714" y2="1714"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="964" y="1714">A4</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="921" x2="871" y1="1734" y2="1734"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="964" y="1734">A5</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="921" x2="871" y1="1754" y2="1754"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="964" y="1754">A6</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="921" x2="871" y1="1774" y2="1774"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="964" y="1774">A7</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="921" x2="871" y1="1794" y2="1794"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="964" y="1794">A8</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="921" x2="871" y1="1814" y2="1814"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="964" y="1814">A9</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="921" x2="871" y1="1834" y2="1834"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="974" y="1834">A10</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="921" x2="871" y1="1854" y2="1854"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="974" y="1854">A11</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="921" x2="871" y1="1874" y2="1874"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="974" y="1874">A12</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="921" x2="871" y1="1894" y2="1894"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="974" y="1894">A13</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="921" x2="871" y1="1914" y2="1914"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="974" y="1914">A14</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="921" x2="871" y1="1934" y2="1934"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="974" y="1934">A15</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1071" x2="1121" y1="1634" y2="1634"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1028" y="1634">D0</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1071" x2="1121" y1="1654" y2="1654"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1028" y="1654">D1</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1071" x2="1121" y1="1674" y2="1674"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1028" y="1674">D2</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1071" x2="1121" y1="1694" y2="1694"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1028" y="1694">D3</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1071" x2="1121" y1="1714" y2="1714"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1028" y="1714">D4</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1071" x2="1121" y1="1734" y2="1734"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1028" y="1734">D5</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1071" x2="1121" y1="1754" y2="1754"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1028" y="1754">D6</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1071" x2="1121" y1="1774" y2="1774"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1028" y="1774">D7</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1071" x2="1121" y1="1794" y2="1794"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1028" y="1794">D8</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1071" x2="1121" y1="1814" y2="1814"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1028" y="1814">D9</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1071" x2="1121" y1="1834" y2="1834"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1028" y="1834">D10</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1071" x2="1121" y1="1854" y2="1854"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1028" y="1854">D11</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1071" x2="1121" y1="1874" y2="1874"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1028" y="1874">D12</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1071" x2="1121" y1="1894" y2="1894"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1028" y="1894">D13</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1071" x2="1121" y1="1914" y2="1914"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1028" y="1914">D14</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1071" x2="1121" y1="1934" y2="1934"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1028" y="1934">D15</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="911" x2="871" y1="1984" y2="1984"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="964" y="1984">^EN</text>
<rect fill="#a0c0ff" fill-opacity="0.5" height="420" stroke="#000000" stroke-width="5" width="150" x="921" y="1604"/>
<circle cx="916" cy="1984" fill="none" r="5" stroke="#000000" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="981" y="1594">2</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="881" y="2074">BUS_TRANS16</text>
<circle cx="1551" cy="734" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1531" cy="714" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1511" cy="694" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1491" cy="674" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1471" cy="654" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1451" cy="634" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1431" cy="614" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1411" cy="594" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1391" cy="574" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1371" cy="554" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1351" cy="534" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1331" cy="514" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1311" cy="494" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1291" cy="474" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1271" cy="454" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1251" cy="434" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="771" cy="1144" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
</svg>
添加文件
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<svg height="3047" version="1.1" width="2143" xmlns="http://www.w3.org/2000/svg">
<polyline fill="none" points="1119 954, 1369 954, 1369 2154, 1119 2154" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1119 974, 1389 974, 1389 2174, 1119 2174" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1119 994, 1409 994, 1409 2194, 1119 2194" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1119 1014, 1429 1014, 1429 2214, 1119 2214" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1119 1034, 1449 1034, 1449 2234, 1119 2234" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1119 1054, 1469 1054, 1469 2254, 1119 2254" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1119 934, 1349 934, 1349 2134, 1119 2134" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1119 2114, 1329 2114, 1329 914, 1119 914" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1119 894, 1309 894, 1309 2094, 1119 2094" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1119 2074, 1289 2074, 1289 874, 1119 874" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1119 854, 1269 854, 1269 2054, 1119 2054" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1119 2034, 1249 2034, 1249 834, 1119 834" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1119 1074, 1489 1074, 1489 2274, 1119 2274" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1119 2294, 1509 2294, 1509 1094, 1119 1094" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1119 1114, 1529 1114, 1529 2314, 1119 2314" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1119 2334, 1549 2334, 1549 1134, 1119 1134" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1119 1434, 1249 1434" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1119 1454, 1269 1454" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1119 1474, 1289 1474" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1119 1494, 1309 1494" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1119 1514, 1329 1514" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1119 1534, 1349 1534" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1119 1554, 1369 1554" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1119 1574, 1389 1574" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1119 1594, 1409 1594" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1119 1614, 1429 1614" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1119 1634, 1449 1634" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1119 1654, 1469 1654" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1119 1674, 1489 1674" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1119 1694, 1509 1694" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1119 1714, 1529 1714" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1119 1734, 1549 1734" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1249 834, 1769 834" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1269 854, 1769 854" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1289 874, 1769 874" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1309 894, 1769 894" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1329 914, 1769 914" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1349 934, 1769 934" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1369 954, 1769 954" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1389 974, 1769 974" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1409 994, 1769 994" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1429 1014, 1769 1014" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1449 1034, 1769 1034" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1469 1054, 1769 1054" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1489 1074, 1769 1074" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1509 1094, 1769 1094" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1529 1114, 1769 1114" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1549 1134, 1769 1134" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="1769" x2="1819" y1="834" y2="784"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="1769" x2="1819" y1="854" y2="804"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="1769" x2="1819" y1="874" y2="824"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="1769" x2="1819" y1="894" y2="844"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="1769" x2="1819" y1="914" y2="864"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="1769" x2="1819" y1="934" y2="884"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="1769" x2="1819" y1="954" y2="904"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="1769" x2="1819" y1="974" y2="924"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="1769" x2="1819" y1="994" y2="944"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="1769" x2="1819" y1="1014" y2="964"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="1769" x2="1819" y1="1034" y2="984"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="1769" x2="1819" y1="1054" y2="1004"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="1769" x2="1819" y1="1074" y2="1024"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="1769" x2="1819" y1="1094" y2="1044"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="1769" x2="1819" y1="1114" y2="1064"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="1769" x2="1819" y1="1134" y2="1084"/>
<polyline fill="none" points="869 834, 369 834" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="869 854, 369 854" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="869 874, 369 874" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="869 894, 369 894" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="869 914, 369 914" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="869 934, 369 934" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="869 954, 369 954" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="869 974, 369 974" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="869 994, 369 994" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="869 1014, 369 1014" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="869 1034, 369 1034" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="869 1054, 369 1054" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="869 1074, 369 1074" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="869 1094, 369 1094" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="869 1114, 369 1114" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="869 1134, 369 1134" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="869 1434, 369 1434" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="869 1454, 369 1454" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="869 1474, 369 1474" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="869 1494, 369 1494" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="869 1514, 369 1514" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="869 1534, 369 1534" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="869 1554, 369 1554" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="869 1574, 369 1574" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="869 1594, 369 1594" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="869 1614, 369 1614" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="869 1634, 369 1634" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="869 1654, 369 1654" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="869 1674, 369 1674" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="869 1694, 369 1694" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="869 1714, 369 1714" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="869 1734, 369 1734" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="869 2034, 369 2034" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="869 2054, 369 2054" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="869 2074, 369 2074" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="869 2094, 369 2094" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="869 2114, 369 2114" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="869 2134, 369 2134" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="869 2154, 369 2154" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="869 2174, 369 2174" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="869 2194, 369 2194" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="869 2214, 369 2214" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="869 2234, 369 2234" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="869 2254, 369 2254" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="869 2274, 369 2274" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="869 2294, 379 2294, 369 2294" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="869 2314, 369 2314" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="869 2334, 369 2334" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="319" x2="369" y1="2384" y2="2334"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="319" x2="369" y1="2364" y2="2314"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="319" x2="369" y1="2344" y2="2294"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="319" x2="369" y1="2324" y2="2274"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="319" x2="369" y1="2304" y2="2254"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="319" x2="369" y1="2284" y2="2234"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="319" x2="369" y1="2264" y2="2214"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="319" x2="369" y1="2244" y2="2194"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="319" x2="369" y1="2224" y2="2174"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="319" x2="369" y1="2204" y2="2154"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="319" x2="369" y1="2184" y2="2134"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="319" x2="369" y1="2164" y2="2114"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="319" x2="369" y1="2144" y2="2094"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="319" x2="369" y1="2124" y2="2074"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="319" x2="369" y1="2104" y2="2054"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="319" x2="369" y1="2084" y2="2034"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="319" x2="369" y1="1784" y2="1734"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="319" x2="369" y1="1764" y2="1714"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="319" x2="369" y1="1744" y2="1694"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="319" x2="369" y1="1724" y2="1674"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="319" x2="369" y1="1704" y2="1654"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="319" x2="369" y1="1684" y2="1634"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="319" x2="369" y1="1664" y2="1614"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="319" x2="369" y1="1644" y2="1594"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="319" x2="369" y1="1624" y2="1574"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="319" x2="369" y1="1604" y2="1554"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="319" x2="369" y1="1584" y2="1534"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="319" x2="369" y1="1564" y2="1514"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="319" x2="369" y1="1544" y2="1494"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="319" x2="369" y1="1524" y2="1474"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="319" x2="369" y1="1504" y2="1454"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="319" x2="369" y1="1484" y2="1434"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="319" x2="369" y1="1184" y2="1134"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="319" x2="369" y1="1164" y2="1114"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="319" x2="369" y1="1144" y2="1094"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="319" x2="369" y1="1124" y2="1074"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="319" x2="369" y1="1104" y2="1054"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="319" x2="369" y1="1084" y2="1034"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="319" x2="369" y1="1064" y2="1014"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="319" x2="369" y1="1044" y2="994"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="319" x2="369" y1="1024" y2="974"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="319" x2="369" y1="1004" y2="954"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="319" x2="369" y1="984" y2="934"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="319" x2="369" y1="964" y2="914"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="319" x2="369" y1="944" y2="894"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="319" x2="369" y1="924" y2="874"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="319" x2="369" y1="904" y2="854"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="319" x2="369" y1="884" y2="834"/>
<polygon fill="#ffff80" points="19 834, 19 809, 144 809, 169 834, 144 859, 19 859, 19 834" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="19" y="834">A[15..0]</text>
<polygon fill="#ffff80" points="19 1434, 19 1409, 144 1409, 169 1434, 144 1459, 19 1459, 19 1434" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="19" y="1434">B[15..0]</text>
<polygon fill="#ffff80" points="19 2034, 19 2009, 144 2009, 169 2034, 144 2059, 19 2059, 19 2034" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="19" y="2034">C[15..0]</text>
<polyline fill="none" points="319 1184, 319 834, 169 834" stroke="#000080" stroke-linecap="round" stroke-linejoin="round" stroke-width="20"/>
<polyline fill="none" points="319 1784, 319 1434, 169 1434" stroke="#000080" stroke-linecap="round" stroke-linejoin="round" stroke-width="20"/>
<polyline fill="none" points="319 2384, 319 2034, 169 2034" stroke="#000080" stroke-linecap="round" stroke-linejoin="round" stroke-width="20"/>
<polyline fill="none" points="1819 1084, 1819 754, 1969 754" stroke="#000080" stroke-linecap="round" stroke-linejoin="round" stroke-width="20"/>
<polygon fill="#ffff80" points="1969 754, 1969 729, 2094 729, 2119 754, 2094 779, 1969 779, 1969 754" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="1969" y="754">F[15..0]</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="469" y="834">A0</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="469" y="854">A1</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="469" y="874">A2</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="469" y="894">A3</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="469" y="914">A4</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="469" y="934">A5</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="469" y="954">A6</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="469" y="974">A7</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="469" y="994">A8</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="469" y="1014">A9</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="469" y="1034">A10</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="469" y="1054">A11</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="469" y="1074">A12</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="469" y="1094">A13</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="469" y="1114">A14</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="469" y="1134">A15</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="469" y="1434">B0</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="469" y="1454">B1</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="469" y="1474">B2</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="469" y="1494">B3</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="469" y="1514">B4</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="469" y="1534">B5</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="469" y="1554">B6</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="469" y="1574">B7</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="469" y="1594">B8</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="469" y="1614">B9</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="469" y="1634">B10</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="469" y="1654">B11</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="469" y="1674">B12</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="469" y="1694">B13</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="469" y="1714">B14</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="469" y="1734">B15</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="469" y="2034">C0</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="469" y="2054">C1</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="469" y="2074">C2</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="469" y="2094">C3</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="469" y="2114">C4</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="469" y="2134">C5</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="469" y="2154">C6</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="469" y="2174">C7</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="469" y="2194">C8</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="469" y="2214">C9</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="469" y="2234">C10</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="469" y="2254">C11</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="469" y="2274">C12</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="469" y="2294">C13</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="469" y="2314">C14</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="469" y="2334">C15</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="1549" y="834">F0</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="1549" y="854">F1</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="1549" y="874">F2</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="1549" y="894">F3</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="1549" y="914">F4</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="1549" y="934">F5</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="1549" y="954">F6</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="1549" y="974">F7</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="1549" y="994">F8</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="1549" y="1014">F9</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="1549" y="1034">F10</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="1549" y="1054">F11</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="1549" y="1074">F12</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="1549" y="1094">F13</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="1549" y="1114">F14</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="1549" y="1134">F15</text>
<polyline fill="none" points="1119 2584, 1249 2584, 1249 2034" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1119 2604, 1269 2604, 1269 2054" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1119 2624, 1289 2624, 1289 2074" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1119 2644, 1309 2644, 1309 2094" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1119 2664, 1329 2664, 1329 2114" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1119 2684, 1349 2684, 1349 2134" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1119 2704, 1369 2704, 1369 2154" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1119 2724, 1389 2724, 1389 2174" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1119 2744, 1409 2744, 1409 2194" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1119 2764, 1429 2764, 1429 2214" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1119 2784, 1449 2784, 1449 2234" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1119 2804, 1469 2804, 1469 2254" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1119 2824, 1489 2824, 1489 2274" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1119 2844, 1509 2844, 1509 2294" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1119 2864, 1529 2864, 1529 2314" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1119 2884, 1549 2884, 1549 2334" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="869 2584, 369 2584" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="869 2604, 369 2604" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="869 2624, 369 2624" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="869 2644, 369 2644" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="869 2664, 369 2664" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="869 2684, 369 2684" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="869 2704, 369 2704" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="869 2724, 369 2724" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="869 2744, 369 2744" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="869 2764, 369 2764" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="869 2784, 369 2784" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="869 2804, 369 2804" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="869 2824, 369 2824" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="869 2844, 369 2844" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="869 2864, 369 2864" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="869 2884, 369 2884" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="319" x2="369" y1="2634" y2="2584"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="319" x2="369" y1="2654" y2="2604"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="319" x2="369" y1="2674" y2="2624"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="319" x2="369" y1="2694" y2="2644"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="319" x2="369" y1="2714" y2="2664"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="319" x2="369" y1="2734" y2="2684"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="319" x2="369" y1="2754" y2="2704"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="319" x2="369" y1="2774" y2="2724"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="319" x2="369" y1="2794" y2="2744"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="319" x2="369" y1="2814" y2="2764"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="319" x2="369" y1="2834" y2="2784"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="319" x2="369" y1="2854" y2="2804"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="319" x2="369" y1="2874" y2="2824"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="319" x2="369" y1="2894" y2="2844"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="319" x2="369" y1="2914" y2="2864"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="319" x2="369" y1="2934" y2="2884"/>
<polyline fill="none" points="319 2934, 319 2584, 169 2584" stroke="#000080" stroke-linecap="round" stroke-linejoin="round" stroke-width="20"/>
<polygon fill="#ffff80" points="19 2584, 19 2559, 144 2559, 169 2584, 144 2609, 19 2609, 19 2584" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="19" y="2584">D[15..0]</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="469" y="2584">D0</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="469" y="2604">D1</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="469" y="2624">D2</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="469" y="2644">D3</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="469" y="2664">D4</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="469" y="2684">D5</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="469" y="2704">D6</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="469" y="2724">D7</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="469" y="2744">D8</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="469" y="2764">D9</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="469" y="2784">D10</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="469" y="2804">D11</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="469" y="2824">D12</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="469" y="2844">D13</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="469" y="2864">D14</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="469" y="2884">D15</text>
<polygon fill="#ffff80" points="19 374, 19 359, 154 359, 169 374, 154 389, 19 389, 19 374" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="19" y="374">S0</text>
<polygon fill="#ffff80" points="19 404, 19 389, 154 389, 169 404, 154 419, 19 419, 19 404" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="19" y="404">S1</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="319" x2="279" y1="464" y2="464"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="381" y="461">^1G</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="302" y="464">1</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="329" x2="279" y1="374" y2="374"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="362" y="375">A</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="301" y="373">2</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="329" x2="279" y1="404" y2="404"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="362" y="404">B</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="301" y="403">3</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="489" x2="529" y1="374" y2="374"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="448" y="380">Y0</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="508" y="374">4</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="489" x2="529" y1="404" y2="404"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="449" y="408">Y1</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="508" y="404">5</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="489" x2="529" y1="434" y2="434"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="449" y="436">Y2</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="508" y="434">6</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="489" x2="529" y1="464" y2="464"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="449" y="464">Y3</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="509" y="465">7</text>
<circle cx="324" cy="464" fill="none" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="484" cy="374" fill="none" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="485" cy="464" fill="none" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="484" cy="435" fill="none" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="484" cy="404" fill="none" r="4" stroke="#000000" stroke-width="5"/>
<rect fill="#ffffff" fill-opacity="0.5" height="124" stroke="#000000" stroke-width="5" width="146" x="331" y="358"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="398" y="352">U1</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="333" y="524">74LS139D</text>
<polyline fill="none" points="529 374, 779 374, 779 1184, 869 1184" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="529 404, 759 404, 759 1784, 869 1784" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="529 434, 739 434, 739 2384, 869 2384" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="529 464, 719 464, 719 2934, 869 2934" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="微软雅黑" font-size="150" font-weight="700" text-anchor="start" x="369" y="194">4选1复用器</text>
<polyline fill="none" points="279 374, 169 374" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="279 404, 169 404" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="919" x2="869" y1="834" y2="834"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="962" y="834">A0</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="919" x2="869" y1="854" y2="854"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="962" y="854">A1</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="919" x2="869" y1="874" y2="874"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="962" y="874">A2</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="919" x2="869" y1="894" y2="894"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="962" y="894">A3</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="919" x2="869" y1="914" y2="914"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="962" y="914">A4</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="919" x2="869" y1="934" y2="934"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="962" y="934">A5</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="919" x2="869" y1="954" y2="954"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="962" y="954">A6</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="919" x2="869" y1="974" y2="974"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="962" y="974">A7</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="919" x2="869" y1="994" y2="994"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="962" y="994">A8</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="919" x2="869" y1="1014" y2="1014"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="962" y="1014">A9</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="919" x2="869" y1="1034" y2="1034"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="972" y="1034">A10</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="919" x2="869" y1="1054" y2="1054"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="972" y="1054">A11</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="919" x2="869" y1="1074" y2="1074"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="972" y="1074">A12</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="919" x2="869" y1="1094" y2="1094"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="972" y="1094">A13</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="919" x2="869" y1="1114" y2="1114"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="972" y="1114">A14</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="919" x2="869" y1="1134" y2="1134"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="972" y="1134">A15</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1069" x2="1119" y1="834" y2="834"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1026" y="834">D0</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1069" x2="1119" y1="854" y2="854"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1026" y="854">D1</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1069" x2="1119" y1="874" y2="874"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1026" y="874">D2</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1069" x2="1119" y1="894" y2="894"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1026" y="894">D3</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1069" x2="1119" y1="914" y2="914"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1026" y="914">D4</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1069" x2="1119" y1="934" y2="934"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1026" y="934">D5</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1069" x2="1119" y1="954" y2="954"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1026" y="954">D6</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1069" x2="1119" y1="974" y2="974"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1026" y="974">D7</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1069" x2="1119" y1="994" y2="994"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1026" y="994">D8</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1069" x2="1119" y1="1014" y2="1014"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1026" y="1014">D9</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1069" x2="1119" y1="1034" y2="1034"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1026" y="1034">D10</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1069" x2="1119" y1="1054" y2="1054"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1026" y="1054">D11</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1069" x2="1119" y1="1074" y2="1074"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1026" y="1074">D12</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1069" x2="1119" y1="1094" y2="1094"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1026" y="1094">D13</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1069" x2="1119" y1="1114" y2="1114"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1026" y="1114">D14</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1069" x2="1119" y1="1134" y2="1134"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1026" y="1134">D15</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="909" x2="869" y1="1184" y2="1184"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="962" y="1184">^EN</text>
<rect fill="#a0c0ff" fill-opacity="0.5" height="420" stroke="#000000" stroke-width="5" width="150" x="919" y="804"/>
<circle cx="914" cy="1184" fill="none" r="5" stroke="#000000" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="979" y="794">1</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="879" y="1274">BUS_TRANS16</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="919" x2="869" y1="1434" y2="1434"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="962" y="1434">A0</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="919" x2="869" y1="1454" y2="1454"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="962" y="1454">A1</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="919" x2="869" y1="1474" y2="1474"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="962" y="1474">A2</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="919" x2="869" y1="1494" y2="1494"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="962" y="1494">A3</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="919" x2="869" y1="1514" y2="1514"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="962" y="1514">A4</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="919" x2="869" y1="1534" y2="1534"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="962" y="1534">A5</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="919" x2="869" y1="1554" y2="1554"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="962" y="1554">A6</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="919" x2="869" y1="1574" y2="1574"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="962" y="1574">A7</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="919" x2="869" y1="1594" y2="1594"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="962" y="1594">A8</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="919" x2="869" y1="1614" y2="1614"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="962" y="1614">A9</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="919" x2="869" y1="1634" y2="1634"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="972" y="1634">A10</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="919" x2="869" y1="1654" y2="1654"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="972" y="1654">A11</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="919" x2="869" y1="1674" y2="1674"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="972" y="1674">A12</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="919" x2="869" y1="1694" y2="1694"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="972" y="1694">A13</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="919" x2="869" y1="1714" y2="1714"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="972" y="1714">A14</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="919" x2="869" y1="1734" y2="1734"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="972" y="1734">A15</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1069" x2="1119" y1="1434" y2="1434"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1026" y="1434">D0</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1069" x2="1119" y1="1454" y2="1454"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1026" y="1454">D1</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1069" x2="1119" y1="1474" y2="1474"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1026" y="1474">D2</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1069" x2="1119" y1="1494" y2="1494"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1026" y="1494">D3</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1069" x2="1119" y1="1514" y2="1514"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1026" y="1514">D4</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1069" x2="1119" y1="1534" y2="1534"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1026" y="1534">D5</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1069" x2="1119" y1="1554" y2="1554"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1026" y="1554">D6</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1069" x2="1119" y1="1574" y2="1574"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1026" y="1574">D7</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1069" x2="1119" y1="1594" y2="1594"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1026" y="1594">D8</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1069" x2="1119" y1="1614" y2="1614"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1026" y="1614">D9</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1069" x2="1119" y1="1634" y2="1634"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1026" y="1634">D10</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1069" x2="1119" y1="1654" y2="1654"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1026" y="1654">D11</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1069" x2="1119" y1="1674" y2="1674"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1026" y="1674">D12</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1069" x2="1119" y1="1694" y2="1694"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1026" y="1694">D13</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1069" x2="1119" y1="1714" y2="1714"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1026" y="1714">D14</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1069" x2="1119" y1="1734" y2="1734"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1026" y="1734">D15</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="909" x2="869" y1="1784" y2="1784"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="962" y="1784">^EN</text>
<rect fill="#a0c0ff" fill-opacity="0.5" height="420" stroke="#000000" stroke-width="5" width="150" x="919" y="1404"/>
<circle cx="914" cy="1784" fill="none" r="5" stroke="#000000" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="979" y="1394">2</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="879" y="1874">BUS_TRANS16</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="919" x2="869" y1="2034" y2="2034"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="962" y="2034">A0</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="919" x2="869" y1="2054" y2="2054"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="962" y="2054">A1</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="919" x2="869" y1="2074" y2="2074"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="962" y="2074">A2</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="919" x2="869" y1="2094" y2="2094"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="962" y="2094">A3</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="919" x2="869" y1="2114" y2="2114"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="962" y="2114">A4</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="919" x2="869" y1="2134" y2="2134"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="962" y="2134">A5</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="919" x2="869" y1="2154" y2="2154"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="962" y="2154">A6</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="919" x2="869" y1="2174" y2="2174"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="962" y="2174">A7</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="919" x2="869" y1="2194" y2="2194"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="962" y="2194">A8</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="919" x2="869" y1="2214" y2="2214"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="962" y="2214">A9</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="919" x2="869" y1="2234" y2="2234"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="972" y="2234">A10</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="919" x2="869" y1="2254" y2="2254"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="972" y="2254">A11</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="919" x2="869" y1="2274" y2="2274"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="972" y="2274">A12</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="919" x2="869" y1="2294" y2="2294"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="972" y="2294">A13</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="919" x2="869" y1="2314" y2="2314"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="972" y="2314">A14</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="919" x2="869" y1="2334" y2="2334"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="972" y="2334">A15</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1069" x2="1119" y1="2034" y2="2034"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1026" y="2034">D0</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1069" x2="1119" y1="2054" y2="2054"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1026" y="2054">D1</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1069" x2="1119" y1="2074" y2="2074"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1026" y="2074">D2</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1069" x2="1119" y1="2094" y2="2094"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1026" y="2094">D3</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1069" x2="1119" y1="2114" y2="2114"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1026" y="2114">D4</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1069" x2="1119" y1="2134" y2="2134"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1026" y="2134">D5</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1069" x2="1119" y1="2154" y2="2154"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1026" y="2154">D6</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1069" x2="1119" y1="2174" y2="2174"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1026" y="2174">D7</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1069" x2="1119" y1="2194" y2="2194"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1026" y="2194">D8</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1069" x2="1119" y1="2214" y2="2214"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1026" y="2214">D9</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1069" x2="1119" y1="2234" y2="2234"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1026" y="2234">D10</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1069" x2="1119" y1="2254" y2="2254"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1026" y="2254">D11</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1069" x2="1119" y1="2274" y2="2274"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1026" y="2274">D12</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1069" x2="1119" y1="2294" y2="2294"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1026" y="2294">D13</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1069" x2="1119" y1="2314" y2="2314"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1026" y="2314">D14</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1069" x2="1119" y1="2334" y2="2334"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1026" y="2334">D15</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="909" x2="869" y1="2384" y2="2384"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="962" y="2384">^EN</text>
<rect fill="#a0c0ff" fill-opacity="0.5" height="420" stroke="#000000" stroke-width="5" width="150" x="919" y="2004"/>
<circle cx="914" cy="2384" fill="none" r="5" stroke="#000000" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="979" y="1994">3</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="879" y="2474">BUS_TRANS16</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="919" x2="869" y1="2584" y2="2584"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="962" y="2584">A0</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="919" x2="869" y1="2604" y2="2604"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="962" y="2604">A1</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="919" x2="869" y1="2624" y2="2624"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="962" y="2624">A2</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="919" x2="869" y1="2644" y2="2644"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="962" y="2644">A3</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="919" x2="869" y1="2664" y2="2664"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="962" y="2664">A4</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="919" x2="869" y1="2684" y2="2684"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="962" y="2684">A5</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="919" x2="869" y1="2704" y2="2704"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="962" y="2704">A6</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="919" x2="869" y1="2724" y2="2724"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="962" y="2724">A7</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="919" x2="869" y1="2744" y2="2744"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="962" y="2744">A8</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="919" x2="869" y1="2764" y2="2764"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="962" y="2764">A9</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="919" x2="869" y1="2784" y2="2784"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="972" y="2784">A10</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="919" x2="869" y1="2804" y2="2804"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="972" y="2804">A11</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="919" x2="869" y1="2824" y2="2824"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="972" y="2824">A12</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="919" x2="869" y1="2844" y2="2844"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="972" y="2844">A13</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="919" x2="869" y1="2864" y2="2864"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="972" y="2864">A14</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="919" x2="869" y1="2884" y2="2884"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="972" y="2884">A15</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1069" x2="1119" y1="2584" y2="2584"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1026" y="2584">D0</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1069" x2="1119" y1="2604" y2="2604"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1026" y="2604">D1</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1069" x2="1119" y1="2624" y2="2624"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1026" y="2624">D2</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1069" x2="1119" y1="2644" y2="2644"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1026" y="2644">D3</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1069" x2="1119" y1="2664" y2="2664"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1026" y="2664">D4</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1069" x2="1119" y1="2684" y2="2684"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1026" y="2684">D5</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1069" x2="1119" y1="2704" y2="2704"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1026" y="2704">D6</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1069" x2="1119" y1="2724" y2="2724"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1026" y="2724">D7</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1069" x2="1119" y1="2744" y2="2744"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1026" y="2744">D8</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1069" x2="1119" y1="2764" y2="2764"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1026" y="2764">D9</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1069" x2="1119" y1="2784" y2="2784"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1026" y="2784">D10</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1069" x2="1119" y1="2804" y2="2804"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1026" y="2804">D11</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1069" x2="1119" y1="2824" y2="2824"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1026" y="2824">D12</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1069" x2="1119" y1="2844" y2="2844"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1026" y="2844">D13</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1069" x2="1119" y1="2864" y2="2864"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1026" y="2864">D14</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1069" x2="1119" y1="2884" y2="2884"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1026" y="2884">D15</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="909" x2="869" y1="2934" y2="2934"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="962" y="2934">^EN</text>
<rect fill="#a0c0ff" fill-opacity="0.5" height="420" stroke="#000000" stroke-width="5" width="150" x="919" y="2554"/>
<circle cx="914" cy="2934" fill="none" r="5" stroke="#000000" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="979" y="2544">4</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="879" y="3024">BUS_TRANS16</text>
<circle cx="1549" cy="2334" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1529" cy="2314" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1509" cy="2294" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1489" cy="2274" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1469" cy="2254" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1449" cy="2234" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1429" cy="2214" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1409" cy="2194" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1389" cy="2174" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1369" cy="2154" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1349" cy="2134" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1329" cy="2114" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1309" cy="2094" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1289" cy="2074" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1269" cy="2054" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1249" cy="2034" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1549" cy="1134" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1529" cy="1114" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1509" cy="1094" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1489" cy="1074" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1469" cy="1054" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1449" cy="1034" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1429" cy="1014" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1409" cy="994" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1389" cy="974" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1369" cy="954" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1349" cy="934" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1329" cy="914" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1309" cy="894" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1289" cy="874" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1269" cy="854" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1249" cy="834" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1549" cy="1734" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1529" cy="1714" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1509" cy="1694" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1489" cy="1674" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1469" cy="1654" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1449" cy="1634" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1429" cy="1614" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1409" cy="1594" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1389" cy="1574" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1369" cy="1554" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1349" cy="1534" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1329" cy="1514" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1309" cy="1494" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1289" cy="1474" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1269" cy="1454" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1249" cy="1434" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
</svg>
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<svg height="1357" version="1.1" width="1669" xmlns="http://www.w3.org/2000/svg">
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="768" x2="718" y1="344" y2="344"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="811" y="344">A0</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="768" x2="718" y1="364" y2="364"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="811" y="364">A1</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="768" x2="718" y1="384" y2="384"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="811" y="384">A2</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="768" x2="718" y1="404" y2="404"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="811" y="404">A3</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="768" x2="718" y1="424" y2="424"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="811" y="424">A4</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="768" x2="718" y1="444" y2="444"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="811" y="444">A5</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="768" x2="718" y1="464" y2="464"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="811" y="464">A6</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="768" x2="718" y1="484" y2="484"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="811" y="484">A7</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="768" x2="718" y1="504" y2="504"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="811" y="504">A8</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="768" x2="718" y1="524" y2="524"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="811" y="524">A9</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="768" x2="718" y1="544" y2="544"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="821" y="544">A10</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="768" x2="718" y1="564" y2="564"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="821" y="564">A11</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="768" x2="718" y1="584" y2="584"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="821" y="584">A12</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="768" x2="718" y1="604" y2="604"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="821" y="604">A13</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="768" x2="718" y1="624" y2="624"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="821" y="624">A14</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="768" x2="718" y1="644" y2="644"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="821" y="644">A15</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="918" x2="968" y1="344" y2="344"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="875" y="344">D0</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="918" x2="968" y1="364" y2="364"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="875" y="364">D1</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="918" x2="968" y1="384" y2="384"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="875" y="384">D2</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="918" x2="968" y1="404" y2="404"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="875" y="404">D3</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="918" x2="968" y1="424" y2="424"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="875" y="424">D4</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="918" x2="968" y1="444" y2="444"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="875" y="444">D5</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="918" x2="968" y1="464" y2="464"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="875" y="464">D6</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="918" x2="968" y1="484" y2="484"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="875" y="484">D7</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="918" x2="968" y1="504" y2="504"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="875" y="504">D8</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="918" x2="968" y1="524" y2="524"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="875" y="524">D9</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="918" x2="968" y1="544" y2="544"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="875" y="544">D10</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="918" x2="968" y1="564" y2="564"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="875" y="564">D11</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="918" x2="968" y1="584" y2="584"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="875" y="584">D12</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="918" x2="968" y1="604" y2="604"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="875" y="604">D13</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="918" x2="968" y1="624" y2="624"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="875" y="624">D14</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="918" x2="968" y1="644" y2="644"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="875" y="644">D15</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="758" x2="718" y1="694" y2="694"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="811" y="694">^EN</text>
<rect fill="#a0c0ff" fill-opacity="0.5" height="420" stroke="#000000" stroke-width="5" width="150" x="768" y="314"/>
<circle cx="763" cy="694" fill="none" r="5" stroke="#000000" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="828" y="304">1</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="728" y="784">BUS_TRANS16</text>
<polyline fill="none" points="718 364, 468 364" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="718 384, 468 384" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="718 404, 468 404" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="718 424, 468 424" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="718 444, 468 444" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="718 464, 468 464" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="718 644, 718 484, 468 484" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="968 344, 1168 344, 1318 344" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="968 364, 1168 364, 1318 364" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="968 384, 1168 384, 1318 384" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="968 404, 1168 404, 1318 404" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="968 424, 1168 424, 1318 424" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="968 444, 1168 444, 1318 444" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="968 464, 1168 464, 1318 464" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="968 484, 1168 484, 1318 484" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="968 504, 1168 504, 1318 504" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="968 524, 1168 524, 1318 524" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="968 544, 1168 544, 1318 544" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="968 564, 1168 564, 1318 564" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="968 584, 1168 584, 1318 584" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="968 604, 1168 604, 1318 604" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="968 624, 1168 624, 1318 624" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="968 644, 1168 644, 1318 644" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="1318" x2="1368" y1="344" y2="294"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="1318" x2="1368" y1="364" y2="314"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="1318" x2="1368" y1="384" y2="334"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="1318" x2="1368" y1="404" y2="354"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="1318" x2="1368" y1="424" y2="374"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="1318" x2="1368" y1="444" y2="394"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="1318" x2="1368" y1="464" y2="414"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="1318" x2="1368" y1="484" y2="434"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="1318" x2="1368" y1="504" y2="454"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="1318" x2="1368" y1="524" y2="474"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="1318" x2="1368" y1="544" y2="494"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="1318" x2="1368" y1="564" y2="514"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="1318" x2="1368" y1="584" y2="534"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="1318" x2="1368" y1="604" y2="554"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="1318" x2="1368" y1="624" y2="574"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="1318" x2="1368" y1="644" y2="594"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="418" x2="468" y1="414" y2="364"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="418" x2="468" y1="434" y2="384"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="418" x2="468" y1="454" y2="404"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="418" x2="468" y1="474" y2="424"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="418" x2="468" y1="494" y2="444"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="418" x2="468" y1="514" y2="464"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="418" x2="468" y1="534" y2="484"/>
<polygon fill="#ffff80" points="168 344, 168 319, 293 319, 318 344, 293 369, 168 369, 168 344" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="168" y="344">Instr[7..0]</text>
<polyline fill="none" points="718 344, 468 344" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="418" x2="468" y1="394" y2="344"/>
<polygon fill="#ffff80" points="118 894, 118 869, 243 869, 268 894, 243 919, 118 919, 118 894" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="118" y="894">u\s</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="768" x2="718" y1="894" y2="894"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="811" y="894">A0</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="768" x2="718" y1="914" y2="914"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="811" y="914">A1</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="768" x2="718" y1="934" y2="934"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="811" y="934">A2</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="768" x2="718" y1="954" y2="954"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="811" y="954">A3</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="768" x2="718" y1="974" y2="974"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="811" y="974">A4</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="768" x2="718" y1="994" y2="994"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="811" y="994">A5</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="768" x2="718" y1="1014" y2="1014"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="811" y="1014">A6</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="768" x2="718" y1="1034" y2="1034"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="811" y="1034">A7</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="768" x2="718" y1="1054" y2="1054"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="811" y="1054">A8</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="768" x2="718" y1="1074" y2="1074"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="811" y="1074">A9</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="768" x2="718" y1="1094" y2="1094"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="821" y="1094">A10</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="768" x2="718" y1="1114" y2="1114"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="821" y="1114">A11</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="768" x2="718" y1="1134" y2="1134"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="821" y="1134">A12</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="768" x2="718" y1="1154" y2="1154"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="821" y="1154">A13</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="768" x2="718" y1="1174" y2="1174"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="821" y="1174">A14</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="768" x2="718" y1="1194" y2="1194"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="821" y="1194">A15</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="918" x2="968" y1="894" y2="894"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="875" y="894">D0</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="918" x2="968" y1="914" y2="914"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="875" y="914">D1</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="918" x2="968" y1="934" y2="934"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="875" y="934">D2</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="918" x2="968" y1="954" y2="954"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="875" y="954">D3</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="918" x2="968" y1="974" y2="974"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="875" y="974">D4</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="918" x2="968" y1="994" y2="994"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="875" y="994">D5</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="918" x2="968" y1="1014" y2="1014"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="875" y="1014">D6</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="918" x2="968" y1="1034" y2="1034"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="875" y="1034">D7</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="918" x2="968" y1="1054" y2="1054"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="875" y="1054">D8</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="918" x2="968" y1="1074" y2="1074"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="875" y="1074">D9</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="918" x2="968" y1="1094" y2="1094"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="875" y="1094">D10</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="918" x2="968" y1="1114" y2="1114"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="875" y="1114">D11</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="918" x2="968" y1="1134" y2="1134"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="875" y="1134">D12</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="918" x2="968" y1="1154" y2="1154"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="875" y="1154">D13</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="918" x2="968" y1="1174" y2="1174"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="875" y="1174">D14</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="918" x2="968" y1="1194" y2="1194"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="875" y="1194">D15</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="758" x2="718" y1="1244" y2="1244"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="811" y="1244">^EN</text>
<rect fill="#a0c0ff" fill-opacity="0.5" height="420" stroke="#000000" stroke-width="5" width="150" x="768" y="864"/>
<circle cx="763" cy="1244" fill="none" r="5" stroke="#000000" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="828" y="854">2</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="728" y="1334">BUS_TRANS16</text>
<polyline fill="none" points="718 894, 668 894, 668 344" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="718 914, 658 914, 658 364" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="718 934, 648 934, 648 384" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="718 954, 638 954, 638 404" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="718 974, 628 974, 628 424" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="718 994, 618 994, 618 444" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="718 1014, 608 1014, 608 464" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="718 1034, 598 1034, 598 484" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="418" x2="418" y1="834" y2="894"/>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="418" x2="418" y1="754" y2="694"/>
<circle cx="418" cy="758" fill="none" r="5" stroke="#000000" stroke-width="5"/>
<polygon fill="#ffffff" fill-opacity="0.5" points="368 834, 468 834, 418 764, 368 834" stroke="#000000" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" transform="rotate(-90 382 814)" x="382" y="814">U1</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" transform="rotate(-90 514 834)" x="514" y="834">NOT</text>
<polyline fill="none" points="268 894, 418 894, 418 1204, 418 1244, 718 1244" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="968 894, 988 894, 988 344" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="968 914, 998 914, 998 364" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="968 934, 1008 934, 1008 384" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="968 954, 1018 954, 1018 404" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="968 974, 1028 974, 1028 424" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="968 994, 1038 994, 1038 444" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="968 1014, 1048 1014, 1048 464" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="968 1034, 1058 1034, 1058 484" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="968 1054, 1068 1054, 1068 504" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="968 1074, 1078 1074, 1078 524" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="968 1094, 1088 1094, 1088 544" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="968 1114, 1098 1114, 1098 564" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="968 1134, 1108 1134, 1108 584" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="968 1154, 1118 1154, 1118 604" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="968 1174, 1128 1174, 1128 624" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="968 1194, 1138 1194, 1138 644" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="488" y="344">Instr0</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="488" y="364">Instr1</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="488" y="384">Instr2</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="488" y="404">Instr3</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="488" y="424">Instr4</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="488" y="444">Instr5</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="488" y="464">Instr6</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="488" y="484">Instr7</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="1158" y="344">imm0</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="1158" y="364">imm1</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="1158" y="384">imm2</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="1158" y="404">imm3</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="1158" y="424">imm4</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="1158" y="444">imm5</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="1158" y="464">imm6</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="1158" y="484">imm7</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="1158" y="504">imm8</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="1158" y="524">imm9</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="1158" y="544">imm10</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="1158" y="564">imm11</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="1158" y="584">imm12</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="1158" y="604">imm13</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="1158" y="624">imm14</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="1158" y="644">imm15</text>
<polyline fill="none" points="418 534, 418 344, 318 344" stroke="#000080" stroke-linecap="round" stroke-linejoin="round" stroke-width="20"/>
<polyline fill="none" points="1368 594, 1368 244, 1468 244" stroke="#000080" stroke-linecap="round" stroke-linejoin="round" stroke-width="20"/>
<polygon fill="#ffff80" points="1468 244, 1468 219, 1623 219, 1648 244, 1623 269, 1468 269, 1468 244" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="1468" y="244">imm[15..0]</text>
<text alignment-baseline="after-edge" fill="#000080" font-family="宋体" font-size="25" font-weight="400" text-anchor="start" x="18" y="844">低电平,无符号扩展</text>
<polyline fill="none" points="718 694, 418 694" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="微软雅黑" font-size="90" font-weight="700" text-anchor="start" x="558" y="124">数据位扩展模块</text>
<circle cx="718" cy="484" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="418" cy="894" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="718" cy="504" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="718" cy="524" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="718" cy="544" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="718" cy="564" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="718" cy="584" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="718" cy="604" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="718" cy="624" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1138" cy="644" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1128" cy="624" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1118" cy="604" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1108" cy="584" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1098" cy="564" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1088" cy="544" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1078" cy="524" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1068" cy="504" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1058" cy="484" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1048" cy="464" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1038" cy="444" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1028" cy="424" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1018" cy="404" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1008" cy="384" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="998" cy="364" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="988" cy="344" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="598" cy="484" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="608" cy="464" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="618" cy="444" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="628" cy="424" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="638" cy="404" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="648" cy="384" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="658" cy="364" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="668" cy="344" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
</svg>
添加文件
这个 源代码变更 因为 太大 而不能显示。 你可以 浏览blob
# 说明
16 位 MIPS 多周期微处理器
# 原理图
![raw svg](MIPS.dlsche.svg)
添加文件
这个 源代码变更 因为 太大 而不能显示。 你可以 浏览blob
添加文件
这个 源代码变更 因为 太大 而不能显示。 你可以 浏览blob
添加文件
这个 源代码变更 因为 太大 而不能显示。 你可以 浏览blob
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<project id="73bfb951-3609-4a62-8c77-b373026f1088" name="mips-multi-cycle" version="1">
<files>
<filefolder id="c0a181af-d67c-4dd0-9275-aa277475c77c" name="子模块">
<file relativepath="2mux1.dlsche"/>
<file relativepath="4mux1.dlsche"/>
<file relativepath="alu.dlsche"/>
<file relativepath="regdst_mux.dlsche"/>
<file relativepath="al.dlsche"/>
<file relativepath="8signto16.dlsche"/>
<file relativepath="reg.dlsche"/>
<file relativepath="fsm.dlsche"/>
<file relativepath="multi_mux.dlsche"/>
</filefolder>
<filefolder id="2156f6c8-84d5-409f-859c-fddce752753a" name="存储器映射文件">
<file relativepath="ram.rxm"/>
</filefolder>
<filefolder id="3463ada9-1cc7-4838-ab12-f98af0a12bf2" name="源程序文件">
<file relativepath="ram.asm"/>
<file relativepath="ram.bat"/>
</filefolder>
<file relativepath="MIPS.dlsche"/>
<file relativepath="README.md"/>
</files>
</project>
添加文件
/*******************************************************************************
*******************************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
typedef unsigned char BYTE;
typedef long BOOL;
#define FALSE 0
#define TRUE 1
#define MAX_LINE_LENGTH 256 // 一行代码最多可以有多少个字符
#define MAX_LINE_COUNT 1024 // 源代码文件最多可以有多少行
#define MAX_SYMBOL_LENGTH 64 // 一个符号最多可以包含多少个字符
#define MAX_SYMBOL_COUNT 256 // 源代码文件中最多可以包含多少个符号
#define MAX_INSTR_KEY_WORD_LENGTH 32 // 一个指令关键字最多可以包含多少个字符
#ifndef MAX_PATH
#define MAX_PATH 256 // 文件路径最多可以包含多少个字符
#endif
// 代码行数据库。记录源代码文件中所有代码行的信息(包括注释行、空行)
struct LINE_RECORD
{
char line_string[MAX_LINE_LENGTH]; // 代码行的内容
unsigned long line_num; // 行号
unsigned long address; // 此行代码转换的机器码在映像文件中的地址(偏移)
int machine_code_count; // 此行代码转换的机器码的字节数量
unsigned long flag; // 代码行标志位,32位
};
struct LINE_RECORD line_database[MAX_LINE_COUNT] = {0};
int line_count = 0;
int machine_code_line_count = 0; // 记录产生了机器码的代码行的数量
// 在此定义所有的代码行标志位。注意,代码行标志位是按位或的关系。
#define LF_INSTRUCTION 0x00000001 // 代码行标志位的最低位是1,表示此行是一条指令,否则表示此行是数据
// 重定位表。如果指令中使用了标号、变量名等符号,在第一次扫描时无法确定他们的地址,需要
// 在第二次扫描时进行重定位。
struct REALLOCATE
{
unsigned long address; // 第一次扫描时,在这里记录了需要重定位的机器码的地址(偏移),
// 第二次扫描时,根据符号的地址进行重定位。
char symbol_name[MAX_SYMBOL_LENGTH]; // 需要重定位的符号名称。
int line_num; // 行号。
char instr_key_word[MAX_INSTR_KEY_WORD_LENGTH]; // 指令关键字
};
struct REALLOCATE reallocate_table[MAX_LINE_COUNT] = {0};
int reallocate_count = 0;
// 符号表。符号包括源代码中的标号、变量名。
struct SYMBOL
{
char name[MAX_SYMBOL_LENGTH]; // 符号名称
unsigned long address; // 符号表示的地址。重定位时需要用到。
int machine_code_count; // 符号生成的机器码的数量(以字节为单位)。
int line_num; // 行号
int ref_count; // 引用计数
};
struct SYMBOL symbol_table[MAX_SYMBOL_COUNT] = {0};
int symbol_count = 0;
// 汇编过程的状态
enum
{
AS_BEGIN // 起始状态。在遇到代码段名称前,处于此状态
,AS_TEXT // 正在处理代码段。遇到代码段名称后,遇到数据的名称前,处于此状态
,AS_DATA // 正在处理数据段。遇到数据段名称后,处于此状态
};
unsigned long assembler_state = AS_BEGIN;
//
// 在下面定义所有的关键字
//
// 段名称
const char* code_section_keyword = ".text"; // 代码段标志
char const* data_section_keyword = ".data"; // 数据段标志
// 指令名称
// R型指令
const char* or_instruction_keyword = "or";
const char* and_instruction_keyword = "and";
const char* add_instruction_keyword = "add";
const char* sub_instruction_keyword = "sub";
const char* sllv_instruction_keyword = "sllv";
const char* srlv_instruction_keyword = "srlv";
const char* srav_instruction_keyword = "srav";
const char* slt_instruction_keyword = "slt";
const char* jr_instruction_keyword = "jr"; // jr rs 跳转寄存器,PC=[rs]
const char* jalr_instruction_keyword = "jalr"; // jalr rs 跳转和链接寄存器,$ra = PC+2,PC=[rs]
const char* sll_instruction_keyword = "sll";
const char* srl_instruction_keyword = "srl";
const char* sra_instruction_keyword = "sra";
const char* xor_instruction_keyword = "xor";
const char* nor_instruction_keyword = "nor";
// I型指令
const char* ori_instruction_keyword = "ori";
const char* andi_instruction_keyword = "andi";
const char* addi_instruction_keyword = "addi";
const char* lw_instruction_keyword = "lw";
const char* sw_instruction_keyword = "sw";
const char* beq_instruction_keyword = "beq";
const char* bne_instruction_keyword = "bne";
const char* bgt_instruction_keyword = "bgt";
const char* bltz_instruction_keyword = "bltz";// bltz rs, lable 如果rs小于0则转移
const char* bgez_instruction_keyword = "bgez";// bgez rs, lable 如果rs大于或等于0则转移
// J型指令
const char* jump_instruction_keyword = "jump";
const char* jal_instruction_keyword = "jal"; // jal lable 跳转并链接,$ra = PC+2,PC=跳转目标地址
// 通用寄存器名称
const char* r0_register_keyword = "$r0";
const char* r1_register_keyword = "$r1";
const char* r2_register_keyword = "$r2";
const char* r3_register_keyword = "$r3";
const char* ra_register_keyword = "$ra"; // 返回地址寄存器
const char* t0_register_keyword = "$t0"; // 常数0寄存器
const char* delimit_char = "\n\t\r "; // 需要忽略的空白字符
const char* delimit_char_comma = "\n\t\r, "; // 需要忽略的空白字符,包括英文逗号
// 汇编产生的机器码
#define MAX_MACHINE_CODE 1024
BYTE machine_code[MAX_MACHINE_CODE];
unsigned long machine_code_address = 0;
unsigned long machine_code_old_address = 0;
const char* assembly_file_name = NULL; // 汇编文件路径
const char* target_file_name = NULL; // 目标文件路径
const char* list_file_name = NULL; // 列表文件路径
const char* dbg_file_name = NULL; // 调试信息文件路径
const unsigned long dbg_file_magic = 58;
const unsigned long dbg_file_version = 1;
// 输出汇编过程中发现的语法错误信息
void error_msg(const char* error_msg, int line_num)
{
if(line_num >= 1)
{
printf("%s:%d: error: %s\n", assembly_file_name, line_num, error_msg);
}
else
{
printf("%s: error: %s\n", assembly_file_name, error_msg);
}
exit(1);
}
char formated_msg[1024]; // 将格式化后的错误信息放在此字符串中。
void error_msg_warning_instr(const char* instruction_name, int line_num)
{
sprintf(formated_msg, "%s 指令在微处理器还没有实现,不能正确执行。", instruction_name);
error_msg(formated_msg, line_num);
}
void error_msg_miss_op(const char* instruction_name, int line_num)
{
sprintf(formated_msg, "%s 指令缺少操作数。", instruction_name);
error_msg(formated_msg, line_num);
}
void error_msg_wrong_op(const char* instruction_name, int line_num)
{
sprintf(formated_msg, "%s 指令不支持这样的操作数。", instruction_name);
error_msg(formated_msg, line_num);
}
void error_msg_same_symbol(const char* symbol, int line_num, int ref_line_num)
{
sprintf(formated_msg, "符号 %s 重复定义。参见第 %d 行。", symbol, ref_line_num);
error_msg(formated_msg, line_num);
}
void error_msg_keyword_symbol(const char* symbol, int line_num)
{
sprintf(formated_msg, "不能使用保留的关键字 %s 作为符号名称。", symbol);
error_msg(formated_msg, line_num);
}
void error_msg_wrong_data(const char* data, int line_num)
{
sprintf(formated_msg, "%s 不是有效的数据。", data);
error_msg(formated_msg, line_num);
}
// 输出汇编过程中发现的警告信息
void warning_msg(const char* warning_msg, int line_num)
{
if(line_num >= 1)
{
printf("%s:%d: warning: %s\n", assembly_file_name, line_num, warning_msg);
}
else
{
printf("%s: warning: %s\n", assembly_file_name, warning_msg);
}
}
void warning_msg_invalid_line(int line_num)
{
warning_msg("忽略无效的代码行。", line_num);
}
void warning_msg_unref_symbol(const char* symbol, int line_num)
{
sprintf(formated_msg, "符号 %s 未被引用。", symbol);
warning_msg(formated_msg, line_num);
}
// 判断是否是立即数。如果是数字开头,或者是负号开头的,就认为是立即数。
int is_immediate(const char* token)
{
return (isdigit(token[0]) || '-' == token[0]) ? 1 : 0;
}
// 指令操作数类型
enum
{
OT_REGISTER_R0 // $r0
,OT_REGISTER_R1 // $r1
,OT_REGISTER_R2 // $r2
,OT_REGISTER_R3 // $r3
,OT_IMMEDIATE // 立即数
,OT_SYMBOL // 符号
};
// 得到指令操作数的类型
unsigned long get_operand_type(const char* op)
{
unsigned long op_type;
if(stricmp(op, r0_register_keyword) == 0)
{
op_type = OT_REGISTER_R0;
}
else if(stricmp(op, r1_register_keyword) == 0)
{
op_type = OT_REGISTER_R1;
}
else if(stricmp(op, r2_register_keyword) == 0)
{
op_type = OT_REGISTER_R2;
}
else if(stricmp(op, r3_register_keyword) == 0)
{
op_type = OT_REGISTER_R3;
}
else if(is_immediate(op))
{
op_type = OT_IMMEDIATE;
}
else
{
op_type = OT_SYMBOL;
}
return op_type;
}
// 根据 r? 寄存器,得到一个机器码
char get_machine_code_from_r(unsigned long op_type)
{
return (char)(op_type - OT_REGISTER_R0);
}
// 根据立即数得到一个机器码。注意,允许使用负数,所以返回值是带符号的 8 位 char。
char get_machine_code_from_immediate(const char* immediate)
{
char* end;
int start_index = (immediate[0] == '-' ? 1 : 0);
int base = (immediate[start_index] == '0' && (immediate[start_index + 1] == 'x' || immediate[start_index + 1] == 'X')) ? 16 : 10;
return (char)strtol(immediate, &end, base);
}
// 向重定位表中添加一个重定位信息
void add_reallocate(const char* symbol, int line_num, const char* instr_key_word)
{
reallocate_table[reallocate_count].address = machine_code_address;
strcpy(reallocate_table[reallocate_count].symbol_name, symbol);
strcpy(reallocate_table[reallocate_count].instr_key_word, instr_key_word);
reallocate_table[reallocate_count].line_num = line_num;
reallocate_count++;
}
// 判断一个操作数是否是lw或sw指令的第二个操作数类型,立即数表示地址偏移,可正可负
int is_lw_sw_instr_operand(const char* op)
{
int i;
// 最后一个字符必须是后括号
if (op[strlen(op) - 1] != ')')
{
return 0;
}
// 倒数第二个字符必须是0,1,2,3
if (op[strlen(op) - 2] != '0'
&& op[strlen(op) - 2] != '1'
&& op[strlen(op) - 2] != '2'
&& op[strlen(op) - 2] != '3')
{
return 0;
}
// 倒数第三个字符必须是r
if (op[strlen(op) - 3] != 'r')
{
return 0;
}
// 倒数第四个字符必须是$
if (op[strlen(op) - 4] != '$')
{
return 0;
}
// 倒数第五个字符必须是'('
if (op[strlen(op) - 5] != '(')
{
return 0;
}
// 第2个到倒数第6个字符都必须是数字
// 第一个字符可以为‘-’,表示负数
if (op[0] == '-')
{
for(i=1; i<(int)strlen(op)-5; i++)
{
if(!isdigit(op[i]))
{
return 0;
}
}
}
else
{
for(i=0; i<(int)strlen(op)-5; i++)
{
if(!isdigit(op[i]))
{
return 0;
}
}
}
return 1;
}
// 根据 r? 寄存器,得到一个机器码
char get_machine_code_from_operand(const char* operand)
{
if (operand[strlen(operand) - 2] == '0')
{
return (char)0;
}
else if (operand[strlen(operand) - 2] == '1')
{
return (char)1;
}
else if (operand[strlen(operand) - 2] == '2')
{
return (char)2;
}
else if (operand[strlen(operand) - 2] == '3')
{
return (char)3;
}
else
{
return (char)(-1);
}
}
//////////////////////////////////////////////////////////////////////////
// R型指令
//
// or $rd, $rs, $rt
void parse_or(int line_num)
{
char *op1, *op2, *op3;
char rs, rt, rd;
unsigned long op1_type, op2_type, op3_type;
if(assembler_state != AS_TEXT)
{
warning_msg_invalid_line(line_num);
return;
}
op1 = strtok(NULL, delimit_char_comma);
op2 = strtok(NULL, delimit_char_comma);
op3 = strtok(NULL, delimit_char);
if(NULL == op1 || NULL == op2 || NULL == op3)
{
error_msg_miss_op(or_instruction_keyword, line_num);
}
op1_type = get_operand_type(op1);
op2_type = get_operand_type(op2);
op3_type = get_operand_type(op3);
if(op1_type >= OT_REGISTER_R0
&& op1_type <= OT_REGISTER_R3
&& op2_type >= OT_REGISTER_R0
&& op2_type <= OT_REGISTER_R3
&& op3_type >= OT_REGISTER_R0
&& op3_type <= OT_REGISTER_R3)
{
// 15~12共4位操作码都是0
// 11~10,2位rs寄存器编码
rs = get_machine_code_from_r(op2_type);
rs = rs << 2;
// 9~8,2位rt寄存器编码
rt = get_machine_code_from_r(op3_type);
machine_code[machine_code_address] = rs | rt;
machine_code_address++;
// 7~6,2位rd寄存器编码
rd = get_machine_code_from_r(op1_type);
rd = rd << 6;
// 2~0,3位运算方式编码
machine_code[machine_code_address] = rd;
machine_code_address++;
}
else
{
error_msg_wrong_op(or_instruction_keyword, line_num);
}
//
// 在代码行数据库中,标记此行是一个指令行
//
line_database[line_count].flag |= LF_INSTRUCTION;
}
// and $rd, $rs, $rt
void parse_and(int line_num)
{
char *op1, *op2, *op3;
char rs, rt, rd;
unsigned long op1_type, op2_type, op3_type;
if(assembler_state != AS_TEXT)
{
warning_msg_invalid_line(line_num);
return;
}
op1 = strtok(NULL, delimit_char_comma);
op2 = strtok(NULL, delimit_char_comma);
op3 = strtok(NULL, delimit_char);
if(NULL == op1 || NULL == op2 || NULL == op3)
{
error_msg_miss_op(and_instruction_keyword, line_num);
}
op1_type = get_operand_type(op1);
op2_type = get_operand_type(op2);
op3_type = get_operand_type(op3);
if(op1_type >= OT_REGISTER_R0
&& op1_type <= OT_REGISTER_R3
&& op2_type >= OT_REGISTER_R0
&& op2_type <= OT_REGISTER_R3
&& op3_type >= OT_REGISTER_R0
&& op3_type <= OT_REGISTER_R3)
{
// 15~12共4位操作码都是0
// 11~10,2位rs寄存器编码
rs = get_machine_code_from_r(op2_type);
rs = rs << 2;
// 9~8,2位rt寄存器编码
rt = get_machine_code_from_r(op3_type);
machine_code[machine_code_address] = rs | rt;
machine_code_address++;
// 7~6,2位rd寄存器编码
rd = get_machine_code_from_r(op1_type);
rd = rd << 6;
// 2~0,3位运算方式编码
machine_code[machine_code_address] = rd | 0x01;
machine_code_address++;
}
else
{
error_msg_wrong_op(and_instruction_keyword, line_num);
}
//
// 在代码行数据库中,标记此行是一个指令行
//
line_database[line_count].flag |= LF_INSTRUCTION;
}
// add $rd, $rs, $rt
void parse_add(int line_num)
{
char *op1, *op2, *op3;
char rs, rt, rd;
unsigned long op1_type, op2_type, op3_type;
if(assembler_state != AS_TEXT)
{
warning_msg_invalid_line(line_num);
return;
}
op1 = strtok(NULL, delimit_char_comma);
op2 = strtok(NULL, delimit_char_comma);
op3 = strtok(NULL, delimit_char);
if(NULL == op1 || NULL == op2 || NULL == op3)
{
error_msg_miss_op(add_instruction_keyword, line_num);
}
op1_type = get_operand_type(op1);
op2_type = get_operand_type(op2);
op3_type = get_operand_type(op3);
if(op1_type >= OT_REGISTER_R0
&& op1_type <= OT_REGISTER_R3
&& op2_type >= OT_REGISTER_R0
&& op2_type <= OT_REGISTER_R3
&& op3_type >= OT_REGISTER_R0
&& op3_type <= OT_REGISTER_R3)
{
// 15~12共4位操作码都是0
// 11~10,2位rs寄存器编码
rs = get_machine_code_from_r(op2_type);
rs = rs << 2;
// 9~8,2位rt寄存器编码
rt = get_machine_code_from_r(op3_type);
machine_code[machine_code_address] = rs | rt;
machine_code_address++;
// 7~6,2位rd寄存器编码
rd = get_machine_code_from_r(op1_type);
rd = rd << 6;
// 2~0,3位运算方式编码
machine_code[machine_code_address] = rd | 0x02;
machine_code_address++;
}
else
{
error_msg_wrong_op(add_instruction_keyword, line_num);
}
//
// 在代码行数据库中,标记此行是一个指令行
//
line_database[line_count].flag |= LF_INSTRUCTION;
}
// sub $rd, $rs, $rt
void parse_sub(int line_num)
{
char *op1, *op2, *op3;
char rs, rt, rd;
unsigned long op1_type, op2_type, op3_type;
if(assembler_state != AS_TEXT)
{
warning_msg_invalid_line(line_num);
return;
}
op1 = strtok(NULL, delimit_char_comma);
op2 = strtok(NULL, delimit_char_comma);
op3 = strtok(NULL, delimit_char);
if(NULL == op1 || NULL == op2 || NULL == op3)
{
error_msg_miss_op(sub_instruction_keyword, line_num);
}
op1_type = get_operand_type(op1);
op2_type = get_operand_type(op2);
op3_type = get_operand_type(op3);
if(op1_type >= OT_REGISTER_R0
&& op1_type <= OT_REGISTER_R3
&& op2_type >= OT_REGISTER_R0
&& op2_type <= OT_REGISTER_R3
&& op3_type >= OT_REGISTER_R0
&& op3_type <= OT_REGISTER_R3)
{
// 15~12共4位操作码都是0
// 11~10,2位rs寄存器编码
rs = get_machine_code_from_r(op2_type);
rs = rs << 2;
// 9~8,2位rt寄存器编码
rt = get_machine_code_from_r(op3_type);
machine_code[machine_code_address] = rs | rt;
machine_code_address++;
// 7~6,2位rd寄存器编码
rd = get_machine_code_from_r(op1_type);
rd = rd << 6;
// 2~0,3位运算方式编码
machine_code[machine_code_address] = rd | 0x03;
machine_code_address++;
}
else
{
error_msg_wrong_op(sub_instruction_keyword, line_num);
}
//
// 在代码行数据库中,标记此行是一个指令行
//
line_database[line_count].flag |= LF_INSTRUCTION;
}
// sllv $rd, $rs, $rt
void parse_sllv(int line_num)
{
char *op1, *op2, *op3;
char rs, rt, rd;
unsigned long op1_type, op2_type, op3_type;
if(assembler_state != AS_TEXT)
{
warning_msg_invalid_line(line_num);
return;
}
op1 = strtok(NULL, delimit_char_comma);
op2 = strtok(NULL, delimit_char_comma);
op3 = strtok(NULL, delimit_char);
if(NULL == op1 || NULL == op2 || NULL == op3)
{
error_msg_miss_op(sllv_instruction_keyword, line_num);
}
op1_type = get_operand_type(op1);
op2_type = get_operand_type(op2);
op3_type = get_operand_type(op3);
if(op1_type >= OT_REGISTER_R0
&& op1_type <= OT_REGISTER_R3
&& op2_type >= OT_REGISTER_R0
&& op2_type <= OT_REGISTER_R3
&& op3_type >= OT_REGISTER_R0
&& op3_type <= OT_REGISTER_R3)
{
// 15~12共4位操作码都是0
// 11~10,2位rs寄存器编码
rs = get_machine_code_from_r(op2_type);
rs = rs << 2;
// 9~8,2位rt寄存器编码
rt = get_machine_code_from_r(op3_type);
machine_code[machine_code_address] = rs | rt;
machine_code_address++;
// 7~6,2位rd寄存器编码
rd = get_machine_code_from_r(op1_type);
rd = rd << 6;
// 2~0,3位运算方式编码
machine_code[machine_code_address] = rd | 0x04;
machine_code_address++;
}
else
{
error_msg_wrong_op(sllv_instruction_keyword, line_num);
}
//
// 在代码行数据库中,标记此行是一个指令行
//
line_database[line_count].flag |= LF_INSTRUCTION;
}
// srlv $rd, $rs, $rt
void parse_srlv(int line_num)
{
char *op1, *op2, *op3;
char rs, rt, rd;
unsigned long op1_type, op2_type, op3_type;
if(assembler_state != AS_TEXT)
{
warning_msg_invalid_line(line_num);
return;
}
op1 = strtok(NULL, delimit_char_comma);
op2 = strtok(NULL, delimit_char_comma);
op3 = strtok(NULL, delimit_char);
if(NULL == op1 || NULL == op2 || NULL == op3)
{
error_msg_miss_op(srlv_instruction_keyword, line_num);
}
op1_type = get_operand_type(op1);
op2_type = get_operand_type(op2);
op3_type = get_operand_type(op3);
if(op1_type >= OT_REGISTER_R0
&& op1_type <= OT_REGISTER_R3
&& op2_type >= OT_REGISTER_R0
&& op2_type <= OT_REGISTER_R3
&& op3_type >= OT_REGISTER_R0
&& op3_type <= OT_REGISTER_R3)
{
// 15~12共4位操作码都是0
// 11~10,2位rs寄存器编码
rs = get_machine_code_from_r(op2_type);
rs = rs << 2;
// 9~8,2位rt寄存器编码
rt = get_machine_code_from_r(op3_type);
machine_code[machine_code_address] = rs | rt;
machine_code_address++;
// 7~6,2位rd寄存器编码
rd = get_machine_code_from_r(op1_type);
rd = rd << 6;
// 2~0,3位运算方式编码
machine_code[machine_code_address] = rd | 0x05;
machine_code_address++;
}
else
{
error_msg_wrong_op(srlv_instruction_keyword, line_num);
}
//
// 在代码行数据库中,标记此行是一个指令行
//
line_database[line_count].flag |= LF_INSTRUCTION;
}
// srav $rd, $rs, $rt
void parse_srav(int line_num)
{
char *op1, *op2, *op3;
char rs, rt, rd;
unsigned long op1_type, op2_type, op3_type;
if(assembler_state != AS_TEXT)
{
warning_msg_invalid_line(line_num);
return;
}
op1 = strtok(NULL, delimit_char_comma);
op2 = strtok(NULL, delimit_char_comma);
op3 = strtok(NULL, delimit_char);
if(NULL == op1 || NULL == op2 || NULL == op3)
{
error_msg_miss_op(srav_instruction_keyword, line_num);
}
op1_type = get_operand_type(op1);
op2_type = get_operand_type(op2);
op3_type = get_operand_type(op3);
if(op1_type >= OT_REGISTER_R0
&& op1_type <= OT_REGISTER_R3
&& op2_type >= OT_REGISTER_R0
&& op2_type <= OT_REGISTER_R3
&& op3_type >= OT_REGISTER_R0
&& op3_type <= OT_REGISTER_R3)
{
// 15~12共4位操作码都是0
// 11~10,2位rs寄存器编码
rs = get_machine_code_from_r(op2_type);
rs = rs << 2;
// 9~8,2位rt寄存器编码
rt = get_machine_code_from_r(op3_type);
machine_code[machine_code_address] = rs | rt;
machine_code_address++;
// 7~6,2位rd寄存器编码
rd = get_machine_code_from_r(op1_type);
rd = rd << 6;
// 2~0,3位运算方式编码
machine_code[machine_code_address] = rd | 0x06;
machine_code_address++;
}
else
{
error_msg_wrong_op(srav_instruction_keyword, line_num);
}
//
// 在代码行数据库中,标记此行是一个指令行
//
line_database[line_count].flag |= LF_INSTRUCTION;
}
// slt $rd, $rs, $rt
void parse_slt(int line_num)
{
char *op1, *op2, *op3;
char rs, rt, rd;
unsigned long op1_type, op2_type, op3_type;
if(assembler_state != AS_TEXT)
{
warning_msg_invalid_line(line_num);
return;
}
op1 = strtok(NULL, delimit_char_comma);
op2 = strtok(NULL, delimit_char_comma);
op3 = strtok(NULL, delimit_char);
if(NULL == op1 || NULL == op2 || NULL == op3)
{
error_msg_miss_op(slt_instruction_keyword, line_num);
}
op1_type = get_operand_type(op1);
op2_type = get_operand_type(op2);
op3_type = get_operand_type(op3);
if(op1_type >= OT_REGISTER_R0
&& op1_type <= OT_REGISTER_R3
&& op2_type >= OT_REGISTER_R0
&& op2_type <= OT_REGISTER_R3
&& op3_type >= OT_REGISTER_R0
&& op3_type <= OT_REGISTER_R3)
{
// 15~12共4位操作码都是0
// 11~10,2位rs寄存器编码
rs = get_machine_code_from_r(op2_type);
rs = rs << 2;
// 9~8,2位rt寄存器编码
rt = get_machine_code_from_r(op3_type);
machine_code[machine_code_address] = rs | rt;
machine_code_address++;
// 7~6,2位rd寄存器编码
rd = get_machine_code_from_r(op1_type);
rd = rd << 6;
// 2~0,3位运算方式编码
machine_code[machine_code_address] = rd | 0x07;
machine_code_address++;
}
else
{
error_msg_wrong_op(slt_instruction_keyword, line_num);
}
//
// 在代码行数据库中,标记此行是一个指令行
//
line_database[line_count].flag |= LF_INSTRUCTION;
}
// xor $rd, $rs, $rt
void parse_xor(int line_num)
{
char *op1, *op2, *op3;
char rs, rt, rd;
unsigned long op1_type, op2_type, op3_type;
if(assembler_state != AS_TEXT)
{
warning_msg_invalid_line(line_num);
return;
}
op1 = strtok(NULL, delimit_char_comma);
op2 = strtok(NULL, delimit_char_comma);
op3 = strtok(NULL, delimit_char);
if(NULL == op1 || NULL == op2 || NULL == op3)
{
error_msg_miss_op(xor_instruction_keyword, line_num);
}
op1_type = get_operand_type(op1);
op2_type = get_operand_type(op2);
op3_type = get_operand_type(op3);
if(op1_type >= OT_REGISTER_R0
&& op1_type <= OT_REGISTER_R3
&& op2_type >= OT_REGISTER_R0
&& op2_type <= OT_REGISTER_R3
&& op3_type >= OT_REGISTER_R0
&& op3_type <= OT_REGISTER_R3)
{
// 15~12共4位操作码都是0
// 11~10,2位rs寄存器编码
rs = get_machine_code_from_r(op2_type);
rs = rs << 2;
// 9~8,2位rt寄存器编码
rt = get_machine_code_from_r(op3_type);
machine_code[machine_code_address] = rs | rt;
machine_code_address++;
// 7~6,2位rd寄存器编码
rd = get_machine_code_from_r(op1_type);
rd = rd << 6;
// 3~0,4位运算方式编码
machine_code[machine_code_address] = rd | 0x08;
machine_code_address++;
}
else
{
error_msg_wrong_op(xor_instruction_keyword, line_num);
}
//
// 在代码行数据库中,标记此行是一个指令行
//
line_database[line_count].flag |= LF_INSTRUCTION;
}
// nor $rd, $rs, $rt
void parse_nor(int line_num)
{
char *op1, *op2, *op3;
char rs, rt, rd;
unsigned long op1_type, op2_type, op3_type;
if(assembler_state != AS_TEXT)
{
warning_msg_invalid_line(line_num);
return;
}
op1 = strtok(NULL, delimit_char_comma);
op2 = strtok(NULL, delimit_char_comma);
op3 = strtok(NULL, delimit_char);
if(NULL == op1 || NULL == op2 || NULL == op3)
{
error_msg_miss_op(nor_instruction_keyword, line_num);
}
op1_type = get_operand_type(op1);
op2_type = get_operand_type(op2);
op3_type = get_operand_type(op3);
if(op1_type >= OT_REGISTER_R0
&& op1_type <= OT_REGISTER_R3
&& op2_type >= OT_REGISTER_R0
&& op2_type <= OT_REGISTER_R3
&& op3_type >= OT_REGISTER_R0
&& op3_type <= OT_REGISTER_R3)
{
// 15~12共4位操作码都是0
// 11~10,2位rs寄存器编码
rs = get_machine_code_from_r(op2_type);
rs = rs << 2;
// 9~8,2位rt寄存器编码
rt = get_machine_code_from_r(op3_type);
machine_code[machine_code_address] = rs | rt;
machine_code_address++;
// 7~6,2位rd寄存器编码
rd = get_machine_code_from_r(op1_type);
rd = rd << 6;
// 3~0,4位运算方式编码
machine_code[machine_code_address] = rd | 0x09;
machine_code_address++;
}
else
{
error_msg_wrong_op(nor_instruction_keyword, line_num);
}
//
// 在代码行数据库中,标记此行是一个指令行
//
line_database[line_count].flag |= LF_INSTRUCTION;
}
// jr $rs
void parse_jr(int line_num)
{
char *op;
char rs;
unsigned long op_type;
if(assembler_state != AS_TEXT)
{
warning_msg_invalid_line(line_num);
return;
}
op = strtok(NULL, delimit_char_comma);
if(NULL == op)
{
error_msg_miss_op(jr_instruction_keyword, line_num);
}
op_type = get_operand_type(op);
if(op_type >= OT_REGISTER_R0 && op_type <= OT_REGISTER_R3 )
{
// 15~12共4位操作码表示十进制数1
// 11~10,2位rs寄存器编码
rs = get_machine_code_from_r(op_type);
rs = rs << 2;
machine_code[machine_code_address] = 0x10 | rs;
machine_code_address++;
// 低8位
machine_code[machine_code_address] = 0x00;
machine_code_address++;
}
else
{
error_msg_wrong_op(jr_instruction_keyword, line_num);
}
//
// 在代码行数据库中,标记此行是一个指令行
//
line_database[line_count].flag |= LF_INSTRUCTION;
}
// jalr $rs
void parse_jalr(int line_num)
{
char *op;
char rs;
unsigned long op_type;
if(assembler_state != AS_TEXT)
{
warning_msg_invalid_line(line_num);
return;
}
op = strtok(NULL, delimit_char_comma);
if(NULL == op)
{
error_msg_miss_op(jalr_instruction_keyword, line_num);
}
op_type = get_operand_type(op);
if(op_type >= OT_REGISTER_R0 && op_type <= OT_REGISTER_R3 )
{
// 15~12共4位操作码表示十进制数2
// 11~10,2位rs寄存器编码
rs = get_machine_code_from_r(op_type);
rs = rs << 2;
machine_code[machine_code_address] = 0x20 | rs;
machine_code_address++;
// 低8位
machine_code[machine_code_address] = 0x00;
machine_code_address++;
}
else
{
error_msg_wrong_op(jalr_instruction_keyword, line_num);
}
//
// 在代码行数据库中,标记此行是一个指令行
//
line_database[line_count].flag |= LF_INSTRUCTION;
}
// sll $rd, $rt, shamt
void parse_sll(int line_num)
{
char *op1, *op2, *op3;
char rd, rt, shamt;
unsigned long op1_type, op2_type, op3_type;
if(assembler_state != AS_TEXT)
{
warning_msg_invalid_line(line_num);
return;
}
op1 = strtok(NULL, delimit_char_comma);
op2 = strtok(NULL, delimit_char_comma);
op3 = strtok(NULL, delimit_char);
if(NULL == op1 || NULL == op2 || NULL == op3)
{
error_msg_miss_op(sll_instruction_keyword, line_num);
}
op1_type = get_operand_type(op1);
op2_type = get_operand_type(op2);
op3_type = get_operand_type(op3);
if(op1_type >= OT_REGISTER_R0
&& op1_type <= OT_REGISTER_R3
&& op2_type >= OT_REGISTER_R0
&& op2_type <= OT_REGISTER_R3
&& op3_type == OT_IMMEDIATE)
{
// 15~12共4位操作码表示十进制12
// 9~8,2位rt寄存器编码
rt = get_machine_code_from_r(op2_type);
machine_code[machine_code_address] = 0xC0 | rt;
machine_code_address++;
// 7~6,2位rd寄存器编码
rd = get_machine_code_from_r(op1_type);
rd = rd << 6;
// 5~4,2位编码移位数目
shamt = get_machine_code_from_immediate(op3);
// 3~0,4位运算方式编码
machine_code[machine_code_address] = rd | shamt | 0x04;
machine_code_address++;
}
else
{
error_msg_wrong_op(sll_instruction_keyword, line_num);
}
//
// 在代码行数据库中,标记此行是一个指令行
//
line_database[line_count].flag |= LF_INSTRUCTION;
}
// srl $rd, $rt, shamt
void parse_srl(int line_num)
{
char *op1, *op2, *op3;
char rd, rt, shamt;
unsigned long op1_type, op2_type, op3_type;
if(assembler_state != AS_TEXT)
{
warning_msg_invalid_line(line_num);
return;
}
op1 = strtok(NULL, delimit_char_comma);
op2 = strtok(NULL, delimit_char_comma);
op3 = strtok(NULL, delimit_char);
if(NULL == op1 || NULL == op2 || NULL == op3)
{
error_msg_miss_op(srl_instruction_keyword, line_num);
}
op1_type = get_operand_type(op1);
op2_type = get_operand_type(op2);
op3_type = get_operand_type(op3);
if(op1_type >= OT_REGISTER_R0
&& op1_type <= OT_REGISTER_R3
&& op2_type >= OT_REGISTER_R0
&& op2_type <= OT_REGISTER_R3
&& op3_type == OT_IMMEDIATE)
{
// 15~12共4位操作码表示十进制13
// 9~8,2位rt寄存器编码
rt = get_machine_code_from_r(op2_type);
machine_code[machine_code_address] = 0xD0 | rt;
machine_code_address++;
// 7~6,2位rd寄存器编码
rd = get_machine_code_from_r(op1_type);
rd = rd << 6;
// 5~4,2位编码移位数目
shamt = get_machine_code_from_immediate(op3);
// 3~0,4位运算方式编码
machine_code[machine_code_address] = rd | shamt | 0x05;
machine_code_address++;
}
else
{
error_msg_wrong_op(srl_instruction_keyword, line_num);
}
//
// 在代码行数据库中,标记此行是一个指令行
//
line_database[line_count].flag |= LF_INSTRUCTION;
}
//////////////////////////////////////////////////////////////////////////
// I型指令
//
// ori $rt, $rs, imm
void parse_ori(int line_num)
{
char *op1, *op2, *op3;
char rs, rt;
unsigned long op1_type, op2_type, op3_type;
if(assembler_state != AS_TEXT)
{
warning_msg_invalid_line(line_num);
return;
}
op1 = strtok(NULL, delimit_char_comma);
op2 = strtok(NULL, delimit_char_comma);
op3 = strtok(NULL, delimit_char);
if(NULL == op1 || NULL == op2 || NULL == op3)
{
error_msg_miss_op(ori_instruction_keyword, line_num);
}
op1_type = get_operand_type(op1);
op2_type = get_operand_type(op2);
op3_type = get_operand_type(op3);
if(op1_type >= OT_REGISTER_R0
&& op1_type <= OT_REGISTER_R3
&& op2_type >= OT_REGISTER_R0
&& op2_type <= OT_REGISTER_R3
&& op3_type == OT_IMMEDIATE)
{
// 15~12共4位操作码
// 11~10,2位rs寄存器编码
rs = get_machine_code_from_r(op2_type);
rs = rs << 2;
// 9~8,2位rt寄存器编码
rt = get_machine_code_from_r(op1_type);
machine_code[machine_code_address] = 0x30 | rs | rt;
machine_code_address++;
// 7~0,8位立即数
machine_code[machine_code_address] = get_machine_code_from_immediate(op3);
machine_code_address++;
}
else
{
error_msg_wrong_op(ori_instruction_keyword, line_num);
}
//
// 在代码行数据库中,标记此行是一个指令行
//
line_database[line_count].flag |= LF_INSTRUCTION;
}
// andi $rt, $rs, imm
void parse_andi(int line_num)
{
char *op1, *op2, *op3;
char rs, rt;
unsigned long op1_type, op2_type, op3_type;
if(assembler_state != AS_TEXT)
{
warning_msg_invalid_line(line_num);
return;
}
op1 = strtok(NULL, delimit_char_comma);
op2 = strtok(NULL, delimit_char_comma);
op3 = strtok(NULL, delimit_char);
if(NULL == op1 || NULL == op2 || NULL == op3)
{
error_msg_miss_op(andi_instruction_keyword, line_num);
}
op1_type = get_operand_type(op1);
op2_type = get_operand_type(op2);
op3_type = get_operand_type(op3);
if(op1_type >= OT_REGISTER_R0
&& op1_type <= OT_REGISTER_R3
&& op2_type >= OT_REGISTER_R0
&& op2_type <= OT_REGISTER_R3
&& op3_type == OT_IMMEDIATE)
{
// 15~12共4位操作码
// 11~10,2位rs寄存器编码
rs = get_machine_code_from_r(op2_type);
rs = rs << 2;
// 9~8,2位rt寄存器编码
rt = get_machine_code_from_r(op1_type);
machine_code[machine_code_address] = 0x40 | rs | rt;
machine_code_address++;
// 7~0,8位立即数
machine_code[machine_code_address] = get_machine_code_from_immediate(op3);
machine_code_address++;
}
else
{
error_msg_wrong_op(andi_instruction_keyword, line_num);
}
//
// 在代码行数据库中,标记此行是一个指令行
//
line_database[line_count].flag |= LF_INSTRUCTION;
}
// addi $rt, $rs, imm
void parse_addi(int line_num)
{
char *op1, *op2, *op3;
char rs, rt;
unsigned long op1_type, op2_type, op3_type;
if(assembler_state != AS_TEXT)
{
warning_msg_invalid_line(line_num);
return;
}
op1 = strtok(NULL, delimit_char_comma);
op2 = strtok(NULL, delimit_char_comma);
op3 = strtok(NULL, delimit_char);
if(NULL == op1 || NULL == op2 || NULL == op3)
{
error_msg_miss_op(addi_instruction_keyword, line_num);
}
op1_type = get_operand_type(op1);
op2_type = get_operand_type(op2);
op3_type = get_operand_type(op3);
if(op1_type >= OT_REGISTER_R0
&& op1_type <= OT_REGISTER_R3
&& op2_type >= OT_REGISTER_R0
&& op2_type <= OT_REGISTER_R3
&& op3_type == OT_IMMEDIATE)
{
// 15~12共4位操作码
// 11~10,2位rs寄存器编码
rs = get_machine_code_from_r(op2_type);
rs = rs << 2;
// 9~8,2位rt寄存器编码
rt = get_machine_code_from_r(op1_type);
machine_code[machine_code_address] = 0x50 | rs | rt;
machine_code_address++;
// 7~0,8位立即数
machine_code[machine_code_address] = get_machine_code_from_immediate(op3);
machine_code_address++;
}
else
{
error_msg_wrong_op(addi_instruction_keyword, line_num);
}
//
// 在代码行数据库中,标记此行是一个指令行
//
line_database[line_count].flag |= LF_INSTRUCTION;
}
// lw $rt, offset($rs)
void parse_lw(int line_num)
{
int i;
char *op1, *op2;
char immediate[8];
char rs, rt;
unsigned long op1_type;
if(assembler_state != AS_TEXT)
{
warning_msg_invalid_line(line_num);
return;
}
op1 = strtok(NULL, delimit_char_comma);
op2 = strtok(NULL, delimit_char);
if(NULL == op1 || NULL == op2)
{
error_msg_miss_op(lw_instruction_keyword, line_num);
}
op1_type = get_operand_type(op1);
if(op1_type >= OT_REGISTER_R0
&& op1_type <= OT_REGISTER_R3
&& is_lw_sw_instr_operand(op2))
{
rs = get_machine_code_from_operand(op2);
rs = rs << 2;
// 解析第一个到倒数第六个字符得到一个十进制数
for(i=0; i<(int)strlen(op2)-5; i++)
{
immediate[i] = op2[i];
}
// 9~8,2位rt寄存器编码
rt = get_machine_code_from_r(op1_type);
machine_code[machine_code_address] = 0x60 | rs | rt;
machine_code_address++;
// 7~0,8位立即数
machine_code[machine_code_address] = get_machine_code_from_immediate(immediate);
machine_code_address++;
}
else
{
error_msg_wrong_op(lw_instruction_keyword, line_num);
}
//
// 在代码行数据库中,标记此行是一个指令行
//
line_database[line_count].flag |= LF_INSTRUCTION;
}
// sw $rt, offset($rs)
void parse_sw(int line_num)
{
int i;
char *op1, *op2;
char immediate[8];
char rs, rt;
unsigned long op1_type;
if(assembler_state != AS_TEXT)
{
warning_msg_invalid_line(line_num);
return;
}
op1 = strtok(NULL, delimit_char_comma);
op2 = strtok(NULL, delimit_char);
if(NULL == op1 || NULL == op2)
{
error_msg_miss_op(sw_instruction_keyword, line_num);
}
op1_type = get_operand_type(op1);
if(op1_type >= OT_REGISTER_R0
&& op1_type <= OT_REGISTER_R3
&& is_lw_sw_instr_operand(op2))
{
rs = get_machine_code_from_operand(op2);
rs = rs << 2;
// 解析第一个到倒数第六个字符得到一个十进制数
for(i=0; i<(int)strlen(op2)-5; i++)
{
immediate[i] = op2[i];
}
// 9~8,2位rt寄存器编码
rt = get_machine_code_from_r(op1_type);
machine_code[machine_code_address] = 0x70 | rs | rt;
machine_code_address++;
// 7~0,8位立即数
machine_code[machine_code_address] = get_machine_code_from_immediate(immediate);
machine_code_address++;
}
else
{
error_msg_wrong_op(sw_instruction_keyword, line_num);
}
//
// 在代码行数据库中,标记此行是一个指令行
//
line_database[line_count].flag |= LF_INSTRUCTION;
}
// beq $rs, $rt, label
void parse_beq(int line_num)
{
char *op1, *op2, *op3;
char rs, rt;
unsigned long op1_type, op2_type, op3_type;
if(assembler_state != AS_TEXT)
{
warning_msg_invalid_line(line_num);
return;
}
op1 = strtok(NULL, delimit_char_comma);
op2 = strtok(NULL, delimit_char_comma);
op3 = strtok(NULL, delimit_char);
if(NULL == op1 || NULL == op2 || NULL == op3)
{
error_msg_miss_op(beq_instruction_keyword, line_num);
}
op1_type = get_operand_type(op1);
op2_type = get_operand_type(op2);
op3_type = get_operand_type(op3);
if(op1_type >= OT_REGISTER_R0
&& op1_type <= OT_REGISTER_R3
&& op2_type >= OT_REGISTER_R0
&& op2_type <= OT_REGISTER_R3
&& op3_type == OT_SYMBOL)
{
// 15~12共4位操作码
// 11~10,2位rs寄存器编码
rs = get_machine_code_from_r(op1_type);
rs = rs << 2;
// 9~8,2位rt寄存器编码
rt = get_machine_code_from_r(op2_type);
machine_code[machine_code_address] = 0x80 | rs | rt;
machine_code_address++;
// 7~0,有符号偏移量offset
add_reallocate(op3, line_num, beq_instruction_keyword);
machine_code_address++;
}
else
{
error_msg_wrong_op(beq_instruction_keyword, line_num);
}
//
// 在代码行数据库中,标记此行是一个指令行
//
line_database[line_count].flag |= LF_INSTRUCTION;
}
// bne $rs, $rt, label
void parse_bne(int line_num)
{
char *op1, *op2, *op3;
char rs, rt;
unsigned long op1_type, op2_type, op3_type;
if(assembler_state != AS_TEXT)
{
warning_msg_invalid_line(line_num);
return;
}
op1 = strtok(NULL, delimit_char_comma);
op2 = strtok(NULL, delimit_char_comma);
op3 = strtok(NULL, delimit_char);
if(NULL == op1 || NULL == op2 || NULL == op3)
{
error_msg_miss_op(bne_instruction_keyword, line_num);
}
op1_type = get_operand_type(op1);
op2_type = get_operand_type(op2);
op3_type = get_operand_type(op3);
if(op1_type >= OT_REGISTER_R0
&& op1_type <= OT_REGISTER_R3
&& op2_type >= OT_REGISTER_R0
&& op2_type <= OT_REGISTER_R3
&& op3_type == OT_SYMBOL)
{
// 15~12共4位操作码
// 11~10,2位rs寄存器编码
rs = get_machine_code_from_r(op1_type);
rs = rs << 2;
// 9~8,2位rt寄存器编码
rt = get_machine_code_from_r(op2_type);
machine_code[machine_code_address] = 0x90 | rs | rt;
machine_code_address++;
// 7~0,有符号偏移量offset
add_reallocate(op3, line_num, bne_instruction_keyword);
machine_code_address++;
}
else
{
error_msg_wrong_op(bne_instruction_keyword, line_num);
}
//
// 在代码行数据库中,标记此行是一个指令行
//
line_database[line_count].flag |= LF_INSTRUCTION;
}
// bgt $rs, $rt, label
void parse_bgt(int line_num)
{
char *op1, *op2, *op3;
char rs, rt;
unsigned long op1_type, op2_type, op3_type;
if(assembler_state != AS_TEXT)
{
warning_msg_invalid_line(line_num);
return;
}
op1 = strtok(NULL, delimit_char_comma);
op2 = strtok(NULL, delimit_char_comma);
op3 = strtok(NULL, delimit_char);
if(NULL == op1 || NULL == op2 || NULL == op3)
{
error_msg_miss_op(bgt_instruction_keyword, line_num);
}
op1_type = get_operand_type(op1);
op2_type = get_operand_type(op2);
op3_type = get_operand_type(op3);
if(op1_type >= OT_REGISTER_R0
&& op1_type <= OT_REGISTER_R3
&& op2_type >= OT_REGISTER_R0
&& op2_type <= OT_REGISTER_R3
&& op3_type == OT_SYMBOL)
{
// 15~12共4位操作码
// 11~10,2位rs寄存器编码
rs = get_machine_code_from_r(op1_type);
rs = rs << 2;
// 9~8,2位rt寄存器编码
rt = get_machine_code_from_r(op2_type);
machine_code[machine_code_address] = 0xA0 | rs | rt;
machine_code_address++;
// 7~0,有符号偏移量offset
add_reallocate(op3, line_num, bgt_instruction_keyword);
machine_code_address++;
}
else
{
error_msg_wrong_op(bgt_instruction_keyword, line_num);
}
//
// 在代码行数据库中,标记此行是一个指令行
//
line_database[line_count].flag |= LF_INSTRUCTION;
}
// bltz $rs, label
void parse_bltz(int line_num)
{
char *op1, *op2;
char rs;
unsigned long op1_type, op2_type;
if(assembler_state != AS_TEXT)
{
warning_msg_invalid_line(line_num);
return;
}
op1 = strtok(NULL, delimit_char_comma);
op2 = strtok(NULL, delimit_char_comma);
if(NULL == op1 || NULL == op2)
{
error_msg_miss_op(bltz_instruction_keyword, line_num);
}
op1_type = get_operand_type(op1);
op2_type = get_operand_type(op2);
if(op1_type >= OT_REGISTER_R0
&& op1_type <= OT_REGISTER_R3
&& op2_type == OT_SYMBOL)
{
// 15~12共4位操作码表示十进制数14
// 11~10,2位rs寄存器编码
rs = get_machine_code_from_r(op1_type);
rs = rs << 2;
machine_code[machine_code_address] = 0xE0 | rs;
machine_code_address++;
// 7~0,有符号偏移量offset
add_reallocate(op2, line_num, bltz_instruction_keyword);
machine_code_address++;
}
else
{
error_msg_wrong_op(bltz_instruction_keyword, line_num);
}
//
// 在代码行数据库中,标记此行是一个指令行
//
line_database[line_count].flag |= LF_INSTRUCTION;
}
//////////////////////////////////////////////////////////////////////////
// J型指令
//
// jump label
void parse_jump(int line_num)
{
char *op;
unsigned long op_type;
if(assembler_state != AS_TEXT)
{
warning_msg_invalid_line(line_num);
return;
}
op = strtok(NULL, delimit_char);
if(NULL == op)
{
error_msg_miss_op(jump_instruction_keyword, line_num);
}
op_type = get_operand_type(op);
if(OT_SYMBOL == op_type)
{
// jump label
machine_code[machine_code_address] = 0xB0;
machine_code_address++;
// 重定位
add_reallocate(op, line_num, jump_instruction_keyword);
machine_code_address++;
}
else
{
error_msg_wrong_op(jump_instruction_keyword, line_num);
}
//
// 在代码行数据库中,标记此行是一个指令行
//
line_database[line_count].flag |= LF_INSTRUCTION;
}
// jal label
void parse_jal(int line_num)
{
char *op;
unsigned long op_type;
if(assembler_state != AS_TEXT)
{
warning_msg_invalid_line(line_num);
return;
}
op = strtok(NULL, delimit_char);
if(NULL == op)
{
error_msg_miss_op(jal_instruction_keyword, line_num);
}
op_type = get_operand_type(op);
if(OT_SYMBOL == op_type)
{
// jal label
machine_code[machine_code_address] = 0xF0;
machine_code_address++;
// 重定位
add_reallocate(op, line_num, jal_instruction_keyword);
machine_code_address++;
}
else
{
error_msg_wrong_op(jal_instruction_keyword, line_num);
}
//
// 在代码行数据库中,标记此行是一个指令行
//
line_database[line_count].flag |= LF_INSTRUCTION;
}
//////////////////////////////////////////////////////////////////////////
// DISP指令
//
// DISP $rs, imm
void parse_disp(int line_num)
{
char *op1, *op2;
char rs;
unsigned long op1_type, op2_type;
if(assembler_state != AS_TEXT)
{
warning_msg_invalid_line(line_num);
return;
}
op1 = strtok(NULL, delimit_char_comma);
op2 = strtok(NULL, delimit_char);
if(NULL == op1 || NULL == op2)
{
error_msg_miss_op(jal_instruction_keyword, line_num);
}
op1_type = get_operand_type(op1);
op2_type = get_operand_type(op2);
if(op1_type >= OT_REGISTER_R0
&& op1_type <= OT_REGISTER_R3
&& op2_type == OT_IMMEDIATE)
{
// 15~12共4位操作码
// 11~10,2位rs寄存器编码
rs = get_machine_code_from_r(op1_type);
rs = rs << 2;
machine_code[machine_code_address] = 0x01 | rs;
machine_code_address++;
// DISP指令的立即数字段只有0、1两个取值,用来选择在0号显示器还是1号显示器显示rs中的内容
machine_code[machine_code_address] = get_machine_code_from_immediate(op2);
machine_code_address++;
}
else
{
error_msg_wrong_op(jal_instruction_keyword, line_num);
}
//
// 在代码行数据库中,标记此行是一个指令行
//
line_database[line_count].flag |= LF_INSTRUCTION;
}
//////////////////////////////////////////////////////////////////////////
// halt指令
//
// halt
void parse_halt(int line_num)
{
if(assembler_state != AS_TEXT)
{
warning_msg_invalid_line(line_num);
return;
}
machine_code[machine_code_address] = 0xC0;
machine_code_address++;
machine_code[machine_code_address] = 0x00;
machine_code_address++;
//
// 在代码行数据库中,标记此行是一个指令行
//
line_database[line_count].flag |= LF_INSTRUCTION;
}
//////////////////////////////////////////////////////////////////////////
//
// 向符号表中添加一个符号
void add_symbol(const char* symbol, int line_num)
{
int i;
// 符号名称不能重复
for(i=0; i<symbol_count; i++)
{
if(stricmp(symbol, symbol_table[i].name) == 0)
{
error_msg_same_symbol(symbol, line_num, symbol_table[i].line_num);
}
}
// 符号数量有限
if(symbol_count == MAX_SYMBOL_COUNT)
{
sprintf(formated_msg, "定义了太多的符号。最多可以定义 %d 个符号。", MAX_SYMBOL_COUNT);
error_msg(formated_msg, line_num);
}
// 添加符号
strcpy(symbol_table[symbol_count].name, symbol);
symbol_table[symbol_count].address = machine_code_address;
symbol_table[symbol_count].line_num = line_num;
symbol_count++;
}
// 解析符号
void parse_symbol(const char* symbol_with_colon, int line_num)
{
char symbol[MAX_SYMBOL_LENGTH];
char* token;
// 删除符号末尾的冒号
strcpy(symbol, symbol_with_colon);
symbol[strlen(symbol) - 1] = 0;
if(AS_TEXT == assembler_state)
{
// 代码段中的标号作为符号。记录到符号表中,不产生机器码。
add_symbol(symbol, line_num);
// 标号必须单独占一行,否则报错
if (strtok(NULL, delimit_char) != NULL)
{
error_msg("标号必须单独占用一行。", line_num);
}
}
else if(AS_DATA == assembler_state)
{
// 数据段中的变量作为符号。一个变量可以包含多个字节数据。记录到符号表中,产生机器码。
add_symbol(symbol, line_num);
while((token = strtok(NULL, delimit_char)) != NULL)
{
if(!is_immediate(token))
{
error_msg_wrong_data(token, line_num);
}
machine_code[machine_code_address] = get_machine_code_from_immediate(token);
machine_code_address++;
symbol_table[symbol_count - 1].machine_code_count++;
}
}
else
{
warning_msg_invalid_line(line_num);
}
}
// 解析代码段开始标志
void parse_code_section_keyword(int line_num)
{
// 代码段标志
if(AS_DATA == assembler_state)
{
error_msg("代码段不能定义在数据段的后面。", line_num);
}
else if(AS_TEXT == assembler_state)
{
error_msg("定义了重复的代码段。", line_num);
}
assembler_state = AS_TEXT;
}
// 解析数据段开始标志
void parse_data_section_keyword(int line_num)
{
// 数据段标志
if(AS_DATA == assembler_state)
{
error_msg("定义了重复的数据段。", line_num);
}
else if(AS_BEGIN == assembler_state)
{
error_msg("数据段不能定义在代码段的前面。", line_num);
}
assembler_state = AS_DATA;
}
// 定义关键字和解析函数的对应关系
typedef void (*PARSE_FUNCTION)(int line_num);
struct KEYWORD_FUNCTION_ENTRY
{
const char** keyword;
PARSE_FUNCTION parse_function;
};
//
// 必须将关键字及其解析函数放在下面的表中。从而可以使用“表驱动”的编程模式。
//
struct KEYWORD_FUNCTION_ENTRY keyword_function_table[] =
{
{ NULL, NULL } // 未用
,{ &code_section_keyword, parse_code_section_keyword }
,{ &data_section_keyword, parse_data_section_keyword }
,{ &or_instruction_keyword, parse_or }
,{ &and_instruction_keyword, parse_and }
,{ &add_instruction_keyword, parse_add }
,{ &sub_instruction_keyword, parse_sub }
,{ &sllv_instruction_keyword, parse_sllv }
,{ &srlv_instruction_keyword, parse_srlv }
,{ &srav_instruction_keyword, parse_srav }
,{ &slt_instruction_keyword, parse_slt }
,{ &jr_instruction_keyword, parse_jr }
,{ &jalr_instruction_keyword, parse_jalr }
,{ &xor_instruction_keyword, parse_xor }
,{ &nor_instruction_keyword, parse_nor }
,{ &srl_instruction_keyword, parse_srl }
,{ &sra_instruction_keyword, NULL }
,{ &sll_instruction_keyword, parse_sll }
,{ &ori_instruction_keyword, parse_ori }
,{ &andi_instruction_keyword, parse_andi }
,{ &addi_instruction_keyword, parse_addi }
,{ &lw_instruction_keyword, parse_lw }
,{ &sw_instruction_keyword, parse_sw }
,{ &beq_instruction_keyword, parse_beq }
,{ &bne_instruction_keyword, parse_bne }
,{ &bgt_instruction_keyword, parse_bgt }
,{ &bltz_instruction_keyword, parse_bltz }
,{ &bgez_instruction_keyword, NULL }
,{ &jump_instruction_keyword, parse_jump }
,{ &jal_instruction_keyword, parse_jal }
,{ &r0_register_keyword, NULL }
,{ &r1_register_keyword, NULL }
,{ &r2_register_keyword, NULL }
,{ &r3_register_keyword, NULL }
,{ &ra_register_keyword, NULL }
,{ &t0_register_keyword, NULL }
};
// 判断是否是一个关键字。返回0,不是关键字;返回非0,是关键字,并且返回值就是关键字在表中的下标。
int match_keyword(const char* token)
{
int i;
for(i=1; i<sizeof(keyword_function_table)/sizeof(keyword_function_table[0]); i++)
{
if(stricmp(token, *keyword_function_table[i].keyword) == 0)
{
return i;
}
}
return 0;
}
// 判断是否是一个符号
int is_symbol(const char* token, int line_num)
{
int i;
char symbol_name[MAX_SYMBOL_LENGTH];
// 最后一个字符必须是冒号
if(token[strlen(token) - 1] != ':')
{
return 0;
}
// 第一个字符必须是字母或者下划线
if(token[0] != '_' && !isalpha(token[0]))
{
return 0;
}
// 后面的字符必须是字母、数字、下划线
for(i=0; i<(int)strlen(token)-2; i++)
{
if(token[i] != '_' && !isalpha(token[i]) && !isdigit(token[i]))
{
return 0;
}
}
// 不能与关键字相同
strcpy(symbol_name, token);
symbol_name[strlen(symbol_name) - 1] = 0;
if(match_keyword(symbol_name) != 0)
{
error_msg_keyword_symbol(symbol_name, line_num);
}
return 1;
}
// 输出版本信息
void version_msg()
{
printf(
"Engintime 16bit MIPS 指令汇编器 [版本 2.0]\n"
);
}
// 输出帮助信息
void help_msg()
{
printf(
"Engintime 16bit MIPS 指令汇编器。\n\n"
"用法:\n\n"
" dmasm.exe assembly_file_name [options]\n\n"
"选项:\n\n"
" -g debug_file_name\t指定生成的调试信息文件路径。\n"
" -h\t\t\t打印此帮助信息。\n"
" -l list_file_name\t指定生成的列表文件路径。\n"
" -o target_file_name\t指定生成的目标文件路径。若未指定,默认生成 a.obj 文件。\n"
" -v\t\t\t打印版本信息。\n"
);
printf("\n");
version_msg();
exit(1);
}
void argument_error_msg()
{
printf("命令行参数错误。\n\n");
help_msg();
}
// 处理器用户输入的命令行参数
void process_argument(int argc, char* argv[])
{
int i;
// argv[0] 是 "easm.exe",所以可以忽略。
for(i=1; i<argc; i++)
{
if(strcmp(argv[i], "-v") == 0)
{
version_msg();
exit(1);
}
else if(strcmp(argv[i], "-h") == 0)
{
help_msg();
}
else if(strcmp(argv[i], "-o") == 0)
{
if(i + 1 < argc)
{
i++;
target_file_name = argv[i];
}
else
{
argument_error_msg();
}
}
else if(strcmp(argv[i], "-l") == 0)
{
if(i + 1 < argc)
{
i++;
list_file_name = argv[i];
}
else
{
argument_error_msg();
}
}
else if(strcmp(argv[i], "-g") == 0)
{
if(i + 1 < argc)
{
i++;
dbg_file_name = argv[i];
}
else
{
argument_error_msg();
}
}
else if(NULL == assembly_file_name && argv[i][0] != '-')
{
// 输入的汇编源代码文件路径。
assembly_file_name = argv[i];
}
else
{
argument_error_msg();
}
}
//
// 如果命令行参数中没有指定输入的汇编文件,就打印错误信息后退出
//
if(NULL == assembly_file_name)
{
printf("命令行参数错误。没有指定汇编源代码文件的路径。\n");
help_msg();
}
}
// 将一个字符串写入二进制文件中。先将字符串长度写入文件,然后将字符串中的
// 每个字符依次写入文件,不包括字符串末尾的 0.
void write_string_to_binary_file(const char* str, FILE* fp)
{
int str_length;
if(str != NULL)
{
str_length = strlen(str);
fwrite(&str_length, 1, sizeof(str_length), fp);
fwrite(str, 1, str_length, fp);
}
else
{
str_length = 0;
fwrite(&str_length, 1, sizeof(str_length), fp);
}
}
int main(int argc, char* argv[])
{
FILE* fp;
char* token;
char line[MAX_LINE_LENGTH];
int i, j;
int line_num = 1; // 行号从第一行开始计数
int keyword_index;
unsigned long base_PC, offset_PC;
//
// 处理命令行参数
//
process_argument(argc, argv);
//
// 打开汇编源代码文件
//
fp = fopen(assembly_file_name, "r");
if(NULL == fp)
{
printf("无法打开源代码文件 %s\n", assembly_file_name);
return 1;
}
//////////////////////////////////////////////////////////////////////////
// 第一遍扫描
version_msg();
printf("\n正在汇编 %s...\n", assembly_file_name);
//
// 一次读取一行文本,同时记录所有的代码行信息
//
while(fgets(line, sizeof(line), fp) != NULL)
{
//
// 将一行代码的信息记录到代码行数据库中
//
strcpy(line_database[line_count].line_string, line);
line_database[line_count].line_num = line_num;
line_database[line_count].address = machine_code_address;
//
// 将代码行中的注释剥离
//
line[strcspn(line, ";")] = 0;
//
// 开始解析代码行
//
token = strtok(line, delimit_char);
if(NULL == token)
{
// 如果是空行,不做任何处理
}
else if((keyword_index = match_keyword(token)) != 0
&& keyword_function_table[keyword_index].parse_function != NULL)
{
// 根据关键字进行相应的处理
keyword_function_table[keyword_index].parse_function(line_num);
}
else if(is_symbol(token, line_num))
{
// 处理符号
parse_symbol(token, line_num);
}
else
{
error_msg("无法识别的代码行。", line_num);
}
//
// 补充代码行数据库信息
//
line_database[line_count].machine_code_count = machine_code_address - machine_code_old_address;
machine_code_old_address = machine_code_address;
//
// 记录产生了机器码的代码行数量
//
if(line_database[line_count].machine_code_count != 0)
{
machine_code_line_count++;
}
//
// 增加行号
//
line_count++;
line_num++;
if(line_count == MAX_LINE_COUNT)
{
sprintf(formated_msg, "汇编文件中的代码行过多,最多只能有 %d 行代码。", MAX_LINE_COUNT);
error_msg(formated_msg, -1);
}
}
fclose(fp);
//////////////////////////////////////////////////////////////////////////
// 第二遍扫描
//
// 根据符号表更新重定位表
//
for(i=0; i<reallocate_count; i++)
{
for(j=0; j<symbol_count; j++)
{
if(stricmp(symbol_table[j].name, reallocate_table[i].symbol_name) == 0)
{
if (stricmp(beq_instruction_keyword, reallocate_table[i].instr_key_word) == 0
|| stricmp(bne_instruction_keyword, reallocate_table[i].instr_key_word) == 0
|| stricmp(bgt_instruction_keyword, reallocate_table[i].instr_key_word) == 0
|| stricmp(bltz_instruction_keyword, reallocate_table[i].instr_key_word) == 0)
{
// 条件转移指令
// 因为标号是指令的第二个字节编码,所以标号地址首先减1,指向该条指令。
// 然后加2,指向下一条指令。因为偏移是相对于PC+2后的地址计算的
//
machine_code[reallocate_table[i].address] = (BYTE)((symbol_table[j].address - (reallocate_table[i].address - 1 + 2))/2);
symbol_table[j].ref_count++;
}
else if (stricmp(jump_instruction_keyword, reallocate_table[i].instr_key_word) == 0
|| stricmp(jal_instruction_keyword, reallocate_table[i].instr_key_word) == 0)
{
//
// 无条件转移指令
//
// 获取跳转指令地址高4位,低12位置为0,作为无条件跳转指令的相对偏移基址
base_PC = reallocate_table[i].address & 0xf000;
// 获取标号地址相对于基地址的偏移,并取出其中的低12位做为有效位
offset_PC = (symbol_table[j].address - base_PC) & 0x0fff;
// 更新跳转指令编码
machine_code[reallocate_table[i].address - 1] = (BYTE)(machine_code[reallocate_table[i].address - 1] | offset_PC >> 8);
machine_code[reallocate_table[i].address] = (BYTE)(offset_PC/2);
symbol_table[j].ref_count++;
}
break;
}
}
if(j == symbol_count)
{
// 重定位表中使用的符号在符号表中未定义,报错
sprintf(formated_msg, "使用了未定义的符号 %s。", reallocate_table[i].symbol_name);
error_msg(formated_msg, reallocate_table[i].line_num);
}
}
//
// 如果存在未引用的符号,输出警告信息。
//
for(i=0; i<symbol_count; i++)
{
if(0 == symbol_table[i].ref_count)
{
warning_msg_unref_symbol(symbol_table[i].name, symbol_table[i].line_num);
}
}
//////////////////////////////////////////////////////////////////////////
// 产生各种输出文件
//
// 将机器码写入二进制文件
//
if(NULL == target_file_name)
{
target_file_name = "a.obj";
}
fp = fopen(target_file_name, "wb");
if(NULL == fp)
{
printf("无法打开输出文件 %s\n", target_file_name);
return 1;
}
fwrite(machine_code, 1, machine_code_address, fp);
fclose(fp);
printf("\n生成目标文件 %s\n", target_file_name);
//
// 将代码行数据库中的信息写入列表文件
//
if(list_file_name != NULL)
{
fp = fopen(list_file_name, "w");
if(NULL == fp)
{
printf("无法打开列表文件 %s\n", list_file_name);
return 1;
}
for(i=0; i<line_count; i++)
{
// 行号
fprintf(fp, "%04d ", line_database[i].line_num);
// 地址和机器码
if(line_database[i].machine_code_count > 0)
{
fprintf(fp, "%02X ", line_database[i].address);
for(j=0; j<line_database[i].machine_code_count; j++)
{
// 确保每行最多写两个字节的机器码
if(j != 0 && j % 2 == 0)
{
if(2 == j)
{
fprintf(fp, " ");
}
else
{
fprintf(fp, "\n ");
}
}
fprintf(fp, "%02X ", machine_code[line_database[i].address + j]);
if(1 == j)
{
fprintf(fp, " ");
fprintf(fp, line_database[i].line_string);
}
}
if(1 == j)
{
fprintf(fp, " ");
fprintf(fp, line_database[i].line_string);
}
else if(j > 2)
{
fprintf(fp, "\n");
}
}
else
{
fprintf(fp, " ");
// 源代码
fprintf(fp, line_database[i].line_string);
}
}
fclose(fp);
printf("生成列表文件 %s\n", list_file_name);
}
//
// 将代码行数据库中的信息写入二进制的调试信息文件。
//
// 调试信息的基本格式为:
// 魔数(4字节),固定不可改变
// 版本号(4字节),固定不可改变
// 源代码文件绝对路径字符串长度(4字节)
// 源代码文件绝对路径字符串(不包括字符串结尾的0)
// 列表文件绝对路径字符串长度(4字节)
// 列表文件绝对路径字符串(不包括字符串结尾的0)
//
// 代码行数据库中元素的数量(4字节)
// 代码行数据库中的所有元素
//
// 符号表元素的数量(4字节)
// 符号表中的所有元素
//
if(dbg_file_name != NULL)
{
fp = fopen(dbg_file_name, "wb");
if(NULL == fp)
{
printf("无法打开调试信息文件 %s\n", dbg_file_name);
return 1;
}
// 魔数
fwrite(&dbg_file_magic, 1, sizeof(dbg_file_magic), fp);
// 版本号
fwrite(&dbg_file_version, 1, sizeof(dbg_file_version), fp);
// 源代码文件路径
write_string_to_binary_file(assembly_file_name, fp);
// 列表文件路径
write_string_to_binary_file(list_file_name, fp);
// 代码行数据库中的所有元素
fwrite(&machine_code_line_count, 1, sizeof(machine_code_line_count), fp);
for(i=0; i<line_count; i++)
{
// 跳过没有产生机器码的代码行
if(0 == line_database[i].machine_code_count)
{
continue;
}
fwrite(&line_database[i].line_num, 1, sizeof(unsigned long), fp);
fwrite(&line_database[i].address, 1, sizeof(unsigned long), fp);
fwrite(&line_database[i].machine_code_count, 1, sizeof(int), fp);
fwrite(&line_database[i].flag, 1, sizeof(unsigned long), fp);
}
// 符号表中的所有元素
fwrite(&symbol_count, 1, sizeof(symbol_count), fp);
for(i=0; i<symbol_count; i++)
{
write_string_to_binary_file(symbol_table[i].name, fp);
fwrite(&symbol_table[i].address, 1, sizeof(unsigned long), fp);
fwrite(&symbol_table[i].machine_code_count, 1, sizeof(int), fp);
fwrite(&symbol_table[i].line_num, 1, sizeof(int), fp);
}
fclose(fp);
printf("生成调试信息文件 %s\n", dbg_file_name);
}
return 0;
}
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<svg height="2684" version="1.1" width="1851" xmlns="http://www.w3.org/2000/svg">
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="940" x2="880" y1="1660" y2="1660"/>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1020" x2="1080" y1="1660" y2="1660"/>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="980" x2="980" y1="1700" y2="1760"/>
<circle cx="980" cy="1692" fill="none" r="5" stroke="#000000" stroke-width="5"/>
<polygon fill="#ffffff" fill-opacity="0.5" points="940 1610, 940 1710, 1020 1660, 940 1610" stroke="#000000" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="990" y="1580">U50</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="940" y="1610">NBUFFER</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="940" x2="880" y1="1860" y2="1860"/>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1020" x2="1080" y1="1860" y2="1860"/>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="980" x2="980" y1="1900" y2="1960"/>
<circle cx="980" cy="1892" fill="none" r="5" stroke="#000000" stroke-width="5"/>
<polygon fill="#ffffff" fill-opacity="0.5" points="940 1810, 940 1910, 1020 1860, 940 1810" stroke="#000000" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="990" y="1780">U51</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="940" y="1810">NBUFFER</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="940" x2="880" y1="660" y2="660"/>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1020" x2="1080" y1="660" y2="660"/>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="980" x2="980" y1="700" y2="760"/>
<circle cx="980" cy="692" fill="none" r="5" stroke="#000000" stroke-width="5"/>
<polygon fill="#ffffff" fill-opacity="0.5" points="940 610, 940 710, 1020 660, 940 610" stroke="#000000" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="990" y="580">U52</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="940" y="610">NBUFFER</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="940" x2="880" y1="860" y2="860"/>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1020" x2="1080" y1="860" y2="860"/>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="980" x2="980" y1="900" y2="960"/>
<circle cx="980" cy="892" fill="none" r="5" stroke="#000000" stroke-width="5"/>
<polygon fill="#ffffff" fill-opacity="0.5" points="940 810, 940 910, 1020 860, 940 810" stroke="#000000" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="990" y="780">U53</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="940" y="810">NBUFFER</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="940" x2="880" y1="1460" y2="1460"/>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1020" x2="1080" y1="1460" y2="1460"/>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="980" x2="980" y1="1500" y2="1560"/>
<circle cx="980" cy="1492" fill="none" r="5" stroke="#000000" stroke-width="5"/>
<polygon fill="#ffffff" fill-opacity="0.5" points="940 1410, 940 1510, 1020 1460, 940 1410" stroke="#000000" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="990" y="1380">U1</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="940" y="1410">NBUFFER</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="940" x2="880" y1="1060" y2="1060"/>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1020" x2="1080" y1="1060" y2="1060"/>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="980" x2="980" y1="1100" y2="1160"/>
<circle cx="980" cy="1092" fill="none" r="5" stroke="#000000" stroke-width="5"/>
<polygon fill="#ffffff" fill-opacity="0.5" points="940 1010, 940 1110, 1020 1060, 940 1010" stroke="#000000" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="990" y="980">U2</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="940" y="1010">NBUFFER</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="940" x2="880" y1="2160" y2="2160"/>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1020" x2="1080" y1="2160" y2="2160"/>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="980" x2="980" y1="2200" y2="2260"/>
<circle cx="980" cy="2192" fill="none" r="5" stroke="#000000" stroke-width="5"/>
<polygon fill="#ffffff" fill-opacity="0.5" points="940 2110, 940 2210, 1020 2160, 940 2110" stroke="#000000" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="990" y="2080">U3</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="940" y="2110">NBUFFER</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="940" x2="880" y1="2360" y2="2360"/>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1020" x2="1080" y1="2360" y2="2360"/>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="980" x2="980" y1="2400" y2="2460"/>
<circle cx="980" cy="2392" fill="none" r="5" stroke="#000000" stroke-width="5"/>
<polygon fill="#ffffff" fill-opacity="0.5" points="940 2310, 940 2410, 1020 2360, 940 2310" stroke="#000000" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="990" y="2280">U4</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="940" y="2310">NBUFFER</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="940" x2="880" y1="2560" y2="2560"/>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1020" x2="1080" y1="2560" y2="2560"/>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="980" x2="980" y1="2600" y2="2660"/>
<circle cx="980" cy="2592" fill="none" r="5" stroke="#000000" stroke-width="5"/>
<polygon fill="#ffffff" fill-opacity="0.5" points="940 2510, 940 2610, 1020 2560, 940 2510" stroke="#000000" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="990" y="2480">U5</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="940" y="2510">NBUFFER</text>
<polygon fill="#ffff80" points="20 660, 20 635, 145 635, 170 660, 145 685, 20 685, 20 660" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="20" y="660">A[2..0]</text>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="320" x2="370" y1="710" y2="660"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="320" x2="370" y1="910" y2="860"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="320" x2="370" y1="1110" y2="1060"/>
<polyline fill="none" points="320 1110, 320 660, 170 660" stroke="#000080" stroke-linecap="round" stroke-linejoin="round" stroke-width="20"/>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="370" y="660">A0</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="370" y="860">A1</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="370" y="1060">A2</text>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="320" x2="370" y1="1510" y2="1460"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="320" x2="370" y1="1710" y2="1660"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="320" x2="370" y1="1910" y2="1860"/>
<polyline fill="none" points="320 1910, 320 1460, 170 1460" stroke="#000080" stroke-linecap="round" stroke-linejoin="round" stroke-width="20"/>
<polygon fill="#ffff80" points="20 1460, 20 1435, 145 1435, 170 1460, 145 1485, 20 1485, 20 1460" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="20" y="1460">B[2..0]</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="370" y="1460">B0</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="370" y="1660">B1</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="370" y="1860">B2</text>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="320" x2="370" y1="2210" y2="2160"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="320" x2="370" y1="2410" y2="2360"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="320" x2="370" y1="2610" y2="2560"/>
<polyline fill="none" points="320 2610, 320 2160, 170 2160" stroke="#000080" stroke-linecap="round" stroke-linejoin="round" stroke-width="20"/>
<polygon fill="#ffff80" points="20 2160, 20 2135, 145 2135, 170 2160, 145 2185, 20 2185, 20 2160" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="20" y="2160">C[2..0]</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="370" y="2160">C0</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="370" y="2360">C1</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="370" y="2560">C2</text>
<polyline fill="none" points="1080 660, 1230 660, 1230 2160, 1080 2160" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1080 860, 1280 860, 1280 2360, 1080 2360" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1080 1060, 1330 1060, 1330 2560, 1080 2560" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1080 1860, 1330 1860" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1080 1660, 1280 1660" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1080 1460, 1230 1460" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1230 660, 1480 660" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1280 860, 1480 860" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1330 1060, 1480 1060" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="1380" y="660">F0</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="1380" y="860">F1</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="1380" y="1060">F2</text>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="1480" x2="1530" y1="660" y2="610"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="1480" x2="1530" y1="860" y2="810"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="1480" x2="1530" y1="1060" y2="1010"/>
<polyline fill="none" points="1530 1010, 1530 560, 1680 560" stroke="#000080" stroke-linecap="round" stroke-linejoin="round" stroke-width="20"/>
<polygon fill="#ffff80" points="1680 560, 1680 535, 1805 535, 1830 560, 1805 585, 1680 585, 1680 560" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="1680" y="560">F[2..0]</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="470" x2="430" y1="160" y2="160"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="532" y="157">^1G</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="453" y="160">1</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="480" x2="430" y1="70" y2="70"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="513" y="71">A</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="452" y="69">2</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="480" x2="430" y1="100" y2="100"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="513" y="100">B</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="452" y="99">3</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="640" x2="680" y1="70" y2="70"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="599" y="76">Y0</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="659" y="70">4</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="640" x2="680" y1="100" y2="100"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="600" y="104">Y1</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="659" y="100">5</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="640" x2="680" y1="130" y2="130"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="600" y="132">Y2</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="659" y="130">6</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="640" x2="680" y1="160" y2="160"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="600" y="160">Y3</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="660" y="161">7</text>
<circle cx="475" cy="160" fill="none" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="635" cy="70" fill="none" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="636" cy="160" fill="none" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="635" cy="131" fill="none" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="635" cy="100" fill="none" r="4" stroke="#000000" stroke-width="5"/>
<rect fill="#ffffff" fill-opacity="0.5" height="124" stroke="#000000" stroke-width="5" width="146" x="482" y="54"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="549" y="48">U6</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="484" y="220">74LS139D</text>
<polygon fill="#ffff80" points="20 70, 20 55, 155 55, 170 70, 155 85, 20 85, 20 70" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="20" y="70">S0</text>
<polygon fill="#ffff80" points="20 100, 20 85, 155 85, 170 100, 155 115, 20 115, 20 100" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="20" y="100">S1</text>
<polyline fill="none" points="880 660, 370 660" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="880 860, 370 860" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="880 1060, 370 1060" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="880 1460, 370 1460" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="880 1660, 370 1660" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="880 1860, 370 1860" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="880 2160, 370 2160" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="880 2360, 370 2360" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="880 2560, 370 2560" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="680 70, 820 70, 820 1160, 980 1160" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="980 960, 820 960" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="980 760, 820 760" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="680 100, 800 100, 800 1960, 980 1960" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="980 1760, 800 1760" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="980 1560, 800 1560" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="680 130, 780 130, 780 2660, 980 2660" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="980 2460, 780 2460" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="980 2260, 780 2260" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="微软雅黑" font-size="105" font-weight="700" text-anchor="start" x="930" y="260">3选1复用器</text>
<polyline fill="none" points="430 70, 170 70" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="430 100, 170 100" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<circle cx="1330" cy="1060" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1280" cy="860" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1230" cy="660" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="780" cy="2260" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="780" cy="2460" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="800" cy="1560" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="800" cy="1760" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="820" cy="760" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="820" cy="960" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1230" cy="1460" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1280" cy="1660" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1330" cy="1860" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
</svg>
.text
addi $r2, $r0, 5 ;r2 = r0 + 5
addi $r3, $r0, 12 ;r3 = r0 + 12
addi $r1, $r3, -9 ;r1 = r3 + (-9)
or $r3, $r0, $r1 ;r3 = r0 | r1
and $r2, $r2, $r3 ;r2 = r2 & r3
add $r3, $r3, $r1 ;r3 = r3 + r1
beq $r1, $r3, end ;if r1 == r3, goto end
slt $r3, $r2, $r3 ;r3 = r2 < r3 ? 1 : 0
andi $r3, $r3, 0 ;r3 = r3 & 0
andi $r0, $r1, 0 ;r0 = r1 & 0
beq $r3, $r0, F1 ;if r3 == r0, goto F1
addi $r0, $r1, 0 ;r0 = r1 + 0
end:
sw $r2, 84($r0) ;mem[r0+84] = r2
sllv $r1, $r1, $r0 ;r1 = r1 << r0
bne $r1, $r2, NEXT ;if r1 != r2, goto NEXT
F1:
slt $r3, $r1, $r2 ;r3 = r1 < r2 ? 1 : 0
add $r3, $r2, $r1 ;r3 = r2 + r1
sub $r2, $r2, $r0 ;r2 = r2 - r0
sw $r3, 68($r3) ;mem[r3+68] = r3
lw $r3, 80($r0) ;r3 = mem[r0+80]
jump end ;goto end
addi $r2, $r0, 1 ;r2 = r0 + 1
NEXT:
sub $r1, $r1, $r0 ;r1 = r1 - r0
add $r1, $r1, $r0 ;r1 = r1 + r0
sllv $r3, $r0, $r1 ;r3 = r0 << r1
ori $r1, $r1, 3 ;r1 = r1 | 3
srav $r3, $r3, $r1 ;r3 = r3 >> r1
andi $r1, $r2, 4 ;r1 = r2 + 4
@echo off
mipsasm.exe ram.asm -o ram.rxm -l ram.lst -g ram.dbg
pause
添加文件
0001 .text
0002
0003 00 52 05 addi $r2, $r0, 5 ;r2 = r0 + 5
0004 02 53 0C addi $r3, $r0, 12 ;r3 = r0 + 12
0005 04 5D F7 addi $r1, $r3, -9 ;r1 = r3 + (-9)
0006
0007 06 01 C0 or $r3, $r0, $r1 ;r3 = r0 | r1
0008 08 0B 81 and $r2, $r2, $r3 ;r2 = r2 & r3
0009 0A 0D C2 add $r3, $r3, $r1 ;r3 = r3 + r1
0010
0011 0C 87 05 beq $r1, $r3, end ;if r1 == r3, goto end
0012 0E 0B C7 slt $r3, $r2, $r3 ;r3 = r2 < r3 ? 1 : 0
0013 10 4F 00 andi $r3, $r3, 0 ;r3 = r3 & 0
0014 12 44 00 andi $r0, $r1, 0 ;r0 = r1 & 0
0015
0016 14 8C 04 beq $r3, $r0, F1 ;if r3 == r0, goto F1
0017 16 54 00 addi $r0, $r1, 0 ;r0 = r1 + 0
0018
0019 end:
0020 18 72 54 sw $r2, 84($r0) ;mem[r0+84] = r2
0021 1A 04 44 sllv $r1, $r1, $r0 ;r1 = r1 << r0
0022 1C 96 07 bne $r1, $r2, NEXT ;if r1 != r2, goto NEXT
0023
0024 F1:
0025 1E 06 C7 slt $r3, $r1, $r2 ;r3 = r1 < r2 ? 1 : 0
0026 20 09 C2 add $r3, $r2, $r1 ;r3 = r2 + r1
0027 22 08 83 sub $r2, $r2, $r0 ;r2 = r2 - r0
0028 24 7F 44 sw $r3, 68($r3) ;mem[r3+68] = r3
0029 26 63 50 lw $r3, 80($r0) ;r3 = mem[r0+80]
0030 28 B0 0C jump end ;goto end
0031 2A 52 01 addi $r2, $r0, 1 ;r2 = r0 + 1
0032
0033 NEXT:
0034 2C 04 43 sub $r1, $r1, $r0 ;r1 = r1 - r0
0035 2E 04 42 add $r1, $r1, $r0 ;r1 = r1 + r0
0036
0037 30 01 C4 sllv $r3, $r0, $r1 ;r3 = r0 << r1
0038
0039 32 35 03 ori $r1, $r1, 3 ;r1 = r1 | 3
0040 34 0D C6 srav $r3, $r3, $r1 ;r3 = r3 >> r1
0041 36 49 04 andi $r1, $r2, 4 ;r1 = r2 + 4
0042
0043
0044
0045
0046
添加文件
添加文件
这个 源代码变更 因为 太大 而不能显示。 你可以 浏览blob
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<svg height="1117" version="1.1" width="2494" xmlns="http://www.w3.org/2000/svg">
<text alignment-baseline="after-edge" fill="#000080" font-family="宋体" font-size="25" font-weight="400" text-anchor="start" x="342" y="913">rt寄存器</text>
<text alignment-baseline="after-edge" fill="#000080" font-family="宋体" font-size="25" font-weight="400" text-anchor="start" x="312" y="523">rd寄存器</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1312" x2="1252" y1="393" y2="393"/>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1392" x2="1452" y1="393" y2="393"/>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1352" x2="1352" y1="433" y2="493"/>
<circle cx="1352" cy="425" fill="none" r="5" stroke="#000000" stroke-width="5"/>
<polygon fill="#ffffff" fill-opacity="0.5" points="1312 343, 1312 443, 1392 393, 1312 343" stroke="#000000" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="1362" y="313">U50</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="1312" y="343">NBUFFER</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1312" x2="1252" y1="593" y2="593"/>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1392" x2="1452" y1="593" y2="593"/>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1352" x2="1352" y1="633" y2="693"/>
<circle cx="1352" cy="625" fill="none" r="5" stroke="#000000" stroke-width="5"/>
<polygon fill="#ffffff" fill-opacity="0.5" points="1312 543, 1312 643, 1392 593, 1312 543" stroke="#000000" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="1362" y="513">U51</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="1312" y="543">NBUFFER</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1312" x2="1252" y1="793" y2="793"/>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1392" x2="1452" y1="793" y2="793"/>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1352" x2="1352" y1="833" y2="893"/>
<circle cx="1352" cy="825" fill="none" r="5" stroke="#000000" stroke-width="5"/>
<polygon fill="#ffffff" fill-opacity="0.5" points="1312 743, 1312 843, 1392 793, 1312 743" stroke="#000000" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="1362" y="713">U52</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="1312" y="743">NBUFFER</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1312" x2="1252" y1="993" y2="993"/>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1392" x2="1452" y1="993" y2="993"/>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1352" x2="1352" y1="1033" y2="1093"/>
<circle cx="1352" cy="1025" fill="none" r="5" stroke="#000000" stroke-width="5"/>
<polygon fill="#ffffff" fill-opacity="0.5" points="1312 943, 1312 1043, 1392 993, 1312 943" stroke="#000000" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="1362" y="913">U53</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="1312" y="943">NBUFFER</text>
<polyline fill="none" points="1452 393, 1552 393, 1552 793, 1452 793" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1452 593, 1602 593, 1602 993, 1452 993" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1552 393, 1952 393" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1252 393, 852 393" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1252 593, 852 593" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1252 793, 852 793" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1252 993, 852 993" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="802" x2="852" y1="443" y2="393"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="802" x2="852" y1="643" y2="593"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="802" x2="852" y1="843" y2="793"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="802" x2="852" y1="1043" y2="993"/>
<polyline fill="none" points="1602 593, 1952 593" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="1952" x2="2002" y1="393" y2="343"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="1952" x2="2002" y1="593" y2="543"/>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="852" y="793">rt0</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="852" y="993">rt1</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="852" y="393">rd0</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="852" y="593">rd1</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="1702" y="393">Reg0</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="1702" y="593">Reg1</text>
<polygon fill="#ffff80" points="2272 443, 2272 418, 2447 418, 2472 443, 2447 468, 2272 468, 2272 443" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="2272" y="443">Reg[1..0]</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1012" x2="952" y1="693" y2="693"/>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1092" x2="1152" y1="693" y2="693"/>
<circle cx="1088" cy="693" fill="none" r="5" stroke="#000000" stroke-width="5"/>
<polygon fill="#ffffff" fill-opacity="0.5" points="1012 643, 1012 743, 1082 693, 1012 643" stroke="#000000" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="1032" y="657">U54</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="1012" y="789">NOT</text>
<polyline fill="none" points="1352 693, 1152 693" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1352 493, 1202 493, 1202 693" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="952 693, 502 693, 172 693" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1352 1093, 902 1093, 902 693" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1352 893, 902 893" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#000080" font-family="宋体" font-size="25" font-weight="400" text-anchor="start" x="292" y="653">I型指令选中rt作为目的寄存器</text>
<polyline fill="none" points="802 643, 802 443" stroke="#000080" stroke-linecap="round" stroke-linejoin="round" stroke-width="20"/>
<polyline fill="none" points="802 1043, 802 843" stroke="#000080" stroke-linecap="round" stroke-linejoin="round" stroke-width="20"/>
<polyline fill="none" points="802 943, 172 943" stroke="#000080" stroke-linecap="round" stroke-linejoin="round" stroke-width="20"/>
<polyline fill="none" points="802 543, 172 543" stroke="#000080" stroke-linecap="round" stroke-linejoin="round" stroke-width="20"/>
<polygon fill="#ffff80" points="22 943, 22 918, 147 918, 172 943, 147 968, 22 968, 22 943" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="22" y="943">rt[1..0]</text>
<polygon fill="#ffff80" points="22 543, 22 518, 147 518, 172 543, 147 568, 22 568, 22 543" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="22" y="543">rd[1..0]</text>
<polygon fill="#ffff80" points="22 693, 22 668, 147 668, 172 693, 147 718, 22 718, 22 693" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="22" y="693">s</text>
<polyline fill="none" points="2002 343, 2002 543" stroke="#000080" stroke-linecap="round" stroke-linejoin="round" stroke-width="20"/>
<polyline fill="none" points="2002 443, 2272 443" stroke="#000080" stroke-linecap="round" stroke-linejoin="round" stroke-width="20"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="微软雅黑" font-size="105" font-weight="700" text-anchor="start" x="822" y="143">目的寄存器选择器</text>
<circle cx="1602" cy="593" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1552" cy="393" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="902" cy="893" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="902" cy="693" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1202" cy="693" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="2002" cy="443" fill="#000080" r="25" stroke="#000080" stroke-width="5"/>
<circle cx="802" cy="543" fill="#000080" r="25" stroke="#000080" stroke-width="5"/>
<circle cx="802" cy="943" fill="#000080" r="25" stroke="#000080" stroke-width="5"/>
</svg>
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论