logisim-stuff/cpu/cpu.circ
2016-02-04 14:45:12 -06:00

505 lines
18 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="radix" val="16"/>
<a name="label" val="out"/>
<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="Constant">
<a name="facing" val="north"/>
<a name="value" val="0x0"/>
</tool>
</lib>
<lib desc="#Gates" name="1"/>
<lib desc="#Plexers" name="2">
<tool name="Multiplexer">
<a name="facing" val="west"/>
</tool>
</lib>
<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>
<main name="main"/>
<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="Button3" name="Menu Tool"/>
<tool lib="6" map="Ctrl Button1" 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="width" val="4"/>
<a name="tristate" val="false"/>
<a name="label" val="in"/>
</tool>
<tool lib="0" name="Pin">
<a name="facing" val="west"/>
<a name="output" val="true"/>
<a name="label" val="zero"/>
<a name="labelloc" val="east"/>
</tool>
<tool lib="1" name="NOT Gate"/>
<tool lib="1" name="AND Gate">
<a name="facing" val="north"/>
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</tool>
<tool lib="1" name="OR Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</tool>
</toolbar>
<circuit name="main">
<a name="circuit" val="main"/>
<a name="clabel" val=""/>
<a name="clabelup" val="east"/>
<a name="clabelfont" val="SansSerif plain 12"/>
<wire from="(130,330)" to="(130,650)"/>
<wire from="(920,240)" to="(930,240)"/>
<wire from="(520,470)" to="(550,470)"/>
<wire from="(170,140)" to="(490,140)"/>
<wire from="(1020,220)" to="(1030,220)"/>
<wire from="(830,230)" to="(830,300)"/>
<wire from="(830,230)" to="(860,230)"/>
<wire from="(450,610)" to="(480,610)"/>
<wire from="(430,480)" to="(430,650)"/>
<wire from="(1060,240)" to="(1060,310)"/>
<wire from="(920,180)" to="(930,180)"/>
<wire from="(530,170)" to="(530,190)"/>
<wire from="(530,570)" to="(670,570)"/>
<wire from="(790,430)" to="(880,430)"/>
<wire from="(540,580)" to="(540,620)"/>
<wire from="(530,410)" to="(550,410)"/>
<wire from="(510,650)" to="(550,650)"/>
<wire from="(550,600)" to="(550,650)"/>
<wire from="(820,360)" to="(820,400)"/>
<wire from="(160,290)" to="(210,290)"/>
<wire from="(950,210)" to="(950,220)"/>
<wire from="(240,250)" to="(240,330)"/>
<wire from="(160,270)" to="(160,290)"/>
<wire from="(570,240)" to="(590,240)"/>
<wire from="(890,180)" to="(920,180)"/>
<wire from="(620,240)" to="(630,240)"/>
<wire from="(580,500)" to="(790,500)"/>
<wire from="(310,320)" to="(310,540)"/>
<wire from="(580,370)" to="(620,370)"/>
<wire from="(610,300)" to="(670,300)"/>
<wire from="(770,220)" to="(770,230)"/>
<wire from="(900,200)" to="(930,200)"/>
<wire from="(800,450)" to="(900,450)"/>
<wire from="(150,160)" to="(150,180)"/>
<wire from="(760,580)" to="(760,690)"/>
<wire from="(520,550)" to="(670,550)"/>
<wire from="(400,230)" to="(400,240)"/>
<wire from="(310,540)" to="(340,540)"/>
<wire from="(340,520)" to="(340,540)"/>
<wire from="(210,210)" to="(230,210)"/>
<wire from="(460,600)" to="(470,600)"/>
<wire from="(890,180)" to="(890,200)"/>
<wire from="(470,570)" to="(470,600)"/>
<wire from="(210,310)" to="(220,310)"/>
<wire from="(700,210)" to="(760,210)"/>
<wire from="(820,240)" to="(820,310)"/>
<wire from="(510,490)" to="(550,490)"/>
<wire from="(150,180)" to="(190,180)"/>
<wire from="(980,230)" to="(980,250)"/>
<wire from="(780,340)" to="(1000,340)"/>
<wire from="(470,630)" to="(470,660)"/>
<wire from="(390,240)" to="(400,240)"/>
<wire from="(700,580)" to="(700,590)"/>
<wire from="(850,470)" to="(1090,470)"/>
<wire from="(500,410)" to="(500,510)"/>
<wire from="(820,240)" to="(870,240)"/>
<wire from="(500,210)" to="(540,210)"/>
<wire from="(220,190)" to="(310,190)"/>
<wire from="(790,330)" to="(1030,330)"/>
<wire from="(900,200)" to="(900,260)"/>
<wire from="(860,220)" to="(860,230)"/>
<wire from="(810,200)" to="(850,200)"/>
<wire from="(900,440)" to="(900,450)"/>
<wire from="(890,440)" to="(890,460)"/>
<wire from="(970,190)" to="(980,190)"/>
<wire from="(800,270)" to="(800,280)"/>
<wire from="(510,590)" to="(530,590)"/>
<wire from="(580,420)" to="(630,420)"/>
<wire from="(380,260)" to="(610,260)"/>
<wire from="(900,380)" to="(900,390)"/>
<wire from="(970,250)" to="(980,250)"/>
<wire from="(470,670)" to="(950,670)"/>
<wire from="(980,190)" to="(980,210)"/>
<wire from="(340,230)" to="(340,240)"/>
<wire from="(910,370)" to="(930,370)"/>
<wire from="(250,160)" to="(250,690)"/>
<wire from="(500,520)" to="(780,520)"/>
<wire from="(1030,230)" to="(1030,330)"/>
<wire from="(820,310)" to="(870,310)"/>
<wire from="(680,190)" to="(760,190)"/>
<wire from="(860,290)" to="(860,300)"/>
<wire from="(130,330)" to="(240,330)"/>
<wire from="(900,260)" to="(930,260)"/>
<wire from="(850,410)" to="(850,470)"/>
<wire from="(200,260)" to="(380,260)"/>
<wire from="(540,380)" to="(550,380)"/>
<wire from="(930,320)" to="(930,370)"/>
<wire from="(220,310)" to="(800,310)"/>
<wire from="(950,270)" to="(950,320)"/>
<wire from="(670,300)" to="(830,300)"/>
<wire from="(360,380)" to="(540,380)"/>
<wire from="(630,270)" to="(630,420)"/>
<wire from="(870,220)" to="(870,240)"/>
<wire from="(650,260)" to="(650,460)"/>
<wire from="(900,390)" to="(1000,390)"/>
<wire from="(880,200)" to="(890,200)"/>
<wire from="(980,210)" to="(990,210)"/>
<wire from="(150,180)" to="(150,200)"/>
<wire from="(670,300)" to="(670,460)"/>
<wire from="(180,200)" to="(190,200)"/>
<wire from="(510,560)" to="(520,560)"/>
<wire from="(520,430)" to="(520,470)"/>
<wire from="(1000,340)" to="(1000,390)"/>
<wire from="(480,430)" to="(480,540)"/>
<wire from="(1000,240)" to="(1000,340)"/>
<wire from="(360,430)" to="(480,430)"/>
<wire from="(950,410)" to="(950,670)"/>
<wire from="(490,140)" to="(490,170)"/>
<wire from="(470,180)" to="(470,320)"/>
<wire from="(490,420)" to="(490,530)"/>
<wire from="(200,210)" to="(200,260)"/>
<wire from="(360,440)" to="(470,440)"/>
<wire from="(700,140)" to="(700,210)"/>
<wire from="(360,450)" to="(460,450)"/>
<wire from="(800,280)" to="(850,280)"/>
<wire from="(360,460)" to="(450,460)"/>
<wire from="(720,590)" to="(730,590)"/>
<wire from="(1080,120)" to="(1080,220)"/>
<wire from="(870,290)" to="(870,310)"/>
<wire from="(450,460)" to="(450,610)"/>
<wire from="(590,240)" to="(590,530)"/>
<wire from="(800,310)" to="(800,450)"/>
<wire from="(360,470)" to="(440,470)"/>
<wire from="(520,550)" to="(520,560)"/>
<wire from="(220,240)" to="(220,310)"/>
<wire from="(960,400)" to="(960,680)"/>
<wire from="(610,230)" to="(610,260)"/>
<wire from="(800,210)" to="(850,210)"/>
<wire from="(800,310)" to="(820,310)"/>
<wire from="(360,480)" to="(430,480)"/>
<wire from="(460,600)" to="(460,680)"/>
<wire from="(470,440)" to="(470,550)"/>
<wire from="(830,300)" to="(860,300)"/>
<wire from="(360,360)" to="(550,360)"/>
<wire from="(980,230)" to="(990,230)"/>
<wire from="(860,300)" to="(1050,300)"/>
<wire from="(620,250)" to="(800,250)"/>
<wire from="(130,280)" to="(130,330)"/>
<wire from="(790,200)" to="(810,200)"/>
<wire from="(470,630)" to="(480,630)"/>
<wire from="(170,190)" to="(190,190)"/>
<wire from="(170,140)" to="(170,190)"/>
<wire from="(470,570)" to="(480,570)"/>
<wire from="(900,260)" to="(900,270)"/>
<wire from="(1030,220)" to="(1040,220)"/>
<wire from="(520,430)" to="(550,430)"/>
<wire from="(930,320)" to="(950,320)"/>
<wire from="(700,560)" to="(730,560)"/>
<wire from="(360,390)" to="(520,390)"/>
<wire from="(500,120)" to="(1080,120)"/>
<wire from="(580,460)" to="(650,460)"/>
<wire from="(340,240)" to="(360,240)"/>
<wire from="(360,400)" to="(510,400)"/>
<wire from="(380,230)" to="(380,260)"/>
<wire from="(780,340)" to="(780,520)"/>
<wire from="(790,430)" to="(790,500)"/>
<wire from="(510,620)" to="(540,620)"/>
<wire from="(920,180)" to="(920,240)"/>
<wire from="(910,220)" to="(910,350)"/>
<wire from="(360,410)" to="(500,410)"/>
<wire from="(1090,170)" to="(1090,470)"/>
<wire from="(880,270)" to="(900,270)"/>
<wire from="(540,580)" to="(670,580)"/>
<wire from="(360,420)" to="(490,420)"/>
<wire from="(1060,170)" to="(1090,170)"/>
<wire from="(130,650)" to="(430,650)"/>
<wire from="(520,390)" to="(520,430)"/>
<wire from="(930,410)" to="(950,410)"/>
<wire from="(490,530)" to="(590,530)"/>
<wire from="(630,270)" to="(800,270)"/>
<wire from="(700,580)" to="(730,580)"/>
<wire from="(500,510)" to="(500,520)"/>
<wire from="(530,370)" to="(530,410)"/>
<wire from="(460,580)" to="(480,580)"/>
<wire from="(610,260)" to="(610,300)"/>
<wire from="(440,470)" to="(440,640)"/>
<wire from="(930,400)" to="(960,400)"/>
<wire from="(620,250)" to="(620,370)"/>
<wire from="(1070,220)" to="(1080,220)"/>
<wire from="(440,640)" to="(480,640)"/>
<wire from="(470,660)" to="(470,670)"/>
<wire from="(870,310)" to="(1060,310)"/>
<wire from="(460,450)" to="(460,580)"/>
<wire from="(510,400)" to="(510,490)"/>
<wire from="(490,140)" to="(700,140)"/>
<wire from="(210,290)" to="(210,310)"/>
<wire from="(570,230)" to="(570,240)"/>
<wire from="(800,210)" to="(800,250)"/>
<wire from="(470,550)" to="(480,550)"/>
<wire from="(630,230)" to="(630,240)"/>
<wire from="(810,200)" to="(810,270)"/>
<wire from="(540,380)" to="(540,450)"/>
<wire from="(700,230)" to="(770,230)"/>
<wire from="(670,460)" to="(890,460)"/>
<wire from="(360,370)" to="(530,370)"/>
<wire from="(470,170)" to="(490,170)"/>
<wire from="(700,230)" to="(700,260)"/>
<wire from="(720,540)" to="(720,590)"/>
<wire from="(1050,240)" to="(1050,300)"/>
<wire from="(530,570)" to="(530,590)"/>
<wire from="(1030,170)" to="(1030,220)"/>
<wire from="(810,270)" to="(850,270)"/>
<wire from="(820,400)" to="(860,400)"/>
<wire from="(550,600)" to="(670,600)"/>
<wire from="(490,170)" to="(530,170)"/>
<wire from="(460,680)" to="(960,680)"/>
<wire from="(820,360)" to="(880,360)"/>
<wire from="(150,160)" to="(250,160)"/>
<wire from="(530,190)" to="(540,190)"/>
<wire from="(500,120)" to="(500,210)"/>
<wire from="(850,410)" to="(860,410)"/>
<wire from="(540,450)" to="(550,450)"/>
<wire from="(480,540)" to="(720,540)"/>
<wire from="(500,510)" to="(550,510)"/>
<wire from="(910,220)" to="(950,220)"/>
<wire from="(250,690)" to="(760,690)"/>
<wire from="(650,260)" to="(700,260)"/>
<wire from="(310,320)" to="(470,320)"/>
<wire from="(1030,230)" to="(1040,230)"/>
<wire from="(790,330)" to="(790,430)"/>
<wire from="(730,560)" to="(730,570)"/>
<comp lib="0" loc="(880,420)" name="Splitter">
<a name="facing" val="west"/>
<a name="appear" val="right"/>
</comp>
<comp lib="1" loc="(760,580)" name="OR Gate">
<a name="size" val="30"/>
<a name="inputs" val="3"/>
</comp>
<comp lib="4" loc="(220,190)" name="Counter">
<a name="width" val="4"/>
<a name="max" val="0xf"/>
</comp>
<comp lib="0" loc="(450,190)" name="Splitter">
<a name="incoming" val="8"/>
<a name="bit1" val="0"/>
<a name="bit2" val="0"/>
<a name="bit3" val="0"/>
<a name="bit4" val="1"/>
<a name="bit5" val="1"/>
<a name="bit6" val="1"/>
<a name="bit7" val="1"/>
</comp>
<comp lib="2" loc="(790,200)" name="Multiplexer">
<a name="width" val="4"/>
<a name="disabled" val="0"/>
<a name="enable" val="false"/>
</comp>
<comp lib="1" loc="(230,210)" name="AND Gate">
<a name="facing" val="north"/>
<a name="size" val="30"/>
<a name="inputs" val="2"/>
<a name="negate1" val="true"/>
</comp>
<comp lib="4" loc="(450,190)" name="RAM">
<a name="addrWidth" val="4"/>
<a name="bus" val="separate"/>
</comp>
<comp lib="2" loc="(340,520)" name="Decoder">
<a name="select" val="4"/>
<a name="disabled" val="0"/>
<a name="enable" val="false"/>
</comp>
<comp lib="1" loc="(700,590)" name="OR Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
<comp lib="1" loc="(160,270)" name="OR Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
<comp lib="1" loc="(700,560)" name="OR Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
<comp lib="4" loc="(880,200)" name="Register">
<a name="width" val="4"/>
</comp>
<comp loc="(1060,170)" name="zero?"/>
<comp lib="1" loc="(580,460)" name="OR Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
<comp lib="0" loc="(910,420)" name="Splitter"/>
<comp lib="4" loc="(910,420)" name="Register">
<a name="width" val="2"/>
</comp>
<comp lib="4" loc="(1070,220)" name="Register">
<a name="width" val="4"/>
</comp>
<comp lib="1" loc="(580,500)" name="OR Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
<comp lib="1" loc="(510,590)" name="AND Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
<a name="negate1" val="true"/>
</comp>
<comp lib="2" loc="(1020,220)" name="Multiplexer">
<a name="width" val="4"/>
<a name="disabled" val="0"/>
<a name="enable" val="false"/>
</comp>
<comp lib="1" loc="(580,420)" name="OR Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
<comp lib="3" loc="(970,190)" name="Adder">
<a name="width" val="4"/>
</comp>
<comp lib="1" loc="(390,240)" name="NOT Gate"/>
<comp lib="1" loc="(510,620)" name="AND Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
<comp lib="5" loc="(130,260)" name="Button"/>
<comp lib="4" loc="(880,270)" name="Register">
<a name="width" val="4"/>
</comp>
<comp lib="0" loc="(340,240)" name="Constant">
<a name="value" val="0x0"/>
</comp>
<comp lib="3" loc="(970,250)" name="Subtractor">
<a name="width" val="4"/>
</comp>
<comp lib="2" loc="(880,360)" name="Multiplexer">
<a name="facing" val="west"/>
<a name="disabled" val="0"/>
<a name="enable" val="false"/>
</comp>
<comp lib="1" loc="(200,260)" name="AND Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
<a name="negate1" val="true"/>
</comp>
<comp lib="0" loc="(170,250)" name="Clock"/>
<comp lib="1" loc="(510,560)" name="AND Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
<comp lib="0" loc="(310,210)" name="Constant">
<a name="width" val="8"/>
<a name="value" val="0x0"/>
</comp>
<comp lib="1" loc="(620,240)" name="NOT Gate"/>
<comp lib="1" loc="(180,200)" name="NOT Gate"/>
<comp lib="4" loc="(680,190)" name="RAM">
<a name="addrWidth" val="4"/>
<a name="dataWidth" val="4"/>
<a name="bus" val="separate"/>
</comp>
<comp lib="1" loc="(580,370)" name="OR Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
<comp lib="1" loc="(510,650)" name="AND Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
<a name="negate1" val="true"/>
</comp>
</circuit>
<circuit name="zero?">
<a name="circuit" val="zero?"/>
<a name="clabel" val="Z"/>
<a name="clabelup" val="north"/>
<a name="clabelfont" val="SansSerif plain 12"/>
<appear>
<path d="M61,62 Q65,72 69,62" fill="none" stroke="#808080" stroke-width="2"/>
<rect fill="none" height="21" stroke="#000000" stroke-width="2" width="32" x="49" y="60"/>
<circ-port height="8" pin="160,270" width="8" x="46" y="66"/>
<circ-port height="10" pin="250,250" width="10" x="75" y="65"/>
<circ-anchor facing="east" height="6" width="6" x="77" y="67"/>
</appear>
<wire from="(180,230)" to="(210,230)"/>
<wire from="(190,270)" to="(210,270)"/>
<wire from="(200,250)" to="(200,260)"/>
<wire from="(190,260)" to="(190,270)"/>
<wire from="(180,250)" to="(200,250)"/>
<wire from="(180,240)" to="(210,240)"/>
<wire from="(180,260)" to="(190,260)"/>
<wire from="(200,260)" to="(210,260)"/>
<comp lib="1" loc="(250,250)" name="NOR Gate">
<a name="size" val="30"/>
<a name="inputs" val="4"/>
</comp>
<comp lib="0" loc="(160,270)" name="Splitter">
<a name="fanout" val="4"/>
<a name="incoming" val="4"/>
</comp>
<comp lib="0" loc="(250,250)" name="Pin">
<a name="facing" val="west"/>
<a name="output" val="true"/>
<a name="label" val="zero"/>
<a name="labelloc" val="east"/>
</comp>
<comp lib="0" loc="(160,270)" name="Pin">
<a name="width" val="4"/>
<a name="tristate" val="false"/>
<a name="label" val="in"/>
</comp>
</circuit>
</project>