cpu控制器的设计_第1页
cpu控制器的设计_第2页
cpu控制器的设计_第3页
cpu控制器的设计_第4页
cpu控制器的设计_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

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

文档简介

1、计算机组成与结构课程设计报告题 目: CPU控制器设计 院 (系): 信息科学与工程 专业班级: 学生姓名: 学 号: 指导教师: 顾 兵 20 15 年 06 月 15 日至20 15 年 06 月 26 日华中科技大学武昌分校制计算机组成与结构课程设计任务书一、设计(调查报告/论文)题目CPU控制器设计二、设计(调查报告/论文)主要内容1.掌握CPU控制器的工作原理和逻辑功能。2.运用VHDL实现能支持基本指令的单时钟控制器设计与调试。3.采用QUARTUS II软件设计仿真和调试完成。三、原始资料1袁春风计算机组成与系统结构北京:清华大学出版社,2010。2唐朔飞计算机组成原理北京:高等

2、教育出版社,2008。四、要求的设计(调查/论文)成果1.课程设计报告2.设计仿真文件五、进程安排讲解课程设计的具体内容、要求、安排、考核方法、注意事项及相关知识,帮助学生明确任务。 1天查阅资料 1天整体方案设计,画出功能模块图 1天各模块的详细设计,画出相应逻辑电路图。 2天在指定环境下完成系统实现、调试 2天撰写课程设计报告 1天验收并提问答辩 1天六、 主要参考资料1顾兵,陈国平计算机组成与结构实践教程(修订版)2014.5。2楼学庆,平玲娣计算机组成课程设计杭州:淅江大学出版社2007。3王诚等计算机组成与设计(第3版)实验指导北京:清华大学出版社,2008。4David A. Pa

3、tterson John L. Hennessy计算机组成与设计(硬件/软件接口)康继昌等译北京:机械工业出版社,2012。5袁春风计算机组成与系统结构北京:清华大学出版社,2010。6Altera Corporation Quartus_II官方教程-中文版目 录目 录i1需求与总体设计11.1设计任务及功能要求11.1.1设计任务11.1.2功能要求11.2总体设计11.2.1总体设计原理11.2.2总体设计说明11.3总体框图22详细设计与实现32.1方案设计与实现32.1.1输入与输出逻辑图32.1.2指令与控制信号真值表32.1.3控制器设计思路流程图42.2指令分析及逻辑电路图42

4、.2.1 R-type型指令42.2.2 Ori指令52.2.3 lw指令62.2.4 sw指令72.2.5 branch指令72.2.6 Jump指令82.2.7逻辑电路图92.3 VHDL代码分析及实现102.3.1代码分析102.3.2代码实现113电路仿真调试143.1代码仿真143.2功能仿真及调试14总结17参考文献181需求与总体设计1.1设计任务及功能要求1.1.1设计任务通过对CPU的工作原理和逻辑功能的理解,运用VHDL硬件描述语言实现能支持基本指令的单时钟控制器设计,采用QUARTUS II软件设计仿真和调试完成。1.1.2功能要求1.运用VHDL实现能支持基本指令的单时

5、钟控制器设计与调试。 1>实现能够执行R类型、ori、addiu、lw、sw、beg以及jump指令的单时钟控制器使其能够支持基本的指令。2>实现cpu的控制。2.采用QUARTUS II软件设计仿真和调试完成。1.2总体设计1.2.1总体设计原理CPU每次从存储器读取一条指令后,PC指针指向正在取值的指令并存放到指令寄存器IR中,IR将指令送到控制器,控制器对指令进行译码,判断指令类型,从而生成相应指令对应的的数据通路控制信号,指挥整个CPU的运转。控制单元主要包含一个指令译码器,输入的是指令操作码op(R-型指令还包括功能码func),输出的是控制信号。所以,控制单元的设计过程

