西安交大计算机组成_实验十cpu

上传人:xmg****18 文档编号:122472727 上传时间:2020-03-06 格式:DOC 页数:32 大小:438.98KB
返回 下载 相关 举报
西安交大计算机组成_实验十cpu_第1页
第1页 / 共32页
西安交大计算机组成_实验十cpu_第2页
第2页 / 共32页
西安交大计算机组成_实验十cpu_第3页
第3页 / 共32页
西安交大计算机组成_实验十cpu_第4页
第4页 / 共32页
西安交大计算机组成_实验十cpu_第5页
第5页 / 共32页
点击查看更多>>
资源描述

《西安交大计算机组成_实验十cpu》由会员分享,可在线阅读,更多相关《西安交大计算机组成_实验十cpu(32页珍藏版)》请在金锄头文库上搜索。

1、计算机组成实验报告计算机66熊鹏飞2160500151实验十 基于MIPS指令集的CPU设计一、实验目的1. 综合运用Verilog进行复杂系统设计。2. 深刻理解计算机系统硬件原理。二、实验内容1. 设计一个基于MIPS指令集的CPU。2. CPU需要包含寄存器组、RAM模块、ALU模块、指令译码模块。3. 该CPU能运行基本的汇编指令。4. 实现cache,流水线或其他现代CPU的高级功能(加分项)三、实验要求1. 分析各模块的的程序结构,画出其流程图。单周期CPU指的是一条指令的执行在一个时钟周期内完成,然后开始下一条指令的执行,即一条指令用一个时钟周期完成。电平从低到高变化的瞬间称为时

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

3、状态。(4) 存储器访问(MEM):所有需要访问存储器的操作都将在这个步骤中执行,该步骤给出存储器的数据地址,把数据写入到存储器中数据地址所指定的存储单元或者从存储器中得到数据地址单元中的数据。(5) 结果写回(WB):指令执行的结果或者访问存储器中得到的数据写回相应的目的寄存器中。单周期CPU,是在一个时钟周期内完成这五个阶段的处理。2. 画出模块的电路图。3. 分析电路的仿真波形,标出关键的数值。4. 记录设计和调试过程。1. wire和reg是什么意思? 在verilog里面,变量有wire和reg两种类型,wire类型意为线,它不可储存中间结果,通过输入得出输出,类似纯函数,只要输入变

4、化,输出立即变化,如果没有输入,自然就没有输出。reg类型意为寄存器,它可以赋初值,可以储存中间结果,只有当满足某种条件时(比如时钟上升沿),它才会变化,其他时间会一直保持最后一次变化的值。2. 指令怎么来? 在IM组件和RW组件分别开两个寄存器数组,用来模拟指令内存和数据内存,通过文件读取,从test.txt(test文件夹中)读指令到IM的指令内存(从0开始),IM组件通过输入的IAddr(数组地址下标),得到相应的指令。3. 指令怎么变化? 在PC端,有两个外部输入:CLK和Reset。其中PC内部有指令寄存器,每次CLK上升沿触发后,会改成新的指令,同时,当Reset=1时,指令寄存器

5、也会置0。4. 模块和模块间怎么连接? 此时,需要一个顶层模块,相当于main函数,它会根据数据通路图,将一些下层模块的输出,连接到另一些下层模块的输入中。5. 写好的cpu怎么运行? 需要在顶层模块再添加一个测试文件,测试文件提供外部输入(CLK和Reset),然后模块就会自动运行得到相应的仿真结果。四、实验代码及结果1. PC:CLK上升沿触发,更改指令地址timescale 1ns / 1ps/ Company: / Engineer: / / Create Date: 23:43:40 05/02/2017 / Design Name: / Module Name: PC / Proj

6、ect Name: / Target Devices: / Tool versions: / Description: / Dependencies: / Revision: / Revision 0.01 - File Created/ Additional Comments: /module PC( input CLK, / 时钟 input Reset, / 重置信号 input PCWre, / PC是否更改,如果为0,PC不更改 input 31:0 newAddress, / 新指令 output reg31:0 currentAddress / 当前指令 ); initial b

7、egin currentAddress = 0; / 非阻塞赋值 end always(posedge CLK or posedge Reset) begin if (Reset = 1) currentAddress = 0; / 如果重置,赋值为0 else begin if (PCWre) currentAddress = newAddress; else currentAddress = currentAddress; end endendmodule输入:CLK,Reset,PCWre,newAddress输出:currentAddress解释:由于指令地址存储在寄存器里,一开始需要

8、赋currentAddress为0。Reset是重置信号,当为1时,指令寄存器地址重置。PCWre的作用为保留现场,如果PCWre为0,指令地址不变。2. InstructionMemory:储存指令,分割指令timescale 1ns / 1ps/ Company: / Engineer: / / Create Date: 00:10:27 05/03/2017 / Design Name: / Module Name: IM / Project Name: / Target Devices: / Tool versions: / Description: / Dependencies: /

9、 Revision: / Revision 0.01 - File Created/ Additional Comments: /module InstructionMemory( input InsMemRW, / 读写控制信号,1为写,0位读 input 31:0 IAddr, / 指令地址输入入口 /input IDataIn, / 没用到 output 5:0 op, output 4:0 rs, output 4:0 rt, output 4:0 rd, output 15:0 immediate / 指令代码分时段输出 ); reg7:0 mem0:63; / 新建一个32位的数组

10、用于储存指令 initial begin $readmemb(test/test.txt, mem); /读取测试文档中的指令 end / 从地址取值,然后输出 assign op = memIAddr7:2; assign rs4:3 = memIAddr1:0; assign rs2:0 = memIAddr + 17:5; assign rt = memIAddr + 14:0; assign rd = memIAddr + 27:3; assign immediate15:8 = memIAddr + 2; assign immediate7:0 = memIAddr + 3;endm

11、odule输入:InsMenRW,IAddr输出:op,rs,rt,rd,immediate解释:该部分为指令寄存器,通过一个64大小的8位寄存器数组来保存从文件输入的全部指令。然后通过输入的地址,找到相应的指令,并分割成op,rs,rt,rd,immediate输出。(由于寄存器地址+4,所以不用右移变换成真正的地址)3.RegisterFile:储存寄存器组,并根据地址对寄存器组进行读写timescale 1ns / 1ps/ Company: / Engineer: / / Create Date: 01:07:13 05/03/2017 / Design Name: / Module

12、Name: RF / Project Name: / Target Devices: / Tool versions: / Description: / Dependencies: / Revision: / Revision 0.01 - File Created/ Additional Comments: /module RegisterFile( input CLK, / 时钟 input RegWre, / 写使能信号,为1时,在时钟上升沿写入 input 4:0 rs, / rs寄存器地址输入端口 input 4:0 rt, / rt寄存器地址输入端口 input 4:0 WriteReg, / 将数据写入的寄存器端口,其地址来源rt或rd字段 input 31:0 WriteData, /

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 教学/培训

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号