计算机15 西安交通大学 组成原理 最终报告_第1页
计算机15 西安交通大学 组成原理 最终报告_第2页
计算机15 西安交通大学 组成原理 最终报告_第3页
计算机15 西安交通大学 组成原理 最终报告_第4页
计算机15 西安交通大学 组成原理 最终报告_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

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

文档简介

1、 计算机组织与结构专题实验报告 实验设计总体实现 学 院 电信学院 指导老师 姜新宁 专业班级 计算机15 组员姓名 高君宇 组员学号 2110505112 邮 箱 309852008 目录一、实验目的3二、实验要求3三、实验原理33.1指令集:33.2控制器的设计:43.3通用寄存器组63.4存储器63.5总体数据通路设计:6四、设计思路与源代码74.1通用寄存器组regfile94.2取指部分instru_fetch94.3指令译码部分decoder_unit104.4执行部分exe_unit114.5存储器部分memory_unit124.6程序包exp_cpu_components12

2、4.7顶层设计实体exp_cpu12五、实验步骤13六、实验现象14七、实验心得16八、程序源代码16一、实验目的 设计16位串行CPU,实现算术和逻辑运算指令、转移指令、访存指令、堆栈指令和控制指令。二、实验要求根据系统的设计方案,直接利用硬件描述语言vhdl,编程完成,并调试、实现实验要完成的工作主要包括:指令系统的设计,FPGA-CPU的整体结构设计及其细化,逻辑设计的具体实现(VHDL语言程序的编写),软件模拟,以及硬件调试。三、实验原理3.1指令集: 图1-一个指令的执行流程图指令系统在整个计算机系统结构设计中处于核心的地位。指令系统设计不仅直接关系到计算机系统硬件的设计,而且必然影

3、响后期系统软件的设计。1) 指令类型: 算数类:ADD SUB 逻辑类:AND OR 寄存器访问类:SET MOV 存储器访问类:LOAD STORE 条件转移类:BEQ 无条件转移类:JMP2) 指令格式: 字长:使用固定长度16位 操作码:为方便使用及操作,规定为4位 操作数:为使用多个操作数,每个操作数规定为1至3位3)指令系统依据MIPS指令集设计,指令字长为16位,整个指令系统包括了运算指令、转移指令和存储指令等三类。这三类指令根据IR15IR14进行分类:IR15 为0 时运算指令算术逻辑指令的IR14IR12对应运算器ALU的3位 运算操作码。;IR15为1其他指令IR15、IR

4、14为10时转移指令;IR15、IR14为11时存储指令。当IR0 = 1时,本指令中有对DR的写操作。当IR1 = 1时,本指令影响标志位Z。当IR2 = 1时,本指令影响标志位C。NOP指令实际上是一条“MOV R0,R0”指令,只是不改变目的寄存器的内容。4)由于取指阶段和存储器读写阶段都要访问存储器,速度较慢;而指令译码和运算都由CPU本身完成,设置取指阶段和存储器读写阶段各占一拍时间,指令译码和运算共占一拍时间。因此,一条指令执行需要3拍时间t1: 取指。在t2的上升沿,将从存储器取出的指令写入指令寄存器IR。t2:根据指令寄存器IR的内容进行指令译码;根据指令译码得到的控制信号进行

5、运算和其它操作。t3:存储器读、写操作;在t3的下降沿将运算结果写入目的寄存器,改变C标志和Z标志;在t3的下降沿,改变PC的值,为取下一条指令做好准备。3.2控制器的设计:1) 基本组成:指令寄存器IR指令译码器ID时序发生器组合逻辑电路2) 时序控制:因为采用了组合逻辑控制器,因此采用三级时序控制,指令周期下分机器周期、节拍电位、节拍脉冲指令译码器指令译码器是计算机控制器中最重要的部分。所谓组合逻辑控制器就是指指令译码电路是由组合逻辑实现的。组合逻辑控制器又称硬连线控制器,是早期设计计算机的一种方法。这种控制器中的控制信号直接由各种类型的逻辑门和触发器等组合产生。这样,一旦控制部件构成后,

6、除非重新设计和物理上对它重新连线,否则要想增加新的功能是不可能的。结构上的这种缺陷使得硬连线控制器的设计和调试变得非常复杂而且代价很大。所以,硬连线控制器曾一度被微程序控制器所取代。但是随着新一代机器及VLSI技术的发展,这种控制器又得到了重视,如RISC机广泛使用这种控制器。1) 组合逻辑控制器原理图2 组合逻辑控制器的结构方框图图2是组合逻辑控制器的结构方框图。逻辑网络的输入信号来源有三个:(1)指令操作码译码器的输出In;(2)来自时序发生器的节拍电位信号Tk;(3)来自执行部件的反馈信号Bj。逻辑网络的输出信号就是微操作控制信号,用来对执行部件进行控制。显然,组合逻辑控制器的基本原理,

