文档库 最新最全的文档下载
当前位置:文档库 › 《单周期CPU的设计与实现》

《单周期CPU的设计与实现》

《单周期CPU的设计与实现》
《单周期CPU的设计与实现》

《单周期CPU的设计与实现》

电子科技大学计算机科学与工程学院

单周期CPU的设计与实现

实验指导书

[计算机组成原理实验]

张建 20XX-12-13

计算机组成原理实验单周期CPU的设计与实验

目录

前言 ................................................ ................................................... ................................................... . (1)

实验内容 ................................................ ................................................... ...................................... 2 实验要求 ................................................ ................................................... ....................................... 2 2. 实验环境 ................................................

(3)

2. 1 硬件平台 ................................................ ................................................... ................................... 3 2.2 软件平台 ................................................ ................................................... ................................... 3 2.3 实验主要仪器设备连接框图 ................................................ ................................................... .... 4 3. 实验原理 ................................................ ................................................... (5)

3. 1 概述 ................................................ ................................................... ........................................... 5 3.2 单周期CPU的总体电路 ................................................

.......... 5 3. 3 MIPS指令格式 ................................................ ................................................... .......................... 6 3.4 数据路径设计 ................................................ ................................................... ........................... 7 3.4.1 下一条指令地址的选择 ................................................ ................................................... ...... 7 3.4. 2 ALU的输入端................................................. ................................................... ..................... 8 3.4.3寄存器堆的输入端................................................. ................................................... .............. 8 4. 基本功能部件的设计与实现 ................................................ ................................................... (10)

4.1 32位2选1选择器的设计与实

............................................. 10 4.2 32位4选1选择器的设计与实现 ................................................ ............................................. 18 4.3 5位2选1选择器的设计与实现 ................................................ .. (19)

4.4 带有异步清零的32位D触发器的设计与实现 ................................................ ...................... 19 4. 5 移位器的设计 ................................................ ................................................... ......................... 20 4.6 32位加/减法器的设计与实现................................................. ...................................................

20 5.运算器的设计与实现 ................................................ ................................................... ......... 21 6.寄存器堆的设计与实现 ................................................

制器的设计与实现 ................................................ (27)

8. CPU的封装 ................................................ ................................................... ........................................... 30 9. 测试 ................................................ ................................................... ................................................... (32)

9. 1 指令存储器及测试程序 ................................................ ................................................... .......... 32 9. 2 数据存储器及测试数据 ................................................ ................................................... .......... 33 9. 3 仿真测试 ................................................ ................................................... ................................. 33 9.4 下载到开发

板验证................................................. ................................................... ................. 35 附件: .............................................. ................................................... ................................................... (39)

BTN_Anti_Jitter模块 ................................................ ................................................... ....................... 39 Hex7seg_decode模块 ................................................ ................................................... .. (39)

计算机组成原理实验单周期CPU的设计与实验

前言

《计算机组成原理》是计算机科学专业的一门重要专业基础课。在该课程中的理论学习中系统地阐述了计算机各组成部件的工作原理、逻辑实现和设计方法及将各部件连接成整机的方法,计算机硬件与底层软件的接口,培养了学生对计算机硬件系统的分析、开发与设计的基本技能能力。

本实验开设的目的是让学生通过设计一个单周期的CPU,加深对计算机各组成部件功能的理解和掌握,更好地理解计算机的基本工作原理,培养和锻炼学生掌握计算机硬件设计的基本方法和技能。本实验是计算机硬件系列实验的重要实验,是后续计算机系统实验的基础。

本实验的先修课程:《数字逻辑》及《Verilog HDL硬件描述语言》。

对于未修先修课程的学生实验指导教师应对其进行相关知识的培训,培训建议4学时。

本实验所针对的教材:《计算机组成与设计-硬件/软件接口》第4版,David A.

Patterson、John L. Hennessy著,机械工作出版社。

计算机科学与工程学院 1

计算机组成原理实验单周期CPU的设计与实验

1. 实验内容与要求

实验内容

1. 本实例所设计CPU的指令格式的拟定;

2. 基本功能部件的设计与实现;

3. CPU各主要功能部件的设计与实现;

