资源描述:
《湘潭大学计算机原理实验四多周期MIPSCPU存储器实验预习报告》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、实验四多周期MIPSCPU+存储器实验一.实验目的1、深入理解MIPS—CPU指令系统的功能和工作原理;2、掌握多周期CPU的工作原理和逻辑功能实现;3、熟练掌握用VerilogHDL语言设计多周期存储器的方法;4、熟练掌握对多周期存储器的仿真实验验证和硬件测试两种调试方法;5、通过对多周期CPU的运行情况进行观察和分析,进一步加深理解。二.实验设备硬件:现代计算机组成原理实验系统(兼)Nios32位嵌入式系统实验开发平台EP1C12Q240Core(TM)i3-3240CPU@3.40GHz3.39GHz1.91G
2、B的内存软件:Quartusll13.0splMicrosoftWindowsxp三.实验内容1、设计一个32位MIPS多周期CPU具体的要求如下:至少运行下列的6类32条MIPS指令。(1)算术逻辑指令and、sub^addi(2)逻辑运算指令and、Or、xor、andi^ori>xori(3)位移指令slRsrRsra(4)条件分支指令beq>bnc、(5)无条件跳转指令j、jr(6)数据传送指令lw、sw2.设计一个存储器一.实验原理与步J-unoTE藍辛dlun「Uo£n46u-斛hszrQszsu-£二r
3、惑巨odA三wnd【9-0二SEPAJOEdN(JrI■e£.fi?Hwise?ip芝pgG一-愚」£更deuo-ldsEsseDOVuot)orj)su
4、Eecri=OdLLgesnTV一onu<3sHclno实现上述原理框图根据功能将其分划分为控制单元(cunit)>执行单元(eunit).指令单元(Emit)以及存储单元(munit)四大模块。(1).控制单元(cunit)是多周期微处理器的核心控制微处理器取指令、指令译码和指令执行等工作。主要由指令译码器控制器(outputscontrol)>算术逻辑运算控制
5、器(ALUcon(rol)两个子模块组成。(2).执行单元(eunit)主要由寄存器堆(registers)和算术逻辑单元(ALU)两个子模块组成。其中奇存器是微处理器最基本的元素MIPS系统的奇存器堆山32个32位寄存器组成而ALU则是微处理器的主耍功能部件执行加、减、比较等算术运算和与、或、或非、杲或等逻辑运算。指令单元(iuni()的作用是决定下一条指令的地址PC值。(3).存储单元(munit)由存储器(memory)>指令寄存器(instructionregister)和存储数据寄存器(memorydata
6、register*)组成。一.实验源代码寄存器元件代码:moduleregfile(rna,rnb,d,wn,we,clk,clrn,qa,qb);input[4:0]rna,rnb,wn;input[31:()]d;inputwc,elk,elm;output[31:0]qa,qb;reg[31:0Jregister[1:31J;//rl-r31assignqa=(rna==0)?0:register[rnal;//readassignqb=(rnb==0)?0:rcgistcr[mb];//read//reset
7、//writealways@(posedgeelkornegedgeclrn)beginif(clrn==0)beginintegeri;for(i=l;i<32;i=i+l)register[i]<=0;endelsebeginif((wn!=0)&&(we==1))register[wn]<=d;endendendmodule32位四选一选择器:modulemux4x32(a0、al卫2,a3,s,y);input[31:0]a0,al,a2,a3;input[1:0]s;output[31:0]y;functi
8、on[31:0]select;input[31:0]a0,al,a2,a3;input[1:0Js;case(s)2rb()0:select=aO;2^01:select=al;2fbl0:select=a2;2'bll:select=a3;endcaseendfunctionassignendmoduleselect(a0,al,a2,a3,s);5位二选一选择器:modulemux2x5(aO,al,s,y);input[4:0]a0,al;inputS;output[4:0Jy;assigny=s?al:aO;
9、cndmodulc32位二选一选择器:modulemux2x32(aO,al,s,y);input[31:0]a(),al;inputS;output[31:0]y;assigny=s?al:aO;endmodule存储器元件:modulemcmem(elk,dataout,datain,addr,we,inclk,outclk);input[