当前位置:文档之家› (完整版)MIPS处理器设计说明说课讲解

(完整版)MIPS处理器设计说明说课讲解

(完整版)M I P S处理器设计说明西安邮电大学实践课程报告书课程名称:计算机组成与实践院(系)名:电子工程学院称专业班级:**学号/姓名:**实习时间:2015年3月6日至2015年6月19日1 课程主要目的本课程是在上学期《计算机组成与设计》课程学习的基础上,通过实践课的方式,依照集成电路设计流程,完成一个简单独立硬件功能电路模块的设计,从而到达对《计算机组成与设计》课程的深入理解和提高电路设计的实践能力,从理论和实验的结合中巩固计算机基本知识,熟练掌握电路设计的基本流程和原理,同时,加深对MIPS系统的组成部件及其电路结构,原理和功能的理解,掌握利用硬件描述语言和EDA工具进行MIPS设计的一般方法。

2 课程的主要内容和任务MIPS是典型的32位定长指令字RISC处理器,要求深入理解MIPS处理器的内部结构及工作原理。

采用verilogHDL设计一个兼容MIPS指令格式,具有10条以上指令功能的单周期CPU硬件电路,该32位MIPS设计内容主要包括系统中的基本组成部件(存储器,指令寄存器,寄存器堆,算术逻辑运算器,程序计数器,多路选择器,符号扩展等)的设计,仿真及硬件下载的方法和过程。

设计过程中使用ISE仿真工具完成设计电路的仿真验证。

3总体设计方案3.1指令及其功能表:(1)R型指令:(2)I型指令:(3)J型指令:3.2总体结构设计:该MIPS主要由8个模块组成,各个子模块分别设计其特定的功能,最终利用一个总的模块进行子模块间连接,使得整个CPU能连贯执行指令,在仿真结果中观察设计结果,最终进行硬件下载,验证设计。

其中各个模块简单功能如下:(1)存储器模块:具备基本的读写功能,用于存放数据和指令。

(2)寄存器堆模块:由32个32位的寄存器组成,提供较大的存储空间,用于存放暂存数据和指令。

(3)算术逻辑运算器模块:执行加减法等算术运算,与非或等逻辑运算,以及比较移位传送等操作的功能部件,是该CPU的设计核心部分,存在不同的运算处理功能,是体现实验设计结果正确性的模块。

(4)立即数扩展模块:执行I型指令时需要立即数扩展,该模块用于MIPS符号扩展,将16位数据扩展为32位数据。

(5)主控制模块:用于控制各个模块之间的分工运行,产生不同数据通路的控制信号,保证指令顺序执行不发生紊乱。

(6)ALU控制模块:用于生成ALU执行各种功能的控制信号,使ALU 内部运行不发生紊乱。

(7)分支跳转指令控制模块:用于生成分支和跳转指令的控制信号。

(8)取指模块:进行指令的取出及译码,同时包括程序计数器PC运行设计。

各模块间关系如下:3.3接口定义和接口时序说明:该CPU由cpu_clk和进行总的控制,并且输出程序计数器低4位进行简易流水灯显示,CPU运行的结果包括逻辑运算等在仿真界面中进行分析和设计验证。

cpu_clk上升沿有效rst位低电平时复位有效4 子模块详细设计4.1 存储器模块设计4.1.1模块方案设计指令存储器用于存放CPU运算的程序指令和数据等,采用单端口存储器设计,设计最大为64个存储单元,每个存储单元数据宽度为32bit。

4.1.2 接口定义说明序号接口信号名称方向(I/O)1clk I 存储器工作时钟,频率为50Mhz2rst I 存储器片选信号,低有效3ExtMem_Adr [5:0]I 存储器地址线4ExtMem_WR I 存储器读写信号,1为写反之读5ExtMem_Din [31:0]I 存储器输入数据线6ExtMem32 [31:0]O 存储器输出数据线4.1.3 模块仿真验证4.2 寄存器堆模块设计4.2.1模块方案设计该MIPS指令格式中的寄存器号是5bits,指令可以访问32个32位的寄存器。

这32个32位的寄存器构成一个寄存器堆。

4.2.2 接口定义序号接口信号名称方向说明1c lk I 处理器工作时钟2rst I 复位信号3Raddr1[4:0]I 读寄存器堆时的第1个寄存器下标4Raddr2[4:0]I 读寄存器堆时的第2个寄存器下标5Waddr[4:0]I 写寄存器堆时的寄存器下标6We I 寄存器堆写使能7Wdata [31:0]I 待写入寄存器堆的数据8Rdata 1[31:0] O 读寄存器堆时第1个寄存器的输出9Rdata 2[31:0] O 读寄存器堆时第2个寄存器的输出4.2.3 模块仿真验证4.3算术逻辑运算器模块设计4.3.1 模块方案设计运用alu_clt控制运算器的各种运算,包括无符号数的加法运算,有符号数的加法运算,或逻辑运算,与逻辑运算,无符号数的减法运算,无符号小于置1运算,逻辑左移,逻辑右移,算术右移等。

