1 / 19
文档名称:

西安交通大学计算机组成原理实验报告.pdf

格式:pdf   大小:1,739KB   页数:19页
下载后只包含 1 个 PDF 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

西安交通大学计算机组成原理实验报告.pdf

上传人:1781111**** 2024/5/11 文件大小:1.70 MB

下载得到文件列表

西安交通大学计算机组成原理实验报告.pdf

相关文档

文档介绍

文档介绍:该【西安交通大学计算机组成原理实验报告 】是由【1781111****】上传分享,文档一共【19】页,该文档可以免费在线阅读,需要了解更多关于【西安交通大学计算机组成原理实验报告 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。:..计算机组成原理实验报告姓名:***班级:物联网**学号::..一、实验目的、理解计算机主存储器的分类及作用;、掌握ROM、RAM的读写方法。二、实验原理存储器按存取方式分,可分为随机存储器和顺序存储器。如果存储器中的任何存储单元的内容都可随机存取,称为随机存储器,计算机中的主存储器都是随机存储器。如果存储器只能按某种顺序存取,则称为顺序存储器,磁带是顺序存储器,磁盘是半顺序存储器,它们的特点是存储容量大,存取速度慢,一般作为外部存储器使用。如果按存储器的读写功能分,有些存储器的内容是固定不变的,即只能读出不能写入,这种存储器称为只读存储器(ROM);既能读出又能写入的存储器,称为随机读写存储器(RAM)。实际上真正的ROM基本上不用了,用的是光可擦除可编程的ROM(EPROM)和电可擦除可编程的ROM(EEPROM)。EEPROM用的越来越多,有取代EPROM之势,比如容量很大的闪存(FLASH)现在用的就很广泛,常说的U盘就是用FLASH做的。按信息的可保存性分,存储器可分为非永久性记忆存储器和永久性记忆存储器。ROM、EPROM、EEPROM都是永久记忆存储器,它们断电后存储内容可保存。RAM则是非永久性记忆存储器,断电后存储器中存储的内容丢失。随机读写存储器类型随机存储器按其元件的类型来分,有双极存储器和MOS存储器两类。在存取速度和价格两方面,双极存储器比MOS存储器高,故双极存储器主要用于高速的小容量存储体系。在MOS存储器中,根据存储信息机构的原理不同,又分为静态随机存储器(SRAM)和动态随机存储器(DRAM)。静态随机存储器采用双稳态触发器来保存信息,只要不断电,信息就不会丢失;动态随机存储器利用记忆电容来保存信息,使用时只有不断地给电容充电才能使信息保持。静态随机存储器的集成度较低,功耗也较大;动态随机存储器的集成度较高,功耗低。现在计算机中,内存容量较大,常由动态随机存储器构成。静态随机存储器静态存储器由存储体、地址译码电路、读写电路和控制电路组成。一个×位的SRAM的结构框图如图-所示。图中,A~A为地址线,用来寻址存储器中的某一个单元。DIN、DOUT为数据线,实现数据的输入、输出。W//R为读写控制信号线,用来实现读写操作控制。/CS为片选信号。:..-SRAM结构框图动态随机存储器动态随机存储器(DRAM)和SRAM一样,也是由许多基本存储电路按照行和列来组成的。DRAM是以MOS管栅极和衬底间电容上的电荷来存储信息的。由于MOS管栅极上的电荷会因漏电而泄放,故存储单元中的信息只能保持若干秒,为此DRAM必须附加刷新逻辑电路。另外,DRAM将地址分为行地址和列地址,并分时复用以减少引脚数目。常见的芯片即是DRAM。三、实验要求、实验设计目标设计一个能够对实验台上的存储器读写的部件,满足以下目标:()、一个位的存储器地址寄存器(MAR)。该寄存器在reset为低电平时清零,在时钟clk的上升沿加,地址寄存器在超过oxf后下一个时钟上升沿回到。一个标志寄存器(flag),在reset为低电平时复位为,当存储器地址寄存器等于xf后,下一个时钟clk的上升沿标志寄存器翻转。()、在标志寄存器为时执行存储器存数功能,从存储器的单元开始存个位数。按动一次单脉冲按钮,存一次数,存的数由内部产生,不由实验台开关输入。()、当标志寄存器为时,执行从存储器的单元开始的读数功能。按动一次单脉冲按钮,读一次数,一直读个数。读出的数据送入一个位信号R[..]暂存。提示:当需要从存储器读取数据时,首先将赋值给数据总线,然后才能读取存储器中的数据。、顶层设计实体的引脚要求引脚要求对应关系如下:()clk对应实验台上的时钟(单脉冲)。()reset对应实验台上的CPU复位信号CPU_RST。:..)存储器地址总线对应实验台上的指示灯A—A。()存储器数据总线D[..]对应实验台上的数据指示灯D—D。()位信号R[..]对应实验台上的指示灯R—R。()存储器读写信号FWR对应实验台上的FWR。()四、实验步骤实验台设置成FPGA-CPU附加外部RAM运行模式“”。该调试模式要能够实现模拟FPGA-CPU对实验台存储器的存数、取数功能。即REGSEL=、CLKSEL=、FDSEL=。使用实验台上的单脉冲,即STEP_CLK短路子短接,短路子RUN_CLK断开。由于当FDSEL=时,指示灯D—D显示的是开关SD—SD的值,因此开关FDSEL必须为。这种方式除了FPGA-CPU的时钟是单脉冲外,其余都与单片机控制FPGA-CPU调试模式完全一样。将设计在QuartusⅡ下输入,编译后下载到TEC-CA上的FPGA中。首先按实验台上的CPU复位按钮,使存储器地址寄存器复位为,然后不断观察实验台上的指示灯,察看结果与预想的是否一致。、实验思路:、源代码libraryIEEE;;;;:..entitymemoryisport(reset,clk:instd_logic;--FWR:outstd_logic;--RAM的读写D:inoutstd_logic_vector(downto);--数据A:outstd_logic_vector(downto);--地址R:outstd_logic_vector(downto)--寄存器);endmemory;architecturebehavofmemoryissignalcounter:std_logic_vector(downto);signalwdata:std_logic_vector(downto);signalstart,flag:std_logic;--开始计数(读写)、结束(状态)beginA<=counter;数据bit的形成process(reset,clk)beginifreset=''thenelsifclk'eventandclk=''then--计数counter<=counter+'';endif;endif;endprocess;process(reset,clk)beginifreset=''thenstart<='';elsifclk'eventandclk=''thenstart<='';endif;endprocess;process(reset,counter,clk)beginifreset=''thenflag<='';:..elsifclk'eventandclk=''thenflag<=notflag;endif;endif;endprocess;process(reset,counter,clk,start,flag,wdata,D)beginifreset=''thenFWR<='';elsifstart=''thenifflag=''thenD<=wdata;FWR<=clk;elseFWR<='';R<=D;endif;endif;endprocess;--flag引出信号,观察他的变化。endbehav;五、实验结果及分析仿真结果如下图所示,分为两个阶段,第一个阶段是写入数据阶段,经过个时钟脉冲后,进入第二个阶段;第二个阶段是读出数据阶段,同样经历个时钟脉冲,读出的数据首先暂存在一个寄存器中,然后再送入数据总线。:..如果从存储器中读出数据时不首先向数据总线送出,那么会发生什么问题?答:如果在从存储器中读出数据时不首先向数据总线送出高阻状态,那么读状态和写状态就可能会混淆重叠,从而造成错误。七、实验心得通过本次实验,我更好地理解了计算机主存储器的分类及作用,同时也更好地了解和掌握了ROM、RAM的读写方法。通过实验,我可以将书本上的理论知识与实际的实验内容及结果结合起来,这让我更好地掌握课堂上学****的知识。不过在实验中也遇到了不少问题,幸运的是,在老师的指导与帮助下,我最终完成了实验,希望以后会有更多的实验机会。:..——加法器的设计一、实验目的、掌握基本的算术运算和逻辑运算的运算规则和实现方法;、掌握基本运算器的信息传送通路;、掌握运算器的工作原理,设计并实现具有定点、浮点运算功能的模块。二、实验原理运算器是既能实现算术运算又能完成逻辑运算的部件。算术运算主要包括加减乘除运算,逻辑运算主要包括与、或、非、异或和移位运算。运算器(ALU)通常有两个数据输入端(opr和opr),一个数据输出端(result),运算模式控制信号(code)和标志位(cin,flag)等。下图为运算器的逻辑框图:图-运算器运算器包含加法器、减法器、乘法器、与门、或门、非门、异或门和移位器。各组成部件的原理如下所述。(本实验中设计的运算器操作数为位字长)。加法器从进位传递时间和门电路的扇入、扇出来考虑,将位数据分为两组,采取组内并行、组间串行的设计方案。该加法器的设计框图如下所示:图-位的加法器其中,Gi=opr(i)andopr(i)(i=,?,),Gi为第i位的本地进位,Pi=opr(i)xoropr(i)(i=,?,),P(i)为传递条件。位先行加法器的逻辑图如下所示::..-位先行加法器逻辑图于是根据逻辑图可以得出位先行加法器的逻辑表达式如下:G=opr(i-)opr(i-)iP=opr(i-)opr(i-)iS=P?CC=G+PCS=P?CC=G+PC=G+PG+PPCS=P?CC=G+PC=G+PG+PPG+PPPCS=P?CC=G+PC=G+PG+PPG+PPPG+PPPPC四、实验内容由于时间关系,第二次实验老师要求我们只需要做加法器,所以实验内容主要是设计一个基本的加法器。顶层设计实体的引脚对应关系:()运算控制信号set对应实验台上开关SA;()低位向高位的进位或者借位信号cin对应实验台上开关SA;()操作码code[..]对应实验台上开关SA~SA;()第一操作数opr[..]对应于实验台上开关SD~SD;()第二操作数opr[..]对应实验台上开关SD~SD;()运算结果result[..]对应实验台上指示灯A~A;()运算结果标志位flag对应实验台上指示灯A。注:运算器模块框图:运算器(ALU)通常有两个数据输入端(opr和opr),一个数据输出端(result),运算模式控制信号(code)和标志位(cin,flag)等。下图为运算器的逻辑框图::..-运算器运算器包含加法器(含用先行进位的构成的加法器)、减法器、乘法器、与门、或门、非门、异或门和移位器等及浮点运算模块;运算器模块中也可以加入寄存器组(Registerfile)?本实验中设计的运算器操作数可以分别为//位字长((位字长运算可以只进行仿真分析)五、实验源代码位加法器LIBRARYieee;;ENTITYadderISPORT(a:INstd_logic_vector(DOWNTO);b:INstd_logic_vector(DOWNTO);cin:INstd_logic;cout:OUTstd_logic;sum:OUTstd_logic_vector(DOWNTO));ENDadder;ARCHITECTURErippleOFadderISCOMPONENTfulladderPORT(a,b,CarryIn:INSTD_LOGIC;Sum,CarryOut:OUTSTD_LOGIC);PONENT;SIGNALcarry:std_logic_vector(DOWNTO);BEGINf:fulladderPORTMAP(a=>a(),b=>b(),CarryIn=>cin,:..Sum=>sum(),CarryOut=>carry());f:fulladderPORTMAP(a=>a(),b=>b(),CarryIn=>carry(),Sum=>sum(),CarryOut=>carry());f:fulladderPORTMAP(a=>a(),b=>b(),CarryIn=>carry(),Sum=>sum(),CarryOut=>carry());f:fulladderPORTMAP(a=>a(),b=>b(),CarryIn=>carry(),Sum=>sum(),CarryOut=>carry());f:fulladderPORTMAP(a=>a(),b=>b(),CarryIn=>carry(),Sum=>sum(),CarryOut=>carry());f:fulladderPORTMAP(a=>a(),b=>b(),CarryIn=>carry(),Sum=>sum(),CarryOut=>carry());f:fulladderPORTMAP(a=>a(),b=>b(),:..CarryIn=>carry(),Sum=>sum(),CarryOut=>carry());f:fulladderPORTMAP(a=>a(),b=>b(),CarryIn=>carry(),Sum=>sum(),CarryOut=>cout);ENDripple;加法器设计:第一操作数opr[..]对应于实验台上开关SD~SD;第二操作数opr[..]对应实验台上开关SD~SD;运算结果result[..]对应实验台上指示灯A~A。通过开关SD~SD表示第一操作数,开关SD~SD表示第二操作数,相加在指示灯A~A上即可得到结果。七、实验心得通过这次实验,我对基本的算术运算和逻辑运算的运算规则和实现方法的掌握加深了。除此之外,通过实验,我基本掌握运算器的工作原理,我还学****了如何用运算器实现信息传送通路。这次实验我们主要学****了加法器的设计与实现。起初大家都还不熟悉,所以从一位加法器开始做起,慢慢地熟悉起来之后,可以做到八位了。在此,我很感谢姜老师在实验过程中对我的帮助,因为有老师的帮助我才可以在规定时间里完成实验,并收获了不少知识!:..指令译码器硬连线控制器)的设计与实现一、实验目的、理解指令译码器的作用和重要性;、理解控制器中指令与微操作的关系;、学****设计指令译码器。二、实验原理指令译码器是计算机控制器中最重要的部分。所谓组合逻辑控制器就是指指令译码电路是由组合逻辑实现的。组合逻辑控制器又称硬连线控制器,是早期设计计算机的一种方法。这种控制器中的控制信号直接由各种类型的逻辑门和触发器等组合产生。这样,一旦控制部件构成后,除非重新设计和物理上对它重新连线,否则要想增加新的功能是不可能的。结构上的这种缺陷使得硬连线控制器的设计和调试变得非常复杂而且代价很大。所以,硬连线控制器曾一度被微程序控制器所取代。但是随着新一代机器及VLSI技术的发展,这种控制器又得到了重视,如RISC机广泛使用这种控制器。图组合逻辑控制器的结构方框图图是组合逻辑控制器的结构方框图。逻辑网络的输入信号来源有三个:()指令操作码译码器的输出In;()来自时序发生器的节拍电位信号Tk;()来自执行部件的反馈信号Bj。逻辑网络的输出信号就是微操作控制信号,用来对执行部件进行控制。组合逻辑控制器的基本原理,可描述为:某一微操作控制信号Cm是指令操作码译码器的输出In、时序信号(节拍电位信号Tk)和状态条件信号Bj的逻辑函数。即Cm=f(In,Tk,Bj)用这种方法设计控制器,需要根据每条指令的要求,让节拍电位和时序脉冲有步骤地去:..一步一步地执行指令所规定的微操作,从而在一个指令周期内完成一条指令所规定的全部操作。一般来说,组合逻辑控制器的设计步骤如下。()绘制指令流程图为了确定指令执行过程所需的基本步骤,通常是以指令为线索,按指令类型分类,将每条指令归纳成若干微操作,然后根据操作的先后次序画出流程图。()安排指令操作时间表指令流程图的进一步具体化,把每一条指令的微操作序列分配到各个机器周期的各个时序节拍信号上。要求尽量多的安排公共操作,避免出现互斥。()安排微命令表以指令流程图为依据,表示出在哪个机器周期的哪个节拍有哪些指令要求哪些微命令。()进行微操作逻辑综合根据微操作时间表,将执行某一微操作的所有条件(哪条指令、哪个机器周期、哪个节拍和脉冲等)都考虑在内,加以分类组合,列出各微操作产生的逻辑表达式,并加以简化。()实现电路根据上面所得逻辑表达式,用逻辑门电路的组合或大规模集成电路来实现。三、实验内容、设计目标根据提供的指令集(附件),设计CPU的指令译码器,本实验指令译码器的设计相对简单,因为节拍(t、t和t)信号只在存储器读写时需要对存储器地址分时使用时需要考虑,所以这里暂不考虑节拍脉冲t,也就是说微操作控制信号只是指令操作码In和Bj的函数:Cm=f(In,Bj)式中的In主要代表指令操作码IR[..],还有辅助操作码(如算术逻辑指令时的IR[..],我们这里要求只考虑指令操作码IR[..]。Bj代表进位标志C和结果为标志Z。要求产生的微操作控制信号如下:op_code控制ALU进行种运算操作的位编码。c_z_j_flag为表示需要条件转移。lj_instruct为表示本条指令是条“JMPADR”指令。DRWr为表示在t的下降沿将本条指令的执行结果写入目的寄存器。Mem_Write为表示本条指令有存储器写操作,存储器的地址是目的寄存器的内容。DW_intruct为表示本条指令是双字指令。change_z为表示本条指令可能改变z(结果为)标志。change_c为表示本条指令可能改变c(进位)标志。sel_memdata为表示本条指令写入目的寄存器的值来自读存储器。、顶层设计实体的引脚要求引脚要求的对应关系如下:()指令IR[..]对应实验台开关SD—SD进位C对应实验台开关SD结果为标志Z对应实验台开关SD:..)控制信号对应如下:op_code[..]指示灯R、R、Rc_z_j_flag指示灯Rlj_instruct指示灯RDRWr指示灯RMem_Write指示灯RDW_intruct指示灯Rchange_z指示灯Rchange_c指示灯Rsel_memdata指示灯R四、实验源程序及注释指令译码器:libraryieee;;;;--实体的定义部分entityinstruction_decoderisport(IRH:instd_logic_vector(downto);//指令操作码IR[..]c,z:instd_logic;//c表示进位标志,z表示结果为标志op_code:outstd_logic_vector(downto);//控制ALU进行种运算操作的位编码c_z_j_flag:outstd_logic;//为表示需要操作转移lj_instruct:outstd_logic;//为表示本条指令是“JMPADR”指令DRWr:bufferstd_logic;//为时写DR寄存器Mem_Write:outstd_logic;//为表示本指令有存储器写操作,存储器的地址是目的寄存器中的内容DW_intruct:bufferstd_logic;//为表示指令是双字指令change_z:outstd_logic;//为表示本条指令可能改变Z标志change_c:outstd_logic;//为表示本条指令可能改变C标志sel_memdata:outstd_logic//为时存储器的读出数据作为写入DR的数据);endinstruction_decoder;architecturebehavofinstruction_decoderissignalzj_instruct,cj_instruct:std_logic;beginsel_memdata<=IRH()andIRH()and(notIRH());--..开头操作码的指令change_z<=((notIRH())and(notIRH()))or((notIRH())andIRH()and(notIRH()))or((notIRH())andIRH()andIRH()and(notIRH()));//....开头操作码的指令改变z标志change_c<=(notIRH())and(notIRH());//..开头操作码的指令:..标志c_z_j_flag<=(zj_instructand(notz))or(cj_instructand(notc));//条件转移DRWr_proc:process(IRH)beginifIRH()=''then//算术逻辑指令,,,,,DRWr为,将结果存入目的寄存器DRWr<='';elsifIRH()=''andIRH()=''then//MVRDDR,DATA;LDRDR,SRDRWr<='';//,,DRWr为,将结果存入目的寄存器elseDRWr<='';endif;endprocess;M_instruct:process(IRH)begincaseIRH(downto)isdr,dataMem_Write<='';DW_intruct<='';--strsr,drMem_Write<='';DW_intruct<='';whenothers=>Mem_Write<='';DW_intruct<='';endcase;endprocess;ALUOP_CODE_PROC:PROCESS(IRH)//算术逻辑单元beginifIRH()=''then--,,,op_code<=IRH(downto);elseendif;endprocess;Jinstruct_PROC:process(IRH)begincaseIRH(downto)is//功能:PC<-ADR无条件转移zj_instruct<='';cj_instruct<='';lj_instruct<='';//条件转移:..zj_instruct<='';cj_instruct<='';lj_instruct<='';zj_instruct<='';cj_instruct<='';lj_instruct<='';whenothers=>zj_instruct<='';cj_instruct<='';lj_instruct<='';endcase;endprocess;endbehav;、使用TEC-CA-I实验箱的操作:()实验台设置成FPGA-CPU独立调试模式REGSEL=、CLKSEL=、FDSEL=。使用实验台上的单脉冲,即STEP_CLK短路子短接,短路子RUN_CLK断开。()将设计在QuartusⅡ下输入,编译后下载到TEC-CA上的FPGA中。()拨动实验台上的开关SDSD,改变IR[..]、进位标志C和结果为标志Z,观察指示灯R-R显示的控制信号,并填写下表、使用XJECA实验板的操作:()输入信号(指令操作码):IR[..]、OP[..]()输出信号:指示灯显示微操作信号(下表的后项)填写下表。表一指令译码器实验(C=且Z=)IR[..OP[..c_z_j_flDRMem_WDW_intrchangechangesel_memd指令lj_instruct]]agWrriteuct_z_cataADDDR,SRINCDRSUBDR,SRDECDRANDDR,SRORDR,SRNOTDRMOVDR,SRJMPADRJNCADRJNZADRMVRDDR,DATA:..STRSR,DR指令译码器实验(C=且Z=或者C=且Z=或者C=且Z=)IR[..OP[..c_z_j_fllj_instructDRMem_WDW_intrchangechangesel_memd指令]]agWrriteuct_z_cataADDDR,SRINCDRSUBDR,SRDECDRANDDR,SRORDR,SRNOTDRMOVDR,SRJMPADRJNCADRJNZADRMVRDDR,DATALDRDR,SRSTRSR,DR由上表可知,C和Z只影响与标志位有关的指令的结果。其中指令JNCADR和JNZADR有条件转移,所以当C和Z的取值变化时,会影响实验结果。对于其他指令,C和Z的取值发生变化时结果不变。对于JNCADR指令,其功能是:如果C=,则PC←ADR;如果C=,则PC←PC+。当C=时,c_z_j_flag=,表示需要条件转移;当C=时,转向下一条指令,c_z_j_flag=。对于指令JNZADR,其功能是:如果Z=,则PC←ADR;如果Z=,则PC←PC+。当Z=时,c_z_j_flag=,表示需要条件转移;当Z=时,转向下一条指令,c_z_j_flag=。对于其他指令,不论C和Z取何值,实验结果不变。指令“ADDDR,SR”“INCDR”“SUBDE,SR”“DECDR”结果一致,因为它们都是算术运算,都可能影响进位标志C和结果为标志Z,只是它们的控制运算的编码OP[..]不同。指令“ADDDR,SR”“ORDR,SR”“ORDR”除表示运算编码不同外,其他结果相同,因为它们都是逻辑运算,不影响进位标志C,只影响结果为标志Z。指令“MOVDR,SR”,