设计方案(微处理器)_第1页
设计方案(微处理器)_第2页
设计方案(微处理器)_第3页
设计方案(微处理器)_第4页
设计方案(微处理器)_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

10秒。二、设计实现方案1.整体设计方案1)指令及其功能表(1)R型指令:指令指令格式功能oprsrtrdshamefuncadd000000sj1Sj2jgxx100000Jg=sj1+sj2sub000000sj1Sj2jgjg100010Jg=sj1-sj2or000000Sj1Sj2jgxx000010Jg=sj1|sj2and000000Sj1xxjgxx000011Jg=sj1&sj2sll000000Sj1xxjg移位数000100Jg<sj(2)I型指令:指令指令格式功能oprsrtImmediateaddiu101011sj1Sj2ImmSj2=sj1+immandi001100sj1Sj2ImmSj2=sj1&immLw100011basertoffsetoffsetMemory[base+imm]sw001001basertoffsetMemory[base+imm]offset(3)J型指令:指令指令格式功能oprsrtoffsetBeq000100sj1Sj2offsetIfsj1=sj2thenbranchBnq000101sj1Sj2offsetIfsj1≠sj2thenbranch1010002)整体结构设计ALU_outopcode逻辑运算器数据控制器IR_addr存放器clk1clk时钟发生器Clk_out

程序计数器累加器accumPC_addr主控制器addr地址多路器储藏器注:将一个外来时钟信号clk_out生成一系列时钟信号clk1、clk送往CPU内部的其他部件。clk1信号用作状态控制器的时钟信号。clk则用于触发每一个状态的进行。3)该MIPSCPU的顶层原理图ClkBEBEDataOUTCSCSDataReadyRWRW办理器Addr储藏器AWDataDataInrst2.子模块详细设计该多周期CPU内部主要包括九个基本模块,即时钟发生器,指令存放器,累加器,算术逻辑单元,数据控制器,状态控制器,取指模块,地址多路器和立刻数扩展等模块。各模块详细功能及相关主要端口说明以下:1)时钟发生器依照功能单元所需进行的操作,将一条指令执行分解为一系列步骤,指令的每一个步骤占用一个时钟周期。因此利用时钟发生器模块将一个外来时钟信号Clk_out生成一系列不同样的时钟信号clk1、clk送往CPU内部的其他部件。利用clk的上升沿来触发CPU控制器开始执行一条指令。clk1信号用作状态控制器的时钟信号。端口定义:序号接口信号名称方向(I/O)说明1Clk_outI外面输入时钟2rstI复位信号,低有效3clk1O状态控制器的时钟信号4clkOALU的时钟信号2)指令存放器指令储藏器用于存放CPU运算的程序指令和数据等,采用单端口储藏器设计,设计最大为64个储藏单元,每个储藏单元数据宽度为32bit。指令存放器的触发时钟是clk,在clk的正沿触发下,存放器将数据总线送来的指令存放器中。但其实不是每个clk的上升沿都存放数据总线的数据,由于数据总线上有时传输指令,有时传输数据。什么时候存放,什么时候不存放由CPU状态控制器的load_ir信号控制。load_ir信号经过ena口输入到指令存放器。复位后,指令存放器被清为零。序号

接口信号名称

方向(

I/O)

说明567

clkrstExtMem_Adr[5:0]

III

