计算机组成原理实验
(2)slt $6, $2, $1 至 lw $9, 4($1)
(3)bgtz $9, $2 至 halt
4 烧板
(1) addi $1,$0,8:
当前PC和下一条PC:
Rs寄存器:
计算机组成原理实验
Rt寄存器:
ALU结果及写寄存器数据:
(2) ori $2,$0,2 当前PC和下一条PC:
计算机组成原理实验
Rs寄存器:
Rt寄存器:
ALU结果及写寄存器数据:
计算机组成原理实验
(3) add $3,$2,$1 当前PC和下一条PC:
Rs寄存器:
计算机组成原理实验
Rt寄存器:
ALU结果及写寄存器数据:
六. 实验心得
这次实验中,在设计CPU中各个模块时,遇到的问题并不大。但是,在顶层模块中,由于以前的verilog实验中中间变量的数量远远小于这一次,因而遇到了许多没有遇到过的问题。比如寄存器堆的输出ReadData2和数据存储单元的输入DataIn是同一个变量,但在最早的顶层模块代码中我声明了两个变量,导致CPU在执行存字指令(sw)时出错。再比如在仿真时,因为发现寄存器堆写寄存器时存在问题,为了debug,我为顶层模块增加了几个输出,其中有一个输出的名称为RD,对应指令中的rd寄存器。但是,在CPU中控制单元输出的控制信号中有一个便被命名为RD。因此,在很多次仿真中,RD都不能输出正确的结果,浪费了大量的时间。
在实验中,我遇到的另一个主要的问题是在生成bit文件时多次报错(DRC 23-20)。
计算机组成原理实验
我询问了很多位同学,但都没有解决,最后是在网上找到一篇提及这个错误的博客。根据博客的内容和软件提供的错误信息,我添加了一个文件,并加入了一条命令:
set_property SEVERITY {Warning} [get_drc_checks LUTLP-1] 从而解决了这个错误,生成bit文件。