5级流水无cache CPU实验计算机组成原理 课程设计报告

合集下载

课程设计报告(计算机组成原理)

课程设计报告(计算机组成原理)

课程设计(大作业)报告一、题目分析本次课程设计课题是设计基于微程序控制器的简单计算机设计与实现,宏观上利用CPU、cache、存储器以及一些外设设备来组成一台简单计算机,微观上由运算器、译码电路、和存储器指令用的控制存储器构成。

此次设计要求完成各个指令的格式以及编码的设计,实现各个机器指令的微代码。

本计算机实现的功能有:IN(输入),OUT(输出),ADD(加法),SUB(减法),STA(存数),JMP(跳转)。

设计进行开始,在了解微程序的基本格式, 及各个字段值的作用后, 按微指令格式参照指令流程图,设计出程序以及微程序,将每条微指令代码化,译成二进制代码表,并将二进制代码转换为联机操作时的十六进制格式文件。

根据机器指令系统要求,设计微程序流程图及确定微地址。

设计的加法和减法中, 被加数和被减数都由调试人员输入, 而加数和减数都从存储器中读取. 最后上机调试,各个功能运行结果正确。

二、基本理论计算机原理图(一)、ALU1、功能及组成它是数据加工处理部。

执行所有的算术运算执行所有的逻辑运算,并进行逻辑测试,通常,一个算术操作产生一个运算结果,而一个逻辑操作则产生一个判决。

2、设计图(二)、CPU1、如何执行指令(1)MOV指令a. 程序计数器PC中装入第一条指令地址101b. PC的内容被放到指令总线ABUS上,对指存进行译码,并启动读命令。

c. 从101号地址读出的MOV指令通过指令总线IBUS装入指令寄存器IR。

d. 程序计数器内容加1,变成102,为取下一条指令做好准备。

e. 指令寄存器中的操作码被译码。

f. CPU识别出是MOV指令。

至此,取值周期结束。

g. 操作控制(OC)器送出控制信号到通用寄存器,选择R1作源寄存器,选择R0作目标寄存器。

h. OC送出控制信号到ALU,制定ALU做传送操作。

i. OC送出控制信号,打开ALU输出三态门,将ALU输出送到数据总线DBUS 上。

(任何时候DBUS上只能有一个数据)j. OC送出控制信号,将DBUS上的数据打入到数据缓冲寄存器DR。

计算机组成原理课程设计报告实验报告书

计算机组成原理课程设计报告实验报告书

计算机组成原理课程设计报告班级::学号:完成时间:一、课程设计目的1.在实验机上设计实现机器指令及对应的微指令〔微程序〕并验证,从而进一步掌握微程序设计控制器的根本方法并了解指令系统与硬件构造的对应关系;2.通过控制器的微程序设计,综合理解计算机组成原理课程的核心知识并进一步建立整机系统的概念;3.培养综合实践及独立分析、解决问题的能力。

二、课程设计的任务针对COP2000实验仪,从详细了解该模型机的指令/微指令系统入手,以实现乘法和除法运算功能为应用目标,在COP2000的集成开发环境下,设计全新的指令系统并编写对应的微程序;之后编写实现乘法和除法的程序进展设计的验证。

三、课程设计使用的设备〔环境〕1.硬件● COP2000实验仪● PC机2.软件●COP2000仿真软件四、课程设计的具体容〔步骤〕1.详细了解并掌握COP 2000模型机的微程序控制器原理,通过综合实验来实现该模型机指令系统的特点:1〕指令系统特点与设计模型机的指令码为8位,根据指令类型的不同,可以有0到2个操作数。

指令码的最低两位用来选择R0-R3存放器,在微程序控制方式中,用指令码做为微地址来寻址微程序存储器,找到执行该指令的微程序。

而在组合逻辑控制方式中,按时序用指令码产生相应的控制位。

在本模型机中,一条指令最多分四个状态周期,一个状态周期为一个时钟脉冲,每个状态周期产生不同的控制逻辑,实现模型机的各种功能。

模型机有24位控制位以控制存放器的输入、输出,选择运算器的运算功能,存储器的读写。

