当前位置:文档之家› 计算机组成原理实验报告单周期cpu的设计与实现

计算机组成原理实验报告单周期cpu的设计与实现

1个时钟周期Clock电子科技大学计算机科学与工程学院标 准 实 验 报 告(实验)课程名称: 计算机组成原理实验 电子科技大学教务处制表电 子 科 技 大 学 实 验 报 告学生姓名: 郫县尼克杨 学 号: 2014 指导教师:陈虹实验地点: 主楼A2-411 实验时间:12周-15周一、 实验室名称:主楼A2-411二、 实验项目名称:单周期CPU 的设计与实现。

三、 实验学时:8学时四、 实验原理:(一) 概述单周期(Single Cycle )CPU 是指CPU 从取出1条指令到执行完该指令只需1个时钟周期。

一条指令的执行过程包括:取指令→分析指令→取操作数→执行指令→保存结果。

对于单周期CPU 来说,这些执行步骤均在一个时钟周期内完成。

(二) 单周期cpu 总体电路本实验所设计的单周期CPU 的总体电路结构如下。

(三) MIPS 指令格式化MIPS 指令系统结构有MIPS-32和MIPS-64两种。

本实验的MIPS 指令选用MIPS-32。

以下所说的MIPS 指令均指MIPS-32。

MIPS 的指令格式为32位。

下图给出MIPS 指令的3种格式。

本实验只选取了9条典型的MIPS 指令来描述CPU 逻辑电路的设计方法。

下图列出了本实验的所涉及到的9条MIPS 指令。

五、 实验目的1、掌握单周期CPU 的工作原理、实现方法及其组成部件的原理和设计方法,如控制器、26 31221 216 15 11 1 6 5 0 op rs rt rd sa func R 型指令26 31221 216 15 0 op rs rt immediate I 型指令26 3120 op addressJ 型指令运算器等。

?2、认识和掌握指令与CPU的关系、指令的执行过程。

?3、熟练使用硬件描述语言Verilog、EDA工具软件进行软件设计与仿真,以培养学生的分析和设计CPU的能力。

六、实验内容(一)拟定本实验的指令系统,指令应包含R型指令、I型指令和J型指令,指令数为9条。

(二)CPU各功能模块的设计与实现。

(三)对设计的各个模块的仿真测试。

(四)整个CPU的封装与测试。

七、实验器材(设备、元器件):(一)安装了Xilinx ISE Design Suite 13.4的PC机一台(二)FPGA开发板:Anvyl Spartan6/XC6SLX45(三)计算机与FPGA开发板通过JTAG(Joint Test Action Group)接口连接,其连接方式如图所示。

八、实验步骤一个CPU主要由ALU(运算器)、控制器、寄存器堆、取指部件及其它基本功能部件等构成。

?在本实验中基本功能部件主要有:32位2选1多路选择器、5位2选1多路选择器、32位寄存器堆、ALU等。

(一)新建工程(New Project)启动ISE Design Suite 13.4软件,然后选择菜单File→New Project,弹出New Project Wizard对话框,在对话框中输入工程名CPU,并指定工作路径D:\Single_Cycle_CPU。

(二)基本功能器件的设计与实现(1)多路选择器的设计与实现a.5位2选1多路选择器(MUX5_2_1)的设计与实现在ISE集成开发环境中,在工程管理区任意位置单击鼠标右键,在弹出的菜单中选择New Source命令,创建一个Verilog Module模块,名称为:MUX5_2_1,然后输入其实现代码:MODULE MUX5_2_1(INPUT [4:0]A,INPUT [4:0]B,INPUT S EL,OUTPUT [4:0]O);ASSIGN O=S EL ?B:A;ENDMODULE在ISE集成开发环境中,对模块MUX5_2_1进行综合(Synthesize),综合结果如图所示:在ISE集成开发环境中,对模块MUX5_2_1进行仿真(Simulation)。

输入如下测式代码:MODULE MUX5_2_1_T;//I NPUTSREG [4:0]A;REG [4:0]B;REG SEL;//O UTPUTSWIRE [4:0]C;//I NSTANTIATE THE U NIT U NDER T EST (UUT)MUX5_2_1 UUT (.A(A),.B(B),.SEL(SEL),.C(C));INITIAL BEGIN//I NITIALIZE I NPUTSA=0;B=0;SEL =0;//W AIT 100 NS FOR GLOBAL RESET TO FINISH #100;A=5'B10100;B=0;SEL =1;//W AIT 100 NS FOR GLOBAL RESET TO FINISH #100;A=1;B=5'B10000;SEL =0;//W AIT 100 NS FOR GLOBAL RESET TO FINISH#100;A=5'B00000;B=5'B11000;SEL =1;//A DD STIMULUS HEREENDENDMODULE然后进行仿真,仿真结果如图所示:b.32位2选1多路选择器的设计与实现在ISE集成开发环境中,在工程管理区任意位置单击鼠标右键,在弹出的菜单中选择New Source命令,创建一个Verilog Module模块,名称为:MUX32_2_1,然后输入其实现代码:MODULE MUX32_2_1(INPUT [31:0]A,INPUT [31:0]B,INPUT SEL,OUTPUT [31:0]O);ASSIGN O= SEL?B:A;ENDMODULE在ISE集成开发环境中,对模块MUX32_2_1进行综合(Synthesize),综合结果如图所示:在ISE集成开发环境中,对模块MUX32_2_1进行仿真(Simulation)。

