本项目为哈尔滨工业大学处理器设计实践课程,设计非流水多周期CPU,利用MIPS指令集,将一个指令周期划分为IF、ID、EX、MEM、WB五个机器周期进行实现。
具体实验文档位于lab4_doc
lab4文件夹为处理器设计与实践课程实验4-非流水线CPU实验测试环境。
├── lab_4
│ ├── lab_4.srcs 所有用户编写的源码、仿真文件与约束文件,你在项目中创建的文件可以在这里找到
│ ├── lab4.data 自动化测试所使用的trace文件的文件夹
│ │ ├── cpu_trace 用于对比验证的的trace文件
│ │ ├── data_data.txt 数据缓冲存储器的初始化文件
│ │ ├── inst_data.txt 指令缓冲存储器的初始化文件
│ └── lab_4.xpr 实验所用的项目,直接双击即可打开完整的实验 Vivado 工程
└── readme.md 本文档
测试所用的指令序列:
// 非流水线CPU实验测试
0x0000: 8C 01 00 04 LW $1, 4($0)
0x0004: 8C 02 00 08 LW $2, 8($0)
0x0008: 00 22 18 20 ADD $3, $1, $2
0x000c: 00 22 20 22 SUB $4, $1, $2
0x0010: 00 22 28 24 AND $5, $1, $2
0x0014: 00 22 30 25 OR $6, $1, $2
0x0018: 00 22 38 26 XOR $7, $1, $2
0x001c: 00 22 40 2A SLT $8, $1, $2
0x0020: 00 01 48 80 SLL $9, $1, 0x2 //$9 <- $1 << 2
0x0024: AC 01 00 08 SW $1, 8($0)
0x0028: AC 02 00 04 SW $2, 4($0)
0x002c: 14 06 00 02 BNE $0, $6, 0x2 // taken to 0x38
0x0030: AC 01 00 00 SW $1, 0($0)
0x0034: 08 00 00 00 J 0 // back to start
0x0038: 08 00 00 10 J 0x10 // jumps to 0x40
0x003c: AC 01 00 00 SW $1, 0($0)
0x0040: 8C 00 00 00 LW $0, 0($0)
0x0044: 00 00 00 00 NOP
0x0048: 08 00 00 00 J 0 // back to start
trace:
pc | addr | data |
---|---|---|
00000000 | 01 | 00000001 |
00000004 | 02 | 00000002 |
00000008 | 03 | 00000003 |
0000000c | 04 | f f f f f f f f |
00000010 | 05 | 00000000 |
00000014 | 06 | 00000003 |
00000018 | 07 | 00000003 |
0000001c | 08 | 00000001 |
00000020 | 09 | 00000004 |
00000034 | 00 | 00000000 |
00000040 | 00 | 00000000 |