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

Initial commit

上级
*.cir
*.xml
*.bak
/.vs
\ No newline at end of file
添加文件
这个 源代码变更 因为 太大 而不能显示。 你可以 浏览blob
添加文件
这个 源代码变更 因为 太大 而不能显示。 你可以 浏览blob
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<project id="9f9ed1d6-0d0e-4f81-9f67-979cbbbdb80a" name="DM1000" version="1">
<files>
<filefolder id="a9f57fc8-c239-4574-a5da-f8fa2760024b" name="子模块">
<file relativepath="ALU.dlsche"/>
<file relativepath="PC.dlsche"/>
<file relativepath="REG.dlsche"/>
<file relativepath="MEM.dlsche"/>
<file relativepath="CU.dlsche"/>
<file relativepath="uPC_NEXT.dlsche"/>
<file relativepath="MUL.dlsche"/>
<file relativepath="MUL_unit.dlsche"/>
</filefolder>
<filefolder id="80f1035e-e898-408b-bb0c-e69c72ad13b4" name="汇编源程序">
<file relativepath="ram.asm"/>
<file relativepath="ram.bat"/>
</filefolder>
<filefolder id="03f70f98-2bea-4829-91ee-a9e5f6ee0c87" name="微指令源程序">
<file relativepath="rom.masm"/>
<file relativepath="rom.bat"/>
</filefolder>
<filefolder id="be71b6f0-d920-4758-8b3a-3a343b490c2e" name="存储器映射文件">
<file relativepath="ram.rxm"/>
<file relativepath="rom.rxm"/>
</filefolder>
<file relativepath="DM1000.dlsche"/>
<file relativepath="README.md"/>
</files>
</project>
添加文件
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<svg height="4520" version="1.1" width="8454" xmlns="http://www.w3.org/2000/svg">
<polyline fill="none" points="1841 1474, 1771 1474, 1711 1474" 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="1711" y="1474">RIN_GATE_EN</text>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="2241" x2="2291" y1="1204" y2="1154"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="2241" x2="2291" y1="1234" y2="1184"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="2241" x2="2291" y1="1264" y2="1214"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="2241" x2="2291" y1="1294" y2="1244"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="2241" x2="2291" y1="1324" y2="1274"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="2241" x2="2291" y1="1354" y2="1304"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="2241" x2="2291" y1="1384" y2="1334"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="2241" x2="2291" y1="1414" y2="1364"/>
<polyline fill="none" points="2091 1204, 2241 1204" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="2091 1234, 2241 1234" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="2091 1264, 2241 1264" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="2091 1294, 2241 1294" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="2091 1324, 2241 1324" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="2091 1354, 2241 1354" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="2091 1384, 2241 1384" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="2091 1414, 2241 1414" 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="2121" y="1204">DBUS0</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="2121" y="1234">DBUS1</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="2121" y="1264">DBUS2</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="2121" y="1294">DBUS3</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="2121" y="1324">DBUS4</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="2121" y="1354">DBUS5</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="2121" y="1384">DBUS6</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="2121" y="1414">DBUS7</text>
<polyline fill="none" points="2781 1474, 2691 1474, 2601 1474" 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="2601" y="1474">ROUT_REG_EN</text>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="2561" x2="2611" y1="1464" y2="1414"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="2561" x2="2611" y1="1434" y2="1384"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="2561" x2="2611" y1="1404" y2="1354"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="2561" x2="2611" y1="1374" y2="1324"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="2561" x2="2611" y1="1344" y2="1294"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="2561" x2="2611" y1="1314" y2="1264"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="2561" x2="2611" y1="1284" y2="1234"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="2561" x2="2611" y1="1254" y2="1204"/>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="2661" y="1204">DBUS0</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="2661" y="1234">DBUS1</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="2661" y="1264">DBUS2</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="2661" y="1294">DBUS3</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="2661" y="1324">DBUS4</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="2661" y="1354">DBUS5</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="2661" y="1384">DBUS6</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="2661" y="1414">DBUS7</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="90" font-weight="400" text-anchor="start" x="441" y="1954">DBUS[7..0]</text>
<rect fill="#80ff80" height="1200" stroke="#800000" stroke-width="1" width="640" x="5781" y="344"/>
<text alignment-baseline="after-edge" fill="#000080" font-family="微软雅黑" font-size="180" font-weight="700" text-anchor="start" x="5781" y="304">ALU</text>
<text alignment-baseline="after-edge" fill="#000080" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="5781" y="344">ALU.dlsche</text>
<polygon fill="#ffff80" points="5781 864, 5806 839, 5856 839, 5881 864, 5856 889, 5806 889, 5781 864" 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="5893" y="864">CN</text>
<polygon fill="#ffff80" points="5781 934, 5806 909, 5856 909, 5881 934, 5856 959, 5806 959, 5781 934" 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="5893" y="934">FLAG_REG_EN</text>
<polygon fill="#ffff80" points="5781 444, 5806 419, 5856 419, 5881 444, 5856 469, 5806 469, 5781 444" 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="5893" y="444">S0</text>
<polygon fill="#ffff80" points="5781 514, 5806 489, 5856 489, 5881 514, 5856 539, 5806 539, 5781 514" 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="5893" y="514">S1</text>
<polygon fill="#ffff80" points="5781 584, 5806 559, 5856 559, 5881 584, 5856 609, 5806 609, 5781 584" 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="5893" y="584">S2</text>
<polygon fill="#ffff80" points="5781 1004, 5806 979, 5856 979, 5881 1004, 5856 1029, 5806 1029, 5781 1004" 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="5893" y="1004">W_REG_EN</text>
<polygon fill="#ffff80" points="5781 1074, 5806 1049, 5856 1049, 5881 1074, 5856 1099, 5806 1099, 5781 1074" 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="5893" y="1074">A_REG_EN</text>
<polygon fill="#ffff80" points="5781 1454, 5806 1429, 5856 1429, 5881 1454, 5856 1479, 5806 1479, 5781 1454" 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="5893" y="1454">CLK</text>
<polygon fill="#ffff80" points="5781 1154, 5806 1129, 5856 1129, 5881 1154, 5856 1179, 5806 1179, 5781 1154" 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="5893" y="1154">L_GATE_EN</text>
<polygon fill="#ffff80" points="5781 1234, 5806 1209, 5856 1209, 5881 1234, 5856 1259, 5806 1259, 5781 1234" 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="5893" y="1234">D_GATE_EN</text>
<polygon fill="#ffff80" points="5781 1314, 5806 1289, 5856 1289, 5881 1314, 5856 1339, 5806 1339, 5781 1314" 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="5893" y="1314">R_GATE_EN</text>
<polygon fill="#ffff80" points="6421 1384, 6396 1359, 6346 1359, 6321 1384, 6346 1409, 6396 1409, 6421 1384" 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="6282" y="1384">ZF</text>
<polygon fill="#ffff80" points="6421 1454, 6396 1429, 6346 1429, 6321 1454, 6346 1479, 6396 1479, 6421 1454" 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="6282" y="1454">CF</text>
<polygon fill="#ffff80" points="5781 724, 5806 699, 5856 699, 5881 724, 5856 749, 5806 749, 5781 724" 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="5893" y="724">C</text>
<polygon fill="#ffff80" points="5781 654, 5806 629, 5856 629, 5881 654, 5856 679, 5806 679, 5781 654" 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="5893" y="654">S3</text>
<polygon fill="#ffff80" points="5781 794, 5806 769, 5856 769, 5881 794, 5856 819, 5806 819, 5781 794" 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="5893" y="794">M</text>
<polygon fill="#ffff80" points="6091 1544, 6066 1519, 6066 1469, 6091 1444, 6116 1469, 6116 1519, 6091 1544" 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="6043" y="1414">DBUS[7..0]</text>
<polygon fill="#ffff80" points="5781 1384, 5806 1359, 5856 1359, 5881 1384, 5856 1409, 5806 1409, 5781 1384" 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="5893" y="1384">RESET</text>
<rect fill="#80ff80" height="1250" stroke="#800000" stroke-width="1" width="640" x="7001" y="304"/>
<text alignment-baseline="after-edge" fill="#000080" font-family="微软雅黑" font-size="180" font-weight="700" text-anchor="start" x="7001" y="244">REG</text>
<text alignment-baseline="after-edge" fill="#000080" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="7001" y="294">REG.dlsche</text>
<polygon fill="#ffff80" points="7001 404, 7026 379, 7076 379, 7101 404, 7076 429, 7026 429, 7001 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="7113" y="404">IR0</text>
<polygon fill="#ffff80" points="7001 484, 7026 459, 7076 459, 7101 484, 7076 509, 7026 509, 7001 484" 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="7113" y="484">IR1</text>
<polygon fill="#ffff80" points="7001 564, 7026 539, 7076 539, 7101 564, 7076 589, 7026 589, 7001 564" 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="7113" y="564">REG_WR</text>
<polygon fill="#ffff80" points="7001 654, 7026 629, 7076 629, 7101 654, 7076 679, 7026 679, 7001 654" 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="7113" y="654">REG_READ</text>
<polygon fill="#ffff80" points="7341 1554, 7316 1529, 7316 1479, 7341 1454, 7366 1479, 7366 1529, 7341 1554" 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="7273" y="1434">DBUS[7..0]</text>
<polygon fill="#ffff80" points="7001 1454, 7026 1429, 7076 1429, 7101 1454, 7076 1479, 7026 1479, 7001 1454" 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="7113" y="1454">CLK</text>
<polygon fill="#ffff80" points="7001 744, 7026 719, 7076 719, 7101 744, 7076 769, 7026 769, 7001 744" 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="7113" y="744">SP_REG_EN</text>
<polygon fill="#ffff80" points="7001 824, 7026 799, 7076 799, 7101 824, 7076 849, 7026 849, 7001 824" 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="7113" y="824">ASR_REG_EN</text>
<polygon fill="#ffff80" points="7001 894, 7026 869, 7076 869, 7101 894, 7076 919, 7026 919, 7001 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="7113" y="894">IA_REG_EN</text>
<polygon fill="#ffff80" points="7001 964, 7026 939, 7076 939, 7101 964, 7076 989, 7026 989, 7001 964" 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="7113" y="964">SP_GATE_EN</text>
<polygon fill="#ffff80" points="7001 1034, 7026 1009, 7076 1009, 7101 1034, 7076 1059, 7026 1059, 7001 1034" 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="7113" y="1034">ASR_GATE_EN</text>
<polygon fill="#ffff80" points="7001 1104, 7026 1079, 7076 1079, 7101 1104, 7076 1129, 7026 1129, 7001 1104" 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="7113" y="1104">IA_GATE_EN</text>
<polygon fill="#ffff80" points="7001 1264, 7026 1239, 7076 1239, 7101 1264, 7076 1289, 7026 1289, 7001 1264" 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="7113" y="1264">CSP_LOAD</text>
<polygon fill="#ffff80" points="7001 1344, 7026 1319, 7076 1319, 7101 1344, 7076 1369, 7026 1369, 7001 1344" 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="7113" y="1344">CSP_U\D</text>
<polygon fill="#ffff80" points="7001 1174, 7026 1149, 7076 1149, 7101 1174, 7076 1199, 7026 1199, 7001 1174" 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="7113" y="1174">CSP_GATE_EN</text>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="4371" x2="4421" y1="2904" y2="2954"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="4371" x2="4421" y1="2934" y2="2984"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="4371" x2="4421" y1="2964" y2="3014"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="4371" x2="4421" y1="2994" y2="3044"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="4371" x2="4421" y1="3024" y2="3074"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="4371" x2="4421" y1="3054" y2="3104"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="4371" x2="4421" y1="3084" y2="3134"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="4371" x2="4421" y1="3114" y2="3164"/>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="4291" y="3224">MAR_REG_EN</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="4421" y="2954">DBUS0</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="4421" y="2984">DBUS1</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="4421" y="3014">DBUS2</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="4421" y="3044">DBUS3</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="4421" y="3074">DBUS4</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="4421" y="3104">DBUS5</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="4421" y="3134">DBUS6</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="4421" y="3164">DBUS7</text>
<rect fill="#80ff80" height="1100" stroke="#800000" stroke-width="1" width="740" x="4171" y="444"/>
<text alignment-baseline="after-edge" fill="#000080" font-family="微软雅黑" font-size="180" font-weight="700" text-anchor="start" x="4171" y="394">PC</text>
<text alignment-baseline="after-edge" fill="#000080" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="4171" y="444">PC.dlsche</text>
<polygon fill="#ffff80" points="4171 1454, 4196 1429, 4246 1429, 4271 1454, 4246 1479, 4196 1479, 4171 1454" 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="4283" y="1454">CF</text>
<polygon fill="#ffff80" points="4171 1384, 4196 1359, 4246 1359, 4271 1384, 4246 1409, 4196 1409, 4171 1384" 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="4283" y="1384">ZF</text>
<polygon fill="#ffff80" points="4171 594, 4196 569, 4246 569, 4271 594, 4246 619, 4196 619, 4171 594" 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="4283" y="594">IR2</text>
<polygon fill="#ffff80" points="4171 694, 4196 669, 4246 669, 4271 694, 4246 719, 4196 719, 4171 694" 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="4283" y="694">IR3</text>
<polygon fill="#ffff80" points="4171 794, 4196 769, 4246 769, 4271 794, 4246 819, 4196 819, 4171 794" 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="4283" y="794">PC_LOAD_EN</text>
<polygon fill="#ffff80" points="4171 884, 4196 859, 4246 859, 4271 884, 4246 909, 4196 909, 4171 884" 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="4283" y="884">PC_A_GATE_EN</text>
<polygon fill="#ffff80" points="4171 1234, 4196 1209, 4246 1209, 4271 1234, 4246 1259, 4196 1259, 4171 1234" 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="4283" y="1234">CLK</text>
<polygon fill="#ffff80" points="4171 984, 4196 959, 4246 959, 4271 984, 4246 1009, 4196 1009, 4171 984" 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="4283" y="984">PC_D_GATE_EN</text>
<polygon fill="#ffff80" points="4531 1544, 4506 1519, 4506 1469, 4531 1444, 4556 1469, 4556 1519, 4531 1544" 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="4463" y="1414">DBUS[7..0]</text>
<polygon fill="#ffff80" points="4911 944, 4886 919, 4836 919, 4811 944, 4836 969, 4886 969, 4911 944" 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="4662" y="944">ABUS[7..0]</text>
<polygon fill="#ffff80" points="4171 514, 4196 489, 4246 489, 4271 514, 4246 539, 4196 539, 4171 514" 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="4283" y="514">PC_ADD</text>
<polygon fill="#ffff80" points="4171 1144, 4196 1119, 4246 1119, 4271 1144, 4246 1169, 4196 1169, 4171 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="4283" y="1144">RESET</text>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="5361" x2="5411" y1="2954" y2="2904"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="5361" x2="5411" y1="2984" y2="2934"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="5361" x2="5411" y1="3014" y2="2964"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="5361" x2="5411" y1="3044" y2="2994"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="5361" x2="5411" y1="3074" y2="3024"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="5361" x2="5411" y1="3104" y2="3054"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="5361" x2="5411" y1="3134" y2="3084"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="5361" x2="5411" y1="3164" y2="3114"/>
<rect fill="#80ff80" height="890" stroke="#800000" stroke-width="1" width="940" x="2181" y="3364"/>
<text alignment-baseline="after-edge" fill="#000080" font-family="微软雅黑" font-size="180" font-weight="700" text-anchor="start" x="2161" y="3334">MEM</text>
<text alignment-baseline="after-edge" fill="#000080" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="2181" y="3364">MEM.dlsche</text>
<polygon fill="#ffff80" points="2181 3514, 2206 3489, 2256 3489, 2281 3514, 2256 3539, 2206 3539, 2181 3514" 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="2293" y="3514">ABUS[7..0]</text>
<polygon fill="#ffff80" points="2181 3604, 2206 3579, 2256 3579, 2281 3604, 2256 3629, 2206 3629, 2181 3604" 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="2293" y="3604">MEM_WR</text>
<polygon fill="#ffff80" points="2181 3694, 2206 3669, 2256 3669, 2281 3694, 2256 3719, 2206 3719, 2181 3694" 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="2293" y="3694">MEM_GATE_EN</text>
<polygon fill="#ffff80" points="2181 3894, 2206 3869, 2256 3869, 2281 3894, 2256 3919, 2206 3919, 2181 3894" 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="2293" y="3894">CLK</text>
<polygon fill="#ffff80" points="2841 3364, 2816 3389, 2816 3439, 2841 3464, 2866 3439, 2866 3389, 2841 3364" 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="2772" y="3484">DBUS[7..0]</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="90" font-weight="400" text-anchor="start" x="431" y="2444">ABUS[7..0]</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="4811" y="3224">MAR_GATE_EN</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="2691" y="1504">CLK</text>
<polyline fill="none" points="2781 1504, 2691 1504" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1231" x2="1331" y1="1594" y2="1594"/>
<rect fill="#ffffb0" height="100" stroke="#800000" stroke-width="5" width="100" x="1131" y="1544"/>
<polyline fill="none" points="1141 1494, 1221 1494" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1181 1494, 1181 1544" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1151 1624, 1181 1624, 1181 1564, 1211 1564" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="1171" y="1481">C2</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="1041" y="1604">SCLK</text>
<text alignment-baseline="after-edge" fill="#000080" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="1131" y="1694">Key = A</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="65" font-weight="400" text-anchor="start" x="1731" y="3894">CLK</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="4291" y="3254">CLK</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1081" x2="1181" y1="3894" y2="3894"/>
<rect fill="#ffffb0" height="100" stroke="#800000" stroke-width="5" width="100" x="981" y="3844"/>
<polyline fill="none" points="991 3794, 1071 3794" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1031 3794, 1031 3844" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1001 3924, 1031 3924, 1031 3864, 1061 3864" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="65" font-weight="700" text-anchor="start" x="901" y="3781">CLOCK</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="891" y="3904">SCLK</text>
<text alignment-baseline="after-edge" fill="#000080" font-family="Times New Roman" font-size="65" font-weight="400" text-anchor="start" x="911" y="4024">Key = C</text>
<polyline fill="none" points="4811 3224, 4961 3224" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="2781 1204, 2611 1204" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="2611 1234, 2781 1234" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="2781 1264, 2611 1264" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="2611 1294, 2781 1294" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="2781 1324, 2611 1324" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="2611 1354, 2781 1354" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="2781 1384, 2611 1384" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="2781 1414, 2611 1414" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="4471 2954, 4421 2954" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="4471 2984, 4421 2984" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="4471 3014, 4421 3014" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="4421 3044, 4471 3044" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="4421 3074, 4471 3074" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="4421 3104, 4471 3104" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="4421 3134, 4471 3134" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="4471 3164, 4421 3164" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1441" x2="1391" y1="1204" y2="1204"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1474" y="1204">D0</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1441" x2="1391" y1="1234" y2="1234"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1474" y="1234">D1</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1441" x2="1391" y1="1264" y2="1264"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1474" y="1264">D2</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1441" x2="1391" y1="1294" y2="1294"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1474" y="1294">D3</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1441" x2="1391" y1="1324" y2="1324"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1474" y="1324">D4</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1441" x2="1391" y1="1354" y2="1354"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1474" y="1354">D5</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1441" x2="1391" y1="1384" y2="1384"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1474" y="1384">D6</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1441" x2="1391" y1="1414" y2="1414"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1474" y="1414">D7</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1691" x2="1741" y1="1204" y2="1204"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1658" y="1204">Q0</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1691" x2="1741" y1="1234" y2="1234"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1658" y="1234">Q1</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1691" x2="1741" y1="1264" y2="1264"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1658" y="1264">Q2</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1691" x2="1741" y1="1294" y2="1294"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1658" y="1294">Q3</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1691" x2="1741" y1="1324" y2="1324"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1658" y="1324">Q4</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1691" x2="1741" y1="1354" y2="1354"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1658" y="1354">Q5</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1691" x2="1741" y1="1384" y2="1384"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1658" y="1384">Q6</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1691" x2="1741" y1="1414" y2="1414"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1658" y="1414">Q7</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1431" x2="1391" y1="1474" y2="1474"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1494" y="1474">^EN</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1441" x2="1391" y1="1504" y2="1504"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1494" y="1504">CLK</text>
<rect fill="#c0dcc0" fill-opacity="0.5" height="400" stroke="#000000" stroke-width="5" width="250" x="1441" y="1154"/>
<polyline fill="none" points="1441 1494, 1451 1504, 1441 1514" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<circle cx="1436" cy="1474" fill="#ffffff" r="5" stroke="#000000" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="90" font-weight="700" text-anchor="start" x="1471" y="1144">RIN</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="1531" y="1594">REG8</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2831" x2="2781" y1="1204" y2="1204"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="2864" y="1204">D0</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2831" x2="2781" y1="1234" y2="1234"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="2864" y="1234">D1</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2831" x2="2781" y1="1264" y2="1264"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="2864" y="1264">D2</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2831" x2="2781" y1="1294" y2="1294"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="2864" y="1294">D3</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2831" x2="2781" y1="1324" y2="1324"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="2864" y="1324">D4</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2831" x2="2781" y1="1354" y2="1354"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="2864" y="1354">D5</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2831" x2="2781" y1="1384" y2="1384"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="2864" y="1384">D6</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2831" x2="2781" y1="1414" y2="1414"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="2864" y="1414">D7</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="3081" x2="3131" y1="1204" y2="1204"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="3048" y="1204">Q0</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="3081" x2="3131" y1="1234" y2="1234"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="3048" y="1234">Q1</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="3081" x2="3131" y1="1264" y2="1264"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="3048" y="1264">Q2</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="3081" x2="3131" y1="1294" y2="1294"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="3048" y="1294">Q3</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="3081" x2="3131" y1="1324" y2="1324"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="3048" y="1324">Q4</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="3081" x2="3131" y1="1354" y2="1354"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="3048" y="1354">Q5</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="3081" x2="3131" y1="1384" y2="1384"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="3048" y="1384">Q6</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="3081" x2="3131" y1="1414" y2="1414"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="3048" y="1414">Q7</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2821" x2="2781" y1="1474" y2="1474"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="2884" y="1474">^EN</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2831" x2="2781" y1="1504" y2="1504"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="2884" y="1504">CLK</text>
<rect fill="#c0dcc0" fill-opacity="0.5" height="400" stroke="#000000" stroke-width="5" width="250" x="2831" y="1154"/>
<polyline fill="none" points="2831 1494, 2841 1504, 2831 1514" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<circle cx="2826" cy="1474" fill="#ffffff" r="5" stroke="#000000" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="90" font-weight="700" text-anchor="start" x="2811" y="1144">ROUT</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="2921" y="1594">REG8</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="4521" x2="4471" y1="2954" y2="2954"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="4554" y="2954">D0</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="4521" x2="4471" y1="2984" y2="2984"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="4554" y="2984">D1</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="4521" x2="4471" y1="3014" y2="3014"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="4554" y="3014">D2</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="4521" x2="4471" y1="3044" y2="3044"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="4554" y="3044">D3</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="4521" x2="4471" y1="3074" y2="3074"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="4554" y="3074">D4</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="4521" x2="4471" y1="3104" y2="3104"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="4554" y="3104">D5</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="4521" x2="4471" y1="3134" y2="3134"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="4554" y="3134">D6</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="4521" x2="4471" y1="3164" y2="3164"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="4554" y="3164">D7</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="4771" x2="4821" y1="2954" y2="2954"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="4738" y="2954">Q0</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="4771" x2="4821" y1="2984" y2="2984"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="4738" y="2984">Q1</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="4771" x2="4821" y1="3014" y2="3014"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="4738" y="3014">Q2</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="4771" x2="4821" y1="3044" y2="3044"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="4738" y="3044">Q3</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="4771" x2="4821" y1="3074" y2="3074"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="4738" y="3074">Q4</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="4771" x2="4821" y1="3104" y2="3104"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="4738" y="3104">Q5</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="4771" x2="4821" y1="3134" y2="3134"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="4738" y="3134">Q6</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="4771" x2="4821" y1="3164" y2="3164"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="4738" y="3164">Q7</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="4511" x2="4471" y1="3224" y2="3224"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="4574" y="3224">^EN</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="4521" x2="4471" y1="3254" y2="3254"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="4574" y="3254">CLK</text>
<rect fill="#c0dcc0" fill-opacity="0.5" height="400" stroke="#000000" stroke-width="5" width="250" x="4521" y="2904"/>
<polyline fill="none" points="4521 3244, 4531 3254, 4521 3264" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<circle cx="4516" cy="3224" fill="#ffffff" r="5" stroke="#000000" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="90" font-weight="700" text-anchor="start" x="4511" y="2904">MAR</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="4611" y="3344">REG8</text>
<polyline fill="none" points="1841 1204, 1741 1204" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1741 1234, 1841 1234" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1841 1264, 1741 1264" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1741 1294, 1841 1294" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1841 1324, 1741 1324" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1741 1354, 1841 1354" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1841 1384, 1741 1384" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1741 1414, 1841 1414" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="5211 2954, 5361 2954" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="5211 2984, 5361 2984" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="5211 3014, 5361 3014" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="5211 3044, 5361 3044" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="5211 3074, 5361 3074" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="5211 3104, 5361 3104" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="5211 3134, 5361 3134" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="5211 3164, 5361 3164" 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="5231" y="2954">ABUS0</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="5231" y="2984">ABUS1</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="5231" y="3014">ABUS2</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="5231" y="3044">ABUS3</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="5231" y="3074">ABUS4</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="5231" y="3104">ABUS5</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="5231" y="3134">ABUS6</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="5231" y="3164">ABUS7</text>
<polyline fill="none" points="8171 2444, 1331 2444, 921 2444, 231 2444, 31 2444" stroke="#ff8000" stroke-linecap="round" stroke-linejoin="round" stroke-width="20"/>
<polyline fill="none" points="4821 2954, 4961 2954" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="4821 2984, 4961 2984" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="4961 3014, 4821 3014" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="4821 3044, 4961 3044" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="4821 3074, 4961 3074" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="4821 3104, 4961 3104" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="4821 3134, 4961 3134" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="4961 3164, 4821 3164" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<rect fill="#80ff80" height="1400" stroke="#800000" stroke-width="1" width="2400" x="6031" y="2854"/>
<text alignment-baseline="after-edge" fill="#000080" font-family="微软雅黑" font-size="180" font-weight="700" text-anchor="start" x="6031" y="2804">CU</text>
<text alignment-baseline="after-edge" fill="#000080" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="6031" y="2854">CU.dlsche</text>
<polygon fill="#ffff80" points="6031 2954, 6056 2929, 6106 2929, 6131 2954, 6106 2979, 6056 2979, 6031 2954" 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="6143" y="2954">DBUS[7..0]</text>
<polygon fill="#ffff80" points="6431 2854, 6406 2879, 6406 2929, 6431 2954, 6456 2929, 6456 2879, 6431 2854" 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="6412" y="2994">IR0</text>
<polygon fill="#ffff80" points="6531 2854, 6506 2879, 6506 2929, 6531 2954, 6556 2929, 6556 2879, 6531 2854" 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="6512" y="2994">IR1</text>
<polygon fill="#ffff80" points="6631 2854, 6606 2879, 6606 2929, 6631 2954, 6656 2929, 6656 2879, 6631 2854" 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="6612" y="2994">IR2</text>
<polygon fill="#ffff80" points="6731 2854, 6706 2879, 6706 2929, 6731 2954, 6756 2929, 6756 2879, 6731 2854" 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="6712" y="2994">IR3</text>
<polygon fill="#ffff80" points="6931 2854, 6906 2879, 6906 2929, 6931 2954, 6956 2929, 6956 2879, 6931 2854" 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="6912" y="2994">S0</text>
<polygon fill="#ffff80" points="7031 2854, 7006 2879, 7006 2929, 7031 2954, 7056 2929, 7056 2879, 7031 2854" 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="7012" y="2994">S1</text>
<polygon fill="#ffff80" points="7131 2854, 7106 2879, 7106 2929, 7131 2954, 7156 2929, 7156 2879, 7131 2854" 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="7112" y="2994">S2</text>
<polygon fill="#ffff80" points="7531 2854, 7506 2879, 7506 2929, 7531 2954, 7556 2929, 7556 2879, 7531 2854" 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" transform="rotate(90 7531 2975)" x="7531" y="2975">A_REG_EN</text>
<polygon fill="#ffff80" points="7631 2854, 7606 2879, 7606 2929, 7631 2954, 7656 2929, 7656 2879, 7631 2854" 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" transform="rotate(90 7631 2977)" x="7631" y="2977">W_REG_EN</text>
<polygon fill="#ffff80" points="7731 2854, 7706 2879, 7706 2929, 7731 2954, 7756 2929, 7756 2879, 7731 2854" 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" transform="rotate(90 7731 2977)" x="7731" y="2977">FLAG_REG_EN</text>
<polygon fill="#ffff80" points="7831 2854, 7806 2879, 7806 2929, 7831 2954, 7856 2929, 7856 2879, 7831 2854" 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" transform="rotate(90 7831 2977)" x="7831" y="2977">CN</text>
<polygon fill="#ffff80" points="7331 4254, 7306 4229, 7306 4179, 7331 4154, 7356 4179, 7356 4229, 7331 4254" 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" transform="rotate(-90 7321 4132)" x="7321" y="4132">ASR_GATE_EN</text>
<polygon fill="#ffff80" points="7231 4254, 7206 4229, 7206 4179, 7231 4154, 7256 4179, 7256 4229, 7231 4254" 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" transform="rotate(-90 7231 4132)" x="7231" y="4132">L_GATE_EN</text>
<polygon fill="#ffff80" points="7131 4254, 7106 4229, 7106 4179, 7131 4154, 7156 4179, 7156 4229, 7131 4254" 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" transform="rotate(-90 7131 4132)" x="7131" y="4132">R_GATE_EN</text>
<polygon fill="#ffff80" points="7031 4254, 7006 4229, 7006 4179, 7031 4154, 7056 4179, 7056 4229, 7031 4254" 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" transform="rotate(-90 7031 4132)" x="7031" y="4132">D_GATE_EN</text>
<polygon fill="#ffff80" points="6931 4254, 6906 4229, 6906 4179, 6931 4154, 6956 4179, 6956 4229, 6931 4254" 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" transform="rotate(-90 6931 4142)" x="6931" y="4142">PC_D_GATE_EN</text>
<polygon fill="#ffff80" points="6831 4254, 6806 4229, 6806 4179, 6831 4154, 6856 4179, 6856 4229, 6831 4254" 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" transform="rotate(-90 6831 4142)" x="6831" y="4142">SP_GATE_EN</text>
<polygon fill="#ffff80" points="6731 4254, 6706 4229, 6706 4179, 6731 4154, 6756 4179, 6756 4229, 6731 4254" 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" transform="rotate(-90 6721 4132)" x="6721" y="4132">IA_GATE_EN</text>
<polygon fill="#ffff80" points="6631 4254, 6606 4229, 6606 4179, 6631 4154, 6656 4179, 6656 4229, 6631 4254" 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" transform="rotate(-90 6631 4142)" x="6631" y="4142">RIN_GATE_EN</text>
<polygon fill="#ffff80" points="8431 3154, 8406 3129, 8356 3129, 8331 3154, 8356 3179, 8406 3179, 8431 3154" 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="8094" y="3154">SP_REG_EN</text>
<polygon fill="#ffff80" points="8431 3754, 8406 3729, 8356 3729, 8331 3754, 8356 3779, 8406 3779, 8431 3754" 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="8094" y="3754">ROUT_REG_EN</text>
<polygon fill="#ffff80" points="8431 3354, 8406 3329, 8356 3329, 8331 3354, 8356 3379, 8406 3379, 8431 3354" 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="8094" y="3354">MAR_GATE_EN</text>
<polygon fill="#ffff80" points="8431 3454, 8406 3429, 8356 3429, 8331 3454, 8356 3479, 8406 3479, 8431 3454" 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="8094" y="3454">MAR_REG_EN</text>
<polygon fill="#ffff80" points="8431 3554, 8406 3529, 8356 3529, 8331 3554, 8356 3579, 8406 3579, 8431 3554" 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="8094" y="3554">PC_LOAD_EN</text>
<polygon fill="#ffff80" points="8431 3654, 8406 3629, 8356 3629, 8331 3654, 8356 3679, 8406 3679, 8431 3654" 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="8094" y="3654">PC_A_GATE_EN</text>
<polygon fill="#ffff80" points="7431 4254, 7406 4229, 7406 4179, 7431 4154, 7456 4179, 7456 4229, 7431 4254" 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" transform="rotate(-90 7431 4132)" x="7431" y="4132">CSP_GATE_EN</text>
<polygon fill="#ffff80" points="7931 2854, 7906 2879, 7906 2929, 7931 2954, 7956 2929, 7956 2879, 7931 2854" 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" transform="rotate(90 7931 2975)" x="7931" y="2975">REG_WR</text>
<polygon fill="#ffff80" points="8431 3254, 8406 3229, 8356 3229, 8331 3254, 8356 3279, 8406 3279, 8431 3254" 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="8092" y="3254">ASR_REG_EN</text>
<polygon fill="#ffff80" points="8431 3854, 8406 3829, 8356 3829, 8331 3854, 8356 3879, 8406 3879, 8431 3854" 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="8102" y="3844">MEM_WR</text>
<polygon fill="#ffff80" points="7531 4254, 7506 4229, 7506 4179, 7531 4154, 7556 4179, 7556 4229, 7531 4254" 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" transform="rotate(-90 7531 4132)" x="7531" y="4132">MEM_GATE_EN</text>
<polygon fill="#ffff80" points="8431 3954, 8406 3929, 8356 3929, 8331 3954, 8356 3979, 8406 3979, 8431 3954" 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="8102" y="3954">IA_REG_EN</text>
<polygon fill="#ffff80" points="7231 2854, 7206 2879, 7206 2929, 7231 2954, 7256 2929, 7256 2879, 7231 2854" 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="7212" y="2994">S3</text>
<polygon fill="#ffff80" points="7331 2854, 7306 2879, 7306 2929, 7331 2954, 7356 2929, 7356 2879, 7331 2854" 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="7322" y="2994">C</text>
<polygon fill="#ffff80" points="7431 2854, 7406 2879, 7406 2929, 7431 2954, 7456 2929, 7456 2879, 7431 2854" 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="7422" y="2994">M</text>
<polygon fill="#ffff80" points="7631 4254, 7606 4229, 7606 4179, 7631 4154, 7656 4179, 7656 4229, 7631 4254" 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" transform="rotate(-90 7631 4132)" x="7631" y="4132">REG_READ</text>
<polygon fill="#ffff80" points="8431 3054, 8406 3029, 8356 3029, 8331 3054, 8356 3079, 8406 3079, 8431 3054" 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="8092" y="3054">CSP_LOAD</text>
<polygon fill="#ffff80" points="6031 3974, 6056 3949, 6106 3949, 6131 3974, 6106 3999, 6056 3999, 6031 3974" 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="6143" y="3974">CLK</text>
<polygon fill="#ffff80" points="7931 4254, 7906 4229, 7906 4179, 7931 4154, 7956 4179, 7956 4229, 7931 4254" 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" transform="rotate(-90 7931 4142)" x="7931" y="4142">PC_ADD</text>
<polygon fill="#ffff80" points="8431 4054, 8406 4029, 8356 4029, 8331 4054, 8356 4079, 8406 4079, 8431 4054" 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="8102" y="4054">CSP_U\D</text>
<polygon fill="#ffff80" points="6031 3874, 6056 3849, 6106 3849, 6131 3874, 6106 3899, 6056 3899, 6031 3874" 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="6143" y="3874">RESET</text>
<polyline fill="none" points="6031 2954, 5831 2954, 5831 1954" stroke="#000080" stroke-linecap="round" stroke-linejoin="round" stroke-width="20"/>
<polyline fill="none" points="7341 1554, 7341 1954" stroke="#000080" stroke-linecap="round" stroke-linejoin="round" stroke-width="20"/>
<polyline fill="none" points="2841 1954, 2841 2964, 2841 3364" stroke="#000080" stroke-linecap="round" stroke-linejoin="round" stroke-width="20"/>
<polyline fill="none" points="2181 3514, 1781 3514, 1781 2444" stroke="#ff8000" stroke-linecap="round" stroke-linejoin="round" stroke-width="20"/>
<polyline fill="none" points="3601 44, 3601 4474" stroke="#000000" stroke-dasharray="200,100" stroke-linecap="round" stroke-linejoin="round" stroke-width="50"/>
<polyline fill="none" points="4911 944, 5131 944, 5131 2444" stroke="#ff8000" stroke-linecap="round" stroke-linejoin="round" stroke-width="20"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="微软雅黑" font-size="400" font-weight="700" text-anchor="start" x="961" y="614">DM1000</text>
<polyline fill="none" points="8171 1954, 31 1954" stroke="#000080" stroke-linecap="round" stroke-linejoin="round" stroke-width="20"/>
<polyline fill="none" points="4471 3224, 4291 3224" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="4471 3254, 4291 3254" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1271 1054, 1271 1204, 1391 1204" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1131 1054, 1131 1414, 1391 1414" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1251 1054, 1251 1234, 1391 1234" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1231 1054, 1231 1264, 1391 1264" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1211 1054, 1211 1294, 1391 1294" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1191 1054, 1191 1324, 1391 1324" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1171 1054, 1171 1354, 1391 1354" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1151 1054, 1151 1384, 1391 1384" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1331 1594, 1331 1504, 1391 1504" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1271" x2="1271" y1="1004" y2="1054"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="微软雅黑" font-size="17" font-weight="700" text-anchor="end" x="1266" y="1044">0</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1251" x2="1251" y1="1004" y2="1054"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="微软雅黑" font-size="17" font-weight="700" text-anchor="end" x="1246" y="1044">1</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1231" x2="1231" y1="1004" y2="1054"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="微软雅黑" font-size="17" font-weight="700" text-anchor="end" x="1226" y="1044">2</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1211" x2="1211" y1="1004" y2="1054"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="微软雅黑" font-size="17" font-weight="700" text-anchor="end" x="1206" y="1044">3</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1191" x2="1191" y1="1004" y2="1054"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="微软雅黑" font-size="17" font-weight="700" text-anchor="end" x="1186" y="1044">4</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1171" x2="1171" y1="1004" y2="1054"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="微软雅黑" font-size="17" font-weight="700" text-anchor="end" x="1166" y="1044">5</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1151" x2="1151" y1="1004" y2="1054"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="微软雅黑" font-size="17" font-weight="700" text-anchor="end" x="1146" y="1044">6</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1131" x2="1131" y1="1004" y2="1054"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="微软雅黑" font-size="17" font-weight="700" text-anchor="end" x="1126" y="1044">7</text>
<rect fill="#000000" fill-opacity="0.5" height="50" stroke="#a0a0a4" stroke-width="1" width="160" x="1121" y="954"/>
<text alignment-baseline="after-edge" fill="#ff0000" font-family="微软雅黑" font-size="30" font-weight="400" text-anchor="start" x="1181" y="1001">00</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="1299" y="1000">1</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="15" font-weight="700" text-anchor="start" x="1131" y="943">INTER_DIGITAL8</text>
<polyline fill="none" points="2291 1154, 2291 1954" stroke="#000080" stroke-linecap="round" stroke-linejoin="round" stroke-width="20"/>
<polyline fill="none" points="2561 1254, 2561 1954" stroke="#000080" stroke-linecap="round" stroke-linejoin="round" stroke-width="20"/>
<polyline fill="none" points="4371 3114, 4371 1954" stroke="#000080" stroke-linecap="round" stroke-linejoin="round" stroke-width="20"/>
<polyline fill="none" points="5411 3114, 5411 2444" stroke="#ff8000" stroke-linecap="round" stroke-linejoin="round" stroke-width="20"/>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1891" x2="1841" y1="1204" y2="1204"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1924" y="1204">A0</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1891" x2="1841" y1="1234" y2="1234"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1924" y="1234">A1</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1891" x2="1841" y1="1264" y2="1264"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1924" y="1264">A2</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1891" x2="1841" y1="1294" y2="1294"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1924" y="1294">A3</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1891" x2="1841" y1="1324" y2="1324"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1924" y="1324">A4</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1891" x2="1841" y1="1354" y2="1354"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1924" y="1354">A5</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1891" x2="1841" y1="1384" y2="1384"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1924" y="1384">A6</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1891" x2="1841" y1="1414" y2="1414"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1924" y="1414">A7</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2041" x2="2091" y1="1204" y2="1204"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="2008" y="1204">D0</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2041" x2="2091" y1="1234" y2="1234"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="2008" y="1234">D1</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2041" x2="2091" y1="1264" y2="1264"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="2008" y="1264">D2</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2041" x2="2091" y1="1294" y2="1294"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="2008" y="1294">D3</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2041" x2="2091" y1="1324" y2="1324"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="2008" y="1324">D4</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2041" x2="2091" y1="1354" y2="1354"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="2008" y="1354">D5</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2041" x2="2091" y1="1384" y2="1384"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="2008" y="1384">D6</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2041" x2="2091" y1="1414" y2="1414"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="2008" y="1414">D7</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1881" x2="1841" y1="1474" y2="1474"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1935" y="1473">^EN</text>
<rect fill="#a0c0ff" fill-opacity="0.5" height="350" stroke="#000000" stroke-width="5" width="150" x="1891" y="1164"/>
<circle cx="1886" cy="1474" fill="none" r="5" stroke="#000000" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="60" font-weight="700" text-anchor="start" x="1851" y="1144">RIN_gate</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="1891" y="1564">BUS_TRANS8</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="5011" x2="4961" y1="2954" y2="2954"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="5044" y="2954">A0</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="5011" x2="4961" y1="2984" y2="2984"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="5044" y="2984">A1</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="5011" x2="4961" y1="3014" y2="3014"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="5044" y="3014">A2</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="5011" x2="4961" y1="3044" y2="3044"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="5044" y="3044">A3</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="5011" x2="4961" y1="3074" y2="3074"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="5044" y="3074">A4</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="5011" x2="4961" y1="3104" y2="3104"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="5044" y="3104">A5</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="5011" x2="4961" y1="3134" y2="3134"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="5044" y="3134">A6</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="5011" x2="4961" y1="3164" y2="3164"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="5044" y="3164">A7</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="5161" x2="5211" y1="2954" y2="2954"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="5128" y="2954">D0</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="5161" x2="5211" y1="2984" y2="2984"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="5128" y="2984">D1</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="5161" x2="5211" y1="3014" y2="3014"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="5128" y="3014">D2</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="5161" x2="5211" y1="3044" y2="3044"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="5128" y="3044">D3</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="5161" x2="5211" y1="3074" y2="3074"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="5128" y="3074">D4</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="5161" x2="5211" y1="3104" y2="3104"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="5128" y="3104">D5</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="5161" x2="5211" y1="3134" y2="3134"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="5128" y="3134">D6</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="5161" x2="5211" y1="3164" y2="3164"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="5128" y="3164">D7</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="5001" x2="4961" y1="3224" y2="3224"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="5055" y="3223">^EN</text>
<rect fill="#a0c0ff" fill-opacity="0.5" height="350" stroke="#000000" stroke-width="5" width="150" x="5011" y="2914"/>
<circle cx="5006" cy="3224" fill="none" r="5" stroke="#000000" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="45" font-weight="700" text-anchor="start" x="4991" y="2904">MAR_gate</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="5011" y="3314">BUS_TRANS8</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1491" x2="1431" y1="3894" y2="3894"/>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1571" x2="1631" y1="3894" y2="3894"/>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1531" x2="1531" y1="3934" y2="3994"/>
<circle cx="1531" cy="3926" fill="none" r="5" stroke="#000000" stroke-width="5"/>
<polygon fill="#ffffff" fill-opacity="0.5" points="1491 3844, 1491 3944, 1571 3894, 1491 3844" 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="1541" y="3814">U1</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="1491" y="3844">LTri_Gate</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1491" x2="1431" y1="4094" y2="4094"/>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1571" x2="1631" y1="4094" y2="4094"/>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1531" x2="1531" y1="4134" y2="4194"/>
<circle cx="1531" cy="4126" fill="none" r="5" stroke="#000000" stroke-width="5"/>
<polygon fill="#ffffff" fill-opacity="0.5" points="1491 4044, 1491 4144, 1571 4094, 1491 4044" 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="1541" y="4014">U2</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="1491" y="4044">LTri_Gate</text>
<polyline fill="none" points="1631 3894, 1731 3894, 1731 4094, 1631 4094" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1431 3894, 1181 3894" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1431 4094, 1181 4094" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1081" x2="1181" y1="4094" y2="4094"/>
<rect fill="#ffffb0" fill-opacity="0.5" height="100" stroke="#800000" stroke-width="5" width="100" x="981" y="4044"/>
<polyline fill="none" points="991 4104, 1001 4104, 1001 4074, 1021 4074, 1021 4104, 1041 4104, 1041 4074, 1061 4074, 1061 4104" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="1021" y="4034">C1</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="977" y="4190">CLOCK1</text>
<text alignment-baseline="after-edge" fill="#000080" font-family="微软雅黑" font-size="25" font-weight="700" text-anchor="start" x="1091" y="4084">100Hz</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1081" x2="1181" y1="4294" y2="4294"/>
<text alignment-baseline="after-edge" fill="#000080" font-family="微软雅黑" font-size="30" font-weight="700" text-anchor="start" x="1022" y="4314">1</text>
<rect fill="#ffffff" fill-opacity="0.5" height="60" stroke="#800000" stroke-width="5" width="100" x="981" y="4264"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="1025" y="4255">2</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="942" y="4406">INTER_DIGITAL</text>
<text alignment-baseline="after-edge" fill="#000080" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="982" y="4367">Key = S</text>
<polyline fill="none" points="1181 4294, 1531 4294, 1531 4194" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1341" x2="1281" y1="3994" y2="3994"/>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1421" x2="1481" y1="3994" y2="3994"/>
<circle cx="1417" cy="3994" fill="none" r="5" stroke="#000000" stroke-width="5"/>
<polygon fill="#ffffff" fill-opacity="0.5" points="1341 3944, 1341 4044, 1411 3994, 1341 3944" 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="1361" y="3958">U3</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="1341" y="4090">NOT</text>
<polyline fill="none" points="1531 3994, 1481 3994" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1281 3994, 1231 3994, 1231 4294" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="2181 3894, 1731 3894" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1081" x2="1181" y1="3314" y2="3314"/>
<rect fill="#ffffb0" height="100" stroke="#800000" stroke-width="5" width="100" x="981" y="3264"/>
<polyline fill="none" points="991 3214, 1071 3214" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1031 3214, 1031 3264" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1001 3344, 1031 3344, 1031 3284, 1061 3284" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="1021" y="3201">C3</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="891" y="3324">SCLK</text>
<text alignment-baseline="after-edge" fill="#000080" font-family="Times New Roman" font-size="65" font-weight="400" text-anchor="start" x="911" y="3474">Key = R</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="65" font-weight="700" text-anchor="start" x="1181" y="3314">RESET</text>
<polyline fill="none" points="6421 1384, 6501 1384, 6501 1644, 4071 1644, 4071 1384, 4171 1384" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="6421 1454, 6461 1454, 6461 1594, 4121 1594, 4121 1454, 4171 1454" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="4531 1544, 4531 1954" stroke="#000080" stroke-linecap="round" stroke-linejoin="round" stroke-width="20"/>
<polyline fill="none" points="6091 1544, 6091 1954" stroke="#000080" stroke-linecap="round" stroke-linejoin="round" stroke-width="20"/>
<circle cx="1781" cy="2444" fill="#000080" r="25" stroke="#000080" stroke-width="5"/>
<circle cx="5131" cy="2444" fill="#000080" r="25" stroke="#000080" stroke-width="5"/>
<circle cx="2841" cy="1954" fill="#000080" r="25" stroke="#000080" stroke-width="5"/>
<circle cx="7341" cy="1954" fill="#000080" r="25" stroke="#000080" stroke-width="5"/>
<circle cx="5831" cy="1954" fill="#000080" r="25" stroke="#000080" stroke-width="5"/>
<circle cx="2291" cy="1954" fill="#000080" r="25" stroke="#000080" stroke-width="5"/>
<circle cx="2561" cy="1954" fill="#000080" r="25" stroke="#000080" stroke-width="5"/>
<circle cx="4371" cy="1954" fill="#000080" r="25" stroke="#000080" stroke-width="5"/>
<circle cx="5411" cy="2444" fill="#000080" r="25" stroke="#000080" stroke-width="5"/>
<circle cx="1731" cy="3894" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1231" cy="4294" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="4531" cy="1954" fill="#000080" r="25" stroke="#000080" stroke-width="5"/>
<circle cx="6091" cy="1954" fill="#000080" r="25" stroke="#000080" stroke-width="5"/>
</svg>
添加文件
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<svg height="1244" version="1.1" width="1944" xmlns="http://www.w3.org/2000/svg">
<polygon fill="#ffff80" points="20 296, 20 271, 145 271, 170 296, 145 321, 20 321, 20 296" 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="296">ABUS[7..0]</text>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="220" x2="270" y1="356" y2="406"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="220" x2="270" y1="376" y2="426"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="220" x2="270" y1="396" y2="446"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="220" x2="270" y1="416" y2="466"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="220" x2="270" y1="436" y2="486"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="220" x2="270" y1="456" y2="506"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="220" x2="270" y1="476" y2="526"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="220" x2="270" y1="496" y2="546"/>
<polyline fill="none" points="270 406, 540 406" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="270 426, 540 426" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="270 446, 540 446" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="270 466, 540 466" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="270 486, 540 486" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="270 506, 540 506" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="270 526, 540 526" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="270 546, 540 546" 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="12" font-weight="400" text-anchor="start" x="340" y="406">ABUS0</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="12" font-weight="400" text-anchor="start" x="340" y="426">ABUS1</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="12" font-weight="400" text-anchor="start" x="340" y="446">ABUS2</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="12" font-weight="400" text-anchor="start" x="340" y="466">ABUS3</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="12" font-weight="400" text-anchor="start" x="340" y="486">ABUS4</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="12" font-weight="400" text-anchor="start" x="340" y="506">ABUS5</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="12" font-weight="400" text-anchor="start" x="340" y="526">ABUS6</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="12" font-weight="400" text-anchor="start" x="340" y="546">ABUS7</text>
<polygon fill="#ffff80" points="20 616, 20 591, 145 591, 170 616, 145 641, 20 641, 20 616" 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="616">DBUS[7..0]</text>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="220" x2="270" y1="796" y2="746"/>
<polyline fill="none" points="540 746, 270 746" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="220" x2="270" y1="776" y2="726"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="220" x2="270" y1="756" y2="706"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="220" x2="270" y1="736" y2="686"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="220" x2="270" y1="716" y2="666"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="220" x2="270" y1="696" y2="646"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="220" x2="270" y1="676" y2="626"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="220" x2="270" y1="656" y2="606"/>
<polyline fill="none" points="270 726, 540 726" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="270 706, 540 706" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="270 686, 540 686" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="270 666, 540 666" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="270 646, 540 646" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="270 626, 540 626" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="270 606, 540 606" 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="12" font-weight="400" text-anchor="start" x="310" y="606">DBUS0</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="12" font-weight="400" text-anchor="start" x="310" y="626">DBUS1</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="12" font-weight="400" text-anchor="start" x="310" y="646">DBUS2</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="12" font-weight="400" text-anchor="start" x="310" y="666">DBUS3</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="12" font-weight="400" text-anchor="start" x="310" y="686">DBUS4</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="12" font-weight="400" text-anchor="start" x="310" y="706">DBUS5</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="12" font-weight="400" text-anchor="start" x="310" y="726">DBUS6</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="12" font-weight="400" text-anchor="start" x="310" y="746">DBUS7</text>
<polygon fill="#ffff80" points="20 906, 20 881, 145 881, 170 906, 145 931, 20 931, 20 906" 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="906">MEM_WR</text>
<polygon fill="#ffff80" points="20 1016, 20 991, 145 991, 170 1016, 145 1041, 20 1041, 20 1016" 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="1016">CLK</text>
<polyline fill="none" points="170 1016, 540 1016, 540 826" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="170 906, 510 906, 510 806, 540 806" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polygon fill="#ffff80" points="20 1196, 20 1171, 245 1171, 270 1196, 245 1221, 20 1221, 20 1196" 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="1196">MEM_GATE_EN</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="22" font-weight="400" text-anchor="start" x="1480" y="406">DBUS0</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="22" font-weight="400" text-anchor="start" x="1480" y="436">DBUS1</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="22" font-weight="400" text-anchor="start" x="1480" y="466">DBUS2</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="22" font-weight="400" text-anchor="start" x="1480" y="496">DBUS3</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="22" font-weight="400" text-anchor="start" x="1480" y="526">DBUS4</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="22" font-weight="400" text-anchor="start" x="1480" y="556">DBUS5</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="22" font-weight="400" text-anchor="start" x="1480" y="586">DBUS6</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="22" font-weight="400" text-anchor="start" x="1480" y="616">DBUS7</text>
<polyline fill="none" points="1430 406, 1630 406" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1430 436, 1630 436" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1430 466, 1630 466" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1430 496, 1630 496" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1430 526, 1630 526" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1430 556, 1630 556" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1430 586, 1630 586" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1430 616, 1630 616" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="1630" x2="1680" y1="406" y2="356"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="1630" x2="1680" y1="436" y2="386"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="1630" x2="1680" y1="466" y2="416"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="1630" x2="1680" y1="496" y2="446"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="1630" x2="1680" y1="526" y2="476"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="1630" x2="1680" y1="556" y2="506"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="1630" x2="1680" y1="586" y2="536"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="1630" x2="1680" y1="616" y2="566"/>
<polygon fill="#ffff80" points="1770 306, 1770 281, 1895 281, 1920 306, 1895 331, 1770 331, 1770 306" 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="1770" y="306">DBUS[7..0]</text>
<polyline fill="none" points="790 406, 1180 406" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="790 426, 1080 426, 1080 436, 1180 436" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="790 446, 1060 446, 1060 466, 1180 466" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="790 466, 1040 466, 1040 496, 1180 496" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="790 486, 1010 486, 1010 526, 1180 526" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="790 506, 980 506, 980 556, 1180 556" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="790 526, 950 526, 950 586, 1180 586" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="790 546, 920 546, 920 616, 1180 616" 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="330" y="196">存储器MEM模块</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1230" x2="1180" y1="406" y2="406"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1263" y="406">A0</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1230" x2="1180" y1="436" y2="436"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1263" y="436">A1</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1230" x2="1180" y1="466" y2="466"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1263" y="466">A2</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1230" x2="1180" y1="496" y2="496"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1263" y="496">A3</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1230" x2="1180" y1="526" y2="526"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1263" y="526">A4</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1230" x2="1180" y1="556" y2="556"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1263" y="556">A5</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1230" x2="1180" y1="586" y2="586"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1263" y="586">A6</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1230" x2="1180" y1="616" y2="616"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1263" y="616">A7</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1380" x2="1430" y1="406" y2="406"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1347" y="406">D0</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1380" x2="1430" y1="436" y2="436"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1347" y="436">D1</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1380" x2="1430" y1="466" y2="466"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1347" y="466">D2</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1380" x2="1430" y1="496" y2="496"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1347" y="496">D3</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1380" x2="1430" y1="526" y2="526"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1347" y="526">D4</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1380" x2="1430" y1="556" y2="556"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1347" y="556">D5</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1380" x2="1430" y1="586" y2="586"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1347" y="586">D6</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1380" x2="1430" y1="616" y2="616"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1347" y="616">D7</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1220" x2="1180" y1="676" y2="676"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1274" y="675">^EN</text>
<rect fill="#a0c0ff" fill-opacity="0.5" height="350" stroke="#000000" stroke-width="5" width="150" x="1230" y="366"/>
<circle cx="1225" cy="676" 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="1230" y="356">MEM_gate</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="1230" y="766">BUS_TRANS8</text>
<polyline fill="none" points="220 796, 220 616, 170 616" stroke="#000080" stroke-linecap="round" stroke-linejoin="round" stroke-width="20"/>
<polyline fill="none" points="270 1196, 1180 1196, 1180 676" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1770 306, 1680 306, 1680 566" stroke="#000080" stroke-linecap="round" stroke-linejoin="round" stroke-width="20"/>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="590" x2="540" y1="406" y2="406"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="623" y="406">A0</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="590" x2="540" y1="426" y2="426"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="623" y="426">A1</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="590" x2="540" y1="446" y2="446"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="623" y="446">A2</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="590" x2="540" y1="466" y2="466"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="623" y="466">A3</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="590" x2="540" y1="486" y2="486"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="623" y="486">A4</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="590" x2="540" y1="506" y2="506"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="623" y="506">A5</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="590" x2="540" y1="526" y2="526"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="623" y="526">A6</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="590" x2="540" y1="546" y2="546"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="623" y="546">A7</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="590" x2="540" y1="606" y2="606"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="623" y="606">D0</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="590" x2="540" y1="626" y2="626"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="623" y="626">D1</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="590" x2="540" y1="646" y2="646"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="623" y="646">D2</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="590" x2="540" y1="666" y2="666"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="623" y="666">D3</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="590" x2="540" y1="686" y2="686"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="623" y="686">D4</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="590" x2="540" y1="706" y2="706"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="623" y="706">D5</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="590" x2="540" y1="726" y2="726"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="623" y="726">D6</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="590" x2="540" y1="746" y2="746"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="623" y="746">D7</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="740" x2="790" y1="406" y2="406"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="707" y="406">Q0</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="740" x2="790" y1="426" y2="426"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="707" y="426">Q1</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="740" x2="790" y1="446" y2="446"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="707" y="446">Q2</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="740" x2="790" y1="466" y2="466"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="707" y="466">Q3</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="740" x2="790" y1="486" y2="486"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="707" y="486">Q4</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="740" x2="790" y1="506" y2="506"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="707" y="506">Q5</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="740" x2="790" y1="526" y2="526"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="707" y="526">Q6</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="740" x2="790" y1="546" y2="546"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="707" y="546">Q7</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="580" x2="540" y1="806" y2="806"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="656" y="806">^W\R</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="590" x2="540" y1="826" y2="826"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="643" y="826">CLK</text>
<rect fill="#ff8057" fill-opacity="0.5" height="490" stroke="#000000" stroke-width="5" width="150" x="590" y="376"/>
<polyline fill="none" points="590 816, 600 826, 590 836" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
<circle cx="585" cy="806" fill="none" r="5" stroke="#000000" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="65" font-weight="700" text-anchor="start" x="580" y="366">RAM</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="610" y="906">256RAM1</text>
<polyline fill="none" points="220 496, 220 296, 170 296" stroke="#000080" stroke-linecap="round" stroke-linejoin="round" stroke-width="20"/>
</svg>
添加文件
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<svg height="4288" version="1.1" width="6820" xmlns="http://www.w3.org/2000/svg">
<rect fill="#80ff80" height="500" stroke="#800000" stroke-width="1" width="700" x="567" y="3151"/>
<text alignment-baseline="after-edge" fill="#000080" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="567" y="3051">MUL_unit_0</text>
<text alignment-baseline="after-edge" fill="#000080" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="567" y="3101">MUL_unit.dlsche</text>
<polygon fill="#ffff80" points="1117 3151, 1142 3176, 1142 3226, 1117 3251, 1092 3226, 1092 3176, 1117 3151" 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="1107" y="3271">X</text>
<polygon fill="#ffff80" points="1267 3451, 1242 3476, 1192 3476, 1167 3451, 1192 3426, 1242 3426, 1267 3451" 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="1107" y="3451">Cin</text>
<polygon fill="#ffff80" points="917 3151, 942 3176, 942 3226, 917 3251, 892 3226, 892 3176, 917 3151" 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="897" y="3271">Pin</text>
<polygon fill="#ffff80" points="917 3651, 942 3626, 942 3576, 917 3551, 892 3576, 892 3626, 917 3651" 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="887" y="3531">Pout</text>
<polygon fill="#ffff80" points="567 3451, 592 3476, 642 3476, 667 3451, 642 3426, 592 3426, 567 3451" 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="677" y="3451">Cout</text>
<polygon fill="#ffff80" points="717 3151, 692 3176, 692 3226, 717 3251, 742 3226, 742 3176, 717 3151" 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="707" y="3271">Y</text>
<rect fill="#80ff80" height="500" stroke="#800000" stroke-width="1" width="700" x="1367" y="3151"/>
<text alignment-baseline="after-edge" fill="#000080" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="1367" y="3051">MUL_unit_1</text>
<text alignment-baseline="after-edge" fill="#000080" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="1367" y="3101">MUL_unit.dlsche</text>
<polygon fill="#ffff80" points="1917 3151, 1942 3176, 1942 3226, 1917 3251, 1892 3226, 1892 3176, 1917 3151" 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="1907" y="3271">X</text>
<polygon fill="#ffff80" points="2067 3451, 2042 3476, 1992 3476, 1967 3451, 1992 3426, 2042 3426, 2067 3451" 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="1907" y="3451">Cin</text>
<polygon fill="#ffff80" points="1717 3151, 1742 3176, 1742 3226, 1717 3251, 1692 3226, 1692 3176, 1717 3151" 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="1697" y="3271">Pin</text>
<polygon fill="#ffff80" points="1717 3651, 1742 3626, 1742 3576, 1717 3551, 1692 3576, 1692 3626, 1717 3651" 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="1687" y="3531">Pout</text>
<polygon fill="#ffff80" points="1367 3451, 1392 3476, 1442 3476, 1467 3451, 1442 3426, 1392 3426, 1367 3451" 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="1477" y="3451">Cout</text>
<polygon fill="#ffff80" points="1517 3151, 1492 3176, 1492 3226, 1517 3251, 1542 3226, 1542 3176, 1517 3151" 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="1507" y="3271">Y</text>
<rect fill="#80ff80" height="500" stroke="#800000" stroke-width="1" width="700" x="2167" y="3151"/>
<text alignment-baseline="after-edge" fill="#000080" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="2167" y="3051">MUL_unit_2</text>
<text alignment-baseline="after-edge" fill="#000080" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="2167" y="3101">MUL_unit.dlsche</text>
<polygon fill="#ffff80" points="2717 3151, 2742 3176, 2742 3226, 2717 3251, 2692 3226, 2692 3176, 2717 3151" 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="2707" y="3271">X</text>
<polygon fill="#ffff80" points="2867 3451, 2842 3476, 2792 3476, 2767 3451, 2792 3426, 2842 3426, 2867 3451" 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="2707" y="3451">Cin</text>
<polygon fill="#ffff80" points="2517 3151, 2542 3176, 2542 3226, 2517 3251, 2492 3226, 2492 3176, 2517 3151" 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="2497" y="3271">Pin</text>
<polygon fill="#ffff80" points="2517 3651, 2542 3626, 2542 3576, 2517 3551, 2492 3576, 2492 3626, 2517 3651" 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="2487" y="3531">Pout</text>
<polygon fill="#ffff80" points="2167 3451, 2192 3476, 2242 3476, 2267 3451, 2242 3426, 2192 3426, 2167 3451" 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="2277" y="3451">Cout</text>
<polygon fill="#ffff80" points="2317 3151, 2292 3176, 2292 3226, 2317 3251, 2342 3226, 2342 3176, 2317 3151" 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="2307" y="3271">Y</text>
<rect fill="#80ff80" height="500" stroke="#800000" stroke-width="1" width="700" x="2967" y="3151"/>
<text alignment-baseline="after-edge" fill="#000080" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="2967" y="3051">MUL_unit_3</text>
<text alignment-baseline="after-edge" fill="#000080" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="2967" y="3101">MUL_unit.dlsche</text>
<polygon fill="#ffff80" points="3517 3151, 3542 3176, 3542 3226, 3517 3251, 3492 3226, 3492 3176, 3517 3151" 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="3507" y="3271">X</text>
<polygon fill="#ffff80" points="3667 3451, 3642 3476, 3592 3476, 3567 3451, 3592 3426, 3642 3426, 3667 3451" 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="3507" y="3451">Cin</text>
<polygon fill="#ffff80" points="3317 3151, 3342 3176, 3342 3226, 3317 3251, 3292 3226, 3292 3176, 3317 3151" 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="3297" y="3271">Pin</text>
<polygon fill="#ffff80" points="3317 3651, 3342 3626, 3342 3576, 3317 3551, 3292 3576, 3292 3626, 3317 3651" 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="3287" y="3531">Pout</text>
<polygon fill="#ffff80" points="2967 3451, 2992 3476, 3042 3476, 3067 3451, 3042 3426, 2992 3426, 2967 3451" 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="3077" y="3451">Cout</text>
<polygon fill="#ffff80" points="3117 3151, 3092 3176, 3092 3226, 3117 3251, 3142 3226, 3142 3176, 3117 3151" 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="3107" y="3271">Y</text>
<rect fill="#80ff80" height="500" stroke="#800000" stroke-width="1" width="700" x="1367" y="2351"/>
<text alignment-baseline="after-edge" fill="#000080" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="1367" y="2251">MUL_unit_4</text>
<text alignment-baseline="after-edge" fill="#000080" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="1367" y="2301">MUL_unit.dlsche</text>
<polygon fill="#ffff80" points="1917 2351, 1942 2376, 1942 2426, 1917 2451, 1892 2426, 1892 2376, 1917 2351" 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="1907" y="2471">X</text>
<polygon fill="#ffff80" points="2067 2651, 2042 2676, 1992 2676, 1967 2651, 1992 2626, 2042 2626, 2067 2651" 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="1907" y="2651">Cin</text>
<polygon fill="#ffff80" points="1717 2351, 1742 2376, 1742 2426, 1717 2451, 1692 2426, 1692 2376, 1717 2351" 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="1697" y="2471">Pin</text>
<polygon fill="#ffff80" points="1717 2851, 1742 2826, 1742 2776, 1717 2751, 1692 2776, 1692 2826, 1717 2851" 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="1687" y="2731">Pout</text>
<polygon fill="#ffff80" points="1367 2651, 1392 2676, 1442 2676, 1467 2651, 1442 2626, 1392 2626, 1367 2651" 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="1477" y="2651">Cout</text>
<polygon fill="#ffff80" points="1517 2351, 1492 2376, 1492 2426, 1517 2451, 1542 2426, 1542 2376, 1517 2351" 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="1507" y="2471">Y</text>
<rect fill="#80ff80" height="500" stroke="#800000" stroke-width="1" width="700" x="2167" y="2351"/>
<text alignment-baseline="after-edge" fill="#000080" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="2167" y="2251">MUL_unit_5</text>
<text alignment-baseline="after-edge" fill="#000080" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="2167" y="2301">MUL_unit.dlsche</text>
<polygon fill="#ffff80" points="2717 2351, 2742 2376, 2742 2426, 2717 2451, 2692 2426, 2692 2376, 2717 2351" 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="2707" y="2471">X</text>
<polygon fill="#ffff80" points="2867 2651, 2842 2676, 2792 2676, 2767 2651, 2792 2626, 2842 2626, 2867 2651" 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="2707" y="2651">Cin</text>
<polygon fill="#ffff80" points="2517 2351, 2542 2376, 2542 2426, 2517 2451, 2492 2426, 2492 2376, 2517 2351" 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="2497" y="2471">Pin</text>
<polygon fill="#ffff80" points="2517 2851, 2542 2826, 2542 2776, 2517 2751, 2492 2776, 2492 2826, 2517 2851" 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="2487" y="2731">Pout</text>
<polygon fill="#ffff80" points="2167 2651, 2192 2676, 2242 2676, 2267 2651, 2242 2626, 2192 2626, 2167 2651" 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="2277" y="2651">Cout</text>
<polygon fill="#ffff80" points="2317 2351, 2292 2376, 2292 2426, 2317 2451, 2342 2426, 2342 2376, 2317 2351" 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="2307" y="2471">Y</text>
<rect fill="#80ff80" height="500" stroke="#800000" stroke-width="1" width="700" x="2967" y="2351"/>
<text alignment-baseline="after-edge" fill="#000080" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="2967" y="2251">MUL_unit_6</text>
<text alignment-baseline="after-edge" fill="#000080" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="2967" y="2301">MUL_unit.dlsche</text>
<polygon fill="#ffff80" points="3517 2351, 3542 2376, 3542 2426, 3517 2451, 3492 2426, 3492 2376, 3517 2351" 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="3507" y="2471">X</text>
<polygon fill="#ffff80" points="3667 2651, 3642 2676, 3592 2676, 3567 2651, 3592 2626, 3642 2626, 3667 2651" 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="3507" y="2651">Cin</text>
<polygon fill="#ffff80" points="3317 2351, 3342 2376, 3342 2426, 3317 2451, 3292 2426, 3292 2376, 3317 2351" 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="3297" y="2471">Pin</text>
<polygon fill="#ffff80" points="3317 2851, 3342 2826, 3342 2776, 3317 2751, 3292 2776, 3292 2826, 3317 2851" 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="3287" y="2731">Pout</text>
<polygon fill="#ffff80" points="2967 2651, 2992 2676, 3042 2676, 3067 2651, 3042 2626, 2992 2626, 2967 2651" 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="3077" y="2651">Cout</text>
<polygon fill="#ffff80" points="3117 2351, 3092 2376, 3092 2426, 3117 2451, 3142 2426, 3142 2376, 3117 2351" 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="3107" y="2471">Y</text>
<rect fill="#80ff80" height="500" stroke="#800000" stroke-width="1" width="700" x="3767" y="2351"/>
<text alignment-baseline="after-edge" fill="#000080" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="3767" y="2251">MUL_unit_7</text>
<text alignment-baseline="after-edge" fill="#000080" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="3767" y="2301">MUL_unit.dlsche</text>
<polygon fill="#ffff80" points="4317 2351, 4342 2376, 4342 2426, 4317 2451, 4292 2426, 4292 2376, 4317 2351" 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="4307" y="2471">X</text>
<polygon fill="#ffff80" points="4467 2651, 4442 2676, 4392 2676, 4367 2651, 4392 2626, 4442 2626, 4467 2651" 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="4307" y="2651">Cin</text>
<polygon fill="#ffff80" points="4117 2351, 4142 2376, 4142 2426, 4117 2451, 4092 2426, 4092 2376, 4117 2351" 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="4097" y="2471">Pin</text>
<polygon fill="#ffff80" points="4117 2851, 4142 2826, 4142 2776, 4117 2751, 4092 2776, 4092 2826, 4117 2851" 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="4087" y="2731">Pout</text>
<polygon fill="#ffff80" points="3767 2651, 3792 2676, 3842 2676, 3867 2651, 3842 2626, 3792 2626, 3767 2651" 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="3877" y="2651">Cout</text>
<polygon fill="#ffff80" points="3917 2351, 3892 2376, 3892 2426, 3917 2451, 3942 2426, 3942 2376, 3917 2351" 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="3907" y="2471">Y</text>
<rect fill="#80ff80" height="500" stroke="#800000" stroke-width="1" width="700" x="2167" y="1551"/>
<text alignment-baseline="after-edge" fill="#000080" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="2167" y="1451">MUL_unit_8</text>
<text alignment-baseline="after-edge" fill="#000080" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="2167" y="1501">MUL_unit.dlsche</text>
<polygon fill="#ffff80" points="2717 1551, 2742 1576, 2742 1626, 2717 1651, 2692 1626, 2692 1576, 2717 1551" 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="2707" y="1671">X</text>
<polygon fill="#ffff80" points="2867 1851, 2842 1876, 2792 1876, 2767 1851, 2792 1826, 2842 1826, 2867 1851" 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="2707" y="1851">Cin</text>
<polygon fill="#ffff80" points="2517 1551, 2542 1576, 2542 1626, 2517 1651, 2492 1626, 2492 1576, 2517 1551" 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="2497" y="1671">Pin</text>
<polygon fill="#ffff80" points="2517 2051, 2542 2026, 2542 1976, 2517 1951, 2492 1976, 2492 2026, 2517 2051" 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="2487" y="1931">Pout</text>
<polygon fill="#ffff80" points="2167 1851, 2192 1876, 2242 1876, 2267 1851, 2242 1826, 2192 1826, 2167 1851" 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="2277" y="1851">Cout</text>
<polygon fill="#ffff80" points="2317 1551, 2292 1576, 2292 1626, 2317 1651, 2342 1626, 2342 1576, 2317 1551" 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="2307" y="1671">Y</text>
<rect fill="#80ff80" height="500" stroke="#800000" stroke-width="1" width="700" x="2967" y="1551"/>
<text alignment-baseline="after-edge" fill="#000080" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="2967" y="1451">MUL_unit_9</text>
<text alignment-baseline="after-edge" fill="#000080" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="2967" y="1501">MUL_unit.dlsche</text>
<polygon fill="#ffff80" points="3517 1551, 3542 1576, 3542 1626, 3517 1651, 3492 1626, 3492 1576, 3517 1551" 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="3507" y="1671">X</text>
<polygon fill="#ffff80" points="3667 1851, 3642 1876, 3592 1876, 3567 1851, 3592 1826, 3642 1826, 3667 1851" 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="3507" y="1851">Cin</text>
<polygon fill="#ffff80" points="3317 1551, 3342 1576, 3342 1626, 3317 1651, 3292 1626, 3292 1576, 3317 1551" 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="3297" y="1671">Pin</text>
<polygon fill="#ffff80" points="3317 2051, 3342 2026, 3342 1976, 3317 1951, 3292 1976, 3292 2026, 3317 2051" 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="3287" y="1931">Pout</text>
<polygon fill="#ffff80" points="2967 1851, 2992 1876, 3042 1876, 3067 1851, 3042 1826, 2992 1826, 2967 1851" 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="3077" y="1851">Cout</text>
<polygon fill="#ffff80" points="3117 1551, 3092 1576, 3092 1626, 3117 1651, 3142 1626, 3142 1576, 3117 1551" 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="3107" y="1671">Y</text>
<rect fill="#80ff80" height="500" stroke="#800000" stroke-width="1" width="700" x="3767" y="1551"/>
<text alignment-baseline="after-edge" fill="#000080" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="3767" y="1451">MUL_unit_10</text>
<text alignment-baseline="after-edge" fill="#000080" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="3767" y="1501">MUL_unit.dlsche</text>
<polygon fill="#ffff80" points="4317 1551, 4342 1576, 4342 1626, 4317 1651, 4292 1626, 4292 1576, 4317 1551" 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="4307" y="1671">X</text>
<polygon fill="#ffff80" points="4467 1851, 4442 1876, 4392 1876, 4367 1851, 4392 1826, 4442 1826, 4467 1851" 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="4307" y="1851">Cin</text>
<polygon fill="#ffff80" points="4117 1551, 4142 1576, 4142 1626, 4117 1651, 4092 1626, 4092 1576, 4117 1551" 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="4097" y="1671">Pin</text>
<polygon fill="#ffff80" points="4117 2051, 4142 2026, 4142 1976, 4117 1951, 4092 1976, 4092 2026, 4117 2051" 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="4087" y="1931">Pout</text>
<polygon fill="#ffff80" points="3767 1851, 3792 1876, 3842 1876, 3867 1851, 3842 1826, 3792 1826, 3767 1851" 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="3877" y="1851">Cout</text>
<polygon fill="#ffff80" points="3917 1551, 3892 1576, 3892 1626, 3917 1651, 3942 1626, 3942 1576, 3917 1551" 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="3907" y="1671">Y</text>
<rect fill="#80ff80" height="500" stroke="#800000" stroke-width="1" width="700" x="4567" y="1551"/>
<text alignment-baseline="after-edge" fill="#000080" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="4567" y="1451">MUL_unit_11</text>
<text alignment-baseline="after-edge" fill="#000080" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="4567" y="1501">MUL_unit.dlsche</text>
<polygon fill="#ffff80" points="5117 1551, 5142 1576, 5142 1626, 5117 1651, 5092 1626, 5092 1576, 5117 1551" 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="5107" y="1671">X</text>
<polygon fill="#ffff80" points="5267 1851, 5242 1876, 5192 1876, 5167 1851, 5192 1826, 5242 1826, 5267 1851" 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="5107" y="1851">Cin</text>
<polygon fill="#ffff80" points="4917 1551, 4942 1576, 4942 1626, 4917 1651, 4892 1626, 4892 1576, 4917 1551" 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="4897" y="1671">Pin</text>
<polygon fill="#ffff80" points="4917 2051, 4942 2026, 4942 1976, 4917 1951, 4892 1976, 4892 2026, 4917 2051" 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="4887" y="1931">Pout</text>
<polygon fill="#ffff80" points="4567 1851, 4592 1876, 4642 1876, 4667 1851, 4642 1826, 4592 1826, 4567 1851" 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="4677" y="1851">Cout</text>
<polygon fill="#ffff80" points="4717 1551, 4692 1576, 4692 1626, 4717 1651, 4742 1626, 4742 1576, 4717 1551" 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="4707" y="1671">Y</text>
<rect fill="#80ff80" height="500" stroke="#800000" stroke-width="1" width="700" x="2967" y="751"/>
<text alignment-baseline="after-edge" fill="#000080" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="2967" y="651">MUL_unit_12</text>
<text alignment-baseline="after-edge" fill="#000080" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="2967" y="701">MUL_unit.dlsche</text>
<polygon fill="#ffff80" points="3517 751, 3542 776, 3542 826, 3517 851, 3492 826, 3492 776, 3517 751" 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="3507" y="871">X</text>
<polygon fill="#ffff80" points="3667 1051, 3642 1076, 3592 1076, 3567 1051, 3592 1026, 3642 1026, 3667 1051" 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="3507" y="1051">Cin</text>
<polygon fill="#ffff80" points="3317 751, 3342 776, 3342 826, 3317 851, 3292 826, 3292 776, 3317 751" 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="3297" y="871">Pin</text>
<polygon fill="#ffff80" points="3317 1251, 3342 1226, 3342 1176, 3317 1151, 3292 1176, 3292 1226, 3317 1251" 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="3287" y="1131">Pout</text>
<polygon fill="#ffff80" points="2967 1051, 2992 1076, 3042 1076, 3067 1051, 3042 1026, 2992 1026, 2967 1051" 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="3077" y="1051">Cout</text>
<polygon fill="#ffff80" points="3117 751, 3092 776, 3092 826, 3117 851, 3142 826, 3142 776, 3117 751" 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="3107" y="871">Y</text>
<rect fill="#80ff80" height="500" stroke="#800000" stroke-width="1" width="700" x="3767" y="751"/>
<text alignment-baseline="after-edge" fill="#000080" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="3767" y="651">MUL_unit_13</text>
<text alignment-baseline="after-edge" fill="#000080" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="3767" y="701">MUL_unit.dlsche</text>
<polygon fill="#ffff80" points="4317 751, 4342 776, 4342 826, 4317 851, 4292 826, 4292 776, 4317 751" 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="4307" y="871">X</text>
<polygon fill="#ffff80" points="4467 1051, 4442 1076, 4392 1076, 4367 1051, 4392 1026, 4442 1026, 4467 1051" 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="4307" y="1051">Cin</text>
<polygon fill="#ffff80" points="4117 751, 4142 776, 4142 826, 4117 851, 4092 826, 4092 776, 4117 751" 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="4097" y="871">Pin</text>
<polygon fill="#ffff80" points="4117 1251, 4142 1226, 4142 1176, 4117 1151, 4092 1176, 4092 1226, 4117 1251" 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="4087" y="1131">Pout</text>
<polygon fill="#ffff80" points="3767 1051, 3792 1076, 3842 1076, 3867 1051, 3842 1026, 3792 1026, 3767 1051" 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="3877" y="1051">Cout</text>
<polygon fill="#ffff80" points="3917 751, 3892 776, 3892 826, 3917 851, 3942 826, 3942 776, 3917 751" 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="3907" y="871">Y</text>
<rect fill="#80ff80" height="500" stroke="#800000" stroke-width="1" width="700" x="4567" y="751"/>
<text alignment-baseline="after-edge" fill="#000080" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="4567" y="651">MUL_unit_14</text>
<text alignment-baseline="after-edge" fill="#000080" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="4567" y="701">MUL_unit.dlsche</text>
<polygon fill="#ffff80" points="5117 751, 5142 776, 5142 826, 5117 851, 5092 826, 5092 776, 5117 751" 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="5107" y="871">X</text>
<polygon fill="#ffff80" points="5267 1051, 5242 1076, 5192 1076, 5167 1051, 5192 1026, 5242 1026, 5267 1051" 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="5107" y="1051">Cin</text>
<polygon fill="#ffff80" points="4917 751, 4942 776, 4942 826, 4917 851, 4892 826, 4892 776, 4917 751" 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="4897" y="871">Pin</text>
<polygon fill="#ffff80" points="4917 1251, 4942 1226, 4942 1176, 4917 1151, 4892 1176, 4892 1226, 4917 1251" 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="4887" y="1131">Pout</text>
<polygon fill="#ffff80" points="4567 1051, 4592 1076, 4642 1076, 4667 1051, 4642 1026, 4592 1026, 4567 1051" 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="4677" y="1051">Cout</text>
<polygon fill="#ffff80" points="4717 751, 4692 776, 4692 826, 4717 851, 4742 826, 4742 776, 4717 751" 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="4707" y="871">Y</text>
<rect fill="#80ff80" height="500" stroke="#800000" stroke-width="1" width="700" x="5367" y="751"/>
<text alignment-baseline="after-edge" fill="#000080" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="5367" y="651">MUL_unit_15</text>
<text alignment-baseline="after-edge" fill="#000080" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="5367" y="701">MUL_unit.dlsche</text>
<polygon fill="#ffff80" points="5917 751, 5942 776, 5942 826, 5917 851, 5892 826, 5892 776, 5917 751" 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="5907" y="871">X</text>
<polygon fill="#ffff80" points="6067 1051, 6042 1076, 5992 1076, 5967 1051, 5992 1026, 6042 1026, 6067 1051" 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="5907" y="1051">Cin</text>
<polygon fill="#ffff80" points="5717 751, 5742 776, 5742 826, 5717 851, 5692 826, 5692 776, 5717 751" 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="5697" y="871">Pin</text>
<polygon fill="#ffff80" points="5717 1251, 5742 1226, 5742 1176, 5717 1151, 5692 1176, 5692 1226, 5717 1251" 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="5687" y="1131">Pout</text>
<polygon fill="#ffff80" points="5367 1051, 5392 1076, 5442 1076, 5467 1051, 5442 1026, 5392 1026, 5367 1051" 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="5477" y="1051">Cout</text>
<polygon fill="#ffff80" points="5517 751, 5492 776, 5492 826, 5517 851, 5542 826, 5542 776, 5517 751" 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="5507" y="871">Y</text>
<polygon fill="#ffff80" points="6517 551, 6517 576, 6392 576, 6367 551, 6392 526, 6517 526, 6517 551" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="160" font-weight="400" text-anchor="start" x="6567" y="551">Y0</text>
<polyline fill="none" points="5267 1051, 5367 1051" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="4467 1051, 4567 1051" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="3667 1051, 3767 1051" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="2967 1051, 2517 1051, 2517 1551" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polygon fill="#ffff80" points="6517 1351, 6517 1376, 6392 1376, 6367 1351, 6392 1326, 6517 1326, 6517 1351" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="160" font-weight="400" text-anchor="start" x="6567" y="1351">Y1</text>
<polyline fill="none" points="6367 1351, 5267 1351, 2317 1351, 2317 1551" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polygon fill="#ffff80" points="6517 2151, 6517 2176, 6392 2176, 6367 2151, 6392 2126, 6517 2126, 6517 2151" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="160" font-weight="400" text-anchor="start" x="6567" y="2151">Y2</text>
<polyline fill="none" points="6367 2151, 4467 2151, 1517 2151, 1517 2351" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polygon fill="#ffff80" points="6517 2951, 6517 2976, 6392 2976, 6367 2951, 6392 2926, 6517 2926, 6517 2951" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="160" font-weight="400" text-anchor="start" x="6567" y="2951">Y3</text>
<polyline fill="none" points="6367 2951, 3667 2951, 717 2951, 717 3151" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="3317" x2="3317" y1="701" y2="751"/>
<polygon fill="#ffffff" fill-opacity="0.5" points="3267 651, 3367 651, 3317 701, 3267 651" stroke="#000000" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="微软雅黑" font-size="30" font-weight="700" text-anchor="start" x="3307" y="691">0</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="3307" y="621">U1</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="3247" y="651">DIGITAL0</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="4117" x2="4117" y1="701" y2="751"/>
<polygon fill="#ffffff" fill-opacity="0.5" points="4067 651, 4167 651, 4117 701, 4067 651" stroke="#000000" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="微软雅黑" font-size="30" font-weight="700" text-anchor="start" x="4107" y="691">0</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="4107" y="621">U2</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="4047" y="651">DIGITAL0</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="4917" x2="4917" y1="701" y2="751"/>
<polygon fill="#ffffff" fill-opacity="0.5" points="4867 651, 4967 651, 4917 701, 4867 651" stroke="#000000" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="微软雅黑" font-size="30" font-weight="700" text-anchor="start" x="4907" y="691">0</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="4907" y="621">U3</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="4847" y="651">DIGITAL0</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="5717" x2="5717" y1="701" y2="751"/>
<polygon fill="#ffffff" fill-opacity="0.5" points="5667 651, 5767 651, 5717 701, 5667 651" stroke="#000000" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="微软雅黑" font-size="30" font-weight="700" text-anchor="start" x="5707" y="691">0</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="5707" y="621">U4</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="5647" y="651">DIGITAL0</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="6117" x2="6067" y1="1051" y2="1051"/>
<polygon fill="#ffffff" fill-opacity="0.5" points="6167 1001, 6167 1101, 6117 1051, 6167 1001" stroke="#000000" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="微软雅黑" font-size="30" font-weight="700" text-anchor="start" transform="rotate(90 6127 1041)" x="6127" y="1041">0</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" transform="rotate(90 6197 1041)" x="6197" y="1041">U5</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" transform="rotate(90 6167 981)" x="6167" y="981">DIGITAL0</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="5317" x2="5267" y1="1851" y2="1851"/>
<polygon fill="#ffffff" fill-opacity="0.5" points="5367 1801, 5367 1901, 5317 1851, 5367 1801" stroke="#000000" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="微软雅黑" font-size="30" font-weight="700" text-anchor="start" transform="rotate(90 5327 1841)" x="5327" y="1841">0</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" transform="rotate(90 5397 1841)" x="5397" y="1841">U6</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" transform="rotate(90 5367 1781)" x="5367" y="1781">DIGITAL0</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="4517" x2="4467" y1="2651" y2="2651"/>
<polygon fill="#ffffff" fill-opacity="0.5" points="4567 2601, 4567 2701, 4517 2651, 4567 2601" stroke="#000000" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="微软雅黑" font-size="30" font-weight="700" text-anchor="start" transform="rotate(90 4527 2641)" x="4527" y="2641">0</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" transform="rotate(90 4597 2641)" x="4597" y="2641">U7</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" transform="rotate(90 4567 2581)" x="4567" y="2581">DIGITAL0</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="3717" x2="3667" y1="3451" y2="3451"/>
<polygon fill="#ffffff" fill-opacity="0.5" points="3767 3401, 3767 3501, 3717 3451, 3767 3401" stroke="#000000" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="微软雅黑" font-size="30" font-weight="700" text-anchor="start" transform="rotate(90 3727 3441)" x="3727" y="3441">0</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" transform="rotate(90 3797 3441)" x="3797" y="3441">U8</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" transform="rotate(90 3767 3381)" x="3767" y="3381">DIGITAL0</text>
<polygon fill="#ffff80" points="3517 201, 3542 201, 3542 326, 3517 351, 3492 326, 3492 201, 3517 201" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="160" font-weight="400" text-anchor="start" x="3397" y="91">X3</text>
<polygon fill="#ffff80" points="4317 201, 4342 201, 4342 326, 4317 351, 4292 326, 4292 201, 4317 201" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="160" font-weight="400" text-anchor="start" x="4197" y="91">X2</text>
<polygon fill="#ffff80" points="5117 201, 5142 201, 5142 326, 5117 351, 5092 326, 5092 201, 5117 201" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="160" font-weight="400" text-anchor="start" x="4997" y="91">X1</text>
<polygon fill="#ffff80" points="5917 201, 5942 201, 5942 326, 5917 351, 5892 326, 5892 201, 5917 201" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="160" font-weight="400" text-anchor="start" x="5797" y="91">X0</text>
<polyline fill="none" points="5917 351, 5917 751, 3517 3151" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="5117 351, 5117 751, 2717 3151" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="4317 351, 4317 751, 1917 3151" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="3517 351, 3517 751, 1117 3151" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="4917 1251, 4917 1551" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="4117 1251, 4117 1551" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="3317 1251, 3317 1551" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="4117 2051, 4117 2351" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="3317 2051, 3317 2351" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="2517 2051, 2517 2351" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="2167 1851, 1717 1851, 1717 2351" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="4467 1851, 4567 1851" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="3667 1851, 3767 1851" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="2867 1851, 2967 1851" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="3667 2651, 3767 2651" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="2867 2651, 2967 2651" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="2067 2651, 2167 2651" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1367 2651, 917 2651, 917 3151" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="3317 2851, 3317 3151" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="2517 2851, 2517 3151" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1717 2851, 1717 3151" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="2867 3451, 2967 3451" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="2067 3451, 2167 3451" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1267 3451, 1367 3451" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polygon fill="#ffff80" points="117 3951, 142 3951, 142 4076, 117 4101, 92 4076, 92 3951, 117 3951" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="160" font-weight="400" text-anchor="start" x="17" y="4201">P7</text>
<polygon fill="#ffff80" points="917 3951, 942 3951, 942 4076, 917 4101, 892 4076, 892 3951, 917 3951" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="160" font-weight="400" text-anchor="start" x="817" y="4201">P6</text>
<polygon fill="#ffff80" points="1717 3951, 1742 3951, 1742 4076, 1717 4101, 1692 4076, 1692 3951, 1717 3951" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="160" font-weight="400" text-anchor="start" x="1617" y="4201">P5</text>
<polygon fill="#ffff80" points="2517 3951, 2542 3951, 2542 4076, 2517 4101, 2492 4076, 2492 3951, 2517 3951" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="160" font-weight="400" text-anchor="start" x="2417" y="4201">P4</text>
<polygon fill="#ffff80" points="3317 3951, 3342 3951, 3342 4076, 3317 4101, 3292 4076, 3292 3951, 3317 3951" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="160" font-weight="400" text-anchor="start" x="3217" y="4201">P3</text>
<polygon fill="#ffff80" points="4117 3951, 4142 3951, 4142 4076, 4117 4101, 4092 4076, 4092 3951, 4117 3951" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="160" font-weight="400" text-anchor="start" x="4017" y="4201">P2</text>
<polygon fill="#ffff80" points="4917 3951, 4942 3951, 4942 4076, 4917 4101, 4892 4076, 4892 3951, 4917 3951" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="160" font-weight="400" text-anchor="start" x="4817" y="4201">P1</text>
<polygon fill="#ffff80" points="5717 3951, 5742 3951, 5742 4076, 5717 4101, 5692 4076, 5692 3951, 5717 3951" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="160" font-weight="400" text-anchor="start" x="5617" y="4201">P0</text>
<polyline fill="none" points="567 3451, 117 3451, 117 3951" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="917 3651, 917 3951" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1717 3651, 1717 3951" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="2517 3651, 2517 3951" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="3317 3651, 3317 3951" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="4117 2851, 4117 3951" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="4917 2051, 4917 3951" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="5717 1251, 5717 3951" 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="55" font-weight="400" text-anchor="start" x="6267" y="551">Y0</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="55" font-weight="400" text-anchor="start" x="5917" y="421">X0</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="55" font-weight="400" text-anchor="start" x="5117" y="421">X1</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="55" font-weight="400" text-anchor="start" x="4317" y="421">X2</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="55" font-weight="400" text-anchor="start" x="3517" y="421">X3</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="55" font-weight="400" text-anchor="start" x="5717" y="3951">P0</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="55" font-weight="400" text-anchor="start" x="6267" y="1351">Y1</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="55" font-weight="400" text-anchor="start" x="6267" y="2151">Y2</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="55" font-weight="400" text-anchor="start" x="6267" y="2951">Y3</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="55" font-weight="400" text-anchor="start" x="4917" y="3951">P1</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="55" font-weight="400" text-anchor="start" x="4117" y="3951">P2</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="55" font-weight="400" text-anchor="start" x="117" y="3951">P7</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="55" font-weight="400" text-anchor="start" x="917" y="3951">P6</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="55" font-weight="400" text-anchor="start" x="1717" y="3951">P5</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="55" font-weight="400" text-anchor="start" x="2517" y="3951">P4</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="55" font-weight="400" text-anchor="start" x="3317" y="3951">P3</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="微软雅黑" font-size="250" font-weight="700" text-anchor="start" x="237" y="1251">四位阵列乘法器</text>
<polyline fill="none" points="3117 1551, 3117 1351" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="3917 1551, 3917 1351" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="4717 1551, 4717 1351" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="2317 2351, 2317 2151" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="3117 2351, 3117 2151" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="3917 2351, 3917 2151" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1517 3151, 1517 2951" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="2317 3151, 2317 2951" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="3117 3151, 3117 2951" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="6367 551, 3117 551, 3117 751" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="3917 751, 3917 551" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="4717 751, 4717 551" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="5517 751, 5517 551" 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="5297" y="1051">NetLable1</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="4487" y="1051">NetLable2</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="3687" y="1051">NetLable3</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="2707" y="1051">NetLable4</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="4917" y="1451">NetLable5</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="4117" y="1451">NetLable6</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="3317" y="1451">NetLable7</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="4477" y="1851">NetLable8</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="3677" y="1851">NetLable9</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="2877" y="1851">NetLable10</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="1887" y="1851">NetLable11</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="4117" y="2251">NetLable12</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="3317" y="2251">NetLable13</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="2517" y="2251">NetLable14</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="3677" y="2651">NetLable15</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="2877" y="2651">NetLable16</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="2077" y="2651">NetLable17</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="1087" y="2651">NetLable18</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="3317" y="3051">NetLable19</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="2517" y="3051">NetLable20</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="1717" y="3051">NetLable21</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="2877" y="3451">NetLable22</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="2077" y="3451">NetLable23</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="1277" y="3451">NetLable24</text>
<circle cx="3117" cy="1351" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="3917" cy="1351" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="4717" cy="1351" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="2317" cy="2151" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="3117" cy="2151" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="3917" cy="2151" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="3117" cy="2951" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="2317" cy="2951" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1517" cy="2951" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="3917" cy="551" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="4717" cy="551" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="5517" cy="551" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
</svg>
添加文件
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<svg height="1335" version="1.1" width="1952" xmlns="http://www.w3.org/2000/svg">
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="910" x2="850" y1="790" y2="790"/>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="910" x2="850" y1="850" y2="850"/>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1040" x2="1100" y1="820" y2="820"/>
<path d="M988 768 A 47 47 0 1 1 988 861" fill="none" stroke="#000000" stroke-linecap="round" stroke-width="5"/>
<polyline fill="none" points="989 862, 910 862, 910 768, 989 768" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="951" y="762">U3</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="934" y="908">AND</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="910" x2="850" y1="980" y2="980"/>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="910" x2="850" y1="1040" y2="1040"/>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1040" x2="1100" y1="1010" y2="1010"/>
<path d="M988 958 A 47 47 0 1 1 988 1051" fill="none" stroke="#000000" stroke-linecap="round" stroke-width="5"/>
<polyline fill="none" points="989 1052, 910 1052, 910 958, 989 958" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="951" y="952">U4</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="934" y="1098">AND</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="910" x2="850" y1="1170" y2="1170"/>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="910" x2="850" y1="1230" y2="1230"/>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1040" x2="1100" y1="1200" y2="1200"/>
<path d="M988 1148 A 47 47 0 1 1 988 1241" fill="none" stroke="#000000" stroke-linecap="round" stroke-width="5"/>
<polyline fill="none" points="989 1242, 910 1242, 910 1148, 989 1148" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="951" y="1142">U5</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="934" y="1288">AND</text>
<polyline fill="none" points="850 790, 790 790" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="850 980, 790 980, 790 570" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="850 620, 540 620, 420 620, 170 620" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="850 850, 740 850" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="850 1170, 740 1170, 740 620" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1290 590, 1100 590" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1290 640, 1290 690, 540 690, 540 810, 420 810, 170 810" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="850 1040, 690 1040" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="850 1230, 690 1230, 690 690" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1290 1010, 1100 1010" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1290 970, 1140 970, 1140 820, 1100 820" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1290 1050, 1140 1050, 1140 1200, 1100 1200" 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="480" y="140">阵列乘法器运算单元</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="910" x2="850" y1="570" y2="570"/>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="910" x2="850" y1="620" y2="620"/>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1050" x2="1100" y1="590" y2="590"/>
<polyline fill="none" points="919 548, 969 548" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="916 639, 967 639" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<path d="M970 548 C 1037 548, 1046 592, 1046 592" fill="none" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<path d="M968 639 C 1036 639, 1046 593, 1046 593" fill="none" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<path d="M917 548 C 930 594, 916 639, 916 639" fill="none" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<path d="M908 549" fill="none" stroke="#ff0000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<path d="M907 549 C 916 596, 907 639, 907 639" fill="none" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="953" y="540">U1</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="935" y="683">XOR</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1350" x2="1290" y1="590" y2="590"/>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1350" x2="1290" y1="640" y2="640"/>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1490" x2="1540" y1="610" y2="610"/>
<polyline fill="none" points="1359 568, 1409 568" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1356 659, 1407 659" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<path d="M1410 568 C 1477 568, 1486 612, 1486 612" fill="none" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<path d="M1408 659 C 1476 659, 1486 613, 1486 613" fill="none" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<path d="M1357 568 C 1370 614, 1356 659, 1356 659" fill="none" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<path d="M1348 569" fill="none" stroke="#ff0000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<path d="M1347 569 C 1356 616, 1347 659, 1347 659" fill="none" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="1393" y="560">U2</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="1375" y="703">XOR</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1350" x2="1290" y1="970" y2="970"/>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1360" x2="1290" y1="1010" y2="1010"/>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1350" x2="1290" y1="1050" y2="1050"/>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1490" x2="1540" y1="1010" y2="1010"/>
<path d="M1347 960 C 1377 1010, 1347 1060, 1347 1060" fill="none" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1348 960, 1418 960" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1348 1060, 1418 1060" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<path d="M1419 960 C 1465 960, 1490 1010, 1489 1010" fill="none" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<path d="M1418 1060 C 1467 1060, 1490 1010, 1490 1010" fill="none" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="1403" y="945">U6</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="1375" y="1108">OR3</text>
<polygon fill="#ffff80" points="20 170, 20 145, 145 145, 170 170, 145 195, 20 195, 20 170" 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="170">X</text>
<polygon fill="#ffff80" points="20 320, 20 295, 145 295, 170 320, 145 345, 20 345, 20 320" 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="320">Y</text>
<polygon fill="#ffff80" points="20 810, 20 785, 145 785, 170 810, 145 835, 20 835, 20 810" 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="810">Cin</text>
<polygon fill="#ffff80" points="1780 610, 1780 585, 1905 585, 1930 610, 1905 635, 1780 635, 1780 610" 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="1780" y="610">Pout</text>
<polygon fill="#ffff80" points="1780 1010, 1780 985, 1905 985, 1930 1010, 1905 1035, 1780 1035, 1780 1010" 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="1780" y="1010">Cout</text>
<polyline fill="none" points="1540 610, 1780 610" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1540 1010, 1780 1010" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="310" x2="250" y1="210" y2="210"/>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="310" x2="250" y1="270" y2="270"/>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="440" x2="500" y1="240" y2="240"/>
<path d="M388 188 A 47 47 0 1 1 388 281" fill="none" stroke="#000000" stroke-linecap="round" stroke-width="5"/>
<polyline fill="none" points="389 282, 310 282, 310 188, 389 188" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="351" y="182">U7</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="334" y="328">AND</text>
<polygon fill="#ffff80" points="20 620, 20 595, 145 595, 170 620, 145 645, 20 645, 20 620" 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="620">Pin</text>
<polyline fill="none" points="170 170, 250 170, 250 210" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="170 320, 250 320, 250 270" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="500 240, 540 240, 540 570, 850 570" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<rect fill="none" height="850" stroke="#808080" stroke-width="5" width="900" x="640" y="460"/>
<text alignment-baseline="after-edge" fill="#808080" font-family="微软雅黑" font-size="55" font-weight="400" text-anchor="start" x="940" y="440">一位全加器</text>
<circle cx="690" cy="690" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="690" cy="1040" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="740" cy="620" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="740" cy="850" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="790" cy="790" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="790" cy="570" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
</svg>
添加文件
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<svg height="1753" version="1.1" width="2937" xmlns="http://www.w3.org/2000/svg">
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="716" x2="666" y1="1426" y2="1426"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="749" y="1426">A</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="701" y="1426">11</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="716" x2="666" y1="1456" y2="1456"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="749" y="1456">B</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="701" y="1456">10</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="716" x2="666" y1="1486" y2="1486"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="749" y="1486">C</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="687" y="1486">9</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="706" x2="666" y1="1516" y2="1516"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="759" y="1516">^G</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="687" y="1516">7</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="716" x2="666" y1="1156" y2="1156"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="759" y="1156">D0</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="688" y="1155">4</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="716" x2="666" y1="1186" y2="1186"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="759" y="1186">D1</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="688" y="1185">3</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="716" x2="666" y1="1216" y2="1216"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="759" y="1216">D2</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="688" y="1215">2</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="716" x2="666" y1="1246" y2="1246"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="759" y="1246">D3</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="688" y="1245">1</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="716" x2="666" y1="1276" y2="1276"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="759" y="1276">D4</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="701" y="1276">15</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="716" x2="666" y1="1306" y2="1306"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="759" y="1306">D5</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="701" y="1306">14</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="716" x2="666" y1="1336" y2="1336"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="759" y="1336">D6</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="701" y="1336">13</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="716" x2="666" y1="1366" y2="1366"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="759" y="1366">D7</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="701" y="1366">12</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="866" x2="916" y1="1156" y2="1156"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="833" y="1156">Y</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="897" y="1156">5</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="866" x2="916" y1="1216" y2="1216"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="833" y="1216">W</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="897" y="1216">6</text>
<circle cx="712" cy="1516" fill="none" r="5" stroke="#000000" stroke-width="5"/>
<rect fill="#ffffff" fill-opacity="0.5" height="430" stroke="#000000" stroke-width="5" width="150" x="716" y="1126"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="781" y="1113">U1</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="724" y="1605">74LS151D</text>
<polygon fill="#ffff80" points="176 1156, 176 1141, 311 1141, 326 1156, 311 1171, 176 1171, 176 1156" 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="176" y="1156">CF</text>
<polygon fill="#ffff80" points="176 1186, 176 1171, 311 1171, 326 1186, 311 1201, 176 1201, 176 1186" 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="176" y="1186">ZF</text>
<polygon fill="#ffff80" points="176 1426, 176 1411, 311 1411, 326 1426, 311 1441, 176 1441, 176 1426" 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="176" y="1426">IR2</text>
<polygon fill="#ffff80" points="176 1456, 176 1441, 311 1441, 326 1456, 311 1471, 176 1471, 176 1456" 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="176" y="1456">IR3</text>
<polygon fill="#ffff80" points="176 1486, 176 1471, 311 1471, 326 1486, 311 1501, 176 1501, 176 1486" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="700" text-anchor="start" x="176" y="1486">PC_LOAD_EN</text>
<polygon fill="#ffff80" points="176 1006, 176 991, 311 991, 326 1006, 311 1021, 176 1021, 176 1006" 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="176" y="1006">CLK</text>
<polygon fill="#ffff80" points="176 656, 176 631, 301 631, 326 656, 301 681, 176 681, 176 656" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="20" font-weight="700" text-anchor="start" x="176" y="656">DBUS[7..0]</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="526" y="646">DBUS0</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="526" y="676">DBUS1</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="526" y="706">DBUS2</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="526" y="736">DBUS3</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="526" y="766">DBUS4</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="526" y="796">DBUS5</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="526" y="826">DBUS6</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="526" y="856">DBUS7</text>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="2586" x2="2636" y1="646" y2="596"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="2586" x2="2636" y1="676" y2="626"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="2586" x2="2636" y1="706" y2="656"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="2586" x2="2636" y1="736" y2="686"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="2586" x2="2636" y1="766" y2="716"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="2586" x2="2636" y1="796" y2="746"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="2586" x2="2636" y1="826" y2="776"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="2586" x2="2636" y1="856" y2="806"/>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="2396" y="646">ABUS0</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="2396" y="676">ABUS1</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="2396" y="706">ABUS2</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="2396" y="736">ABUS3</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="2396" y="766">ABUS4</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="2396" y="796">ABUS5</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="2396" y="826">ABUS6</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="2396" y="856">ABUS7</text>
<polygon fill="#ffff80" points="176 1706, 176 1681, 301 1681, 326 1706, 301 1731, 176 1731, 176 1706" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="700" text-anchor="start" x="176" y="1706">PC_A_GATE_EN</text>
<text alignment-baseline="after-edge" fill="#000080" font-family="宋体" font-size="20" font-weight="400" text-anchor="start" x="16" y="1436">指令第3位</text>
<text alignment-baseline="after-edge" fill="#000080" font-family="宋体" font-size="20" font-weight="400" text-anchor="start" x="16" y="1466">指令第4位</text>
<polyline fill="none" points="2586 646, 2296 646" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="2296 676, 2586 676" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="2296 706, 2586 706" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="2296 736, 2586 736" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="2296 766, 2586 766" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="2296 796, 2586 796" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="2296 826, 2586 826" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="2296 856, 2586 856" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polygon fill="#ffff80" points="176 386, 176 361, 301 361, 326 386, 301 411, 176 411, 176 386" stroke="#800000" stroke-width="1"/>
<text alignment-baseline="central" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="700" text-anchor="start" x="176" y="386">PC_D_GATE_EN</text>
<polyline fill="none" points="2046 326, 1996 326, 1996 786, 1996 856" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="2046 236, 1936 236, 1936 726, 1936 766" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="2046 176, 1896 176, 1896 686, 1896 706" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="2046 146, 1876 146, 1876 666, 1876 676" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="2046 116, 1856 116, 1856 646" 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="2396" y="116">DBUS0</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="2396" y="146">DBUS1</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="2396" y="176">DBUS2</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="2396" y="206">DBUS3</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="2396" y="236">DBUS4</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="2396" y="266">DBUS5</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="2396" y="296">DBUS6</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="25" font-weight="400" text-anchor="start" x="2396" y="326">DBUS7</text>
<polyline fill="none" points="666 1216, 586 1216, 586 1246" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="666 1186, 336 1186, 326 1186" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="2296 116, 2576 116" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="2296 146, 2576 146" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="2296 176, 2576 176" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="2296 206, 2576 206" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="2296 236, 2576 236" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="2296 266, 2576 266" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="2296 296, 2576 296" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="2296 326, 2576 326" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="2576" x2="2626" y1="116" y2="66"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="2576" x2="2626" y1="146" y2="96"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="2576" x2="2626" y1="176" y2="126"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="2576" x2="2626" y1="206" y2="156"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="2576" x2="2626" y1="236" y2="186"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="2576" x2="2626" y1="266" y2="216"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="2576" x2="2626" y1="296" y2="246"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="2576" x2="2626" y1="326" y2="276"/>
<polyline fill="none" points="2046 206, 1916 206, 1916 736" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="2046 266, 1956 266, 1956 796" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="2046 296, 1976 296, 1976 826" 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="1046" y="1216">低电平,PC加载新的地址,指令转移</text>
<polygon fill="#ffff80" points="176 916, 176 901, 311 901, 326 916, 311 931, 176 931, 176 916" 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="176" y="916">PC_ADD</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="微软雅黑" font-size="150" font-weight="700" text-anchor="start" x="356" y="296">程序计数器PC模块</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2096" x2="2046" y1="116" y2="116"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="2129" y="116">A0</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2096" x2="2046" y1="146" y2="146"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="2129" y="146">A1</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2096" x2="2046" y1="176" y2="176"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="2129" y="176">A2</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2096" x2="2046" y1="206" y2="206"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="2129" y="206">A3</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2096" x2="2046" y1="236" y2="236"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="2129" y="236">A4</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2096" x2="2046" y1="266" y2="266"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="2129" y="266">A5</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2096" x2="2046" y1="296" y2="296"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="2129" y="296">A6</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2096" x2="2046" y1="326" y2="326"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="2129" y="326">A7</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2246" x2="2296" y1="116" y2="116"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="2213" y="116">D0</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2246" x2="2296" y1="146" y2="146"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="2213" y="146">D1</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2246" x2="2296" y1="176" y2="176"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="2213" y="176">D2</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2246" x2="2296" y1="206" y2="206"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="2213" y="206">D3</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2246" x2="2296" y1="236" y2="236"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="2213" y="236">D4</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2246" x2="2296" y1="266" y2="266"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="2213" y="266">D5</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2246" x2="2296" y1="296" y2="296"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="2213" y="296">D6</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2246" x2="2296" y1="326" y2="326"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="2213" y="326">D7</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2086" x2="2046" y1="386" y2="386"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="2140" y="385">^EN</text>
<rect fill="#a0c0ff" fill-opacity="0.5" height="350" stroke="#000000" stroke-width="5" width="150" x="2096" y="76"/>
<circle cx="2091" cy="386" 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="2086" y="56">PC_D_gate</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="2096" y="476">BUS_TRANS8</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2096" x2="2046" y1="646" y2="646"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="2129" y="646">A0</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2096" x2="2046" y1="676" y2="676"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="2129" y="676">A1</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2096" x2="2046" y1="706" y2="706"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="2129" y="706">A2</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2096" x2="2046" y1="736" y2="736"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="2129" y="736">A3</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2096" x2="2046" y1="766" y2="766"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="2129" y="766">A4</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2096" x2="2046" y1="796" y2="796"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="2129" y="796">A5</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2096" x2="2046" y1="826" y2="826"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="2129" y="826">A6</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2096" x2="2046" y1="856" y2="856"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="2129" y="856">A7</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2246" x2="2296" y1="646" y2="646"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="2213" y="646">D0</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2246" x2="2296" y1="676" y2="676"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="2213" y="676">D1</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2246" x2="2296" y1="706" y2="706"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="2213" y="706">D2</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2246" x2="2296" y1="736" y2="736"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="2213" y="736">D3</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2246" x2="2296" y1="766" y2="766"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="2213" y="766">D4</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2246" x2="2296" y1="796" y2="796"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="2213" y="796">D5</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2246" x2="2296" y1="826" y2="826"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="2213" y="826">D6</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2246" x2="2296" y1="856" y2="856"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="2213" y="856">D7</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="2086" x2="2046" y1="916" y2="916"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="2140" y="915">^EN</text>
<rect fill="#a0c0ff" fill-opacity="0.5" height="350" stroke="#000000" stroke-width="5" width="150" x="2096" y="606"/>
<circle cx="2091" cy="916" 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="2096" y="586">PC_gate</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="2096" y="1006">BUS_TRANS8</text>
<polyline fill="none" points="326 386, 2046 386" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="666 1156, 326 1156" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="666 1426, 326 1426" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="666 1456, 326 1456" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="666 1486, 326 1486" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="246" x2="246" y1="1326" y2="1376"/>
<polygon fill="#ffffff" fill-opacity="0.5" points="246 1326, 296 1276, 196 1276, 246 1326" stroke="#000000" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="微软雅黑" font-size="30" font-weight="700" text-anchor="start" x="236" y="1316">1</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="236" y="1246">U2</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="176" y="1276">DIGITAL1</text>
<polyline fill="none" points="246 1376, 586 1376, 586 1246, 666 1246" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1246" x2="1196" y1="646" y2="646"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1279" y="646">D0</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1246" x2="1196" y1="676" y2="676"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1279" y="676">D1</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1246" x2="1196" y1="706" y2="706"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1279" y="706">D2</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1246" x2="1196" y1="736" y2="736"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1279" y="736">D3</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1246" x2="1196" y1="766" y2="766"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1279" y="766">D4</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1246" x2="1196" y1="796" y2="796"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1279" y="796">D5</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1246" x2="1196" y1="826" y2="826"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1279" y="826">D6</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1246" x2="1196" y1="856" y2="856"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1279" y="856">D7</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1446" x2="1496" y1="646" y2="646"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1413" y="646">Q0</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1446" x2="1496" y1="676" y2="676"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1413" y="676">Q1</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1446" x2="1496" y1="706" y2="706"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1413" y="706">Q2</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1446" x2="1496" y1="736" y2="736"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1413" y="736">Q3</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1446" x2="1496" y1="766" y2="766"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1413" y="766">Q4</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1446" x2="1496" y1="796" y2="796"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1413" y="796">Q5</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1446" x2="1496" y1="826" y2="826"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1413" y="826">Q6</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1446" x2="1496" y1="856" y2="856"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1413" y="856">Q7</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1246" x2="1196" y1="916" y2="916"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1294" y="916">EN</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1236" x2="1196" y1="946" y2="946"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1332" y="946">^LOAD</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1236" x2="1196" y1="976" y2="976"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1319" y="976">^CLR</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1446" x2="1496" y1="916" y2="916"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1403" y="916">RCO</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1246" x2="1196" y1="1006" y2="1006"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1307" y="1006">CLK</text>
<rect fill="#c0dcc0" fill-opacity="0.5" height="500" stroke="#000000" stroke-width="5" width="200" x="1246" y="596"/>
<polyline fill="none" points="1246 996, 1256 1006, 1246 1016" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<circle cx="1241" cy="946" fill="#ffffff" r="6" stroke="#000000" stroke-width="5"/>
<circle cx="1241" cy="976" fill="#ffffff" r="6" stroke="#000000" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="105" font-weight="700" text-anchor="start" x="1256" y="586">PC</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="1286" y="1146">C_SAB8</text>
<polyline fill="none" points="2046 646, 1496 646" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1496 676, 2046 676" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="2046 706, 1496 706" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1496 736, 2046 736" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="2046 766, 1496 766" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1496 796, 2046 796" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="2046 826, 1496 826" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1496 856, 2046 856" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1196 646, 526 646" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1196 676, 526 676" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1196 706, 526 706" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1196 736, 526 736" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1196 766, 526 766" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1196 796, 526 796" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1196 826, 526 826" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1196 856, 526 856" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="476" x2="526" y1="696" y2="646"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="476" x2="526" y1="726" y2="676"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="476" x2="526" y1="756" y2="706"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="476" x2="526" y1="786" y2="736"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="476" x2="526" y1="816" y2="766"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="476" x2="526" y1="846" y2="796"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="476" x2="526" y1="876" y2="826"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="476" x2="526" y1="906" y2="856"/>
<polyline fill="none" points="476 906, 476 656, 326 656" stroke="#000080" stroke-linecap="round" stroke-linejoin="round" stroke-width="20"/>
<polyline fill="none" points="1196 1006, 326 1006" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="916 1216, 1026 1216, 1026 946, 1196 946" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="326 1706, 2026 1706, 2026 916, 2046 916" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="2636 806, 2636 546, 2736 546" stroke="#000080" stroke-linecap="round" stroke-linejoin="round" stroke-width="20"/>
<polyline fill="none" points="2626 276, 2626 46, 2726 46" stroke="#000080" stroke-linecap="round" stroke-linejoin="round" stroke-width="20"/>
<polygon fill="#ffff80" points="2726 46, 2726 21, 2881 21, 2906 46, 2881 71, 2726 71, 2726 46" 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="2726" y="46">DBUS[7..0]</text>
<polygon fill="#ffff80" points="2736 546, 2736 521, 2891 521, 2916 546, 2891 571, 2736 571, 2736 546" 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="2736" y="546">ABUS[7..0]</text>
<polygon fill="#ffff80" points="176 976, 176 961, 311 961, 326 976, 311 991, 176 991, 176 976" 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="176" y="976">RESET</text>
<polyline fill="none" points="1196 976, 326 976" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1196 916, 926 916, 726 916, 326 916" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<circle cx="586" cy="1246" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1976" cy="826" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1956" cy="796" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1916" cy="736" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1856" cy="646" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1876" cy="676" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1896" cy="706" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1936" cy="766" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1996" cy="856" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
</svg>
# 说明
DM1000 八位模型机
# 原理图
![raw svg](DM1000.dlsche.svg)
\ No newline at end of file
添加文件
这个 源代码变更 因为 太大 而不能显示。 你可以 浏览blob
/*******************************************************************************
*******************************************************************************/
#define _CRT_SECURE_NO_WARNINGS
#define _CRT_NONSTDC_NO_DEPRECATE
#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 // 源代码文件中最多可以包含多少个符号
#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; // 行号。
};
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"; // 数据段标志
// 指令名称
const char* mov_instruction_keyword = "mov";
const char* jmp_instruction_keyword = "jmp";
const char* add_instruction_keyword = "add";
const char* adc_instruction_keyword = "adc";
const char* sub_instruction_keyword = "sub";
const char* sbb_instruction_keyword = "sbb";
const char* and_instruction_keyword = "and";
const char* or_instruction_keyword = "or";
const char* read_instruction_keyword = "read";
const char* write_instruction_keyword = "write";
const char* jc_instruction_keyword = "jc";
const char* jz_instruction_keyword = "jz";
const char* call_instruction_keyword = "call";
const char* in_instruction_keyword = "in";
const char* out_instruction_keyword = "out";
const char* ret_instruction_keyword = "ret";
const char* shr_instruction_keyword = "shr";
const char* shl_instruction_keyword = "shl";
const char* rcr_instruction_keyword = "rcr";
const char* rcl_instruction_keyword = "rcl";
const char* not_instruction_keyword = "not";
const char* iret_instruction_keyword = "iret";
const char* nop_instruction_keyword = "nop";
const char* int_instruction_keyword = "int";
const char* lea_instruction_keyword = "lea";
// 通用寄存器名称
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* r0_register_indirect_keyword = "[r0]";
const char* r1_register_indirect_keyword = "[r1]";
const char* r2_register_indirect_keyword = "[r2]";
const char* r3_register_indirect_keyword = "[r3]";
const char* a_register_keyword = "a";
const char* sp_register_keyword = "sp";
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_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;
}
// 判断是否是主存数据
int is_main_memory(const char* token)
{
return (isdigit(token[0]) || '@' == token[0]) ? 1 : 0;
}
// 指令操作数类型
enum
{
OT_REGISTER_A // 累加器
,OT_REGISTER_R0 // r0
,OT_REGISTER_R1 // r1
,OT_REGISTER_R2 // r2
,OT_REGISTER_R3 // r3
,OT_REGISTER_R0_INDIRECT // [r0]
,OT_REGISTER_R1_INDIRECT // [r1]
,OT_REGISTER_R2_INDIRECT // [r2]
,OT_REGISTER_R3_INDIRECT // [r3]
,OT_IMMEDIATE // 立即数
,OT_SYMBOL // 符号
,OT_REGISTER_SP // 堆栈指针寄存器
};
// 得到指令操作数的类型
unsigned long get_operand_type(const char* op)
{
unsigned long op_type;
if(stricmp(op, a_register_keyword) == 0)
{
op_type = OT_REGISTER_A;
}
else 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(stricmp(op, r0_register_indirect_keyword) == 0)
{
op_type = OT_REGISTER_R0_INDIRECT;
}
else if(stricmp(op, r1_register_indirect_keyword) == 0)
{
op_type = OT_REGISTER_R1_INDIRECT;
}
else if(stricmp(op, r2_register_indirect_keyword) == 0)
{
op_type = OT_REGISTER_R2_INDIRECT;
}
else if(stricmp(op, r3_register_indirect_keyword) == 0)
{
op_type = OT_REGISTER_R3_INDIRECT;
}
else if (stricmp(op, sp_register_keyword) == 0)
{
op_type = OT_REGISTER_SP;
}
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, char code_base)
{
return code_base + (char)(op_type - OT_REGISTER_R0);
}
// 根据 [r?] 寄存器和机器码的基础值,得到一个机器码
char get_machine_code_from_r_indirect(unsigned long op_type, char code_base)
{
return code_base + (char)(op_type - OT_REGISTER_R0_INDIRECT);
}
// 根据立即数得到一个机器码。注意,允许使用负数,所以返回值是带符号的 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)
{
reallocate_table[reallocate_count].address = machine_code_address;
strcpy(reallocate_table[reallocate_count].symbol_name, symbol);
reallocate_table[reallocate_count].line_num = line_num;
reallocate_count++;
}
// mov op1, op2
void parse_mov(int line_num)
{
char *op1, *op2;
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(mov_instruction_keyword, line_num);
}
op1_type = get_operand_type(op1);
op2_type = get_operand_type(op2);
if(OT_REGISTER_A == op1_type
&& (op2_type >= OT_REGISTER_R0 && op2_type <= OT_REGISTER_R3))
{
// mov a, r?
machine_code[machine_code_address] = get_machine_code_from_r(op2_type, 0x70);
machine_code_address++;
}
else if(OT_REGISTER_A == op1_type
&& (op2_type >= OT_REGISTER_R0_INDIRECT && op2_type <= OT_REGISTER_R3_INDIRECT))
{
// mov a, [r?]
machine_code[machine_code_address] = get_machine_code_from_r_indirect(op2_type, 0x74);
machine_code_address++;
}
else if(OT_REGISTER_A == op1_type && OT_SYMBOL == op2_type)
{
// mov a, symbol
machine_code[machine_code_address] = 0x78;
machine_code_address++;
// 重定位
add_reallocate(op2, line_num);
machine_code_address++;
}
else if(OT_REGISTER_A == op1_type && OT_IMMEDIATE == op2_type)
{
// mov a, immediate
machine_code[machine_code_address] = 0x7c;
machine_code_address++;
machine_code[machine_code_address] = get_machine_code_from_immediate(op2);
machine_code_address++;
}
else if((op1_type >= OT_REGISTER_R0 && op1_type <= OT_REGISTER_R3)
&& OT_REGISTER_A == op2_type)
{
// mov r?, a
machine_code[machine_code_address] = get_machine_code_from_r(op1_type, 0x80);
machine_code_address++;
}
else if((op1_type >= OT_REGISTER_R0_INDIRECT && op1_type <= OT_REGISTER_R3_INDIRECT)
&& OT_REGISTER_A == op2_type)
{
// mov [r?], a
machine_code[machine_code_address] = get_machine_code_from_r_indirect(op1_type, 0x84);
machine_code_address++;
}
else if(OT_SYMBOL == op1_type && OT_REGISTER_A == op2_type)
{
// mov symbol, a
machine_code[machine_code_address] = 0x88;
machine_code_address++;
// 重定位
add_reallocate(op1, line_num);
machine_code_address++;
}
else if((op1_type >= OT_REGISTER_R0 && op1_type <= OT_REGISTER_R3)
&& OT_IMMEDIATE == op2_type)
{
// mov r?, immediate
machine_code[machine_code_address] = get_machine_code_from_r(op1_type, 0x8c);
machine_code_address++;
machine_code[machine_code_address] = get_machine_code_from_immediate(op2);
machine_code_address++;
}
else if (OT_REGISTER_SP == op1_type && OT_IMMEDIATE == op2_type)
{
// mov sp, immediate
machine_code[machine_code_address] = 0x9c;
machine_code_address++;
machine_code[machine_code_address] = get_machine_code_from_immediate(op2);
machine_code_address++;
}
else
{
error_msg_wrong_op(mov_instruction_keyword, line_num);
}
//
// 在代码行数据库中,标记此行是一个指令行
//
line_database[line_count].flag |= LF_INSTRUCTION;
}
// jmp symbol
void parse_jmp(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(jmp_instruction_keyword, line_num);
}
op_type = get_operand_type(op);
if(OT_SYMBOL == op_type)
{
// jmp symbol
machine_code[machine_code_address] = 0xAC;
machine_code_address++;
// 重定位
add_reallocate(op, line_num);
machine_code_address++;
}
else
{
error_msg_wrong_op(jmp_instruction_keyword, line_num);
}
//
// 在代码行数据库中,标记此行是一个指令行
//
line_database[line_count].flag |= LF_INSTRUCTION;
}
// add op1, op2
void parse_add(int line_num)
{
char *op1, *op2;
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(add_instruction_keyword, line_num);
}
op1_type = get_operand_type(op1);
op2_type = get_operand_type(op2);
if(OT_REGISTER_A == op1_type
&& (op2_type >= OT_REGISTER_R0 && op2_type <= OT_REGISTER_R3))
{
// add a, r?
machine_code[machine_code_address] = get_machine_code_from_r(op2_type, 0x10);
machine_code_address++;
}
else if(OT_REGISTER_A == op1_type
&& (op2_type >= OT_REGISTER_R0_INDIRECT && op2_type <= OT_REGISTER_R3_INDIRECT))
{
// add a, [r?]
machine_code[machine_code_address] = get_machine_code_from_r_indirect(op2_type, 0x14);
machine_code_address++;
}
else if(OT_REGISTER_A == op1_type && OT_SYMBOL == op2_type)
{
// add a, symbol
machine_code[machine_code_address] = 0x18;
machine_code_address++;
// 重定位
add_reallocate(op2, line_num);
machine_code_address++;
}
else if(OT_REGISTER_A == op1_type && OT_IMMEDIATE == op2_type)
{
// add a, immediate
machine_code[machine_code_address] = 0x1c;
machine_code_address++;
machine_code[machine_code_address] = get_machine_code_from_immediate(op2);
machine_code_address++;
}
else
{
error_msg_wrong_op(add_instruction_keyword, line_num);
}
//
// 在代码行数据库中,标记此行是一个指令行
//
line_database[line_count].flag |= LF_INSTRUCTION;
}
// adc op1, op2
void parse_adc(int line_num)
{
char *op1, *op2;
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(adc_instruction_keyword, line_num);
}
op1_type = get_operand_type(op1);
op2_type = get_operand_type(op2);
if(OT_REGISTER_A == op1_type
&& (op2_type >= OT_REGISTER_R0 && op2_type <= OT_REGISTER_R3))
{
// adc a, r?
machine_code[machine_code_address] = get_machine_code_from_r(op2_type, 0x20);
machine_code_address++;
}
else if(OT_REGISTER_A == op1_type
&& (op2_type >= OT_REGISTER_R0_INDIRECT && op2_type <= OT_REGISTER_R3_INDIRECT))
{
// adc a, [r?]
machine_code[machine_code_address] = get_machine_code_from_r_indirect(op2_type, 0x24);
machine_code_address++;
}
else if(OT_REGISTER_A == op1_type && OT_SYMBOL == op2_type)
{
// adc a, symbol
machine_code[machine_code_address] = 0x28;
machine_code_address++;
// 重定位
add_reallocate(op2, line_num);
machine_code_address++;
}
else if(OT_REGISTER_A == op1_type && OT_IMMEDIATE == op2_type)
{
// adc a, immediate
machine_code[machine_code_address] = 0x2c;
machine_code_address++;
machine_code[machine_code_address] = get_machine_code_from_immediate(op2);
machine_code_address++;
}
else
{
error_msg_wrong_op(adc_instruction_keyword, line_num);
}
//
// 在代码行数据库中,标记此行是一个指令行
//
line_database[line_count].flag |= LF_INSTRUCTION;
}
// sub op1, op2
void parse_sub(int line_num)
{
char *op1, *op2;
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(sub_instruction_keyword, line_num);
}
op1_type = get_operand_type(op1);
op2_type = get_operand_type(op2);
if(OT_REGISTER_A == op1_type
&& (op2_type >= OT_REGISTER_R0 && op2_type <= OT_REGISTER_R3))
{
// sub a, r?
machine_code[machine_code_address] = get_machine_code_from_r(op2_type, 0x30);
machine_code_address++;
}
else if(OT_REGISTER_A == op1_type
&& (op2_type >= OT_REGISTER_R0_INDIRECT && op2_type <= OT_REGISTER_R3_INDIRECT))
{
// sub a, [r?]
machine_code[machine_code_address] = get_machine_code_from_r_indirect(op2_type, 0x34);
machine_code_address++;
}
else if(OT_REGISTER_A == op1_type && OT_SYMBOL == op2_type)
{
// sub a, symbol
machine_code[machine_code_address] = 0x38;
machine_code_address++;
// 重定位
add_reallocate(op2, line_num);
machine_code_address++;
}
else if(OT_REGISTER_A == op1_type && OT_IMMEDIATE == op2_type)
{
// sub a, immediate
machine_code[machine_code_address] = 0x3c;
machine_code_address++;
machine_code[machine_code_address] = get_machine_code_from_immediate(op2);
machine_code_address++;
}
else
{
error_msg_wrong_op(sub_instruction_keyword, line_num);
}
//
// 在代码行数据库中,标记此行是一个指令行
//
line_database[line_count].flag |= LF_INSTRUCTION;
}
// sbb op1, op2
void parse_sbb(int line_num)
{
char *op1, *op2;
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(sbb_instruction_keyword, line_num);
}
op1_type = get_operand_type(op1);
op2_type = get_operand_type(op2);
if(OT_REGISTER_A == op1_type
&& (op2_type >= OT_REGISTER_R0 && op2_type <= OT_REGISTER_R3))
{
// sbb a, r?
machine_code[machine_code_address] = get_machine_code_from_r(op2_type, 0x40);
machine_code_address++;
}
else if(OT_REGISTER_A == op1_type
&& (op2_type >= OT_REGISTER_R0_INDIRECT && op2_type <= OT_REGISTER_R3_INDIRECT))
{
// sbb a, [r?]
machine_code[machine_code_address] = get_machine_code_from_r_indirect(op2_type, 0x44);
machine_code_address++;
}
else if(OT_REGISTER_A == op1_type && OT_SYMBOL == op2_type)
{
// sbb a, symbol
machine_code[machine_code_address] = 0x48;
machine_code_address++;
// 重定位
add_reallocate(op2, line_num);
machine_code_address++;
}
else if(OT_REGISTER_A == op1_type && OT_IMMEDIATE == op2_type)
{
// sbb a, immediate
machine_code[machine_code_address] = 0x4c;
machine_code_address++;
machine_code[machine_code_address] = get_machine_code_from_immediate(op2);
machine_code_address++;
}
else
{
error_msg_wrong_op(sbb_instruction_keyword, line_num);
}
//
// 在代码行数据库中,标记此行是一个指令行
//
line_database[line_count].flag |= LF_INSTRUCTION;
}
// and op1, op2
void parse_and(int line_num)
{
char *op1, *op2;
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(and_instruction_keyword, line_num);
}
op1_type = get_operand_type(op1);
op2_type = get_operand_type(op2);
if(OT_REGISTER_A == op1_type
&& (op2_type >= OT_REGISTER_R0 && op2_type <= OT_REGISTER_R3))
{
// and a, r?
machine_code[machine_code_address] = get_machine_code_from_r(op2_type, 0x50);
machine_code_address++;
}
else if(OT_REGISTER_A == op1_type
&& (op2_type >= OT_REGISTER_R0_INDIRECT && op2_type <= OT_REGISTER_R3_INDIRECT))
{
// and a, [r?]
machine_code[machine_code_address] = get_machine_code_from_r_indirect(op2_type, 0x54);
machine_code_address++;
}
else if(OT_REGISTER_A == op1_type && OT_SYMBOL == op2_type)
{
// and a, symbol
machine_code[machine_code_address] = 0x58;
machine_code_address++;
// 重定位
add_reallocate(op2, line_num);
machine_code_address++;
}
else if(OT_REGISTER_A == op1_type && OT_IMMEDIATE == op2_type)
{
// and a, immediate
machine_code[machine_code_address] = 0x5c;
machine_code_address++;
machine_code[machine_code_address] = get_machine_code_from_immediate(op2);
machine_code_address++;
}
else
{
error_msg_wrong_op(and_instruction_keyword, line_num);
}
//
// 在代码行数据库中,标记此行是一个指令行
//
line_database[line_count].flag |= LF_INSTRUCTION;
}
// or op1, op2
void parse_or(int line_num)
{
char *op1, *op2;
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(or_instruction_keyword, line_num);
}
op1_type = get_operand_type(op1);
op2_type = get_operand_type(op2);
if(OT_REGISTER_A == op1_type
&& (op2_type >= OT_REGISTER_R0 && op2_type <= OT_REGISTER_R3))
{
// or a, r?
machine_code[machine_code_address] = get_machine_code_from_r(op2_type, 0x60);
machine_code_address++;
}
else if(OT_REGISTER_A == op1_type
&& (op2_type >= OT_REGISTER_R0_INDIRECT && op2_type <= OT_REGISTER_R3_INDIRECT))
{
// or a, [r?]
machine_code[machine_code_address] = get_machine_code_from_r_indirect(op2_type, 0x64);
machine_code_address++;
}
else if(OT_REGISTER_A == op1_type && OT_SYMBOL == op2_type)
{
// or a, symbol
machine_code[machine_code_address] = 0x68;
machine_code_address++;
// 重定位
add_reallocate(op2, line_num);
machine_code_address++;
}
else if(OT_REGISTER_A == op1_type && OT_IMMEDIATE == op2_type)
{
// or a, immediate
machine_code[machine_code_address] = 0x6c;
machine_code_address++;
machine_code[machine_code_address] = get_machine_code_from_immediate(op2);
machine_code_address++;
}
else
{
error_msg_wrong_op(or_instruction_keyword, line_num);
}
//
// 在代码行数据库中,标记此行是一个指令行
//
line_database[line_count].flag |= LF_INSTRUCTION;
}
// lea a, symbol
void parse_lea(int line_num)
{
char *op1, *op2;
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(lea_instruction_keyword, line_num);
}
op1_type = get_operand_type(op1);
op2_type = get_operand_type(op2);
if(OT_REGISTER_A == op1_type && OT_SYMBOL == op2_type)
{
// lea a, symbol
machine_code[machine_code_address] = 0x98;
machine_code_address++;
// 重定位
add_reallocate(op2, line_num);
machine_code_address++;
}
else
{
error_msg_wrong_op(lea_instruction_keyword, line_num);
}
//
// 在代码行数据库中,标记此行是一个指令行
//
line_database[line_count].flag |= LF_INSTRUCTION;
}
// read symbol
void parse_read(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(read_instruction_keyword, line_num);
}
op_type = get_operand_type(op);
if(OT_SYMBOL == op_type)
{
// read symbol
machine_code[machine_code_address] = 0x90;
machine_code_address++;
// 重定位
add_reallocate(op, line_num);
machine_code_address++;
}
else
{
error_msg_wrong_op(read_instruction_keyword, line_num);
}
//
// 在代码行数据库中,标记此行是一个指令行
//
line_database[line_count].flag |= LF_INSTRUCTION;
}
// write symbol
void parse_write(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(write_instruction_keyword, line_num);
}
op_type = get_operand_type(op);
if(OT_SYMBOL == op_type)
{
// write symbol
machine_code[machine_code_address] = 0x94;
machine_code_address++;
// 重定位
add_reallocate(op, line_num);
machine_code_address++;
}
else
{
error_msg_wrong_op(write_instruction_keyword, line_num);
}
//
// 在代码行数据库中,标记此行是一个指令行
//
line_database[line_count].flag |= LF_INSTRUCTION;
}
// jc symbol
void parse_jc(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(jc_instruction_keyword, line_num);
}
op_type = get_operand_type(op);
if(OT_SYMBOL == op_type)
{
// jc symbol
machine_code[machine_code_address] = 0xA0;
machine_code_address++;
// 重定位
add_reallocate(op, line_num);
machine_code_address++;
}
else
{
error_msg_wrong_op(jc_instruction_keyword, line_num);
}
//
// 在代码行数据库中,标记此行是一个指令行
//
line_database[line_count].flag |= LF_INSTRUCTION;
}
// jz symbol
void parse_jz(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(jz_instruction_keyword, line_num);
}
op_type = get_operand_type(op);
if(OT_SYMBOL == op_type)
{
// jz symbol
machine_code[machine_code_address] = 0xA4;
machine_code_address++;
// 重定位
add_reallocate(op, line_num);
machine_code_address++;
}
else
{
error_msg_wrong_op(jz_instruction_keyword, line_num);
}
//
// 在代码行数据库中,标记此行是一个指令行
//
line_database[line_count].flag |= LF_INSTRUCTION;
}
// call symbol
void parse_call(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(call_instruction_keyword, line_num);
}
op_type = get_operand_type(op);
if(OT_SYMBOL == op_type)
{
// call symbol
machine_code[machine_code_address] = 0xE8;
machine_code_address++;
// 重定位
add_reallocate(op, line_num);
machine_code_address++;
}
else
{
error_msg_wrong_op(call_instruction_keyword, line_num);
}
//
// 在代码行数据库中,标记此行是一个指令行
//
line_database[line_count].flag |= LF_INSTRUCTION;
}
// int immediate
void parse_int(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(int_instruction_keyword, line_num);
}
op_type = get_operand_type(op);
if(OT_IMMEDIATE == op_type)
{
// int immediate
machine_code[machine_code_address] = 0xB8;
machine_code_address++;
machine_code[machine_code_address] = get_machine_code_from_immediate(op);
machine_code_address++;
}
else
{
error_msg_wrong_op(int_instruction_keyword, line_num);
}
//
// 在代码行数据库中,标记此行是一个指令行
//
line_database[line_count].flag |= LF_INSTRUCTION;
}
// in
void parse_in(int line_num)
{
machine_code[machine_code_address] = 0xB0;
machine_code_address++;
//
// 在代码行数据库中,标记此行是一个指令行
//
line_database[line_count].flag |= LF_INSTRUCTION;
}
// out
void parse_out(int line_num)
{
machine_code[machine_code_address] = 0xB4;
machine_code_address++;
//
// 在代码行数据库中,标记此行是一个指令行
//
line_database[line_count].flag |= LF_INSTRUCTION;
}
// ret
void parse_ret(int line_num)
{
machine_code[machine_code_address] = 0xC8;
machine_code_address++;
//
// 在代码行数据库中,标记此行是一个指令行
//
line_database[line_count].flag |= LF_INSTRUCTION;
}
// shr a
void parse_shr(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(shr_instruction_keyword, line_num);
}
op_type = get_operand_type(op);
if(OT_REGISTER_A == op_type)
{
machine_code[machine_code_address] = 0xD0;
machine_code_address++;
}
else
{
error_msg_wrong_op(shr_instruction_keyword, line_num);
}
//
// 在代码行数据库中,标记此行是一个指令行
//
line_database[line_count].flag |= LF_INSTRUCTION;
}
// shl a
void parse_shl(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(shl_instruction_keyword, line_num);
}
op_type = get_operand_type(op);
if(OT_REGISTER_A == op_type)
{
machine_code[machine_code_address] = 0xD4;
machine_code_address++;
}
else
{
error_msg_wrong_op(shl_instruction_keyword, line_num);
}
//
// 在代码行数据库中,标记此行是一个指令行
//
line_database[line_count].flag |= LF_INSTRUCTION;
}
// rcr a
void parse_rcr(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(rcr_instruction_keyword, line_num);
}
op_type = get_operand_type(op);
if(OT_REGISTER_A == op_type)
{
machine_code[machine_code_address] = 0xD8;
machine_code_address++;
}
else
{
error_msg_wrong_op(rcr_instruction_keyword, line_num);
}
//
// 在代码行数据库中,标记此行是一个指令行
//
line_database[line_count].flag |= LF_INSTRUCTION;
}
// rcl a
void parse_rcl(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(rcl_instruction_keyword, line_num);
}
op_type = get_operand_type(op);
if(OT_REGISTER_A == op_type)
{
machine_code[machine_code_address] = 0xDC;
machine_code_address++;
}
else
{
error_msg_wrong_op(rcl_instruction_keyword, line_num);
}
//
// 在代码行数据库中,标记此行是一个指令行
//
line_database[line_count].flag |= LF_INSTRUCTION;
}
// not a
void parse_not(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(not_instruction_keyword, line_num);
}
op_type = get_operand_type(op);
if(OT_REGISTER_A == op_type)
{
machine_code[machine_code_address] = 0xE4;
machine_code_address++;
}
else
{
error_msg_wrong_op(not_instruction_keyword, line_num);
}
//
// 在代码行数据库中,标记此行是一个指令行
//
line_database[line_count].flag |= LF_INSTRUCTION;
}
// iret
void parse_iret(int line_num)
{
machine_code[machine_code_address] = 0xF8;
machine_code_address++;
//
// 在代码行数据库中,标记此行是一个指令行
//
line_database[line_count].flag |= LF_INSTRUCTION;
}
// nop
void parse_nop(int line_num)
{
machine_code[machine_code_address] = 0xE0;
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 }
,{ &mov_instruction_keyword, parse_mov }
,{ &jmp_instruction_keyword, parse_jmp }
,{ &add_instruction_keyword, parse_add }
,{ &adc_instruction_keyword, parse_adc }
,{ &sub_instruction_keyword, parse_sub }
,{ &sbb_instruction_keyword, parse_sbb }
,{ &and_instruction_keyword, parse_and }
,{ &or_instruction_keyword, parse_or }
,{ &read_instruction_keyword, parse_read }
,{ &write_instruction_keyword, parse_write }
,{ &jc_instruction_keyword, parse_jc }
,{ &jz_instruction_keyword, parse_jz }
,{ &call_instruction_keyword, parse_call }
,{ &in_instruction_keyword, parse_in }
,{ &out_instruction_keyword, parse_out }
,{ &ret_instruction_keyword, parse_ret }
,{ &shr_instruction_keyword, parse_shr }
,{ &shl_instruction_keyword, parse_shl }
,{ &rcr_instruction_keyword, parse_rcr }
,{ &rcl_instruction_keyword, parse_rcl }
,{ &not_instruction_keyword, parse_not }
,{ &iret_instruction_keyword, parse_iret }
,{ &nop_instruction_keyword, parse_nop }
,{ &int_instruction_keyword, parse_int }
,{ &lea_instruction_keyword, parse_lea }
,{ &r0_register_keyword, NULL }
,{ &r1_register_keyword, NULL }
,{ &r2_register_keyword, NULL }
,{ &r3_register_keyword, NULL }
,{ &r0_register_indirect_keyword, NULL }
,{ &r1_register_indirect_keyword, NULL }
,{ &r2_register_indirect_keyword, NULL }
,{ &r3_register_indirect_keyword, NULL }
,{ &a_register_keyword, NULL }
,{ &sp_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 DM1000 8位模型机汇编器 [版本 2.0]\n"
);
}
// 输出帮助信息
void help_msg()
{
printf(
"Engintime DM1000 8位模型机汇编器。\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;
//
// 处理命令行参数
//
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)
{
machine_code[reallocate_table[i].address] = (BYTE)symbol_table[j].address;
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;
}
添加文件
/*******************************************************************************
*******************************************************************************/
#define _CRT_SECURE_NO_WARNINGS
#define _CRT_NONSTDC_NO_DEPRECATE
#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 // 源代码文件中最多可以包含多少个符号
#ifndef MAX_PATH
#define MAX_PATH 256 // 文件路径最多可以包含多少了字符
#endif
// 代码行数据库。记录源代码文件中所有代码行的信息(包括注释行、空行)
struct LINE_RECORD
{
char line_string[MAX_LINE_LENGTH]; // 代码行的内容
unsigned long line_num; // 行号
unsigned long address; // 此行代码转换的机器码在映像文件中的地址(偏移)。注意,对于 DM1000 来说,微指令的一个地址对应 4 个字节。
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,表示此行是一条指令,否则表示此行是数据
//
// 在下面定义所有的关键字
//
// 寄存器名称
const char* rx_register_keyword = "rx";
const char* mar_register_keyword = "mar";
const char* rin_register_keyword = "rin";
const char* rout_register_keyword = "rout";
const char* sp_register_keyword = "sp";
const char* ia_register_keyword = "ia";
const char* ir_register_keyword = "ir";
const char* flag_register_keyword = "flag";
const char* pc_register_keyword = "pc";
const char* a_register_keyword = "a";
const char* w_register_keyword = "w";
const char* asr_register_keyword = "asr";
const char* upc_register_keyword = "upc";
// 堆栈计数器
const char* csp_counter_keyword = "csp";
//
// alu 操作码
const char* alu_add_keyword = "alu_add";
const char* alu_adc_keyword = "alu_adc";
const char* alu_sub_keyword = "alu_sub";
const char* alu_sbb_keyword = "alu_sbb";
const char* alu_and_keyword = "alu_and";
const char* alu_or_keyword = "alu_or";
const char* alu_aout_keyword = "alu_aout";
const char* alu_shr_keyword = "alu_shr";
const char* alu_shl_keyword = "alu_shl";
const char* alu_rcr_keyword = "alu_rcr";
const char* alu_rcl_keyword = "alu_rcl";
const char* alu_not_keyword = "alu_not";
const char* sp_inc_keyword = "sp_inc";
const char* sp_dec_keyword = "sp_dec";
// 访问主存或外设的操作数
const char* pc_main_memory_keyword = "[pc]";
const char* mar_main_memory_keyword = "[mar]";
const char* delimit_char = "\n\t\r "; // 需要忽略的空白字符
const char* delimit_char_comma = "\n\t\r, "; // 需要忽略的空白字符,包括英文逗号
// 单操作数微指令
struct ONE_OPERAND_INSTRUCTION_ENTRY
{
const char** op;
unsigned long micro_machine_code;
};
struct ONE_OPERAND_INSTRUCTION_ENTRY one_operand_table[] =
{
{ NULL, 0x0 } // 未用
,{ &pc_register_keyword, 0xffffffff } // inc pc
,{ &upc_register_keyword, 0xffffffcf } // reset upc
};
// 查表,操作数是否匹配。返回0,操作数不匹配;返回非0,操作数匹配,并且返回值就是操作数在表中的下标。
int match_one_operand(const char* op)
{
int i;
for(i=1; i<sizeof(one_operand_table)/sizeof(one_operand_table[0]); i++)
{
if((stricmp(op, *one_operand_table[i].op) == 0))
{
return i;
}
}
return 0;
}
// 双操作数微指令
struct PATH_INSTRUCTION_OPERAND_ENTRY
{
const char** op1;
const char** op2;
unsigned long micro_machine_code;
};
//////////////////////////////////////////////////////////////////////////
//
struct PATH_INSTRUCTION_OPERAND_ENTRY path_operand_table[] =
{
{ NULL, NULL, 0x0 } // 未用
// 注意:在本文档中,所有微指令编码都是从低字节到高字节的顺序编码的。
// 以取指微指令 path [pc], ir 为例,它的32位编码,从低字节到高字节依次为:[7:0]=ef,[15:8]=3f,[23:16]=f9, [31:24]=ff;
// 而在DM1000中,按照阅读习惯,将高位字节放在前面,低位字节放在后面。
// 因此,在源代码窗口和存储器窗口中显示的是“ef 3f f9 ff”,即微指令编码[31:0]=fff93fef。
,{ &pc_main_memory_keyword, &ir_register_keyword, 0xfff93fef } // path [pc], ir
,{ &alu_add_keyword, &a_register_keyword, 0x99e4ffef } // path alu_add, a
,{ &alu_sub_keyword, &a_register_keyword, 0x86e4ffef } // path alu_sub, a
,{ &alu_or_keyword, &a_register_keyword, 0xbee4ffef } // path alu_or, a
,{ &alu_and_keyword, &a_register_keyword, 0xbbe4ffef } // path alu_and, a
,{ &alu_adc_keyword, &a_register_keyword, 0x89e4ffef } // path alu_adc, a
,{ &alu_sbb_keyword, &a_register_keyword, 0x96e4ffef } // path alu_sbb, a
,{ &alu_shr_keyword, &a_register_keyword, 0x90d5ffef } // path alu_shr, a
,{ &alu_shl_keyword, &a_register_keyword, 0x90d6ffef } // path alu_shl, a
,{ &alu_rcr_keyword, &a_register_keyword, 0x90e5ffef } // path alu_rcr, a
,{ &alu_rcl_keyword, &a_register_keyword, 0x90e6ffef } // path alu_rcl, a
,{ &alu_not_keyword, &a_register_keyword, 0xb0f4ffef } // path alu_not, a
,{ &rx_register_keyword, &w_register_keyword, 0x7ffaffef } // path rx, w
,{ &rx_register_keyword, &mar_register_keyword, 0xfffaf7ef } // path rx, mar
,{ &mar_main_memory_keyword, &w_register_keyword, 0x7ff9fbef } // path [mar], w
,{ &pc_main_memory_keyword, &mar_register_keyword, 0xfff977ef } // path [pc], mar
,{ &pc_main_memory_keyword, &w_register_keyword, 0x7ff97fef } // path [pc], w
,{ &rx_register_keyword, &a_register_keyword, 0xbffaffef } // path rx, a
,{ &mar_main_memory_keyword, &a_register_keyword, 0xbff9fbef } // path [mar], a 从地址寄存器指定的内存单元读数据到a寄存器
,{ &pc_main_memory_keyword, &a_register_keyword, 0xbff97fef } // path [pc], a
,{ &a_register_keyword, &rx_register_keyword, 0xd0b4ffef } // path a, rx
,{ &a_register_keyword, &mar_main_memory_keyword, 0xd0f4fbed } // path a, [mar] 将a寄存器数据写入地址寄存器指向的内存
,{ &pc_main_memory_keyword, &rx_register_keyword, 0xffb97fef } // path [pc], rx
,{ &alu_aout_keyword, &mar_main_memory_keyword, 0xd0f4fbec } // path alu_aout, [mar]
,{ &pc_main_memory_keyword, &pc_register_keyword, 0xfff96fff } // path [pc], pc
,{ &pc_register_keyword, &sp_register_keyword, 0xfff3feef } // path pc, sp
,{ &ia_register_keyword, &mar_register_keyword, 0xfff1f7ef } // path ia, mar
,{ &pc_register_keyword, &mar_register_keyword, 0xfff3f7ef } // path pc, mar
,{ &rin_register_keyword, &a_register_keyword, 0xbff0ffef } // path rin, a
,{ &a_register_keyword, &rout_register_keyword, 0xd0f4ffee } // path a, rout
,{ &mar_main_memory_keyword, &pc_register_keyword, 0xfff9ebef } // path [mar],pc 从地址寄存器指定的内存单元读数据到程序计数器pc
,{ &pc_main_memory_keyword, &sp_register_keyword, 0xfff97eef } // path [pc], sp
,{ &sp_register_keyword, &mar_register_keyword, 0xfff2f7ef } // path sp, mar
,{ &sp_register_keyword, &csp_counter_keyword, 0xff72ffef } // path sp, csp
,{ &pc_main_memory_keyword, &ia_register_keyword, 0xfff97feb } // path [pc], ia
,{ &pc_main_memory_keyword, &asr_register_keyword, 0xfff97def } // path [pc], asr
,{ &csp_counter_keyword, &mar_register_keyword, 0xfff8f7ef } // path csp, mar
,{ &csp_counter_keyword, &sp_register_keyword, 0xfff8feef } // path csp, sp
,{ &sp_inc_keyword, &csp_counter_keyword, 0xffffffe7 } // path sp_inc, csp
,{ &sp_dec_keyword, &csp_counter_keyword, 0xffffffef } // path sp_dec, csp
,{ &pc_register_keyword, &mar_main_memory_keyword, 0xfff3fbed } // path pc, [mar] 将pc值写入mar指向的存储单元
,{ &asr_register_keyword, &pc_register_keyword, 0xfff7efef } // path asr, pc
,{ &sp_register_keyword, &asr_register_keyword, 0xfff2fdef } // path sp, asr
};
// 查表,判断两个操作数是否匹配。返回0,操作数不完全匹配;返回非0,操作数完全匹配,并且返回值就是操作数在表中的下标。
int match_ops(const char* op1, const char* op2)
{
int i;
for(i=1; i<sizeof(path_operand_table)/sizeof(path_operand_table[0]); i++)
{
if((stricmp(op1, *path_operand_table[i].op1) == 0)
&& (stricmp(op2, *path_operand_table[i].op2) == 0))
{
return i;
}
}
return 0;
}
// 汇编产生的机器码
#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* micro_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", micro_file_name, line_num, error_msg);
}
else
{
printf("%s: error: %s\n", micro_file_name, error_msg);
}
exit(1);
}
char formated_msg[1024]; // 将格式化后的错误信息放在此字符串中。
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);
}
// 定义关键字和解析函数的对应关系
typedef void (*PARSE_FUNCTION)(int line_num);
struct KEYWORD_FUNCTION_ENTRY
{
const char** keyword;
PARSE_FUNCTION parse_function;
};
// 指令名称
const char* dup_instruction_keyword = "dup";
const char* null_instruction_keyword = "null";
const char* path_instruction_keyword = "path";
const char* inc_instruction_keyword = "inc"; // pc+1
const char* reset_instruction_keyword = "reset"; // 复位
// 判断是否是立即数。不支持负数。
int is_immediate(const char* token)
{
return isdigit(token[0]);
}
// 根据立即数得到值。不支持负数。
unsigned long get_value_from_immediate(const char* immediate)
{
char* end;
int base = (immediate[0] == '0' && (immediate[1] == 'x' || immediate[1] == 'X')) ? 16 : 10;
return strtoul(immediate, &end, base);
}
// dup n, null
void parse_dup(int line_num)
{
char *op1, *op2;
int i;
unsigned long micro_instruction_count; // 微指令个数
unsigned long micro_code; // 微指令编码
op1 = strtok(NULL, delimit_char_comma);
op2 = strtok(NULL, delimit_char);
if(NULL == op1 || NULL == op2)
{
error_msg_miss_op(dup_instruction_keyword, line_num);
}
// dup微指令的第一个操作数必须是立即数(十进制或十六进制)
if (!is_immediate(op1))
{
error_msg_wrong_op(dup_instruction_keyword, line_num);
}
// 得到微指令个数
micro_instruction_count = get_value_from_immediate(op1);
// 解析第二个操作数
if (is_immediate(op2))
{
micro_code = get_value_from_immediate(op2);
}
else if(0 == stricmp(op2, null_instruction_keyword))
{
micro_code = 0xffffffff;
}
else
{
error_msg_wrong_op(dup_instruction_keyword, line_num);
}
for (i = 0; i < (int)micro_instruction_count; i++)
{
memcpy(&machine_code[machine_code_address], &micro_code, 4);
machine_code_address += 4;
}
}
// null
void parse_null(int line_num)
{
unsigned long ul = 0xffffffff;
memcpy(&machine_code[machine_code_address], &ul, 4);
machine_code_address += 4;
}
// path op1, op2
void parse_path(int line_num)
{
char *op1, *op2;
int index;
op1 = strtok(NULL, delimit_char_comma);
op2 = strtok(NULL, delimit_char);
if(NULL == op1 || NULL == op2)
{
error_msg_miss_op(path_instruction_keyword, line_num);
}
index = match_ops(op1, op2);
if (0 == index)
{
error_msg_wrong_op(path_instruction_keyword, line_num);
}
memcpy(&machine_code[machine_code_address], &path_operand_table[index].micro_machine_code, 4);
machine_code_address += 4;
//
// 在代码行数据库中,标记此行是一个指令行
//
line_database[line_count].flag |= LF_INSTRUCTION;
}
// inc
void parse_inc(int line_num)
{
char *op;
int index;
op = strtok(NULL, delimit_char_comma);
if(NULL == op)
{
error_msg_miss_op(inc_instruction_keyword, line_num);
}
index = match_one_operand(op);
if (0 == index)
{
error_msg_wrong_op(inc_instruction_keyword, line_num);
}
memcpy(&machine_code[machine_code_address], &one_operand_table[index].micro_machine_code, 4);
machine_code_address += 4;
//
// 在代码行数据库中,标记此行是一个指令行
//
line_database[line_count].flag |= LF_INSTRUCTION;
}
// reset
void parse_reset(int line_num)
{
char *op;
int index;
op = strtok(NULL, delimit_char_comma);
if(NULL == op)
{
error_msg_miss_op(reset_instruction_keyword, line_num);
}
index = match_one_operand(op);
if (0 == index)
{
error_msg_wrong_op(reset_instruction_keyword, line_num);
}
memcpy(&machine_code[machine_code_address], &one_operand_table[index].micro_machine_code, 4);
machine_code_address += 4;
//
// 在代码行数据库中,标记此行是一个指令行
//
line_database[line_count].flag |= LF_INSTRUCTION;
}
//
// 必须将关键字及其解析函数放在下面的表中。从而可以使用“表驱动”的编程模式。
//
struct KEYWORD_FUNCTION_ENTRY keyword_function_table[] =
{
{ NULL, NULL } // 未用
,{ &dup_instruction_keyword, parse_dup }
,{ &null_instruction_keyword, parse_null }
,{ &path_instruction_keyword, parse_path }
,{ &inc_instruction_keyword, parse_inc }
,{ &reset_instruction_keyword, parse_reset }
};
// 判断是否是一个关键字。返回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;
}
// 输出版本信息
void version_msg()
{
printf(
"Engintime DM1000 8位模型机微指令汇编器 [版本 2.0]\n"
);
}
// 输出帮助信息
void help_msg()
{
printf(
"Engintime DM1000 8位模型机微指令汇编器。\n\n"
"用法:\n\n"
" microasm.exe micro_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指定生成的目标文件路径。若未指定,默认生成 micro.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 == micro_file_name && argv[i][0] != '-')
{
// 输入的汇编源代码文件路径。
micro_file_name = argv[i];
}
else
{
argument_error_msg();
}
}
//
// 如果命令行参数中没有指定输入的汇编文件,就打印错误信息后退出
//
if(NULL == micro_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 micro_code;
//
// 处理命令行参数
//
process_argument(argc, argv);
//
// 打开汇编源代码文件
//
fp = fopen(micro_file_name, "r");
if(NULL == fp)
{
printf("无法打开微指令源代码文件 %s\n", micro_file_name);
return 1;
}
////////////////////////////////////////////////////////////////////////////
//// 扫描
version_msg();
printf("\n正在汇编 %s...\n", micro_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(line_num);
}
else if(is_immediate(token))
{
// 将立即数直接作为微指令
micro_code = get_value_from_immediate(token);
memcpy(&machine_code[machine_code_address], &micro_code, 4);
machine_code_address += 4;
}
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);
////////////////////////////////////////////////////////////////////////////
//// 产生各种输出文件
//
// 将机器码写入二进制文件
//
if(NULL == target_file_name)
{
target_file_name = "micro.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<4; j++)
{
fprintf(fp, "%02X ", machine_code[line_database[i].address + j]);
}
fprintf(fp, " ");
}
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(micro_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);
}
// 没有符号表。但是为了确保调试信息的格式能够被正确读取,必须写入符号表数量为 0
i = 0;
fwrite(&i, 1, sizeof(i), fp);
fclose(fp);
printf("生成调试信息文件 %s\n", dbg_file_name);
}
return 0;
}
添加文件
; 示例程序
.text
mov r0, 16 ;将立即数 16 传送到寄存器 r0
mov a, num ;将标号 num 指定的存储单元内容复制到累加器 a 中
add a, r0 ;将累加器 a 与寄存器 r0 相加,结果写回 a 中
Endless_Loop:
jmp Endless_Loop ;死循环
.data
num: -1
@echo off
dmasm.exe ram.asm -o ram.rxm -l ram.lst -g ram.dbg
pause
添加文件
0001 ; 示例程序
0002
0003 .text
0004 00 8C 10 mov r0, 16 ;将立即数 16 传送到寄存器 r0
0005 02 78 07 mov a, num ;将标号 num 指定的存储单元内容复制到累加器 a 中
0006 04 10 add a, r0 ;将累加器 a 与寄存器 r0 相加,结果写回 a 中
0007
0008 Endless_Loop:
0009 05 AC 05 jmp Endless_Loop ;死循环
0010
0011 .data
0012
0013 07 FF num: -1
添加文件
@echo off
microasm.exe rom.masm -o rom.rxm -l rom.lst -g rom.dbg
pause
\ No newline at end of file
添加文件
0001
0002
0003 ; 所有指令的第一条微指令地址必须是8的倍数
0004 ; 取指微指令,所有指令的第一步均为取指操作,都要执行该条微指令
0005 00 EF 3F F9 FF path [pc], ir
0006
0007 ; 填充空白指令 01-1f
0008 04 FF FF FF FF dup 31, null
0009
0010 ; add a, rx
0011 80 EF FF FA 7F path rx, w ;将寄存器 R 的内容传送到工作寄存器 W 中,R 的内容不变
0012 84 EF FF E4 99 path alu_add, a ;累加器 A 与工作寄存器 W 进行无进位加运算,结果写回 A 中,即A=A+W
0013 88 FF FF FF FF inc pc ;PC 加1,指向下一个字节单元
0014 8C CF FF FF FF reset upc ;uPC 寄存器复位为0,指向第一条微指令,该微指令完成取指令功能
0015
0016 90 FF FF FF FF dup 4, null
0017
0018 ; add a, [rx]
0019 A0 EF F7 FA FF path rx, mar ;将寄存器 R 的内容传送到地址寄存器 MAR,R 的内容不变
0020 A4 EF FB F9 7F path [mar], w ;读出地址寄存器 MAR 指定存储单元的内容并写入工作寄存器 W 中
0021 A8 EF FF E4 99 path alu_add, a
0022 AC FF FF FF FF inc pc
0023 B0 CF FF FF FF reset upc
0024
0025 B4 FF FF FF FF dup 3, null
0026
0027 ; add a, symbol
0028 C0 FF FF FF FF inc pc
0029 C4 EF 77 F9 FF path [pc], mar ;读出 PC 指定存储单元的内容并写入地址寄存器 MAR
0030 C8 EF FB F9 7F path [mar], w
0031 CC EF FF E4 99 path alu_add, a
0032 D0 FF FF FF FF inc pc
0033 D4 CF FF FF FF reset upc
0034
0035 D8 FF FF FF FF dup 2, null
0036
0037 ; add a, immediate
0038 E0 FF FF FF FF inc pc
0039 E4 EF 7F F9 7F path [pc], w ;读出 PC 指定存储单元的内容并写入工作寄存器 W
0040 E8 EF FF E4 99 path alu_add, a
0041 EC FF FF FF FF inc pc
0042 F0 CF FF FF FF reset upc
0043
0044 F4 FF FF FF FF dup 3, null
0045
0046 ; adc a, rx
0047 100 EF FF FA 7F path rx, w
0048 104 EF FF E4 89 path alu_adc, a ;累加器 A 与工作寄存器 W 进行带进位的加法运算,结果写回 A 中,即A=A+W+1
0049 108 FF FF FF FF inc pc
0050 10C CF FF FF FF reset upc
0051
0052 110 FF FF FF FF dup 4, null
0053
0054 ; adc a, [rx]
0055 120 EF F7 FA FF path rx, mar
0056 124 EF FB F9 7F path [mar], w
0057 128 EF FF E4 89 path alu_adc, a
0058 12C FF FF FF FF inc pc
0059 130 CF FF FF FF reset upc
0060
0061 134 FF FF FF FF dup 3, null
0062
0063 ; adc a, symbol
0064 140 FF FF FF FF inc pc
0065 144 EF 77 F9 FF path [pc], mar
0066 148 EF FB F9 7F path [mar], w
0067 14C EF FF E4 89 path alu_adc, a
0068 150 FF FF FF FF inc pc
0069 154 CF FF FF FF reset upc
0070
0071 158 FF FF FF FF dup 2, null
0072
0073 ; adc a, immediate
0074 160 FF FF FF FF inc pc
0075 164 EF 7F F9 7F path [pc], w
0076 168 EF FF E4 89 path alu_adc, a
0077 16C FF FF FF FF inc pc
0078 170 CF FF FF FF reset upc
0079
0080 174 FF FF FF FF dup 3, null
0081
0082 ; sub a, rx
0083 180 EF FF FA 7F path rx, w
0084 184 EF FF E4 86 path alu_sub, a ;累加器 A 减 W 进行减法运算,结果写回 A 中,即A=A-W
0085 188 FF FF FF FF inc pc
0086 18C CF FF FF FF reset upc
0087
0088 190 FF FF FF FF dup 4, null
0089
0090 ; sub a, [rx]
0091 1A0 EF F7 FA FF path rx, mar
0092 1A4 EF FB F9 7F path [mar], w
0093 1A8 EF FF E4 86 path alu_sub, a
0094 1AC FF FF FF FF inc pc
0095 1B0 CF FF FF FF reset upc
0096
0097 1B4 FF FF FF FF dup 3, null
0098
0099 ; sub a, symbol
0100 1C0 FF FF FF FF inc pc
0101 1C4 EF 77 F9 FF path [pc], mar
0102 1C8 EF FB F9 7F path [mar], w
0103 1CC EF FF E4 86 path alu_sub, a
0104 1D0 FF FF FF FF inc pc
0105 1D4 CF FF FF FF reset upc
0106
0107 1D8 FF FF FF FF dup 2, null
0108
0109 ; sub a, immediate
0110 1E0 FF FF FF FF inc pc
0111 1E4 EF 7F F9 7F path [pc], w
0112 1E8 EF FF E4 86 path alu_sub, a
0113 1EC FF FF FF FF inc pc
0114 1F0 CF FF FF FF reset upc
0115
0116 1F4 FF FF FF FF dup 3, null
0117
0118 ; sbb a, rx
0119 200 EF FF FA 7F path rx, w
0120 204 EF FF E4 96 path alu_sbb, a ;累加器 A 与工作寄存器 W 进行带进位的减法运算,结果写回 A 中,即A=A-W-1
0121 208 FF FF FF FF inc pc
0122 20C CF FF FF FF reset upc
0123
0124 210 FF FF FF FF dup 4, null
0125
0126 ; sbb a, [rx]
0127 220 EF F7 FA FF path rx, mar
0128 224 EF FB F9 7F path [mar], w
0129 228 EF FF E4 96 path alu_sbb, a
0130 22C FF FF FF FF inc pc
0131 230 CF FF FF FF reset upc
0132
0133 234 FF FF FF FF dup 3, null
0134
0135 ; sbb a, symbol
0136 240 FF FF FF FF inc pc
0137 244 EF 77 F9 FF path [pc], mar
0138 248 EF FB F9 7F path [mar], w
0139 24C EF FF E4 96 path alu_sbb, a
0140 250 FF FF FF FF inc pc
0141 254 CF FF FF FF reset upc
0142
0143 258 FF FF FF FF dup 2, null
0144
0145 ; sbb a, immediate
0146 260 FF FF FF FF inc pc
0147 264 EF 7F F9 7F path [pc], w
0148 268 EF FF E4 96 path alu_sbb, a
0149 26C FF FF FF FF inc pc
0150 270 CF FF FF FF reset upc
0151
0152 274 FF FF FF FF dup 3, null
0153
0154 ; and a, rx
0155 280 EF FF FA 7F path rx, w
0156 284 EF FF E4 BB path alu_and a ;A = A & W,A与W进行按位与运算
0157 288 FF FF FF FF inc pc
0158 28C CF FF FF FF reset upc
0159
0160 290 FF FF FF FF dup 4, null
0161
0162 ; and a, [rx]
0163 2A0 EF F7 FA FF path rx, mar
0164 2A4 EF FB F9 7F path [mar], w
0165 2A8 EF FF E4 BB path alu_and, a
0166 2AC FF FF FF FF inc pc
0167 2B0 CF FF FF FF reset upc
0168
0169 2B4 FF FF FF FF dup 3, null
0170
0171 ; and a, symbol
0172 2C0 FF FF FF FF inc pc
0173 2C4 EF 77 F9 FF path [pc], mar
0174 2C8 EF FB F9 7F path [mar], w
0175 2CC EF FF E4 BB path alu_and, a
0176 2D0 FF FF FF FF inc pc
0177 2D4 CF FF FF FF reset upc
0178
0179 2D8 FF FF FF FF dup 2, null
0180
0181 ; and a, immediate
0182 2E0 FF FF FF FF inc pc
0183 2E4 EF 7F F9 7F path [pc], w
0184 2E8 EF FF E4 BB path alu_and, a
0185 2EC FF FF FF FF inc pc
0186 2F0 CF FF FF FF reset upc
0187
0188 2F4 FF FF FF FF dup 3, null
0189
0190 ; or a, rx
0191 300 EF FF FA 7F path rx, w
0192 304 EF FF E4 BE path alu_or a ;A = A | W,A与W进行按位或运算
0193 308 FF FF FF FF inc pc
0194 30C CF FF FF FF reset upc
0195
0196 310 FF FF FF FF dup 4, null
0197
0198 ; or a, [rx]
0199 320 EF F7 FA FF path rx, mar
0200 324 EF FB F9 7F path [mar], w
0201 328 EF FF E4 BE path alu_or, a
0202 32C FF FF FF FF inc pc
0203 330 CF FF FF FF reset upc
0204
0205 334 FF FF FF FF dup 3, null
0206
0207 ; or a, symbol
0208 340 FF FF FF FF inc pc
0209 344 EF 77 F9 FF path [pc], mar
0210 348 EF FB F9 7F path [mar], w
0211 34C EF FF E4 BE path alu_or, a
0212 350 FF FF FF FF inc pc
0213 354 CF FF FF FF reset upc
0214
0215 358 FF FF FF FF dup 2, null
0216
0217 ; or a, immediate
0218 360 FF FF FF FF inc pc
0219 364 EF 7F F9 7F path [pc], w
0220 368 EF FF E4 BE path alu_or, a
0221 36C FF FF FF FF inc pc
0222 370 CF FF FF FF reset upc
0223
0224 374 FF FF FF FF dup 3, null
0225
0226 ; mov a, rx
0227 380 EF FF FA BF path rx, a ;将寄存器 R 的内容传送到累加器 A 中
0228 384 FF FF FF FF inc pc
0229 388 CF FF FF FF reset upc
0230
0231 38C FF FF FF FF dup 5, null
0232
0233 ; mov a, [rx]
0234 3A0 EF F7 FA FF path rx, mar ;将寄存器 R 的内容传送到地址寄存器 MAR 中
0235 3A4 EF FB F9 BF path [mar], a ;将地址寄存器MAR指定存储单元的内容传送到累加器 A 中
0236 3A8 FF FF FF FF inc pc
0237 3AC CF FF FF FF reset upc
0238
0239 3B0 FF FF FF FF dup 4, null
0240
0241 ; mov a, symbol
0242 3C0 FF FF FF FF inc pc
0243 3C4 EF 77 F9 FF path [pc], mar ;将程序计数器 PC 指定存储单元的内容传送到 MAR 中
0244 3C8 EF FB F9 BF path [mar], a
0245 3CC FF FF FF FF inc pc
0246 3D0 CF FF FF FF reset upc
0247
0248 3D4 FF FF FF FF dup 3, null
0249
0250 ; mov a, immediate
0251 3E0 FF FF FF FF inc pc
0252 3E4 EF 7F F9 BF path [pc], a ;将程序计数器 PC 指定存储单元的内容传送到 A 中
0253 3E8 FF FF FF FF inc pc
0254 3EC CF FF FF FF reset upc
0255
0256 3F0 FF FF FF FF dup 4, null
0257
0258 ; mov rx, a
0259 400 EF FF B4 D0 path a, rx ;将累加器 A 的内容传送到寄存器 R 中
0260 404 FF FF FF FF inc pc
0261 408 CF FF FF FF reset upc
0262
0263 40C FF FF FF FF dup 5, null
0264
0265 ; mov [rx], a
0266 420 EF F7 FA FF path rx, mar ;将寄存器 R 的内容传送到地址寄存器 MAR 中
0267 424 ED FB F4 D0 path a, [mar] ;将累加器 A 的内容写入地址寄存器 MAR 指定存储单元中
0268 428 FF FF FF FF inc pc
0269 42C CF FF FF FF reset upc
0270
0271 430 FF FF FF FF dup 4, null
0272
0273 ; mov symbol, a
0274 440 FF FF FF FF inc pc
0275 444 EF 77 F9 FF path [pc], mar ;将 PC 指定存储单元的内容传送到地址寄存器 MAR 中
0276 448 ED FB F4 D0 path a, [mar]
0277 44C FF FF FF FF inc pc
0278 450 CF FF FF FF reset upc
0279
0280 454 FF FF FF FF dup 3, null
0281
0282 ; mov rx, immediate
0283 460 FF FF FF FF inc pc
0284 464 EF 7F B9 FF path [pc], rx ;将 PC 指定存储单元的内容传送到寄存器 R 中
0285 468 FF FF FF FF inc pc
0286 46C CF FF FF FF reset upc
0287
0288 470 FF FF FF FF dup 4, null
0289
0290 ; 填充空白指令
0291 480 FF FF FF FF dup 8, null
0292
0293 ; 填充空白指令
0294 4A0 FF FF FF FF dup 8, null
0295
0296 ; lea a, symbol
0297 4C0 FF FF FF FF inc pc
0298 4C4 EF 7F F9 BF path [pc], a
0299 4C8 FF FF FF FF inc pc
0300 4CC CF FF FF FF reset upc
0301
0302 4D0 FF FF FF FF dup 4, null
0303
0304 ;mov sp, immediate
0305 4E0 FF FF FF FF inc pc
0306 4E4 EF 7E F9 FF path [pc], sp ;将 PC 指定存储单元的内容传送到栈指针寄存器 SP 中
0307 4E8 FF FF FF FF inc pc
0308 4EC CF FF FF FF reset upc
0309
0310 4F0 FF FF FF FF dup 4, null
0311
0312 ; jc symbol
0313 500 FF FF FF FF inc pc
0314 504 FF 6F F9 FF path [pc], pc ;将 PC 指定存储单元的内容作为指令地址加载到 PC 中,实现程序跳转
0315 508 CF FF FF FF reset upc
0316
0317 50C FF FF FF FF dup 5, null
0318
0319 ; jz symbol
0320 520 FF FF FF FF inc pc
0321 524 FF 6F F9 FF path [pc], pc
0322 528 CF FF FF FF reset upc
0323
0324 52C FF FF FF FF dup 5, null
0325
0326 ; 填充空白指令
0327 540 FF FF FF FF dup 8, null
0328
0329 ; jmp symbol
0330 560 FF FF FF FF inc pc
0331 564 FF 6F F9 FF path [pc], pc
0332 568 CF FF FF FF reset upc
0333
0334 56C FF FF FF FF dup 5, null
0335
0336 ; in
0337 580 EF FF F0 BF path rin, a ;将输入寄存器 RIN 的内容传送到累加器 A 中
0338 584 FF FF FF FF inc pc
0339 588 CF FF FF FF reset upc
0340
0341 58C FF FF FF FF dup 5, null
0342
0343 ; out
0344 5A0 EE FF F4 D0 path a, rout ;将累加器 A 中的内容传送到输出寄存器 ROUT 中
0345 5A4 FF FF FF FF inc pc
0346 5A8 CF FF FF FF reset upc
0347
0348 5AC FF FF FF FF dup 5, null
0349
0350 ;=======================================================================
0351 ;软中断,通过执行软中断指令,调用指定的中断服务程序
0352 ;软中断指令是双字节指令,第二个字节是立即数操作数,指调用中断的标号
0353 ; int immediate
0354 5C0 FF FF FF FF inc pc ;PC+1,指向指令中的立即数操作数,即中断号,准备读出
0355 5C4 EB 7F F9 FF path [pc], ia ;将读出的中断号写入寄存器 IA 中,将来自于立即数的低3位中断号与IA寄存器的高5位中断向量起始地址组合,得到调用中断的中断向量
0356 5C8 EF FF 72 FF path sp, csp ;栈指针寄存器的值传送到计数器CSP中
0357 5CC EF FF FF FF path sp_dec, csp ;CSP计数器减1
0358 5D0 EF FE F8 FF path csp, sp ;将CSP减1后的结果写入SP中,完成SP-1,入栈,更新栈顶
0359 5D4 EF F7 F2 FF path sp, mar ;将SP指针暂存到MAR
0360 5D8 FF FF FF FF inc pc ;PC+1,中断返回地址,指向下一条指令
0361 5DC ED FB F3 FF path pc, [mar] ;将PC值写入MAR指定存储单元,在这里实现的功能是将中断返回地址(PC)写入栈指针(SP)指定的存储单元中
0362 5E0 EF F7 F1 FF path ia, mar ;将寄存器IA 的内容作为地址写入 MAR,在这里实现的功能是将调用中断的中断向量写入地址寄存器MAR中,准备读出中断向量指定单元的中断服务程序入口地址
0363 5E4 EF EB F9 FF path [mar], pc ;将地址寄存器MAR指定单元的内容加载到PC中,在这里实现的功能是将调用中断的服务程序首地址加载到PC,使处理器转去执行中断服务程序
0364 5E8 CF FF FF FF reset upc
0365 5EC FF FF FF FF dup 5, null
0366
0367 ;=======================================================================
0368 ;
0369 600 FF FF FF FF dup 16, null
0370
0371 ;=======================================================================
0372 ;子程序调用返回指令
0373 ; ret
0374
0375 ; 返回地址出栈
0376 640 EF F7 F2 FF path sp, mar ;将栈指针(栈顶地址)传送到 MAR
0377 644 EF EB F9 FF path [mar], pc ;将返回地址加载到PC
0378
0379 ; 出栈时,栈顶向高地址方向生长,sp+1指向新的栈顶
0380 648 EF FF 72 FF path sp, csp
0381 64C E7 FF FF FF path sp_inc, csp
0382 650 EF FE F8 FF path csp, sp ;SP = SP + 1,出栈,更新栈顶
0383 654 CF FF FF FF reset upc
0384
0385 658 FF FF FF FF dup 2, null
0386
0387 ;=======================================================================
0388
0389 ; 填充空白指令
0390 660 FF FF FF FF dup 8, null
0391
0392 ; shr a
0393 680 EF FF D5 90 path alu_shr, a ;累加器A 进行逻辑右移,结果写回A中
0394 684 FF FF FF FF inc pc
0395 688 CF FF FF FF reset upc
0396
0397 68C FF FF FF FF dup 5, null
0398
0399 ; shl a
0400 6A0 EF FF D6 90 path alu_shl, a ;累加器A 进行逻辑左移,结果写回A中
0401 6A4 FF FF FF FF inc pc
0402 6A8 CF FF FF FF reset upc
0403
0404 6AC FF FF FF FF dup 5, null
0405
0406 ; rcr a
0407 6C0 EF FF E5 90 path alu_rcr, a ;累加器A 进行循环右移,结果写回A中
0408 6C4 FF FF FF FF inc pc
0409 6C8 CF FF FF FF reset upc
0410
0411 6CC FF FF FF FF dup 5, null
0412
0413 ; rcl a
0414 6E0 EF FF E6 90 path alu_rcl, a ;累加器A 进行循环左移,结果写回A中
0415 6E4 FF FF FF FF inc pc
0416 6E8 CF FF FF FF reset upc
0417 6EC FF FF FF FF dup 5, null
0418
0419 ; nop
0420 700 FF FF FF FF inc pc
0421 704 CF FF FF FF reset upc
0422
0423 708 FF FF FF FF dup 6, null
0424
0425 ; not a
0426 720 EF FF F4 B0 path alu_not, a ;累加器A 取反运算,结果写回A中
0427 724 FF FF FF FF inc pc
0428 728 CF FF FF FF reset upc
0429
0430 72C FF FF FF FF dup 5, null
0431
0432 ;=============================================================
0433 ;子程序调用指令,双字节指令,第二个字节是调用子程序标号,该标号实质为一个地址,所指存储单元中就是被调用子程序的入口地址(起始地址)
0434 ; call symbol
0435
0436 ; 将子程序入口地址保存到辅助寄存器asr中
0437 740 FF FF FF FF inc pc ;PC+1
0438 744 EF 7D F9 FF path [pc], asr ;将PC指向存储单元内容写入辅助寄存器ASR中,也就是将被调用子程序的入口地址暂存到ASR中
0439
0440 ; pc+1,得到返回地址
0441 748 FF FF FF FF inc pc ;PC+1,指向下一条指令,即返回地址
0442
0443 ; sp-1,为返回地址入栈分配一个新的空间,入栈时,栈顶向低地址方向生长
0444 74C EF FF 72 FF path sp, csp
0445 750 EF FF FF FF path sp_dec, csp
0446 754 EF FE F8 FF path csp, sp ;返回地址入栈前,先将SP-1,指向新的栈顶
0447
0448 ; 返回地址入栈
0449 758 EF F7 F2 FF path sp, mar
0450 75C ED FB F3 FF path pc, [mar] ;将PC(返回地址)入栈
0451
0452 ; 将调用子程序入口地址加载到PC,实现子程序调用
0453 760 EF EF F7 FF path asr, pc ;将ASR寄存器的值加载到PC,也就是将调用子程序的入口地址加载到PC,转移到子程序处执行
0454 764 CF FF FF FF reset upc
0455
0456 768 FF FF FF FF dup 6, null
0457
0458 ; 填充空白指令
0459 780 FF FF FF FF dup 16, null
0460
0461 ;===============================================================
0462 ;中断返回指令,可参照子程序调用返回指令,出栈
0463 ; iret
0464 7C0 EF F7 F2 FF path sp, mar
0465 7C4 EF FF 72 FF path sp, csp
0466 7C8 E7 FF FF FF path sp_inc, csp
0467 7CC EF FE F8 FF path csp, sp
0468 7D0 EF EB F9 FF path [mar], pc
0469 7D4 CF FF FF FF reset upc
0470
0471 7D8 FF FF FF FF dup 2, null
0472
0473
0474
; 所有指令的第一条微指令地址必须是8的倍数
; 取指微指令,所有指令的第一步均为取指操作,都要执行该条微指令
path [pc], ir
; 填充空白指令 01-1f
dup 31, null
; add a, rx
path rx, w ;将寄存器 R 的内容传送到工作寄存器 W 中,R 的内容不变
path alu_add, a ;累加器 A 与工作寄存器 W 进行无进位加运算,结果写回 A 中,即A=A+W
inc pc ;PC 加1,指向下一个字节单元
reset upc ;uPC 寄存器复位为0,指向第一条微指令,该微指令完成取指令功能
dup 4, null
; add a, [rx]
path rx, mar ;将寄存器 R 的内容传送到地址寄存器 MAR,R 的内容不变
path [mar], w ;读出地址寄存器 MAR 指定存储单元的内容并写入工作寄存器 W 中
path alu_add, a
inc pc
reset upc
dup 3, null
; add a, symbol
inc pc
path [pc], mar ;读出 PC 指定存储单元的内容并写入地址寄存器 MAR
path [mar], w
path alu_add, a
inc pc
reset upc
dup 2, null
; add a, immediate
inc pc
path [pc], w ;读出 PC 指定存储单元的内容并写入工作寄存器 W
path alu_add, a
inc pc
reset upc
dup 3, null
; adc a, rx
path rx, w
path alu_adc, a ;累加器 A 与工作寄存器 W 进行带进位的加法运算,结果写回 A 中,即A=A+W+1
inc pc
reset upc
dup 4, null
; adc a, [rx]
path rx, mar
path [mar], w
path alu_adc, a
inc pc
reset upc
dup 3, null
; adc a, symbol
inc pc
path [pc], mar
path [mar], w
path alu_adc, a
inc pc
reset upc
dup 2, null
; adc a, immediate
inc pc
path [pc], w
path alu_adc, a
inc pc
reset upc
dup 3, null
; sub a, rx
path rx, w
path alu_sub, a ;累加器 A 减 W 进行减法运算,结果写回 A 中,即A=A-W
inc pc
reset upc
dup 4, null
; sub a, [rx]
path rx, mar
path [mar], w
path alu_sub, a
inc pc
reset upc
dup 3, null
; sub a, symbol
inc pc
path [pc], mar
path [mar], w
path alu_sub, a
inc pc
reset upc
dup 2, null
; sub a, immediate
inc pc
path [pc], w
path alu_sub, a
inc pc
reset upc
dup 3, null
; sbb a, rx
path rx, w
path alu_sbb, a ;累加器 A 与工作寄存器 W 进行带进位的减法运算,结果写回 A 中,即A=A-W-1
inc pc
reset upc
dup 4, null
; sbb a, [rx]
path rx, mar
path [mar], w
path alu_sbb, a
inc pc
reset upc
dup 3, null
; sbb a, symbol
inc pc
path [pc], mar
path [mar], w
path alu_sbb, a
inc pc
reset upc
dup 2, null
; sbb a, immediate
inc pc
path [pc], w
path alu_sbb, a
inc pc
reset upc
dup 3, null
; and a, rx
path rx, w
path alu_and a ;A = A & W,A与W进行按位与运算
inc pc
reset upc
dup 4, null
; and a, [rx]
path rx, mar
path [mar], w
path alu_and, a
inc pc
reset upc
dup 3, null
; and a, symbol
inc pc
path [pc], mar
path [mar], w
path alu_and, a
inc pc
reset upc
dup 2, null
; and a, immediate
inc pc
path [pc], w
path alu_and, a
inc pc
reset upc
dup 3, null
; or a, rx
path rx, w
path alu_or a ;A = A | W,A与W进行按位或运算
inc pc
reset upc
dup 4, null
; or a, [rx]
path rx, mar
path [mar], w
path alu_or, a
inc pc
reset upc
dup 3, null
; or a, symbol
inc pc
path [pc], mar
path [mar], w
path alu_or, a
inc pc
reset upc
dup 2, null
; or a, immediate
inc pc
path [pc], w
path alu_or, a
inc pc
reset upc
dup 3, null
; mov a, rx
path rx, a ;将寄存器 R 的内容传送到累加器 A 中
inc pc
reset upc
dup 5, null
; mov a, [rx]
path rx, mar ;将寄存器 R 的内容传送到地址寄存器 MAR 中
path [mar], a ;将地址寄存器MAR指定存储单元的内容传送到累加器 A 中
inc pc
reset upc
dup 4, null
; mov a, symbol
inc pc
path [pc], mar ;将程序计数器 PC 指定存储单元的内容传送到 MAR 中
path [mar], a
inc pc
reset upc
dup 3, null
; mov a, immediate
inc pc
path [pc], a ;将程序计数器 PC 指定存储单元的内容传送到 A 中
inc pc
reset upc
dup 4, null
; mov rx, a
path a, rx ;将累加器 A 的内容传送到寄存器 R 中
inc pc
reset upc
dup 5, null
; mov [rx], a
path rx, mar ;将寄存器 R 的内容传送到地址寄存器 MAR 中
path a, [mar] ;将累加器 A 的内容写入地址寄存器 MAR 指定存储单元中
inc pc
reset upc
dup 4, null
; mov symbol, a
inc pc
path [pc], mar ;将 PC 指定存储单元的内容传送到地址寄存器 MAR 中
path a, [mar]
inc pc
reset upc
dup 3, null
; mov rx, immediate
inc pc
path [pc], rx ;将 PC 指定存储单元的内容传送到寄存器 R 中
inc pc
reset upc
dup 4, null
; 填充空白指令
dup 8, null
; 填充空白指令
dup 8, null
; lea a, symbol
inc pc
path [pc], a
inc pc
reset upc
dup 4, null
;mov sp, immediate
inc pc
path [pc], sp ;将 PC 指定存储单元的内容传送到栈指针寄存器 SP 中
inc pc
reset upc
dup 4, null
; jc symbol
inc pc
path [pc], pc ;将 PC 指定存储单元的内容作为指令地址加载到 PC 中,实现程序跳转
reset upc
dup 5, null
; jz symbol
inc pc
path [pc], pc
reset upc
dup 5, null
; 填充空白指令
dup 8, null
; jmp symbol
inc pc
path [pc], pc
reset upc
dup 5, null
; in
path rin, a ;将输入寄存器 RIN 的内容传送到累加器 A 中
inc pc
reset upc
dup 5, null
; out
path a, rout ;将累加器 A 中的内容传送到输出寄存器 ROUT 中
inc pc
reset upc
dup 5, null
;=======================================================================
;软中断,通过执行软中断指令,调用指定的中断服务程序
;软中断指令是双字节指令,第二个字节是立即数操作数,指调用中断的标号
; int immediate
inc pc ;PC+1,指向指令中的立即数操作数,即中断号,准备读出
path [pc], ia ;将读出的中断号写入寄存器 IA 中,将来自于立即数的低3位中断号与IA寄存器的高5位中断向量起始地址组合,得到调用中断的中断向量
path sp, csp ;栈指针寄存器的值传送到计数器CSP中
path sp_dec, csp ;CSP计数器减1
path csp, sp ;将CSP减1后的结果写入SP中,完成SP-1,入栈,更新栈顶
path sp, mar ;将SP指针暂存到MAR
inc pc ;PC+1,中断返回地址,指向下一条指令
path pc, [mar] ;将PC值写入MAR指定存储单元,在这里实现的功能是将中断返回地址(PC)写入栈指针(SP)指定的存储单元中
path ia, mar ;将寄存器IA 的内容作为地址写入 MAR,在这里实现的功能是将调用中断的中断向量写入地址寄存器MAR中,准备读出中断向量指定单元的中断服务程序入口地址
path [mar], pc ;将地址寄存器MAR指定单元的内容加载到PC中,在这里实现的功能是将调用中断的服务程序首地址加载到PC,使处理器转去执行中断服务程序
reset upc
dup 5, null
;=======================================================================
;
dup 16, null
;=======================================================================
;子程序调用返回指令
; ret
; 返回地址出栈
path sp, mar ;将栈指针(栈顶地址)传送到 MAR
path [mar], pc ;将返回地址加载到PC
; 出栈时,栈顶向高地址方向生长,sp+1指向新的栈顶
path sp, csp
path sp_inc, csp
path csp, sp ;SP = SP + 1,出栈,更新栈顶
reset upc
dup 2, null
;=======================================================================
; 填充空白指令
dup 8, null
; shr a
path alu_shr, a ;累加器A 进行逻辑右移,结果写回A中
inc pc
reset upc
dup 5, null
; shl a
path alu_shl, a ;累加器A 进行逻辑左移,结果写回A中
inc pc
reset upc
dup 5, null
; rcr a
path alu_rcr, a ;累加器A 进行循环右移,结果写回A中
inc pc
reset upc
dup 5, null
; rcl a
path alu_rcl, a ;累加器A 进行循环左移,结果写回A中
inc pc
reset upc
dup 5, null
; nop
inc pc
reset upc
dup 6, null
; not a
path alu_not, a ;累加器A 取反运算,结果写回A中
inc pc
reset upc
dup 5, null
;=============================================================
;子程序调用指令,双字节指令,第二个字节是调用子程序标号,该标号实质为一个地址,所指存储单元中就是被调用子程序的入口地址(起始地址)
; call symbol
; 将子程序入口地址保存到辅助寄存器asr中
inc pc ;PC+1
path [pc], asr ;将PC指向存储单元内容写入辅助寄存器ASR中,也就是将被调用子程序的入口地址暂存到ASR中
; pc+1,得到返回地址
inc pc ;PC+1,指向下一条指令,即返回地址
; sp-1,为返回地址入栈分配一个新的空间,入栈时,栈顶向低地址方向生长
path sp, csp
path sp_dec, csp
path csp, sp ;返回地址入栈前,先将SP-1,指向新的栈顶
; 返回地址入栈
path sp, mar
path pc, [mar] ;将PC(返回地址)入栈
; 将调用子程序入口地址加载到PC,实现子程序调用
path asr, pc ;将ASR寄存器的值加载到PC,也就是将调用子程序的入口地址加载到PC,转移到子程序处执行
reset upc
dup 6, null
; 填充空白指令
dup 16, null
;===============================================================
;中断返回指令,可参照子程序调用返回指令,出栈
; iret
path sp, mar
path sp, csp
path sp_inc, csp
path csp, sp
path [mar], pc
reset upc
dup 2, null
添加文件
添加文件
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<svg height="4060" version="1.1" width="3111" xmlns="http://www.w3.org/2000/svg">
<polyline fill="none" points="1487 922, 1387 922, 1387 882, 1387 532, 437 532" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1487 952, 1367 952, 1367 882, 1367 552, 437 552" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1487 982, 1347 982, 1347 882, 1347 572, 437 572" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1487 1012, 1327 1012, 1327 882, 1327 592, 437 592" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1487 1622, 1307 1622, 1307 882, 1307 612, 437 612" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1487 1652, 1287 1652, 1287 882, 1287 632, 437 632" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1487 1682, 1267 1682, 1267 882, 1267 652, 437 652" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1487 1712, 1247 1712, 1247 882, 1247 672, 437 672" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1487 2362, 1227 2362, 1227 882, 1227 692, 437 692" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1487 2392, 1207 2392, 1207 882, 1207 712, 437 712" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1487 2422, 1187 2422, 1187 882, 1187 732, 437 732" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1487 2452, 1167 2452, 1167 882, 1167 752, 437 752" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1487 3152, 1147 3152, 1147 882, 1147 772, 437 772" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1487 3182, 1127 3182, 1127 882, 1127 792, 437 792" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1487 3212, 1107 3212, 1107 882, 1107 812, 437 812" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1487 3242, 1087 3242, 1087 882, 1087 832, 437 832" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1487 3392, 1147 3392, 1147 3732, 1147 4032, 437 4032" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1487 3362, 1127 3362, 1127 3732, 1127 4012, 437 4012" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1487 3332, 1107 3332, 1107 3732, 1107 3992, 437 3992" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1487 3302, 1087 3302, 1087 3732, 1087 3972, 437 3972" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1487 2602, 1067 2602, 1067 3732, 1067 3952, 437 3952" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1487 2572, 1047 2572, 1047 3732, 1047 3932, 437 3932" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1487 2542, 1027 2542, 1027 3732, 1027 3912, 437 3912" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1487 2512, 1007 2512, 1007 3732, 1007 3892, 437 3892" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1487 1862, 987 1862, 987 3732, 987 3872, 437 3872" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1487 1832, 967 1832, 967 3732, 967 3852, 437 3852" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1487 1802, 947 1802, 947 3732, 947 3832, 437 3832" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1487 1772, 927 1772, 927 3732, 927 3812, 437 3812" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1487 1162, 907 1162, 907 3732, 907 3792, 437 3792" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1487 1102, 867 1102, 867 3732, 867 3752, 437 3752" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1487 1072, 847 1072, 847 3732, 437 3732" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="387" x2="437" y1="882" y2="832"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="387" x2="437" y1="862" y2="812"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="387" x2="437" y1="842" y2="792"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="387" x2="437" y1="822" y2="772"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="387" x2="437" y1="802" y2="752"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="387" x2="437" y1="782" y2="732"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="387" x2="437" y1="762" y2="712"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="387" x2="437" y1="742" y2="692"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="387" x2="437" y1="722" y2="672"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="387" x2="437" y1="702" y2="652"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="387" x2="437" y1="682" y2="632"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="387" x2="437" y1="662" y2="612"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="387" x2="437" y1="642" y2="592"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="387" x2="437" y1="622" y2="572"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="387" x2="437" y1="602" y2="552"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="387" x2="437" y1="582" y2="532"/>
<polygon fill="#ffff80" points="37 532, 37 507, 212 507, 237 532, 212 557, 37 557, 37 532" 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="37" y="532">uPC[15..0]</text>
<polyline fill="none" points="1737 1072, 1787 1072, 1787 1522, 1437 1522, 1437 2082, 1487 2082" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1737 1772, 1787 1772, 1787 2252, 1437 2252, 1437 2822, 1487 2822" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1737 2512, 1787 2512, 1787 3002, 1437 3002, 1437 3612, 1487 3612" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="107" x2="107" y1="1172" y2="1222"/>
<polygon fill="#ffffff" fill-opacity="0.5" points="107 1172, 157 1122, 57 1122, 107 1172" stroke="#000000" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="Times New Roman" font-size="30" font-weight="700" text-anchor="start" x="97" y="1162">1</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="97" y="1092">U5</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="17" y="1122">CONSTANT1</text>
<polyline fill="none" points="1487 1232, 1397 1232, 1397 3552, 1487 3552" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1487 3462, 1397 3462" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1487 2762, 1397 2762" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1487 2672, 1397 2672" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1487 2022, 1397 2022" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1487 1932, 1397 1932" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1487 1322, 1397 1322" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1737 1712, 2037 1712, 2037 2132, 2637 2132" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1737 1682, 2057 1682, 2057 2112, 2637 2112" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1737 1652, 2077 1652, 2077 2092, 2637 2092" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1737 1622, 2097 1622, 2097 2072, 2627 2072, 2637 2072" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1737 1012, 2117 1012, 2117 2052, 2637 2052" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1737 982, 2137 982, 2137 2032, 2637 2032" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1737 952, 2157 952, 2157 2012, 2637 2012" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1737 922, 2177 922, 2177 1992, 2637 1992" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1737 2362, 2037 2362, 2037 2152, 2637 2152" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1737 2392, 2057 2392, 2057 2172, 2637 2172" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1737 2422, 2077 2422, 2077 2192, 2637 2192" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1737 2452, 2097 2452, 2097 2212, 2637 2212" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1737 3152, 2117 3152, 2117 2232, 2637 2232" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1737 3182, 2137 3182, 2137 2252, 2637 2252" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1737 3212, 2157 3212, 2157 2272, 2637 2272" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1737 3242, 2177 3242, 2177 2292, 2637 2292" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="2637" x2="2687" y1="1992" y2="1942"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="2637" x2="2687" y1="2012" y2="1962"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="2637" x2="2687" y1="2032" y2="1982"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="2637" x2="2687" y1="2052" y2="2002"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="2637" x2="2687" y1="2072" y2="2022"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="2637" x2="2687" y1="2092" y2="2042"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="2637" x2="2687" y1="2112" y2="2062"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="2637" x2="2687" y1="2132" y2="2082"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="2637" x2="2687" y1="2152" y2="2102"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="2637" x2="2687" y1="2172" y2="2122"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="2637" x2="2687" y1="2192" y2="2142"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="2637" x2="2687" y1="2212" y2="2162"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="2637" x2="2687" y1="2232" y2="2182"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="2637" x2="2687" y1="2252" y2="2202"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="2637" x2="2687" y1="2272" y2="2222"/>
<line stroke="#000080" stroke-linecap="round" stroke-width="5" x1="2637" x2="2687" y1="2292" y2="2242"/>
<polyline fill="none" points="237 532, 387 532, 387 882" stroke="#000080" stroke-linecap="round" stroke-linejoin="round" stroke-width="20"/>
<polyline fill="none" points="2787 1882, 2687 1882, 2687 2242" 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="15" font-weight="400" text-anchor="start" x="707" y="532">uPC0</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="707" y="552">uPC1</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="707" y="572">uPC2</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="707" y="592">uPC3</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="707" y="612">uPC4</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="707" y="632">uPC5</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="707" y="652">uPC6</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="707" y="672">uPC7</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="707" y="692">uPC8</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="707" y="712">uPC9</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="707" y="732">uPC10</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="707" y="752">uPC11</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="707" y="772">uPC12</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="707" y="792">uPC13</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="707" y="812">uPC14</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="707" y="832">uPC15</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="607" y="3732">B0</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="607" y="3752">B1</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="607" y="3772">B2</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="607" y="3792">B3</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="607" y="3812">B4</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="607" y="3832">B5</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="607" y="3852">B6</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="607" y="3872">B7</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="607" y="3892">B8</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="607" y="3912">B9</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="607" y="3932">B10</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="607" y="3952">B11</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="607" y="3972">B12</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="607" y="3992">B13</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="607" y="4012">B14</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="607" y="4032">B15</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="2307" y="1992">uPC_Next0</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="2307" y="2012">uPC_Next1</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="2307" y="2032">uPC_Next2</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="2307" y="2052">uPC_Next3</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="2307" y="2072">uPC_Next4</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="2307" y="2092">uPC_Next5</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="2307" y="2112">uPC_Next6</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="2307" y="2132">uPC_Next7</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="2307" y="2152">uPC_Next8</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="2307" y="2172">uPC_Next9</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="2307" y="2192">uPC_Next10</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="2307" y="2212">uPC_Next11</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="2307" y="2232">uPC_Next12</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="2307" y="2252">uPC_Next13</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="2307" y="2272">uPC_Next14</text>
<text alignment-baseline="after-edge" fill="#800000" font-family="Times New Roman" font-size="15" font-weight="400" text-anchor="start" x="2307" y="2292">uPC_Next15</text>
<polygon fill="#ffff80" points="2787 1882, 2787 1857, 3012 1857, 3037 1882, 3012 1907, 2787 1907, 2787 1882" 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="2787" y="1882">uPC_Next[15..0]</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="宋体" font-size="90" font-weight="400" text-anchor="start" x="67" y="3932">加数4</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="微软雅黑" font-size="250" font-weight="700" text-anchor="start" x="397" y="312">uPC_NEXT模块</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="宋体" font-size="90" font-weight="400" text-anchor="start" x="1767" y="722">uPC+4指向下一条微指令</text>
<polyline fill="none" points="1487 1382, 1397 1382" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1397 1232, 607 1232, 107 1232, 107 1222" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<polyline fill="none" points="1487 1132, 887 1132, 887 3772, 437 3772, 157 3772, 157 3712" stroke="#0000ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"/>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="157" x2="157" y1="3662" y2="3712"/>
<polygon fill="#ffffff" fill-opacity="0.5" points="157 3662, 207 3612, 107 3612, 157 3662" stroke="#000000" stroke-width="5"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="Times New Roman" font-size="30" font-weight="700" text-anchor="start" x="147" y="3652">1</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="147" y="3582">U6</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="67" y="3612">CONSTANT1</text>
<text alignment-baseline="after-edge" fill="#000080" font-family="宋体" font-size="35" font-weight="400" text-anchor="start" x="147" y="1202">运算方式控制信号:无进位加法</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1527" x2="1487" y1="922" y2="922"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1590" y="922">^A0</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1506" y="922">2</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1527" x2="1487" y1="952" y2="952"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1590" y="952">^A1</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1519" y="952">23</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1527" x2="1487" y1="982" y2="982"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1590" y="982">^A2</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1519" y="982">21</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1527" x2="1487" y1="1012" y2="1012"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1590" y="1012">^A3</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1519" y="1012">19</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1527" x2="1487" y1="1072" y2="1072"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1590" y="1072">^B0</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1506" y="1070">1</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1527" x2="1487" y1="1102" y2="1102"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1590" y="1102">^B1</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1520" y="1101">22</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1527" x2="1487" y1="1132" y2="1132"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1590" y="1132">^B2</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1520" y="1131">20</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1527" x2="1487" y1="1162" y2="1162"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1590" y="1162">^B3</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1520" y="1161">18</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1537" x2="1487" y1="1232" y2="1232"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1580" y="1232">S0</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1507" y="1230">6</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1537" x2="1487" y1="1262" y2="1262"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1580" y="1262">S1</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1507" y="1261">5</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1537" x2="1487" y1="1292" y2="1292"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1580" y="1292">S2</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1507" y="1291">4</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1537" x2="1487" y1="1322" y2="1322"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1580" y="1322">S3</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1507" y="1321">3</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1537" x2="1487" y1="1382" y2="1382"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1580" y="1382">CN</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1507" y="1383">7</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1537" x2="1487" y1="1412" y2="1412"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1570" y="1412">M</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1507" y="1413">8</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1697" x2="1737" y1="1192" y2="1192"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="1654" y="1192">^G</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1702" y="1192">17</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1697" x2="1737" y1="1162" y2="1162"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="1654" y="1162">^P</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1702" y="1162">15</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1687" x2="1737" y1="1102" y2="1102"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="1654" y="1102">AEQB</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1702" y="1102">14</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1687" x2="1737" y1="1072" y2="1072"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="1654" y="1072">CN4</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1702" y="1072">16</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1697" x2="1737" y1="1012" y2="1012"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="1654" y="1012">^F3</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1702" y="1012">13</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1697" x2="1737" y1="982" y2="982"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="1654" y="982">^F2</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1702" y="982">11</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1697" x2="1737" y1="952" y2="952"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="1654" y="952">^F1</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1702" y="952">10</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1697" x2="1737" y1="922" y2="922"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="1654" y="922">^F0</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1715" y="921">9</text>
<circle cx="1532" cy="1162" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="1531" cy="982" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="1531" cy="1072" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="1531" cy="1012" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="1531" cy="951" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="1532" cy="1132" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="1532" cy="922" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="1531" cy="1102" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="1691" cy="923" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="1692" cy="953" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="1692" cy="982" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="1691" cy="1012" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="1691" cy="1162" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="1691" cy="1193" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<rect fill="#ffffff" fill-opacity="0.5" height="550" stroke="#000000" stroke-width="5" width="150" x="1537" y="882"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="1604" y="862">U1</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="1547" y="1478">74LS181</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1527" x2="1487" y1="1622" y2="1622"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1590" y="1622">^A0</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1506" y="1622">2</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1527" x2="1487" y1="1652" y2="1652"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1590" y="1652">^A1</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1519" y="1652">23</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1527" x2="1487" y1="1682" y2="1682"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1590" y="1682">^A2</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1519" y="1682">21</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1527" x2="1487" y1="1712" y2="1712"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1590" y="1712">^A3</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1519" y="1712">19</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1527" x2="1487" y1="1772" y2="1772"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1590" y="1772">^B0</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1506" y="1770">1</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1527" x2="1487" y1="1802" y2="1802"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1590" y="1802">^B1</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1520" y="1801">22</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1527" x2="1487" y1="1832" y2="1832"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1590" y="1832">^B2</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1520" y="1831">20</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1527" x2="1487" y1="1862" y2="1862"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1590" y="1862">^B3</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1520" y="1861">18</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1537" x2="1487" y1="1932" y2="1932"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1580" y="1932">S0</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1507" y="1930">6</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1537" x2="1487" y1="1962" y2="1962"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1580" y="1962">S1</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1507" y="1961">5</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1537" x2="1487" y1="1992" y2="1992"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1580" y="1992">S2</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1507" y="1991">4</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1537" x2="1487" y1="2022" y2="2022"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1580" y="2022">S3</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1507" y="2021">3</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1537" x2="1487" y1="2082" y2="2082"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1580" y="2082">CN</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1507" y="2083">7</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1537" x2="1487" y1="2112" y2="2112"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1570" y="2112">M</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1507" y="2113">8</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1697" x2="1737" y1="1892" y2="1892"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="1654" y="1892">^G</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1702" y="1892">17</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1697" x2="1737" y1="1862" y2="1862"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="1654" y="1862">^P</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1702" y="1862">15</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1687" x2="1737" y1="1802" y2="1802"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="1654" y="1802">AEQB</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1702" y="1802">14</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1687" x2="1737" y1="1772" y2="1772"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="1654" y="1772">CN4</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1702" y="1772">16</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1697" x2="1737" y1="1712" y2="1712"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="1654" y="1712">^F3</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1702" y="1712">13</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1697" x2="1737" y1="1682" y2="1682"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="1654" y="1682">^F2</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1702" y="1682">11</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1697" x2="1737" y1="1652" y2="1652"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="1654" y="1652">^F1</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1702" y="1652">10</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1697" x2="1737" y1="1622" y2="1622"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="1654" y="1622">^F0</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1715" y="1621">9</text>
<circle cx="1532" cy="1862" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="1531" cy="1682" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="1531" cy="1772" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="1531" cy="1712" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="1531" cy="1651" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="1532" cy="1832" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="1532" cy="1622" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="1531" cy="1802" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="1691" cy="1623" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="1692" cy="1653" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="1692" cy="1682" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="1691" cy="1712" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="1691" cy="1862" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="1691" cy="1893" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<rect fill="#ffffff" fill-opacity="0.5" height="550" stroke="#000000" stroke-width="5" width="150" x="1537" y="1582"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="1604" y="1562">U2</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="1547" y="2178">74LS181</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1527" x2="1487" y1="2362" y2="2362"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1590" y="2362">^A0</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1506" y="2362">2</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1527" x2="1487" y1="2392" y2="2392"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1590" y="2392">^A1</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1519" y="2392">23</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1527" x2="1487" y1="2422" y2="2422"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1590" y="2422">^A2</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1519" y="2422">21</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1527" x2="1487" y1="2452" y2="2452"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1590" y="2452">^A3</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1519" y="2452">19</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1527" x2="1487" y1="2512" y2="2512"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1590" y="2512">^B0</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1506" y="2510">1</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1527" x2="1487" y1="2542" y2="2542"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1590" y="2542">^B1</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1520" y="2541">22</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1527" x2="1487" y1="2572" y2="2572"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1590" y="2572">^B2</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1520" y="2571">20</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1527" x2="1487" y1="2602" y2="2602"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1590" y="2602">^B3</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1520" y="2601">18</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1537" x2="1487" y1="2672" y2="2672"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1580" y="2672">S0</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1507" y="2670">6</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1537" x2="1487" y1="2702" y2="2702"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1580" y="2702">S1</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1507" y="2701">5</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1537" x2="1487" y1="2732" y2="2732"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1580" y="2732">S2</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1507" y="2731">4</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1537" x2="1487" y1="2762" y2="2762"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1580" y="2762">S3</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1507" y="2761">3</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1537" x2="1487" y1="2822" y2="2822"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1580" y="2822">CN</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1507" y="2823">7</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1537" x2="1487" y1="2852" y2="2852"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1570" y="2852">M</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1507" y="2853">8</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1697" x2="1737" y1="2632" y2="2632"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="1654" y="2632">^G</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1702" y="2632">17</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1697" x2="1737" y1="2602" y2="2602"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="1654" y="2602">^P</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1702" y="2602">15</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1687" x2="1737" y1="2542" y2="2542"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="1654" y="2542">AEQB</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1702" y="2542">14</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1687" x2="1737" y1="2512" y2="2512"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="1654" y="2512">CN4</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1702" y="2512">16</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1697" x2="1737" y1="2452" y2="2452"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="1654" y="2452">^F3</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1702" y="2452">13</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1697" x2="1737" y1="2422" y2="2422"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="1654" y="2422">^F2</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1702" y="2422">11</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1697" x2="1737" y1="2392" y2="2392"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="1654" y="2392">^F1</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1702" y="2392">10</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1697" x2="1737" y1="2362" y2="2362"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="1654" y="2362">^F0</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1715" y="2361">9</text>
<circle cx="1532" cy="2602" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="1531" cy="2422" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="1531" cy="2512" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="1531" cy="2452" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="1531" cy="2391" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="1532" cy="2572" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="1532" cy="2362" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="1531" cy="2542" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="1691" cy="2363" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="1692" cy="2393" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="1692" cy="2422" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="1691" cy="2452" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="1691" cy="2602" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="1691" cy="2633" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<rect fill="#ffffff" fill-opacity="0.5" height="550" stroke="#000000" stroke-width="5" width="150" x="1537" y="2322"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="1604" y="2302">U3</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="1547" y="2918">74LS181</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1527" x2="1487" y1="3152" y2="3152"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1590" y="3152">^A0</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1506" y="3152">2</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1527" x2="1487" y1="3182" y2="3182"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1590" y="3182">^A1</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1519" y="3182">23</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1527" x2="1487" y1="3212" y2="3212"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1590" y="3212">^A2</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1519" y="3212">21</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1527" x2="1487" y1="3242" y2="3242"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1590" y="3242">^A3</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1519" y="3242">19</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1527" x2="1487" y1="3302" y2="3302"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1590" y="3302">^B0</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1506" y="3300">1</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1527" x2="1487" y1="3332" y2="3332"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1590" y="3332">^B1</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1520" y="3331">22</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1527" x2="1487" y1="3362" y2="3362"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1590" y="3362">^B2</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1520" y="3361">20</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1527" x2="1487" y1="3392" y2="3392"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1590" y="3392">^B3</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1520" y="3391">18</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1537" x2="1487" y1="3462" y2="3462"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1580" y="3462">S0</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1507" y="3460">6</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1537" x2="1487" y1="3492" y2="3492"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1580" y="3492">S1</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1507" y="3491">5</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1537" x2="1487" y1="3522" y2="3522"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1580" y="3522">S2</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1507" y="3521">4</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1537" x2="1487" y1="3552" y2="3552"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1580" y="3552">S3</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1507" y="3551">3</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1537" x2="1487" y1="3612" y2="3612"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1580" y="3612">CN</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1507" y="3613">7</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1537" x2="1487" y1="3642" y2="3642"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1570" y="3642">M</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="end" x="1507" y="3643">8</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1697" x2="1737" y1="3422" y2="3422"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="1654" y="3422">^G</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1702" y="3422">17</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1697" x2="1737" y1="3392" y2="3392"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="1654" y="3392">^P</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1702" y="3392">15</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1687" x2="1737" y1="3332" y2="3332"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="1654" y="3332">AEQB</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1702" y="3332">14</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1687" x2="1737" y1="3302" y2="3302"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="1654" y="3302">CN4</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1702" y="3302">16</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1697" x2="1737" y1="3242" y2="3242"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="1654" y="3242">^F3</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1702" y="3242">13</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1697" x2="1737" y1="3212" y2="3212"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="1654" y="3212">^F2</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1702" y="3212">11</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1697" x2="1737" y1="3182" y2="3182"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="1654" y="3182">^F1</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1702" y="3182">10</text>
<line stroke="#000000" stroke-linecap="round" stroke-width="5" x1="1697" x2="1737" y1="3152" y2="3152"/>
<text alignment-baseline="central" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="middle" x="1654" y="3152">^F0</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Courier New" font-size="17" font-weight="400" text-anchor="start" x="1715" y="3151">9</text>
<circle cx="1532" cy="3392" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="1531" cy="3212" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="1531" cy="3302" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="1531" cy="3242" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="1531" cy="3181" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="1532" cy="3362" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="1532" cy="3152" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="1531" cy="3332" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="1691" cy="3153" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="1692" cy="3183" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="1692" cy="3212" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="1691" cy="3242" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="1691" cy="3392" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<circle cx="1691" cy="3423" fill="#ffffff" fill-opacity="0.5" r="4" stroke="#000000" stroke-width="5"/>
<rect fill="#ffffff" fill-opacity="0.5" height="550" stroke="#000000" stroke-width="5" width="150" x="1537" y="3112"/>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="1604" y="3092">U4</text>
<text alignment-baseline="after-edge" fill="#000000" font-family="Arial" font-size="25" font-weight="700" text-anchor="start" x="1547" y="3708">74LS181</text>
<circle cx="1397" cy="1232" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1397" cy="1382" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1397" cy="1322" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1397" cy="1932" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1397" cy="2022" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1397" cy="2672" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1397" cy="2762" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
<circle cx="1397" cy="3462" fill="#0000ff" r="8" stroke="#0000ff" stroke-width="5"/>
</svg>
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论