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

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

西安邮电大学实践课程报告书课程名称:计算机组成与实践院(系)名称:电子工程学院专业班级:**学号/姓名:**实习时间: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型指令:指令指令格式功能oprsrtrdshamefuncadd000000sj1Sj2jgxx100000Jg=sj1+sj2addu000000100001Jg=sj1+sj2sub000000100010Jg=sj1-sj2subu000000Sj1Sj2jgxx100011Jg=sj1-sj2or000000Sj1Sj2jgxx000010Jg=sj1|sj2and000000Sj1xxjgxx000011Jg=sj1&sj2sla000000Sj1xxjg移位数000100Jgsjlr000000sr000000(2)I型指令:指令指令格式功能oprsrtImmediateaddi001000sj1Sj2ImmSj2=sj1+immaddiu001001sj1Sj2ImmSj2=sj1+immandi001100sj1Sj2ImmSj2=sj1&immori001101Sj1Sj2ImmJg=sj1|sj2Lw100011basertoffsetoffsetMemory[base+imm]sw101011basertoffsetMemory[base+imm]offsetslti001010Sj1Sj2immsj1=Sj2immsltu001011sj1Sj2immSj1=sj2imm(3)J型指令:指令指令格式功能oprsrtoffsetBeq000100sj1Sj2offsetIfsj1=sj2thenbranchBnq000101sj1Sj2offsetIfsj1≠sj2thenbranch3.2总体结构设计:该MIPS主要由8个模块组成,各个子模块分别设计其特定的功能,最终利用一个总的模块进行子模块间连接,使得整个CPU能连贯执行指令,在仿真结果中观察设计结果,最终进行硬件下载,验证设计。其中各个模块简单功能如下:(1)存储器模块:具备基本的读写功能,用于存放数据和指令。(2)寄存器堆模块:由32个32位的寄存器组成,提供较大的存储空间,用于存放暂存数据和指令。(3)算术逻辑运算器模块:执行加减法等算术运算,与非或等逻辑运算,以及比较移位传送等操作的功能部件,是该CPU的设计核心部分,存在不同的运算处理功能,是体现实验设计结果正确性的模块。(4)立即数扩展模块:执行I型指令时需要立即数扩展,该模块用于MIPS符号扩展,将16位数据扩展为32位数据。(5)主控制模块:用于控制各个模块之间的分工运行,产生不同数据通路的控制信号,保证指令顺序执行不发生紊乱。(6)ALU控制模块:用于生成ALU执行各种功能的控制信号,使ALU内部运行不发生紊乱。。(7)分支跳转指令控制模块:用于生成分支和跳转指令的控制信号。(8)取指模块:进行指令的取出及译码,同时包括程序计数器PC运行设计。各模块间关系如下:MIPS(顶层)立即数扩展模块算术逻辑运算器模块主控制模块ALU控制模块寄存器堆模块分支跳转指令控制模块存储器模块取指模块译码模块取指模块程序计数器模块3.3接口定义和接口时序MIPScpu_clkrstOut[3:0]说明:该CPU由cpu_clk和进行总的控制,并且输出程序计数器低4位进行简易流水灯显示,CPU运行的结果包括逻辑运算等在仿真界面中进行分析和设计验证。cpu_clk上升沿有效rst位低电平时复位有效4子模块详细设计4.1存储器模块设计4.1.1模块方案设计指令存储器用于存放CPU运算的程序指令和数据等,采用单端口存储器设计,设计最大为64个存储单元,每个存储单元数据宽度为32bit。4.1.2接口定义序号接口信号名称方向(I/O)说明1clkI存储器工作时钟,频率为50Mhz2rstI存储器片选信号,低有效3ExtMem_Adr[5:0]I存储器地址线4ExtMem_WRI存储器读写信号,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接口定义序号接口信号名称方向说明1clkI处理器工作时钟2rstI复位信号3Raddr1[4:0]I读寄存器堆时的第1个寄存器下标4Raddr2[4:0]I读寄存器堆时的第2个寄存器下标5Waddr[4:0]I写寄存器堆时的寄存器下标6WeI寄存器堆写使能7Wdata[31:0]I待写入寄存器堆的数据8Rdata1[31:0]O读寄存器堆时第1个寄存器的输出9Rdata2[31:0]O读寄存器堆时第2个寄存器的输出4.2.3模块仿真验证4.3算术逻辑运算器模块设计4.3.1模块方案设计运用alu_clt控制运算器的各种运算,包括无符号数的加法运算,有符号数的加法运算,或逻辑运算,与逻辑运算,无符号数的减法运算,无符号小于置1运算,逻辑左移,逻辑右移,算术右移等。4.3.2接口定义序号接口信号名称方向(I/O)说明1ALU_DA[31:0]I参与运算的第一个输入数据2ALU_DB[31:0]I参与运算的第二个输入数据3alu_clt[3:0]I运算功能编码4alu_shift[4:0]I偏移量5ALU_ZeroO零标志位6Alu_OverflowO溢出标志位7ALU_Dout[31:0]O运算结果输出位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操作控制信号O101201异或门异或门ALU_DA[31:0]ALU_DB[31:0]加减法运算器异或门阵列位扩展或门阵列01SUBctrOPctrOVctrSIGctrCinAdd_carryAdd_SignAdd_ResultAdd_OverflowZeroOverflowResult4.3.5模块仿真验证4.4立即数扩展模块设计4.4.1模块方案设计设计一个32位MIPS符号扩展单元SE,用于将16位的数据转换为32位数据。4.4.2接口定义序号信号名端口说明描述1Imm16[15:0]I来自指令寄存器的16位立即数2AluSrcI立即数扩展信号的使能端3bus[31:0]I4ExtImm32[31:0]O符号扩展后的32位立即数4.4.3模块仿真验证4.5主控制模块设计4.5.1模块方案设计以指令译码结果中的6位操作码及相关信号产生整个数据通路中的各个控制信号。4.5.2接口定义序号接口信号名称方向(I/O)说明1opI操作码2RegDstO目的寄存器选择3AluSrcOALU输入信号选择4ExtOpO立即数扩展的使能信号5RegWrO寄存器写使能6MemWr,O存储器写使能7MemtoRegO寄存器的装载信号选择4.5.3各控制信号的编码规则如下表所示:op000000001000001001001100001101100011101011001010001011000100000101RegDst01111101100RegWr11111101100ExtOp01000111011AluSrc01111111100MemWr00000010000MemtoReg000001000004.5.4模块仿真验证4.6ALU控制模块设计4.6.1模块方案设计通过译码结果中的高6位以及相关信号编码出数据通路中各个控制信号。4.6.2接口定义序号端口名称输入输出端口说明1rstI复位信号(高电平1有效)2cpu_clkI时钟(上升沿有效)3func[5:0]I功能区分4opI操作码5Alu_ctrl[3:0]OAlu功能信号4.6.3执行R型指令func对应的Alu_ctrl编码如下表所示:funcAlu_ctrl1000000001100001000010001001011000110100100100010010010100111010110110101010011100000010010000101001000011110000100000004.6.4模块仿真验证4.7分支跳转指令控制模块设计4.7.1模块方案设计运用译码结果的高6位以及ALU的两个输入数据决定分支及分支和跳转指令的控制信号。4.7.2接口定义序号信号名端口定义描述1ALU_DAI算术逻辑单元数据A2ALU_DBI算术逻辑单元数据B3opI指令操作码4func,IR指令的功能操作码5JumpO跳转信号使能端6BranchO分支信号使能端4.7.3模块仿真验证4.8取指模块设计4.8.1模块方案设计由程序计数器,取出指令以及译码三个子模块构成总的取指模块。4.8.2接口定义序号信号名方向(I/O)端口说明1clkI2rstI3ALU_DAI算术逻辑单元数据A4BranchI分支信号使能端5JumpI跳转信号使能端6opO指令操作码7rsO8rtO9rdO10funcOR指令的功能操作码11shamtO偏移量12imm16O立即数13ALU_DBO算术逻辑单元数据B14Pc_outO程序计数器输出4.8.3电路基本构成如下图所示:PCFetchdecodeclkrstALU_DAJumpBranchPc_outALU_DBinstruct3232op[5:0]rs[4:0]rt[4:0]rd[4:0]func[5:0]shamt[4:0]Imm16[15:0]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_ctrRegfileMemALU_ctrclkrstRaddr1[4:0]Raddr2[4:0]Waddr[4:0]WeWdata[31:0]Rdata1[31:0]Rdata2[31:0]ALU_DAALU_DBALU_DCALUctrRegDstAluSrcExtOpRegWrMemWrMemtoRegExtMem_dout1010ImmFlagFetchPCDecodezerooverflowAluctroprsrtrdshamtfuncimm16Pc_outALU_DAJumpBranchALU_DBrst5.2在ISE仿真环境下仿真验证设计结果,仿真结果如下图所示:5.3仿真结果分析由仿真结果得知该CPU执行

1 / 16
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功