# computer
**Repository Path**: zzzzzec/computer
## Basic Information
- **Project Name**: computer
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2021-11-11
- **Last Updated**: 2021-11-11
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# CSDlab
## Verilog 命名规范
+ 模块:模块名 module 实例化时在后面加数字 第一个实例化 module0 第二个实例化 module1 ... 以此类推
+ 线网:未定
+ 引脚:未定
另: 1.模块实例化 必须 使用 名称关联,不可以使用 位置 关联。
例如 moduleA(.A(A),.B(B)->正确 moudle(A,B)->不允许
## 实验1
### 10.2
张恩赐:完成了部分指令集
### 10.3
张恩赐:完成第一阶段指令
INCLUDE
算数逻辑运算:22
位移指令:6
数据移动:4
分支跳转:12(按照指导书)
一共44条指令
Yibin Zhang:
Finished simple debuger
INCLUDE
cmd_si,cmd_info,cmd_x
### 10.4
徐子涵:完成cmd_w,cmd_d
### 10.11
张恩赐:完成访存指令,可以通过自带的mem.S测试。
+ 访存指令
+ 稍微调整了ui的逻辑,输入错误命令不会退出程序
+ 修改了cmd_x
TODO: 编写测试程序,完善异常处理
### 10.13
张恩赐:完成所有指令,添加了异常处理
TODO: 编写UI,测试指令集
这两个任务可以同时进行
### 10.23
张恩赐:基本完成了 UI
待解决:
+ 表达式求值模块有问题
+ 没有监视点
+ 测试不完善
## 实验2
### 10.21
张恩赐:push 了实验2 ,并且添加了 忽略 规则。只 push 源代码部分。
大家在 push 之前检查一下 , 不要 push vivado 的整个工程。
张恩赐: 完成了DCU的基本架构,按照书上的模型分成了两部分

### 10.22
张益斌: 完成了MCU的基本架构,大家注意文件夹一定不能出现中文名称的路径
### 10.26
张恩赐: 强制更新了 main 分支,大家 push 的时候一定要检查,不要push整个工程
完成了 8 条指令
### 10.27
张恩赐: 重构了代码的整体结构
### 10.31
张恩赐:完成了基本结构,可以通过书上的测试
### 11.1
张恩赐:完成了定向前推,完成了跳转指令,还未测试 跳转指令
### 11.2
张恩赐: 完成了跳转和分支指令,并且通过书上的测试
### 11.4
张恩赐: 重构完成,开始测试
#### C语言测试指南
step0: 先pull代码,保证代码是最新的
step1: 编写C语言测试文件(暂时先不要测试乘法和除法)
代码的框架为
```C
#include "Soc_test.h"
int main(){
int i = 0;
int count = 0;
for (; i < 100; i++)
{
count += 1;
}
if(count == 100)
goto good;
else
goto bad;
bad:
asm volatile(BAD_TRAP);
good:
asm volatile (GOOD_TRAP);
}
```
头文件为
```C
#define GOOD_TRAP ".word 0x34018888 \t\n" //li at,0x8888
#define BAD_TRAP ".word 0x34017777 \t\n" //li at,0x7777
```
使用goto来控制程序的流程,如果正确,则最后at的值为0x00008888,错误则为 0x00007777
step2:
为了消除 return 0 的影响
找到汇编代码中的这一段
```asm
78: 03c0e821 move sp,s8
7c: 8fbe000c lw s8,12(sp)
80: 27bd0010 addiu sp,sp,16
84: 03e00008 jr ra
88: 00000000 nop
```
在相应的coe文件中 把 03e00008 删去,防止PC再次回到 0 ,或者可以让PC跳转到某一个地址
step3:
导入coe文件,比对 波形图 .如果没有结果,可以考虑多仿真一会儿

如果正确的话,大概就是这个样子.如果出现问题,可以对着 QTspim 比较一下, 或者逐条汇编比对.
发现问题 就在微信群里说 或者 发issue