ImageVerifierCode 换一换
格式:DOC , 页数:21 ,大小:480.51KB ,
资源ID:4316939      下载积分:10 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/4316939.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(中大2016计组单周期CPU实验报告资料.doc)为本站上传会员【快乐****生活】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

中大2016计组单周期CPU实验报告资料.doc

1、计算机组成原理与接口技术实验 《计算机组成原理与接口技术实验》 实验报告 学院名称 : 数据科学与计算机学院 学生姓名 : 刘恩硕 学号 : 14332014 专业(班级) : 14软件工程五(国)班 合作者 : 罗宇森 时间 : 2016 年 4 月 25 日 成绩 : 实验二 : 单周期CPU设计 一. 实验目的 (1) 掌握单周期CPU数据通路图的构成、原理及其设计方法; (2) 掌握单周期CPU的实现方法,代码实现

2、方法; (3) 认识和掌握指令与CPU的关系; (4) 掌握测试单周期CPU的方法。 二. 实验内容 设计一个单周期CPU,该CPU至少能实现以下指令功能操作。需设计的指令与格式如下: ==> 算术运算指令 (1)add rd , rs, rt (说明:以助记符表示,是汇编指令;以代码表示,是机器指令) 000000 rs(5位) rt(5位) rd(5位) reserved 功能:rd←rs + rt。reserved为预留部分,即未用,一般填“0”。 (2)addi rt , rs ,immediate 000001 rs(5位) rt(5位

3、) immediate(16位) 功能:rt←rs + (sign-extend)immediate;immediate符号扩展再参加“加”运算。 (3)sub rd , rs , rt 000010 rs(5位) rt(5位) rd(5位) reserved 完成功能:rd←rs - rt ==> 逻辑运算指令 (4)ori rt , rs ,immediate 010000 rs(5位) rt(5位) immediate(16位) 功能:rt←rs | (zero-extend)immediate;immediate做“0”扩展再参加

4、或”运算。 (5)and rd , rs , rt 010001 rs(5位) rt(5位) rd(5位) reserved 功能:rd←rs & rt;逻辑与运算。 (6)or rd , rs , rt 010010 rs(5位) rt(5位) rd(5位) reserved 功能:rd←rs | rt;逻辑或运算。 ==> 传送指令 (7)move rd , rs 100000 rs(5位) 00000 rd(5位) reserved 功能:rd←rs + $0 ;$0=$zero=0。 ==> 存储器读/

5、写指令 (8)sw rt ,immediate(rs) 写存储器 100110 rs(5位) rt(5位) immediate(16位) 功能:memory[rs+ (sign-extend)immediate]←rt;immediate符号扩展再相加。 (9) lw rt , immediate(rs) 读存储器 100111 rs(5位) rt(5位) immediate(16位) 功能:rt ← memory[rs + (sign-extend)immediate];immediate符号扩展再相加。 ==> 分支指令 (10)beq

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

7、 111111 00000000000000000000000000(26位) 功能:停机;不改变PC的值,PC保持不变。 三. 实验原理 单周期CPU指的是一条指令的执行在一个时钟周期内完成,然后开始下一条指令的执行,即一条指令用一个时钟周期完成。电平从低到高变化的瞬间称为时钟上升沿,两个相邻时钟上升沿之间的时间间隔称为一个时钟周期。时钟周期一般也称振荡周期(如果晶振的输出没有经过分频就直接作为CPU的工作时钟,则时钟周期就等于振荡周期。若振荡周期经二分频后形成时钟脉冲信号作为CPU的工作时钟,这样,时钟周期就是振荡周期的两倍。) CPU在处理指令时,一般需要经

8、过以下几个步骤: (1) 取指令(IF):根据程序计数器PC中的指令地址,从存储器中取出一条指令,同时,PC根据指令字长度自动递增产生下一条指令所需要的指令地址,但遇到“地址转移”指令时,则控制器把“转移地址”送入PC,当然得到的“地址”需要做些变换才送入PC。 (2) 指令译码(ID):对取指令操作中得到的指令进行分析并译码,确定这条指令需要完成的操作,从而产生相应的操作控制信号,用于驱动执行状态中的各种操作。 (3) 指令执行(EXE):根据指令译码得到的操作控制信号,具体地执行指令动作,然后转移到结果写回状态。 (4) 存储器访问(MEM):所有需

