# 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的基本架构,按照书上的模型分成了两部分 ![image](https://user-images.githubusercontent.com/60975422/138298324-486c4b46-3c83-49d7-b02e-5d47cf7045bb.png) ### 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文件,比对 波形图 .如果没有结果,可以考虑多仿真一会儿 ![image](https://user-images.githubusercontent.com/60975422/140334468-4d88c069-66be-49cf-bfe2-ed2ae1f05450.png) 如果正确的话,大概就是这个样子.如果出现问题,可以对着 QTspim 比较一下, 或者逐条汇编比对. 发现问题 就在微信群里说 或者 发issue