下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、-. z.单周期MIPS处理器设计实验报告完成人:笪腾飞 2012011263一、实验目的 1、设计一个32位的单周期MIPS处理器,具备定时器、数码管等外设;2、编写一个编译器,可以将mips代码编译为二进制机器码;3、编写一个计算两个整数的最大公约数的汇编程序。二、设计方案根据理论课所学的单周期MIPS处理器数据通路的知识,结合本次试验的具体要求,最终设计方案如下:1、系统时钟为了综合后能够在开发板上正确运行程序,我们决定采取50MHz的CPU时钟,因此编写了一个时钟分频模块,对开发板提供的100MHz时钟进展二分频,从而得到50MHz时钟。2、PC产生模块原理图如下:如上图左半局部所示,
2、多路选择器由一个always语句中的ifelse ifelse语句实现。其中,将ALU中的加减法局部提取出来实现一个加法器,用于产生PC+4和ConBA两个PC来源。将I型指令中的16位立即数左移两位后再符号位扩展成32位地址,与PC+4相加得到分支地址ConBA。将跳转指令中的26位目标地址左移两位后,与当前PC的高四位拼接得到跳转地址JT。将第一个操作数存放器中的值取出作为PC的一个输入,这是为了实现jr和jalr指令,从$*p和$Ra存放器中读取跳转地址。ILLOP和*ADR分别是发生中断和异常时的跳转地址。下一指令地址的选择由PCSrc决定,而PCSrc是译码后由控制信号模块根据每条指
3、令的操作码(opcode)和函数码(funct)产生。3、译码模块原理图如上图右半局部所示,将PC作为ROM模块的地址输入,输出即为PC所对应的指令。分别取出指令中的*些片段,得到$Rs,$Rt,$Rd,shamt,funct,16位立即数和26位跳转地址。4、控制模块控制模块即控制信号产生模块,六位操作码OpCode,六位函数码5:0 Funct,定时器中断信号irq和PC最高位PC31作为输入,输出为以下控制信号:(1) R型指令指示信号IsR,值为1表示当前指令为R型指令,否则非R型指令;(2) PC产生的选择信号2:0 PCSrc,取值0,1,2,3,4及其它,分别选择下一指令不同的P
4、C;(3) 目的存放器选择信号1:0RegDst,被写入的存放器有四种选择:$Rd,$Rt,$Ra,$*p,分别由RegDst不同取值完成选择;(4) 写存放器使能信号RegWr,值为1表示允许对存放器进展写操作;(5) ALU第一个操作数选择信号ALUSrc1,值为1表示选择将移位量shamt进展0扩展后作为输入,值为0表示将$Rs存放器中的值作为输入;(6) ALU第一个操作数选择信号ALUSrc1,值为1表示选择将扩展后的32位立即数作为输入,值为0表示将$Rt存放器中的值作为输入;(7) ALU运算控制信号5:0 ALUFunc,作为ALU的输入选择不同的运算操作;(8) 有无符号数指
5、示信号Sign,值为1表示有符号数,值为0表示无符号数;(9) 写存储器使能信号MemWr,值为1表示允许对存储器进展写操作;(10) 读存储器使能信号MemRd,值为1表示允许对存储器进展读操作;(11) 写存放器值的选择信号1:0 MemToReg,选择ALU结果,存储器读取结果和PC+4其中之一作为写入目的存放器的值;(12) 符号位扩展指示信号E*TOp,值为1表示对16位立即数进展符号位扩展,值为0表示0扩展;(13) 立即数高位取指令指示信号LUOp,值为1表示当前指令为lui指令,选择将立即数载入高16位低位填0的32位立即数作为ALU输入,值为0表示将正常扩展后的32位立即数作
6、为ALU输入;控制信号的具体产生过程此处略去,在控制信号说明文件中进展详述。下列图为数据通路的总体原理图:5、存放器堆模块存放器堆模块RegFile根据$Rs,$Rt,$Rd的值和写存放器使能信号RegWr完成对存放器堆的读写操作。6、ALU模块根据指令容进展选择后得到两个ALU操作数和ALU运算控制信号ALUFunc及有无符号数指示信号作为ALU输入,完成算术运算、位运算、逻辑运算、移位运算和比拟运算,输出为运算结果ALUResult。7、数据存储器模块通过读写使能信号、读写地址和写入容完成对数据存储器的读写操作。8、外设模块完成对除UART局部的外设的读写操作,以及实现定时器功能,此模块为
7、实验提供模块。9、UART模块此模块通过对串口对应外设地址的读写操作,完成串口收发器的数据接收和数据发送功能。10、存储器读取结果读存储器的结果可能是数据存储器或外设中的容,因此要通过读存储器的地址进展选择,此处该地址即为ALU的计算结果ALUResultlw指令的读取地址为$Ra存放器的值加上偏移量,假设ALUResult高两位为00表示读取的是数据存储器,假设高两位为其它实际上是01表示读取的是外设。假设ALUResult5为1或ALUResult4、3为0表示读取UART容,否则表示读取其他外设的容。三、关键代码及文件清单1、分频模块 CPU_clk.v2、PC产生模块assign im
8、m16_sll_2bits = 14imm1615,imm16,2b00;assign JT = PC31:28,target,2b00;assign ILLOP = 32h80000004;assign *ADR = 32h80000008;Adder add1(.A(PC),.B(4),.CIN(1b0),.S(PC_Add_4);Adder add2(.A(PC_Add_4),.B(imm16_sll_2bits),.CIN(1b0),.S(ConBA);always (posedge clk or negedge reset) begin if (!reset) PC = 32h800
9、0_0000; else if (PCSrc = 0) PC = PC_Add_4; else if (PCSrc = 1 & ALUResult0 = 1b0) PC = PC_Add_4; else if (PCSrc = 1 & ALUResult0 = 1b1) PC = ConBA; else if (PCSrc = 2) PC = JT; else if (PCSrc = 3) PC = DataBusA; else if (PCSrc = 4) PC = ILLOP; else PC = *ADR;end3、数据通路ROM IF(.addr(PC),.data(Instructi
10、on);OpcodeToControl control(.OpCode(OpCode),.Funct(Funct),.irq(irq),.PC31(PC31),.IsR(IsR),.PCSrc(PCSrc),.RegDst(RegDst),.RegWr(RegWr),.ALUSrc1(ALUSrc1),.ALUSrc2(ALUSrc2), .ALUFunc(ALUFunc),.Sign(Sign),.MemWr(MemWr), .MemRd(MemRd),.MemToReg(MemToReg),.E*TOp(E*TOp),.LUOp(LUOp);RegFile RF(.reset(reset)
11、,.clk(clk),.addr1(Rs),.data1(DataBusA),.addr2(Rt),.data2(DataBusB), .wr(RegWr),.addr3(RegWrAddr),.data3(DataBusW);ALU alu(.SrcA(SrcA),.SrcB(SrcB),.ALUFunc(ALUFunc),.Sign(Sign),.ALUResult(ALUResult),.Zero(Zero),.OverFlow(OverFlow),.Negative(Negative);DataMem dm(.reset(reset),.clk(clk),.rd(MemRd),.wr(
12、MemWr),.addr(ALUResult),.wdata(DataBusB),.rdata(DataMemResult);Peripheral per(.reset(reset),.clk(clk),.rd(MemRd),.wr(MemWr),.addr(ALUResult),.wdata(DataBusB),.rdata(PeripheralResult),.led(led),.switch(switch),.digi(digi),.irqout(irq) );UART uart(.clk(clk),.rd(MemRd),.wr(MemWr),.wdata(DataBusB),.rese
13、t(reset),.DataIn(UARTIn),.addr(ALUResult),.DataOut(UARTOut),.rdata(UARTResult);assign MemRdData = (ALUResult31:30 = 2b00) DataMemResult : (ALUResult5 = 1b1 | (ALUResult4 & ALUResult3) UARTResult : PeripheralResult;代码文件见附件。四、仿真结果及分析第一组输入为00001111(15)和00000101(5),输出为00000101(5);第二组输入为00000011(3)和00001
14、001(9),输出为00000011(3);计算结果正确,UART、led、数码管均显示正确。五、综合情况六、硬件调试情况硬件调试工作正常七、思想体会在理论课上已经学习过单周期数据通路的搭建,思路比拟清晰,教师又对一些关键模块如存放器堆、存储器、外设等提供了代码,因此,初步搭建一个较为粗糙的单周期数据通路并不困难,然后是结合本次试验的一些要求,逐渐丰富完整数据通路。比拟有难度的是在后续仿真调试过程中遇到的各种复杂情况,需要对硬件作出一些调整,如对存储器的读取,起初并未考虑到数据存储器与外设的区别,因为在理论课中也并未提及到,后来仿真出不了结果,经过反复分析发现是读取存储器的问题,于是针对不同存储地址的区别进展了选择。从开场着手单周期,包括安排控制信号,到最后仿真出正确结果,综合到开发板上正确显示运行,经历了一个并不容易的过程。在这个过程中学到了很多东西,也积累了很多经历,很多时候对一个系统来说,开场是非常重要的。对系统整体有了较为充分的理解,对各局部衔接也有很明确的认识,在思路清晰的情况下搭建一个系统,事半功倍,以后也可以
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 幼儿园实施德育工作制度
- 幼儿园教室卫生工作制度
- 幼儿园新生工作制度范本
- 幼儿园治保组织工作制度
- 幼儿园生活照料工作制度
- 幼儿园融合教育工作制度
- 幼儿园门卫会客工作制度
- 康复医学科工作制度汇编
- 学校财产管理办法
- 文化艺术交流活动策划公司数据管理办法
- 医院培训课件:《婴儿艾滋病早期诊断滤纸片干血斑样本的采集、处理运输、保存及实验室检测》
- 2025年江苏省中考地理试卷六套附答案
- 幼儿园新教师培训课件
- DB3401∕T 332-2024 城市轨道交通现场6S管理规范
- 美尚生态公司财务造假案例分析
- 盾构机安装拆除施工监理实施细则
- 行李查询业务知识培训课件
- 国家电投集团陆上光伏发电工程典型设计
- 山东青岛2001-2023年中考满分作文137篇
- 《二次根式的乘法》教学设计
- 黑马程序员培训协议合同
评论
0/150
提交评论