使用Logisim设计一个简易计算机系统,包含内存,CPU。主要内容是对CPU的ALU、寄存器等实现;设计了简单的指令集,以及简易的汇编器。 最终的结果是实现简单的内存读写与计算。 主要参考bilibili视频博主的视频:BV1wi4y157D3
主体工程是汇编器的Java实现,其中Logisim目录下为对应的汇编指令与电路设计。
使用8位ALU,支持两种逻辑运算与两种数学运算(实际只使用了数学运算) 其中对应关系为:
操作码 | 价格 |
---|---|
00 | AND |
01 | OR |
10 | ADD |
11 | SUB |
8个8位寄存器,使用3位地址对寄存器进行选择。
指令集为32位指令,存在填充情况,从低到高每位表示如下:
0-5 | 6-15 | 16-20 | 21-25 | 26-28 | 29 | 30 | 31 |
---|---|---|---|---|---|---|---|
6位ALU控制码 低2位 | 10位立即数B 低8位 | 5位dst地址 低3位 | 5位src地址 低3位 | 3位未使用 | 1位内存写使能标志 | 1位寄存器/内存选择标志 | 1位寄存器写使能标志 |
仅仅支持 lw, sw, addi, subi, movi指令。
-
进入Logisim目录,SimpleInstructions.asm为样例汇编代码,做简单的运算。
-
使用
java -jar SimpleAssembler.jar SimpleInstructions.asm
进行汇编。asm.hex
为允许Logisim ROM加载的格式。asm.output
为中间文件。 -
打开Logisim软件,加载
SimpleCPU.circ
, 最左侧的ROM模块加载asm.hex
的代码,CTRL+K
开启自动时钟可见CPU完成了预定的操作。