《北工大-Logisim完成单周期处理器开发(共18页).docx》由会员分享,可在线阅读,更多相关《北工大-Logisim完成单周期处理器开发(共18页).docx(18页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上Logisim完成单周期处理器开发实验报告学 号_姓 名_王禹心_指导教师_朱文军_提交日期_2019.5.28_成绩评价表报告内容报告结构报告最终成绩丰富正确 基本正确 有一些问题 问题很大完全符合要求 基本符合要求 有比较多的缺陷 完全不符合要求报告与Project功能一致性报告图表总体评价完全一致基本一致基本不一致符合规范 基本符合规范 有一些错误 完全不正确教师签字:_目录一、总体数据通路结构设计图二、数据通路中的模块设计图1、IFU2、GPR3、ALU4、EXT5、DM6、Controller三、控制器设计四、机器指令描述五、测试程序六、运行结果七、问答八、
2、收获体会附:Logisim模块目录一、 总体数据通路结构设计图 二、数据通路中的模块设计图1、IFU模块接口信号名方向描述ZeroIALU计算结果1:计算结果为00:计算结果非0ClkI时钟信号ResetI复位信号1:复位0:无效Insout31:0O32位MIPS指令功能定义序号功能名称描述1复位当复位信号有效时,PC被设置为0x2取指令根据PC从IM中取出指令3计算下一条指令地址若不是beq指令,则PC-PC+1,若是beq指令,且zero为1,则PC-PC+sign_ext2、GPR信号名方向描述Wd31:0I写入数据的输入RegwriteI读写控制信号1:写操作0:读操作ClkI时钟信
3、号ResetI复位信号1:复位0:无效A14:0I读存取器地址1A24:0I读存取器地址2A34:0I写寄存器地址Rd131:0O32位数据输出1Rd231:0O32位数据输出23、ALU模块接口信号名方向描述A31:0I32位输入数据1B31:0I32位输入数据22F1:0I控制信号01:或运算10:减法11加法C31:0O32位数据输出功能定义序号功能名称描述1或A|B2减A-B3加A+B4、EXT模块接口信号名方向描述Imm1615:0I16位数据输入Extop1:0I控制信号00:高位补001:低位补010:符号扩展Ext32O32位数据输出功能定义序号功能名称描述1高位补0高16位补
4、02低位补0低16位补03符号扩展符号位扩展5、DM模块接口信号名方向描述D31:0I写入数据的输入MemwriteI读写控制信号1:写操作ClkI时钟信号ResetI复位信号1:复位0:无效A4:0I操作寄存器地址Out31:0032位数据输出功能定义序号功能名称描述1复位当复位信号有效时,所有数据被设置为02读根据输入的寄存器地址读出数据3写根据输入的地址把输入的数据写入6、Controller模块接口信号名方向描述Op5:0I六位opFunc5:0I六位functionRegdst0写地址控制Alusrc0cpu第二操作数选择控制Mentoreg0Dm读控制Regwrite0GPR读写控
5、制Memwrite0DM写控制,写入GPR数据选择Npc_sel0Beq指令标志Extop0控制ext扩展方式Aluop1:00控制cpu进行相应运算三、控制器设计单周期真值表FuncN/AOpaddsuborilwswbeqluiRegDst1100XX0ALUSrc0011101MentoReg0001XXXRegWrite1111002MemWrite0000100Npc_sel0000010ExtopXX000X1ALUctrAddsubtractoraddaddsubtractX四、机器指令描述助记符opcodefunction功能addurd-rs+rtsuburd-rs-rtor
6、irt - rs | (zero-extend)immediatelwrt - memoryrs + (sign-extend)immediateswmemoryrs + (sign-extend)immediate - rtbeqif (rs = rt) PC - PC+4 + (sign-extend)immediate2luirt - immediate*65536jPC - (PC+4)31.28,address,0,0五、测试程序lui$t0,0x0004 #lui 测试程序要实现:立即数 0x0004 加载至 t0 寄存器的高位 lui$t1,0x0008 #lui 测试程序要实现
7、:立即数 0x0008 加载至 t1 寄存器的高位 ori$t3,$zero,0x #ori 测试程序要实现: zero 寄存器中的内容与立即数 0x 进行或运算,储存在 t3 寄存器中 sw$t0,4($t3) #sw 测试程序要实现:把 t0 寄存器中值(1Word),存储到 t3 的值再加上偏移量 4, 所指向的 RAM 中 sw$t0,8($t3) #sw 测试程序要实现:把 t0 寄存器中值(1Word),存储到 t3 的值再加上偏移量 8, 所指向的 RAM 中 loop:add$t2,$t2,$t1 #add 测试程序要实现:t1 寄存器中的值加上 t2 寄存器中的值后存到 t2
8、 寄存器中 lw$t4,4($t3) #lw 测试程序要实现:把 t3 寄存器的值+4 当作地址读取存储器中的值存入 t4 lui$t5,0x0004 #lui 测试程序要实现:立即数 0x0004 加载至 t5 寄存器的高位 sub$t7,$t6,$t5 #sub 测试程序要实现:t6 寄存器中的值减去 t5 寄存器中的值后存到 t7 寄存器中 add$t0,$t0,$t5 #sub 测试程序要实现:t0 寄存器中的值减去 t5 寄存器中的值后存到 t0 寄存器中 add$t6,$t6,$t0 #add 测试程序要实现:t6 寄存器中的值加上 t0 后存到 t6 寄存器中 beq$t0,$t
9、1,loop #beq 测试程序要实现:判断 t0 的值和 t1 的值是否相等,相等转 loop add$t0,$t0,$t5 #add 测试程序要实现:t0 寄存器中的值加上 t5 后存到 t0 寄存器中 lui$v0,0x0001 #lui 测试程序要实现:立即数 0x0001 加载至 v0 寄存器的高位 lui$v1,0x0002 #lui 测试程序要实现:立即数 0x0002 加载至 v1 寄存器的高位 add$v0,$v0,$v1 #add 测试程序要实现:v0 寄存器中的值加上 v1 后存到 v0 寄存器中 add$v1,$v0,$v1 #add 测试程序要实现:v0 寄存器中的值
10、加上 v1 后存到 v1 寄存器中 ori$a0,$v0,0xffff #ori 测试程序要实现:v0 寄存器中的内容与立即数 0xffff 进行或运算,储存在 a0 寄存器中 sub$a1,$a0,0x0000ffff #sub 测试程序要实现:a0 寄存器中的值减去立即数 0x0000ffff 后存到 a1 寄存器中 loop2:sub$a2,$v1,$v0 #sub 测试程序要实现:v1 寄存器中的值减去 v0 中的值后存到 a2 寄存器中 add$a1,$a2,$a1 #add 测试程序要实现:a2 寄存器中的值加上 a1 后存到 a1 寄存器中 beq$a1,$v1,loop2 #b
11、eq 测试程序要实现:判断 a1 的值和 v1 的值是否相等,相等转 loop2机器码:3c 3c 340b2000 ad 8d6c0004 3c0d0004 01cd7822 010d4020 01c87020 1109fff9 010d4020 3c 3c 3444ffff 3c 3421ffff 00c52820 10a3fffdMARS:六、运行结果GPRDM七、问答1. 请充分利用Error! Reference source not found.中的X可以将控制信号化简为最简单的表达式。RegDst=add+subALUSrc=ori+lw+swMemtoReg=lwRegWrit
12、e=add+sub+ori+lwMemWrite=swNpc_sel=beqExtop=lw+swALUctr0=(subu+beq)ALUctr1=ori+luiALUctr2=02. 对于Error! Reference source not found.、Error! Reference source not found.中的与或阵列来说,1个3输入与门最终转化为2个2输入与门,1个4输入与门最终转化为3个2输入与门,依次类推。或阵列也类似计算。那么a) 请给出采用Error! Reference source not found.、Error! Reference source not
13、 found.中的方法设计的每个控制信号所对应的2输入与门、2输入或门、非门的数量。2输入与门2输入或门非门RegDst17110RegWrite32410ALUsrc2035PCsrc505Memwrite502MemRead503MentoReg503Extop1524ALUctr11013ALUctr22129b) 请与第Error! Reference source not found.项对比,你更喜欢哪种设计方法。为什么第一种的每个控制信号都需要对其分配单独的与门、或门,因为它是直接对 op、func 的 12 位或 6 位信号的逻辑表达式,所以没有针对性并且浪费元件。 而第二种是先把 op、func 变成相应的指令信号,再由指令信号生成控制信号。当一种指令对应多种控制信号为 1 时,不必再对每个信号再单独为这个指令分配与门,而可以共用这个指令的信号,再添加或门就可以了。八、收获体会第一次课设主要重新熟悉了Logisim软件,并且使用较为简单的方式做出了较为基础的几个指令。通过本次课设我更好的理解了每条指令的用途,调用指令完成一些存储功能。在连线中我遇到最大的困难是IFU的设计,其中指令的跳转对于我比较难编写,在逻辑上出现一些问题导致存储器的数据存储的不太对。经过修改后我更加理解了每个模块的运行过程,为下次课设打好基础。专心-专注-专业
限制150内