7、可描述为:某一微操作控制信号Cm是指令操作码译码器的输出In、时序信号(节拍电位信号Tk)和状态条件信号Bj的逻辑函数。即Cmf(In,Tk,Bj)用这种方法设计控制器,需要根据每条指令的要求,让节拍电位和时序脉冲有步骤地去控制机器的各有关部分,一步一步地执行指令所规定的微操作,从而在一个指令周期内完成一条指令所规定的全部操作。一般来说,组合逻辑控制器的设计步骤如下。(1)绘制指令流程图为了确定指令执行过程所需的基本步骤,通常是以指令为纲,按指令类型分类,将每条指令归纳成若干微操作,然后根据操作的先后次序画出流程图。(2)安排指令操作时间表指令流程图的进一步具体化,把每一条指令的微操作序列分配

8、到各个机器周期的各个时序节拍信号上。要求尽量多的安排公共操作,避免出现互斥。(3)安排微命令表以指令流程图为依据,表示出在哪个机器周期的哪个节拍有哪些指令要求哪些微命令。(4)进行微操作逻辑综合根据微操作时间表,将执行某一微操作的所有条件(哪条指令、哪个机器周期、哪个节拍和脉冲等)都考虑在内,加以分类组合,列出各微操作产生的逻辑表达式,并加以简化。(5)实现电路根据上面所得逻辑表达式,用硬件电路模块来实现。3.3通用寄存器组通用寄存器组是CPU的重要组成部分。从存储器取来的数据要放在通用寄存器中;从外部设备取来的数据除DMA方式外,要放在通用寄存器中。向存储器输出的数据也是从通用寄存器中取出的

9、;向外部设备输出的数据除DMA方式外也是从通用寄存器中取出的。由于从通用寄存器组中取数据比从存储器或者外部设备取数据速度快得多,因此参加算术运算和逻辑运算的数据一般是从通用寄存器组中取出的,它向算术逻辑单元ALU提供了进行算术运算和逻辑运算所需要的2个操作数,同时又是运算结果的暂存地。通用寄存器组内寄存器的数目与CPU性能有关,CPU性能越高,通用寄存器组内的寄存器数目越多。由于算术逻辑运算需要2个操作数,因此通用寄存器组有2个读端口,负责提供进行算术逻辑单元需要的源操作数和目的操作数。通用寄存器组有1个写端口,负责将运算结果保存到指定的寄存器内。3.4存储器存储器按存取方式分,可分为随机存储

10、器和顺序存储器。如果存储器中的任何存储单元的内容都可随机存取,称为随机存储器,计算机中的主存储器都是随机存储器。如果存储器只能按某种顺序存取,则称为顺序存储器,磁带是顺序存储器,磁盘是半顺序存储器,它们的特点是存储容量大,存取速度慢,一般作为外部存储器使用。如果按存储器的读写功能分,有些存储器的内容是固定不变的,即只能读出不能写入,这种存储器称为只读存储器(ROM);既能读出又能写入的存储器,称为随机读写存储器(RAM)。实际上真正的ROM基本上不用了,用的是光可擦除可编程的ROM(EPROM)和电可擦除可编程的ROM(EEPROM)。EEPROM用的越来越多,有取代EPROM之势,比如容量很

11、大的闪存(FLASH)现在用的就很广泛,常说的U盘就是用FLASH做的。按信息的可保存性分,存储器可分为非永久性记忆存储器和永久性记忆存储器。ROM、EPROM、EEPROM都是永久记忆存储器,它们断电后存储内容可保存。RAM则是非永久性记忆存储器,断电后存储器中存储的内容丢失。3.5总体数据通路设计:基本部件组成:1) 取指: 主存:MM,内存地址寄存器MAR,MDR,PC,IR,ID,CU2) 计算:主要的部件为ALU其他还需要:MUX,LA,LB(暂存器),LB,RESULT(存放 结果),RF等图3-系统的数据通路图四、设计思路与源代码实验CPU由5部分组成:取指部分instru_fe

12、tch、指令译码部分decoder_unit、执行部分exe_unit、存储器部分memory_unit和通用寄存器组fegfile。另外,还有一个程序包exe_cpu_components,将各低层设计实体作为元件存储,供各设计实体使用。顶层设计实体exe_cpu完成5个组成部分的连接。实验CPU总体框图见图2-1。图2-1 实验CPU总体框图4.1通用寄存器组regfile通用寄存器组内包含4个16位寄存器。这是一个具有1个写入端口、2个读出端口的通用寄存器组。写入端口将指令执行后得到的目的寄存器的值在t3的下降沿写入目的寄存器。只有具有写目的寄存器功能的指令执行结束时才写目的寄存器。有些