指令系统包括以下七类:23〕指令格式该模型机微指令系统的特点〔包括其微指令格式的说明等〕:微指令格式2.计算机中实现乘法和除法的原理〔1〕无符号乘法①实例演示〔即,列4位乘法具体例子演算的算式〕:被乘数为1001〔二进制〕,即为十进制的9;乘数为0110〔二进制〕,即为十进制的6。

那么,可以通过笔算得到:1001×0110=00110110即十进制运算结果为:9×6=54无符号乘法的实例演示如图1所示:1 0 0 1 ;被乘数× 0 1 1 0 ;乘数0 0 0 0 ;初始值〔零〕+ 0 0 0 0 〔0〕;乘数最低位为0,局部积加0,被乘数左移一;位,乘数右移一位。

计算机组成原理课程实习报告 流水微程序控制器

计算机组成原理课程实习报告  流水微程序控制器

目录1.实习的目的和任务 (1)1.1目的 (1)1.2任务 (1)2.实习要求 (1)3.实习地点 (1)4.主要仪器设备 (1)5.实习内容 (1)5.1计算机整机 (1)5.2计算机外设 (2)5.3流水型微程序控制器的设计与调试 (2)5.3.1实验原理 (2)5.3.2 CPLD设计程序 (7)5.3.3实验步骤 (7)5.3.4调试 (10)5.3.5性能分析对比 (10)6.问题讨论与分析 (10)7.结束语 (11)参考文献 (11)计算机组成原理课程实习1.实习的目的和任务1.1目的进一步融会贯通教材内容,掌握计算机各功能模块的工作原理、相互联系和来龙去脉,完整地建立计算机整机概念;激发学生的学习热情和主动性,培养学生的独立工作能力,在实践活动中,将所知识综合运用,增长才干,并积累经验;培养严谨的科研作风,使学生利用先修课和计算机组成原理课程的理论知识和实验技能,在该课程所涉及的工程技术范围内,创造性地完成部件及系统的分析、设计、组装和调试,进一步加强实验技能的训练。

1.3任务(1)分析计算机整机系统;分析计算机外设与主机的关系。

(2)在基本模型机的基础上,进一步将其构成一台具有流水功能的模型机。

(3)学习掌握流水微程序控制器的设计原理。

2.实习要求(1)按照实习要求完成相应的实习任务;(2)实现实习目的;(3)完成实习报告。

3.实习地点田家炳4044.主要仪器设备(实验用的软硬件环境)(1)ZY15CompSys12BB计算机组成原理及系统结构实验箱一台(2)排线若干(3)PC机一台5.实习内容5.1计算机整机计算机系统是一个由硬件、软件组成的多层次结构,它通常由微程序级、一般机器级、操作系统级、高级语言级组成,每一级上都能进行程序设计,且得到下面各级的支持。

计算机的硬件是由有形的电子器件等构成的,它包括运算器、存储器(硬盘、U盘、移动硬盘等)、控制器、适配器、输入输出设备(键盘、鼠标器、激光印字机等)。

5级流水cpu实验

5级流水cpu实验

摘要基于现场可编程( FPGA) 技术和硬件描述语言VHDL 的设计和综合,通过自顶向下的设计方法和模块化设计思想, 在Quartus Ⅱ环境下能定制、下载验证和实现五级流水线CPU的简单功能。

通过VHDL 语言定制了取指部分(IF),译码部分(ID),执行部分(EX),前向部分(FU)访存部分(MA),回写部分(WB),冲突检测部分(HD),介绍了基于FPGA 的CPU 设计方法,并通过初始化程序进行验证,实现了基于FPGA 的CPU 功能,表明基于FPGA 技术在设计CPU 核和大规模集成电路设计方面可根据实际情况定制,具有灵活性、可靠性和可扩展性。

