Для истории:
core16.v
Код:
`timescale 1 ns / 1 ps
`define PUSH 4
`define JZ 5
`define CALL 6
`define RET 7
`define LOAD 8
`define STORE 9
`define SWAP 10
`define PICK 11
`define NAND 12
`define XOR 13
`define MLA 14
`define SHIFT 15
module core16 (
input wire r,
input wire c,
output wire [15:0] a,
input wire [15:0] i,
output wire [15:0] o,
output wire w
);
reg [15:0] data [0:1023];
reg [3:0] code [0:4095];
reg [63:0] stack = 0;
reg [63:0] rstack = 0;
reg [15:0] pc = 0;
reg [63:0] xstack;
reg [63:0] xrstack;
reg [15:0] xpc;
reg [3:0] cmd = 0;
reg [15:0] v;
reg [15:0] m;
wire [15:0] s0 = stack[15:0];
wire [15:0] s1 = stack[31:16];
wire [15:0] s2 = stack[47:32];
wire [15:0] s3 = stack[63:48];
wire mmr = (s0[15:12] != 0);
always @* case (cmd)
`CALL : begin xrstack <= rstack<<16|(pc+1); xpc <= s0; end
`RET : begin xrstack <= rstack>>16; xpc <= rstack[15:0]; end
default : begin xrstack <= rstack; xpc <= (cmd==`JZ)?s1?pc+1:s0:pc+1; end
endcase
always @* case (cmd)
`PUSH : xstack <= stack<<16;
`JZ : xstack <= {s3,s3,s3,s2};
`CALL : xstack <= stack>>16;
`RET : xstack <= stack;
`LOAD : xstack <= {s3,s2,s1,mmr?i:v};
`STORE : xstack <= {s3,s3,s3,s2};
`SWAP : xstack <= {s3,s2,s0,s1};
`PICK : xstack <= {s3,s2,s1,(s0==2)?s3:s0?s2:s1};
`NAND : xstack <= {s3,s3,s2,~(s1&s0)};
`XOR : xstack <= {s3,s3,s2,s1^s0};
`MLA : xstack <= {s3,s3,s3,m+s1};
`SHIFT : xstack <= stack;
default : xstack <= {s3,s2,s1,s0[13:0],cmd[1:0]};
endcase
assign a = s0;
assign o = s1;
assign w = (cmd == `STORE);
always @ (negedge c) begin
{stack,rstack} = {xstack,xrstack};
pc = r?0:xpc;
cmd = code[pc];
end
always @ (posedge c) begin
if (w && !mmr) data [a] <= o;
v <= data [a];
m <= s2*s0;
end
always @ (posedge r) begin `include "xc3test.v16" end
endmodule
uart16.v
Код:
`timescale 1 ns / 1 ps
module uart16 (
input wire r,
input wire c,
output wire tx,
input wire rx,
input wire [15:0] a,
input wire [15:0] i,
output wire [15:0] o,
input wire w,
input wire e
);
reg [15:0] data [0:2];
reg [15:0] tcount;
reg [9:0] tdata;
reg [15:0] rcount;
reg [7:0] rdata;
reg [4:0] rphase;
wire [1:0] addr = a[1:0];
always @ (posedge c) begin
if (w&e) begin
if (addr) data[addr] <= i; else begin tdata <= {i[7:0],2'b01}; data[0] <= 1; end
end else begin
if (!tcount) begin tdata <= {1'b1,tdata[9:1]}; data[0] <= data[0][8:0]<<1; end
if (!rcount) begin
if (rphase == 1) data[1] <= rdata;
if (rphase[4:2] && !rphase[0]) rdata <= (rx<<7) | (rdata>>1);
if (rphase) rphase <= rphase-1; else if (~rx) rphase <= 19;
end
end
rcount <= rcount?rcount-1:(data[2]>>1);
tcount <= tcount?tcount-1:data[2];
end
assign o = e ? data[addr] : i;
assign tx = tdata[0];
endmodule
timer16.v
Код:
`timescale 1 ns / 1 ps
module timer16 (
input wire r,
input wire c,
input wire [15:0] a,
input wire [15:0] i,
output wire [15:0] o,
input wire w,
input wire e
);
reg [15:0] data [0:2];
assign o = e ? data[a[1:0]] : i;
always @ (posedge c) begin
if (w&e) data[a[1:0]] <= i;
data[0] <= data[0]?data[0]-1:data[1];
if (data[2] && !data[0]) data[2] <= data[2]-1;
end
endmodule
gpio16.v
Код:
`timescale 1 ns / 1 ps
module gpio16 (
input wire r,
input wire c,
output wire p0,
output wire p1,
output wire p2,
input wire [15:0] a,
input wire [15:0] i,
output wire [15:0] o,
input wire w,
input wire e
);
reg [2:0] data;
assign o = e ? {13'd0,data[2:0]} : i;
assign p0 = data[0];
assign p1 = data[1];
assign p2 = data[2];
always @ (posedge c) if (w&e) data <= i[2:0];
endmodule
sel.v
Код:
`timescale 1 ns / 1 ps
module sel (
input wire r,
input wire c,
input wire [15:0] a,
output wire e0,
output wire e1,
output wire e2,
output wire e3,
output wire e4,
output wire e5,
output wire e6,
output wire e7,
output wire e8,
output wire e9,
output wire eA,
output wire eB,
output wire eC,
output wire eD,
output wire eE,
output wire eF
);
assign e0 = (a[15:12]==4'h0);
assign e1 = (a[15:12]==4'h1);
assign e2 = (a[15:12]==4'h2);
assign e3 = (a[15:12]==4'h3);
assign e4 = (a[15:12]==4'h4);
assign e5 = (a[15:12]==4'h5);
assign e6 = (a[15:12]==4'h6);
assign e7 = (a[15:12]==4'h7);
assign e8 = (a[15:12]==4'h8);
assign e9 = (a[15:12]==4'h9);
assign eA = (a[15:12]==4'hA);
assign eB = (a[15:12]==4'hB);
assign eC = (a[15:12]==4'hC);
assign eD = (a[15:12]==4'hD);
assign eE = (a[15:12]==4'hE);
assign eF = (a[15:12]==4'hF);
endmodule
mcu16.ucf
Код:
// vq100
NET "clk" LOC = P88;
NET "clk" IOSTANDARD = LVCMOS33;
NET "clk" TNM_NET = "clk";
TIMESPEC TS_clk = PERIOD "clk" 50 ns HIGH 50 %;
NET "led1" LOC = P32;
NET "led1" IOSTANDARD = LVCMOS33;
NET "led2" LOC = P33;
NET "led2" IOSTANDARD = LVCMOS33;
NET "led3" LOC = P34;
NET "led3" IOSTANDARD = LVCMOS33;
NET "tx" LOC = P17;
NET "tx" IOSTANDARD = LVCMOS33;
NET "rx" LOC = P18;
NET "rx" IOSTANDARD = LVCMOS33;
NET "rx" PULLUP;
mcu16.sch
Код:
<?xml version="1.0" encoding="UTF-8"?>
<drawing version="7">
<attr value="spartan3e" name="DeviceFamilyName">
<trait delete="all:0" />
<trait editname="all:0" />
<trait edittrait="all:0" />
</attr>
<attr value="PartialBusOnly|BaseDashIndex" name="RenameBusIO" />
<netlist>
<signal name="clk" />
<signal name="XLXN_3418" />
<signal name="XLXN_3461" />
<signal name="XLXN_3473" />
<signal name="tx" />
<signal name="rx" />
<signal name="XLXN_3481" />
<signal name="XLXN_3488" />
<signal name="led1" />
<signal name="led2" />
<signal name="led3" />
<signal name="XLXN_3497" />
<signal name="XLXN_3499" />
<signal name="XLXN_3500(15:0)" />
<signal name="XLXN_3501(15:0)" />
<signal name="XLXN_3507" />
<signal name="XLXN_3509(15:0)" />
<signal name="XLXN_3510(15:0)" />
<signal name="XLXN_3514(15:0)" />
<signal name="XLXN_3516" />
<signal name="XLXN_3517" />
<signal name="XLXN_3518" />
<port polarity="Input" name="clk" />
<port polarity="Output" name="tx" />
<port polarity="Input" name="rx" />
<port polarity="Output" name="led1" />
<port polarity="Output" name="led2" />
<port polarity="Output" name="led3" />
<blockdef name="res_m">
<timestamp>2016-7-14T5:52:29</timestamp>
<rect width="112" x="208" y="-64" height="64" />
<line x2="384" y1="-32" y2="-32" x1="320" />
<line x2="144" y1="-32" y2="-32" x1="208" />
</blockdef>
<blockdef name="sel">
<timestamp>2022-2-17T7:42:7</timestamp>
<rect width="256" x="64" y="-1024" height="1024" />
<line x2="0" y1="-992" y2="-992" x1="64" />
<line x2="0" y1="-512" y2="-512" x1="64" />
<rect width="64" x="0" y="-44" height="24" />
<line x2="0" y1="-32" y2="-32" x1="64" />
<line x2="384" y1="-992" y2="-992" x1="320" />
<line x2="384" y1="-928" y2="-928" x1="320" />
<line x2="384" y1="-864" y2="-864" x1="320" />
<line x2="384" y1="-800" y2="-800" x1="320" />
<line x2="384" y1="-736" y2="-736" x1="320" />
<line x2="384" y1="-672" y2="-672" x1="320" />
<line x2="384" y1="-608" y2="-608" x1="320" />
<line x2="384" y1="-544" y2="-544" x1="320" />
<line x2="384" y1="-480" y2="-480" x1="320" />
<line x2="384" y1="-416" y2="-416" x1="320" />
<line x2="384" y1="-352" y2="-352" x1="320" />
<line x2="384" y1="-288" y2="-288" x1="320" />
<line x2="384" y1="-224" y2="-224" x1="320" />
<line x2="384" y1="-160" y2="-160" x1="320" />
<line x2="384" y1="-96" y2="-96" x1="320" />
<line x2="384" y1="-32" y2="-32" x1="320" />
</blockdef>
<blockdef name="core16">
<timestamp>2022-3-1T15:21:25</timestamp>
<rect width="256" x="64" y="-192" height="192" />
<line x2="0" y1="-160" y2="-160" x1="64" />
<line x2="0" y1="-96" y2="-96" x1="64" />
<rect width="64" x="0" y="-44" height="24" />
<line x2="0" y1="-32" y2="-32" x1="64" />
<line x2="384" y1="-160" y2="-160" x1="320" />
<rect width="64" x="320" y="-108" height="24" />
<line x2="384" y1="-96" y2="-96" x1="320" />
<rect width="64" x="320" y="-44" height="24" />
<line x2="384" y1="-32" y2="-32" x1="320" />
</blockdef>
<blockdef name="dcm">
<timestamp>2022-2-24T11:40:58</timestamp>
<rect width="336" x="64" y="-128" height="128" />
<line x2="0" y1="-96" y2="-96" x1="64" />
<line x2="464" y1="-96" y2="-96" x1="400" />
<line x2="464" y1="-32" y2="-32" x1="400" />
</blockdef>
<blockdef name="obuf">
<timestamp>2000-1-1T10:10:10</timestamp>
<line x2="64" y1="0" y2="-64" x1="64" />
<line x2="64" y1="-32" y2="0" x1="128" />
<line x2="128" y1="-64" y2="-32" x1="64" />
<line x2="64" y1="-32" y2="-32" x1="0" />
<line x2="128" y1="-32" y2="-32" x1="224" />
</blockdef>
<blockdef name="ibuf">
<timestamp>2000-1-1T10:10:10</timestamp>
<line x2="64" y1="0" y2="-64" x1="64" />
<line x2="64" y1="-32" y2="0" x1="128" />
<line x2="128" y1="-64" y2="-32" x1="64" />
<line x2="128" y1="-32" y2="-32" x1="224" />
<line x2="64" y1="-32" y2="-32" x1="0" />
</blockdef>
<blockdef name="gpio16">
<timestamp>2022-3-3T14:19:45</timestamp>
<rect width="256" x="64" y="-384" height="384" />
<line x2="0" y1="-352" y2="-352" x1="64" />
<line x2="0" y1="-288" y2="-288" x1="64" />
<line x2="0" y1="-224" y2="-224" x1="64" />
<line x2="0" y1="-160" y2="-160" x1="64" />
<rect width="64" x="0" y="-108" height="24" />
<line x2="0" y1="-96" y2="-96" x1="64" />
<rect width="64" x="0" y="-44" height="24" />
<line x2="0" y1="-32" y2="-32" x1="64" />
<line x2="384" y1="-352" y2="-352" x1="320" />
<line x2="384" y1="-256" y2="-256" x1="320" />
<line x2="384" y1="-160" y2="-160" x1="320" />
<rect width="64" x="320" y="-76" height="24" />
<line x2="384" y1="-64" y2="-64" x1="320" />
</blockdef>
<blockdef name="timer16">
<timestamp>2022-3-3T14:19:25</timestamp>
<rect width="256" x="64" y="-384" height="384" />
<line x2="0" y1="-352" y2="-352" x1="64" />
<line x2="0" y1="-288" y2="-288" x1="64" />
<line x2="0" y1="-224" y2="-224" x1="64" />
<line x2="0" y1="-160" y2="-160" x1="64" />
<rect width="64" x="0" y="-108" height="24" />
<line x2="0" y1="-96" y2="-96" x1="64" />
<rect width="64" x="0" y="-44" height="24" />
<line x2="0" y1="-32" y2="-32" x1="64" />
<rect width="64" x="320" y="-364" height="24" />
<line x2="384" y1="-352" y2="-352" x1="320" />
</blockdef>
<blockdef name="uart16">
<timestamp>2022-3-3T14:47:50</timestamp>
<rect width="256" x="64" y="-448" height="448" />
<line x2="0" y1="-416" y2="-416" x1="64" />
<line x2="0" y1="-352" y2="-352" x1="64" />
<line x2="0" y1="-288" y2="-288" x1="64" />
<line x2="0" y1="-224" y2="-224" x1="64" />
<line x2="0" y1="-160" y2="-160" x1="64" />
<rect width="64" x="0" y="-108" height="24" />
<line x2="0" y1="-96" y2="-96" x1="64" />
<rect width="64" x="0" y="-44" height="24" />
<line x2="0" y1="-32" y2="-32" x1="64" />
<line x2="384" y1="-416" y2="-416" x1="320" />
<rect width="64" x="320" y="-44" height="24" />
<line x2="384" y1="-32" y2="-32" x1="320" />
</blockdef>
<block symbolname="sel" name="XLXI_632">
<blockpin name="r" />
<blockpin name="c" />
<blockpin signalname="XLXN_3514(15:0)" name="a(15:0)" />
<blockpin name="e0" />
<blockpin name="e1" />
<blockpin name="e2" />
<blockpin name="e3" />
<blockpin name="e4" />
<blockpin name="e5" />
<blockpin name="e6" />
<blockpin name="e7" />
<blockpin signalname="XLXN_3481" name="e8" />
<blockpin signalname="XLXN_3488" name="e9" />
<blockpin signalname="XLXN_3518" name="eA" />
<blockpin name="eB" />
<blockpin name="eC" />
<blockpin name="eD" />
<blockpin name="eE" />
<blockpin name="eF" />
</block>
<block symbolname="core16" name="XLXI_633">
<blockpin signalname="XLXN_3461" name="r" />
<blockpin signalname="XLXN_3473" name="c" />
<blockpin signalname="XLXN_3510(15:0)" name="i(15:0)" />
<blockpin signalname="XLXN_3418" name="w" />
<blockpin signalname="XLXN_3514(15:0)" name="a(15:0)" />
<blockpin signalname="XLXN_3500(15:0)" name="o(15:0)" />
</block>
<block symbolname="res_m" name="XLXI_639">
<blockpin signalname="XLXN_3461" name="res" />
<blockpin signalname="XLXN_3473" name="clk" />
</block>
<block symbolname="dcm" name="XLXI_640">
<blockpin signalname="clk" name="CLKIN_IN" />
<blockpin signalname="XLXN_3473" name="CLKFX_OUT" />
<blockpin name="CLKIN_IBUFG_OUT" />
</block>
<block symbolname="obuf" name="XLXI_644">
<blockpin signalname="XLXN_3517" name="I" />
<blockpin signalname="tx" name="O" />
</block>
<block symbolname="ibuf" name="XLXI_645">
<blockpin signalname="rx" name="I" />
<blockpin signalname="XLXN_3507" name="O" />
</block>
<block symbolname="gpio16" name="XLXI_648">
<blockpin name="r" />
<blockpin signalname="XLXN_3473" name="c" />
<blockpin signalname="XLXN_3418" name="w" />
<blockpin signalname="XLXN_3481" name="e" />
<blockpin name="a(15:0)" />
<blockpin signalname="XLXN_3500(15:0)" name="i(15:0)" />
<blockpin signalname="XLXN_3497" name="p0" />
<blockpin signalname="XLXN_3516" name="p1" />
<blockpin signalname="XLXN_3499" name="p2" />
<blockpin signalname="XLXN_3501(15:0)" name="o(15:0)" />
</block>
<block symbolname="timer16" name="XLXI_649">
<blockpin name="r" />
<blockpin signalname="XLXN_3473" name="c" />
<blockpin signalname="XLXN_3418" name="w" />
<blockpin signalname="XLXN_3488" name="e" />
<blockpin signalname="XLXN_3514(15:0)" name="a(15:0)" />
<blockpin signalname="XLXN_3501(15:0)" name="i(15:0)" />
<blockpin signalname="XLXN_3509(15:0)" name="o(15:0)" />
</block>
<block symbolname="obuf" name="XLXI_641">
<blockpin signalname="XLXN_3497" name="I" />
<blockpin signalname="led1" name="O" />
</block>
<block symbolname="obuf" name="XLXI_642">
<blockpin signalname="XLXN_3516" name="I" />
<blockpin signalname="led2" name="O" />
</block>
<block symbolname="obuf" name="XLXI_643">
<blockpin signalname="XLXN_3499" name="I" />
<blockpin signalname="led3" name="O" />
</block>
<block symbolname="uart16" name="XLXI_656">
<blockpin name="r" />
<blockpin signalname="XLXN_3473" name="c" />
<blockpin signalname="XLXN_3507" name="rx" />
<blockpin signalname="XLXN_3418" name="w" />
<blockpin signalname="XLXN_3518" name="e" />
<blockpin signalname="XLXN_3514(15:0)" name="a(15:0)" />
<blockpin signalname="XLXN_3509(15:0)" name="i(15:0)" />
<blockpin signalname="XLXN_3517" name="tx" />
<blockpin signalname="XLXN_3510(15:0)" name="o(15:0)" />
</block>
</netlist>
<sheet sheetnum="1" width="5382" height="3801">
<attr value="CM" name="LengthUnitName" />
<attr value="4" name="GridsPerUnit" />
<branch name="clk">
<wire x2="640" y1="944" y2="944" x1="368" />
</branch>
<instance x="1888" y="1104" name="XLXI_633" orien="R0">
</instance>
<instance x="1312" y="976" name="XLXI_639" orien="R0">
</instance>
<branch name="XLXN_3461">
<wire x2="1888" y1="944" y2="944" x1="1696" />
</branch>
<iomarker fontsize="28" x="368" y="944" name="clk" orien="R180" />
<instance x="640" y="1040" name="XLXI_640" orien="R0">
</instance>
<instance x="1888" y="2320" name="XLXI_632" orien="R0">
</instance>
<branch name="tx">
<wire x2="4416" y1="1952" y2="1952" x1="4400" />
<wire x2="4688" y1="1952" y2="1952" x1="4416" />
</branch>
<branch name="rx">
<wire x2="4416" y1="2048" y2="2048" x1="4400" />
<wire x2="4688" y1="2048" y2="2048" x1="4416" />
</branch>
<text style="fontsize:40;fontname:Arial" x="220" y="948">88</text>
<instance x="3296" y="1264" name="XLXI_648" orien="R0">
</instance>
<branch name="XLXN_3473">
<wire x2="1408" y1="944" y2="944" x1="1104" />
<wire x2="1456" y1="944" y2="944" x1="1408" />
<wire x2="1408" y1="944" y2="1008" x1="1408" />
<wire x2="1888" y1="1008" y2="1008" x1="1408" />
<wire x2="1408" y1="1008" y2="1168" x1="1408" />
<wire x2="2336" y1="1168" y2="1168" x1="1408" />
<wire x2="2336" y1="1168" y2="1344" x1="2336" />
<wire x2="2992" y1="1344" y2="1344" x1="2336" />
<wire x2="2992" y1="1344" y2="1472" x1="2992" />
<wire x2="3296" y1="1472" y2="1472" x1="2992" />
<wire x2="2992" y1="1472" y2="2016" x1="2992" />
<wire x2="3296" y1="2016" y2="2016" x1="2992" />
<wire x2="3296" y1="976" y2="976" x1="2992" />
<wire x2="2992" y1="976" y2="1344" x1="2992" />
</branch>
<branch name="XLXN_3481">
<wire x2="2288" y1="1840" y2="1840" x1="2272" />
<wire x2="3296" y1="1104" y2="1104" x1="2288" />
<wire x2="2288" y1="1104" y2="1840" x1="2288" />
</branch>
<branch name="XLXN_3488">
<wire x2="2784" y1="1904" y2="1904" x1="2272" />
<wire x2="2784" y1="1600" y2="1904" x1="2784" />
<wire x2="3296" y1="1600" y2="1600" x1="2784" />
</branch>
<branch name="led1">
<wire x2="4688" y1="912" y2="912" x1="4416" />
</branch>
<branch name="led2">
<wire x2="4432" y1="1008" y2="1008" x1="4416" />
<wire x2="4688" y1="1008" y2="1008" x1="4432" />
</branch>
<branch name="led3">
<wire x2="4432" y1="1104" y2="1104" x1="4416" />
<wire x2="4688" y1="1104" y2="1104" x1="4432" />
</branch>
<text style="fontsize:40;fontname:Arial" x="4804" y="932">32</text>
<instance x="4192" y="944" name="XLXI_641" orien="R0" />
<iomarker fontsize="28" x="4688" y="912" name="led1" orien="R0" />
<branch name="XLXN_3497">
<wire x2="4192" y1="912" y2="912" x1="3680" />
</branch>
<branch name="XLXN_3499">
<wire x2="4192" y1="1104" y2="1104" x1="3680" />
</branch>
<instance x="4192" y="1136" name="XLXI_643" orien="R0" />
<instance x="4192" y="1040" name="XLXI_642" orien="R0" />
<iomarker fontsize="28" x="4688" y="1008" name="led2" orien="R0" />
<iomarker fontsize="28" x="4688" y="1104" name="led3" orien="R0" />
<text style="fontsize:40;fontname:Arial" x="4800" y="1108">34</text>
<text style="fontsize:40;fontname:Arial" x="4804" y="1008">33</text>
<branch name="XLXN_3500(15:0)">
<wire x2="2784" y1="1072" y2="1072" x1="2272" />
<wire x2="2784" y1="1072" y2="1232" x1="2784" />
<wire x2="3296" y1="1232" y2="1232" x1="2784" />
</branch>
<branch name="XLXN_3501(15:0)">
<wire x2="3296" y1="1728" y2="1728" x1="3216" />
<wire x2="3216" y1="1728" y2="1824" x1="3216" />
<wire x2="3696" y1="1824" y2="1824" x1="3216" />
<wire x2="3696" y1="1200" y2="1200" x1="3680" />
<wire x2="3696" y1="1200" y2="1824" x1="3696" />
</branch>
<instance x="3296" y="1760" name="XLXI_649" orien="R0">
</instance>
<branch name="XLXN_3418">
<wire x2="2912" y1="944" y2="944" x1="2272" />
<wire x2="3104" y1="944" y2="944" x1="2912" />
<wire x2="3104" y1="944" y2="1040" x1="3104" />
<wire x2="3296" y1="1040" y2="1040" x1="3104" />
<wire x2="2912" y1="944" y2="1536" x1="2912" />
<wire x2="3296" y1="1536" y2="1536" x1="2912" />
<wire x2="2912" y1="1536" y2="2144" x1="2912" />
<wire x2="3296" y1="2144" y2="2144" x1="2912" />
</branch>
<instance x="3296" y="2368" name="XLXI_656" orien="R0">
</instance>
<branch name="XLXN_3507">
<wire x2="3296" y1="2080" y2="2080" x1="3280" />
<wire x2="3280" y1="2080" y2="2448" x1="3280" />
<wire x2="3744" y1="2448" y2="2448" x1="3280" />
<wire x2="3744" y1="2048" y2="2448" x1="3744" />
<wire x2="4176" y1="2048" y2="2048" x1="3744" />
</branch>
<instance x="4176" y="1984" name="XLXI_644" orien="R0" />
<instance x="4400" y="2016" name="XLXI_645" orien="R180" />
<iomarker fontsize="28" x="4688" y="2048" name="rx" orien="R0" />
<text style="fontsize:40;fontname:Arial" x="4780" y="2052">18</text>
<iomarker fontsize="28" x="4688" y="1952" name="tx" orien="R0" />
<text style="fontsize:40;fontname:Arial" x="4780" y="1948">17</text>
<branch name="XLXN_3509(15:0)">
<wire x2="3296" y1="2336" y2="2336" x1="3216" />
<wire x2="3216" y1="2336" y2="2432" x1="3216" />
<wire x2="3776" y1="2432" y2="2432" x1="3216" />
<wire x2="3776" y1="1408" y2="1408" x1="3680" />
<wire x2="3776" y1="1408" y2="2432" x1="3776" />
</branch>
<branch name="XLXN_3510(15:0)">
<wire x2="1840" y1="800" y2="1072" x1="1840" />
<wire x2="1888" y1="1072" y2="1072" x1="1840" />
<wire x2="3760" y1="800" y2="800" x1="1840" />
<wire x2="3760" y1="800" y2="2336" x1="3760" />
<wire x2="3760" y1="2336" y2="2336" x1="3680" />
</branch>
<branch name="XLXN_3514(15:0)">
<wire x2="1888" y1="2288" y2="2288" x1="1824" />
<wire x2="1824" y1="2288" y2="2400" x1="1824" />
<wire x2="2352" y1="2400" y2="2400" x1="1824" />
<wire x2="2352" y1="1008" y2="1008" x1="2272" />
<wire x2="2352" y1="1008" y2="2400" x1="2352" />
<wire x2="2816" y1="1008" y2="1008" x1="2352" />
<wire x2="2816" y1="1008" y2="1664" x1="2816" />
<wire x2="3296" y1="1664" y2="1664" x1="2816" />
<wire x2="2816" y1="1664" y2="2272" x1="2816" />
<wire x2="3296" y1="2272" y2="2272" x1="2816" />
</branch>
<branch name="XLXN_3516">
<wire x2="4192" y1="1008" y2="1008" x1="3680" />
</branch>
<branch name="XLXN_3517">
<wire x2="4176" y1="1952" y2="1952" x1="3680" />
</branch>
<branch name="XLXN_3518">
<wire x2="2784" y1="1968" y2="1968" x1="2272" />
<wire x2="2784" y1="1968" y2="2208" x1="2784" />
<wire x2="3296" y1="2208" y2="2208" x1="2784" />
</branch>
</sheet>
</drawing>