13、指令,如JMP指令等执行结束后不改变通用寄存器组的值。通用寄存器组的2个读出端口,一个是目的寄存器读出端口,一个是源寄存器读出端口,从这2个端口读出的内容供执行部分exe_unit和存储器部分memory_unit使用。通用寄存器组内还有2个标志位:z_out和c_out,在t3的下降沿根据指令执行的结果改变或者不改变它们的值。这2个标志位的值送执行部分exe_unit使用。4.2取指部分instru_fetch取指部分完成4项工作:(1)产生时钟信号t1、t2和t3,供实验CPU各部分使用。(2)在复位信号reset为低时将PC复位为0;在一条指令执行结束后,根据指令执行的结果在t3的下降沿

14、改变PC的值。(3)将从存储器读出的指令的第一个字在t2的上升沿送指令寄存器IR。(4)计算PC+1的值pc_inc,为双字指令取第二个指令字做准备。传统上取指部分属控制器部分。4.3指令译码部分decoder_unit指令译码部分根据指令寄存器IR的值产生实验CPU所需要的各种控制信号和其他信号:信号名意义SR 源寄存器号(编址)DR目的寄存器号(编址)op_code 控制ALU进行8种运算操作的3位编码zj_instruct为1表示本条指令是条“JNZ ADR”指令cj_instruct 为1表示本条指令是条“JNC ADR”指令lj_instruct为1表示本条指令是条“JMP ADR”

15、指令DRWr为1表示在t3的下降沿将本条指令的执行结果写入目的寄存器Mem_Write为1表示本条指令有存储器写操作,存储器的地址是源寄存器的内容DW_intruct为1表示本条指令是双字指令change_z为1表示本条指令可能改变z(结果为0)标志change_c为1表示本条指令本条指令可能改变c(进位)标志sel_memdata 为1表示本条指令写入目的寄存器的值来自读存储器r_sjmp_addr计算条件转移指令转移地址所需要的16位相对地址。它是由条件转移指令中的8位相对地址经过符号扩展生成的 4.4执行部分exe_unit执行部分完成下列任务:(1)8种算术逻辑运算:加、加1、减、减1

16、、与、或、非和数据传送,并临时将运算结果存放在result中。根据运算结果产生进位标志,临时存放在c_tmp中;根据运算结果产生结果为0标志,临时存放在z_tmp中。(2)产生存储器读写所需要的存储器地址Mem_Addr。存储器地址是根据下列情况决定的:在t1节拍时选择pc,在双字指令时选择pc_inc?第3节拍?,在LDR指令时选择SR(源寄存器)内容,在STR指令时选择DR(目的寄存器)内容。(3)产生条件转移指令(JNC和JNZ)所需要的转移标志c_z_j_flag(为1表示转移)和转移地址sjmp_addr。4.5存储器部分memory_unit存储器部分主要完成对存储器的读写:(1)

17、memory_unit内部设置了一个大小为的RAM,将需要要运行的程序的机器代码在程序运行前写入RAM中。(2)存储器地址Mem_addr来自执行部分,写信号Mem_Write由指令译码部分产生。当Mem_Write为1时在t3节拍完成写操作,其余情况下均进行读操作。(3)在t1节拍中完成读指令的第1个字。 (4)对双字指令,在t3完成读指令的第2个字。(5)对JMP指令,在t3读出转移地址,放在data_read中。(6)对MVRD指令,在t3读出立即数DATA,放在data_read中。(7)对LDR指令,在t3读出存储器的值,放在data_read中。(8)对STR指令,在t3将源寄存器

18、的值写入存储器中。(9)对在t3下降沿写入目的寄存器的值进行选择。在LDR指令中,选中读出的存储器的值;在其他指令中,选中执行部分送来的运算结果result。4.6程序包exp_cpu_components程序包exp_cpu_components把实验CPU中除顶层设计实体exp_cpu以外的设计实体作为元件(component)予以说明,供实验CPU中的其它设计实体作为元件予以引用。4.7顶层设计实体exp_cpu顶层设计实体exp_cpu把5个二级设计实体regfile、instru_fetch、decoder_unit、exe_unit和memory_unit作为元件引用,每个例化一次

19、,用信号把它们连接起来,构成实验CPU。clk外部输入的时钟。reset外部输入的CPU复位信号,低电平有效。为了方便调试与测试,将信号reg_sel(选择寄存器)作为输入,reg_content(寄存器输出)、c_flag、z_flag作为输出信号进行观察,对应关系如表2所示:表2reg_sel、reg_content对应关系reg_sel(选择信号)reg_content(输出内容)000000R0000001R1000010R2000011R3000100"0000000" & t3 & "000" & t2 & &