关键词: FPGA CPU Quartus Ⅱ流水 vhdlAbstractCPU design can be made and tested on Quartus Ⅱby means of a top - down method and modular design based on the integration of FPGA and VHDL. Introduces the design of CPU which applies module IF、ID、EX、FU、MA、WB、HD based on VHDL and the test of the design by the initialization program. The result suggests that the FPGA - based CPU design is custom- made with flexibility , reliability and easiness for extension.Key words: FPGA CPU Quartus Ⅱpipelining vhdl目录一、引言 (3)1.1实验目的 (3)1.2实验环境 (3)二、设计报告 (4)2.1五级流水CPU (4)2.1.1系统级设计 (4)2.1.1.2概念设计 (6)2.1.1.3时序设计 (6)2.1.2结构级设计 (12)2.1.2.1 总体逻辑结构计 (12)2.1.2.2 关键分模块结构设计 (14)三、测试报告 (15)3.1测试方法 (15)3.2测试程序 (15)3.3测试结果 (18)3.4性能分析 (20)四、总结 (21)4.1实验总结 (21)4.2取得的收获 (21)五、总结 (21)一、引言1.1 实验目的1.本实验以计算机硬件为主,兼顾计算机软件和计算机应用技术。

计算机组成原理课程设计的实验报告范文

计算机组成原理课程设计的实验报告范文

长治学院课程设计报告课程名称:计算机组成原理课程设计设计题目:设计一台性能简单的计算机系别:计算机系专业:计科1101班组别:第三组学生姓名: 学号:起止日期: 2013年7月4日~ 2013年7月10日****:***目录一、课程设计的目的 ----------------------------------1二、设计要求 ----------------------------------------1三、设计的方法及过程---------------------------------23.1整机设计 --------------------------------------23.1.1 根据设计要求正确设置正确设置多路开关-------23.1.2操作控制信号及其实现方式-------------------23.1.3根据接线表画出整机的线路图-----------------2 3.2.设计指令系统----------------------------------3 3.3.设计微指令及指令的微程序----------------------43.3.1设计微地址 --------------------------------4 3.3.2写出指令的执行流程-------------------------3 3.3.3编写指令的微程序---------------------------53.4.编写并执行应用程序----------------------------8四、心得体会-----------------------------------------7 一课程设计的目的通过课程设计更清楚地理解下列基本概念:(1)计算机的硬件基本组成;(2)计算机中机器指令的设计;(3)计算机中机器指令的执行过程;(4)微程序控制器的工作原理;(5)微指令的格式设计原理;二设计要求题一研制以台性能如下的实验计算机。

计算机组成原理课程设计报告

计算机组成原理课程设计报告

计算机组成原理课程设计报告一、引言计算机组成原理是计算机科学与技术专业的重要课程之一,通过学习该课程,我们可以深入了解计算机的硬件组成和工作原理。

本次课程设计旨在通过设计一个简单的计算机系统,加深对计算机组成原理的理解,并实践所学知识。

二、设计目标本次课程设计的目标是设计一个基于冯·诺依曼体系结构的简单计算机系统,包括中央处理器(CPU)、存储器、输入输出设备等。

通过该设计,我们可以掌握计算机系统的基本组成和工作原理,加深对计算机组成原理的理解。

三、设计方案1. CPU设计1.1 硬件设计CPU由控制单元和算术逻辑单元组成。

控制单元负责指令的解码和执行,算术逻辑单元负责算术和逻辑运算。

1.2 指令设计设计一套简单的指令集,包括算术运算指令、逻辑运算指令、数据传输指令等。

1.3 寄存器设计设计一组通用寄存器,用于存储数据和地址。

2. 存储器设计2.1 主存储器设计一块主存储器,用于存储指令和数据。

2.2 辅助存储器设计一个简单的辅助存储器,用于存储大容量的数据。

3. 输入输出设备设计3.1 键盘输入设备设计一个键盘输入设备,用于接收用户的输入。

3.2 显示器输出设备设计一个显示器输出设备,用于显示计算结果。

四、实施步骤1. CPU实现1.1 根据CPU的硬件设计,搭建电路原型。

1.2 编写控制单元的逻辑电路代码。

1.3 编写算术逻辑单元的逻辑电路代码。

1.4 进行仿真验证,确保电路的正确性。

2. 存储器实现2.1 设计主存储器的存储单元。

2.2 设计辅助存储器的存储单元。

2.3 编写存储器的读写操作代码。

2.4 进行存储器的功能测试,确保读写操作的正确性。

3. 输入输出设备实现3.1 设计键盘输入设备的接口电路。

3.2 设计显示器输出设备的接口电路。