6、如下。1>根据每条指令的功能,分析控制信号的取值,并在表中列出。2>根据列出的指令和控制信号的关系,写出每个控制信号的逻辑表达式。1.2.2总体设计说明1)指令格式如下:MIPS指令分为三种指令:R_Type,I_Type,J_TypeR_Type 如:加法ADD 减法SUBSTRACT加法指令的汇编格式add rd, rs, rt加法指令的汇编格式sub rd, rs, rt图1.1 指令格式2)设计步骤:第一步:确定每个元件所需控制信号的取值。第二步:汇总所有指令所涉及到的控制信号,生成一张反映指令与控制信号之间关系的表。第三步:根据表得到每个控制信号的逻辑表达式,据此设计控制

7、器电路。1.3总体框图总体设计框图如图1.1:图1.2 控制器总体框图172详细设计与实现2.1方案设计与实现2.1.1输入与输出逻辑图由cpu控制器的功能原理得出输入与输出逻辑图如下:图2.1 输入与输出逻辑图2.1.2指令与控制信号真值表查阅得到指令与控制信号真值表如下:表2.1指令与控制信号真值表op000000001101001001100011101011000100000010指令类型R-typeoriaddiulwswbegjumpRegWr1111xxxALUSrc011110xRegDst1000xxxMemtoReg0001xxXMemWr0000100Branch0000

8、010Jump0000001ExtOpx0111xxALUop<0>100000XALUop<1>x1000xXALUop<2>x11001X2.1.3控制器设计思路流程图 根据各指令控制信号真值表可得主控制器设计思路流程图如图2.2所示。图2.2 设计思路流程图2.2指令分析及逻辑电路图2.2.1 R-type型指令图2.3是R-型指令的执行过程示意图,其中粗线描述了R-型指令的数据在数据通中 的执行路径:Register File(Rs,Rt)busA,busBALURegister File(Rd)。图2.3 R-型指令执行过程 控制信号的取值分析如下

9、。 Branch=Jump=0:因为是非分支指令、非无条件跳转指令。 RegDst=1:因为R-型指令的目的寄存器为Rd。 ALUSrc=0:保证选择busB作为ALU的B口操作数。 MemtoReg=0:保证选择ALU结果送到目的寄存器。 RegWr=1:保证在下个时钟到来时,在不发生溢出的情况下结果被写到目的寄存 器。 MemWr=0:保证下一个时钟到来时,不会有信息写到数据存储器。 ExtOp=x:因为ALUSrc=0,所以扩展器Extender的值不会影响执行结果,故ExtOp 取0或1都无所谓。2.2.2 Ori指令 指令完成的功能:Rrt Rrs op ZeroExtimm16 图

10、2.4 Ori的控制信号控制信号的取值分析如下。分支指令和跳转指令都为零Branch=jump=0因为是非分之指令,非跳转指令。RegDst=1:因为Ori指令的目的寄存器为Rt。ALUSrc=1:保证选择busB作为ALU的A口操作数。ALUctr=or。MemtoReg=0:保证选择ALU结果送到目的寄存器。RegWr=1:保证在下个时钟到来时,在不发生溢出的情况下结果被写到目的寄存器。MemWr=0:保证在下个时钟到来时,不会有信息写到数据存储器。ExpOp=x:因为ALUSrc=0,所以扩展器Extender的值不会影响执行结果,故ExtOP取0或1都无所谓。2.2.3 lw指令 指令

11、完成的功能:Rrt M Rrs + SignExtimm16 图2.5 lw的控制信号控制信号的取值分析如下。分支指令和跳转指令都为零 Branch=jump=0因为是非分之指令,非跳转指令。RegDst=1:因为lw指令的目的寄存器为Rt。ALUSrc=1:保证选择busA作为ALU的A口操作数。ALUctr=add。MemtoReg=1:保证选择存储器结果送到目的寄存器。RegWr=1:保证在下个时钟到来时,在不发生溢出的情况下结果被写到目的寄存器。MemWr=0:保证在下个时钟到来时,不会有信息写到数据存储器。ExpOp=1:因为要利用扩展器Extender进行扩展。2.2.4 sw指令

