This commit is contained in:
pjht 2016-07-25 07:24:01 -05:00
parent fe97fa6dba
commit ac77abca38
3 changed files with 606 additions and 226 deletions

339
ME Serial V2.1.circ Normal file
View File

@ -0,0 +1,339 @@
<?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="south"/>
<a name="fanout" val="8"/>
<a name="incoming" val="8"/>
</tool>
<tool name="Pin">
<a name="tristate" val="false"/>
<a name="pull" val="down"/>
<a name="label" val="Takeover"/>
</tool>
<tool name="Probe">
<a name="radix" val="16"/>
<a name="label" val="mem out"/>
</tool>
<tool name="Tunnel">
<a name="label" val="pop"/>
</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="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"/>
<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#handy stuff.circ" name="7"/>
<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="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">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</tool>
<tool lib="1" name="OR Gate"/>
</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="(120,260)" to="(150,260)"/>
<wire from="(790,220)" to="(790,260)"/>
<wire from="(190,220)" to="(190,260)"/>
<wire from="(110,200)" to="(150,200)"/>
<wire from="(160,230)" to="(210,230)"/>
<wire from="(180,210)" to="(210,210)"/>
<wire from="(710,200)" to="(730,200)"/>
<wire from="(240,220)" to="(730,220)"/>
<wire from="(690,160)" to="(710,160)"/>
<wire from="(190,220)" to="(210,220)"/>
<wire from="(140,120)" to="(150,120)"/>
<wire from="(760,200)" to="(780,200)"/>
<wire from="(10,260)" to="(10,290)"/>
<wire from="(120,240)" to="(120,260)"/>
<wire from="(290,130)" to="(310,130)"/>
<wire from="(50,180)" to="(50,260)"/>
<wire from="(120,210)" to="(170,210)"/>
<wire from="(170,250)" to="(270,250)"/>
<wire from="(120,220)" to="(130,220)"/>
<wire from="(170,140)" to="(170,210)"/>
<wire from="(140,100)" to="(310,100)"/>
<wire from="(290,170)" to="(290,190)"/>
<wire from="(160,160)" to="(190,160)"/>
<wire from="(310,100)" to="(310,130)"/>
<wire from="(120,210)" to="(120,220)"/>
<wire from="(140,80)" to="(160,80)"/>
<wire from="(800,210)" to="(800,270)"/>
<wire from="(260,130)" to="(270,130)"/>
<wire from="(240,210)" to="(730,210)"/>
<wire from="(700,230)" to="(730,230)"/>
<wire from="(700,180)" to="(700,230)"/>
<wire from="(150,120)" to="(150,190)"/>
<wire from="(50,180)" to="(180,180)"/>
<wire from="(260,130)" to="(260,200)"/>
<wire from="(10,260)" to="(50,260)"/>
<wire from="(150,190)" to="(150,200)"/>
<wire from="(130,300)" to="(150,300)"/>
<wire from="(180,210)" to="(180,270)"/>
<wire from="(120,240)" to="(130,240)"/>
<wire from="(190,200)" to="(210,200)"/>
<wire from="(180,270)" to="(800,270)"/>
<wire from="(760,220)" to="(790,220)"/>
<wire from="(690,180)" to="(700,180)"/>
<wire from="(150,190)" to="(290,190)"/>
<wire from="(10,290)" to="(90,290)"/>
<wire from="(150,260)" to="(150,300)"/>
<wire from="(150,260)" to="(170,260)"/>
<wire from="(190,260)" to="(790,260)"/>
<wire from="(140,140)" to="(170,140)"/>
<wire from="(710,160)" to="(710,200)"/>
<wire from="(780,160)" to="(800,160)"/>
<wire from="(170,250)" to="(170,260)"/>
<wire from="(180,50)" to="(180,180)"/>
<wire from="(760,210)" to="(800,210)"/>
<wire from="(190,160)" to="(190,200)"/>
<wire from="(110,200)" to="(110,230)"/>
<wire from="(140,50)" to="(180,50)"/>
<wire from="(780,160)" to="(780,200)"/>
<wire from="(110,230)" to="(130,230)"/>
<wire from="(240,200)" to="(260,200)"/>
<wire from="(270,170)" to="(270,250)"/>
<wire from="(160,80)" to="(160,160)"/>
<comp lib="1" loc="(160,230)" name="AND Gate">
<a name="size" val="30"/>
<a name="inputs" val="3"/>
</comp>
<comp lib="0" loc="(800,160)" 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="0" loc="(140,120)" name="Pin">
<a name="tristate" val="false"/>
<a name="label" val="IO/Memory"/>
</comp>
<comp lib="1" loc="(290,130)" name="Controlled Buffer">
<a name="width" val="8"/>
</comp>
<comp lib="0" loc="(140,140)" name="Pin">
<a name="tristate" val="false"/>
<a name="label" val="~R/W"/>
</comp>
<comp lib="0" loc="(140,50)" name="Pin">
<a name="width" val="16"/>
<a name="tristate" val="false"/>
<a name="label" val="address"/>
</comp>
<comp lib="0" loc="(140,80)" name="Pin">
<a name="width" val="8"/>
<a name="tristate" val="false"/>
<a name="label" val="Data out"/>
</comp>
<comp lib="3" loc="(130,300)" name="Comparator">
<a name="width" val="16"/>
<a name="mode" val="unsigned"/>
</comp>
<comp lib="0" loc="(140,100)" name="Pin">
<a name="output" val="true"/>
<a name="width" val="8"/>
<a name="tristate" val="false"/>
<a name="label" val="Data In"/>
</comp>
<comp lib="0" loc="(690,180)" name="Pin">
<a name="tristate" val="false"/>
</comp>
<comp lib="1" loc="(280,140)" name="AND Gate">
<a name="facing" val="north"/>
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
<comp lib="0" loc="(690,160)" name="Pin">
<a name="width" val="8"/>
<a name="tristate" val="false"/>
</comp>
<comp loc="(760,200)" name="ME serial adapter"/>
<comp lib="0" loc="(90,310)" name="Constant">
<a name="width" val="16"/>
<a name="value" val="0x0"/>
</comp>
<comp loc="(240,200)" name="ME serial adapter"/>
</circuit>
<circuit name="ME serial adapter">
<a name="circuit" val="ME serial adapter"/>
<a name="clabel" val=""/>
<a name="clabelup" val="east"/>
<a name="clabelfont" val="SansSerif plain 12"/>
<appear>
<path d="M61,56 Q65,66 69,56" fill="none" stroke="#808080" stroke-width="2"/>
<rect fill="none" height="40" stroke="#000000" stroke-width="2" width="30" x="50" y="55"/>
<circ-port height="8" pin="180,210" width="8" x="46" y="56"/>
<circ-port height="8" pin="120,230" width="8" x="46" y="66"/>
<circ-port height="8" pin="120,250" width="8" x="46" y="76"/>
<circ-port height="8" pin="120,270" width="8" x="46" y="86"/>
<circ-port height="10" pin="410,230" width="10" x="75" y="65"/>
<circ-port height="10" pin="410,250" width="10" x="75" y="75"/>
<circ-port height="10" pin="410,270" width="10" x="75" y="55"/>
<circ-anchor facing="east" height="6" width="6" x="77" y="57"/>
</appear>
<wire from="(20,310)" to="(130,310)"/>
<wire from="(260,140)" to="(260,160)"/>
<wire from="(170,160)" to="(190,160)"/>
<wire from="(140,270)" to="(150,270)"/>
<wire from="(410,120)" to="(410,150)"/>
<wire from="(230,210)" to="(310,210)"/>
<wire from="(310,170)" to="(310,210)"/>
<wire from="(190,140)" to="(190,160)"/>
<wire from="(140,270)" to="(140,370)"/>
<wire from="(130,240)" to="(130,270)"/>
<wire from="(200,260)" to="(200,270)"/>
<wire from="(130,240)" to="(190,240)"/>
<wire from="(260,110)" to="(260,140)"/>
<wire from="(190,230)" to="(190,240)"/>
<wire from="(130,290)" to="(130,310)"/>
<wire from="(400,120)" to="(410,120)"/>
<wire from="(180,210)" to="(220,210)"/>
<wire from="(120,230)" to="(140,230)"/>
<wire from="(190,140)" to="(200,140)"/>
<wire from="(400,270)" to="(400,290)"/>
<wire from="(140,260)" to="(150,260)"/>
<wire from="(130,290)" to="(150,290)"/>
<wire from="(380,150)" to="(380,230)"/>
<wire from="(190,230)" to="(220,230)"/>
<wire from="(310,160)" to="(310,170)"/>
<wire from="(200,260)" to="(210,260)"/>
<wire from="(130,270)" to="(130,290)"/>
<wire from="(240,140)" to="(260,140)"/>
<wire from="(180,270)" to="(200,270)"/>
<wire from="(310,250)" to="(410,250)"/>
<wire from="(190,160)" to="(200,160)"/>
<wire from="(260,110)" to="(370,110)"/>
<wire from="(310,290)" to="(400,290)"/>
<wire from="(290,170)" to="(290,180)"/>
<wire from="(20,160)" to="(140,160)"/>
<wire from="(120,270)" to="(130,270)"/>
<wire from="(380,230)" to="(380,370)"/>
<wire from="(20,160)" to="(20,310)"/>
<wire from="(300,170)" to="(310,170)"/>
<wire from="(380,230)" to="(410,230)"/>
<wire from="(380,150)" to="(410,150)"/>
<wire from="(230,170)" to="(230,210)"/>
<wire from="(150,280)" to="(150,290)"/>
<wire from="(140,370)" to="(380,370)"/>
<wire from="(120,250)" to="(210,250)"/>
<wire from="(140,230)" to="(140,260)"/>
<wire from="(260,160)" to="(280,160)"/>
<wire from="(400,270)" to="(410,270)"/>
<comp lib="0" loc="(410,250)" name="Pin">
<a name="facing" val="west"/>
<a name="output" val="true"/>
<a name="label" val=" S Data out"/>
<a name="labelloc" val="east"/>
</comp>
<comp lib="4" loc="(310,150)" name="Counter">
<a name="max" val="0x8"/>
</comp>
<comp lib="0" loc="(290,180)" name="Clock">
<a name="facing" val="north"/>
</comp>
<comp lib="0" loc="(180,210)" name="Pin">
<a name="width" val="8"/>
<a name="tristate" val="false"/>
<a name="label" val="Data in"/>
</comp>
<comp lib="0" loc="(120,250)" name="Pin">
<a name="label" val="S Data in"/>
</comp>
<comp lib="1" loc="(400,120)" name="AND Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
<comp lib="0" loc="(370,130)" name="Clock"/>
<comp lib="7" loc="(170,160)" name="one shot"/>
<comp lib="1" loc="(180,270)" name="OR Gate">
<a name="size" val="30"/>
<a name="inputs" val="3"/>
</comp>
<comp lib="0" loc="(410,270)" name="Pin">
<a name="facing" val="west"/>
<a name="output" val="true"/>
<a name="width" val="8"/>
<a name="label" val="Data out"/>
<a name="labelloc" val="east"/>
</comp>
<comp lib="0" loc="(310,290)" name="Splitter">
<a name="facing" val="north"/>
<a name="fanout" val="8"/>
<a name="incoming" val="8"/>
</comp>
<comp lib="0" loc="(120,270)" name="Pin">
<a name="tristate" val="false"/>
<a name="label" val="Write"/>
</comp>
<comp lib="0" loc="(410,230)" name="Pin">
<a name="facing" val="west"/>
<a name="output" val="true"/>
<a name="tristate" val="false"/>
<a name="label" val="Bit Ready out"/>
<a name="labelloc" val="east"/>
</comp>
<comp lib="0" loc="(120,230)" name="Pin">
<a name="tristate" val="false"/>
<a name="label" val="Bit Ready in"/>
</comp>
<comp lib="0" loc="(220,210)" name="Splitter">
<a name="facing" val="south"/>
<a name="fanout" val="8"/>
<a name="incoming" val="8"/>
</comp>
<comp lib="4" loc="(240,140)" name="T Flip-Flop"/>
<comp lib="4" loc="(210,250)" name="Shift Register"/>
</circuit>
</project>