3.3 编写输入输出设备的读写操作代码。

3.4 进行输入输出设备的功能测试,确保读写操作的正确性。

五、实验结果与分析通过对CPU、存储器和输入输出设备的实现,我们成功设计了一个基于冯·诺依曼体系结构的简单计算机系统。

计算机组成原理CPU设计实验报告

计算机组成原理CPU设计实验报告

计算机组成原理CPU设计实验报告课程设计题目:16位CPU设计学院: 信息学院班级:电子A班学号:1115102015姓名:方茹1目录1 实验方法 ..................................................................... . (4)2 总体说明 ..................................................................... ................................................. 5 2.1指令系统: .................................................................... .......................... 5 2.1.1指令格式分类(按指令字长和操作数不同): ...................................................... 5 2.1.2具体指令汇总表: .................................................................... .......................... 6 2.1.3相关指令流程图: .................................................................... .......................... 6 2.1.4指令数据通路的构建: .................................................................... ................... 8 2.1.5指令的分组及节拍: .................................................................... ..................... 12 2.1.6指令执行状态图:(见下页)..................................................................... ........... 13 2.1.7具体微指令: .................................................................... ............................... 13 2.2 系统整体介绍 ..................................................................... .................. 16 2.2.1系统基本模块划分 ..................................................................... ....................... 16 2.2.2总体结构图:(见下页)..................................................................... (17)3 CPU的控制逻辑与具体数据通道设计 ..................................................................... ......18 3.1取指令逻辑的设计 ..................................................................... .. (19)3.1.1指令地址的保存 ..................................................................... (19)3.1.2指令存储器 ..................................................................... .................................. 20 3.1.3下一条指令地址的计算 ..................................................................... ................ 20 3.2指令译码逻辑的设计...................................................................... ...................... 21 3.3指令执行逻辑的设计...................................................................... ...................... 22 3.4存储器访问逻辑的设计 ..................................................................... ................... 23 3.5结果写回逻辑的设计...................................................................... ...................... 24 3.6单周期CPU的总成...................................................................... (25)4各部分说明 ..................................................................... .............................................26 4.1ALU .................................................................................................................... 26 4.2数据选择器BUS_MUX ................................................................ ........................ 28 4.3器件T1 ..................................................................... .......................................... 30 4.4标志寄存器FLAG_REG ............................................................... ........................ 31 4.5T2: .................................................................... ................................................ 33 4.6程序计数器PC ..................................................................... ............................... 33 4.7地址寄存器AR和指令寄存器IR: .................................................................... .. 34 4.8寄存器、寄存器组和寄存器的选择.......................................................................36 4.9一位控制信号/WR .................................................................... ........................... 37 4.10 节拍发生器 ..................................................................... .................................. 37 4.11控制逻辑 ..................................................................... ...................................... 39 4.12T3...................................................................... ................................................ 42 4.13REG_OUT ......................................................................................................... 43 4.14存储器 ..................................................................... .......................................... 44 4.15总线选择器 ..................................................................... .. (45)24.16REG_TEST ............................................................... .. (46)5附录: .................................................................... .. (47)附录A:组员分工: .................................................................... .. (47)附录B:组员设计总结: .................................................................... . (47)31 实验方法实验要完成的工作主要包括:指令系统的设计,FPGA-CPU的整体结构设计及其细化,逻辑设计的具体实现(VHDL语言程序的编写),软件模拟,以及硬件调试。

计算机组成原理 实验报告

计算机组成原理 实验报告

计算机组成原理实验报告计算机组成原理实验报告引言:计算机组成原理是计算机科学与技术专业的重要课程,通过学习该课程,我们可以深入了解计算机的工作原理和内部结构。

本次实验旨在通过实际操作,加深对计算机组成原理的理解,并掌握一些基本的计算机硬件知识。

实验目的:1. 理解计算机的基本组成部分,包括中央处理器(CPU)、存储器、输入输出设备等;2. 掌握计算机的运行原理,了解指令的执行过程;3. 学习使用计算机组成原理实验箱,进行实际的硬件连接和操作。

实验过程:1. 实验一:组装计算机本次实验中,我们需要从零开始组装一台计算机。

