




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
......《计算机成原理实验实验报告(实验二)学院名:专业(级学生姓:学
号:时
间:2017
年11
月25
日成绩:学习参考
......实:单周期CPU设计与实现一实验的(1)(2)(3)(4)(5)
掌握单周期CPU数据通路图的构、原理及其设计方法;掌握单周期CPU的实现方法,代实现方法;认识和掌握指令与CPU的系;掌握测试单周期的法;掌握单周期CPU的实现方法。二实验容设计一个单周期的M,其能实现下列指令:术算令()addrd,rs,rt(说明:以助符表示,汇编指令;以代码表,是机器指令000000rs(5位位rd(5位reserved功能:←+rt。为留分即用一填0。()rt,rs,immediate000001rs(5位rt(5位immediate(16位)
)功能:←+(sign-extend)immediateimmediate()rdrs,rt
符号扩展再参加“加”运算。000010rs(5位)位)rd(5)reserved功能:←-rt逻辑算令()rtrs,immediate010000rs(5位rt(5位immediate(16位功能:←|(zero-extend)immediate;immediate()rdrs,rt
做“”扩展再参加“或”运算。010001rs(5位rt(5)rd(5位reserved功能:←&rt;逻辑与运。()rd,rs,rt010010rs(5位)位rd(5)reserved功能:←|rt;逻辑或运算。移指()rd,rt,sa011000
未用rt(5位rd(5)sareserved功能:rd<-rt<<(zero-extend)sa,左移sa位,(zero-extend)sa比指()sltrd,rs,rt带号数011100rs(5位rt(5)rd(5)reserved功能:(rs<rt)rd=1elserd=0,具体看表ALU运功能表,带符号储读写令学习参考
......()rt,immediate(rs)写储器100110rs(5位rt(5位immediate(16位功能:memory[rs+(sign-extend)immediate]rt符号展再相加。即将rt寄器的内容保存到rs寄器内容和立即数符号扩展后的数相加作为地址的内存单元中。(10)lwrt,immediate(rs)读储器100111rs(5位)位immediate(16位功能:←memory[rs+;immediate符号展再相加。即读取rs寄存器内容和立即数号扩展后的数相加作为地址的内存单元中的数,然后保存到rt寄存中。支令(11)beqrs,rt,immediate110000rs(5位位)immediate(16位功能:pc←++(sign-extend)immediate<<2elsepc←+4特别说明:immediate是从PC+4地开和移的令间指条
。
符号扩展之后左移2位再加么要左移2位?于跳转到的指令地址肯定是4的倍(每条指令占4个节),最低位是”因此将immediate放进指令码中的时候,是右移了位,也就是以上说的“指令之间指令条数”。12)bners,rt,immediate110001rs(5位rt(5位immediate功能:if(rs!=rt)←+(sign-extend)immediate<<2elsepc←+特别说明:与beq不点是,不等时转移,相等时顺序执行。(13)bgtzrs,immediate110010rs(5位)00000功能:if(rs>0)pc←++<<2elsepc←+跳指(14)addr111000机令(15)111111
addr[27..2]00000000000000000000000000(26位功能:停机;不改变PC的值,保持变。三实验理1.时周:单周期CPU指是一条指令的执行在一个时钟周期内完成,然后开始下一条指令的执行即条指令用一个时钟周期完成平从低到高变化的瞬间称为时钟上升沿个相邻时钟上升沿之间的时间间隔称为一个时钟周期。时钟周期一般也称振荡周期(学习参考
如果晶振输
......出没有经分频就直接作为CPU工作时钟则时钟周期就等于振荡周期。振荡周期经二分频后形成钟脉冲信作为CPU的作时钟,样,时钟周期就是振荡周期的倍)CPU在处理指令时,一般需要经过以下几个步骤:(1)取指(IF)根据程序计数器PC中的令地址从存储器取出一条指令时,PC根指令字长度自动递增产生下一条指令所需要的指令地址,但遇到“地址转移”指令时,则控制器把“转移地址”送入PC,当然得到的“地址”需要做些变换才送入PC。(2)指令码ID)取令操作中得到的指令进行分析并译码定这条指令需要完成的操作,从而产生相应的操作控制信号,用于驱动执行状态中的各种操作。(3)指令行EXE):根指令译码得到的操作控制信号,具体地执行指令动作,然后转移到结果写回状态。(4)存储访(:所有需要访问存储器的操作都将在这个步骤中执行,该步骤给出存储器的数据地址据入到存储器中数据地址所指定的存储单元或者从存储器中得到数据地址单元中的数据。(5)结果回WB)执的结果或者访问存储中得到的数据写回相应的目的寄存器中。单周期CPU,是在一个时钟周期完成这五个阶段的处理。对于不同的指令,需要执行的步骤是不同的中取字指令lw需执行全部五个步骤。因此,CPU的时间周期由取指令决定。2.指类:MIPS的三种指令类型:学习参考
......其中,:为作码;:只。为第个源操作数寄存器,寄存器地址(编号)是00000~11111,00~1F;可读可。为第个源操作数寄存器,或目的操作数寄存器,寄存器地址同上:只。为目操作数寄存器,寄存器地址(同上:为移量(shiftamt位令用于指定移多少位;:为能码,在寄存器类型指令中R类)用来指定指令的功与操作码配合使用;为16位即数用无符号的逻辑操作数有号的算术操作数数加数据保的数据地址字节偏移量和分支指令中相对程序计数)的有符号偏移量;:为址在本CPU设计中,由于指令的类型较少,所以所有指令均由操作码)定。R型指令中,功能码(funct)000000。3.控线图数通:上图为PU的数据通路和必要的制线路图中ns.Mem为令存储器Data.Mem为学习参考
......据存储器。访问存储器时,先给出内存地址,然后由读或写信号控制操作。对于寄存器组,先给出寄存器地址,读操作时,输出端就直接输出相应数据;而在写操作时,在WE使能信号为1,在时钟边沿触发将数据入寄存器。4.控信:控制信号的作用控制信号名
状态“”初始化PC为0PC不改,相关指令:halt
状态“”PC接收新地址PC更改,相关指令:除指令halt
来自寄存器堆data1输出相关指来移位数sa同时,进行令addsubaddiorand、(zero-extend)sa即{{27{0}},sa},beq、bne、bgtz、、、lw相指令sll来自寄存器堆data2输出相关指来sign或zero扩展的立即数关令addsub、or、andsllslt指令addi、oriswlwbeq、bne、bgtz来自运结果的输出,相关指来自数据存储器DataMEM)的输出,令addaddisubor、相关指令lwslt、
无写寄存器组寄存器,相关指令:beq、bne、bgtz、sw、、写指令存储器读数据存储器,相关指令lw写数据存储器,相关指令sw写寄存器组寄存器的地址,来自rt字段,相关指令addi、ori、lw
寄存器组写使能指令、sub、ori、、and、、、lw读指令存储器Ins.Data)输出高阻态无操作写寄存器组寄存器的地址,来自rd字段,相关指令:add、sub、、or、slt、(zero-extend)immediate(0扩展,(sign-extend)immediate符号扩)相关指令:ori相关指令addiswlwbnebne、bgtz00:pc<-,关指令:addaddisubor、ori、and、、、、、beq(zero=0)、bne(zero=1)bgtz(sign=1,或zero=1);
01:pc<-pc+4+(sign-extend)immediate,相关指令beq(zero=1)、bne(zero=0)、bgtz(sign=0,zero=0);10:pc<-{(pc+4)[31..28],addr[27..2],0,0},相关指令;11:未用ALU8种运功能选择(000-111)看功能表功表
功
描
=A+B=A–B
加减学习参考
......
=B<<A=A∨B=A∧B()?1:0if(A<B&&(A[31]==B[31]))Y=1;elseif(A[31]&&!B[31)Y=1;elseY=0;
移位或与比A与B不符比A与B带号Y=A
B
异附:本PU的指令集并未用到A的全部功能。5.主模接说:Memory:指令储,address,指令存储器地址输入口DataIn,指令存储器数据输入端(指令代码输入端口)DataOut,指令存储器数据输出口(指令代码输出端口)InsMemRW,令存储器读写控制信号,为0写,Memory:数据储器address,数据存储器地址输入口DataOut,数据存储器数据输出口/RD,数据存储器读控制信号,为0读/WR,数据存储器写控制信号,为0写File:寄存器ReadReg1,寄器地址输入口ReadReg2,寄器地址输入口WriteReg,数据写入的寄存端口,其地址来源rt或字段WriteData,写入寄存器的数据入端口ReadData1,rs寄器数据输出端口ReadData2,rt寄器数据输出端口WE,写使能信号,为1时,时边沿触发写入RST,寄存器清零信号,为0时寄存器清零:算逻辑元result,ALU运结果zero,算结果标志,结果为0,zero=1;则zero=0sign,算结果标志,结果最高位,则ign=0,数;否则,sign=1,负数四实验材电脑一台,Vivado软一套Basys3板一块。五实验程结学习参考
......1.各指对的制号指令AddAddiSubOriAndOrSllSltSwLwBeqBneBgtzJHalt
PCWre111111111111110
ALUSrcA0000001000000XX
ALUSrcB0101000011000XX
DBDataSrc00000000X1XXXXX
RegWre111111110100000
InsMemRW111111111111111
RD111111111011111
WR111111110111111
RegDst10101111X0XXXXX
ExtSelX1X0XXXX11111XX控制信号AddAddiSubOriAndOrSllSltSwLw
ALUOp000000001011100011010110000000学习参考
......BeqBneBgtzJHalt除异或运算111)外,ALU所功能均被使用。
001001101010XXXPCSrc000110
指令addaddisuborandsltsllswlwbeq(zero=0)bne(zero=1)、bgtz(sign=1,beq(zero=1)、bne(zero=0)、bgtz(sign=0zero=0)j2.主模代及真()制单元(controlunitVerilog代:1.modulecontrolUnit(2.input[5:0]opcode,3.inputzero,4.inputsign,5.outputregPCWre,6.outputregALUSrcA,7.outputregALUSrcB,8.outputregDBDataSrc,9.outputregRegWre,10.outputregInsMemRW,11.outputregRD,12.outputregWR,13.outputregRegDst,14.outputregExtSel,15.outputreg[1:0]PCSrc,16.outputreg[2:0]ALUOp17.);18.initialbegin19.RD=1;20.WR=1;21.RegWre=0;22.InsMemRW=0;23.end学习参考
......24.always@(opcode)begin25.26.6'b000000:begin//add27.PCWre=1;28.ALUSrcA=0;29.ALUSrcB=0;30.DBDataSrc=0;31.RegWre=1;32.InsMemRW=1;33.RD=1;34.WR=1;35.RegDst=1;36.ALUOp=3'b000;37.end38.6'b000001:begin//addi39.PCWre=1;40.ALUSrcA=0;41.ALUSrcB=1;42.DBDataSrc=0;43.RegWre=1;44.InsMemRW=1;45.RD=1;46.WR=1;47.RegDst=0;48.ExtSel=1;49.ALUOp=3'b000;50.end51.6'b000010:begin//sub52.PCWre=1;53.ALUSrcA=0;54.ALUSrcB=0;55.DBDataSrc=0;56.RegWre=1;57.InsMemRW=1;58.RD=1;59.WR=1;60.RegDst=1;61.ALUOp=3'b001;62.end63.6'b010000:begin//ori64.PCWre=1;65.ALUSrcA=0;66.ALUSrcB=1;67.DBDataSrc=0;学习参考
......68.RegWre=1;69.InsMemRW=1;70.RD=1;71.WR=1;72.RegDst=0;73.ExtSel=0;74.ALUOp=3'b011;75.end76.6'b010001:begin//and77.PCWre=1;78.ALUSrcA=0;79.ALUSrcB=0;80.DBDataSrc=0;81.RegWre=1;82.InsMemRW=1;83.RD=1;84.WR=1;85.RegDst=1;86.ALUOp=3'b100;87.end88.6'b010010:begin//or89.PCWre=1;90.ALUSrcA=0;91.ALUSrcB=0;92.DBDataSrc=0;93.RegWre=1;94.InsMemRW=1;95.RD=1;96.WR=1;97.RegDst=1;98.ALUOp=3'b011;99.end100.6'b011000:begin//sll101.PCWre=1;102.ALUSrcA=1;103.ALUSrcB=0;104.DBDataSrc=0;105.RegWre=1;106.InsMemRW=1;107.RD=1;108.WR=1;109.RegDst=1;110.ALUOp=3'b010;111.end学习参考
......112.6'b011100:begin//slt113.PCWre=1;114.ALUSrcA=0;115.ALUSrcB=0;116.DBDataSrc=0;117.RegWre=1;118.InsMemRW=1;119.RD=1;120.WR=1;121.RegDst=1;122.ALUOp=3'b110;123.end124.6'b100110:begin//sw125.PCWre=1;126.ALUSrcA=0;127.ALUSrcB=1;128.RegWre=0;129.InsMemRW=1;130.RD=1;131.WR=0;132.ExtSel=1;133.ALUOp=3'b000;134.end135.6'b100111:begin//lw136.PCWre=1;137.ALUSrcA=0;138.ALUSrcB=1;139.DBDataSrc=1;140.RegWre=1;141.InsMemRW=1;142.RD=0;143.WR=1;144.RegDst=0;145.ExtSel=1;146.ALUOp=3'b000;147.end148.6'b110000:begin//beq149.PCWre=1;150.ALUSrcA=0;151.ALUSrcB=0;152.RegWre=0;153.InsMemRW=1;154.RD=1;155.WR=1;学习参考
......156.ExtSel=1;157.ALUOp=3'b001;158.end159.6'b110001:begin//bne160.PCWre=1;161.ALUSrcA=0;162.ALUSrcB=0;163.RegWre=0;164.InsMemRW=1;165.RD=1;166.WR=1;167.ExtSel=1;168.ALUOp=3'b001;169.end170.6'b110010:begin171.PCWre=1;172.ALUSrcA=0;173.ALUSrcB=0;174.RegWre=0;175.InsMemRW=1;176.RD=1;177.WR=1;178.ExtSel=1;179.ALUOp=3'b001;180.end181.6'b111000:begin//j182.PCWre=1;183.RegWre=0;184.InsMemRW=1;185.RD=1;186.WR=1;187.ALUOp=3'b010;188.end189.6'b111111:begin//halt190.PCWre=1;191.RegWre=0;192.InsMemRW=1;193.RD=1;194.WR=1;195.end196.197.RD=1;198.WR=1;199.RegWre=0;学习参考
......200.InsMemRW=0;201.end202.endcase203.end204.always@(opcodeorzeroorsign)begin205.==6'b111000)//j206.PCSrc=2'b10;207.elseif(opcode[5:3]==3'b110)begin208.if(opcode[2:0]==3'b000)begin209.==1)210.PCSrc=2'b01;211.else212.PCSrc=2'b00;213.end214.elseif(opcode[2:0]==3'b001)begin215.==0)216.PCSrc=2'b01;217.else218.PCSrc=2'b00;219.end220.elsebegin221.==0&&sign==0)222.PCSrc=2'b01;223.else224.PCSrc=2'b00;225.end226.end227.elsebegin228.PCSrc=2'b00;229.end230.end231.endmodule仿真截图:()序计数器(PC)学习参考
......Verilog代:1.modulePC(2.inputclk,3.input[31:0]PCin,4.inputPCWre,5.inputReset,6.outputreg[31:0]PCout7.);8.initialbegin9.PCout<=0;10.end11.always@(posedgeclk)begin12.if==0)begin13.PCout<=0;14.end15.elseif==0)begin16.PCout<=PCout;17.end18.else
begin19.PCout<=PCin;20.end21.end22.endmodule仿真截图:()序存储器(instructionmemoryVerilog代:1.moduleIMemory(2.inputInsMemRW,3.input[31:0]address,4.outputreg[31:0]DataOut5.);6.reg[7:0]mem[0:127];7.initialbegin8.DataOut=32'b111111_0000000_0000000_0000000_00000;学习参考
......9.mem);10.end11.always@(addressorInsMemRW)begin12.if(InsMemRW==1)begin13.DataOut[31:24]<=mem[address];14.DataOut[23:16]<=mem[address+1];15.DataOut[15:8]<=mem[address+2];16.DataOut[7:0]<=mem[address+3];17.end18.end19.endmodule仿真截图:()Verilog代:1.moduleALU(2.input[2:0]ALUopcode,3.input[31:0]rega,4.input[31:0]regb,5.outputreg[31:0]result,6.outputzero,7.outputsign8.);9.assignzero=(result==0)?1:0;10.assignsign=result[31];11.always@(ALUopcodeorregaorregb)begin12.case(ALUopcode)13.3'b000:result=rega+regb;14.3'b001:result=rega-regb;15.3'b010:result=regb<<rega;16.3'b011:result=rega|regb;17.3'b100:result=rega®b;18.3'b101:result=(rega<regb)?1:0;//不带符号比较19.3'b110:begin//
带符号比较20.if(rega<regb&&((rega[31]==0&®b[31]==0)||21.(rega[31]==1&®b[31]==1)))result=1;学习参考
......22.elseif(rega[31]==0&®b[31]==1)result=0;23.elseif(rega[31]==1&®b[31]==0)result=1;24.elseresult=0;25.end26.3'b111:result=rega^regb;27.endcase28.end29.endmodule仿真截图:()存器堆Verilog代:1.moduleRegFile(2.inputCLK,3.inputRST,4.inputRegWre,5.input[4:0]ReadReg1,6.input[4:0]ReadReg2,7.input[4:0]WriteReg,8.input[31:0]WriteData,9.output[31:0]ReadData1,10.output[31:0]ReadData211.);12.reg[31:0]regFile[1:31];//寄存器定义必须用reg类型13.integeri;14.assignReadData1=(ReadReg1==0)?0:regFile[ReadReg1];寄存器数据15.assignReadData2=(ReadReg2==0)?0:regFile[ReadReg2];16.always@(negedgeCLK)begin//必须用时钟边沿触发17.if(RST==0)begin学习参考
//
读
......18.for(i=1;i<32;i=i+1)19.regFile[i]<=0;20.end21.elseif==1&&WriteReg!=0)begin22.regFile[WriteReg]<=WriteData;23.end24.end25.26.endmodule仿真截图:()据存储单元DataMemoryVerilog代:1.moduleDataMemory(2.inputclk,3.input[31:0]address,4.inputRD,5.inputWR,6.input[31:0]DataIn,7.output[31:0]DataOut8.);9.10.reg[7:0]ram[0:127];11.integeri;12.initialbegin;13.for(i=0;i<128;i=i+1)14.ram[i]<=0;15.end16.//output17.assignDataOut[7:0]=(RD==0)?ram[address+3]:8'bz;18.assignDataOut[15:8]=(RD==0)?ram[address+2]:8'bz;19.assignDataOut[23:16]=(RD==0)?ram[address+1]:8'bz;20.assignDataOut[31:24]=(RD==0)?ram[address]:8'bz;21.//input22.always@(negedgeclk)begin23.if==0)begin学习参考
......24.if(address>=0&&address<128)begin25.ram[address]<=DataIn[31:24];26.ram[address+1]<=DataIn[23:16];27.ram[address+2]<=DataIn[15:8];28.ram[address+3]<=DataIn[7:0];29.end30.end31.end32.endmodule仿真截图:3.测程:测试程序如下:指代地
汇程())
进制代addi$1,$0,8ori$2,$0,2add$3,$2,$1sub$5,$3,$2and$4,$5,$2or$8,$4,$2sll$8,$8,1bne$8,$1,-2(,转18)slt$6,$2,$1slt$7,$6,$0addi$7,$7,8beq$7,$1,-2(,转28)sw$2,4($1)lw$9,4($1)bgtz$9,2(=0)addi$9,$0,15
000001010000000000000010010001010010011000110001011100011100000001110000100110100111110010000001
00000000000001000011000110010000000010000001000110001110011100001000010
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年农学专业考试题及答案
- 2025年浊度计算试题及答案
- 2025年成人教育考试试题及答案
- 2025年司训大队考试题及答案
- 2025年慕课运动测试题及答案
- 2025年神思算法测试题及答案
- 2025年单招文化测试题及答案
- 2025年保安队长面试题及答案
- 2025年精神测试试题及答案
- 2025年热电阻考试题及答案
- 我的小书桌课件
- 北京大学- DeepSeek如何提示词工程和落地场景分析
- 2025年北京社会管理职业学院单招职业适应性考试题库及答案参考
- (完整版)第五章养殖场环境保护
- 不定式作表语之哪吒趣味课件-高中英语
- 2025年江苏省南京市锅炉压力容器检验研究院招聘20人历年高频重点模拟试卷提升(共500题附带答案详解)
- 妇女保健知识讲座课件
- 2024年江苏护理职业学院高职单招语文历年参考题库含答案解析
- DB61T 5097-2024 强夯法处理湿陷性黄土地基技术规程
- 南瓜小房子故事课件
- 2024年苏州经贸职业技术学院高职单招(英语/数学/语文)笔试历年参考题库含答案解析
评论
0/150
提交评论