View File

@ -1,7 +1,34 @@
<?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"/>
<lib desc="#Wiring" name="0">
<tool name="Splitter">
<a name="facing" val="south"/>
<a name="fanout" val="8"/>
<a name="incoming" val="8"/>
</tool>
<tool name="Pin">
<a name="tristate" val="false"/>
<a name="pull" val="down"/>
<a name="label" val="Takeover"/>
</tool>
<tool name="Probe">
<a name="radix" val="16"/>
<a name="label" val="mem out"/>
</tool>
<tool name="Tunnel">
<a name="label" val="pop"/>
</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="value" val="0x0"/>
</tool>
</lib>
<lib desc="#Gates" name="1"/>
<lib desc="#Plexers" name="2"/>
<lib desc="#Arithmetic" name="3"/>
@ -190,28 +217,57 @@ This file is intended to be loaded by Logisim (http://www.cburch.com/logisim/).
<wire from="(440,370)" to="(440,380)"/>
<wire from="(320,410)" to="(330,410)"/>
<wire from="(30,660)" to="(310,660)"/>
<comp lib="0" loc="(180,470)" name="Pin">
<comp lib="0" loc="(180,490)" name="Pin">
<a name="tristate" val="false"/>
<a name="label" val="clk"/>
<a name="label" val="res"/>
</comp>
<comp lib="4" loc="(100,300)" name="Counter">
<a name="width" val="4"/>
<a name="max" val="0xf"/>
</comp>
<comp lib="0" loc="(50,310)" name="Splitter">
<a name="fanout" val="1"/>
<a name="incoming" val="9"/>
<a name="bit1" val="0"/>
<a name="bit2" val="0"/>
<a name="bit3" val="0"/>
<a name="bit4" val="none"/>
<a name="bit5" val="none"/>
<a name="bit6" val="none"/>
<a name="bit7" val="none"/>
<a name="bit8" val="none"/>
</comp>
<comp loc="(520,380)" name="Reg file"/>
<comp lib="0" loc="(570,380)" name="Pin">
<a name="facing" val="west"/>
<a name="output" val="true"/>
<a name="width" val="4"/>
<a name="labelloc" val="east"/>
</comp>
<comp lib="1" loc="(790,450)" name="NOT Gate"/>
<comp lib="4" loc="(850,400)" name="RAM">
<a name="addrWidth" val="4"/>
<a name="dataWidth" val="4"/>
<a name="bus" val="separate"/>
</comp>
<comp lib="0" loc="(370,340)" name="Splitter">
<comp lib="0" loc="(650,510)" name="Splitter">
<a name="facing" val="west"/>
<a name="appear" val="right"/>
</comp>
<comp lib="1" loc="(790,450)" name="NOT Gate"/>
<comp lib="0" loc="(330,410)" name="Splitter">
<a name="incoming" val="9"/>
<a name="bit0" val="1"/>
<a name="bit2" val="0"/>
<a name="bit3" val="0"/>
<a name="bit4" val="none"/>
<a name="bit5" val="none"/>
<a name="bit6" val="none"/>
<a name="bit7" val="none"/>
<a name="bit8" val="none"/>
</comp>
<comp lib="0" loc="(690,410)" name="Splitter">
<a name="fanout" val="1"/>
<a name="incoming" val="9"/>
<a name="bit0" val="none"/>
<a name="bit1" val="none"/>
<a name="bit1" val="0"/>
<a name="bit2" val="0"/>
<a name="bit3" val="0"/>
<a name="bit4" val="none"/>
@ -225,38 +281,6 @@ This file is intended to be loaded by Logisim (http://www.cburch.com/logisim/).
<a name="disabled" val="0"/>
<a name="enable" val="false"/>
</comp>
<comp lib="4" loc="(680,510)" name="Register">
<a name="width" val="2"/>
</comp>
<comp lib="0" loc="(330,410)" name="Splitter">
<a name="incoming" val="9"/>
<a name="bit0" val="1"/>
<a name="bit2" val="0"/>
<a name="bit3" val="0"/>
<a name="bit4" val="none"/>
<a name="bit5" val="none"/>
<a name="bit6" val="none"/>
<a name="bit7" val="none"/>
<a name="bit8" val="none"/>
</comp>
<comp loc="(590,440)" name="ALU"/>
<comp lib="0" loc="(230,600)" name="Splitter">
<a name="fanout" val="1"/>
<a name="incoming" val="9"/>
<a name="bit0" val="none"/>
<a name="bit1" val="none"/>
<a name="bit2" val="none"/>
<a name="bit3" val="none"/>
<a name="bit4" val="0"/>
<a name="bit5" val="0"/>
<a name="bit6" val="0"/>
<a name="bit7" val="0"/>
<a name="bit8" val="0"/>
</comp>
<comp lib="0" loc="(650,510)" name="Splitter">
<a name="facing" val="west"/>
<a name="appear" val="right"/>
</comp>
<comp lib="0" loc="(380,250)" name="Splitter">
<a name="fanout" val="1"/>
<a name="incoming" val="9"/>
@ -269,44 +293,28 @@ This file is intended to be loaded by Logisim (http://www.cburch.com/logisim/).
<a name="bit7" val="none"/>
<a name="bit8" val="none"/>
</comp>
<comp loc="(280,560)" name="ins dec"/>
<comp lib="0" loc="(50,310)" name="Splitter">
<a name="fanout" val="1"/>
<a name="incoming" val="9"/>
<a name="bit1" val="0"/>
<a name="bit2" val="0"/>
<a name="bit3" val="0"/>
<a name="bit4" val="none"/>
<a name="bit5" val="none"/>
<a name="bit6" val="none"/>
<a name="bit7" val="none"/>
<a name="bit8" val="none"/>
</comp>
<comp lib="4" loc="(100,300)" name="Counter">
<a name="width" val="4"/>
<a name="max" val="0xf"/>
</comp>
<comp lib="0" loc="(180,490)" name="Pin">
<a name="tristate" val="false"/>
<a name="label" val="res"/>
</comp>
<comp lib="0" loc="(690,410)" name="Splitter">
<a name="fanout" val="1"/>
<a name="incoming" val="9"/>
<a name="bit1" val="0"/>
<a name="bit2" val="0"/>
<a name="bit3" val="0"/>
<a name="bit4" val="none"/>
<a name="bit5" val="none"/>
<a name="bit6" val="none"/>
<a name="bit7" val="none"/>
<a name="bit8" val="none"/>
</comp>
<comp lib="2" loc="(420,320)" name="Multiplexer">
<a name="width" val="2"/>
<a name="disabled" val="0"/>
<a name="enable" val="false"/>
</comp>
<comp lib="0" loc="(370,340)" name="Splitter">
<a name="fanout" val="1"/>
<a name="incoming" val="9"/>
<a name="bit0" val="none"/>
<a name="bit1" val="none"/>
<a name="bit2" val="0"/>
<a name="bit3" val="0"/>
<a name="bit4" val="none"/>
<a name="bit5" val="none"/>
<a name="bit6" val="none"/>
<a name="bit7" val="none"/>
<a name="bit8" val="none"/>
</comp>
<comp lib="0" loc="(180,470)" name="Pin">
<a name="tristate" val="false"/>
<a name="label" val="clk"/>
</comp>
<comp lib="4" loc="(270,300)" name="ROM">
<a name="addrWidth" val="4"/>
<a name="dataWidth" val="9"/>
@ -314,6 +322,25 @@ This file is intended to be loaded by Logisim (http://www.cburch.com/logisim/).
0 11 c1 82
</a>
</comp>
<comp loc="(280,560)" name="ins dec"/>
<comp lib="0" loc="(230,600)" name="Splitter">
<a name="fanout" val="1"/>
<a name="incoming" val="9"/>
<a name="bit0" val="none"/>
<a name="bit1" val="none"/>
<a name="bit2" val="none"/>
<a name="bit3" val="none"/>
<a name="bit4" val="0"/>
<a name="bit5" val="0"/>
<a name="bit6" val="0"/>
<a name="bit7" val="0"/>
<a name="bit8" val="0"/>
</comp>
<comp loc="(520,380)" name="Reg file"/>
<comp loc="(590,440)" name="ALU"/>
<comp lib="4" loc="(680,510)" name="Register">
<a name="width" val="2"/>
</comp>
<comp lib="0" loc="(570,400)" name="Pin">
<a name="facing" val="west"/>
<a name="output" val="true"/>
@ -343,10 +370,10 @@ This file is intended to be loaded by Logisim (http://www.cburch.com/logisim/).
<wire from="(380,380)" to="(380,430)"/>
<wire from="(470,450)" to="(470,460)"/>
<wire from="(190,480)" to="(330,480)"/>
<wire from="(480,510)" to="(480,520)"/>
<wire from="(570,410)" to="(570,510)"/>
<wire from="(620,500)" to="(640,500)"/>
<wire from="(480,510)" to="(480,520)"/>
<wire from="(600,520)" to="(600,610)"/>
<wire from="(620,500)" to="(640,500)"/>
<wire from="(510,390)" to="(510,430)"/>
<wire from="(470,510)" to="(470,520)"/>
<wire from="(350,460)" to="(410,460)"/>
@ -421,47 +448,20 @@ This file is intended to be loaded by Logisim (http://www.cburch.com/logisim/).
<wire from="(500,400)" to="(500,460)"/>
<wire from="(190,560)" to="(200,560)"/>
<wire from="(270,620)" to="(630,620)"/>
<comp lib="4" loc="(490,490)" name="Register">
<a name="width" val="4"/>
</comp>
<comp lib="0" loc="(190,460)" name="Pin">
<a name="width" val="4"/>
<a name="tristate" val="false"/>
<a name="label" val="Data in"/>
</comp>
<comp lib="0" loc="(640,500)" name="Pin">
<a name="facing" val="west"/>
<a name="output" val="true"/>
<a name="width" val="4"/>
<a name="label" val="Bout"/>
<a name="labelloc" val="east"/>
</comp>
<comp lib="2" loc="(330,470)" name="Decoder">
<a name="select" val="2"/>
<a name="disabled" val="0"/>
</comp>
<comp lib="4" loc="(490,370)" name="Register">
<a name="width" val="4"/>
</comp>
<comp lib="0" loc="(190,500)" name="Pin">
<a name="tristate" val="false"/>
<a name="label" val="we"/>
</comp>
<comp lib="0" loc="(190,480)" name="Pin">
<a name="width" val="2"/>
<a name="tristate" val="false"/>
<a name="label" val="Wreg"/>
</comp>
<comp lib="0" loc="(190,560)" name="Pin">
<a name="tristate" val="false"/>
<a name="label" val="clk"/>
</comp>
<comp lib="2" loc="(620,400)" name="Multiplexer">
<comp lib="2" loc="(620,500)" name="Multiplexer">
<a name="select" val="2"/>
<a name="width" val="4"/>
<a name="disabled" val="0"/>
<a name="enable" val="false"/>
</comp>
<comp lib="0" loc="(190,540)" name="Pin">
<a name="width" val="2"/>
<a name="tristate" val="false"/>
<a name="label" val="Breg"/>
</comp>
<comp lib="4" loc="(490,490)" name="Register">
<a name="width" val="4"/>
</comp>
<comp lib="0" loc="(640,400)" name="Pin">
<a name="facing" val="west"/>
<a name="output" val="true"/>
@ -469,15 +469,22 @@ This file is intended to be loaded by Logisim (http://www.cburch.com/logisim/).
<a name="label" val="Aout"/>
<a name="labelloc" val="east"/>
</comp>
<comp lib="2" loc="(620,500)" name="Multiplexer">
<comp lib="0" loc="(190,460)" name="Pin">
<a name="width" val="4"/>
<a name="tristate" val="false"/>
<a name="label" val="Data in"/>
</comp>
<comp lib="0" loc="(190,480)" name="Pin">
<a name="width" val="2"/>
<a name="tristate" val="false"/>
<a name="label" val="Wreg"/>
</comp>
<comp lib="2" loc="(620,400)" name="Multiplexer">
<a name="select" val="2"/>
<a name="width" val="4"/>
<a name="disabled" val="0"/>
<a name="enable" val="false"/>
</comp>
<comp lib="4" loc="(490,550)" name="Register">
<a name="width" val="4"/>
</comp>
<comp lib="0" loc="(190,520)" name="Pin">
<a name="width" val="2"/>
<a name="tristate" val="false"/>
@ -487,13 +494,33 @@ This file is intended to be loaded by Logisim (http://www.cburch.com/logisim/).
<a name="tristate" val="false"/>
<a name="label" val="res"/>
</comp>
<comp lib="2" loc="(330,470)" name="Decoder">
<a name="select" val="2"/>
<a name="disabled" val="0"/>
</comp>
<comp lib="4" loc="(490,370)" name="Register">
<a name="width" val="4"/>
</comp>
<comp lib="4" loc="(490,550)" name="Register">
<a name="width" val="4"/>
</comp>
<comp lib="4" loc="(490,430)" name="Register">
<a name="width" val="4"/>
</comp>
<comp lib="0" loc="(190,540)" name="Pin">
<a name="width" val="2"/>
<comp lib="0" loc="(190,560)" name="Pin">
<a name="tristate" val="false"/>
<a name="label" val="Breg"/>
<a name="label" val="clk"/>
</comp>
<comp lib="0" loc="(640,500)" name="Pin">
<a name="facing" val="west"/>
<a name="output" val="true"/>
<a name="width" val="4"/>
<a name="label" val="Bout"/>
<a name="labelloc" val="east"/>
</comp>
<comp lib="0" loc="(190,500)" name="Pin">
<a name="tristate" val="false"/>
<a name="label" val="we"/>
</comp>
</circuit>
<circuit name="ins dec">
@ -696,12 +723,27 @@ This file is intended to be loaded by Logisim (http://www.cburch.com/logisim/).
<wire from="(960,250)" to="(990,250)"/>
<wire from="(90,260)" to="(480,260)"/>
<wire from="(1040,260)" to="(1090,260)"/>
<comp lib="0" loc="(1120,280)" name="Pin">
<a name="facing" val="west"/>
<a name="output" val="true"/>
<a name="label" val="Memory store"/>
<a name="labelloc" val="east"/>
</comp>
<comp lib="0" loc="(1120,340)" name="Pin">
<a name="facing" val="west"/>
<a name="output" val="true"/>
<a name="label" val="Jump"/>
<a name="labelloc" val="east"/>
</comp>
<comp lib="0" loc="(1120,300)" name="Pin">
<a name="facing" val="west"/>
<a name="output" val="true"/>
<a name="label" val="Flag enable"/>
<a name="labelloc" val="east"/>
</comp>
<comp lib="1" loc="(770,250)" name="OR Gate">
<a name="inputs" val="4"/>
</comp>
<comp lib="0" loc="(1120,320)" name="Pin">
<a name="facing" val="west"/>
<a name="output" val="true"/>
@ -709,82 +751,41 @@ This file is intended to be loaded by Logisim (http://www.cburch.com/logisim/).
<a name="label" val="ALU op"/>
<a name="labelloc" val="east"/>
</comp>
<comp lib="1" loc="(690,660)" name="OR Gate">
<a name="size" val="30"/>
<a name="inputs" val="3"/>
</comp>
<comp lib="0" loc="(1120,200)" name="Pin">
<a name="facing" val="west"/>
<a name="output" val="true"/>
<a name="label" val="Write register source"/>
<a name="labelloc" val="east"/>
</comp>
<comp lib="0" loc="(1120,220)" name="Pin">
<a name="facing" val="west"/>
<a name="output" val="true"/>
<a name="width" val="2"/>
<a name="label" val="LOD(I)/STO reg"/>
<a name="labelloc" val="east"/>
</comp>
<comp lib="1" loc="(770,250)" name="OR Gate">
<a name="inputs" val="4"/>
</comp>
<comp lib="1" loc="(770,350)" name="OR Gate">
<a name="inputs" val="4"/>
</comp>
<comp lib="1" loc="(970,410)" name="OR Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
<comp lib="1" loc="(1100,310)" name="OR Gate">
<a name="size" val="30"/>
<a name="inputs" val="3"/>
</comp>
<comp lib="1" loc="(690,600)" name="OR Gate">
<a name="size" val="30"/>
<a name="inputs" val="3"/>
</comp>
<comp lib="0" loc="(1120,280)" name="Pin">
<a name="facing" val="west"/>
<a name="output" val="true"/>
<a name="label" val="Memory store"/>
<a name="labelloc" val="east"/>
</comp>
<comp lib="0" loc="(1120,260)" name="Pin">
<a name="facing" val="west"/>
<a name="output" val="true"/>
<a name="label" val="A register source"/>
<a name="labelloc" val="east"/>
</comp>
<comp lib="0" loc="(70,470)" name="Pin">
<a name="width" val="5"/>
<a name="tristate" val="false"/>
<a name="label" val="Ins"/>
</comp>
<comp lib="0" loc="(1080,370)" name="Pull Resistor"/>
<comp lib="1" loc="(770,300)" name="OR Gate"/>
<comp lib="0" loc="(1050,170)" name="Pull Resistor"/>
<comp lib="1" loc="(690,570)" name="OR Gate">
<a name="size" val="30"/>
<a name="inputs" val="3"/>
</comp>
<comp lib="2" loc="(1030,180)" name="Priority Encoder">
<a name="select" val="2"/>
</comp>
<comp lib="1" loc="(740,150)" name="OR Gate">
<comp lib="1" loc="(770,200)" name="OR Gate">
<a name="inputs" val="4"/>
</comp>
<comp lib="0" loc="(1120,340)" name="Pin">
<a name="facing" val="west"/>
<a name="output" val="true"/>
<a name="label" val="Jump"/>
<a name="labelloc" val="east"/>
<comp lib="2" loc="(1030,180)" name="Priority Encoder">
<a name="select" val="2"/>
</comp>
<comp lib="2" loc="(70,450)" name="Decoder">
<a name="select" val="5"/>
<a name="disabled" val="0"/>
<a name="enable" val="false"/>
</comp>
<comp lib="0" loc="(1080,370)" name="Pull Resistor"/>
<comp lib="2" loc="(1030,380)" name="Priority Encoder">
<a name="select" val="2"/>
</comp>
<comp lib="1" loc="(690,600)" name="OR Gate">
<a name="size" val="30"/>
<a name="inputs" val="3"/>
</comp>
<comp lib="1" loc="(690,630)" name="OR Gate">
<a name="size" val="30"/>
<a name="inputs" val="3"/>
</comp>
<comp lib="0" loc="(1050,170)" name="Pull Resistor"/>
<comp lib="0" loc="(1120,180)" name="Pin">
<a name="facing" val="west"/>
<a name="output" val="true"/>
@ -798,25 +799,51 @@ This file is intended to be loaded by Logisim (http://www.cburch.com/logisim/).
<a name="label" val="Write enable"/>
<a name="labelloc" val="east"/>
</comp>
<comp lib="1" loc="(770,200)" name="OR Gate">
<comp lib="1" loc="(1100,310)" name="OR Gate">
<a name="size" val="30"/>
<a name="inputs" val="3"/>
</comp>
<comp lib="1" loc="(740,150)" name="OR Gate">
<a name="inputs" val="4"/>
</comp>
<comp lib="1" loc="(970,410)" name="OR Gate">
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
<comp lib="1" loc="(770,350)" name="OR Gate">
<a name="inputs" val="4"/>
</comp>
<comp lib="1" loc="(690,660)" name="OR Gate">
<a name="size" val="30"/>
<a name="inputs" val="3"/>
</comp>
<comp lib="0" loc="(1070,180)" name="Pull Resistor"/>
<comp lib="0" loc="(1120,200)" name="Pin">
<a name="facing" val="west"/>
<a name="output" val="true"/>
<a name="label" val="Write register source"/>
<a name="labelloc" val="east"/>
</comp>
<comp lib="0" loc="(70,490)" name="Pin">
<a name="width" val="2"/>
<a name="tristate" val="false"/>
<a name="label" val="Flags"/>
</comp>
<comp lib="1" loc="(690,630)" name="OR Gate">
<a name="size" val="30"/>
<a name="inputs" val="3"/>
<comp lib="0" loc="(1120,220)" name="Pin">
<a name="facing" val="west"/>
<a name="output" val="true"/>
<a name="width" val="2"/>
<a name="label" val="LOD(I)/STO reg"/>
<a name="labelloc" val="east"/>
</comp>
<comp lib="0" loc="(70,470)" name="Pin">
<a name="width" val="5"/>
<a name="tristate" val="false"/>
<a name="label" val="Ins"/>
</comp>
<comp lib="2" loc="(1030,250)" name="Priority Encoder">
<a name="select" val="2"/>
</comp>
<comp lib="2" loc="(1030,380)" name="Priority Encoder">
<a name="select" val="2"/>
</comp>
<comp lib="0" loc="(1070,180)" name="Pull Resistor"/>
</circuit>
<circuit name="ALU">
<a name="circuit" val="ALU"/>
@ -890,9 +917,9 @@ This file is intended to be loaded by Logisim (http://www.cburch.com/logisim/).
<wire from="(500,120)" to="(520,120)"/>
<wire from="(470,170)" to="(470,240)"/>
<wire from="(530,260)" to="(550,260)"/>
<comp lib="0" loc="(480,160)" name="Splitter">
<a name="fanout" val="4"/>
<a name="incoming" val="4"/>
<comp lib="2" loc="(360,160)" name="Multiplexer">
<a name="disabled" val="0"/>
<a name="enable" val="false"/>
</comp>
<comp lib="0" loc="(540,280)" name="Pin">
<a name="facing" val="west"/>
@ -901,33 +928,54 @@ This file is intended to be loaded by Logisim (http://www.cburch.com/logisim/).
<a name="label" val="R"/>
<a name="labelloc" val="east"/>
</comp>
<comp lib="2" loc="(450,280)" name="Multiplexer">
<a name="select" val="2"/>
<comp lib="1" loc="(280,350)" name="OR Gate">
<a name="width" val="4"/>
<a name="disabled" val="0"/>
<a name="enable" val="false"/>
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
<comp lib="1" loc="(580,140)" name="NOR Gate">
<a name="inputs" val="4"/>
</comp>
<comp lib="1" loc="(280,320)" name="AND Gate">
<a name="width" val="4"/>
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
<comp lib="0" loc="(210,180)" name="Splitter"/>
<comp lib="3" loc="(290,210)" name="Adder">
<a name="width" val="4"/>
</comp>
<comp lib="0" loc="(370,180)" name="Constant">
<a name="value" val="0x0"/>
</comp>
<comp lib="0" loc="(190,200)" name="Pin">
<a name="width" val="4"/>
<a name="tristate" val="false"/>
<a name="label" val="A"/>
</comp>
<comp lib="0" loc="(190,240)" name="Pin">
<a name="width" val="2"/>
<a name="tristate" val="false"/>
<a name="label" val="Op"/>
</comp>
<comp lib="0" loc="(480,160)" name="Splitter">
<a name="fanout" val="4"/>
<a name="incoming" val="4"/>
</comp>
<comp lib="0" loc="(190,220)" name="Pin">
<a name="width" val="4"/>
<a name="tristate" val="false"/>
<a name="label" val="B"/>
</comp>
<comp lib="2" loc="(360,160)" name="Multiplexer">
<comp lib="2" loc="(450,280)" name="Multiplexer">
<a name="select" val="2"/>
<a name="width" val="4"/>
<a name="disabled" val="0"/>
<a name="enable" val="false"/>
</comp>
<comp lib="3" loc="(290,270)" name="Subtractor">
<a name="width" val="4"/>
</comp>
<comp lib="0" loc="(550,260)" name="Pin">
<a name="facing" val="west"/>
<a name="output" val="true"/>
<a name="label" val="Zero"/>
<a name="labelloc" val="east"/>
<comp lib="2" loc="(400,170)" name="Multiplexer">
<a name="disabled" val="0"/>
<a name="enable" val="false"/>
</comp>
<comp lib="0" loc="(550,240)" name="Pin">
<a name="facing" val="west"/>
@ -935,34 +983,14 @@ This file is intended to be loaded by Logisim (http://www.cburch.com/logisim/).
<a name="label" val="Carry"/>
<a name="labelloc" val="east"/>
</comp>
<comp lib="3" loc="(290,210)" name="Adder">
<comp lib="0" loc="(550,260)" 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="3" loc="(290,270)" name="Subtractor">
<a name="width" val="4"/>
</comp>
<comp lib="1" loc="(580,140)" name="NOR Gate">
<a name="inputs" val="4"/>
</comp>
<comp lib="0" loc="(190,200)" name="Pin">
<a name="width" val="4"/>
<a name="tristate" val="false"/>
<a name="label" val="A"/>
</comp>
<comp lib="1" loc="(280,350)" name="OR Gate">
<a name="width" val="4"/>
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
<comp lib="0" loc="(210,180)" name="Splitter"/>
<comp lib="0" loc="(370,180)" name="Constant">
<a name="value" val="0x0"/>
</comp>
<comp lib="1" loc="(280,320)" name="AND Gate">
<a name="width" val="4"/>
<a name="size" val="30"/>
<a name="inputs" val="2"/>
</comp>
<comp lib="2" loc="(400,170)" name="Multiplexer">
<a name="disabled" val="0"/>
<a name="enable" val="false"/>
</comp>
</circuit>
</project>

13
cpu 4/ins set.txt Normal file
View File

@ -0,0 +1,13 @@
00=Memory to Register A
01=Memory to Register B
02=Memory to Register C
03=Memory to Register D
04=Immediate to Register A
05=Immediate to Register B
06=Immediate to Register C
07=Immediate to Register D
12x-Add Register x[2-3] to Register x[0-1]
13x-Subtract Register x[2-3] from Register x[0-1]
14x-And Register x[2-3] with Register x[0-1]
15x-Or Register x[2-3] with Register x[0-1]
16x-Or Register x[2-3] with Register x[0-1] w/o storing result??????