最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

MIPSCPU实验报告

来源:动视网 责编:小OO 时间:2025-10-01 20:59:28
文档

MIPSCPU实验报告

五段流水线MIPSCPU设计实验报告何丹2010211066朱玮楠2010211100特点:采用mips指令集分段的ALU控制编码方式五级流水电路的时钟频率可以达到100M。一.电路设计思路:1.指令的编码本实验共实现了21条指令,虽然可以采用直接编码,然后放入ALU进行解码。但考虑到实际指令条数有上百条,所以本文的编码也采用了分级编码的方式,以减小ALU的延时。首先,对指令进行分类,R型,I型,J型。不同指令类型产生不同的ALUop。如果指令是R型,则根据functfield对指令进行解码。
推荐度:
导读五段流水线MIPSCPU设计实验报告何丹2010211066朱玮楠2010211100特点:采用mips指令集分段的ALU控制编码方式五级流水电路的时钟频率可以达到100M。一.电路设计思路:1.指令的编码本实验共实现了21条指令,虽然可以采用直接编码,然后放入ALU进行解码。但考虑到实际指令条数有上百条,所以本文的编码也采用了分级编码的方式,以减小ALU的延时。首先,对指令进行分类,R型,I型,J型。不同指令类型产生不同的ALUop。如果指令是R型,则根据functfield对指令进行解码。
五段流水线MIPSCPU设计实验报告

何丹2010211066

朱玮楠2010211100

特点:

采用mips指令集

分段的ALU控制编码方式

五级流水

电路的时钟频率可以达到100M。

一.电路设计思路:

1.指令的编码

本实验共实现了21条指令,虽然可以采用直接编码,然后放入ALU进行解码。但考虑到实际指令条数有上百条,所以本文的编码也采用了分级编码的方式,以减小ALU的延时。

首先,对指令进行分类,R型,I型,J型。不同指令类型产生不同的ALUop。如果指令是R型,则根据functfield对指令进行解码。如果是I型,则根据I型指令产生的ALUop对指令进行加法或者减法操作。对于J型,可以随意设置操作。

此外编码时要考虑编码的可解析性,例如应该让最终得到的ALU操作码的某些为具有特定含义。能够代表加法,或者减法,或者是符号位。

文章最终以4-bit编码实现了对ALU的控制,编码详细内容见excel文件。

2.电路结构设计

本文考虑到流水线结构和单周期或者多周期结构差异较大,所以直接采用流水线结构。先写了各个小的模块,然后组合成最终电路。电路图见下

电路数据通路和控制通路电路图:

二.实验测试以及结果:

测试1.

测试目的:

测试SLL,LW,ADD,BEQ,ADDI指令,并且考验了Forwarding unit的工作。

@00000000

00000000 00000000 00000000 00000000 //SLL S0,S0,0

8C010000 8C020001 8C030002 8C040001 //LW S1, 0(S0)

8C020001 24020010 AFC20010 27C20018 //LW S2, 1(S0)

8C030002 246309A0 00402021 00602821 //LW S3, 2(S0)

00222020 24060010 8FC20010 00000000 //ADD S4, S1,S2

10820004 AFC30060 8FC20060 00000000 //BEQ S4,S2,4

00000000 00000000 08008076 00000000

00000000 00000000 AFC2005C 8FC2005C

00000000 00000000 0043102A 14400003

00000000 08008071 00000000 8FC2005C

20650008 00401821 00031080 27C30010 //ADDI S5,S3,8

测试2.

测试目的:

测试LW,ADD指令,考查Forwarding unit 和Hazard Detection unit的协同工作。

@00000000

8C010001 8C020001 8C030002 8C040001 //LW S1, 1(S0)

8C020002 24020010 AFC20010 27C20018 //LW S2, 2(S0)

8C030003 246309A0 00402021 00602821 //LW S3, 3(S0)

8C040004 246309A0 00402021 00602821 //LW S4, 4(S0)

00240820 24060010 8FC20010 00000000 //ADD S1, S1,S4

00230820 AFC30060 8FC20060 00000000 //ADD S1, S1,S3

00220820 00000000 08008076 00000000 //ADD S1, S1,S2

00000000 00000000 AFC2005C 8FC2005C

00000000 00000000 0043102A 14400003

测试3.

测试目的:

测试LW,JAL,SW,JR指令,考查跳转并且保留pc,使得可以跳回原地址。

@00000000

8C010001 8C020001 8C030002 8C040001 //LW S1, 1(S0)

8C020002 24020010 AFC20010 27C20018 //LW S2, 2(S0)

0C000008 246309A0 00402021 00602821 //JAL ,8

8C040004 246309A0 00402021 00602821

00240820 24060010 8FC20010 00000000

00230820 AFC30060 8FC20060 00000000

00220820 00000000 08008076 00000000

00000000 00000000 AFC2005C 8FC2005C

AC020004 00000000 0043102A 14400003 //SW S2,4(S0) pc==8

03E00008 08008071 00000000 8FC2005C //JR S31

20650008 00401821 00031080 27C30010

通过以上实验可以看出该CPU可以实现各种指令组合,成功的检测了数据冲突和各种跳转指令,其中控制冲突主要靠编译器完成。

三.其他说明

源代码以及综合报告见目录文件设计过程中的问题和解决方法见”问题.docx”

电路设计之初忘记了btlz指令,由于时间问题没有重新更改,下面给出思路:

Btlz指令同beq,bneq指令类似,本文设计的时候只考虑了beq,bneq,所以两者的区别在decoder的时候区分开,添加了branch-type信号,表示比较内容相等于否。但btlz是小于,所以想将zero的输出变成两位,这样就可以代表这三种情况了。同时取消branch-type 信号。

由于时间问题,没有对电路的关键路径进行优化,没有完成异常处理。

体会:通过本次课程设计,体会到了数字电路的设计之妙。编码的讲究,电路结构的实现都令我们赞叹。设计过程中,时序的问题也非常重要,只有正确的时序电路才能很好的工作。最终我们很好的完成了5级流水CPU,对流水线的设计也有了更深的理解。虽然整个设计过程花了很长时间,但学到了很多的东西。

文档

MIPSCPU实验报告

五段流水线MIPSCPU设计实验报告何丹2010211066朱玮楠2010211100特点:采用mips指令集分段的ALU控制编码方式五级流水电路的时钟频率可以达到100M。一.电路设计思路:1.指令的编码本实验共实现了21条指令,虽然可以采用直接编码,然后放入ALU进行解码。但考虑到实际指令条数有上百条,所以本文的编码也采用了分级编码的方式,以减小ALU的延时。首先,对指令进行分类,R型,I型,J型。不同指令类型产生不同的ALUop。如果指令是R型,则根据functfield对指令进行解码。
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top