计算机组成原理实习报告姓名学号200班级信0801-2指导教师实习日期2011年4月2日石家庄铁道大学计算机组成原理实习报告第1页共14页一、实习目的1.融会贯通计算机组成原理课程和计算机系统结构课程的内容,通过知识的综合运用,加深对计算机系统各模块的工作原理及相互联系的认识,特别是对硬布线控制器的认识。2.学习运用ISP技术进行设计和调试的基本步骤和方法,熟悉集成开发软件中设计、模拟调试工具的使用,体会ISP技术相对于传统开发技术的优点。3.培养科学研究的独立工作能力,取得工程设计和组装调试的实验经验。二、实验要求1.在微程序控制器实验的基础上,设计一台微程序控制的指令级标量模型计算机。2.根据设计的图纸,在通用实验台上进行vhdl语言实现。二、实验设备及原理实验设备:TEC-4计算机组成原理实验系统一台。PC机QuartusII软件工具实验原理:1.在部件实验过程中,各部件单元的控制信号是人为模拟产生的,而本实验将能在硬布线控制下自动产生各部件单元控制信号,实现特定的功能。2.实验选择了MIPS体系结构中比较典型的指令,使用QuartusII软件工具,通过原理图以及VHDL语言设计CPU的逻辑电路来实现这些指令。另外还用MIPS汇编语言编写了用于CPU测试的简单程序,对所设计的CPU逻辑电路进行功能仿真模拟,以验证CPU逻辑电路的正确性石家庄铁道大学计算机组成原理实习报告第2页共14页图1单周期CPU逻辑电路图3.在FPGA中利用嵌入式阵列块EAB可以构成数据存储器,lpm_ram_dq的结构如图2。数据从ram_dp0的左边D[31..0]输入,从右边Q[31..0]输出,R/W——为读/写控制信号端。数据的写入:当输入数据和地址准备好以后,在inclock和outclock是地址锁存时钟,当信号上升沿到来时,地址被锁存,数据写入存储单元。数据的读出:从A[4..0]输入存储单元地址,在CLK信号上升沿到来时,该单元数据从Q[31..0]输出。R/W——读/写控制端,低电平时进行读操作,高电平时进行写操作;CLK——读/写时钟脉冲;DATA[31..0]——RAM_dq0的32位数据输入端;A[4..0]——RAM的读出和写入地址;Q[31..0]——RAM_dq0的32位数据输出端。石家庄铁道大学计算机组成原理实习报告第3页共14页data[31..0]wrenaddress[4..0]inclockoutclockq[31..0]lpm_ram_dq0inst图2lpm_ram_dq的结构三、实验步骤1.设计数据寄存器的步骤:a.按照图3所示代码用初始化存储器编辑窗口编辑lpm_ram_dq0配置文件(文件名.mif),并将文件名设为sc_datamem.mif。如图4所示图3数据寄存器的代码图4lpm_ram_dq0配置文件b.根据实验原理,得出数据寄存器的原理图,如图5示:石家庄铁道大学计算机组成原理实习报告第4页共14页图5数据寄存器原理图数据寄存器的VHDL设计语言如下:LIBRARYieee;USEieee.std_logic_1164.all;LIBRARYwork;ENTITYsc_datamemISport(WE:INSTD_LOGIC;CLK:INSTD_LOGIC;MEMCLK:INSTD_LOGIC;A:INSTD_LOGIC_VECTOR(31downto0);D1:INSTD_LOGIC_VECTOR(31downto0);DO:OUTSTD_LOGIC_VECTOR(31downto0));ENDsc_datamem;ARCHITECTUREbdf_typeOFsc_datamemIScomponentlpm_ram_dq0PORT(wren:INSTD_LOGIC;inclock:INSTD_LOGIC;outclock:INSTD_LOGIC;address:INSTD_LOGIC_VECTOR(4downto0);data:INSTD_LOGIC_VECTOR(31downto0);q:OUTSTD_LOGIC_VECTOR(31downto0));石家庄铁道大学计算机组成原理实习报告第5页共14页endcomponent;signalSYNTHESIZED_WIRE_0:STD_LOGIC;signalSYNTHESIZED_WIRE_1:STD_LOGIC;BEGINb2v_inst:lpm_ram_dq0PORTMAP(wren=SYNTHESIZED_WIRE_0,inclock=MEMCLK,outclock=MEMCLK,address=A(6downto2),data=D1,q=DO);SYNTHESIZED_WIRE_0=SYNTHESIZED_WIRE_1ANDWE;SYNTHESIZED_WIRE_1=NOT(CLK);END;c.编译原理图文件,成功后封装成元器件,如图6所示:d.编辑波形,并进行功能仿真,其仿真结果如图7所示;石家庄铁道大学计算机组成原理实习报告第6页共14页2.设计单周期CPU的步骤:a.根据原理,得到CPU的设计原理图,如图8所示:用VHDL语言设计如下:LIBRARYieee;USEieee.std_logic_1164.all;LIBRARYwork;ENTITYsc_compISport(石家庄铁道大学计算机组成原理实习报告第7页共14页CLOCK:INSTD_LOGIC;MEMCLK:INSTD_LOGIC;INSTCLOCK:INSTD_LOGIC;RESETN:INSTD_LOGIC;ALUOUT:OUTSTD_LOGIC_VECTOR(31downto0);INSTR:OUTSTD_LOGIC_VECTOR(31downto0);MEMOUT:OUTSTD_LOGIC_VECTOR(31downto0);PC:OUTSTD_LOGIC_VECTOR(31downto0));ENDsc_comp;ARCHITECTUREbdf_typeOFsc_compIScomponentsc_cpuPORT(CLOCK:INSTD_LOGIC;RESETN:INSTD_LOGIC;INSTR:INSTD_LOGIC_VECTOR(31downto0);MEM:INSTD_LOGIC_VECTOR(31downto0);WMEM:OUTSTD_LOGIC;ALU:OUTSTD_LOGIC_VECTOR(31downto0);DATA:OUTSTD_LOGIC_VECTOR(31downto0);PC:OUTSTD_LOGIC_VECTOR(31downto0));endcomponent;componentsc_instmemPORT(CLK:INSTD_LOGIC;A:INSTD_LOGIC_VECTOR(31downto0);DO:OUTSTD_LOGIC_VECTOR(31downto0));endcomponent;componentsc_datamemPORT(WE:INSTD_LOGIC;石家庄铁道大学计算机组成原理实习报告第8页共14页CLK:INSTD_LOGIC;MEMCLK:INSTD_LOGIC;A:INSTD_LOGIC_VECTOR(31downto0);D1:INSTD_LOGIC_VECTOR(31downto0);DO:OUTSTD_LOGIC_VECTOR(31downto0));endcomponent;signalALUOUT_ALTERA_SYNTHESIZED:STD_LOGIC_VECTOR(31downto0);signalSYNTHESIZED_WIRE_0:STD_LOGIC_VECTOR(31downto0);signalSYNTHESIZED_WIRE_1:STD_LOGIC_VECTOR(31downto0);signalSYNTHESIZED_WIRE_2:STD_LOGIC_VECTOR(31downto0);signalSYNTHESIZED_WIRE_3:STD_LOGIC;signalSYNTHESIZED_WIRE_4:STD_LOGIC_VECTOR(31downto0);BEGININSTR=SYNTHESIZED_WIRE_0;MEMOUT=SYNTHESIZED_WIRE_1;PC=SYNTHESIZED_WIRE_2;b2v_inst:sc_cpuPORTMAP(CLOCK=CLOCK,RESETN=RESETN,INSTR=SYNTHESIZED_WIRE_0,MEM=SYNTHESIZED_WIRE_1,WMEM=SYNTHESIZED_WIRE_3,ALU=ALUOUT_ALTERA_SYNTHESIZED,DATA=SYNTHESIZED_WIRE_4,PC=SYNTHESIZED_WIRE_2);b2v_inst1:sc_instmemPORTMAP(CLK=INSTCLOCK,A=SYNTHESIZED_WIRE_2,DO=SYNTHESIZED_WIRE_0);石家庄铁道大学计算机组成原理实习报告第9页共14页b2v_inst3:sc_datamemPORTMAP(WE=SYNTHESIZED_WIRE_3,CLK=CLOCK,MEMCLK=MEMCLK,A=ALUOUT_ALTERA_SYNTHESIZED,D1=SYNTHESIZED_WIRE_4,DO=SYNTHESIZED_WIRE_1);ALUOUT=ALUOUT_ALTERA_SYNTHESIZED;END;b.编译原理图,成功后封装成元器件,如图9所示:CLOCKRESETNMEMCLKINSTCLOCKINSTR[31..0]PC[31..0]MEMOUT[31..0]ALUOUT[31..0]sc_compinstc.进行功能仿真,仿真波形图如图10所示:石家庄铁道大学计算机组成原理实习报告第10页共14页石家庄铁道大学计算机组成原理实习报告第11页共14页运算结果如下所示:该CPU还可以运行以下乘法程序,其代码、仿真结果与及运算结果如下所示:石家庄铁道大学计算机组成原理实习报告第12页共14页根据代码得出配置文件sc_instmem_multi.mif,如下图所示:根据代码得出配置文件sc_datamem_multi.mif,如下图所示:仿真结果如下:运行结果如下:石家庄铁道大学计算机组成原理实习报告第13页共14页四、实验结论1.通过实验的综合训练,培养了我们的分析问题和解决问题的能力,使我们掌握整机概念,同时进行计算机系统部件的EDA设计,即借助于EDA工具软件QuartusII完成系统部件逻辑设计,以帮助我们系统的掌握计算机组成原理这门课程的主要内容,为以后进一步学习计算机体系结构打下一个良好的基础。通过学习,我们可以深入理解基本模型计算机的功能、组成知识,深入学习计算机各类典型指令的执行流程,学习硬布线控制器的设计过程和相关技术,掌握LPM_ROM的配置方法,在掌握部件单元电路实验的基础上,进一步将单元电路组成系统,构造一台基本模型计算机;定义20条MIPS指令集的典型指令,并编写相应的汇编程序,能在模型机上调试,掌握计算机整机概念;通过熟悉较完整的计算机的设计,全面了解并掌握硬布线控制方式计算机的设计方法,真正理解利用软件进行硬件设计的方法和技巧。2.在计算机组成原理课程设计基本运算模型机,同时引入EDA计算机辅助设计技术是一个非常有益的尝试。它使以往望而生畏的计算机组成原理课变得轻松和有吸引力,节约了资金,缩短了设计的时间周期;给我们提供了极大的创造空间,激发和培养了我们的创新思维能力;使我们设计的作品质量和难度系数都得到了提高。3.通过QuartusII软件在计算机上进行计算机系统部件设计,我们可以采石家庄铁道大学计算机组成原理实习报告第14页共14页用不同的设计方案,选用软件库中的一般器件或