首先,我们按照实验指导书的要求,选择合适的硬件组件,包括主板、CPU、内存、硬盘等。

然后,我们将这些硬件组件逐一安装到计算机箱中,并连接好电源线、数据线等。

最后,我们将显示器、键盘、鼠标等外设连接到计算机上。

2. 实验二:安装操作系统在计算机组装完成后,我们需要安装操作系统。

本次实验中,我们选择了Windows 10作为操作系统。

首先,我们将Windows 10安装盘插入计算机的光驱中,并重启计算机。

然后,按照安装向导的指引,选择安装语言、时区等相关设置。

最后,我们根据自己的需求选择安装方式,并等待操作系统安装完成。

3. 实验三:编写并执行简单的汇编程序在计算机组装和操作系统安装完成后,我们需要进行一些简单的编程实验。

本次实验中,我们选择了汇编语言作为编程工具。

首先,我们编写了一个简单的汇编程序,实现两个数相加的功能。

然后,我们使用汇编器将程序翻译成机器码,并将其加载到计算机的内存中。

最后,我们通过调试器来执行这个程序,并观察程序的执行结果。

实验结果与分析:通过本次实验,我们成功地组装了一台计算机,并安装了操作系统。

在编写并执行汇编程序的实验中,我们也成功地实现了两个数相加的功能。

通过观察程序的执行结果,我们发现计算机能够按照指令的顺序逐条执行,并得到正确的结果。

这进一步加深了我们对计算机的工作原理的理解。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

计算机组成原理课程设计报告5级流水无cache CPU实验1.1 实验内容:无cache流水CPU的分析与改造1.理解无cache流水CPU的工作原理,明确系统总体结构和数据通路图,分析解决各种相关用到的主要信号,以及详细分析各流水段的功能和实现。

2.将16位的指令系统改为8位,设计新的指令系统,并修改相应的数据通路。

3.修改规则文件(cpu.txt),并编写测试程序验证系统改造的正确性。

1.2 总体基本信息1.深刻理解无cache流水cpu的工作原理。

在详细分析了各流水段的功能实现、3种相关的产生原因和解决方法的基础上,完成了以下后续工作。

2.修改指令系统。

具体包括:a)16位指令改为8位,重新编写了指令OP码。

b)新增了MOVI指令。

由于原指令系统没有将立即数存进指定寄存器的指令,因此此处新增一条MOVI指令。

指令的汇编语句为MOVI DR, IMM其中DR为目的寄存器,IMM为立即数。

因为指令长度为8位,OP和DR共占了6位,因此IMM 的大小不大于3(即二进制“00”至“11”)。

c)修改及删除了部分指令。

此处详见5.1。

3.修改系统控制信号。

在保持原有系统逻辑功能基本不变的情况下,修改各个模块里控制信号位数以及模块接口信号位数以和新的指令系统兼容。

4.增加内存模块。

使用vhdl编写了一个ram模块,根据读写信号来选择读写功能。

reset时将事先写好的二进制形式程序写进内存。

5.扩展了常量定义文件。

在常量定义文件unitpack.vhd中,具体地:a)新增了ALU功能选择信号常量aluMOVI。

b)新增了寄存器编号常量R0、R1、R2和R3。

c)新增了ram类型。

6.使用Quartus II进行功能仿真并debug。

7.使用bdf构造顶层实体cpum。

由于新增了内存模块,而原系统是使用vhdl编写的,为了方便对接,我们使用bdf的形式将无cache流水线cpu和内存模块连接起来构造顶层实体cpum,“m”的含义是“memory”,即带内存模块的无cache流水线cpu。

8.重画数据通路图。

我们使用了Microsoft Visio软件在原有的系统总结结构图的基础上修改并新增了部分模块,详见2。

2、系统总体结构及数据通路图总体结构图:数据通路图:整个CPU由以下几个模块组成:●取指模块(IF):给出内存地址,读取指令并送入指令寄存器,为下一级准备数据。

由于PC控制模块处于取指模块中,因此控制相关的检测也置于取指模块。

●译码模块(ID):读取寄存器值和指令译码。