4.3.2 接口定义4.3.3 关键控制信号的产生SUBctr = alu_clt[2];ANDctr = alu_clt[0];OVctr = !alu_clt[1]&alu_clt[0];SIGctr = alu_clt[0];OPctr[1] = alu_clt[2]&alu_clt[1]|alu_clt[3];OPctr[0] = alu_clt[1];4.3.4具体ALU实现如下图所示:ALU操作控制信号O1121异或门异或门ALU_DA[31:0]ALU_DB[31:0]加减法运算器异或门阵列位扩展或门阵列1SUBctr OPctr OVctr SIGctrCinAdd_carryAdd_SignAdd_ResultAdd_OverflowZeroOverflowResult4.3.5 模块仿真验证4.4 立即数扩展模块设计4.4.1 模块方案设计设计一个32位MIPS符号扩展单元SE,用于将16位的数据转换为32位数据。

4.4.2 接口定义序号信号名端口说明描述1 Imm16[15:0] I 来自指令寄存器的16位立即数2 AluSrc I 立即数扩展信号的使能端3 bus[31:0] I4 ExtImm32[31:0] O 符号扩展后的32位立即数4.4.3 模块仿真验证4.5 主控制模块设计4.5.1 模块方案设计以指令译码结果中的6位操作码及相关信号产生整个数据通路中的各个控制信号。

4.5.2 接口定义序号接口信号名称方向(I/O)说明1 op I 操作码2 RegDst O 目的寄存器选择3 AluSrc O ALU输入信号选择4 ExtOp O 立即数扩展的使能信号5 RegWr O 寄存器写使能6 MemWr, O 存储器写使能7 MemtoReg O 寄存器的装载信号选择4.5.3各控制信号的编码规则如下表所示:op 000 001 001 001 001 100 101 001 001 000 000000 000 001 100 101 011 011 010 011 100 101 RegDst 0 1 1 1 1 1 0 1 1 0 0 RegWr 1 1 1 1 1 1 0 1 1 0 0 ExtOp 0 1 0 0 0 1 1 1 0 1 1 AluSrc 0 1 1 1 1 1 1 1 1 0 0 MemWr 0 0 0 0 0 0 1 0 0 0 0 MemtoRe0 0 0 0 0 1 0 0 0 0 0 g4.5.4 模块仿真验证4.6 ALU控制模块设计4.6.1 模块方案设计通过译码结果中的高6位以及相关信号编码出数据通路中各个控制信号。

4.6.2 接口定义序号端口名称输入输出端口说明1 rst I 复位信号(高电平1有效)2 cpu_clk I 时钟(上升沿有效)3 func[5:0] I 功能区分4 op I 操作码5 Alu_ctrl[3:0] O Alu功能信号4.6.3 执行R型指令func对应的Alu_ctrl编码如下表所示:func Alu_ctrl100000 0001100001 0000100010 0101100011 0100100100 0100100101 0011101011 0110101010 0111000000 1001000010 1001000011 1100001000 00004.6.4 模块仿真验证4.7 分支跳转指令控制模块设计4.7.1 模块方案设计运用译码结果的高6位以及ALU的两个输入数据决定分支及分支和跳转指令的控制信号。

4.7.2 接口定义序号信号名端口定义描述1 ALU_DA I 算术逻辑单元数据A2 ALU_DB I 算术逻辑单元数据B3 op I 指令操作码4 func, I R指令的功能操作码5 Jump O 跳转信号使能端6 Branch O 分支信号使能端4.7.3 模块仿真验证4.8 取指模块设计4.8.1 模块方案设计由程序计数器,取出指令以及译码三个子模块构成总的取指模块。

4.8.2 接口定义序号信号名方向(I/O)端口说明1 clk I2 rst I3 ALU_DA I算术逻辑单元数据A4 Branch I分支信号使能端4.8.3 电路基本构成如下图所示:4.8.4 跳转和分支指令执行时PC_out的编码规律Jump:Pc_out<= ALU_DABranch : Pc_out<= Pc_out+1+ALU_DB正常情况下:Pc_out<=Pc_out+14.8.5 模块仿真验证5 设计总体连接及仿真验证5.1 设计总体连线Main_c trRegfileMemALU_ctrclk rstRaddr1[4:0]Raddr2[4:0]Waddr[4:0]WeWdata [31:0]Rdata 1[31:0]Rdata 2[31:0]ALU_DAALU_DBALU_DCALUctrRegDst AluSrc ExtOp RegWr MemWr MemtoRegExtMem_dout1010ImmFlagFetchPCDecodezero overflow Aluctroprs rt rdshamt func imm16Pc_outALU_DA Jump BranchALU_DB rst5.2 在ISE 仿真环境下仿真验证设计结果,仿真结果如下图所示:5.3 仿真结果分析由仿真结果得知该CPU执行的12条指令均正常运行,实验基本成功,但是设计较为简单,并未涵盖太多复杂指令,需要进一步改善,使其趋于完善。

6、实践课总结和心得体会西安邮电大学电子工程学院计算机组成与实践实践课程过程考核表西安邮电大学电子工程学院计算机组成与实践实践课程成绩鉴定表精品文档收集于网络,如有侵权请联系管理员删除。

相关主题