415 lines
15 KiB
XML
415 lines
15 KiB
XML
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
<project source="2.7.1" version="1.0">
|
|
This file is intended to be loaded by Logisim (http://www.cburch.com/logisim/).
|
|
<lib desc="#Wiring" name="0">
|
|
<tool name="Splitter">
|
|
<a name="facing" val="west"/>
|
|
<a name="fanout" val="3"/>
|
|
<a name="incoming" val="3"/>
|
|
</tool>
|
|
<tool name="Pin">
|
|
<a name="tristate" val="false"/>
|
|
<a name="pull" val="down"/>
|
|
<a name="label" val="View"/>
|
|
</tool>
|
|
<tool name="Probe">
|
|
<a name="facing" val="west"/>
|
|
<a name="radix" val="16"/>
|
|
<a name="label" val="rdov"/>
|
|
<a name="labelloc" val="east"/>
|
|
</tool>
|
|
<tool name="Tunnel">
|
|
<a name="label" val="riv"/>
|
|
</tool>
|
|
<tool name="Pull Resistor">
|
|
<a name="facing" val="north"/>
|
|
</tool>
|
|
<tool name="Clock">
|
|
<a name="facing" val="north"/>
|
|
</tool>
|
|
<tool name="Constant">
|
|
<a name="width" val="16"/>
|
|
<a name="value" val="0x0"/>
|
|
</tool>
|
|
</lib>
|
|
<lib desc="#Gates" name="1">
|
|
<tool name="AND Gate">
|
|
<a name="width" val="16"/>
|
|
<a name="inputs" val="2"/>
|
|
</tool>
|
|
<tool name="NOR Gate">
|
|
<a name="size" val="30"/>
|
|
<a name="inputs" val="3"/>
|
|
</tool>
|
|
<tool name="XOR Gate">
|
|
<a name="size" val="30"/>
|
|
<a name="inputs" val="2"/>
|
|
</tool>
|
|
</lib>
|
|
<lib desc="#Plexers" name="2">
|
|
<tool name="Decoder">
|
|
<a name="select" val="3"/>
|
|
</tool>
|
|
</lib>
|
|
<lib desc="#Arithmetic" name="3"/>
|
|
<lib desc="#Memory" name="4">
|
|
<tool name="Register">
|
|
<a name="width" val="16"/>
|
|
</tool>
|
|
<tool name="RAM">
|
|
<a name="addrWidth" val="12"/>
|
|
<a name="dataWidth" val="16"/>
|
|
</tool>
|
|
<tool name="ROM">
|
|
<a name="contents">addr/data: 8 8
|
|
0
|
|
</a>
|
|
</tool>
|
|
</lib>
|
|
<lib desc="#I/O" name="5"/>
|
|
<lib desc="#Base" name="6">
|
|
<tool name="Text Tool">
|
|
<a name="text" val="PUSH"/>
|
|
<a name="font" val="SansSerif plain 12"/>
|
|
<a name="halign" val="center"/>
|
|
<a name="valign" val="base"/>
|
|
</tool>
|
|
</lib>
|
|
<main name="Stack ALU"/>
|
|
<options>
|
|
<a name="gateUndefined" val="ignore"/>
|
|
<a name="simlimit" val="1000"/>
|
|
<a name="simrand" val="0"/>
|
|
</options>
|
|
<mappings>
|
|
<tool lib="6" map="Button2" name="Menu Tool"/>
|
|
<tool lib="6" map="Ctrl Button1" name="Menu Tool"/>
|
|
<tool lib="6" map="Button3" name="Menu Tool"/>
|
|
</mappings>
|
|
<toolbar>
|
|
<tool lib="6" name="Poke Tool"/>
|
|
<tool lib="6" name="Edit Tool"/>
|
|
<tool lib="6" name="Text Tool">
|
|
<a name="text" val="PUSH"/>
|
|
<a name="font" val="SansSerif plain 12"/>
|
|
<a name="halign" val="center"/>
|
|
<a name="valign" val="base"/>
|
|
</tool>
|
|
<sep/>
|
|
<tool lib="0" name="Pin">
|
|
<a name="tristate" val="false"/>
|
|
<a name="label" val="RESET"/>
|
|
</tool>
|
|
<tool lib="0" name="Pin">
|
|
<a name="facing" val="west"/>
|
|
<a name="output" val="true"/>
|
|
<a name="label" val="WRITE"/>
|
|
<a name="labelloc" val="east"/>
|
|
</tool>
|
|
<tool lib="1" name="NOT Gate"/>
|
|
<tool lib="1" name="AND Gate"/>
|
|
<tool lib="1" name="OR Gate">
|
|
<a name="width" val="16"/>
|
|
<a name="size" val="30"/>
|
|
<a name="inputs" val="2"/>
|
|
</tool>
|
|
</toolbar>
|
|
<circuit name="stack">
|
|
<a name="circuit" val="stack"/>
|
|
<a name="clabel" val=""/>
|
|
<a name="clabelup" val="east"/>
|
|
<a name="clabelfont" val="SansSerif plain 12"/>
|
|
<wire from="(250,140)" to="(250,180)"/>
|
|
<wire from="(290,70)" to="(290,90)"/>
|
|
<wire from="(450,230)" to="(450,350)"/>
|
|
<wire from="(350,210)" to="(380,210)"/>
|
|
<wire from="(280,130)" to="(300,130)"/>
|
|
<wire from="(520,190)" to="(660,190)"/>
|
|
<wire from="(140,210)" to="(160,210)"/>
|
|
<wire from="(210,60)" to="(210,200)"/>
|
|
<wire from="(190,200)" to="(210,200)"/>
|
|
<wire from="(410,230)" to="(410,250)"/>
|
|
<wire from="(140,250)" to="(410,250)"/>
|
|
<wire from="(150,190)" to="(160,190)"/>
|
|
<wire from="(150,140)" to="(250,140)"/>
|
|
<wire from="(100,140)" to="(150,140)"/>
|
|
<wire from="(270,90)" to="(290,90)"/>
|
|
<wire from="(270,90)" to="(270,100)"/>
|
|
<wire from="(150,140)" to="(150,190)"/>
|
|
<wire from="(320,210)" to="(320,290)"/>
|
|
<wire from="(310,210)" to="(310,350)"/>
|
|
<wire from="(310,350)" to="(400,350)"/>
|
|
<wire from="(300,70)" to="(300,130)"/>
|
|
<wire from="(300,350)" to="(310,350)"/>
|
|
<wire from="(100,220)" to="(120,220)"/>
|
|
<wire from="(350,50)" to="(350,210)"/>
|
|
<wire from="(280,130)" to="(280,290)"/>
|
|
<wire from="(430,350)" to="(450,350)"/>
|
|
<wire from="(210,200)" to="(300,200)"/>
|
|
<wire from="(210,60)" to="(280,60)"/>
|
|
<wire from="(310,50)" to="(350,50)"/>
|
|
<wire from="(130,50)" to="(280,50)"/>
|
|
<wire from="(330,190)" to="(380,190)"/>
|
|
<wire from="(250,180)" to="(300,180)"/>
|
|
<wire from="(320,290)" to="(490,290)"/>
|
|
<wire from="(120,210)" to="(140,210)"/>
|
|
<wire from="(130,290)" to="(280,290)"/>
|
|
<wire from="(140,210)" to="(140,250)"/>
|
|
<wire from="(280,290)" to="(320,290)"/>
|
|
<wire from="(120,210)" to="(120,220)"/>
|
|
<wire from="(490,230)" to="(490,290)"/>
|
|
<wire from="(430,230)" to="(430,260)"/>
|
|
<comp lib="0" loc="(660,190)" name="Pin">
|
|
<a name="facing" val="west"/>
|
|
<a name="output" val="true"/>
|
|
<a name="width" val="16"/>
|
|
<a name="label" val="OUT"/>
|
|
<a name="labelloc" val="east"/>
|
|
</comp>
|
|
<comp lib="4" loc="(330,190)" name="Counter">
|
|
<a name="width" val="12"/>
|
|
<a name="max" val="0xfff"/>
|
|
</comp>
|
|
<comp lib="0" loc="(100,140)" name="Pin">
|
|
<a name="tristate" val="false"/>
|
|
<a name="label" val="POP"/>
|
|
</comp>
|
|
<comp lib="0" loc="(100,220)" name="Pin">
|
|
<a name="tristate" val="false"/>
|
|
<a name="label" val="PUSH"/>
|
|
</comp>
|
|
<comp lib="0" loc="(430,260)" name="Constant"/>
|
|
<comp lib="1" loc="(430,350)" name="NOT Gate"/>
|
|
<comp lib="0" loc="(300,350)" name="Clock"/>
|
|
<comp lib="4" loc="(520,190)" name="RAM">
|
|
<a name="addrWidth" val="12"/>
|
|
<a name="dataWidth" val="16"/>
|
|
<a name="bus" val="separate"/>
|
|
</comp>
|
|
<comp lib="0" loc="(130,50)" name="Pin">
|
|
<a name="width" val="16"/>
|
|
<a name="tristate" val="false"/>
|
|
<a name="label" val="IN"/>
|
|
</comp>
|
|
<comp lib="0" loc="(130,290)" name="Pin">
|
|
<a name="tristate" val="false"/>
|
|
<a name="label" val="RESET"/>
|
|
</comp>
|
|
<comp lib="0" loc="(270,100)" name="Clock">
|
|
<a name="facing" val="north"/>
|
|
</comp>
|
|
<comp lib="1" loc="(190,200)" name="OR Gate">
|
|
<a name="size" val="30"/>
|
|
<a name="inputs" val="2"/>
|
|
</comp>
|
|
<comp lib="4" loc="(310,50)" name="Register">
|
|
<a name="width" val="16"/>
|
|
</comp>
|
|
</circuit>
|
|
<circuit name="Stack ALU">
|
|
<a name="circuit" val="Stack ALU"/>
|
|
<a name="clabel" val=""/>
|
|
<a name="clabelup" val="east"/>
|
|
<a name="clabelfont" val="SansSerif plain 12"/>
|
|
<wire from="(870,150)" to="(870,220)"/>
|
|
<wire from="(1060,430)" to="(1080,430)"/>
|
|
<wire from="(390,100)" to="(400,100)"/>
|
|
<wire from="(350,510)" to="(950,510)"/>
|
|
<wire from="(1080,90)" to="(1080,430)"/>
|
|
<wire from="(70,630)" to="(150,630)"/>
|
|
<wire from="(490,150)" to="(600,150)"/>
|
|
<wire from="(600,150)" to="(600,300)"/>
|
|
<wire from="(720,270)" to="(720,290)"/>
|
|
<wire from="(160,550)" to="(350,550)"/>
|
|
<wire from="(480,540)" to="(1010,540)"/>
|
|
<wire from="(230,110)" to="(340,110)"/>
|
|
<wire from="(1050,450)" to="(1050,660)"/>
|
|
<wire from="(80,550)" to="(160,550)"/>
|
|
<wire from="(650,310)" to="(710,310)"/>
|
|
<wire from="(910,60)" to="(910,260)"/>
|
|
<wire from="(980,300)" to="(980,430)"/>
|
|
<wire from="(650,150)" to="(650,260)"/>
|
|
<wire from="(1010,570)" to="(1040,570)"/>
|
|
<wire from="(240,120)" to="(240,440)"/>
|
|
<wire from="(180,420)" to="(220,420)"/>
|
|
<wire from="(670,400)" to="(830,400)"/>
|
|
<wire from="(740,90)" to="(740,270)"/>
|
|
<wire from="(150,570)" to="(150,630)"/>
|
|
<wire from="(220,90)" to="(340,90)"/>
|
|
<wire from="(870,220)" to="(1120,220)"/>
|
|
<wire from="(220,30)" to="(1100,30)"/>
|
|
<wire from="(200,160)" to="(200,400)"/>
|
|
<wire from="(400,100)" to="(400,150)"/>
|
|
<wire from="(550,90)" to="(580,90)"/>
|
|
<wire from="(830,260)" to="(840,260)"/>
|
|
<wire from="(410,660)" to="(1050,660)"/>
|
|
<wire from="(550,90)" to="(550,350)"/>
|
|
<wire from="(830,320)" to="(930,320)"/>
|
|
<wire from="(190,60)" to="(910,60)"/>
|
|
<wire from="(950,340)" to="(950,510)"/>
|
|
<wire from="(450,90)" to="(530,90)"/>
|
|
<wire from="(450,90)" to="(450,140)"/>
|
|
<wire from="(970,300)" to="(980,300)"/>
|
|
<wire from="(720,290)" to="(930,290)"/>
|
|
<wire from="(150,570)" to="(480,570)"/>
|
|
<wire from="(870,270)" to="(930,270)"/>
|
|
<wire from="(580,320)" to="(620,320)"/>
|
|
<wire from="(620,280)" to="(660,280)"/>
|
|
<wire from="(180,440)" to="(240,440)"/>
|
|
<wire from="(220,30)" to="(220,90)"/>
|
|
<wire from="(840,260)" to="(840,280)"/>
|
|
<wire from="(720,310)" to="(720,350)"/>
|
|
<wire from="(980,430)" to="(1030,430)"/>
|
|
<wire from="(770,150)" to="(770,250)"/>
|
|
<wire from="(240,120)" to="(340,120)"/>
|
|
<wire from="(650,260)" to="(660,260)"/>
|
|
<wire from="(480,540)" to="(480,570)"/>
|
|
<wire from="(1080,430)" to="(1120,430)"/>
|
|
<wire from="(200,160)" to="(460,160)"/>
|
|
<wire from="(410,170)" to="(410,660)"/>
|
|
<wire from="(840,280)" to="(930,280)"/>
|
|
<wire from="(180,410)" to="(210,410)"/>
|
|
<wire from="(150,480)" to="(150,570)"/>
|
|
<wire from="(830,320)" to="(830,400)"/>
|
|
<wire from="(350,510)" to="(350,550)"/>
|
|
<wire from="(210,80)" to="(340,80)"/>
|
|
<wire from="(400,150)" to="(460,150)"/>
|
|
<wire from="(720,310)" to="(930,310)"/>
|
|
<wire from="(530,90)" to="(530,400)"/>
|
|
<wire from="(160,480)" to="(160,550)"/>
|
|
<wire from="(330,660)" to="(410,660)"/>
|
|
<wire from="(910,260)" to="(930,260)"/>
|
|
<wire from="(580,90)" to="(580,320)"/>
|
|
<wire from="(600,300)" to="(620,300)"/>
|
|
<wire from="(1010,440)" to="(1010,540)"/>
|
|
<wire from="(180,400)" to="(200,400)"/>
|
|
<wire from="(710,300)" to="(930,300)"/>
|
|
<wire from="(870,220)" to="(870,270)"/>
|
|
<wire from="(550,350)" to="(670,350)"/>
|
|
<wire from="(580,90)" to="(620,90)"/>
|
|
<wire from="(230,110)" to="(230,430)"/>
|
|
<wire from="(410,170)" to="(460,170)"/>
|
|
<wire from="(770,150)" to="(870,150)"/>
|
|
<wire from="(1040,450)" to="(1040,570)"/>
|
|
<wire from="(600,150)" to="(650,150)"/>
|
|
<wire from="(210,80)" to="(210,410)"/>
|
|
<wire from="(620,90)" to="(620,280)"/>
|
|
<wire from="(690,270)" to="(720,270)"/>
|
|
<wire from="(180,430)" to="(230,430)"/>
|
|
<wire from="(770,250)" to="(790,250)"/>
|
|
<wire from="(740,90)" to="(1080,90)"/>
|
|
<wire from="(710,300)" to="(710,310)"/>
|
|
<wire from="(620,90)" to="(740,90)"/>
|
|
<wire from="(530,400)" to="(630,400)"/>
|
|
<wire from="(700,350)" to="(720,350)"/>
|
|
<wire from="(220,90)" to="(220,420)"/>
|
|
<wire from="(1010,440)" to="(1030,440)"/>
|
|
<wire from="(650,150)" to="(770,150)"/>
|
|
<wire from="(740,270)" to="(790,270)"/>
|
|
<wire from="(530,90)" to="(550,90)"/>
|
|
<wire from="(450,140)" to="(460,140)"/>
|
|
<comp lib="3" loc="(670,400)" name="Negator">
|
|
<a name="width" val="16"/>
|
|
</comp>
|
|
<comp lib="2" loc="(160,480)" name="Decoder">
|
|
<a name="select" val="3"/>
|
|
<a name="disabled" val="0"/>
|
|
</comp>
|
|
<comp lib="6" loc="(200,592)" name="Text">
|
|
<a name="text" val="0- PUSH"/>
|
|
</comp>
|
|
<comp lib="0" loc="(1100,30)" name="Pin">
|
|
<a name="facing" val="west"/>
|
|
<a name="output" val="true"/>
|
|
<a name="label" val="WRITE"/>
|
|
<a name="labelloc" val="east"/>
|
|
</comp>
|
|
<comp lib="1" loc="(690,270)" name="AND Gate">
|
|
<a name="width" val="16"/>
|
|
<a name="size" val="30"/>
|
|
<a name="inputs" val="2"/>
|
|
</comp>
|
|
<comp lib="6" loc="(193,673)" name="Text">
|
|
<a name="text" val="4 - OR"/>
|
|
</comp>
|
|
<comp lib="0" loc="(80,550)" name="Pin">
|
|
<a name="width" val="3"/>
|
|
<a name="tristate" val="false"/>
|
|
<a name="label" val="OP"/>
|
|
</comp>
|
|
<comp lib="0" loc="(330,660)" name="Pin">
|
|
<a name="tristate" val="false"/>
|
|
<a name="label" val="RESET"/>
|
|
</comp>
|
|
<comp lib="1" loc="(700,350)" name="NOT Gate">
|
|
<a name="width" val="16"/>
|
|
</comp>
|
|
<comp lib="0" loc="(190,60)" name="Pin">
|
|
<a name="width" val="16"/>
|
|
<a name="tristate" val="false"/>
|
|
<a name="label" val="PUSHIN"/>
|
|
</comp>
|
|
<comp lib="2" loc="(970,300)" name="Multiplexer">
|
|
<a name="select" val="3"/>
|
|
<a name="width" val="16"/>
|
|
<a name="enable" val="false"/>
|
|
</comp>
|
|
<comp lib="3" loc="(830,260)" name="Adder">
|
|
<a name="width" val="16"/>
|
|
</comp>
|
|
<comp lib="6" loc="(198,632)" name="Text">
|
|
<a name="text" val="2 - ADD"/>
|
|
</comp>
|
|
<comp lib="6" loc="(198,739)" name="Text">
|
|
<a name="text" val="7 - NOP"/>
|
|
</comp>
|
|
<comp lib="6" loc="(195,717)" name="Text">
|
|
<a name="text" val="6 - INV"/>
|
|
</comp>
|
|
<comp lib="1" loc="(390,100)" name="OR Gate">
|
|
<a name="inputs" val="4"/>
|
|
</comp>
|
|
<comp lib="4" loc="(1060,430)" name="Register">
|
|
<a name="width" val="16"/>
|
|
<a name="label" val="Top"/>
|
|
</comp>
|
|
<comp lib="0" loc="(1120,220)" name="Pin">
|
|
<a name="facing" val="west"/>
|
|
<a name="output" val="true"/>
|
|
<a name="width" val="16"/>
|
|
<a name="label" val="TOP-1"/>
|
|
<a name="labelloc" val="east"/>
|
|
</comp>
|
|
<comp lib="0" loc="(1120,430)" name="Pin">
|
|
<a name="facing" val="west"/>
|
|
<a name="output" val="true"/>
|
|
<a name="width" val="16"/>
|
|
<a name="label" val="TOP"/>
|
|
<a name="labelloc" val="east"/>
|
|
</comp>
|
|
<comp lib="0" loc="(70,630)" name="Pin">
|
|
<a name="tristate" val="false"/>
|
|
<a name="label" val="ENABLE"/>
|
|
</comp>
|
|
<comp lib="6" loc="(475,191)" name="Text">
|
|
<a name="text" val="Stack"/>
|
|
</comp>
|
|
<comp lib="6" loc="(197,694)" name="Text">
|
|
<a name="text" val="5 - NOT"/>
|
|
</comp>
|
|
<comp lib="1" loc="(650,310)" name="OR Gate">
|
|
<a name="width" val="16"/>
|
|
<a name="size" val="30"/>
|
|
<a name="inputs" val="2"/>
|
|
</comp>
|
|
<comp loc="(490,150)" name="stack"/>
|
|
<comp lib="6" loc="(197,653)" name="Text">
|
|
<a name="text" val="3 - AND"/>
|
|
</comp>
|
|
<comp lib="0" loc="(1010,570)" name="Clock"/>
|
|
<comp lib="6" loc="(195,613)" name="Text">
|
|
<a name="text" val="1- POP"/>
|
|
</comp>
|
|
</circuit>
|
|
</project>
|