New Hardware Git

This commit is contained in:
e2hang
2025-12-31 19:35:06 +08:00
commit aca5a8aab8
621 changed files with 254727 additions and 0 deletions

Binary file not shown.

BIN
CPU/CU/CU文档.pdf Normal file

Binary file not shown.

237
CPU/CU/ControlUnit.circ Normal file
View File

@@ -0,0 +1,237 @@
<?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>

16
CPU/CU/rom_alucontrol.hex Normal file
View File

@@ -0,0 +1,16 @@
2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 2 6 0 0 0 0 0 0 0 7 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 8
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

4
CPU/CU/rom_cu.hex Normal file
View File

@@ -0,0 +1,4 @@
608 000 000 000 000 18a 000 000 000 000 000 000 000 388 000 388
000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000
000 000 000 09d 000 000 000 000 000 000 000 092 000 000 000 000
000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 001