12、 指令完成的功能:rt, rs, imm16图2.6 sw的控制信号控制信号的取值分析如下。分支指令和跳转指令都为零 Branch=jump=0因为是非分之指令,非跳转指令。RegDst=x:因为不会写到寄存器。ALUSrc=1:保证选择busA作为ALU的A口操作数。ALUctr=add。MemtoReg=x:有没有结果送到目的寄存器无所谓。RegWr=0:不会有结果被写到目的寄存器。MemWr=1:保证在下个时钟到来时,会有信息写到数据存储器。ExpOp=1:因为要利用扩展器Extender进行扩展。2.2.5 branch指令 指令完成的功能:rs, rt, imm16图2.7 bran

13、ch的控制信号控制信号的取值分析如下。分支指令置位,跳转指令清零 Branch=1,jump=0因为是分之指令,非跳转指令。寄存器写信号 RegDst=x:因为不会写到寄存器。算术逻辑单元选择信号 ALUSrc=0:保证选择busB作为ALU的B口操作数。算术逻辑单元控制信号ALUctr=sub。存储器写寄存器信号MemtoReg=x:有没有结果送到目的寄存器无所谓。寄存器写信号 RegWr=0:不会有结果被写到目的寄存器。存储器写信号MemWr=0:保证在下个时钟到来时,不会有信息写到数据存储器。符号扩展信号 ExpOp=x:因为不需要利用扩展器Extender进行扩展。2.2.6 Jump

14、指令 指令完成的功能:jtarget图2.8 jump指令的控制信号控制信号的取值分析如下。分支指令清零,跳转指令置位 Branch=0,jump=1因为是非分之指令,跳转指令。目的寄存器 RegDst=x:因为不会写到寄存器。算术逻辑单元 ALUSrc=x:保证选择busB作为ALU的A口操作数。算术逻辑单元控制信号ALUctr=x。存储器到寄存器信号MemtoReg=x:有没有结果送到目的寄存器无所谓。寄存器写信号RegWr=0:不会有结果被写到目的寄存器,避免寄存器在指令执行过程时被写入任何结果。存储器写信号MemWr=0:保证在下个时钟到来时,不会有信息写到数据存储器。符号扩展信号Ex

15、pOp=x:因为要利用扩展器Extender进行扩展。2.2.7逻辑电路图图2.9控制器逻辑电路图2.3 VHDL代码分析及实现2.3.1代码分析1)实体一个VHDL实体指定了实体的名称,实体的端口和实体所关联的信息。所有的设计都是用一个或多个实体创建起来的。实体是设计的最基本模块。设计的最高层次是顶层设计。如果设计是分等级的,那么顶层的描述将包含较低层次的描述。这些较低层次的描述将是被包含在顶层实体描述中的较低层次的实体。关键字ENTITY表示这是一个实体语句的开始。它指定了端口数量,端口方向和端口类型。实体是描述VHDL模型的接口。entity main_controller isport

16、(op: in std_logic_vector(5 downto 0);RegWr,ALUSrc,RegDst,MemtoReg,MemWr,Branch,Jump,ExtOp,ALUOP0,ALUOP1,ALUOP2,RType: out std_logic);end main_controller;2)结构结构体描述实体的基本功能,并有对实体的行为进行建模的语句。所有的能被仿真 的实体都有一个结构体描述,这个结构体描述了实体的行为。一个单一的实体可以有多个结构体,一个结构体可能是一种行为,而令一个结构体可能是一个设计的结构描述。一个结构体总是与一个实体和描述这个实体的行为相关联。关键字A

17、RCHITECTURE表示这条语句描述了一个实体的结构体。这个结构体的名称是behav,所描述的实体称为main_controller。architecture behav of main_controller issignal iRtype, ori,addiu,lw,sw,beq,jump1: std_logic;beginprocess(op)beginend process;process(iRtype, ori,addiu,lw,sw,beq,jump1)end process;end behav;2.3.2代码实现library ieee;use ieee.std_logic_11

