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/ALU/ALU设计.pdf Normal file

Binary file not shown.

374
CPU/ALU/myalu.circ Normal file
View File

@@ -0,0 +1,374 @@
<?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 lib="0" loc="(310,310)" name="Pin">
<a name="appearance" val="NewPins"/>
<a name="width" val="3"/>
</comp>
<comp lib="0" loc="(340,330)" name="Pin">
<a name="appearance" val="NewPins"/>
<a name="initial" val="0xffffffff"/>
<a name="radix" val="16"/>
<a name="width" val="32"/>
</comp>
<comp lib="0" loc="(340,350)" name="Pin">
<a name="appearance" val="NewPins"/>
<a name="initial" val="0xffffabcd"/>
<a name="radix" val="16"/>
<a name="width" val="32"/>
</comp>
<comp lib="0" loc="(650,310)" name="Pin">
<a name="appearance" val="NewPins"/>
<a name="facing" val="west"/>
<a name="output" val="true"/>
<a name="radix" val="16"/>
<a name="width" val="32"/>
</comp>
<comp lib="5" loc="(670,330)" name="LED"/>
<comp lib="8" loc="(262,201)" name="Text">
<a name="text" val="加法000减法001或010SLT011LUI100"/>
</comp>
<comp loc="(630,310)" name="ALU"/>
<wire from="(310,310)" to="(410,310)"/>
<wire from="(340,330)" to="(410,330)"/>
<wire from="(340,350)" to="(410,350)"/>
<wire from="(630,310)" to="(650,310)"/>
<wire from="(630,330)" to="(670,330)"/>
</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"/>
<comp lib="0" loc="(1050,520)" name="Pin">
<a name="appearance" val="NewPins"/>
<a name="facing" val="west"/>
<a name="label" val="Zero"/>
<a name="output" val="true"/>
</comp>
<comp lib="0" loc="(260,220)" name="Pin">
<a name="appearance" val="NewPins"/>
<a name="label" val="Num1_32"/>
<a name="radix" val="16"/>
<a name="width" val="32"/>
</comp>
<comp lib="0" loc="(260,240)" name="Pin">
<a name="appearance" val="NewPins"/>
<a name="label" val="Num2_32"/>
<a name="radix" val="16"/>
<a name="width" val="32"/>
</comp>
<comp lib="0" loc="(510,700)" name="Splitter">
<a name="bit1" val="0"/>
<a name="bit10" val="0"/>
<a name="bit11" val="0"/>
<a name="bit12" val="0"/>
<a name="bit13" val="0"/>
<a name="bit14" val="0"/>
<a name="bit15" val="0"/>
<a name="bit16" val="1"/>
<a name="bit17" val="1"/>
<a name="bit18" val="1"/>
<a name="bit19" val="1"/>
<a name="bit2" val="0"/>
<a name="bit20" val="1"/>
<a name="bit21" val="1"/>
<a name="bit22" val="1"/>
<a name="bit23" val="1"/>
<a name="bit24" val="1"/>
<a name="bit25" val="1"/>
<a name="bit26" val="1"/>
<a name="bit27" val="1"/>
<a name="bit28" val="1"/>
<a name="bit29" val="1"/>
<a name="bit3" val="0"/>
<a name="bit30" val="1"/>
<a name="bit31" val="1"/>
<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"/>
<a name="bit9" val="0"/>
<a name="incoming" val="32"/>
</comp>
<comp lib="0" loc="(660,620)" name="Splitter">
<a name="bit1" val="0"/>
<a name="bit10" val="0"/>
<a name="bit11" val="0"/>
<a name="bit12" val="0"/>
<a name="bit13" val="0"/>
<a name="bit14" val="0"/>
<a name="bit15" val="0"/>
<a name="bit16" val="0"/>
<a name="bit17" val="0"/>
<a name="bit18" val="0"/>
<a name="bit19" val="0"/>
<a name="bit2" val="0"/>
<a name="bit20" val="0"/>
<a name="bit21" val="0"/>
<a name="bit22" val="0"/>
<a name="bit23" val="0"/>
<a name="bit24" val="0"/>
<a name="bit25" val="0"/>
<a name="bit26" val="0"/>
<a name="bit27" val="0"/>
<a name="bit28" val="0"/>
<a name="bit29" val="0"/>
<a name="bit3" val="0"/>
<a name="bit30" val="0"/>
<a name="bit31" val="1"/>
<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"/>
<a name="bit9" val="0"/>
<a name="incoming" val="32"/>
</comp>
<comp lib="0" loc="(760,660)" name="Splitter">
<a name="bit1" val="0"/>
<a name="bit10" val="0"/>
<a name="bit11" val="0"/>
<a name="bit12" val="0"/>
<a name="bit13" val="0"/>
<a name="bit14" val="0"/>
<a name="bit15" val="0"/>
<a name="bit16" val="1"/>
<a name="bit17" val="1"/>
<a name="bit18" val="1"/>
<a name="bit19" val="1"/>
<a name="bit2" val="0"/>
<a name="bit20" val="1"/>
<a name="bit21" val="1"/>
<a name="bit22" val="1"/>
<a name="bit23" val="1"/>
<a name="bit24" val="1"/>
<a name="bit25" val="1"/>
<a name="bit26" val="1"/>
<a name="bit27" val="1"/>
<a name="bit28" val="1"/>
<a name="bit29" val="1"/>
<a name="bit3" val="0"/>
<a name="bit30" val="1"/>
<a name="bit31" val="1"/>
<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"/>
<a name="bit9" val="0"/>
<a name="facing" val="west"/>
<a name="incoming" val="32"/>
</comp>
<comp lib="0" loc="(770,590)" name="Splitter">
<a name="bit0" val="1"/>
<a name="bit1" val="0"/>
<a name="bit10" val="0"/>
<a name="bit11" val="0"/>
<a name="bit12" val="0"/>
<a name="bit13" val="0"/>
<a name="bit14" val="0"/>
<a name="bit15" val="0"/>
<a name="bit16" val="0"/>
<a name="bit17" val="0"/>
<a name="bit18" val="0"/>
<a name="bit19" val="0"/>
<a name="bit2" val="0"/>
<a name="bit20" val="0"/>
<a name="bit21" val="0"/>
<a name="bit22" val="0"/>
<a name="bit23" val="0"/>
<a name="bit24" val="0"/>
<a name="bit25" val="0"/>
<a name="bit26" val="0"/>
<a name="bit27" val="0"/>
<a name="bit28" val="0"/>
<a name="bit29" val="0"/>
<a name="bit3" val="0"/>
<a name="bit30" val="0"/>
<a name="bit31" val="0"/>
<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"/>
<a name="bit9" val="0"/>
<a name="facing" val="west"/>
<a name="incoming" val="32"/>
</comp>
<comp lib="0" loc="(850,130)" name="Pin">
<a name="appearance" val="NewPins"/>
<a name="facing" val="south"/>
<a name="label" val="Control_3"/>
<a name="width" val="3"/>
</comp>
<comp lib="0" loc="(960,420)" name="Pin">
<a name="appearance" val="NewPins"/>
<a name="facing" val="west"/>
<a name="label" val="Result_32"/>
<a name="output" val="true"/>
<a name="radix" val="16"/>
<a name="width" val="32"/>
</comp>
<comp lib="1" loc="(650,700)" name="XOR Gate">
<a name="size" val="30"/>
<a name="width" val="16"/>
</comp>
<comp lib="1" loc="(660,530)" name="OR Gate">
<a name="width" val="32"/>
</comp>
<comp lib="1" loc="(750,590)" name="XOR Gate">
<a name="size" val="30"/>
<a name="width" val="31"/>
</comp>
<comp lib="1" loc="(970,530)" name="XOR Gate">
<a name="label" val="SET0"/>
<a name="size" val="30"/>
<a name="width" val="32"/>
</comp>
<comp lib="2" loc="(870,420)" name="Multiplexer">
<a name="select" val="3"/>
<a name="width" val="32"/>
</comp>
<comp lib="3" loc="(1030,520)" name="Comparator">
<a name="width" val="32"/>
</comp>
<comp lib="3" loc="(660,300)" name="Adder">
<a name="width" val="32"/>
</comp>
<comp lib="3" loc="(660,410)" name="Subtractor">
<a name="width" val="32"/>
</comp>
<comp lib="8" loc="(583,660)" name="Text">
<a name="text" val="LUI"/>
</comp>
<comp lib="8" loc="(627,494)" name="Text">
<a name="text" val="OR"/>
</comp>
<comp lib="8" loc="(636,264)" name="Text">
<a name="text" val="ADD"/>
</comp>
<comp lib="8" loc="(640,369)" name="Text">
<a name="text" val="SUB"/>
</comp>
<comp lib="8" loc="(714,561)" name="Text">
<a name="text" val="SLT"/>
</comp>
<wire from="(1030,520)" to="(1050,520)"/>
<wire from="(260,220)" to="(360,220)"/>
<wire from="(260,240)" to="(430,240)"/>
<wire from="(270,460)" to="(270,620)"/>
<wire from="(270,460)" to="(680,460)"/>
<wire from="(270,620)" to="(660,620)"/>
<wire from="(360,220)" to="(360,290)"/>
<wire from="(360,290)" to="(360,400)"/>
<wire from="(360,290)" to="(620,290)"/>
<wire from="(360,400)" to="(360,510)"/>
<wire from="(360,400)" to="(620,400)"/>
<wire from="(360,510)" to="(610,510)"/>
<wire from="(430,240)" to="(430,310)"/>
<wire from="(430,310)" to="(430,420)"/>
<wire from="(430,310)" to="(620,310)"/>
<wire from="(430,420)" to="(430,550)"/>
<wire from="(430,420)" to="(620,420)"/>
<wire from="(430,550)" to="(430,700)"/>
<wire from="(430,550)" to="(610,550)"/>
<wire from="(430,700)" to="(510,700)"/>
<wire from="(530,680)" to="(740,680)"/>
<wire from="(530,690)" to="(550,690)"/>
<wire from="(550,690)" to="(550,710)"/>
<wire from="(550,690)" to="(610,690)"/>
<wire from="(550,710)" to="(610,710)"/>
<wire from="(650,670)" to="(650,700)"/>
<wire from="(650,670)" to="(740,670)"/>
<wire from="(660,300)" to="(820,300)"/>
<wire from="(660,410)" to="(680,410)"/>
<wire from="(660,530)" to="(700,530)"/>
<wire from="(670,610)" to="(680,610)"/>
<wire from="(680,390)" to="(680,410)"/>
<wire from="(680,390)" to="(830,390)"/>
<wire from="(680,410)" to="(680,460)"/>
<wire from="(680,580)" to="(680,600)"/>
<wire from="(680,580)" to="(710,580)"/>
<wire from="(680,600)" to="(710,600)"/>
<wire from="(680,610)" to="(750,610)"/>
<wire from="(700,400)" to="(700,530)"/>
<wire from="(700,400)" to="(830,400)"/>
<wire from="(750,590)" to="(750,600)"/>
<wire from="(760,660)" to="(790,660)"/>
<wire from="(770,410)" to="(770,590)"/>
<wire from="(770,410)" to="(830,410)"/>
<wire from="(790,420)" to="(790,660)"/>
<wire from="(790,420)" to="(830,420)"/>
<wire from="(820,300)" to="(820,380)"/>
<wire from="(820,380)" to="(830,380)"/>
<wire from="(850,130)" to="(850,460)"/>
<wire from="(870,420)" to="(890,420)"/>
<wire from="(890,420)" to="(890,540)"/>
<wire from="(890,420)" to="(910,420)"/>
<wire from="(890,540)" to="(930,540)"/>
<wire from="(910,420)" to="(910,520)"/>
<wire from="(910,420)" to="(930,420)"/>
<wire from="(910,520)" to="(930,520)"/>
<wire from="(930,420)" to="(930,510)"/>
<wire from="(930,420)" to="(960,420)"/>
<wire from="(930,510)" to="(990,510)"/>
<wire from="(970,530)" to="(990,530)"/>
</circuit>
</project>