200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > 计算机组成原理实验单周期处理 计算机组成原理实验实验报告-单周期cpu设计...

计算机组成原理实验单周期处理 计算机组成原理实验实验报告-单周期cpu设计...

时间:2019-04-18 00:54:19

相关推荐

计算机组成原理实验单周期处理 计算机组成原理实验实验报告-单周期cpu设计...

计算机组成原理实验实验报告-单周期cpu设计

(16页)

本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦!

19.90 积分

计算机组成原理实验计算机组成原理实验实验报告(实验二)学院名称学生姓名学号专业(班级)时间04月25日计算机组成原理实验成绩实验二单周期CPU设计一实验目的1掌握单周期CPU数据通路图的构成、原理及其设计方法;2掌握单周期CPU的实现方法,代码实现方法;3认识和掌握指令与CPU的关系;4掌握测试单周期CPU的方法。二实验内容设计一个单周期CPU,该CPU至少能实现以下指令功能操作。需设计的指令与格式如下算术运算指令(1)ADDURD,RS,RT(说明以助记符表示,是汇编指令;以代码表示,是机器指令)RS5位RT5位RD5位RESERVED功能RD←RSRT。RESERVED为预留部分,即未用,一般填“0”。(2)ADDIURT,RS,IMMEDIATERS5位RT5位IMMEDIATE16位功能RT←RSZEROEXTENDIMMEDIATE;IMMEDIATE符号扩展再参加“加”运算。(3)SUBURD,RS,RTRS5位RT5位RD5位RESERVED完成功能RD←RSRT逻辑运算指令(4)ORIRT,RS,IMMEDIATERS5位RT5位IMMEDIATE16位功能RT←RS|ZEROEXTENDIMMEDIATE;IMMEDIATE做“0”扩展再参加“或”运算。(5)ANDRD,RS,RTRS5位RT5位RD5位RESERVED功能RD←RSRT;逻辑与运算。(6)ORRD,RS,RTRS5位RT5位RD5位RESERVED功能RD←RS|RT;逻辑或运算。存储器读/写指令(7)SWRT,IMMEDIATERS写存储器RS5位RT5位IMMEDIATE16位功能MEMORYRSSIGNEXTENDIMMEDIATE←RT;IMMEDIATE符号扩展再相加。(8LWRT,IMMEDIATERS读存储器计算机组成原理实验RS5位RT5位IMMEDIATE16位功能RT←MEMORYRSSIGNEXTENDIMMEDIATE;IMMEDIATE符号扩展再相加。分支指令(9)BNERS,RT,IMMEDIATERS5位RT5位IMMEDIATE位移量,16位2功能IFRSRTPC←PC4SIGNEXTENDIMMEDIATE停机指令(10)HALT000026位功能停机;不改变PC的值,PC保持不变。三实验原理单周期CPU指的是一条指令的执行在一个时钟周期内完成,然后开始下一条指令的执行,即一条指令用一个时钟周期完成。电平从低到高变化的瞬间称为时钟上升沿,两个相邻时钟上升沿之间的时间间隔称为一个时钟周期。时钟周期一般也称振荡周期(如果晶振的输出没有经过分频就直接作为CPU的工作时钟,则时钟周期就等于振荡周期。若振荡周期经二分频后形成时钟脉冲信号作为CPU的工作时钟,这样,时钟周期就是振荡周期的两倍。)CPU在处理指令时,一般需要经过以下几个步骤1取指令IF根据程序计数器PC中的指令地址,从存储器中取出一条指令,同时,PC根据指令字长度自动递增产生下一条指令所需要的指令地址,但遇到“地址转移”指令时,则控制器把“转移地址”送入PC,当然得到的“地址”需要做些变换才送入PC。2指令译码ID对取指令操作中得到的指令进行分析并译码,确定这条指令需要完成的操作,从而产生相应的操作控制信号,用于驱动执行状态中的各种操作。3指令执行EXE根据指令译码得到的操作控制信号,具体地执行指令动作,然后转移到结果写回状态。4存储器访问MEM所有需要访问存储器的操作都将在这个步骤中执行,该步骤给出存储器的数据地址,把数据写入到存储器中数据地址所指定的存储单元或者从存储器中得到数据地址单元中的数据。5结果写回WB指令执行的结果或者访问存储器中得到的数据写回相应的目的寄存器中。单周期CPU,是在一个时钟周期内完成这五个阶段的处理。取指令IF指令译码ID指令执行EXE存储器访问MEM结果写回WB图1单周期CPU指令处理过程计算机组成原理实验MIPS指令的三种格式其中,OP为操作码;RS为第1个源操作数寄存器,寄存器地址(编号)是0000011111,001F;RT为第2个源操作数寄存器,或目的操作数寄存器,寄存器地址(同上);RD为目的操作数寄存器,寄存器地址(同上);SA为位移量(SHIFTAMT),移位指令用于指定移多少位;FUNC为功能码,在寄存器类型指令中(R类型)用来指定指令的功能;IMMEDIATE为16位立即数,用作无符号的逻辑操作数、有符号的算术操作数、数据加载(LAOD)/数据保存(STORE)指令的数据地址字节偏移量和分支指令中相对程序计数器(PC)的有符号偏移量;ADDRESS为地址。计算机组成原理实验图2单周期CPU数据通路和控制线路图图2是一个简单的基本上能够在单周期CPU上完成所要求设计的指令功能的数据通路和必要的控制线路图。其中指令和数据各存储在不同存储器中,即有指令存储器和数据存储器。访问存储器时,先给出地址,然后由读或写信号控制操作。对于寄存器组,读操作时,先给出地址,输出端就直接输出相应数据;而在写操作时,在WE使能信号为1时,在时钟边沿触发写入。图中控制信号作用如表1所示,表2是ALU运算功能表。表1控制信号的作用控制信号名状态“0”状态“1”RESET初始化PC为0PC接收新地址PCWREPC不更改,相关指令HALTPC更改,相关指令除指令HALT外ALUSRCB来自寄存器堆DATA2输出,相关指令ADDU、SUBU、OR、AND、BNE来自SIGN或ZERO扩展的立即数,相关指令ADDIU、ORI、SW、LWDBDATASRC来自ALU运算结果的输出,相关指令ADDU、ADDIU、SUBU、ORI、OR、AND来自数据存储器(DATAMEM)的输出,相关指令LWREGWRE无写寄存器组寄存器,相关指令BNE、SW、HALT寄存器组写使能,相关指令ADDU、ADDIU、SUBU、ORI、OR、AND、LWINSMEMRW写指令存储器读指令存储器INSDATA/RD读数据存储器,相关指令LW输出高阻态/WR写数据存储器,相关指令SW无操作EXTSELZEROEXTENDIMMEDIATE(0扩展)SIGNEXTENDIMMEDIATE(符号扩展)计算机组成原理实验,相关指令ADDIU、ORI,相关指令SW、LW、BNEREGDST写寄存器组寄存器的地址,来自RT字段,相关指令ADDIU、ORI、LW写寄存器组寄存器的地址,来自RD字段,相关指令ADDU、SUBU、AND、ORPCSRCPC←PC4,相关指令ADDU、ADDIU、SUBU、ORI、OR、AND、SW、LW、BNEZERO1PC←PC4SIGNEXTENDIMMEDIATE,相关指令BNE(ZERO0)ALUOP20ALU8种运算功能选择000111,看功能表相关部件及引脚说明INSTRUCTIONMEMORY指令存储器,IADDR,指令存储器地址输入端口IDATAIN,指令存储器数据输入端口(指令代码输入端口)IDATAOUT,指令存储器数据输出端口(指令代码输出端口)RW,指令存储器读写控制信号,为1写,为0读DATAMEMORY数据存储器,DADDR,数据存储器地址输入端口DATAIN,数据存储器数据输入端口DATAOUT,数据存储器数据输出端口/RD,数据存储器读控制信号,为0读/WR,数据存储器写控制信号,为0写REGISTERFILE寄存器组READREG1,RS寄存器地址输入端口READREG2,RT寄存器地址输入端口WRITEREG,将数据写入的寄存器端口,其地址来源RT或RD字段WRITEDATA,写入寄存器的数据输入端口READDATA1,RS寄存器数据输出端口READDATA2,RT寄存器数据输出端口WE,写使能信号,为1时,在时钟上升沿写入ALU算术逻辑单元RESULT,ALU运算结果ZERO,运算结果标志,结果为0输出1,否则输出0表2ALU运算功能表ALUOP20功能描述000YAB加001YA–B减010YBAB左移A位011YA∨B或100YA∧B与101Y/A∧BA非与B计算机组成原理实验110YA?B异或111YA⊙B同或四.实验器材电脑一台、XILINXISE软件一套。五.实验分析与设计(一)代码分析首先是各模块文件之间的关系SCPU为顶层模块,其余均为其子模块。子模块间的逻辑关系与上文图二完全一致。其中模块之间所用到的加法器以及选择器全部在顶层模块实现。之后通过WIRE变量分到相关子模块中去。以下为在顶层模块中实现加法器以及选择器的相关语句,顶层模块其余代码仅为各个子模块的声明以及WIRE变量的声明,在此不再列出。图中变量可结合图2,变量名基本相同。对变量B的赋值,即实现了ALUSRCB控制的选择器,该选择器决定进入ALU模块的其中一个数是立即数还是寄存器中的数。对变量WRITEDATA的赋值实现了是将内存中的数写入内存还是将ALU中的数写入内存这个选择器。这个选择器主要是区别LW和其他寄存器操作。对变量PC的赋值,包括了加法器,移位器和选择器。首先是PC模块输出的指令集地址加4,然后是代表跳转指令条数的立即数左移两位,最后是根据CTRL模块的输出进行选择的计算机组成原理实验选择器。这个选择器主要用于BNE指令。对变量WRITEREG的赋值实现了是写RT寄存器还是写RD寄存器这个选择器。这个选择器主要用于那些使用三个寄存器的汇编语句。PC模块这个模块是外部直接控制的模块,是所以模块中惟一一个从外部接收变量的模块。外部接收的就是CLK时钟和RESET复位。PCWIRE是开关机控制信号,PC是接收的指令集地址,IADDR是输出的指令集地址。这个模块的实现比较简单,就是两步判断。首先判断是否复位,是则将地址置0,否则就向下进行。然后判断是否要关机,不是则将接收的地址赋值给送出地址的变量,否则就不做任何操作。INMEM模块(指令集存储模块)计算机组成原理实验指令集模块就是接收到刚刚PC模块传出的指令集地址后,在自己的指令集存储中寻找该条32位的指令并然后将其送出。指令集存储的初始化用到了READMEMB指令。注意,指令集的存储单位为1个字节8个位,所以我们在根据地址查找指令的时候,是以该地址的存储为首的连续四块存储单位依次赋值给送出指令的变量IOUT。REGFILE模块这个模块是寄存器的读写以及存储的模块。输入输出端口较多,就不在此列举了。这个模块中首先要将所有寄存器初始化为0,然后就是根据输入的的寄存器地址,送出寄存器。这里在输出寄存器的内容是毫无选择的,每一次调用这个模块,都会根据地址输出寄存器内容,而不管是否有效和是否需要。但是这样并不影响整个CPU的运行。主要是这两个寄存器的输出,一个在输出后就立即经过CTRL模块的选择,另一个在经过了ALU模块之后,也经过了CTRL模块的选择,所以这里的无选择并不影响CPU的运行。而写入寄存器则要根据CTRL模块传入的写使能端信号WE来判断,写入就根据输入的寄存器地址和要写入的数据,将相应地寄存器赋值。计算机组成原理实验EXT模块(立即数扩展)这个模块根据CTRL模块传来的控制信号,判断是有符号扩展还是无符号扩展。有符号直接在立即数前边补0再送出。有符号的话,因为计算机中数字的表示是补码,对于补码的补全,要根据正负,正数也是在前边补0,负数则要在前边补1。ALU模块计算机组成原理实验ALU模块就是CTRL模块传来的信息,用CASE语句分别进行处理。然后将结果输出。注意ALU模块还输出了一个ZERO变量来判断结果是不是0。这一部分主要是为了给BNE语句中,给两个寄存器比较用的,寄存器相减若为0,则说明两个寄存器的值相等。于是ZERO就可作为CTRL模块处理BNE的依据。RAM模块(数据存储器)RAM模块和REGFILE模块是有一些相似之处的,都是根据CTRL的信息,按照地址,存储计算机组成原理实验或读取信息。不同的地方也有很多,RAM的存储单位是一个字节,而存储器是一个字。RAM可以无限扩展,这里只取到128,而存储器是有32个的。回到代码,首先也是进行了初始化,虽然这个并不是很必要。然后读取的时候,就根据CTRL模块的RD信号,按照地址输出。也是因为这里是以字节为单位,所以要将连续的四块存储合到一起再输出。写入和取值的过程是一样的。CTRL模块CTRL模块中,先定义了一个13位的寄存器,来记录所有输出的控制信息的数据。这样写主要是写代码比较方便,可以省略很多重复的东西。接下来一部分是将各个传出的信号与这个寄存器一一对应。再接下来是比较关键的CASE语句。CASE语句中,每一个不同的指计算机组成原理实验令都具有不同的控制信息。这些控制信息主要是依照前文的表格和图2所写,当然之后也检测修改过,才算真正正确。注意到在写BNE语句的控制信息时,我们用到了ZERO,这主要是因为,BNE语句会产生两种结果,所以我们要根据ZERO的值分开处理。(二)实验结果与测试以下为本次实验测试的汇编语言代码段指令代码地址汇编程序OP(6)RS5RT5RD5/IMMEDIATE1616进制数代码0XADDIU1,0,5000000000100000000000001010XORI2,0,1200000000100000000000001100C0XADDU3,1,2000010001000011000000000000XCSUBU4,2,1000100000100100000000000000XAND5,1,2000010001000101000000000000XOR6,1,2000010001000110000000000000XBNE1,2,2≠,转2400001000100000000000000010C0XCSW2,41000010001000000000000001000XLW1,41000010000100000000000001009C0XBNE1,2,3≠,转1C00001000101111111111111101C022FFFD0XHALT00000000000000000000000000FC先解释一下这段代码,方便待会理解波形图。将寄存器0和立即数5相加,将结果存到寄存器1,所以寄存器1的值为5;将寄存器1与立即数12取或,将结果存到寄存器2,所以寄存器2的值为12;将寄存器1和寄存器2中的两个无符号数相加,结果存到寄存器3,所以寄存器3的值为17;将寄存器2与寄存器1无符号相减,结果存到寄存器4,所以寄存器4的值为7;将寄存器1和寄存器2取与,结果存到寄存器5,所以寄存器5的值为4;将寄存器1和寄存器2取或,结果存到寄存器6,所以寄存器6的值为13;判断寄存器1和寄存器2的值是否相等,不想等跳转到了24语句再次判断,还不相等,跳转到了1C语句;将寄存器2的值写入到以寄存器1的值4为起始的内存中。即内存9,10,11,12组成的32位数应当为12。计算机组成原理实验将和上边相同地址的内存中的值读取到寄存器1,所以寄存器1为12;判断寄存器1和寄存器2的值是否相等,相等,继续向下。关机语句,指令不再变化。以下为仿真图像,我们分段截取。在展示的变量中,我们只展示了相关的寄存器和内存部分。每一个上升沿,指令集地址和指令集读入,第一个下降沿,寄存器1被写入5。第二个下降沿,寄存器2被写入C也就是12第三个下降沿,寄存器3被写入11,十进制为17。接下来看下一张图。第4个下降沿,4被写入7,十进制也为7第5个下降沿,寄存器5被写入4。第6个下降沿,寄存器6被写入D,十进制为13第7个上升沿的时候,指令集地址显示,这是一条跳转的命令,指令地址即将跳转到,然后第8个上升沿的时候,读入的指令地址就是这条命令也是跳转,然后再看最后一张图。计算机组成原理实验第7个上升沿读入跳转指令,第8个上升沿发生了跳转,跳转到另一条跳转的指令,这条指令跳转到地址为C的指令。第9个上升沿,读入了该指令。第9个下降沿,寄存器2被写入内存,我们看四个相连的内存区域改变了值为C。第10个下降沿,内存被读取,寄存器1被写入内存中的值C。第11个上升沿,在此读到跳转指令,条件成立,未发生跳转,继续运行,第12个上升沿读到关机指令,之后指令以及指令地址不再变化。计算机组成原理实验六.实验心得 关键词: 计算机 组成 原理 实验 报告 周期 cpu 设计

天天文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。

关于本文

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。