9、要访问存储器的操作都将在这个步骤中执行,该步骤给出存储器的数据地址,把数据写入到存储器中数据地址所指定的存储单元或者从存储器中得到数据地址单元中的数据。 (5) 结果写回(WB):指令执行的结果或者访问存储器中得到的数据写回相应的目的寄存器中。 单周期CPU,是在一个时钟周期内完成这五个阶段的处理。 取指令 IF 指令译码 ID 指令执行 EXE 存储器访问 MEM 结果写回 WB 图1 单周期CPU指令处理过程 MIPS32的指令的三种格式: R类型: 31 26 25 21 20 16 15 1

10、1 10 6 5 0 op rs rt rd sa func 6位 5位 5位 5位 5位 6位 I类型: 31 26 25 21 20 16 15 0 op rs rt immediate 6位 5位 5位 16位 J类型: 31 26 25

11、 0 op address 6位 26位 其中, op:为操作码; rs:为第1个源操作数寄存器,寄存器地址(编号)是00000~11111,00~1F; rt:为第2个源操作数寄存器,或目的操作数寄存器,寄存器地址(同上); rd:为目的操作数寄存器,寄存器地址(同上); sa:为位移量(shift amt),移位指令用于指定移多少位; func:为功能码,在寄存器类型指令中(R类型)用来指定指令的功能; immediate:为16位立即数,用作无符号的逻辑操作数、有符号的

12、算术操作数、数据加载(Laod)/数据保存(Store)指令的数据地址字节偏移量和分支指令中相对程序计数器(PC)的有符号偏移量; address:为地址。 图2 单周期CPU数据通路和控制线路图 图2是一个简单的基本上能够在单周期上完成所要求设计的指令功能的数据通路和必要的控制线路图。其中指令和数据各存储在不同存储器中,即有指令存储器和数据存储器。访问存储器时,先给出地址,然后由读/写信号控制(1-写,0-读。当然,也可以由时钟信号控制,但必须在图上标出)。对于寄存器组,读操作时,先给出地址,输出端就直接输出相应数据;而在写操作时,在 WE使能信号为1时,在时钟边沿触

13、发写入。图中控制信号作用如表1所示,表2是ALU运算功能表。 表1 控制信号的作用 控制信号名 状态“0” 状态“1” PCWre PC不更改,相关指令:halt PC更改,相关指令:除指令halt外 ALUSrcB 来自寄存器堆data2输出,相关指令:add、sub、or、and、move、beq 来自sign或zero扩展的立即数,相关指令:ori、sw、lw ALUM2Reg 来自ALU运算结果的输出,相关指令:add、sub、ori、or、and、move 来自数据存储器(Data MEM)的输出,相关指令:lw RegWre 无写寄存器组寄存器,相关指

14、令: sw、halt 寄存器组写使能,相关指令:add、sub、ori、or、and、move、lw InsMemRW 读指令存储器(Ins. Data),初始化为0 写指令存储器 DataMemRW 读数据存储器,相关指令:lw 写数据存储器,相关指令:sw ExtSel 相关指令:ori,(zero-extend)immediate(0扩展) 相关指令:sw、lw、beq, (sign-extend)immediate(符号扩展) PCSrc PC←PC+4,相关指令:add、sub、ori、or、and、move、sw、lw、beq(zero=0) PC←P

15、C+4+(sign-extend)immediate,同时zero=1,相关指令:beq RegOut 写寄存器组寄存器的地址,来自rt字段,相关指令:ori、lw 写寄存器组寄存器的地址,来自rd字段,相关指令:add、sub、and、or、move ALUOp[2..0] ALU 8种运算功能选择(000-111),看功能表 相关部件及引脚说明: Instruction Memory:指令存储器, Iaddr,指令存储器地址输入端口 IDataIn,指令存储器数据输入端口(指令代码输入端口) IDataOut,指令存储器数

16、据输出端口(指令代码输出端口) RW,指令存储器读写控制信号,为1写,为0读 Data Memory:数据存储器, Daddr,数据存储器地址输入端口 DataIn,数据存储器数据输入端口 DataOut,数据存储器数据输出端口 RW,数据存储器读写控制信号,为1写,为0读 Register File:(寄存器组) Read Reg1,rs寄存器地址输入端口 Read Reg2,rt寄存器地址输入端口 Write Reg,将数据写入的寄存器端口,其

17、地址来源rt或rd字段 Write Data,写入寄存器的数据输入端口 Read Data1,rs寄存器数据输出端口 Read Data2,rt寄存器数据输出端口 WE,写使能信号,为1时,在时钟上升沿写入 ALU: result,ALU运算结果 zero,运算结果标志,结果为0输出1,否则输出0 表2 ALU运算功能表 ALUOp[2..0] 功能 描述 000 A + B 加 001 A – B 减 010 B – A 减 011