4. CPU的封装;

5. 仿真测试及板级测试。

实验要求

1. 设计的CPU能够执行20条整数指令,每条指令的编

码长度均为32位; 2. 指令类型应有:计算类型、访问存储器类型、条件转移类型和无条件转移类型; 3. 操作数应有:寄存器操作数、立即数;

4. 测试程应不少于10条,将设计成果仿真测试并起先板级验证。

计算机科学与工程学院 2

计算机组成原理实验单周期CPU的设计与实验

2. 实验环境

2.1硬件平台

本实验所需的硬件主要有:PC计算机和FFPEG实验开发板,具体要要求如下:

1. IBM PC及兼容计算机:内存≥1GB,硬盘空间≥30GB

2. FPGA开发套件,本实验采用的是Anvyl Spartan6/XC6SLX45

3. USB连接线

Anvyl Spartan6/XC6SLX45的主要特点:

通用输入接口

14个LED:8个红色,2组“红绿灯”模式8个滑动开关 4个按键

6个7段数码管

2组拨码开关音频接口:I2S Codec接口视频接口

HDMI输出接口

12比特VGA接口,使用无源电阻网路 USB接口

USB1:JTAG编程及UART

USB2/3:USB设备接口,可接HID设备或U盘片外存

储器

DDR2:256MB SRAM:2MB QSPI Falsh:32MB OLED:128×32蓝色显示

LCD液晶屏:480×272全彩色液晶触摸屏 Clock:100MHz单端CMOS晶振

2.2 软件平台

1. 操作系统:Windows XP、Win 7;

2. 开发平台:Xilinx ISE Design Suite 集成开发系统;

3. 编程语言:VerilogHDL硬件描述语言。

计算机科学与工程学院 3

计算机组成原理实验单周期CPU的设计与实验

图4-9模块MUX32_2_1综合结果

Step 4:仿真

在工程管理区任意位置单击鼠标右键,在弹出的菜单中

选择New Source命令,会弹出如图4-10所示的New Source Wizard对话框:Select SourceType。在图4-10选择Verilog Test Fixture,输入测试文件名:MUX32__2_1_tb,单击Next

按钮,进入下一个对话框,如图4-11所示。

图4-10创建仿真模块

图4-11创建仿真模块

在图4-11中工程中所有的模块名都会显示出来,选择要测试的模块MUX32_1,点击Next按钮,再点击Finish按钮,ISE会在源代码xx区自动生成测试模块的代码,如图4-12所示。

计算机科学与工程学院

14

计算机组成原理实验单周期CPU的设计与实验

图4-12Verilog Test Fixture– MUX32_1

在图4-12中示了刚生成的MUX32_1_tb模块,在该模块中添加如下测试代码:

// Add stimulus here

A LOC= V5;

计算机科学与工程学院

16

计算机组成原理实验单周期CPU的设计与实验

NET A LOC= U4; NET A LOC= V3; NET A LOC= P4; NET B LOC= R4; NET B LOC= P6; NET B LOC= P5; NET B LOC= P8;

#Leds

NET O LOC=W3; NET O LOC=Y4; NET O LOC=Y1; NET O LOC=Y3;

约束完成后,下一个步骤就是实现(Implementation)。所谓实现,是指将综合输出的逻辑网表翻译成所选器件的底

层模块和硬件原语,将设计映射到器件结构上,进行布局布线,达到在选定器件上实现设计的目的。

在ISE中,执行实现过程,会自动执行翻译、映射和布局布线过程:也可单独执行。在过程管理区双击Implementation Design选项,就可以自动完成实现的3个步骤,如图4-16所示。

图4-16Running Synthesis

完成Place & Route后,在图4-16中双击Generate Programming File项生成二进制比

特文件mux32_2_。

Step 5:流代码生成与下载

完成Place & Route后,在图4-16中双击Generate Programming File项生成二进制比

特文件mux32_2_。

将Anyvl开发板与计算机通过USB线连接好,开发板加电,启动Digilent Adept软件,系统开始自动连接FPGA设备,成功检测到设备后,会显示出JTAG链上所用芯片,如图4-17所示。

计算机科学与工程学院 17

