Files
hardware/CPU/CU/ControlUnit.circ
2025-12-31 19:35:06 +08:00

238 lines
8.2 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<project source="3.9.0" version="1.0">
This file is intended to be loaded by Logisim-evolution v3.9.0(https://github.com/logisim-evolution/).
<lib desc="#Wiring" name="0">
<tool name="Pin">
<a name="appearance" val="classic"/>
</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="#TTL" name="6"/>
<lib desc="#TCL" name="7"/>
<lib desc="#Base" name="8"/>
<lib desc="#BFH-Praktika" name="9"/>
<lib desc="#Input/Output-Extra" name="10"/>
<lib desc="#Soc" name="11"/>
<main name="main"/>
<options>
<a name="gateUndefined" val="ignore"/>
<a name="simlimit" val="1000"/>
<a name="simrand" val="0"/>
</options>
<mappings>
<tool lib="8" map="Button2" name="Poke Tool"/>
<tool lib="8" map="Button3" name="Menu Tool"/>
<tool lib="8" map="Ctrl Button1" name="Menu Tool"/>
</mappings>
<toolbar>
<tool lib="8" name="Poke Tool"/>
<tool lib="8" name="Edit Tool"/>
<tool lib="8" name="Wiring Tool"/>
<tool lib="8" name="Text Tool"/>
<sep/>
<tool lib="0" name="Pin"/>
<tool lib="0" name="Pin">
<a name="facing" val="west"/>
<a name="output" val="true"/>
</tool>
<sep/>
<tool lib="1" name="NOT Gate"/>
<tool lib="1" name="AND Gate"/>
<tool lib="1" name="OR Gate"/>
<tool lib="1" name="XOR Gate"/>
<tool lib="1" name="NAND Gate"/>
<tool lib="1" name="NOR Gate"/>
<sep/>
<tool lib="4" name="D Flip-Flop"/>
<tool lib="4" name="Register"/>
</toolbar>
<circuit name="main">
<a name="appearance" val="logisim_evolution"/>
<a name="circuit" val="main"/>
<a name="circuitnamedboxfixedsize" val="true"/>
<a name="simulationFrequency" val="4.0"/>
<comp loc="(450,180)" name="Control_Unit"/>
</circuit>
<circuit name="Control_Unit">
<a name="appearance" val="logisim_evolution"/>
<a name="circuit" val="Control_Unit"/>
<a name="circuitnamedboxfixedsize" val="true"/>
<a name="simulationFrequency" val="4.0"/>
<comp lib="0" loc="(170,410)" name="Pin">
<a name="appearance" val="NewPins"/>
<a name="label" val="Opcode"/>
<a name="width" val="6"/>
</comp>
<comp lib="0" loc="(550,320)" name="Splitter">
<a name="bit10" val="9"/>
<a name="bit11" val="10"/>
<a name="bit9" val="8"/>
<a name="fanout" val="11"/>
<a name="incoming" val="12"/>
</comp>
<comp lib="0" loc="(740,130)" name="Pin">
<a name="appearance" val="NewPins"/>
<a name="facing" val="west"/>
<a name="label" val="Stop"/>
<a name="output" val="true"/>
</comp>
<comp lib="0" loc="(740,150)" name="Pin">
<a name="appearance" val="NewPins"/>
<a name="facing" val="west"/>
<a name="label" val="ExtOp"/>
<a name="output" val="true"/>
</comp>
<comp lib="0" loc="(740,170)" name="Pin">
<a name="appearance" val="NewPins"/>
<a name="facing" val="west"/>
<a name="label" val="MemtoWrite"/>
<a name="output" val="true"/>
</comp>
<comp lib="0" loc="(740,190)" name="Pin">
<a name="appearance" val="NewPins"/>
<a name="facing" val="west"/>
<a name="label" val="RegWrite"/>
<a name="output" val="true"/>
</comp>
<comp lib="0" loc="(740,210)" name="Pin">
<a name="appearance" val="NewPins"/>
<a name="facing" val="west"/>
<a name="label" val="MemWrite"/>
<a name="output" val="true"/>
</comp>
<comp lib="0" loc="(740,230)" name="Pin">
<a name="appearance" val="NewPins"/>
<a name="facing" val="west"/>
<a name="label" val="MemRead"/>
<a name="output" val="true"/>
</comp>
<comp lib="0" loc="(740,250)" name="Pin">
<a name="appearance" val="NewPins"/>
<a name="facing" val="west"/>
<a name="label" val="Branch"/>
<a name="output" val="true"/>
</comp>
<comp lib="0" loc="(740,270)" name="Pin">
<a name="appearance" val="NewPins"/>
<a name="facing" val="west"/>
<a name="label" val="ALUSrc"/>
<a name="output" val="true"/>
</comp>
<comp lib="0" loc="(740,290)" name="Pin">
<a name="appearance" val="NewPins"/>
<a name="facing" val="west"/>
<a name="label" val="ALUOp"/>
<a name="output" val="true"/>
<a name="width" val="2"/>
</comp>
<comp lib="0" loc="(740,310)" name="Pin">
<a name="appearance" val="NewPins"/>
<a name="facing" val="west"/>
<a name="label" val="RegDst"/>
<a name="output" val="true"/>
</comp>
<comp lib="4" loc="(270,290)" name="ROM">
<a name="addrWidth" val="6"/>
<a name="appearance" val="logisim_evolution"/>
<a name="contents">addr/data: 6 12
608 4*0 18a 7*0 388 0 388 19*0
9d 7*0 92 19*0 1
</a>
<a name="dataWidth" val="12"/>
</comp>
<wire from="(170,300)" to="(170,410)"/>
<wire from="(170,300)" to="(270,300)"/>
<wire from="(510,320)" to="(510,350)"/>
<wire from="(510,320)" to="(550,320)"/>
<wire from="(570,210)" to="(670,210)"/>
<wire from="(570,220)" to="(680,220)"/>
<wire from="(570,230)" to="(690,230)"/>
<wire from="(570,240)" to="(700,240)"/>
<wire from="(570,250)" to="(710,250)"/>
<wire from="(570,260)" to="(720,260)"/>
<wire from="(570,270)" to="(730,270)"/>
<wire from="(570,280)" to="(740,280)"/>
<wire from="(570,290)" to="(740,290)"/>
<wire from="(570,300)" to="(740,300)"/>
<wire from="(670,130)" to="(670,210)"/>
<wire from="(670,130)" to="(740,130)"/>
<wire from="(680,150)" to="(680,220)"/>
<wire from="(680,150)" to="(740,150)"/>
<wire from="(690,170)" to="(690,230)"/>
<wire from="(690,170)" to="(740,170)"/>
<wire from="(700,190)" to="(700,240)"/>
<wire from="(700,190)" to="(740,190)"/>
<wire from="(710,210)" to="(710,250)"/>
<wire from="(710,210)" to="(740,210)"/>
<wire from="(720,230)" to="(720,260)"/>
<wire from="(720,230)" to="(740,230)"/>
<wire from="(730,250)" to="(730,270)"/>
<wire from="(730,250)" to="(740,250)"/>
<wire from="(740,270)" to="(740,280)"/>
<wire from="(740,300)" to="(740,310)"/>
</circuit>
<circuit name="ALU_Control">
<a name="appearance" val="logisim_evolution"/>
<a name="circuit" val="ALU_Control"/>
<a name="circuitnamedboxfixedsize" val="true"/>
<a name="simulationFrequency" val="4.0"/>
<comp lib="0" loc="(200,200)" name="Pin">
<a name="appearance" val="NewPins"/>
<a name="label" val="ALU_Op"/>
<a name="width" val="2"/>
</comp>
<comp lib="0" loc="(200,270)" name="Pin">
<a name="appearance" val="NewPins"/>
<a name="label" val="Funct"/>
<a name="width" val="6"/>
</comp>
<comp lib="0" loc="(310,240)" name="Splitter">
<a name="bit0" val="1"/>
<a name="bit2" val="1"/>
<a name="bit3" val="1"/>
<a name="bit4" val="1"/>
<a name="bit5" val="1"/>
<a name="bit6" val="0"/>
<a name="bit7" val="0"/>
<a name="facing" val="west"/>
<a name="incoming" val="8"/>
</comp>
<comp lib="0" loc="(770,210)" name="Pin">
<a name="appearance" val="NewPins"/>
<a name="facing" val="west"/>
<a name="label" val="ALUControl"/>
<a name="output" val="true"/>
<a name="width" val="4"/>
</comp>
<comp lib="4" loc="(390,150)" name="ROM">
<a name="appearance" val="logisim_evolution"/>
<a name="contents">addr/data: 8 4
64*2 97*0 2 6 7*0 7 34*0 1
0 8
</a>
<a name="dataWidth" val="4"/>
</comp>
<comp lib="8" loc="(193,361)" name="Text">
<a name="text" val="当且仅当ALU_Op为11时输入Opcode"/>
</comp>
<wire from="(200,200)" to="(290,200)"/>
<wire from="(200,270)" to="(290,270)"/>
<wire from="(290,200)" to="(290,250)"/>
<wire from="(290,260)" to="(290,270)"/>
<wire from="(310,160)" to="(310,240)"/>
<wire from="(310,160)" to="(390,160)"/>
<wire from="(630,210)" to="(770,210)"/>
</circuit>
<circuit name="ALU">
<a name="appearance" val="logisim_evolution"/>
<a name="circuit" val="ALU"/>
<a name="circuitnamedboxfixedsize" val="true"/>
<a name="simulationFrequency" val="4.0"/>
</circuit>
</project>