我们采取一次译码,逐级传递的方式,译出后几级流水所需的控制信号和数据(如立即数等),在每次时钟上升沿到来时送入下一级。

实际上,结构相关、控制相关、数据相关的检测都可归入译码部分。

考虑到“相关检测”涉及到的信号分属不同阶段以及整体结构的清晰性,我们将“相关检测”独立出来。

●执行模块(Ex):完成算术逻辑运算、计算有效地址和提供数据通道。

●访存模块(Ma):选择地址线的数据来源和数据线的流向。

访存和取指在功能上是独立的,但CPU对外只有一条地址线和数据线的事实决定了访存和取指是相互联系的。

当执行LOAD/STORE 指令时,地址线由ALU送入“访存段”的值提供;取指时,则由PC提供。

当写内存时,CPU 内部数据送数据线;当需要读内存时,CPU往数据线送高阻。

●回写模块(Wb):选择回写数据源和根据写使能信号wRegEn将数据回写到寄存器堆;●HazardDetectUnit模块:检测结构相关;●ForwardingUnit模块:检测数据相关。

●内存模块memory,根据访存地址mem_adr和读写信号wr来控制。

3 解决各种相关用到的主要信号的分析3.1控制相关控制相关是指因为程序的执行方向可能改变而引起的相关。

当执行跳转指令时,就会发生这种情况。

除JR 外,JRZ 等条件跳转需要根据当前状态位来决定是否跳转,而当前状态位是由前面最近的会影响状态位的指令(如算术指令)决定。

常规的也是比较简单的做法是在碰到JRX 之类的跳转指令时,延迟后边流水线的进入。

但我们通过分析,认为可以一点都不必延迟,通过旁路处理把控制相关转为数据相关来处理。

这样处理,不必延迟,可以提高流水线的性能。

按我们的方式解决控制相关需要做两项工作:1) 通过旁路,提供状态寄存器的值和临时状态位的值,为判断是否跳转作准备;2) 选择PC 更新的时机1.旁路处理在每条指令译码时,会产生一个信号setFlag ,它决定了在执行阶段是否根据ALU 计算结果改变状态位。

从下面的时序图中可以发现,只要我们在JRX 指令译码时提供以下3个信号就可作出是否跳表17 处理控制相关信号若e_setFlag 要写状态寄存器,则说明前一条指令会影响状态位,这时根据tFlag 决定是否跳转;若e_setFlag 要保持状态寄存器,则说明前一条指令不会影响状态位,这时根据Flag 决定是否跳转。

JR×前一条指令后一条指令涉及到控制相关的关键信号是setFlag信号,产生于译码模块,作用于执行模块,即identity.vhdhe exentity.vhd文件中。

如下图所示。

从上图可看出,凡是涉及到数值计算和关系运算的指令的低三位均为001,而不涉及的则为000。

该信号传到执行模块中用于判断是否更新状态寄存器。

3.2 数据相关数据相关是指在执行本条指令的过程中,如果用到的操作数是前面指令的执行结果,则必须等待前面的指令执行完成,并把结果写回寄存器或主存之后,本条指令才能继续执行。

此处采用设置专用数据通路来解决数据相关问题。

但旁路技术并非一劳永逸。

若前一指令为LOAD,而后一指令和它数据相关,如下图所示,当下一指令的执行阶段需要数据时,上一指令尚未给出,这种情况是无法用旁路技术来解决的。

相关的类型有三种:1.2.主要用到的关键信号是m_wRegEn和w_wRegEn,主要使用是在数据相关检测模块forwardingentity.vhd中,在identity.vhd、exentity.vhd、memaccessentity.vhd中均有使用。

具体的使用方法如下。

相关的检测都置于“执行阶段”。

信号wRegEn是寄存器写使能,SA,SB是寄存器组A,B口选择信号。

信号前缀表示信号所处的阶段。

如e_SA表示处于执行阶段的SA。

1.相邻指令数据相关的检测若m_wRegEn=’1’,则表示前一指令要回写寄存器。

此时,若e_SA或e_SB等于m_SA,则必然数据相关,这是因为我们规定,若回写寄存器,则寄存器A口选择信号所指定的即为目的寄存器。

否则无关。

