计算机组成原理---实验报告

单周期CPU设计实验

一、设计目标

1、融合贯通本课程各章节的内容,综合运用所学,以CPU为核心,理解CPU的各个功能模块的工作原理。

2、学习和掌握硬件设计和调试基本方法,掌握FPGA开发的一般流程和工具,培养硬件系统观和系统设计能力。

二、设计目的

参考MIPS指令系统,设计一台能实现20条MIPS指令的简易计算机,包括运算器,存储器,数据通路,控制器,以及显示模块。

三、设计方法

1.ALU

alu算术逻辑单元要实现ADD(加)、SUB(减)、AND(寄存器与)、OR(寄存器或)、X0R(异或)、SLL(左移)、SRL(逻辑右移)、SRA(算术右移)、LUI(立即数左移)等计算功能,具体执行什么运算由4位aluc决定。

函数原型:module alu (a,b,aluc,r,z);

a: 源操作数1 32位

b: 源操作数2 32位

aluc: 操作控制码 4位

r: 目的操作数 32位

z: 零标志位 1位

ALU使用到的模块:

1) addsub32模块:32位加减运算模块利用并行进位加法器(cla32模块)

2) shift模块:实现移位

3) mux4x32:32位四选一选择器

2.寄存器堆设计

功能描述:

1、给alu提供运算需要的数据。

2、将alu运算产生的数据保存在寄存器中。

原理设计:

用5位地址编码32个寄存器的地址。每个寄存器都是32位,每个寄存器都有写使能端信号。

函数原型:

module regfile (rna,rnb,d,wn,we,clk,clrn,qa,qb);

​ rna: 读寄存器地址1 5位

​ rnb: 读寄存器地址2 5位

​ d: 写数据 32位

​ wn: 写地址 5位

​ qa: 读出操作数1 32位

​ qb: 读出操作数2 32位

​ we: 使能端 1位

​ ckl: 时钟 1位

​ clrn:复位 1位

3.控制器设计

控制器作用:

通过读取指令的op和func来确定指令执行的操作类型,转换成各种指令信号。来控制各个部件运作。

控制器指令译码对应表:

在这里插入图片描述

控制器输出控制信号对照表:

在这里插入图片描述

下图为控制信号组合对应指令的真值表:

在这里插入图片描述

函数实现:module sccu_dataflow

(op,func,z,wmem,wreg,regrt,m2reg,aluc,shift,aluimm,pcsource,ja1,sext);

​ op: 指令高6位

​ func: 指令低6位

​ z: 零标志位

4.存储器设计

存储器分为两部分:

1.用来存储指令的储存器

scinstmem (a,inst);

(1)作用:把要执行的指令放在一个具体的文件中,可以保证指令自动寻址可 以找到。

(2)设计原理:在文件中设计n个寄存器,每个寄存器里面存放一条指令。系统在执行的时候会按照既定的寻址方式,寻找对应的寄存器,然后将其值取出作为指令运行;

2.用来储存数据的存储器

scdatamem (clk,dataout,datain,addr,we,inclk,outclk);

作用:储存放在储存器上的数据,通过地址可以找到对应的数据,也可以通过地址和数据的方式来把一个数据保存在储存器上。

四、 设计结果

1.打开工程文件

2.调试使用signaltap,工程中的stp1.stp也是可以直接使用的。双击打开stp1.stp,完全编译

3.编译完成后下载sof文件到开发板。之后按开始调试按钮;然后KEY[0]键即可抓取信号。

Scinstmem.v文件中的指令执行后采集到的信号如下图:

在这里插入图片描述

五、分析讨论

这次实验让我加深了对单周期CPU的理解,之前由于疫情的原因我们只能在网上进行理论知识的授课,从而到学校了才能补实验课,时间过长对于上学期所学知识有点遗忘了,借助这几天的实验再次重拾有关CPU设计的知识,包括ALU、数据通路、寄存器、存储器等等,也让我们回顾了之前数字逻辑课程上所学的关于门电路以及Verilog语言的知识,是一次很好的综合性实验和锻炼。

当然,在这之间我们也遇到了很多问题,比如由于命名错误或者步骤错误导致最后编译运行的时候出错,同样也告诉我们,在上实验课之前,应事先做好预习,明白这节课的实验任务,以及要用到上课老师所讲到的哪些理论知识,这样就能更加熟悉并快速地掌握每次实验。

当然,在这之间我们也遇到了很多问题,比如由于命名错误或者步骤错误导致最后编译运行的时候出错,同样也告诉我们,在上实验课之前,应事先做好预习,明白这节课的实验任务,以及要用到上课老师所讲到的哪些理论知识,这样就能更加熟悉并快速地掌握每次实验。

最后,感谢高老师对我们一学期的指导与付出,没有高老师的指导我们也不能这么顺利地完成本次实验,同时我们也会谨记高老师的教诲,把计算机组成原理的知识运用到我们之后的专业课之中,做到整个计算机知识体系的融会贯通。

猜你喜欢

转载自blog.csdn.net/qq_44528283/article/details/112557385