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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

设计方案微处理器.docx

1、设计方案微处理器微处理器系统设计(设计方案)版本v1.0专业:集成电路设计与集成系统班级:电路1201姓名:韩喆学号:05126030日期:2015年6月25日微处理器系统设计方案一、 实验设计目的基于前期课程中已掌握的CPU基本部件的设计方法、仿MIPS处理器指令集设计一个带简单I/O接口电路的多周期RISC处理器,采用自顶向下的全正向设计方法,并选用Verilog_HDL语言为设计输入工具,在FPGA上进行验证。先完成多周期微处理器指令系统设计,多周期微处理器数据通路以及系统结构设计。然后验证设计,设计实现一个简单的总线控制模块和8255并口芯片功能,并驱动LED灯,设计简单的流水灯变化,

2、其变化样式如下:1)001100-11001100,切换间隔为0.5秒;2)11100111-00011000,切换间隔为0.5秒。两种样式之间自动切换,切换间隔为10秒。二、 设计实现方案1.总体设计方案1)指令及其功能表(1)R型指令:指令指令格式功能oprsrtrdshamefuncadd000000sj1Sj2jgxx100000Jg=sj1+sj2sub000000sj1Sj2jgjg100010Jg=sj1-sj2or000000Sj1Sj2jgxx000010Jg=sj1|sj2and000000Sj1xxjgxx000011Jg=sj1&sj2sll000000Sj1xxjg移

3、位数000100Jgsj(2)I型指令:指令指令格式功能oprsrtImmediateaddiu101011sj1Sj2ImmSj2= sj1+immandi001100sj1Sj2ImmSj2= sj1&immLw100011basertoffsetoffsetMemorybase+immsw001001basertoffsetMemorybase+immoffset(3)J型指令:指令指令格式功能oprsrtoffsetBeq000100sj1Sj2offsetIf sj1=sj2 then branchBnq000101sj1Sj2offsetIf sj1sj2 then branchj

4、1010002)总体结构设计注:将一个外来时钟信号clk_out 生成一系列时钟信号clk1、clk 送往CPU内部的其他部件。clk1信号用作状态控制器的时钟信号。clk 则用于触发每一个状态的进行。3)该MIPS CPU的顶层原理图2.子模块详细设计该多周期CPU内部主要包括九个基本模块,即时钟发生器,指令寄存器,累加器,算术逻辑单元,数据控制器,状态控制器,取指模块,地址多路器和立即数扩展等模块。各模块具体功能及相关主要端口说明如下:1) 时钟发生器根据功能单元所需进行的操作,将一条指令执行分解为一系列步骤,指令的每一个步骤占用一个时钟周期。因此利用时钟发生器模块将一个外来时钟信号Clk

5、_out生成一系列不同的时钟信号clk1、clk 送往CPU内部的其他部件。利用clk的上升沿来触发CPU控制器开始执行一条指令。clk1信号用作状态控制器的时钟信号。端口定义:序号接口信号名称方向(I/O)说明1 Clk_outI外部输入时钟2 rstI复位信号,低有效3 clk1O状态控制器的时钟信号4 clkOALU的时钟信号2) 指令寄存器指令存储器用于存放CPU运算的程序指令和数据等,采用单端口存储器设计,设计最大为64个存储单元,每个存储单元数据宽度为32bit。指令寄存器的触发时钟是clk,在clk的正沿触发下,寄存器将数据总线送来的指令寄存器中。但并不是每个clk的上升沿都寄存

6、数据总线的数据,因为数据总线上有时传输指令,有时传输数据。什么时候寄存,什么时候不寄存由CPU状态控制器的load_ir信号控制。load_ir信号通过ena 口输入到指令寄存器。复位后,指令寄存器被清为零。序号接口信号名称方向(I/O)说明5 clkI存储器工作时钟,频率为50Mhz6 rstI存储器片选信号,低有效7 ExtMem_Adr 5:0I存储器地址线8 ExtMem_WRI存储器读写信号,1为写反之读9 ExtMem_Din 31:0I存储器输入数据线10 ExtMem32 31:0O存储器输出数据线11 enaI加载指令寄存器3) 累加器累加器用于存放当前的结果。复位后,累加器

7、的值是零。当累加器通过ena使能端口收到来自CPU状态控制器load_acc信号时,在clk时钟正跳沿时就收到来自于数据总线的数据。序号接口信号名称方向(I/O)说明1 clkI时钟信号2 enaI使能信号3 Data31:0I来自数据总线的数据4 rstI复位信号,低有效5 accum31:0O输出总线上的数据4) RISC CPU 算术逻辑运算单元算术逻辑运算单元 根据输入的8种不同操作码分别实现相应的加、减、与、异或、跳转等多种基本操作运算。利用这几种基本运算可以实现很多种其它运算以及逻辑判断等操作。同时利用该算术逻辑部件的部分功能实现下载之后的流水灯简单变化功能,用以验证设计结果。(1

8、).端口说明序号接口信号名称方向(I/O)说明1ALU_DA 31:0I参与运算的第一个输入数据2ALU_DB 31:0I参与运算的第二个输入数据3alu_clt3:0I运算功能编码4alu_shift4:0I偏移量5ALU_ZeroO零标志位6Alu_OverflowO溢出标志位7ALU_Dout 31:0O运算结果输出位(2).具体ALU实现如下图所示5) 数据控制器数据控制器的作用是控制累加器数据输出,由于数据总线是各种操作时传送数据的公共通道,不同的情况下传送不同的内容。有时要传输指令,有时要传送RAM区或接口的数据。计算单元的数据只有在需要往RAM区或端口写时才允许输出,否则应呈现高

