MIPS单周期CPU实验报告_第1页
MIPS单周期CPU实验报告_第2页
MIPS单周期CPU实验报告_第3页
MIPS单周期CPU实验报告_第4页
MIPS单周期CPU实验报告_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、/*/*/*计算机组成原理实验实验报告实验二)学院名称专业(班级)学生姓名:学号:时间:2017年11月25日成绩:实验二:单周期CPU设计与实现一.实验目的掌握单周期CPU数据通路图的构成、原理及其设计方法;掌握单周期CPU的实现方法,代码实现方法;认识和掌握指令与CPU的关系;掌握测试单周期CPU的方法;掌握单周期CPU的实现方法。.实验内容设计一个单周期的MIPSCPU,使其能实现下列指令:=算术运算指令(1)addrd,rs,rt(说明1:以助记符表示,是汇编指令;以代码表示,是机器指令)000000rs(5位)rt(5位)rd(5位)reserved功能:rdrs+rt。reserv

2、ed为预留部分,即未用,一般填“0”。2)addirt,rs,immediate000001rs(5位)rt(5位)immediate(16位)功能:rtrs+(sign-extend)immediate;immediate符号扩展再参加“加”运算。3)subrd,rs,rt000010rs(5位)rt(5位)rd(5位)reserved=功能:rdrs-rt逻辑运算指令(4)orirt,rs,immediate010000rs(5位)rt(5位)immediate(16位)功能:rtrs|(zero-extend)immediate;immediate做“0”扩展再参加“或”运算。(5)an

