logisim-stuff/CombinedRAM2.circ
2015-01-04 15:24:53 -06:00

556 lines
20 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="appear" val="right"/>
</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="width" val="16"/>
<a name="label" val="INB"/>
</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="NAND Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</tool>
<tool name="NOR 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="2"/>
<a name="disabled" val="0"/>
<a name="enable" val="false"/>
</tool>
</lib>
<lib desc="#Arithmetic" name="3"/>
<lib desc="#Memory" name="4">
<tool name="Register">
<a name="width" 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=""/>
<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="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"/>
<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="LOADA"/>
<a name="labelloc" val="east"/>
</tool>
<tool lib="1" name="NOT Gate"/>
<tool lib="1" name="AND Gate">
<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="(180,460)" to="(490,460)"/>
<wire from="(570,180)" to="(570,260)"/>
<wire from="(660,150)" to="(660,220)"/>
<wire from="(510,150)" to="(510,230)"/>
<wire from="(180,440)" to="(200,440)"/>
<wire from="(1060,390)" to="(1060,500)"/>
<wire from="(80,270)" to="(80,280)"/>
<wire from="(990,340)" to="(1010,340)"/>
<wire from="(990,290)" to="(1000,290)"/>
<wire from="(120,400)" to="(140,400)"/>
<wire from="(120,450)" to="(150,450)"/>
<wire from="(440,240)" to="(600,240)"/>
<wire from="(190,220)" to="(270,220)"/>
<wire from="(990,240)" to="(990,290)"/>
<wire from="(570,180)" to="(610,180)"/>
<wire from="(850,260)" to="(850,440)"/>
<wire from="(140,400)" to="(140,440)"/>
<wire from="(960,190)" to="(960,390)"/>
<wire from="(610,170)" to="(610,180)"/>
<wire from="(420,150)" to="(510,150)"/>
<wire from="(100,280)" to="(120,280)"/>
<wire from="(990,240)" to="(1060,240)"/>
<wire from="(360,310)" to="(360,320)"/>
<wire from="(90,250)" to="(90,270)"/>
<wire from="(420,90)" to="(420,150)"/>
<wire from="(180,450)" to="(440,450)"/>
<wire from="(440,240)" to="(440,450)"/>
<wire from="(250,240)" to="(250,500)"/>
<wire from="(570,260)" to="(570,290)"/>
<wire from="(200,360)" to="(200,440)"/>
<wire from="(250,240)" to="(270,240)"/>
<wire from="(660,150)" to="(690,150)"/>
<wire from="(250,500)" to="(1060,500)"/>
<wire from="(800,90)" to="(800,200)"/>
<wire from="(870,230)" to="(910,230)"/>
<wire from="(140,440)" to="(150,440)"/>
<wire from="(110,230)" to="(160,230)"/>
<wire from="(170,240)" to="(170,310)"/>
<wire from="(200,440)" to="(850,440)"/>
<wire from="(920,210)" to="(920,400)"/>
<wire from="(200,310)" to="(200,330)"/>
<wire from="(300,320)" to="(360,320)"/>
<wire from="(510,150)" to="(600,150)"/>
<wire from="(570,260)" to="(610,260)"/>
<wire from="(630,230)" to="(840,230)"/>
<wire from="(90,400)" to="(120,400)"/>
<wire from="(870,210)" to="(920,210)"/>
<wire from="(870,190)" to="(960,190)"/>
<wire from="(910,230)" to="(910,320)"/>
<wire from="(1030,390)" to="(1060,390)"/>
<wire from="(870,250)" to="(970,250)"/>
<wire from="(920,400)" to="(1000,400)"/>
<wire from="(1010,310)" to="(1010,340)"/>
<wire from="(610,250)" to="(610,260)"/>
<wire from="(300,260)" to="(300,320)"/>
<wire from="(50,310)" to="(170,310)"/>
<wire from="(50,240)" to="(80,240)"/>
<wire from="(490,160)" to="(490,460)"/>
<wire from="(1030,290)" to="(1090,290)"/>
<wire from="(360,320)" to="(910,320)"/>
<wire from="(410,220)" to="(420,220)"/>
<wire from="(170,310)" to="(200,310)"/>
<wire from="(980,450)" to="(1010,450)"/>
<wire from="(100,250)" to="(100,280)"/>
<wire from="(970,250)" to="(970,300)"/>
<wire from="(490,160)" to="(600,160)"/>
<wire from="(340,260)" to="(340,270)"/>
<wire from="(1090,70)" to="(1090,290)"/>
<wire from="(50,240)" to="(50,310)"/>
<wire from="(120,280)" to="(120,400)"/>
<wire from="(140,210)" to="(160,210)"/>
<wire from="(420,90)" to="(800,90)"/>
<wire from="(970,300)" to="(1000,300)"/>
<wire from="(420,150)" to="(420,220)"/>
<wire from="(660,220)" to="(840,220)"/>
<wire from="(360,260)" to="(360,280)"/>
<wire from="(80,270)" to="(90,270)"/>
<wire from="(510,230)" to="(600,230)"/>
<wire from="(960,390)" to="(1000,390)"/>
<wire from="(140,70)" to="(140,210)"/>
<wire from="(140,70)" to="(1090,70)"/>
<wire from="(1060,240)" to="(1060,390)"/>
<wire from="(630,150)" to="(660,150)"/>
<wire from="(800,200)" to="(840,200)"/>
<wire from="(1010,410)" to="(1010,450)"/>
<comp lib="6" loc="(511,368)" name="Text">
<a name="text" val="Load A"/>
</comp>
<comp lib="4" loc="(1030,290)" name="Register">
<a name="width" val="16"/>
<a name="label" val="P"/>
</comp>
<comp lib="6" loc="(401,648)" name="Text">
<a name="text" val="0x0002: Set Pointer (P)"/>
</comp>
<comp lib="0" loc="(990,340)" name="Clock"/>
<comp lib="0" loc="(340,270)" name="Clock">
<a name="facing" val="north"/>
</comp>
<comp lib="4" loc="(630,230)" name="Register">
<a name="width" val="16"/>
<a name="label" val="Instruction B"/>
</comp>
<comp lib="6" loc="(419,398)" name="Text">
<a name="text" val="Load B"/>
</comp>
<comp lib="0" loc="(120,450)" name="Tunnel">
<a name="facing" val="east"/>
<a name="width" val="16"/>
<a name="label" val="INA"/>
</comp>
<comp lib="6" loc="(465,572)" name="Text">
<a name="text" val="0x80000000 to 0x8000FFFF: Immediate Load A"/>
</comp>
<comp lib="6" loc="(380,596)" name="Text">
<a name="text" val="0x0000: Load A"/>
</comp>
<comp lib="0" loc="(80,280)" name="Clock">
<a name="facing" val="north"/>
</comp>
<comp lib="4" loc="(1030,390)" name="Register">
<a name="width" val="16"/>
<a name="label" val="A"/>
</comp>
<comp lib="2" loc="(190,220)" name="Multiplexer">
<a name="width" val="16"/>
<a name="disabled" val="0"/>
<a name="enable" val="false"/>
</comp>
<comp lib="4" loc="(110,230)" name="Counter">
<a name="width" val="16"/>
<a name="max" val="0xffff"/>
</comp>
<comp lib="6" loc="(372,552)" name="Text">
<a name="text" val="Instructions:"/>
</comp>
<comp lib="6" loc="(706,434)" name="Text">
<a name="text" val="Execute"/>
</comp>
<comp lib="4" loc="(630,150)" name="Register">
<a name="width" val="16"/>
<a name="label" val="Instruction A"/>
</comp>
<comp lib="4" loc="(410,220)" name="RAM">
<a name="addrWidth" val="16"/>
<a name="dataWidth" val="16"/>
<a name="bus" val="separate"/>
</comp>
<comp lib="0" loc="(980,450)" name="Clock"/>
<comp lib="1" loc="(360,280)" name="NOT Gate">
<a name="facing" val="north"/>
</comp>
<comp lib="0" loc="(690,150)" name="Tunnel">
<a name="width" val="16"/>
<a name="label" val="INA"/>
</comp>
<comp lib="1" loc="(200,330)" name="NOT Gate">
<a name="facing" val="north"/>
</comp>
<comp lib="6" loc="(395,621)" name="Text">
<a name="text" val="0x0001: Store to RAM"/>
</comp>
<comp lib="0" loc="(90,400)" name="Pin">
<a name="tristate" val="false"/>
<a name="label" val="RESET"/>
</comp>
<comp loc="(180,440)" name="Phase Control">
<a name="label" val="Phase Control"/>
<a name="labelloc" val="south"/>
</comp>
<comp loc="(870,190)" name="Ins Decoder">
<a name="label" val="Decoder"/>
</comp>
<comp lib="0" loc="(570,290)" name="Clock">
<a name="facing" val="north"/>
</comp>
</circuit>
<circuit name="Ins Decoder">
<a name="circuit" val="Ins Decoder"/>
<a name="clabel" val=""/>
<a name="clabelup" val="east"/>
<a name="clabelfont" val="SansSerif plain 12"/>
<appear>
<rect fill="none" height="89" stroke="#000000" stroke-width="2" width="30" x="50" y="41"/>
<circ-port height="8" pin="170,120" width="8" x="46" y="66"/>
<circ-port height="8" pin="160,420" width="8" x="46" y="86"/>
<circ-port height="10" pin="690,130" width="10" x="75" y="55"/>
<circ-port height="10" pin="770,260" width="10" x="75" y="75"/>
<circ-port height="10" pin="720,460" width="10" x="75" y="95"/>
<circ-port height="10" pin="720,560" width="10" x="75" y="115"/>
<circ-port height="8" pin="630,640" width="8" x="56" y="126"/>
<circ-port height="8" pin="170,200" width="8" x="46" y="96"/>
<circ-anchor facing="east" height="6" width="6" x="77" y="57"/>
</appear>
<wire from="(230,270)" to="(280,270)"/>
<wire from="(690,560)" to="(720,560)"/>
<wire from="(350,240)" to="(350,410)"/>
<wire from="(160,420)" to="(210,420)"/>
<wire from="(420,130)" to="(690,130)"/>
<wire from="(630,470)" to="(660,470)"/>
<wire from="(410,480)" to="(570,480)"/>
<wire from="(240,140)" to="(390,140)"/>
<wire from="(300,280)" to="(300,520)"/>
<wire from="(570,550)" to="(660,550)"/>
<wire from="(630,270)" to="(660,270)"/>
<wire from="(400,240)" to="(510,240)"/>
<wire from="(460,450)" to="(460,470)"/>
<wire from="(440,260)" to="(440,460)"/>
<wire from="(540,250)" to="(660,250)"/>
<wire from="(240,140)" to="(240,200)"/>
<wire from="(230,410)" to="(350,410)"/>
<wire from="(690,260)" to="(770,260)"/>
<wire from="(410,470)" to="(460,470)"/>
<wire from="(630,570)" to="(660,570)"/>
<wire from="(300,520)" to="(390,520)"/>
<wire from="(390,500)" to="(390,520)"/>
<wire from="(570,480)" to="(570,550)"/>
<wire from="(230,260)" to="(280,260)"/>
<wire from="(460,450)" to="(660,450)"/>
<wire from="(400,150)" to="(400,240)"/>
<wire from="(440,260)" to="(510,260)"/>
<wire from="(690,460)" to="(720,460)"/>
<wire from="(630,270)" to="(630,470)"/>
<wire from="(170,120)" to="(390,120)"/>
<wire from="(350,240)" to="(400,240)"/>
<wire from="(170,200)" to="(240,200)"/>
<wire from="(630,570)" to="(630,640)"/>
<wire from="(410,460)" to="(440,460)"/>
<wire from="(630,470)" to="(630,570)"/>
<comp lib="0" loc="(720,460)" name="Pin">
<a name="facing" val="west"/>
<a name="output" val="true"/>
<a name="label" val="RAM Store"/>
<a name="labelloc" val="east"/>
</comp>
<comp lib="1" loc="(690,560)" name="AND Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
<comp lib="0" loc="(170,120)" name="Pin">
<a name="width" val="16"/>
<a name="tristate" val="false"/>
<a name="label" val="Data In"/>
</comp>
<comp lib="0" loc="(170,200)" name="Pin">
<a name="width" val="16"/>
<a name="tristate" val="false"/>
<a name="label" val="Instruction B"/>
</comp>
<comp lib="2" loc="(420,130)" name="Multiplexer">
<a name="width" val="16"/>
<a name="disabled" val="0"/>
<a name="enable" val="false"/>
</comp>
<comp lib="0" loc="(210,420)" name="Splitter">
<a name="fanout" val="16"/>
<a name="incoming" val="16"/>
</comp>
<comp lib="0" loc="(770,260)" name="Pin">
<a name="facing" val="west"/>
<a name="output" val="true"/>
<a name="label" val="Load A"/>
<a name="labelloc" val="east"/>
</comp>
<comp lib="1" loc="(540,250)" name="OR Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
<comp lib="0" loc="(630,640)" name="Pin">
<a name="facing" val="north"/>
<a name="tristate" val="false"/>
<a name="label" val="Execute"/>
</comp>
<comp lib="0" loc="(160,420)" name="Pin">
<a name="width" val="16"/>
<a name="tristate" val="false"/>
<a name="label" val="Instruction A"/>
</comp>
<comp lib="0" loc="(720,560)" name="Pin">
<a name="facing" val="west"/>
<a name="output" val="true"/>
<a name="label" val="Load P"/>
<a name="labelloc" val="east"/>
</comp>
<comp lib="0" loc="(690,130)" name="Pin">
<a name="facing" val="west"/>
<a name="output" val="true"/>
<a name="width" val="16"/>
<a name="label" val="Data Out"/>
<a name="labelloc" val="east"/>
</comp>
<comp lib="1" loc="(690,260)" name="AND Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
<comp lib="2" loc="(390,500)" name="Decoder">
<a name="select" val="2"/>
<a name="disabled" val="0"/>
<a name="enable" val="false"/>
</comp>
<comp lib="0" loc="(300,280)" name="Splitter">
<a name="facing" val="west"/>
<a name="appear" val="right"/>
</comp>
<comp lib="1" loc="(690,460)" name="AND Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
</circuit>
<circuit name="Phase Control">
<a name="circuit" val="Phase Control"/>
<a name="clabel" val=""/>
<a name="clabelup" val="east"/>
<a name="clabelfont" val="SansSerif plain 12"/>
<wire from="(570,340)" to="(810,340)"/>
<wire from="(560,550)" to="(680,550)"/>
<wire from="(560,620)" to="(590,620)"/>
<wire from="(650,460)" to="(650,530)"/>
<wire from="(570,340)" to="(570,450)"/>
<wire from="(310,240)" to="(370,240)"/>
<wire from="(350,220)" to="(370,220)"/>
<wire from="(650,530)" to="(650,600)"/>
<wire from="(560,550)" to="(560,620)"/>
<wire from="(400,370)" to="(400,390)"/>
<wire from="(620,620)" to="(680,620)"/>
<wire from="(540,470)" to="(590,470)"/>
<wire from="(490,290)" to="(490,430)"/>
<wire from="(650,600)" to="(680,600)"/>
<wire from="(260,250)" to="(280,250)"/>
<wire from="(240,230)" to="(280,230)"/>
<wire from="(260,550)" to="(260,600)"/>
<wire from="(310,360)" to="(370,360)"/>
<wire from="(340,270)" to="(340,390)"/>
<wire from="(710,610)" to="(720,610)"/>
<wire from="(350,340)" to="(370,340)"/>
<wire from="(260,250)" to="(260,290)"/>
<wire from="(630,460)" to="(650,460)"/>
<wire from="(170,440)" to="(340,440)"/>
<wire from="(340,270)" to="(400,270)"/>
<wire from="(210,620)" to="(250,620)"/>
<wire from="(450,340)" to="(570,340)"/>
<wire from="(540,220)" to="(810,220)"/>
<wire from="(570,450)" to="(590,450)"/>
<wire from="(340,390)" to="(340,440)"/>
<wire from="(540,220)" to="(540,470)"/>
<wire from="(350,340)" to="(350,500)"/>
<wire from="(390,370)" to="(390,430)"/>
<wire from="(490,220)" to="(540,220)"/>
<wire from="(260,550)" to="(560,550)"/>
<wire from="(450,290)" to="(450,340)"/>
<wire from="(410,340)" to="(450,340)"/>
<wire from="(650,460)" to="(810,460)"/>
<wire from="(710,540)" to="(720,540)"/>
<wire from="(340,390)" to="(400,390)"/>
<wire from="(350,220)" to="(350,340)"/>
<wire from="(650,530)" to="(680,530)"/>
<wire from="(390,430)" to="(490,430)"/>
<wire from="(340,500)" to="(350,500)"/>
<wire from="(490,220)" to="(490,260)"/>
<wire from="(260,290)" to="(450,290)"/>
<wire from="(410,220)" to="(490,220)"/>
<wire from="(400,250)" to="(400,270)"/>
<comp lib="1" loc="(620,620)" name="NOT Gate"/>
<comp lib="1" loc="(310,240)" name="OR Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
<comp lib="4" loc="(410,220)" name="D Flip-Flop">
<a name="trigger" val="falling"/>
</comp>
<comp lib="0" loc="(250,620)" name="Splitter">
<a name="facing" val="north"/>
<a name="fanout" val="16"/>
<a name="incoming" val="16"/>
<a name="appear" val="right"/>
</comp>
<comp lib="1" loc="(630,460)" name="NOR Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
<comp lib="1" loc="(710,610)" name="AND Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
<comp lib="0" loc="(210,620)" name="Pin">
<a name="width" val="16"/>
<a name="tristate" val="false"/>
<a name="label" val="Data In"/>
</comp>
<comp lib="0" loc="(720,610)" name="Tunnel">
<a name="label" val="SHORT"/>
</comp>
<comp lib="0" loc="(720,540)" name="Tunnel">
<a name="label" val="LONG"/>
</comp>
<comp lib="0" loc="(810,220)" name="Pin">
<a name="facing" val="west"/>
<a name="output" val="true"/>
<a name="label" val="EXECUTE"/>
<a name="labelloc" val="east"/>
</comp>
<comp lib="0" loc="(170,440)" name="Pin">
<a name="tristate" val="false"/>
<a name="label" val="RESET"/>
</comp>
<comp lib="0" loc="(240,230)" name="Tunnel">
<a name="facing" val="east"/>
<a name="label" val="SHORT"/>
</comp>
<comp lib="4" loc="(410,340)" name="D Flip-Flop">
<a name="trigger" val="falling"/>
</comp>
<comp lib="0" loc="(810,340)" name="Pin">
<a name="facing" val="west"/>
<a name="output" val="true"/>
<a name="label" val="LOADB"/>
<a name="labelloc" val="east"/>
</comp>
<comp lib="0" loc="(340,500)" name="Clock"/>
<comp lib="0" loc="(810,460)" name="Pin">
<a name="facing" val="west"/>
<a name="output" val="true"/>
<a name="label" val="LOADA"/>
<a name="labelloc" val="east"/>
</comp>
<comp lib="1" loc="(710,540)" name="AND Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
<comp lib="0" loc="(310,360)" name="Tunnel">
<a name="facing" val="east"/>
<a name="label" val="LONG"/>
</comp>
<comp lib="1" loc="(490,290)" name="NOT Gate">
<a name="facing" val="south"/>
</comp>
</circuit>
</project>