9、阻态,以允许其它部件使用数据总线。 所以任何部件往总线上输出数据时,都需要一控制信号。而此控制信号的启、停,则由CPU状态控制器输出的各信号控制决定。数据控制器何时输出ALU的数据则由状态控制器输出的控制信号Data_ena决定。序号接口信号名称方向(I/O)说明1 InIALU的数据输入口2 Data_enaI是否输出ALU的数据的控制信号3 Data31:0O来自数据总线的数据6) 状态控制器状态控制器由两部分组成:1.状态机2.状态机控制器状态机控制器接受复位信号RST,当RST有效时通过信号ena使其为0,输入到状态机中停止状态机的工作。 状态机是CPU的控制核心,用于产生一系列的控制

10、信号,启动或停止某些部件。CPU对指令和数据的读写都是由状态机来控制的。状态机的当前状态,由变量state记录,state的值就是当前这个指令周期中已经过的时钟数。4类指令的有限状态机图一条指令的执行分为若干个周期,包括取指令周期,指令译码周期,指令执行周期,存储器访问周期以及结果回写周期。本次实验利用有限状态机实现多周期CPU的控制。在执行指令过程中:(1).LW等指令的执行包括5个周期:a) 根据程序计数器取指令,并且PC+1;b) 指令译码,读出rs寄存器的内容;c) 计算存储器地址;d) 访问存储器,读出数据;e) 将结果写入寄存器堆中的rt寄存器。(2).跳转指令的执行需要3个周期:

11、a) 根据PC取指令;b) 指令译码,选择要跳转的目标地址;c) 把跳转地址写入PC中。(3).R型指令执行需要4个周期:a) 根据程序计数器取指令,并且PC+1;b) 读出rs和rt寄存器的内容;c) 由ALU完成两个输入数据的计算;d) 将结果写入寄存器堆中。(4).转移指令执行需要3个周期:a) 根据程序计数器取指令;b) 读出rs和rt寄存器的内容,ALU计算转移地址;c) 由ALU比较两个寄存器内的数据,决定是否要把转移地址写入PC中。7) 取指模块由程序计数器,取出指令以及译码三个子模块构成总的取指模块。程序计数器用于提供指令地址。以便读取指令,指令按地址顺序存放在存储器中。当指令

12、顺序执行时,pc_addr每次自动加1,如果遇到要改变顺序执行程序的情况,即分支或跳转指令时,需要形成新的指令地址,这时CPU状态控制器将会输出load_pc信号,通过load口进入程序计数器。程序计数器(pc_addr)将装入目标地址(ir_addr),而不是增1。如果执行复位,则复位后,指令指针为零,即每次CPU重新启动将从存储器的零地址开始读取指令并执行。(1).端口说明:序号信号名方向(I/O)端口说明1clk2rst3ALU_DA算术逻辑单元数据A4Branch分支信号使能端5Jump跳转信号使能端6op指令操作码7rs8rt9rd10funcR指令的功能操作码11shamt偏移量1

13、2imm16立即数13ALU_DB算术逻辑单元数据B14Pc_out程序计数器输出(2).电路内部基本构成如下图所示:8)地址多路器地址多路器用于选择输出的地址是PC(程序计数)地址还是数据/端口地址。每个指令周期的前4个时钟周期用于从ROM中读取指令,输出的应是PC地址。后4个时钟周期用于对RAM或端口的读写,该地址由指令中给出。地址的选择输出信号由时钟信号的fetch提供。端口定义:序号接口信号名称方向(I/O)说明1 PC_addrIPC地址2 IR_addrI指令地址3 FetchI时钟信号4 addrO选择地址的输出9) 立即数扩展设计一个32位MIPS符号扩展单元SE,用于将16位

14、的数据转换为32位数据。端口说明:序号信号名方向(I/O)说明1Imm1615:0I来自指令寄存器的16位立即数2ExtopI立即数扩展信号的使能端3bus31:0I4ExtImm3231:0O符号扩展后的32位立即数3.设计过程中部分重要代码1)利用状态机实现CPU内部信号控制,主要控制信号:ALUSrcA, ALUSrcB, Load_Mem, MemtoReg,RegDst, ExtOp, MemWr, PcWrite, RegWr;状态机分为10个状态,State_IR = 4b0000,取指State_decode = 4b0001,译码State_MemCalc= 4b0010,计算寄存器地址State_MemRD = 4b0011 ,I型指令访存(lw)State_MemRDend= 4b0100 ,I型数据写入寄存器 State_MemWr = 4b0101 , I型指令访存(sw) State_R = 4b0110, R型执行 State_Rend = 4b0111,R型执行完成/ State_B = 4b1000,分支执行及计算PC地址/State_J = 4b1001; 跳转执行及计算PC地址/2)在外部设置独立小模块生成跳转和分支控制信号:Branch,Jump。

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

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