20、quot;000" & t1111110pc111111IR其它x"0000"在一个工程(project)中,较低层的设计实体其实相当于元件,与一块印制板上的电路差不多;顶层设计实体对较低层设计实体每例化一次,相当于在印制板上上安放一个元件,而顶层设计实体中的信号相当于印制板上的连线。因此,在一个工程中,如果有一个非顶层设计实体从来没有被其他设计实体例化过,那么这个设计实体在这个工程中就是多余的,起不到任何作用。顶层设计实体中除了由较低层设计实体构成的元件外,通常还有一些由process语句、信号赋值语句等构成的其他独立电路块,通过信号把元件和独立电路块互

21、相连接,最后形成了一个完整的电路设计。(1)Mem_Addr是存储器地址总线。(2)z_tmp是运算产生的结果为0标志,z_out是本条指令执行完成后的结果为0标志。(3)c_tmp是运算产生的进位标志,c_out是本条指令执行完成后的进位标志。(4)IR是指令寄存器。(5)c_z_j_flag是条件转移指令“JNC ADR”或者“JNZ ADR”产生的条件转移标志。(6)sjmp_addr是条件转移指令“JNC ADR”或者“JNZ ADR”产生的条件转移地址。(7)result是运算器产生的运算结果。五、实验步骤1. 编写VHDL代码2. 调试程序3. 仿真六、实验现象测试程序:MVRDR

22、2,0x5555MVRDR3,0xffffADDR3,R2SUBR3,R2INCR3DECR3ORR3,R2 指令执行过程如下:1.先看一下指令执行过程中各数据寄存器的值:(1)寄存器片选2号,第一条指令执行,R2的值变成0x5555(2)寄存器片选3号,第二条指令执行R3的值变成0xffff,接着执行第三条指令,R3与R2相加放入R3中为0x5554,接着第四条指令R3-R2放入R3中,R3为0xaaaa,接着第五条指令使R3加1,第六条是R3减一,但由于间隔太短造成了冲突,第七条指令使R3变成了0xffff。2、接着看一下特殊寄存器PC和IR的值(1)我们可以关注一下程序运行过程中PC值变

23、化的情况,寄存器片选111110号(即PC),可见其是不断自增的。Pc(2)关注一下指令运行过程中IR寄存器的情况,可以看到IR中的值都是我们事先设定好的指令格式中相应的指令。IR七、实验心得这次实验的规模、难度、开放性、持续时间、学分等等,在本科这几年中都应该算是前所未有的。首先,本次实验对我们来说是比较大型的,它培养了我们的科学工作作风,教给我们科学的工作方法,帮助我们学会化繁为简,学会管理好和高效利用我们的时间。我的体会是,一定要在实验伊始制定出比较详尽的进度安排,想清楚什么时间应该做好什么工作,不能太急于求成而忽略一些潜在的问题,也不能拖拖拉拉浪费时间;而且在实验这段时间内最好集中全部

24、精力做实验,不做的时候尽量不要花太多心思在其他事情上面,保持思路和状态,对实验的进程会大有好处。另外,这次实验对磨练意志也是有相当作用的。从开始的无从下手,设计细节的繁琐乏味,到调试阶段的心急如焚,整个过程都需要实验者的耐心和信心。可以说,没有意志和周围同学的鼓励、老师的帮助指导我们是很难完成这个实验的。在设计阶段,我们查阅了很多资料,这其中既包括以前的课本,如计算机组成原理、数字电路设计、汇编语言程序设计等,还包括下个学期的课本,计算机体系结构,也包括了一些图书馆查阅的其他资料,这不仅使我们复习了以前所学的知识,同时开阔了我们的眼界,让我们对CPU的设计这一领域有了更多的了解;而逻辑设计的实

25、现,包括VHDL程序的编写,软件模拟等。专题实验结束了,但对计算机组成的学习还未结束,前路漫漫,我会继续努力。八、程序源代码针对于课本上的源代码,主要修改了Memory部分:library ieee;use ieee.std_logic_1164.all;use work.exp_cpu_components.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity memory_unit isport(reset:in std_logic;clk,t3:in std_logic;Mem_addr:in st

26、d_logic_vector(15 downto 0);Mem_Write:in std_logic;sel_memdata:in std_logic; -为1时,存储器的读出数据作为写入DR的数据SR_data: in std_logic_vector(15 downto 0); -写入存储器的数据result: in std_logic_vector(15 downto 0); -运算结果data_read: buffer std_logic_vector(15 downto 0);DR_data_out:out std_logic_vector(15 downto 0) -写入DR的数据);end memory_unit;architecture behav of memory_unit issubtype mem_word is std_logic_vector(15 downto 0);type memory is array(0 to 5) of mem_word;signal mem_initial:memory; beginR_W_Memory_proc

温馨提示

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

评论

0/150

提交评论