Lab8 part1report

intro

这个report有三个小exercise
Pasted image 20240915183337.png

Answer 1

lw、add、

Pasted image 20240926142200.png

Answer 2

因为在mips中是byte寻址的,也就是说最小单元对应一个byte,但是每个instruction和datamemory是按照4字节一个字的格式存储的,也就说他们的地址每个差4,这样的话每次换到下一个地址相当于+0x100,因此后面的两位是不变化的,所以可以不考虑后两位,直接存前六位。

Pasted image 20240926142208.png

Answer 3

snake_patterns.asm:
减缓模式切换速度,当累积到一个大数的时候再进行下一次切换,否则蛇会爬得很快。
clock_div:
利用count来进行分频,得到一个比较低的频率。
DispCount:
he counter is large to allow enough time for each LED to fully light up. we could probably increase it a bit further。

Pasted image 20240926145656.png

chatgpt如是说:

问题 1:

哪些MIPS指令会在ControlUnit信号RegWrite为‘stuck at 0’(即RegWrite始终为0)时产生错误输出?换句话说,哪些MIPS指令依赖于控制信号RegWrite?

解答:
RegWrite信号控制是否将结果写入寄存器文件。当RegWrite信号为0时,任何需要将结果写回寄存器的指令都无法正确执行。这些指令包括:

如果RegWrite为0,这些指令将无法将结果写入寄存器,导致错误输出。


问题 2:

为什么指令和数据存储器只需要6位地址?(提示:考虑存储器的大小。)

解答:
6位地址表示2^6 = 64个地址空间。如果指令和数据存储器各自的大小是64个字(word),那么6位地址就足够覆盖所有存储单元。因此,6位地址可以访问64个指令或64个数据存储单元,这对于实验的需求来说是足够的。


问题 3:

如你所见,在本次实验中有三个不同的计数器。一个在snake_patterns.asm文件中,第二个在clock_div模块中,第三个是用于7段显示器的DispCount信号。请简要说明这三个计数器/分频器的功能。

解答: