cpu控制器的设计
- 格式:doc
- 大小:990.11 KB
- 文档页数:24
实验四32位MIPS CPU设计实验
1设计要求
使用Logisim 软件依次完成4 个子电路的设计,如下:
1. 指令译码器
2. 时序发生器状态机(定长指令周期)
3. 时序发生器输出函数(定长指令周期)
4. 硬布线控制器
在此基础上完成对“单总线CPU(3 级时序)”的联合调试,使之可以运行
简单的冒泡排序算法MIPS 汇编程序,实现排序功能。
2方案设计
2.1 指令译码器
原理:
根据MIPS指令格式表中各个指令的op字段,和IR送来的指令op字段比较,若相同则是该指令,注意SLT 指令还需要判断funct字段为101010,用异或门判断OtherInstr
电路:
图1指令译码器
2.2 时序发生器状态机(定长指令周期)
原理:
由于是定长指令周期,所以次态只和现态有关,Si->Si+1 (0<=i<=10),S11->S0
电路:
图2状态机
2.3 时序发生器输出函数(定长指令周期)
原理:
定长指令周期分为3个机器周期(取指,计算,执行)每个机器周期分为4个节拍S0~S3取指周期,S4~S7计算周期,S8~S11执行周期
每个机器周期内节拍递增
电路:
图3输出函数
2.4 硬布线控制器
原理:
状态暂存器输出到状态机计算出次态再返回状态寄存器,同时现态送到输出函数电路:
图4硬布线控制器
3实验步骤
按照设计连接电路,在电路图中“单总线CPU(3 级时序)”子电路中进行调试,测试CPU 是否可以正确执行冒泡排序程序
4测试与分析
发现数据6,5,4,3,2,1,-1按递减排序
实验结果符合预期。
PLC的双CPU冗余控制实现PLC(可编程逻辑控制器)的双CPU冗余控制是一种高可靠性的控制系统设计,它通过备用的CPU来实现系统的冗余保护,以提高系统的可用性和可靠性。
在双CPU冗余控制系统中,主CPU和备CPU同时运行,并且通过互相监控对方的状态和运行情况,实现故障检测、切换和恢复。
双CPU冗余控制的工作原理如下:1.主CPU和备CPU同时运行并执行相同的控制任务,输出信号也同时送至执行机构进行实际的控制操作。
2.主CPU和备CPU通过心跳信号相互监控对方的状态。
心跳信号由CPU定时产生,并发送至对方。
如果其中一方长时间未收到对方的心跳信号,则判断另一方发生了故障。
3.当主CPU发生故障时,备CPU会立即接管控制任务,并输出相同的控制信号。
这个切换的过程一般需要在几个周期内完成,以保证控制的连续性和稳定性。
4.当故障修复后,主CPU会重新与备CPU进行同步,并恢复正常的工作状态。
为了实现双CPU冗余控制,需要满足一些关键技术要求:1.心跳信号:主CPU和备CPU需要通过心跳信号相互监控。
心跳信号的产生和检测一般是基于硬件电路实现的,可以使用定时器和计数器控制心跳信号的周期和频率。
2.数据同步:主CPU和备CPU需要实时同步控制数据和状态信息,以保证在切换过程中不引入错误。
这一般需要通过专门的通信模块或总线进行数据传输和同步。
3.切换策略:在主CPU发生故障时,备CPU需要能够及时接管控制任务,并保证控制的连续性。
切换策略可以采用热备份、冷备份或温备份等不同的方案,具体选择需要根据实际应用需求和性能要求进行评估。
4.故障检测和恢复:在主CPU发生故障后,需要能够及时检测故障原因,并进行相应的故障处理和恢复。
这一般需要通过专门的故障检测算法和自动化处理程序来实现。
双CPU冗余控制的优点是可以提高系统的可用性和可靠性,降低因单点故障引起的停机时间和生产损失。
但也存在一些挑战和限制,如成本较高、对系统运行时的性能要求较高等。
多合一控制器CPU模块组成及功能解析多合一控制器是一种集成了多种功能的电子控制设备。
它通过集成多个控制模块,在一个设备中提供了多种不同的功能。
本文将对多合一控制器的CPU模块的组成和功能进行解析。
一、多合一控制器CPU模块的组成多合一控制器的CPU模块是整个设备的核心部件,负责处理和控制各个功能模块之间的协调工作。
CPU模块通常由以下几个核心组成部分构成:1. 中央处理器(Central Processing Unit,CPU):CPU是多合一控制器的核心处理器,负责执行各种运算和控制指令。
它是多合一控制器的大脑,决定了整个设备的运行效率和性能。
2. 存储器(Memory):存储器是CPU模块中的重要组成部分,用于存储程序、数据和临时结果。
存储器通常包括高速缓存、内存和外部存储等。
3. 输入/输出接口(Input/Output Interface):输入/输出接口是CPU 模块与其他功能模块进行数据交换的纽带。
它负责管理和控制设备的输入和输出动作,以及进行数据的传输和转换。
4. 时钟发生器(Clock Generator):时钟发生器是CPU模块的一个重要组成部分,用于提供稳定的时钟信号。
时钟信号是整个设备的运行节奏,能够保证各个功能模块之间的同步性。
5. 总线(Bus):总线是CPU模块中的数据传输通道,用于连接各个功能模块。
总线通常包括地址总线、数据总线和控制总线,负责传输数据、地址和控制信号。
二、多合一控制器CPU模块的功能解析多合一控制器的CPU模块承担着多种重要功能,下面将对其功能进行解析:1. 运算功能:CPU模块通过内部的算术逻辑单元(Arithmetic Logic Unit,ALU)执行各种数学和逻辑运算,包括加法、减法、乘法、除法和比较等。
这些运算功能使得多合一控制器能够进行各种复杂的计算和处理任务。
2. 控制功能:CPU模块通过指令寄存器(Instruction Register)和程序计数器(Program Counter)等组成部分,解析和执行指令,控制各个功能模块的运行。
作业:10、解:对非常简单CPU增加了一条CLEAR指令后的新的状态图如下:其RTL代码如下:FETCH1:AR PCFETCH2:DR M, PC PC+1FETCH3:IR DR[7..6], AR DR[5,0]ADD1:DR MADD2:AC AC+DRAND1:DR MAND2:AC AC^DRJMP :PC DR[5..0]R5 :DR[5] 1 或DR[5] 0INC :AC AC+1CLEAR:AC 011、解:一、确定CPU的用途以下设计的CPU是要用来执行取反运算、加法运算、逻辑或运算、减法运算这四条指令的,而且该CPU能够访问64个字的存储器,每个字为8位宽。
字长:8位D[7....0]寻址范围:64Btye ,2^6=64,A[5....0]二、确定ISA1、程序员可访问的寄存器在下表中,为了完成COM , JREL , OR 和SUB1这四条指令,显然我们只需用到一个通用寄存器AC——8位累加器就可以实现。
指令操作码操作COM 00XX XXXX AC AC' (取反)JRET 01AA AAAA PC PC+00AA AAAAOR 10AA AAAA AC AC^M[00AA AAAA]SUB1 11AA AAAA AC AC—M[00AA AAAA]—12、CPU还需要一些其他的寄存器以便完成取指令(或数据)、译码和执行指令所必须的内部操作,最基本的寄存器有:AR(地址寄存器)——6位,由A[5.....0]向存贮提供地址PC (程序计数器)——6位,指出下一条指令的地址DR(数据寄存器)——8位,通过D[7....0]从存贮器接受指令和数据IR(指令寄存器)——2位,存放从存贮器中取回的指令的操作码部分。
三、为CPU设计状态图为了确定CPU的状态图,需对每条指令作如下分析:1、从存贮器取出指令(所有指令都相同)2、指令译码3、指令执行从存贮器中取出指令:1、原理:根据冯. 诺依曼型机的原理(指令在存贮器中按顺序存放.......), 在CPU能执行指令之前,它必须将这条指令从存贮中取出,CPU通过执行如下的操作序列完成这个任务的:【1】选择存贮单元由A[5... 0]确定【2】对A[5... 0]译码、延迟、并向存贮器发一个信号(如READ或R/W'=1),使存贮器将此指令输出到它的输出引脚。
单总线CPU设计(定长指令周期3级时序)1. 引言本文档将介绍一种基于单总线的CPU设计,采用定长指令周期和3级时序。
单总线CPU是一种较为简单且常见的计算机处理器设计,其内部结构相对简单,适合于一些资源受限的嵌入式系统或低功耗应用。
定长指令周期意味着每条指令的执行时间是固定的,而3级时序则指的是CPU的时序由三个阶段组成。
2. 设计概述2.1 总体结构单总线CPU设计采用冯·诺依曼结构,主要包含以下几个核心组件:•控制器(Controller):负责控制指令的执行流程和时序控制。
•运算器(ALU):负责执行算术、逻辑和位操作指令。
•寄存器组(Register File):用于暂存数据和地址等信息。
•存储器(Memory):包括指令存储器和数据存储器。
•输入/输出接口(I/O Interface):负责与外部设备进行通信。
2.2 指令格式单总线CPU设计采用定长指令格式,每条指令由固定长度的几个字段组成。
常见的指令格式包括操作码(Opcode)、目标寄存器(Destination Register)、源操作数1(Source Operand 1)和源操作数2(Source Operand 2)等。
例如,对于一条简单的加法指令,其指令格式如下:| Opcode (6 bits) | Destination Register (4 bi ts) | Source Operand 1 (4 bits) | Source Operand 2 (4 bits) |2.3 时序控制单总线CPU设计采用3级时序,将指令执行过程划分为三个阶段:取指(Fetch)、译码(Decode)和执行(Execute)。
每个阶段占据一个时钟周期,遵循时序控制的规则。
取指阶段:从指令存储器中读取指令,存放到指令寄存器中。
译码阶段:解析当前指令的操作码和操作数,并从寄存器组中读取相关数据。
执行阶段:根据操作码和操作数执行相应的操作,将结果存储到寄存器组中。
计算机组成原理CPU设计计算机组成原理是研究计算机内部结构和工作原理的一门学科。
而CPU(中央处理器)作为计算机的核心部件,负责执行计算机中所有的指令和运算操作。
CPU的设计有很多不同的方法和架构,本文将介绍一种常见的CPU设计,冯·诺依曼结构和指令周期。
冯·诺依曼结构是由冯·诺依曼在20世纪40年代提出的,并成为了现代计算机的基本结构。
它包含了五个主要的组成部分:控制器、算术逻辑单元(ALU)、寄存器、存储器和输入/输出(I/O)接口。
首先是控制器,它负责控制整个计算过程。
它将输入的指令解码并发送给相应的部件执行。
控制器通常是通过微指令来实现的,每个微指令对应着一条机器指令的执行过程。
其次是算术逻辑单元(ALU),它是负责实现加法、减法、乘法和逻辑运算等基本操作的核心部件。
它可以对数据进行运算,并将计算结果存储到寄存器中。
然后是寄存器,它是一种用于暂时存储数据的硬件设备。
计算机中有多种寄存器,如程序计数器(PC)、指令寄存器(IR)和通用寄存器等。
它们可以暂时存储计算过程中使用的数据和指令。
存储器是用来存储数据和指令的地方。
计算机中有多种存储器,如主存储器(RAM)、高速缓存(Cache)和硬盘等。
存储器按照地址访问,可以读取和写入数据。
最后是输入/输出(I/O)接口,它负责计算机与外部设备的数据交换。
输入接口接收来自外部设备的数据,输出接口将计算机处理的结果发送给外部设备。
这样计算机就可以实现与外界的通信。
指令周期是CPU执行一条机器指令的时间周期。
它通常包括取指令、译码、执行、访存和写回这五个阶段。
在取指令阶段,控制器从存储器中读取指令并保存到指令寄存器中;在译码阶段,控制器对指令进行解码,并根据指令的类型决定下一步的操作;在执行阶段,ALU根据控制器的指令进行运算操作;在访存阶段,控制器根据指令的要求将数据从存储器中读取或写入;最后在写回阶段,将计算结果写回到寄存器中或存储器中。
《计算机组成与结构》课程设计报告题目:CPU控制器设计院(系):信息科学与工程专业班级:学生姓名:学号:指导教师:顾兵20 15 年 06 月 15 日至20 15 年 06 月 26 日华中科技大学武昌分校制计算机组成与结构课程设计任务书目录目录 (i)1需求与总体设计 (1)1.1设计任务及功能要求 (1)1.1.1设计任务 (1)1.1.2功能要求 (1)1.2总体设计 (1)1.2.1总体设计原理 (1)1.2.2总体设计说明 (1)1.3总体框图 (2)2详细设计与实现 (3)2.1方案设计与实现 (3)2.1.1输入与输出逻辑图 (3)2.1.2指令与控制信号真值表 (3)2.1.3控制器设计思路流程图 (4)2.2指令分析及逻辑电路图 (4)2.2.1 R-type型指令 (4)2.2.2 Ori指令 (5)2.2.3 lw指令 (6)2.2.4 sw指令 (7)2.2.5 branch指令 (7)2.2.6 Jump指令 (8)2.2.7逻辑电路图 (9)2.3 VHDL代码分析及实现 (10)2.3.1代码分析 (10)2.3.2代码实现 (11)3电路仿真调试 (14)3.1代码仿真 (14)3.2功能仿真及调试 (14)总结 (17)参考文献 (18)1需求与总体设计1.1设计任务及功能要求1.1.1设计任务通过对CPU的工作原理和逻辑功能的理解,运用VHDL硬件描述语言实现能支持基本指令的单时钟控制器设计,采用QUARTUS II软件设计仿真和调试完成。
1.1.2功能要求1.运用VHDL实现能支持基本指令的单时钟控制器设计与调试。
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),输出的是控制信号。
所以,控制单元的设计过程如下。
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)设计步骤:第一步:确定每个元件所需控制信号的取值。
第二步:汇总所有指令所涉及到的控制信号,生成一张反映指令与控制信号之间关系的表。
第三步:根据表得到每个控制信号的逻辑表达式,据此设计控制器电路。
1.3总体框图总体设计框图如图1.1:图1.2 控制器总体框图2详细设计与实现2.1方案设计与实现2.1.1输入与输出逻辑图由cpu控制器的功能原理得出输入与输出逻辑图如下:图2.1 输入与输出逻辑图2.1.2指令与控制信号真值表查阅得到指令与控制信号真值表如下:表2.1指令与控制信号真值表2.1.3控制器设计思路流程图根据各指令控制信号真值表可得主控制器设计思路流程图如图2.2所示。
图2.2 设计思路流程图2.2指令分析及逻辑电路图2.2.1 R-type型指令图2.3是R-型指令的执行过程示意图,其中粗线描述了R-型指令的数据在数据通中的执行路径:Register File(Rs,Rt)→busA,busB→ALU→Register File(Rd)。
图2.3 R-型指令执行过程控制信号的取值分析如下。
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指令指令完成的功能:R[rt] ←R[rs] op ZeroExt[imm16]]图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指令指令完成的功能:R[rt] ←M[ R[rs] + SignExt[imm16] ]图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指令指令完成的功能: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 branch的控制信号控制信号的取值分析如下。
分支指令置位,跳转指令清零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指令指令完成的功能:j target图2.8 jump指令的控制信号控制信号的取值分析如下。
分支指令清零,跳转指令置位Branch=0,jump=1因为是非分之指令,跳转指令。
目的寄存器RegDst=x:因为不会写到寄存器。
算术逻辑单元ALUSrc=x:保证选择busB作为ALU的A口操作数。
算术逻辑单元控制信号ALUctr=x。
存储器到寄存器信号MemtoReg=x:有没有结果送到目的寄存器无所谓。
寄存器写信号RegWr=0:不会有结果被写到目的寄存器,避免寄存器在指令执行过程时被写入任何结果。
存储器写信号MemWr=0:保证在下个时钟到来时,不会有信息写到数据存储器。
符号扩展信号ExpOp=x:因为要利用扩展器Extender进行扩展。
2.2.7逻辑电路图图2.9控制器逻辑电路图2.3 VHDL代码分析及实现2.3.1代码分析1)实体一个VHDL实体指定了实体的名称,实体的端口和实体所关联的信息。
所有的设计都是用一个或多个实体创建起来的。
实体是设计的最基本模块。
设计的最高层次是顶层设计。
如果设计是分等级的,那么顶层的描述将包含较低层次的描述。
这些较低层次的描述将是被包含在顶层实体描述中的较低层次的实体。
关键字ENTITY表示这是一个实体语句的开始。
它指定了端口数量,端口方向和端口类型。
实体是描述VHDL模型的接口。
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;2)结构结构体描述实体的基本功能,并有对实体的行为进行建模的语句。
所有的能被仿真的实体都有一个结构体描述,这个结构体描述了实体的行为。
一个单一的实体可以有多个结构体,一个结构体可能是一种行为,而令一个结构体可能是一个设计的结构描述。
一个结构体总是与一个实体和描述这个实体的行为相关联。
关键字ARCHITECTURE表示这条语句描述了一个实体的结构体。
这个结构体的名称是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_1164.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 iRtype, ori,addiu,lw,sw,beq,jump1: std_logic;beginprocess(op)begincase op iswhen "000000" =>iRtype <= '1';ori<='0' ; addiu <= '0'; lw <= '0'; sw <= '0'; beq <= '0'; jump1 <= '0';when "001101" =>iRtype <= '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 <= '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 <= '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 "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<= '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')thenALUOP1<= '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 ='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( 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';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<= '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';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<= '0';end if;end process;end behav;3电路仿真调试3.1代码仿真将VHDL语言编写的代码在quartus5.0上进行仿真,如图3.1所示。