Logisim/AdderSubtractor_Markou.circ

393 lines
14 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="Constant">
<a name="value" val="0x0"/>
</tool>
</lib>
<lib desc="#Gates" name="1"/>
<lib desc="#Plexers" name="2"/>
<lib desc="#Arithmetic" name="3"/>
<lib desc="#Memory" name="4">
<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=""/>
<a name="font" val="SansSerif plain 12"/>
<a name="halign" val="center"/>
<a name="valign" val="base"/>
</tool>
</lib>
<lib desc="file#OneBitAdder.circ" name="7"/>
<main name="TwoBitAdderSubtractor"/>
<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=""/>
<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"/>
</tool>
<tool lib="0" name="Pin">
<a name="facing" val="west"/>
<a name="output" val="true"/>
<a name="labelloc" val="east"/>
</tool>
<tool lib="1" name="NOT Gate"/>
<tool lib="1" name="AND Gate"/>
<tool lib="1" name="OR Gate"/>
</toolbar>
<circuit name="TwoBitAdderSubtractor">
<a name="circuit" val="TwoBitAdderSubtractor"/>
<a name="clabel" val=""/>
<a name="clabelup" val="east"/>
<a name="clabelfont" val="SansSerif plain 12"/>
<wire from="(320,170)" to="(330,170)"/>
<wire from="(380,160)" to="(380,210)"/>
<wire from="(190,120)" to="(190,130)"/>
<wire from="(190,310)" to="(250,310)"/>
<wire from="(380,220)" to="(480,220)"/>
<wire from="(360,290)" to="(380,290)"/>
<wire from="(120,220)" to="(250,220)"/>
<wire from="(320,170)" to="(320,200)"/>
<wire from="(380,160)" to="(390,160)"/>
<wire from="(310,200)" to="(320,200)"/>
<wire from="(380,220)" to="(380,290)"/>
<wire from="(110,120)" to="(110,150)"/>
<wire from="(100,350)" to="(250,350)"/>
<wire from="(380,210)" to="(480,210)"/>
<wire from="(90,120)" to="(90,280)"/>
<wire from="(190,130)" to="(350,130)"/>
<wire from="(350,130)" to="(350,140)"/>
<wire from="(320,300)" to="(330,300)"/>
<wire from="(110,150)" to="(330,150)"/>
<wire from="(100,350)" to="(100,380)"/>
<wire from="(310,330)" to="(320,330)"/>
<wire from="(500,220)" to="(510,220)"/>
<wire from="(360,160)" to="(380,160)"/>
<wire from="(190,180)" to="(250,180)"/>
<wire from="(190,180)" to="(190,310)"/>
<wire from="(190,130)" to="(190,180)"/>
<wire from="(120,220)" to="(120,380)"/>
<wire from="(320,300)" to="(320,330)"/>
<wire from="(380,290)" to="(390,290)"/>
<wire from="(90,280)" to="(330,280)"/>
<wire from="(350,180)" to="(350,270)"/>
<comp lib="0" loc="(90,120)" name="Pin">
<a name="facing" val="south"/>
<a name="tristate" val="false"/>
</comp>
<comp lib="0" loc="(390,160)" name="Pin">
<a name="facing" val="west"/>
<a name="output" val="true"/>
<a name="labelloc" val="east"/>
</comp>
<comp lib="6" loc="(118,410)" name="Text">
<a name="text" val="b0"/>
</comp>
<comp lib="6" loc="(188,93)" name="Text">
<a name="text" val="+- Control"/>
</comp>
<comp lib="7" loc="(340,290)" name="fullAdder"/>
<comp lib="6" loc="(419,163)" name="Text">
<a name="text" val="x0"/>
</comp>
<comp lib="0" loc="(500,220)" name="Splitter">
<a name="facing" val="west"/>
<a name="appear" val="center"/>
</comp>
<comp lib="0" loc="(100,380)" name="Pin">
<a name="facing" val="north"/>
<a name="tristate" val="false"/>
</comp>
<comp lib="0" loc="(190,120)" name="Pin">
<a name="facing" val="south"/>
<a name="tristate" val="false"/>
</comp>
<comp lib="6" loc="(521,242)" name="Text">
<a name="text" val="x1x0"/>
</comp>
<comp lib="6" loc="(422,294)" name="Text">
<a name="text" val="x1"/>
</comp>
<comp lib="1" loc="(310,330)" name="XOR Gate">
<a name="inputs" val="2"/>
</comp>
<comp lib="0" loc="(110,120)" name="Pin">
<a name="facing" val="south"/>
<a name="tristate" val="false"/>
</comp>
<comp lib="0" loc="(120,380)" name="Pin">
<a name="facing" val="north"/>
<a name="tristate" val="false"/>
</comp>
<comp lib="6" loc="(98,410)" name="Text">
<a name="text" val="b1"/>
</comp>
<comp lib="0" loc="(390,290)" name="Pin">
<a name="facing" val="west"/>
<a name="output" val="true"/>
<a name="labelloc" val="east"/>
</comp>
<comp lib="1" loc="(310,200)" name="XOR Gate">
<a name="inputs" val="2"/>
</comp>
<comp lib="7" loc="(340,160)" name="fullAdder"/>
<comp lib="6" loc="(110,98)" name="Text">
<a name="text" val="a0"/>
</comp>
<comp lib="6" loc="(88,97)" name="Text">
<a name="text" val="a1"/>
</comp>
<comp lib="0" loc="(510,220)" name="Pin">
<a name="facing" val="west"/>
<a name="output" val="true"/>
<a name="width" val="2"/>
<a name="labelloc" val="east"/>
</comp>
</circuit>
<circuit name="EightBitAdderSubtractor">
<a name="circuit" val="EightBitAdderSubtractor"/>
<a name="clabel" val="+-"/>
<a name="clabelup" val="north"/>
<a name="clabelfont" val="SansSerif plain 12"/>
<appear>
<rect fill="none" height="60" stroke="#000000" stroke-width="2" width="40" x="50" y="50"/>
<circ-port height="10" pin="830,170" width="10" x="85" y="55"/>
<circ-port height="8" pin="40,50" width="8" x="46" y="66"/>
<circ-port height="8" pin="210,50" width="8" x="66" y="46"/>
<circ-port height="8" pin="40,610" width="8" x="46" y="86"/>
<circ-anchor facing="east" height="6" width="6" x="67" y="57"/>
</appear>
<wire from="(570,380)" to="(620,380)"/>
<wire from="(210,240)" to="(250,240)"/>
<wire from="(560,400)" to="(560,420)"/>
<wire from="(650,190)" to="(760,190)"/>
<wire from="(90,530)" to="(140,530)"/>
<wire from="(210,50)" to="(210,60)"/>
<wire from="(630,170)" to="(760,170)"/>
<wire from="(530,180)" to="(540,180)"/>
<wire from="(90,220)" to="(250,220)"/>
<wire from="(570,170)" to="(590,170)"/>
<wire from="(210,300)" to="(250,300)"/>
<wire from="(510,100)" to="(510,300)"/>
<wire from="(530,180)" to="(530,200)"/>
<wire from="(570,510)" to="(640,510)"/>
<wire from="(500,370)" to="(540,370)"/>
<wire from="(130,460)" to="(130,520)"/>
<wire from="(40,120)" to="(70,120)"/>
<wire from="(310,200)" to="(530,200)"/>
<wire from="(40,520)" to="(40,610)"/>
<wire from="(210,180)" to="(250,180)"/>
<wire from="(310,260)" to="(530,260)"/>
<wire from="(480,130)" to="(480,500)"/>
<wire from="(90,220)" to="(90,480)"/>
<wire from="(480,500)" to="(540,500)"/>
<wire from="(780,170)" to="(830,170)"/>
<wire from="(90,540)" to="(100,540)"/>
<wire from="(590,130)" to="(590,170)"/>
<wire from="(110,340)" to="(250,340)"/>
<wire from="(560,600)" to="(560,630)"/>
<wire from="(560,460)" to="(560,490)"/>
<wire from="(320,390)" to="(540,390)"/>
<wire from="(570,240)" to="(600,240)"/>
<wire from="(560,60)" to="(560,150)"/>
<wire from="(320,450)" to="(540,450)"/>
<wire from="(520,230)" to="(540,230)"/>
<wire from="(310,560)" to="(320,560)"/>
<wire from="(100,280)" to="(250,280)"/>
<wire from="(310,500)" to="(320,500)"/>
<wire from="(90,500)" to="(110,500)"/>
<wire from="(570,650)" to="(660,650)"/>
<wire from="(620,160)" to="(620,380)"/>
<wire from="(660,200)" to="(760,200)"/>
<wire from="(660,200)" to="(660,650)"/>
<wire from="(600,140)" to="(600,240)"/>
<wire from="(560,190)" to="(560,220)"/>
<wire from="(310,380)" to="(320,380)"/>
<wire from="(560,530)" to="(560,560)"/>
<wire from="(640,180)" to="(760,180)"/>
<wire from="(100,580)" to="(250,580)"/>
<wire from="(130,460)" to="(250,460)"/>
<wire from="(650,190)" to="(650,580)"/>
<wire from="(100,280)" to="(100,490)"/>
<wire from="(310,440)" to="(320,440)"/>
<wire from="(90,510)" to="(120,510)"/>
<wire from="(120,400)" to="(120,510)"/>
<wire from="(470,140)" to="(470,570)"/>
<wire from="(500,110)" to="(500,370)"/>
<wire from="(570,310)" to="(610,310)"/>
<wire from="(110,340)" to="(110,500)"/>
<wire from="(560,260)" to="(560,290)"/>
<wire from="(210,180)" to="(210,240)"/>
<wire from="(320,500)" to="(320,520)"/>
<wire from="(210,480)" to="(210,540)"/>
<wire from="(320,590)" to="(540,590)"/>
<wire from="(210,600)" to="(250,600)"/>
<wire from="(210,420)" to="(250,420)"/>
<wire from="(530,250)" to="(540,250)"/>
<wire from="(120,400)" to="(250,400)"/>
<wire from="(600,140)" to="(760,140)"/>
<wire from="(320,560)" to="(320,590)"/>
<wire from="(590,130)" to="(760,130)"/>
<wire from="(210,480)" to="(250,480)"/>
<wire from="(530,250)" to="(530,260)"/>
<wire from="(620,160)" to="(760,160)"/>
<wire from="(470,570)" to="(540,570)"/>
<wire from="(90,550)" to="(90,640)"/>
<wire from="(90,140)" to="(470,140)"/>
<wire from="(210,540)" to="(250,540)"/>
<wire from="(320,380)" to="(320,390)"/>
<wire from="(210,420)" to="(210,480)"/>
<wire from="(90,150)" to="(460,150)"/>
<wire from="(90,490)" to="(100,490)"/>
<wire from="(640,180)" to="(640,510)"/>
<wire from="(320,660)" to="(540,660)"/>
<wire from="(560,330)" to="(560,360)"/>
<wire from="(320,520)" to="(540,520)"/>
<wire from="(320,440)" to="(320,450)"/>
<wire from="(210,60)" to="(210,180)"/>
<wire from="(530,80)" to="(530,160)"/>
<wire from="(570,580)" to="(650,580)"/>
<wire from="(210,540)" to="(210,600)"/>
<wire from="(310,620)" to="(320,620)"/>
<wire from="(90,640)" to="(250,640)"/>
<wire from="(90,110)" to="(500,110)"/>
<wire from="(100,540)" to="(100,580)"/>
<wire from="(520,90)" to="(520,230)"/>
<wire from="(570,440)" to="(630,440)"/>
<wire from="(510,300)" to="(540,300)"/>
<wire from="(610,150)" to="(610,310)"/>
<wire from="(210,360)" to="(210,420)"/>
<wire from="(210,60)" to="(560,60)"/>
<wire from="(90,120)" to="(490,120)"/>
<wire from="(490,430)" to="(540,430)"/>
<wire from="(40,50)" to="(40,120)"/>
<wire from="(630,170)" to="(630,440)"/>
<wire from="(90,130)" to="(480,130)"/>
<wire from="(210,300)" to="(210,360)"/>
<wire from="(490,120)" to="(490,430)"/>
<wire from="(460,640)" to="(540,640)"/>
<wire from="(140,520)" to="(250,520)"/>
<wire from="(210,240)" to="(210,300)"/>
<wire from="(530,160)" to="(540,160)"/>
<wire from="(210,360)" to="(250,360)"/>
<wire from="(90,80)" to="(530,80)"/>
<wire from="(40,520)" to="(70,520)"/>
<wire from="(140,520)" to="(140,530)"/>
<wire from="(310,320)" to="(540,320)"/>
<wire from="(320,620)" to="(320,660)"/>
<wire from="(90,520)" to="(130,520)"/>
<wire from="(90,90)" to="(520,90)"/>
<wire from="(460,150)" to="(460,640)"/>
<wire from="(90,100)" to="(510,100)"/>
<wire from="(610,150)" to="(760,150)"/>
<comp lib="1" loc="(310,260)" name="XOR Gate">
<a name="inputs" val="2"/>
</comp>
<comp lib="6" loc="(938,151)" name="Text">
<a name="text" val="Result x: Negatives are in 2's complement"/>
</comp>
<comp lib="1" loc="(310,320)" name="XOR Gate">
<a name="inputs" val="2"/>
</comp>
<comp lib="1" loc="(310,200)" name="XOR Gate">
<a name="inputs" val="2"/>
</comp>
<comp lib="6" loc="(439,32)" name="Text">
<a name="text" val="8 Bit Adder/Subtractor"/>
<a name="font" val="SansSerif bold 18"/>
</comp>
<comp lib="7" loc="(550,240)" name="fullAdder"/>
<comp lib="7" loc="(550,170)" name="fullAdder"/>
<comp lib="1" loc="(310,620)" name="XOR Gate">
<a name="inputs" val="2"/>
</comp>
<comp lib="0" loc="(830,170)" name="Pin">
<a name="facing" val="west"/>
<a name="output" val="true"/>
<a name="width" val="8"/>
<a name="labelloc" val="east"/>
</comp>
<comp lib="6" loc="(40,22)" name="Text">
<a name="text" val="input a"/>
</comp>
<comp lib="7" loc="(550,650)" name="fullAdder"/>
<comp lib="0" loc="(210,50)" name="Pin">
<a name="facing" val="south"/>
<a name="tristate" val="false"/>
</comp>
<comp lib="6" loc="(212,23)" name="Text">
<a name="text" val="+- Control"/>
</comp>
<comp lib="0" loc="(70,520)" name="Splitter">
<a name="fanout" val="8"/>
<a name="incoming" val="8"/>
<a name="appear" val="center"/>
</comp>
<comp lib="1" loc="(310,560)" name="XOR Gate">
<a name="inputs" val="2"/>
</comp>
<comp lib="7" loc="(550,440)" name="fullAdder"/>
<comp lib="1" loc="(310,380)" name="XOR Gate">
<a name="inputs" val="2"/>
</comp>
<comp lib="7" loc="(550,510)" name="fullAdder"/>
<comp lib="0" loc="(70,120)" name="Splitter">
<a name="fanout" val="8"/>
<a name="incoming" val="8"/>
<a name="appear" val="center"/>
</comp>
<comp lib="1" loc="(310,500)" name="XOR Gate">
<a name="inputs" val="2"/>
</comp>
<comp lib="7" loc="(550,310)" name="fullAdder"/>
<comp lib="0" loc="(780,170)" name="Splitter">
<a name="facing" val="west"/>
<a name="fanout" val="8"/>
<a name="incoming" val="8"/>
<a name="appear" val="center"/>
</comp>
<comp lib="7" loc="(550,380)" name="fullAdder"/>
<comp lib="6" loc="(40,646)" name="Text">
<a name="text" val="input b"/>
</comp>
<comp lib="1" loc="(310,440)" name="XOR Gate">
<a name="inputs" val="2"/>
</comp>
<comp lib="0" loc="(40,610)" name="Pin">
<a name="facing" val="north"/>
<a name="width" val="8"/>
<a name="tristate" val="false"/>
</comp>
<comp lib="7" loc="(550,580)" name="fullAdder"/>
<comp lib="0" loc="(40,50)" name="Pin">
<a name="facing" val="south"/>
<a name="width" val="8"/>
<a name="tristate" val="false"/>
</comp>
</circuit>
</project>