计算机组成原理实验单周期CPU的设计与实验

图4-17Digilent Adept软件

在图4-17中点击Browse按钮,找到刚才生成的二进制

比特文件mux32_,然后点击Program按钮开始下载,下载成

功后会在图4-17下面的状态栏中显示Programming Successful。同学们可在开发板上拨动开关SW0S~SW7和按

钮BTN0,并观察LED0~LED3的显示,思考一下观察的结果

与设计是否一致。

4.2 32位4选1选择器的设计与实现

32位4选1选择器的逻辑框图如图4-18所示。

Sel[1:0] Function:

A[31:0] B[31:0] C[31:0] D[31:0] M U X Sel[1:0]= 00:O = A

O[31:0]

Sel[1:0]= 01:O = B Sel[1:0]= 10:O = C Sel[1:0]= 11:O = D

图4-18 32位4选1逻辑框图

32位4选1选择器的模块设计步骤可参考32位2选1

选择器的设计步骤,下面给出32位4选1选择器的模块代码。

module MUX32_4_1(

input [31:0] A, input [31:0] B, input [31:0] C, input [31:0] D, input [1:0] Sel, output[31:0] O

计算机科学与工程学院

18

计算机组成原理实验单周期CPU的设计与实验

);

assign O = (Sel == 2'b00) A : (Sel == 2'b01) B : (Sel == 2'b10) C : D; Endmodule

4.3 5位2选1选择器的设计与实现

5位2选1选择器的逻辑框图如图4-19所示。

Sel

Function:

A[4:0] B[4:0]

M U X O[4:0]

Sel = 0:O = A Sel = 1:O = B

图4-19 5位2选1逻辑框图

5位2选1选择器的模块设计步骤可参考32位2选1选

择器的设计步骤,下面给出5位2选1选择器的模块代码。

module MUX5_2_1(

input [4:0] A, input [4:0] B, input Sel, output[4:0] O );

assign O = Sel B :A; Endmodule

4.4 带有异步清零的32位D触发器的设计与实现

异步是指清零与时钟无关,只要有效就清零。其设计步

骤可参考32位2选1选择器的设计步骤,下面给出其模块

Verilog实现代码:

module dff32(

input [31:0] D, input Clock, input Reset,

output reg [31:0] Q );

always @(posedge Clock or negedge Reset) begin if(Reset == 0) Q > Sa;

else O = $signed(D) >>> Sa; end

endmodule

4.6 32位加/减法器的设计与实现

32位加/减法器的功能是完成32位的加法/减法运算。于:

ABA(B)AB1

故可以用加法器实现减法操作。下面给出其模块Verilog实现代码:

module addsub32(

input [31:0] A, input [31:0] B, input sub, output[31:0] Result );

cla32 as32(A , B^{32{sub}} , sub , Result);

endmodule

module cla32(

input [31:0] a, input [31:0] b, input c,

output[31:0] s );

assign s = a + b + c; endmodule

计算机科学与工程学院 20

计算机组成原理实验单周期CPU的设计与实验

5.运算器的设计与实现

运算器ALU是CPU组成的核心部件之一,其实现方法主要有2种:一种是以加法器为核心,通过改变进位函数实现;另一种是运算部件并行多路选择实现。本实验采用运算部件并行多路选择实现。综合表3-1的指令,ALU只需完成9种运算即可,具体完成的功能如表5-1所示。

表5-1:ALU功能真值表

ALU_Operation x000 x100 x001 x101 x010 x110 0011 0111 1111 功能描述 Add Sub And Or Xor Lui Sll Srl Sra ALU的逻辑框图如图5-1所示。在图5-1中各信号的功能:ALU_Operation[3:0]

A:操作数,32位,输入; B:操作数,32位,输入;ALU_Operation:4位操作码,输

Zero

Result[31:0]

A[31:0] 入;

Result:运算结果,32位,输出; Zero:零标志,1位;当运算结果为0时,该位为1,否则为0;

B[31:0] 图5-1 ALU电路符号

在工程管理区任意位置单击鼠标右键,在弹出的菜单中选择New Source命令,选择Verilog Module输入,并输入Verilog文件名:ALU,单击Next按钮进入端口定义对话框。其中Module Name栏输入模块名:ALU,单击Next进入下一步,点击Finish完成创建。ALU模块的Verilog程序参考代码:

module ALU(

input [31:0] A, input [31:0] B,

计算机科学与工程学院

21

计算机组成原理实验单周期CPU的设计与实验

input [3:0] ALU_Operation, output [31:0] Result, output Zero );

wire [31:0] d_and = A & B; wire [31:0] d_or = A | B; wire [31:0] d_xor = A ^ B;

wire [31:0] d_lui = {B[15:0],16'h0};

wire [31:0] d_and_or = ALU_Operation[2] d_or:d_and; wire [31:0] d_xor_lui = ALU_Operation[2] d_lui:d_xor; wire [31:0] d_as , d_sh;

addsub32 as32 (A , B , ALU_Operation[2] , d_as); Shifter shift_1 ( B , A[4:0] , ALU_Operation[2] ,

ALU_Operation[3] , d_sh);

MUX32_4_1 sel ( d_as , d_and_or , d_xor_lui , d_sh ,

ALU_Operation[1:0] , Result);

assign Zero = ~|Result; endmodule

对ALU进行仿真。在工程管理区将View设置为Simulation,在任意位置单击鼠标右键,并在弹出的菜单中

选择New Source,在类型中选择Verilog Test Fixture,

输入测试文件名:ALU_tb,单击Next按钮,这时所有工程

中的模块名都会显示出来,选择要进行测试的模块:ALU。

点击Next ,再单击Finish按钮,ISE会在源代码xx区自动

生成测试模块的代码。我们看到,ISE已经自动生成了基本

的信号并对被测模块做了实例化。

对ALU_tb模块,我们可以添加如下所示的测试激励代码。

// Add stimulus here A <= 32'h1234; B <= 32'h5678; ALU_Operation <= 4'b0000; //add

#100

A <= 32'h1234abcd;

B <= 32'hf0f0f0f0; ALU_Operation <= 4'b001; //and

#100

A <= 32'h12345678;

B <= 32'h78; ALU_Operation <=

4'b0010; //xor

#100

A <= 32'h4;

B <= 32'habcd;

ALU_Operation <= 4'b0011; //sll #100

A <= 32'h1234;

B <= 32'h5678;

22

计算机科学与工程学院

计算机组成原理实验单周期CPU的设计与实验

ALU_Operation <= 4'b0100; //sub

#100

A <= 32'h1234;

B <= 32'h0ff; ALU_Operation <= 4'b0101; //or

#100

A <= 32'h1234;

B <= 32'habcd; ALU_Operation <= 4'b0110; //lui

#100

A <= 32'h4;

B <= 32'hf2345678; ALU_Operation <= 4'b0111; //SRL

#100

ALU_Operation <= 4'b1111; //SRA

完成测试文件xx后,确认工程管理区中View选项设置为Simulation,这时在过程管理区会显示与仿真有关的进

程。右键单击其中的Simulate Behavioral Model项,选择弹出菜单中的Process Properties项,会弹出属性设置对话框,将其中Simulation Run Time设置为1000ns。

仿真参数设置完后,就可以进行仿真。首先在工程管理区选中测试模块ALU_tb,然后在过程管理区双击Simulate Behavioral Model,ISE将启动ISE Simulator,可以得到仿真结果,如图5-2所示。

图5-2 ALU仿真结果

计算机科学与工程学院 23

电子科技大学计算机科学与工程学院

单周期CPU的设计与实现

实验指导书

[计算机组成原理实验]

张建 20XX-12-13

计算机组成原理实验单周期CPU的设计与实验

目录

前言 ................................................ ................................................... ................................................... . (1)

实验内

................................................... ...................................... 2 实验要求 ................................................ ................................................... ....................................... 2 2. 实验环境 ................................................ ................................................... (3)

2. 1 硬件平台 ................................................ ................................................... ................................... 3 2.2 软件平台 ................................................ ................................................... ................................... 3 2.3 实验主要仪器设备连接框图 ................................................ ................................................... .... 4 3. 实验原理 ................................................ ...................................................

相关文档