2.中间隔1条指令的两指令数据相关的检测若w_wRegEn=’1’,则表示第一条指令要回写寄存器。

此时,若e_SA或e_SB等于w_SA,则必然数据相关。

否则无关。

当然,上述两种情况可能会一同出现。

这时,我们就按情况1处理。

因为情况2可以理解为接连出现情况1。

下图为各个指令在译码时产生的wRegEn信号,可以发现凡是会写进寄存器的指令,该信号值都为1。

3.3 结构相关由于在设计中不包含缓存,因此会有取指和访存的冲突,即结构相关。

如下图:执行访存取指译码取指译码关键信号是wrMem信号,表示是否读写内存。

具体出现在结构相关冲突检测与问题解决模块Hazarddetectentity.vhd中,产生于译码模块identity.vhd中。

具体使用方法如下:1)冲突检测只有执行访存指令(LOAD/STORE)时,才会出现冲突。

因此,我们在译码时产生一个标志是否访存的信号wrMem。

含义如下:wrMem 意义00 写内存(STORE)01 读内存(LOAD)1×不占用内存表16 wMEM控制信号通过检查“访存阶段”的m_wrMem就可确定是否冲突。

2)取指延后在每次取指时,若有冲突,则往IR中写入空指令(NOP),并保持PC不变,使取指延后一个节拍。

4 各流水段功能和实现的详细分析4.1取指(IF)4.1.1 实现功能列表取指模块实现的功能是:●给定内存地址,读取内存中的指令●将指令送入指令寄存器,提供给下一级的译码模块●实现控制相关冲突检测●根据读取到的指令是否为跳转指令来更新PC4.1.2输入、输出信号分析主要输入信号:Z,C 状态寄存器tempZ,tempC ALU计算出的临时状态位,用于相关冲突检测e_setFlag 状态寄存器写使能端,产生于译码时。

决定是否在执行阶段根据ALU计算出来的结果改变状态位PCStall 决定是否保持PC不变,由结构相关冲突检测模块产生IFFlush 决定是否往指令寄存器IR里写入空指令,来自结构相关检测模块OuterDB 内存读取过来的数据主要输出信号:PC_addr PC作为内存地址输出,用于下一节拍的取指d_PCInc1 PC + 1d_IR 指令寄存器输出4.1.3功能实现逻辑通过分析控制信号我们可以大概了解到取指模块的功能实现逻辑是如何的。

广义上来说,取指模块包括结构相关冲突检测模块,因为PCStall信号(用来实现IF段对PC的更新)和IFFlush信号(对IR 写入空指令)就来自结构相关冲突检测模块。

结构相关检测模块叫HazardDetectEntity,其模块图如下:m_wrMem wrMem在访存阶段的值w_rwMem wrMem在写回阶段的值d_IR 指令寄存器通过检测访存阶段的wrMem信号即可确定是否发生了结构冲突。

每次取指后,若有冲突,则往IR中写入空指令(NOP),并保持PC不变,使得取指延后一个节拍。

除此之外,setFlag信号在此处的作用是,决定用状态寄存器输出Flag还是ALU计算出的临时状态位tFlag来判断跳转。

4.2译码(ID)4.2.1 实现功能列表译码模块实现的功能是:●读取指令寄存器中的指令●对指令进行译码,发送控制信号4.2.2输入、输出信号分析主要输入信号:d_IR 从取指模块来的指令d_PCInc1 从取指模块来的pc+1w_wbData 写回数据,从写回模块里来w_destReg 要写回的目标寄存器w_wRegEn 寄存器写使能端e_RAOut 寄存器A输出值e_RBOut 寄存器B输出值e_IMM 立即数输出值e_ALUSrc ALU输入端选择信号e_ALUOpr ALU运算选择信号e_SetFlag 状态寄存器写使能信号e_wrMem 访存信号e_wRegEn 寄存器写使能信号e_destReg 目标寄存器e_MemToReg 内存写入寄存器使能信号4.2.3功能实现逻辑译码模块内部写好了根据不同的指令发送不同的控制信号的代码,采取一次译码,逐级传递的方式,译出后几级流水所需的控制信号和数据(如立即数)。

在每次时钟上升沿到来时送入下一级。

相关文档
最新文档