储藏器工作时钟,频率为50Mhz储藏器片选信号,低有效储藏器地址线序号接口信号名称方向(I/O)说明8ExtMem_WRI储藏器读写信号,1为写反之读9ExtMem_Din[31:0]I储藏器输入数据线10ExtMem32[31:0]O储藏器输出数据线11enaI加载指令存放器3)累加器累加器用于存放当前的结果。复位后,累加器的值是零。当累加器经过ena使能端口收到来自CPU状态控制器load_acc信号时,在clk时钟正跳沿时就收到来自于数据总线的数据。序号接口信号名称方向(I/O)说明1clkI时钟信号2enaI使能信号3Data[31:0]I来自数据总线的数据4rstI复位信号,低有效5accum[31:0]O输出总线上的数据4)RISCCPU算术逻辑运算单元算术逻辑运算单元依照输入的8种不同样操作码分别实现相应的加、减、与、异或、跳转等多种基本操作运算。利用这几种基本运算可以实现很多种其他运算以及逻辑判断等操作。同时利用该算术逻辑部件的部分功能实现下载此后的流水灯简单变化功能,用以考据设计结果。(1).端口说明序号接口信号名称方向(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运算结果输出位(2).详细ALU实现以以下列图所示Cin异或门ZeroAdd_carryOverflow加减法运算器Add_OverflowAdd_SignAdd_Result异或门阵列位扩展或门阵列01ALU_DA[31:0]ALU_DB[31:0]

异或门01021O1ResultSUBctrOPctrOVctrSIGctrALU操作控制信号5)数据控制器数据控制器的作用是控制累加器数据输出,由于数据总线是各种操作时传达数据的公共通道,不同样的情况下传达不同样的内容。有时要传输指令,有时要传达RAM区或接口的数据。计算单元的数据只有在需要往RAM区或端口写时才赞同输出,否则应表现高阻态,以赞同其他部件使用数据总线。因此任何部件往总线上输出数据时,都需要一控制信号。而此控制信号的启、停,则由CPU状态控制器输出的各信号控制决定。数据控制器何时输出ALU的数据则由状态控制器输出的控制信号Data_ena决定。序号接口信号名称方向(I/O)说明1InIALU的数据输入口2Data_enaI可否输出ALU的数据的控制信号3Data[31:0]O来自数据总线的数据6)状态控制器状态控制器由两部分组成:状态机状态机控制器状态机控制器接受复位信号RST,当RST有效时经过信号ena使其为0,输入到状态机中停止状态机的工作。状态机是CPU的控制核心,用于产生一系列的控制信号,启动或停止某些部件。CPU对指令和数据的读写都是由状态机来控制的。状态机的当前状态,由变量state记录,state的值就是当前这个指令周期中已经过的时钟数。取指令01指令译码/存放器取Extop=1PCWr=IRWr=MemPCWr=IRWr=1Wr=RegWr=0Memwr=RegWr=0Aluop=00Aluop=00分支跳转完成完储藏器地址计算成执行89Extop=MemtoReg=6Aluop=01Extop=11Extop=1Aluop=01Aluop=00RegWr=1PCwrite储藏接见储藏LW访问SW57MemwriteRegDst=1MemReadRegWriteMemtoReg=0R型完成储藏读完成RegDst=0RegWriteMemtoReg=1类指令的有限状态机图一条指令的执行分为若干个周期,包括取指令周期,指令译码周期,指令执行周期,储藏器接见周期以及结果回写周期。本次实验利用有限状态机实现多周期CPU的控制。在执行指令过程中:(1).LW等指令的执行包括5个周期:a)依照程序计数器取指令,并且PC+1;指令译码,读出rs存放器的内容;计算储藏器地址;接见储藏器,读出数据;将结果写入存放器堆中的rt存放器。(2).跳转指令的执行需要3个周期:依照PC取指令;指令译码,选纲要跳转的目标地址;把跳转地址写入PC中。(3).R型指令执行需要4个周期:a)依照程序计数器取指令,并且PC+1;读出rs和rt存放器的内容;由ALU完成两个输入数据的计算;将结果写入存放器堆中。(4).转移指令执行需要3个周期:依照程序计数器取指令;读出rs和rt存放器的内容,ALU计算转移地址;c)由ALU比较两个存放器内的数据,决定可否要把转移地址写入PC中。7)取指模块由程序计数器,取出指令以及译码三个子模块组成总的取指模块。程序计数器用于供应指令地址。以便读取指令,指令按地址序次存放在储藏器中。当指令序次执行时,pc_addr每次自动加1,若是遇到要改变序次执行程序的情况,即分支或跳转指令时,需要形成新的指令地址,这时CPU状态控制器将会输出load_pc信号,经过load口进入程序计数器。程序计数器(pc_addr)将装入目标地址(ir_addr),而不是增1。若是执行复位,则复位后,指令指针为零,即每次CPU重新启动将从储藏器的零地址开始读取指令并执行。(1).端口说明:序号信号名方向(I/O)端口说明1clkI2rstI3ALU_DAI算术逻辑单元数据A4BranchI分支信号使能端5JumpI跳转信号使能端6opO指令操作码7rsO8rtO9rdO10funcOR指令的功能操作码11shamtO偏移量12imm16O立刻数13ALU_DBO算术逻辑单元数据B14Pc_outO程序计数器输出(2).电路内部基本组成以以下列图所示:clkop[5:0]rstPc_outinstructrs[4:0]Jumprt[4:0]3232rd[4:0]BranchPCFetchALU_DAdecodefunc[5:0]ALU_DBshamt[4:0]Imm16[15:0]8)地址多路器地址多路器用于选择输出的地址是PC(程序计数)地址仍是数据/端口地址。每个指令周期的前4个时钟周期用于从ROM中读取指令,输出的应是PC地址。后4个时钟周期用于对RAM或端口的读写,该地址由指令中给出。地址的选择输出信号由时钟信号的fetch供应。端口定义:序号接口信号名称方向(I/O)说明1PC_addrIPC地址2IR_addrI指令地址3FetchI时钟信号4addrO选择地址的输出9)立刻数扩展设计一个32位

MIPS符号扩展单元

SE,用于将

16位的数据变换为

32位数据。端口说明:序号12

信号名Imm16[15:0]Extop

方向(I/O)II

说明来自指令存放器的16位立刻数立刻数扩展信号的使能端3

bus[31:0]

I4

ExtImm32[31:0]

O

符号扩展后的

32位立刻数3.设计过程中部分重要代码1)利用状态机实现CPU内部信号控制,主要控制信号:ALUSrcA,ALUSrcB,Load_Mem,MemtoReg,RegDst,ExtOp,MemWr,PcWrite,RegWr;状态机分为10个状态,State_IR=4'b0000,取指State_decode=4'b0001,译码State_M

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论