18、64.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity main_controller isport(op: in std_logic_vector(5 downto 0);RegWr,ALUSrc,RegDst,MemtoReg,MemWr,Branch,Jump,ExtOp,ALUOP0,ALUOP1,ALUOP2,RType: out std_logic);end main_controller;architecture behav of main_controller issignal iRt

19、ype, ori,addiu,lw,sw,beq,jump1: std_logic;beginprocess(op)begincase op is when "000000" =>iRtype <= '1'ori<='0' ; addiu <= '0' lw <= '0' sw <= '0' beq <= '0' jump1 <= '0'when "001101" =>iRtype <

20、= '0'ori<='1' ; addiu <= '0' lw <= '0' sw <= '0' beq <= '0' jump1 <= '0'when "001001" =>iRtype <= '0'ori<='0' ; addiu <= '1' lw <= '0' sw <= '0' beq <= 

21、9;0' jump1 <= '0'when "100011" =>iRtype <= '0'ori<='0' ; addiu <= '0' lw <= '1' sw <= '0' beq <= '0' jump1 <= '0'when "101011" =>iRtype <= '0'ori<='0' ; addiu &

22、lt;= '0' lw <= '0' sw <= '1' beq <= '0' jump1 <= '0'when "000100" =>iRtype <= '0'ori<='0' ; addiu <= '0' lw <= '0' sw <= '0' beq <= '1' jump1 <= '0'when "

23、;000010" =>iRtype <= '0'ori<='0' ; addiu <= '0' lw <= '0' sw <= '0' beq <= '0' jump1 <= '1'when others=>end case;end process;process(iRtype, ori,addiu,lw,sw,beq,jump1)beginif(iRtype = '1' )thenRegDst<=

24、 '1' ; ALUOP0<= '1' ; ALUOP2<= '0' RType<= '1' ;RegWr <= '1'ALUSrc <= '0'MemtoReg<= '0'MemWr<= '0'Jump<= '0'Branch<= '0'ExtOp<= '0'ALUOP1<= '0'elsif(ori='1')then A

25、LUOP1<= '1'RegWr <= '1'ALUSrc <= '1'RegDst<= '0' ; ALUOP0<= '0' ; ALUOP2<= '0' RType<= '0' ;MemtoReg<= '0'MemWr<= '0'Jump<= '0'Branch<= '0'ExtOp<= '0'elsif(addiu ='

26、1')thenRegWr <= '1'ALUSrc <= '1'ExtOp<= '1'ALUOP1<= '0'RegDst<= '0' ; ALUOP0<= '0' ; ALUOP2<= '0' RType<= '0' ;MemtoReg<= '0'MemWr<= '0'Jump<= '0'Branch<= '0'elsif(

27、 lw ='1' )thenRegWr <= '1'ALUSrc <= '1'MemtoReg<= '1'ExtOp<= '1'ALUOP1<= '0'RegDst<= '0' ; ALUOP0<= '0' ; ALUOP2<= '0' RType<= '0' ;MemWr<= '0'Jump<= '0'Branch<= '0

28、'elsif(sw ='1')thenMemWr<= '1'ALUSrc <= '1'ExtOp<= '1'ALUOP1<= '0'RegWr <= '0'RegDst<= '0' ; ALUOP0<= '0' ; ALUOP2<= '0' RType<= '0' ;MemtoReg<= '0'Jump<= '0'Branch<

29、;= '0'elsif(beq ='1')thenBranch<= '1' ALUOP2<= '1'ALUOP1<= '0'RegWr <= '0'ALUSrc <= '0'RegDst<= '0' ; ALUOP0<= '0' ; RType<= '0' ;MemtoReg<= '0'MemWr<= '0'Jump<= '0

30、9;ExtOp<= '0'elsif(jump1='1')thenJump<= '1'ALUOP1<= '0'RegWr <= '0'ALUSrc <= '0'RegDst<= '0' ; ALUOP0<= '0' ; ALUOP2<= '0' RType<= '0' ;MemtoReg<= '0'MemWr<= '0'Branch<= '0'ExtOp<= 

温馨提示

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

评论

0/150

提交评论