1
一、实验目标
实验目标:设计一个简单的CPU(中央处理器)。这个CPU有基本的指令集,我们将利用它的指令集生成一个非常简单的程序来验证它的性能。为简单起见,我们将只考虑CPU、寄存器、内存和指令集之间的关系。也就是说,我们只需要考虑以下项目:读/写寄存器,读/写内存和执行指令。
二、电路图
三、波形图
实验一 计算(学号后4位的前1、2位 + 第3、4位)(44+05),对应的指令如下:
The contents in RAM:
0 : 022A; Load 2A
1 : 032B; ADD 2B
2 : 012C; Store 2C
3 : 0C00; Halt
2a : 002C;
2b : 0005;
2a : 0016;
2b : 000A;
The content in RAM addressed of 2b is 0020(H).
首先PC指向0号地址,将0号地址传给地址寄存器MAR,MAR一开始指向00,随后CPU从ram中取出0号地址的内容022A,并将指令中的地址2A传给MAR,指令码02传给指令寄存器IR,因此ramout跳至022A,然后MAR跳至2A,从ram中取出2A地址中的内容002C传至ACC,ramout变为002C,然后ACC变为002C,之后(PC+1) -> PC。
PC指向1号地址,传给MAR,MAR跳向01,CPU从ram中取出1号地址的内容032B,ramout变为032B,指令码03传至IR,地址2B传至MAR,CPU从ram中取出2B地址的内容0005,ramout跳至0005,执行指令后acc中内容变为44+05,因此acc跳为0031,随后(PC)+1->PC。
PC指向2号地址,传给MAR,MAR跳向02,CPU从ram中取出2号地址的内容012C,ramout变为012C,指令码01传至IR,地址2C传至MAR,CPU从ram中取出2C地址的内容0000,ramout跳回0000,执行指令将ACC中内容0031存储到2C地址中,ramin跳到0031,存储后2C地址中的内容发生变化,从0000变到0031,因此ramout中同步输出2C中的内容,也从0000跳到0031,然后PC指向下一地址。
PC指向3号地址,执行Halt指令,程序结束
实验四: 计算1+2+3+..+100的和
指令1: 02A0: 读取寄存器A0中的值(0)到累加器ACC中;
指令2: 01A4: 将累加器中(0)的值存入A4中;
实现了:sum=0;
指令3: 02A2: 读取寄存器A2中的值(100)到累加器ACC中
指令4: 01A3: 将累加器ACC中的值存入A3.
实现了:temp=100;
指令5: 02A4: 读取寄存器A4中的值到累加器ACC中
指令6: 03A3: 将累加器ACC中的值与A3相加
指令7: 01A4: 将累加器ACC中的值存入A4中
指令8: 02A3: 读取寄存器A3中的数据放入累加器CC中
指令9: 04A1: 将累加器ACC里值减去A1(1)中的值
指令10:01A3: 将累加器中ACC的值存入A3中
实现了:loop:sum=sum+temp
指令11:0504: 判断累加器ACC中的值是否大于0,若判断值为真则回到指令5
实现了:if temp>0 goto loop;
指令12:0C00: 结束
四、代码