首先输入如下测式代码:MODULE MUX32_2_1_T;//I NPUTSREG [31:0]A;REG [31:0]B;REG SEL;//O UTPUTSWIRE [31:0]O;//I NSTANTIATE THE U NIT U NDER T EST (UUT) MUX32_2_1 UUT (.A(A),.B(B),.SEL(SEL),.O(O));INITIAL BEGINA=0;B=0;SEL=0;//W AIT 100 NS FOR GLOBAL RESET TO FINISH #100;A=32'H00000001;B=32'H00000000;SEL=1;#100;A=32'H00000101;B=32'H00000010;SEL =0;//A DD STIMULUS HEREENDENDMODULE然后进行仿真,仿真结果如图所示:(2)符号扩展(Sign_Extender)的设计与实现在ISE集成开发环境中,在工程管理区任意位置单击鼠标右键,在弹出的菜单中选择New Source命令,创建一个Verilog Module模块,名称为:Sign_Extender,然后输入其实现代码:MODULE S IGN_E XTENDER(INPUT [15:0] D,OUTPUT [31:0] O);ASSIGN O =(D[15:15]==1'B0)?{16'B0, D[15:0]}:{16'B1, D[15:0]};ENDMODULE在ISE集成开发环境中,对模块Sign_Extender进行综合(Synthesize),综合结果如图所示。

在ISE集成开发环境中,对模块MUX32_2_1进行仿真(Simulation)。

首先输入如下测式代码:MODULE S IGN_E XTENDER_T;//I NPUTSREG [15:0] D;//O UTPUTSWIRE [31:0] O;//I NSTANTIATE THE U NIT U NDER T EST (UUT)S IGN_E XTENDER UUT (.D(D),.O(O));INITIAL BEGIN//I NITIALIZE I NPUTSD =0;//W AIT 100 NS FOR GLOBAL RESET TO FINISH#100;//A DD STIMULUS HERED =16'H0011;#100;D =16'H1011;ENDENDMODULE然后进行仿真,仿真结果如图所示:(3)32位寄存器堆(RegFile)的设计与实现在ISE集成开发环境中,在工程管理区任意位置单击鼠标右键,在弹出的菜单中选择New Source命令,创建一个Verilog Module模块,名称为:RegFile,然后输入其实现代码:MODULE R EG F ILE(INPUT [4:0]R N1,R N2,W N,INPUT W RITE,INPUT [31:0]W D,OUTPUT [31:0]A,B,INPUT C LOCK);REG [31:0]R EGISTER[1:31];ASSIGN A=(R N1==0)?0:R EGISTER[R N1];ASSIGN B=(R N2==0)?0:R EGISTER[R N2];ALWAYS @(POSEDGE C LOCK) BEGINIF (W RITE &&W N !=0)R EGISTER[W N]<=W D;ENDENDMODULE在ISE集成开发环境中,对模块RegFile进行综合(Synthesize),综合结果如图所示。

在ISE集成开发环境中,对模块RegFile进行仿真(Simulation)。

输入如下测式代码:MODULE R EGFILE_T;//I NPUTSREG [4:0]R N1;REG [4:0]R N2;REG [4:0]W N;REG W RITE;REG [31:0]W D;REG C LOCK;//O UTPUTSWIRE [31:0]A;WIRE [31:0]B;//I NSTANTIATE THE U NIT U NDER T EST (UUT)R EG F ILE UUT (.R N1(R N1),.R N2(R N2),.W N(W N),.W RITE(W RITE),.W D(W D),.A(A),.B(B),.C LOCK(C LOCK));INITIAL BEGIN//I NITIALIZE I NPUTSR N1=0;R N2=0;W N =0;W RITE =0;W D =0;C LOCK =0;//W AIT 100 NS FOR GLOBAL RESET TO FINISH#100;R N1=5'B00001;R N2=5'B00001;W N =5'B00001;W RITE =1;W D =0;C LOCK =0;#100;C LOCK =1;#50;W D =32'H BBBBBBBB; #50;C LOCK =0;#100;C LOCK =1;#100C LOCK =0;//A DD STIMULUS HEREENDENDMODULE然后进行仿真,仿真结果如图所示:(4)运算器(ALU)设计与实现在ISE集成开发环境中,在工程管理区任意位置单击鼠标右键,在弹出的菜单中选择New Source命令,创建一个Verilog Module模块,名称为:ALU,然后输入其实现代码:MODULE ALU(INPUT [31:0]A,B,INPUT [2:0]ALU_OPERATION,OUTPUT [31:0]R ESULT,OUTPUT Z ERO);ASSIGN R ESULT =(ALU_OPERATION ==3'B000)?A+B:(ALU_OPERATION ==3'B100)?A-B:(ALU_OPERATION ==3'B001)?A&B:(ALU_OPERATION ==3'B101)?A|B:(ALU_OPERATION ==3'B010)?A^B:(ALU_OPERATION ==3'B110)?{B[15:0],16'H0}:32'HXXXXXXXX;ASSIGN Z ERO =~|R ESULT;ENDMODULE在ISE集成开发环境中,对模块ALU进行综合(Synthesize),综合结果如图所示: 在ISE集成开发环境中,对模块ALU进行仿真(Simulation)。

相关主题