版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、计算机组成原理实验实验报告实验三)学院名称:数据科学与计算机学院专业(班级):学生姓名:学号:时间:2019年11月8日成绩:实验三:单周期CPU设计与实现实验目的掌握单周期CPU数据通路图的构成、原理及其设计方法;掌握单周期CPU的实现方法,代码实现方法;认识和掌握指令与CPU的关系;掌握测试单周期CPU的方法。实验内容设计一个单周期CPU,该CPU至少能实现以下指令功能操作。指令与格式如下:=算术运算指令(1)addrd,rs,rt000000rs(5位)rt(5位)rd(5位)00000100000功能:GPRrdGPRrs+GPRrt。(2)subrd,rs,rt000000rs(5位
2、)rt(5位)rd(5位)00000100010功能:GPRrdGPRrs-GPRrt。(3)addiurt,rs,immediate001001rs(5位)rt(5位)immediate位)功能:GPRrtjGPRrs+zero_extendimmediate);immediate做符号扩展再参加“加”运算。(4)addirt,rs,immediate001111rs(5位)rt(5位)immediate位)功能:GPRrtjGPRrs+sign_extend(immediate);immediate做符号扩展再参加“加”运算。=逻辑运算指令5)andirt,rs,immediate0011
3、00rs(5位)rt(5位)immediate(16位)功能:GPRrtjGPRrsandzero_extend(immediate);immediate做0扩展再参与”运算。6)andrd,rs,rt000000rs(5位)rt(5位)rd(5位)00000100100功能:GPRrdjGPRrsandGPRrt。7)orirt,rs,immediate001101rs(5位)rt(5位)immediate(16位)功能:GPRrtjGPRrsorzero_extend(immediate)。(8)orrd,rs,rt000000rs(5位)rt(5位)rd(5位)00000100101功能
4、:GPRrdjGPRrsorGPRrt。=移位指令(9)sllrd,rt,sa00000000000rt(5位)rd(5位)sa(5位)000000功能:GPRrdjGPRrt比较指令(10)sltirt,rs,immediate带符号数001010rs(5位)rt(5位)immediate位)功能:ifGPRrs存储器读/写指令(12)swrt,offset(rs)写存储器101011rs(5位)rt(5位)offset(16位)功能:memoryGPRbase+sign_extend(offset)jGPRrt。(13)lwrt,offset(rs)读存储器100011rs(5位)rt(5
5、位)offset(16位)功能:GPRrtjmemoryGPRbase+sign_extend(offset)。=分支指令14)beqrs,rt,offset000100rs(5位)rt(5位)offset(16位)功能:if(GPRrs=GPRrt)pcjpc+4+sign_extend(offset)2elsepcjpc+4特别说明:offset是从PC+4地址开始和转移到的指令之间指令条数。offset符号扩展之后左移2位再相加。为什么要左移2位?由于跳转到的指令地址肯定是4的倍数(每条指令占4个字节),最低两位是“00”,因此将offset放进指令码中的时候,是右移了2位的,也就是以上
6、说的“指令之间指令条数”。(15)bners,rt,offset000101rs(5位)rt(5位)offset(16位)功能:if(GPRrs!=GPRrt)pcjpc+4+sign_extend(offset)2elsepcjpc+4(16)bltzrs,offset000001rs(5位)00000offset(16位)功能:if(GPRrs0)pcjpc+4+sign_extend(offset)跳转指令(17)jaddr000010addr(26位)功能:PCJPC31:28,addr,2bO,无条件跳转。说明:由于MIPS32的指令代码长度占4个字节,所以指令地址二进制数最低2位均
7、为0,将指令地址放进指令代码中时,可省掉!这样,除了最高6位操作码外,还有26位可用于存放地址,事实上,可存放28位地址,剩下最高4位由pc+4最高4位拼接上。=停机指令(18)halt11111100000000000000000000000000(26位)功能:停机;不改变PC的值,PC保持不变。实验原理单周期CPU指的是一条指令的执行在一个时钟周期内完成,然后开始下一条指令的执行,即一条指令用一个时钟周期完成。电平从低到高变化的瞬间称为时钟上升沿,两个相邻时钟上升沿之间的时间间隔称为一个时钟周期。时钟周期一般也称振荡周期(如果晶振的输出没有经过分频就直接作为CPU的工作时钟,则时钟周期就
8、等于振荡周期。若振荡周期经二分频后形成时钟脉冲信号作为CPU的工作时钟,这样,时钟周期就是振荡周期的两倍)CPU在处理指令时,一般需要经过以下几个步骤:取指令(IF):根据程序计数器PC中的指令地址,从存储器中取出一条指令,同时,PC根据指令字长度自动递增产生下一条指令所需要的指令地址,但遇到“地址转移”指令时,则控制器把“转移地址”送入PC,当然得到的“地址”需要做些变换才送入PC。指令译码(ID):对取指令操作中得到的指令进行分析并译码,确定这条指令需要完成的操作,从而产生相应的操作控制信号,用于驱动执行状态中的各种操作。指令执行(EXE):根据指令译码得到的操作控制信号,具体地执行指令动
9、作,然后转移到结果写回状态。存储器访问(MEM):所有需要访问存储器的操作都将在这个步骤中执行,该步骤给出存储器的数据地址,把数据写入到存储器中数据地址所指定的存储单元或者从存储器中得到数据地址单元中的数据。结果写回(WB):指令执行的结果或者访问存储器中得到的数据写回相应的目的寄存器中。单周期CPU,是在一个时钟周期内完成这五个阶段的处理。取指令IF指令译码ID指令执行EXE存储器访问MEM结果写回WB图1单周期CPU指令处理过程MIPS指令的三种格式:rs:只读。为第1个源操作数寄存器,寄存器地址(编号)是0000011111,001F;rt:可读可写。为第2个源操作数寄存器,或目的操作数
10、寄存器,寄存器地址(同上)rd:只写。为目的操作数寄存器,寄存器地址(同上);sa:为位移量(shiftamt),移位指令用于指定移多少位;funct:为功能码,在寄存器类型指令中(R类型)用来指定指令的功能与操作码配合使用;immediate:为16位立即数,用作无符号的逻辑操作数、有符号的算术操作数、数据加载(Laod)/数据保存(Store)指令的数据地址字节偏移量和分支指令中相对程序计数器(PC)的有符号偏移量;address:为地址。图2单周期CPU数据通路和控制线路图图2是一个简单的基本上能够在单周期CPU上完成所要求设计的指令功能的数据通路和必要的控制线路图。其中指令和数据各存储
11、在不同存储器中,即有指令存储器和数据存储器。访问存储器时,先给出内存地址,然后由读或写信号控制操作。对于寄存器组,先给出寄存器地址,读操作时不需要时钟信号,输出端就直接输出相应数据;而在写操作时,在WE使能信号为1时,在时钟边沿触发将数据写入寄存器。图中控制信号作用如表1所示,表2是ALU运算功能表。表1控制信号的作用相关部件及引脚说明:控制信号名状态“0”状态“1”Reset初始化PC和寄存器为0PC接收新地址holdPC更改,相关指令:除指令halt外PC不更改,相关指令:haltshift来自寄存器堆输出A,相关指令:add、sub、addiu、or、and、andi、ori、slti、
12、beq、bne、bltz、sw、lw来自移位数sa,同时,进行(zero-extend)sa,即卩271b0,sa,相关指令:sllALUSrc来自寄存器堆输出B,相关指令:add、sub、or、and、beq、bne、bltz来自sign或zero扩展的立即数,相关指令:addi、andi、ori、slti、sw、lwDataSrc来自ALU运算结果的输出,相关指令:add、addiu、sub、ori、or、and、andi、slti、sll来自数据存储器(DataMEM)的输出,相关指令:lwRegWre无写寄存器组寄存器,相关指令:beq、bne、bltz、sw、halt寄存器组写使能,
13、相关指令:add、addiu、sub、ori、or、and、andi、slti、sll、lwmemWR无操作写数据存储器,相关指令:swRegDst写寄存器组寄存器的地址,来自rt字段,相关指令:addiu、andi、ori、slti、lw写寄存器组寄存器的地址,来自rd字段,相关指令:add、sub、and、or、sllExtop(zero-extend)immediate(0扩展),相关指令:addiu、andi、ori(sign-extend)immediate(符号扩展),相关指令:slti、sw、lw、beq、bne、bltzALUOp2.0ALU8种运算功能选择(000-111),
14、看功能表InstructionMemory:指令存储器,addr,指令存储器地址输入端口DataOut,指令存储器数据输出端口(指令代码输出端口)DataMemory:数据存储器,addr,数据存储器地址输入端口Dataln,数据存储器数据输入端口DataOut,数据存储器数据输出端口WR,数据存储器写控制信号,为0写RegisterFile:寄存器组ReadReg1,rs寄存器地址输入端口ReadReg2,rt寄存器地址输入端口WriteReg,将数据写入的寄存器端口,其地址来源rt或rd字段WriteData,写入寄存器的数据输入端口ReadData1,rs寄存器数据输出端口ReadDat
15、a2,rt寄存器数据输出端口WE,写使能信号,为1时,在时钟边沿触发写入ALU:算术逻辑单元result,ALU运算结果zero,运算结果标志,结果为0,则zero=1;否则zero=0实验器材电脑一台,XilinxVivado软件一套,Basys3板一块。实验过程与结果I数据通路设计1、PC/NPC程序计数器设计程序计数器模块PC和配套的下一条PC的生成器NPC,这里统称PC。输入:时钟CLK,复位信号RESET,分支信号BRANCH,零指示器ZERO,跳转信号JUMP,26位立即数输入IMM26,32位立即数输入IMM32输出:PC(currentaddress)当前程序计数器的值。功能:
16、每个时钟周期根据输入的信号更新PC值并输出,RESET=1时会强制置零PC。其中优先级最高的信号为JUMP,其次为BRANCH,再次为ZERO。实现:用32位寄存器存储PC值。电路是时序逻辑,所以要用always语句对CLK和RESET的上升沿敏感,使用if-elseif-else和非阻塞赋值实现PC的更新。这里注意,不管我们的跳转来自imm32还是imm26,都不保存地址的后二位,因此需要进行左移2位。always(posedgeelkorposedgeresst)beginif(reset=l)pc32hQOQOOGOCi;tlseif(hold=l)PG=pc;elseif(jump=l
17、)pcpc31:28J,imm2,2b0Q;elseif(branchzero)pc-pc+4+iirm3225:0,2b0;elsePC=pc+4;end图1.1P的veril实现2、InstructionMemory指令存储器编写程序来模拟指令存储内存,实现指令的初始化与读取输入:指令地址ADDR输出:指令instr实现:建立寄存器组模拟内存,使用系统任务语句readmemb从文件中读取指令到该模拟内存,用下标模拟访问。因为模块是组合逻辑,所以直接用always(*)阻塞赋值或assign连线即可。initialbegin$工已玄dm已idb(ntest/instxuctin.txtr,m
18、em);endassignInsti31:24=memAddr;assignInstx23:16=memAddr+1;assignInstr15:3=memAddx+2;assignInstx7:0=memAddx+3;图1.2指令存储器的实现3、数据存储器DataMemory编写程序来模拟内存,实现内存存储,内存读写。我们设置宽度为8,数据位数32,也就是每4块存储单元保存一个数据。我们可以设计一个memN*48的寄存器数组,通过下标来寻址。N为数据存储器的数据容量。输入:时钟信号CLK,写使能信号MEMWR,目标地址ADDR,数据输入DATAIN输出:数据输出端DATAOUT实现:使用寄存
19、器数组、always持续非阻塞赋值和分支判断语句。always(posedgealk)beginif(MemWrbeginmemoryAddrJ=Dataln31:24;memoryAddr丰1=Dataln23:16;memoryAddr+2=Dataln15:8;memoryAddr+3-Dataln7:0;endendassignDataOut31:24=memoryAddx;assignDataOut23:16=ir.ejr.cryAddx+1;assignDataOut15:8=memoryAddr+2;assignDataOut7:0=memoryAddr+3;图1.3数据存储器的
20、实现4、寄存器文件Regfile模拟32个32位寄存器组成的寄存器组,其中零号寄存zero恒为零。输入:CLK,Reset,WriteEnable,Ra4:0,Rb4:0,Rw4:0,data31:0输出:A31:0,B31:0实现:时钟上升沿时写入data,其他时间恒将输出A、B与目标读取数据相连。always&(posedgeelkorposedgeifresetfor(i=0;i32;i=i+l)Ifi=32500000000;elserfrwdata;assignA=(za=0?0:ifxa;assignB_(rb0?0:rfrb;图1.4寄存器文件的实现5、立即数扩展部件Extend
21、er对16位立即数进行符号或算术扩展。输入:EXTOP扩展标识符,IMM16立即数输出:IMM32立即数实现:进行简单的assign连线和逻辑判断即可。assignimm3215:0=assignimm3231:16=Extop?16hffff:0图1.5立即数扩展部件的实现6、算术逻辑单元ALUALU被用于算术逻辑计算和跳转指令比较。输入:三位ALUCTR控制信号,32位数据输入A、B;输出:零标识符zero,运算结果out;实现:这里对几种运算做如下的编码表2ALU运算功能表ALUOp2.0功能描述000Y=A+B加001Y=A-B减010Y=BAB左移A位011Y=AVB或100Y=AA
22、B与101Y=(AB)?1:0比较A与B不带符号110Y=(regavregb)&(rega31=regb31)11(rega31=1®b31=0)?1:0比较A与B带符号111Y=Ab异或因为是纯组合逻辑,用assign赋值或always(*)实现always(r)begincase(ALUctr)3bOOO:outA+B;/add3*b001:outwA-B;/sub3bOlO:begin/leftshiftAbitsoutmB;forbeginout=out30:0FlbO;endendbOllout*A|B;/orblOOout=A&B;/andblOlouc(AB)?1:0;/
23、unsignedlessthanbllOout(A31=14B31=0)|(A31=1&B31=1)&(A30:0B|3blll:outAAB;/xordefault:out=0;endcasezero=out?0:l;end图1.6算术逻辑单元的实现n控制器设计控制器controller将接收一段32位指令。对指令进行适当的译码,进而产生信号控制上述的各数据通路组件的输入端。输入:instructional:。,32位指令。需要先对指令进行解码,得到op5:0、rs4:0、rt4:0、rd4:0、immediate15:0、sa4:0、offset15:0、address25:0、输出:jump跳转信号、branch分支信号,作为PC输入与其他信号共同决定nextPC的值。Extop扩展信号,作为Extender的输入来控制扩展方式。MemWrite内存写使能信号,控制某条指令是读内存还是写内存。MemtoReg内存到寄存器信号,作为Regfile的数据输入data的复用器信号,选择使用data来自ALU的运算结果还是访存结果。ALUSrc,ALU源信号;控制ALU的B输入端的复用器信号,选择来自
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年新丰县带编教师招聘考试参考题库及答案解析
- 2026年惠安县带编教师招聘考试备考题库及答案解析
- 2026年沈丘县带编教师招聘笔试模拟试题及答案解析
- 2026年辰溪县带编教师招聘考试备考试题及答案解析
- 2026年册亨县带编教师招聘考试备考题库及答案解析
- 2026年罗山县带编教师招聘笔试备考试题及答案解析
- 赣州市童颐乐社区服务有限公司2026年第二批劳务派遣人员招聘岗位调整及延期的笔试参考题库及答案详解
- 2026年曲松县带编教师招聘考试模拟试题及答案解析
- 2026年木垒哈萨克自治县带编教师招聘笔试参考题库及答案解析
- 2026年河北省普通高校专接本《西方心理学史》全真模拟试题(适配统考考纲)
- 2026年中医针灸考试题及答案
- 广东茂名市电白区2026年村(社区)工作人员招聘考试试卷-含答案解析
- 2026河北机关事业单位工人技能等级考试(广播电视机务员)历年参考题库含答案详解
- 陆上风电场培训内容
- 2026年甘肃省兰州市公安招聘辅警考试真题及答案
- 《无人机飞行控制技术》无人机应用技术专业全套教学课件
- 青少年脊柱侧弯诊疗指南(2026版)
- 关键工序工艺参数设定规范
- 2026年全国英语等级考试(PETS)三级模拟试题及答案二
- 《宁夏闽宁镇》课件
- 2026及未来5年中国实战射击系统行业发展研究报告
评论
0/150
提交评论