ImageVerifierCode 换一换
格式:DOCX , 页数:16 ,大小:417.52KB ,
资源ID:8091152      下载积分:12 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8091152.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(微处理器系统设计讲义.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

微处理器系统设计讲义.docx

1、微处理器系统设计讲义功能描述:设计一个带简单I/O接口电路的多周期RISC处理器设计方案,并在FPGA上进行验证。验证题目为设计流水灯的样式为:00000000-00000001-00000011-00000111-00001111-0011111-01111111-11111111-00000000,切换间隔为1秒。 RISC处理器简介中央处理器(CPU,Central Processing Unit)是计算机的核心部件。计算机进行信息处理可分为两个步骤:(1)将数据和程序(即指令序列)输入到计算机的存储器中;(2)从第一条指令的地址起开始执行该程序,得到所需结果,结束运行。CPU的作用是协

2、调并控制计算机的各个部件并执行程序的指令序列,使其有条不紊地进行。因此它必须具有以下基本功能: 取指令当程序已在存储器中时,首先根据程序入口地址取出一条程序,为此要发出指令地址和控制信号。 分析指令即指令译码,这是对当前取得的指令进行分析,指出它要求什么操作,并产生相应的操作控制命令。 执行指令根据分析指令时产生的“操作命令”形成相应的操作控制信号序列,通过运算器、存储器及输入/输出设备的执行,实现每条指令的功能,其中包括对运算结果的处理及下条指令地址的形成。将CPU的功能进一步细化,可概括如下:(1)能对指令进行译码并执行规定的动作;(2)可以进行算术和逻辑运算;(3)能与存储器和外设交换数

3、据;(4)提供整个系统所需要的控制。尽管各种CPU的性能指标和结构细节各不相同,但它们所能完成的基本功能相同。由功能分析可知,任何一种CPU内部结构至少应包含下面这些部件:(1)算术逻辑运算部件(ALU);(2)累加器或寄存器;(3)程序计数器;(4)指令寄存器和译码器;(5)时序和控制部件。从实现的途径看,RISC处理器与一般的CPU的不同之处在于:它的时序控制信号形成部件是用硬布线逻辑实现的而不是采用微程序控制的方式。所谓硬布线逻辑也就是用触发器和逻辑门直接连线所构成的状态机和相应的组合逻辑,故产生控制序列的速度比用微程序控制方式快得多,因为这样做省去了读取微程序指令的时间。RISC处理器

4、结构介绍一、处理器结构 RISC处理器内核结构从图中可以看出, RISC处理器内核包括以下功能单元:控制器、程序计数器、通用寄存器、算术逻辑单元(ALU)和总线接口单元(BIU)。以下的内容将依次讨论这些模块。二、处理器内部子模块1、控制器控制器用于进行指令译码、产生ALU运算控制信号、产生通用寄存器读写控制信号以及协调处理器工作时序工作。2、程序计数器程序计数器用于指向下一条将要执行的指令的地址,它可以自动增值或是通过分支指令来设置其内容。3、寄存器堆处理器内部有32个32 位寄存器,ALU运算的源操作数、目的操作数大都来自这个寄存器堆。4、算术逻辑单元算术逻辑单元用于进行算术运算、移位操作

5、、比较设置操作以及逻辑运算。对于其他未能实现的运算,例如乘法、浮点运算等,可以使用软件来实现。5、总线接口单元总线接口单元用于SimpleRISC处理器与外部存储器和I/O口的连接,为了简单起见,SimpleRISC系统的存储器和I/O采用统一编址的方式进行组织,并且采用程序存储器和数据存储器分开的哈佛结构。 多周期CPU设计原理在单周期CPU中,每条指令的运行周期都是相同的。然而,不同的指令,其实际的运行时间各不相同,有的甚至相差很大。单周期处理器时钟周期远远大于许多指令实际所需执行时间,例如,R-型指令和立即数运算指令都不需要读内存;Store指令不需要写寄存器;分支指令不需要访问内存和写

6、寄存器;Jump指令不需要ALU运算,不需要读内存,也不需要读写寄存器。受时钟周期宽度的影响,单周期处理器的效率地下、性能极差,这样就造成了运行时间的浪费,降低了运行的速度。为了解决这个问题,引入多时钟周期CPU的设计方式。如下图所示,在多时钟周期CPU中,每条CPU指令并不是在一个时钟周期内运行,而是需要占用多个时钟周期,每一个执行步骤占用一个时钟周期。不同的指令,占用的时钟周期的个数也不相同。指令可以根据自身特点来决定使用几个时钟周期。这样,既保证了指令的正确运行,又使得指令根据自身的特点来占用运行时间,避免了运行时间的浪费。 多周期处理器的基本思想为:把每条指令的执行分为多个大致相等的阶

7、段,每个阶段在一个时钟周期内完成;各个阶段最多完成一次访存或一次寄存器读/写或一次ALU操作;各个阶段的执行结果在下个时钟到来时保存到相应的存储单元或稳定的保持在组合电路中;时钟周期的宽度以最复杂的阶段所花的时间为准,通常取一次存储器读或写的时间。第一步自然是分析指令执行的状态。在多周期处理器中,每条指令分多个阶段执行,每个阶段占一个时钟周期,称为一个状态。指令在被取出、译码之前,每条指令的操作是一样的,指令译码之后不同的指令有不同的执行过程。子模块设计控制器模块方案设计 控制器需要根据不同的指令,产生不同的控制信号,以控制数据通路中的部件能同步工作,并且使得数据通路中相应的数据选择器作出正确

8、的选择。这里的控制器比较复杂,使用一个有限状态机来实现,下图给出了控制器的状态转移图。控制器状态转移图从图中可以看出, RISC处理器的控制器具有5个状态。起始状态是取指状态Fetch, Fetch状态使得指令存储器的读控制信号有效,从而取到要执行的指令。取到指令之后,要对其进行译码,所以进入了第二个指令译码状态Decode,Decode根据前一状态取到的指令进行译码操作,产生相应的数据选择器选择信号等控制信号。指令译码之后,进入指令执行状态Execute,这一步大多数指令使用ALU进行运算,然后根据指令类型选择是进行存储器操作还是直接将运算结果写回寄存器堆。对于存储器访问指令,执行状态之后计

9、算出进行存储器访问的地址,之后进入存储器访问状态Memory进行相应的存储器操作。对于其他不需要进行存储器访问的指令,直接进入寄存器回写状态Write,将计算结果写回寄存器。接口定义信号名称方向含义opIN操作码regdstOUT写寄存器地址regwrOUT写寄存器控制信号alusrcOUT立即数和寄存器数据读选择信号extopOUT立即数扩展信号memwrOUT存储器写信号memtoregOUT存储器写寄存器信号 寄存器堆模块设计模块方案设计 MIPS指令格式中的寄存器号是5bits,指令可以访问25=32个32位的寄存器。这样的一堆寄存器“堆在一起”构成一个寄存器堆。每一个寄存器都是32位

10、,寄存器用来存放指令执行所需的数据。根据指令执行需要,该寄存器堆需要一个写数据端口和两个读数据端口,即同时要求有两个读地址和一个写地址。每次当写信号有效和时钟上升沿来临时,会将要写入的数据写入到寄存器给定的地址中,寄存器读端口会在持续的读出寄存器中相应地址中的数据。电路结构 接口定义及时序图 寄存器共有9个端口,具体见下表序号接口信号名称方向说明1. clkI处理器工作时钟,频率为2. rst_nI复位信号,低有效3. raddr1I读寄存器堆时的第1个寄存器地址4. raddr2I读寄存器堆时的第2个寄存器地址5. waddrI写寄存器堆时的寄存器地址6. weI寄存器堆写使能7. wdat

11、aI待写入寄存器堆的数据8. rdata1O读寄存器堆时第1个寄存器的输出9. rdata2O读寄存器堆时第2个寄存器的输出ALU模块方案设计算术逻辑运算器(ALU)是数字计算机中执行加、减等算术运算,执行与、或等逻辑运算,以及执行比较、移位、传送等操作的功能部件,本模块实现32位的ALU。本文描述MIPS单周期处理器的ALU模块的功能、接口、时序及其实现。aluclt运算类型SUBctrSIGctrOPctrOP含义0000Addu0000加法器0001Add0100加法器0011Or0101与或器0010And0001与或器0100Subu1000加法器0101Sub1100加法器0110

12、Situ1011置位器0111Sit1111置位器1000Sll0010移位器1001Srl0110移位器1100sra1010移位器SUBctr = ALUctr2(作为加减控制信号)ANDctr = ALUctr0 (作为与或控制信号)OVctr = ALUctr1&ALUctr0(溢出控制信号)SIGctr = ALUctr0 (置位控制信号)Opctr1 = Aluctr2&ALUctr1| ALUctr3OPctr0 = ALUctr1(输出选择信号)电路结构接口定义及时序图 信号名称方向含义alu_da31:0INALU第一个输入数据端口,32位宽度alu_db31:0INALU第

13、二个输入数据端口,32位宽度alu_clt3:0IN ALU运算功能编码,12种指令需要4位编码alu_shift4:0IN ALU移位次数alu_zeroOUT运算结果全零标志alu_overflowOUT有符号运算溢出标志alu_dc31:0OUTALU运算结果算术逻辑单元控制模块模块方案设计 算数逻辑单元控制模块用来控制ALU的运算类型,当进行R型指令操作时,ALU的运算类型受控于指令中的func_seg字段,当进行I型指令时,ALU的运算类型受控于指令中的op_seg字段。因此,要设计算术逻辑单元控制模块,需要根据不同的指令类型对func_seg和op_seg字段进行译码操作,从而实现

14、指令对ALU运算类型的控制。电路结构接口定义信号名称方向含义opIN操作码func_segINR型指令操作类型alu_ctrOUTalu运算类型程序计数器输入端口说明:Clk,rst_n,bus2与上面的说明一致。Inc_pc:有效时,程序计数器自动加一,用于取出下条指令进行相应的动作。Load_pc:有效时,可以将bus2上的数据加载到程序计数器上输出端口说明:Pc_out:用于输出相应的地址以便在存储器中取出指令。总线接口单元总线接口单元只是一些三态缓冲器,所以直接在RISC处理器的顶层设计中实现,而这里就不专门进行设计。逻辑原理图:多时钟周期CPU设计逻辑原理如下图1:多时钟周期CPU设

15、计逻辑原理图第二步,就是进行CPU控制器的设计了。 由于多周期数据通路每个指令的执行有多个周期,每个周期的控制信号取之不同,所以,不能用简单的真值表描述的设计方式。多周期控制器通常采用基于有限状态机和微程序描述两种方式实现。 在本设计中,采用有限状态机的描述方式实现。其基本思想为:用一个有限状态机描述指令执行过程,由当前状态和操作码确定下一状态,每来一个时钟发生一次状态改变,不同的状态输出不同的控制信号值。 有限状态机图已在图二中给出,通过第一步中对六类指令的分析,确定使用12个状态对指令的执行过程进行描述和控制。R型指令取指令状态译码/取数状态送数据运算状态运算结果写回状态I型指令取指令状态

16、译码/取数状态送数据运算状态运算结果写回状态lw型指令取指令状态译码/取数状态访存地址计算状态存储器取数状态结果写回寄存器状态sw型指令取指令状态译码/取数状态访存地址计算状态存储器写回状态分支指令取指令状态译码/取数状态分支结束状态无条件跳转指令取指令状态译码/取数状态跳转结束状态多时钟周期CPU设计指令状态表指令编码1、加法这里实现的是有符号数的加法,不考虑溢出。(1)寄存器操作数相加汇编语言表示形式:add rt, rs1, rs2操作说明:rt = rs1 + rs2编码:(2)寄存器操作数与立即数相加汇编语言表示形式:addi rt, rs, imm16操作说明:rt = rs +

17、imm16,对imm16进行符号扩展编码:2、减法这里实现的是有符号数的减法,不考虑溢出。(1)寄存器操作数相减汇编语言表示形式:sub rt, rs1, rs2操作说明:rt = rs1 - rs2编码:(2)寄存器操作数与立即数相减汇编语言表示形式:subi rt, rs, imm16操作说明:rt = rs imm16,对imm16进行符号扩展编码:3、小于则置一这里实现的是无符号数的比较。(1)寄存器操作数比较汇编语言表示形式:slt rt, rs1, rs2操作说明:rt = (rs1 rs2)编码:(2)寄存器操作数与立即数比较汇编语言表示形式:slti rt, rs, imm16

18、操作说明:rt = (rs imm16),对imm16进行零扩展编码:4、左移汇编语言表示形式:sl rt, rs, imm5操作说明:rt = rs imm5编码:6、逻辑与这里实现的是无符号数的逻辑与。(1)寄存器操作数的逻辑与汇编语言表示形式:andl rt, rs1, rs2操作说明:rt = rs1 & rs2编码:(2)寄存器操作数与立即数的逻辑与汇编语言表示形式:andli rt, rs, imm16操作说明:rt = rs & imm16,对imm16进行零扩展编码:7、逻辑或这里实现的是无符号数的逻辑或。(1)寄存器操作数的逻辑或汇编语言表示形式:orl rt, rs1, r

19、s2操作说明:rt = rs1 | rs2编码:(2)寄存器操作数与立即数的逻辑或汇编语言表示形式:orli rt, rs, imm16操作说明:rt = rs | imm16,对imm16进行零扩展编码:8、逻辑非这里只实现了寄存器操作数的逻辑非。汇编语言表示形式:notl rt, rs操作说明:rt = rs编码:9、从存储器取数据汇编语言表示形式:load rt, rs, imm16操作说明:rt = memoryrs + imm16,对imm16进行符号扩展编码:10、存储数据到存储器汇编语言表示形式:store rs1, rs2, imm16操作说明:memoryrs2 + imm16 = rs1,对imm16进行符号扩展编码:11、无条件分支汇编语言表示形式:branch imm26操作说明:PC = PC + imm26,对imm26进行符号扩展编码:12、相等则分支汇编语言表示形式:beq rs1, rs2, imm16操作说明:if(rs1 = rs2) PC = PC + imm16; else PC = PC + 1; 对imm16进行符号扩展编码:

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1