3、drd,rs,rt010001rs(5位)rt(5位)rd(5位)reserved功能:rdrs&rt;逻辑与运算。(6)orrd,rs,rt010010rs(5位)rt(5位)rd(5位)reserved功能:rdrs|rt;逻辑或运算。移位指令7)sllrd,rt,sa011000未用rt(5位)rd(5位)sareserved功能:rdrt比较指令8)sltrd,rs,rt带符号数011100rs(5位)rt(5位)rd(5位)reserved功能:if(rs存储器读/写指令(9)swrt,immediate(rs)写存储器100110rs(5位)rt(5位)immediate(16位)

4、功能:memoryrs+(sign-extend)immediatejrt;immediate符号扩展再相加。即将rt寄存器的内容保存到rs寄存器内容和立即数符号扩展后的数相加作为地址的内存单元中。1O)lwrt,immediate(rs)读存储器100111rs(5位)rt(5位)immediate(16位)功能:rtjmemoryrs+(sign-extendjimmediate;immediate符号扩展再相加。即读取rs寄存器内容和立即数符号扩展后的数相加作为地址的内存单元中的数,然后保存到rt寄存器中。=分支指令(11)beqrs,rt,immediate110000rs(5位)rt

5、(5位)immediate(16位)功能:迁(rs=rt)pcJpc+4+(sign-extend)immediate2elsepcJpc+4特别说明:immediate是从PC+4地址开始和转移到的指令之间指令条数oimmediate符号扩展之后左移2位再相加。为什么要左移2位?由于跳转到的指令地址肯定是4的倍数(每条指令占4个字节),最低两位是“00”,因此将immediate放进指令码中的时候,是右移了2位的,也就是以上说的“指令之间指令条数”。12)bners,rt,immediate110001rs(5位)rt(5位)immediate功能:迁(rs!=rt)pcJpc+4+(sig

6、n-extend)immediate0)pcJpc+4+(sign-extend)immediate跳转指令14)jaddr111000addr27.2=停机指令(15)halt11111100000000000000000000000000(26位)功能:停机;不改变PC的值,PC保持不变。/*/*/*/*实验原理时间周期:单周期CPU指的是一条指令的执行在一个时钟周期内完成,然后开始下一条指令的执行,即一条指令用一个时钟周期完成。电平从低到高变化的瞬间称为时钟上升沿,两个相邻时钟上升沿之间的时间间隔称为一个时钟周期。时钟周期一般也称振荡周期(如果晶振的输出没有经过分频就直接作为CPU的工作

7、时钟,则时钟周期就等于振荡周期。若振荡周期经二分频后形成时钟脉冲信号作为CPU的工作时钟,这样,时钟周期就是振荡周期的两倍。CPU在处理指令时,一般需要经过以下几个步骤:取指令(IF):根据程序计数器PC中的指令地址,从存储器中取出一条指令,同时,PC根据指令字长度自动递增产生下一条指令所需要的指令地址,但遇到“地址转移”指令时,贝I控制器把“转移地址”送入PC,当然得到的“地址”需要做些变换才送入PC。指令译码(ID):对取指令操作中得到的指令进行分析并译码,确定这条指令需要完成的操作,从而产生相应的操作控制信号,用于驱动执行状态中的各种操作。指令执行(EXE):根据指令译码得到的操作控制信

8、号,具体地执行指令动作,然后转移到结果写回状态。存储器访问(MEM):所有需要访问存储器的操作都将在这个步骤中执行,该步骤给出存储器的数据地址,把数据写入到存储器中数据地址所指定的存储单元或者从存储器中得到数据地址单元中的数据。结果写回(WB):指令执行的结果或者访问存储器中得到的数据写回相应的目的寄存器中。单周期CPU,是在一个时钟周期内完成这五个阶段的处理。IF,指令译码id.播令执行*EXE”存储器访问MEM结果写回,图1单周期CPU指令处JS过程屮对于不同的指令,需要执行的步骤是不同的,其中取字指令(1W)需要执行全部五个步骤。因此,CPU的时间周期由取字指令决定。指令类型:MIPS的

9、三种指令类型:R类型,312625212016151110650oprsrtrdsafunct石位5位5位5位5位6位其中,op:为操作码;rs:只读。为第1个源操作数寄存器,寄存器地址(编号)是0000011111,001F;rt:可读可写。为第2个源操作数寄存器,或目的操作数寄存器,寄存器地址(同上)rd:只写。为目的操作数寄存器,寄存器地址(同上);sa:为位移量(shiftamt),移位指令用于指定移多少位;funct:为功能码,在寄存器类型指令中(R类型)用来指定指令的功能与操作码配合使用;immediate:为16位立即数,用作无符号的逻辑操作数、有符号的算术操作数、数据加载(Lo

10、ad)/数据保存(Store)指令的数据地址字节偏移量和分支指令中相对程序计数器(PC)的有符号偏移量;address:为地址。在本CPU设计中,由于指令的类型较少,所以所有指令均由操作码(op)确定。在R型指令中,功能码(funct)为000000。控制线路图与数据通路:,LLI5rtAViE32AJJJBCLIKiWR1DAddrDataMEMControlExtStlPCWielnsfilemRWaeroEnSelP5.JD1.?Sdddrti?.a.fl.O|PC4l6t1建即32PC创CPCLKRewlDalal,LLI5rtAViE32AJJJBCLIKiWR1DAddrDataM

11、EMControlExtStlPCWielnsfilemRWaeroEnSelP5.JD1.?Sdddrti?.a.fl.O|PC4l6t1建即32PC创CPCLKRewlDalalWlw磁RegisterFile恥MDala2WriteCIq也IDataOuftIDatinIns.MEMRWlAddrreEuhDBdfl帕竝Auuop.aiDataOjiiDarslnstgn/Tzono上图为CPU的数据通路和必要的控制线路图,其中Ins.Mem为指令存储器,Data.Mem为数据存储器。访问存储器时,先给出内存地址,然后由读或写信号控制操作。对于寄存器组,先给出寄存器地址,读操作时,输出端

12、就直接输出相应数据;而在写操作时,在WE使能信号为1,在时钟边沿触发将数据写入寄存器。控制信号:控制信号的作用控制信号名状态“o”状态“1”Reset初始化PC为0PC接收新地址PCWrePC不更改,相关指令:haltPC更改,相关指令:除指令halt外ALUSrcA来自寄存器堆data1输出,相关指令:add、sub、addi、or、and、ori、beq、bne、bgtz、sit、sw、lw来自移位数sa,同时,进行(zero-extend)sa,即卩270,sa,相关指令:sllALUSrcB来自寄存器堆data2输出,相关指令:add、sub、or、and、sll、sit、beq、bn

13、e、bgtz来自sign或zero扩展的立即数,相关指令:addi、ori、sw、lwDBDataSrc来自ALU运算结果的输出,相关指令:add、addi、sub、ori、or、and、sit、sll来自数据存储器(DataMEM)的输出,相关指令:lwRegWre无写寄存器组寄存器,相关指令:beq、bne、bgtz、sw、halt、j寄存器组写使能,相关指令:add、addi、sub、ori、or、and、slt、sll、lw/*/*/*/*/*/*InsMemRW写指令存储器读指令存储器(Ins.Data)/RD读数据存储器,相关指令:lw输出高阻态/WR写数据存储器,相关指令:SW无

14、操作RegDst写寄存器组寄存器的地址,来自rt字段,相关指令:addi、ori、lw写寄存器组寄存器的地址,来自rd字段,相关指令:add、sub、and、or、slt、sllExtSel(zero-extend)immediate(0扩展),相关指令:ori(sign-extend)immediate(符号扩展),相关指令:addi、sw、lw、bne、bne、bgtzPCSrcl.O00:pcpc+4,相关指令:add、addi、sub、or、ori、and、slt、sll、sw、lw、beq(zero=0)、bne(zero=1)、bgtz(sign=1,或zero=1);01:pcp

15、c+4+(sign-extend)immediate,相关指令:beq(zero=1)、bne(zero=0)、bgtz(sign=0,zero=0);10:pc(pc+4)31.28,addr27.2,0,0,相关指令:j;11:未用ALUOp2.0ALU8种运算功能选择(000-111),看功能表ALU功能表ALUOp2.0功能描述000Y=A+B加001Y=A-B减010Y=BAB左移A位011Y=AVB或100Y=AAB与101Y=(AL-taEUiLIhBE1-iDSiaLaSEpcsicIiinQH奄ALUp2:Kl】2|5,151U5(,101uILSOasi.MO;3!_J1I

16、TL厂111111111111115::3-:IJ-3SiX-5A0XI(2)程序计数器(PC)Verilog代码:1.modulePC(2.inputelk,3.input31:0PCin,4.inputPCWre,5.inputReset,6.outputreg31:0PCout7.);8.initialbegin9.PCout=0;10.end11.always(posedgeelk)begin12.if(Reset=0)begin13.PCout=0;14.end15.elseif(PCWre=0)begin16.PCout=PCout;17.end18.elsebegin/*/*/*

17、/*PCout=PCin;endendendmodule仿真截图:iiuc1d.u|怙|ILPPs.1.1网曲.1.1两叫.1.15115,.|w,1,凹叫.1.1flaLOlXllXllXR11(WW(|Wn祁m出jar_r_i1111(3)程序存储器(instructionmemory)Verilog代码:moduleIMemory(inputInsMemRW,input31:0address,outputreg31:0DataOut);6.7.6.7.8.9.10.11.12.13.14.15.16.17.18.initialbeginDataOut=32b111111_0000000_

18、0000000_0000000_00000;$readmemb(C:/Users/ACER/Desktop/-p/project_1/rom_data.coe,mem);endalways(addressorInsMemRW)beginif(InsMemRW=1)beginDataOut31:24=memaddress;DataOut23:16=memaddress+1;DataOut15:8=memaddress+2;DataOut7:0=memaddress+3;endend仿真截图:endmodule仿真截图:(4)ALUVerilog代码:1.moduleALU(2.input2:0A

19、LUopcode,3.input31:0rega,4.input31:0regb,5.outputreg31:0result,6.outputzero,7.outputsign8.);9.assignzero=(result=0)?1:0;10.assignsign=result31;11.always(ALUopcodeorregaorregb)begin12.case(ALUopcode)13.3b000:result=rega+regb;14.3b001:result=rega-regb;15.3b010:result=regbrega;16.3b011:result=rega|regb

20、;17.3b100:result=rega®b;18.3b101:result=(regaregb)?1:0;/不带符号比较19.3b110:begin/带符号比较20.if(regaregb&(rega31=0®b31=0)21.(rega31=1®b31=1)result=1;22.elseif(rega31=0®b31=1)result=23.elseif(rega31=1®b31=0)result=24.elseresult=0;25.end26.3b111:result=regaAregb;27.endcase28.end29.endmodule|0;1

21、;仿真截图:I1卩:門J20DL-5IlliIlliI凹門J何代1In,1HHJOdjko血e.qaj心anRfx4sJt-ji.ilB醫r-icaLt3;L:Cl-coDODdnzC4D031DO11:j:=*:匸;onaDiaaIMDIMCll.MaoMiST:f1_QDML:1OMQDKIQ1QiJDKJOItUDIQDDI21.JQpMODl1aopiaoDZiIDtMODia。$iODIOOD2MaOMOI:aODMODJJDIMCIDIi_21111111J-iTalui丨丨iiiiiiI4.1.1|IM:n,1!11Dill1LD口h,I1.1ILSDni,HD.iijiliji

22、il.vH耳fg310BVtEziionHimu:T301i工叭5DCaJDCmKCOMCQKCDKCCI11DOM(inn?=ODomoo?;fffffffe?aooNooi:0DM0DIDDI0DDI2aODDOODIEfFfffFpFffFFffEfFFffFf:ffFffFFfrDONDOiQ:JtODIQODI0000000j;iiii:ii:ni:i0(i:=:ODIQODIfffffrrd:1Ih|llpl0111(5)寄存器堆Verilog代码:/*/*/*/*1.2.3.4.5.6.7.8.moduleRegFile(inputinputinputinputinputinpu

23、tinputCLK,RST,RegWre,4:0ReadReg1,4:0ReadReg2,4:0WriteReg,31:0WriteData,9.10.output31:0ReadData1,output31:0ReadData211.);12.13.14.reg31:0regFile1:31;/integeri;assign寄存器定义必须用reg类型15.16.17.assignalwaysif18.19.20.21.22.23.24.end25.26.ReadData1=(ReadReg1ReadData2=(ReadReg2(negedgeCLK)begin(RST=0)beginfor

24、(i=1;i32;i=i+1)regFilei=0;end=0)?0:regFileReadReg1;/读寄存器数=0)?0:regFileReadReg2;/必须用时钟边沿触发elseif(RegWre=1&WriteReg!=0)beginregFileWriteReg=WriteData;endendmodule仿真截图:(6)数据存储单元(DataMemory)Verilog代码:1.moduleDataMemory(2.inputelk,3.input31:0address,4.inputRD,5.inputWR,input31:0Dataln,output31:0DataOut);

25、9.reg7:0ram0:127;integeri;initialbegin;for(i=0;i128;i=i+1)rami=0&address128)beginramaddress=DataIn31:24;ramaddress+1=DataIn23:16;ramaddress+2=DataIn15:8;ramaddress+3OMOC伽Xlaoh的i)C0MDIi也OOWdfOfiXOOiiJQ丽W(n:iOIL:71已卅fflX1001(fflfiLowo:OOlODWUjLgAnOIKlazo7wowPH-OHiirHEI、0001(03oawnr331、:lODhom:awt:则1-I

26、j:6DK4HiX遵ILgDQy加加帥X闻x*2Ei1DMDcilIfoSioi血1XMDIon=FfffhiXiaohdoeXauoiacin(3)bgtz$9,$2至haltUaLawV-alu4ibdkabFBI1KtEflt1EWIhbIbI31:0OCQMOME-RlnwPC31:0ocooao34URMKLirt-iisult231:OOKCHOOaDKrisrPCkOCCCCH033HVkiirrliiEL31Cl.I9Oii:i0I1D00044icooaoooOCiEiOiJOOCiICLIOUIJu一理Q呷L4giUPiciWRs寄存器:三CODCT益q社弧註T*吧严严r;frr趣盘QIW鶴Rt寄存器:is,sIEI1D3.gifiuQLJL0firiHRt寄存器:is,sIEI1D3.gifiuQLJL0firiHirw*l:l10ALU结果及写寄存器数据:(2)ori$2,$0,2当前PC和下一条PC:

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论