18、A ∨ B 或 100 A ∧ B 与 101 /A ∧ B A非与B 110 A Å B 异或 111 A ⊙ B 同或 需要说明的是根据要实现的指令功能要求画出以上数据通路图,和确定ALU的运算功能(当然,以上指令没有完全用到提供的ALU所有功能,但至少必须能实现以上指令功能操作)。从数据通路图上可以看出控制单元部分需要产生各种控制信号,当然,也有些信号必须要传送给控制单元。从指令功能要求和数据通路图的关系得出以上表1,这样,从表1可以看出各控制信号与相应指令之间的相互关系,根据这种关系就可以得出控制信号与指令之间的关系表(留给学生完成),再根据关系表可以写

19、出各控制信号的逻辑表达式,这样控制单元部分就可实现了。 指令执行的结果总是在下个时钟到来前开始保存到寄存器、或存储器中,PC的改变也是在这个时候进行。另外,值得注意的问题,设计时,用模块化的思想方法设计,关于ALU设计、存储器设计、寄存器组设计等等,也是必须认真考虑的问题。可以参考其他资料文档,里面有相应的设计方法介绍。(资料文档:MIPS汇编与单周期CPU.ppt)。 四. 实验器材 电脑一台、Xilinx ISE 软件一套。 五. 实验分析与设计 (1)初步规划出实验流程: ①根据cpu数据通路和控制线路图决定要写多少个模块 ②写子模块 ③用主模块把子模块连接起来 ④

20、写测试文件 ⑤设计一段汇编程序输入二进制 ⑤测试 (2) 进一步设计: ①根据通路图决定写11个子模块,分别是PC,PC+4,PC+立即数,指令寄存器,数据储存,寄存器模块,控制模块,选择模块,符号扩展, 算术逻辑单元 ②子模块分别命名为pc,pcAddFour, pcAddImm,ROM, RAM,regfile,ControlUnit, dataSelect_5_Bit, dataSelect_32_Bit, signExtend, ALU ③指令由ROM读取到mem中。 a)把decode传到控制模块ControlUnit中,然后根据传入的六位操作码和zero给控制信号赋值

21、 (两个输入) (其中一个控制信号) b)把rs、rt、rd传到寄存器模块regfile中,从寄存器组中取rs、rt值传出,得出结果可能还要写回rt、rd; (这里由RegWre控制是否写⼊) c)把立即数传到符号扩展模块signExtend中,把16位⽴即数扩展成32位,得出结果传⼊选择模块和PC+立即数模块。 (在这里进行左移) ④ALU通过传入的ALUop决定计算类型,对传入的数据(A、B)进行运算。 ⑤ControlUnit通过PCSrc决定下⼀个PC是PC+4还是PC+4+偏移量 ⑥RAM从内存中读取数据或者把数据写⼊内存。 (3

22、每个模块的具体代码 (3) 测试代码 //addi $1, $0, 8 000001 00000 00001 0000000000001000 //addi $2, $0, 16 000001 00000 00010 00000000000100000 //sw $2, 0($2) 000111 00010 00010 0000000000000000 //add $3, $2, $1 000000 00010 00001 00011 00000000000 //sub $3, $3

23、 $1 000010 00011 00001 00011 00000000000 //beq $2, $3, -2 001001 00010 00011 1111111111111110 //ori $1, $1, 4 000011 00001 00001 0000000000000100 //or $3, $2, $1 000101 00010 00001 00011 00000000000 //move $3, $2 000110 00010 00000 00011 00000000000 //beq $2, $3, 2 001001 00010 00011 000

24、0000000000010 //lw $4, 0($2) 001000 00010 00100 0000000000000000 //halt 111111 00000000000000000000000000 二进制代码为 00000100 00000001 00000000 00001000 00000100 00000010 00000000 00010000 00011100 01000010 00000000 00000000 00000000 01000001 00011000 00000000 00001000 01100010

25、 00000000 00000010 00001000 01100001 00011000 00000000 00100100 01000011 11111111 11111110 00001100 00100001 00000000 00000001 00010100 01000001 00011000 00000000 00011000 01000000 00011000 00000000 00010000 01100010 00001000 00000000 00100000 01000100 00000000 00000000 11111100 00000000 00000000 00000000 输出为: 六. 实验心得 在这次的作业中学到了很多东西,在每次遇到不懂的问题时,都会各种百度,然后和队友一起研究,在解决问题的过程中对指令,和CPU结构有了更进一步的了解,同时,也熟练了汇编语言的相关操作。作为一名初学者,有不懂的东西就要多琢磨,多研究,多百度,只有这样才能学好这门课程,才能真正掌握计算机组成原理的相关知识。

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服