您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 酒店餐饮 > 北工大-VerilogHDL开发多周期处理器
VerilogHDL开发多周期处理器-MIPS-Lite2实验报告学号__________17110113__________姓名___________王禹心___________指导教师___________朱文军___________提交日期__________2019.6.5_________成绩评价表报告内容报告结构报告最终成绩□丰富正确□基本正确□有一些问题□问题很大□完全符合要求□基本符合要求□有比较多的缺陷□完全不符合要求报告与Project功能一致性报告图表总体评价□完全一致□基本一致□基本不一致□符合规范□基本符合规范□有一些错误□完全不正确教师签字:________________________目录一、MIPS顶层设计二、数据通路中的模块设计1、PC2、NPC3、MUX4、IM5、GPR6、ALU7、EXT8、DM9、sb10、lb11、controller三、测试程序四、机器指令描述五、运行结果六、问答七、收获体会附:Modelsim模块目录一、MIPS顶层设计二、数据通路中的模块设计1、PC模块接口信号名方向描述PCWrIPC写使能1:允许NPC写PC内部寄存器;0:禁止写入PC内部寄存器clkI时钟信号restI复位信号,高有效inPC[31:0]I下一条指令的地址outPC[31:0]O指令存储器地址功能定义功能名称功能描述复位将PC恢复为初始值,即将其地址置为0x00003000保存NPC并输出在每个clk的上升沿保存NPC,并输出2、NPC模块接口信号名方向描述NPCop[1:0]INPC的控制信号00:pc+4;01:pc+imm;10:j,jal指令执行时pc结果;11:jr指令执行时pcpc[31:0]I初始PC值jrpc[31:0]I31号寄存器中储存的pc地址Target[25:0]I指令outPC[31:0]O计算得到的下一个PC值Pc4O执行Jal指令时要写入31号寄存器的pc值功能定义功能名称功能描述计算PC值根据不同控制信号计算下一个PC值3、MUX(1)MUX_32(2)MUX_32_4(3)MUX_54、IM信号名方向描述Addr[9:0]IPc地址Dout[31:0]OPc地址的mips指令5、GPR模块接口信号名方向描述clkI时钟信号restI复位信号,高有效OFI运算是否溢出0:否1:是datain[31:0]I写入寄存器的32位数据RegWrI寄存器写使能,高有效Rd[4:0]I表示目的操作数的寄存器,用来保存操作的结果Rt[4:0]I表示第二个源操作数的寄存器Rs[4:0]I表示第一个源操作数的寄存器BusA[31:0]ORs寄存器的数据BusB[31:0]ORt寄存器的数据功能定义功能名称功能描述读取寄存器中的数据通过Rt、Rs提供的寄存器地址将对应数据通过BusA、BusB输出向寄存器中写入数据通过Rd提供的寄存器地址将datain输入的数据储存在对应寄存器中6、ALU模块接口信号名方向描述Opcode[5:0]IOpcode码busA[31:0]I32位A运算数busB[31:0]I32位B运算数ALUCtrl[2:0]IALU运算模式ALUout[31:0]O32位运算结果OFO运算是否溢出0:否1:是zreoOALU计算结果为0标志1:计算结果为00:计算结果非0功能定义功能名称功能描述ADD对两个操作数执行加运算SUB对两个操作数执行减运算OR对两个操作数执行或运算取立即数高位对第二个操作数取低16位作为高16位组成32位数7、EXT模块接口信号名方向描述imm[15:0]I16位立即数Extop[1:0]I功能选择out[31:0]O32位立即数功能定义功能名称功能描述零扩展当ExtOP为00时,进行零扩展符号扩展当ExtOP为01时,进行符号扩展高位扩展当ExtOP为10时,进行高位扩展8、DM模块接口信号名方向描述clkI时钟信号Addr[9:0]I单元地址输入din[31:0]I存储数据输入weI存储使能信号Dout[31:0]O存储数据输出功能定义功能名称功能描述读数据根据寻址信号来进行数据的读取写数据当写使能为1时,根据寻址信号来进行数据的写入9、sb模块接口信号名方向描述busB[31:0]I存储数据输入DMout[31:0]I32位DM寄存器输出Addr[1:0]I单元地址输入SB_out[31:0]O存储数据输出10、Lb模块接口信号名方向描述DMin[31:0]I32位DM寄存器输入addr[1:0]I单元地址输入DMout[31:0]O32位DM寄存器输出11、Controller模块接口信号名方向描述opcode[5:0]I6位指令操作码funct[5:0]I函数码,用来选择op域的一个特定的操作ZeroIALU计算结果是否为01:为00:不为0ClkI时钟信号ResetI复位信号PCwrO控制PC更改IRWrOIR寄存器的控制信号extopO判断扩展类型GPRWrO是否将数据写入寄存器堆中0:不写入1:写入DMwrO是否将数据写数据存储器中0:不写入1:写入Sb_selO是否SB指令Lb_selO是否LB指令ALUop[2:0]OALU的控制端000:ADD001:SUB010:OR011:取立即数高位WDSel[1:0]O选择写入寄存器的数据00:ALUOUT01:R(DM中的数据)10:{Jal_O,2’b00}Npcop[1:0]ONPC模块的控制信号。GPRsel[1:0]O选择写入寄存器的数据00:ALUOUT01:R(DM中的数据)10:{Jal_O,2’b00}三、测试程序机器码:ori$16,$0,1ori$17,$0,3ori$8,$0,1ori$12,$0,0xabablui$13,10start:addu$4,$0,$16addu$5,$0,$8jalnewaddaddu$16,$0,$2subu$17,$17,$8beq$16,$17,startori$8,$0,4addiu$24,$0,0x7fffffffaddiu$9,$24,3addiu$10,$24,5addu$0,$0,$0#addi$22,$24,6start2:sw$9,-4($8)sw$1,0($8)lb$14,3($8)sb$12,7($8)lw$15,4($8)sb$4,-3($8)lb$18,-1($8)addu$4,$0,$8addu$5,$0,$9jalnewaddslt$25,$10,$8beq$25,$0,end2slt$20,$12,$4beq$20,$0,end1lui$12,65535end1:ori$0,$0,1lui$19,0xefefaddiu$3,$0,0xababcdcdstart3:addiu$4,$3,2addi$23,$3,5jalnewaddaddu$8,$0,$2addu$4,$0,$8addu$5,$0,$9jalnewaddaddu$9,$0,$2addu$9,$8,$0lui$10,0x69beq$8,$9,start4beq$0,$0,start3start4:jendnewadd:addu$2,$4,$5addi$0,$12,0x1234jr$31end2:addi$26,$0,0x5678end:MARS:四、机器指令描述助记符opcodefunction功能addu000000100001rd-rs+rtaddi001000rt-rs+(sign-extend)immediateaddiu001001rt-rs+(zero-extend)immediatesubu000000100011rd-rs-rtslt000000101010if(rsrt)rd=1elserd=0ori001101rt-rs|(zero-extend)immediatelw100011rt-memory[rs+(sign-extend)immediate]sw101011memory[rs+(sign-extend)immediate]-rtbeq000100if(rs==rt)PC-PC+4+(sign-extend)immediate2lui001111rt-immediate*65536j000010PC-(PC+4)[31..28],address,0,0jr000000001000PC-rsjal000011$31-PC+4;PC-(PC+4)[31..28],address,0,0lb100000GPR[rt]←memory[GPR[base]+offset]sb101000memory[GPR[base]+offset]←GPR[rt]五、运行结果GPRDM六、问答状态机设计通常没有唯一答案。Figure3为2个均可行的状态机。状态机设计思路的主要差异在于在译码状态后,根据指令的性质设置了不同的状态分支。每位设计者的设计构思可能都不尽相同。请详细描述你的设计构思,特别是描述你为什么要这样设计状态分支。J指令(包括JR,JAL,J)经过s0,s1,s9这一回路,因为他们都属于无条件转移指令。BEQ指令经过s0,s1,s8这一回路,因为属于条件转移指令。ADDU,SUBU,ORI,LUI同为运算指令,经过部件有都相同,所以将他们安排在同一个分支中。LW,SW指令在一个大回路中,因为他们同属于存取指令,但是LW,SW经过的部件不全都一样,所以又有分支。七、收获体会这是最后一个课设,意味着这门课也学到了尾声,能感受到课设的难度正在逐渐提升。对于这次的新指令编写的过程还算顺利,初始状态机掌握的还可以,但控制器弄得有点不明白,就像老师所说的没太弄懂单周期和多周期的差别,因此也得了个不是很好的分数。通过这三次课设我学到了很多东西,能看出来老师安排的每次课设都很用心,和课堂知识相结合,一步步加深学习,学到了很多有用的东西。
本文标题:北工大-VerilogHDL开发多周期处理器
链接地址:https://www.777doc.com/doc-4871482 .html