精品单周期CPU设计docxWord格式文档下载.docx

上传人:b****4 文档编号:8260629 上传时间:2023-05-10 格式:DOCX 页数:15 大小:105.73KB
下载 相关 举报
精品单周期CPU设计docxWord格式文档下载.docx_第1页
第1页 / 共15页
精品单周期CPU设计docxWord格式文档下载.docx_第2页
第2页 / 共15页
精品单周期CPU设计docxWord格式文档下载.docx_第3页
第3页 / 共15页
精品单周期CPU设计docxWord格式文档下载.docx_第4页
第4页 / 共15页
精品单周期CPU设计docxWord格式文档下载.docx_第5页
第5页 / 共15页
精品单周期CPU设计docxWord格式文档下载.docx_第6页
第6页 / 共15页
精品单周期CPU设计docxWord格式文档下载.docx_第7页
第7页 / 共15页
精品单周期CPU设计docxWord格式文档下载.docx_第8页
第8页 / 共15页
精品单周期CPU设计docxWord格式文档下载.docx_第9页
第9页 / 共15页
精品单周期CPU设计docxWord格式文档下载.docx_第10页
第10页 / 共15页
精品单周期CPU设计docxWord格式文档下载.docx_第11页
第11页 / 共15页
精品单周期CPU设计docxWord格式文档下载.docx_第12页
第12页 / 共15页
精品单周期CPU设计docxWord格式文档下载.docx_第13页
第13页 / 共15页
精品单周期CPU设计docxWord格式文档下载.docx_第14页
第14页 / 共15页
精品单周期CPU设计docxWord格式文档下载.docx_第15页
第15页 / 共15页
亲,该文档总共15页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

精品单周期CPU设计docxWord格式文档下载.docx

《精品单周期CPU设计docxWord格式文档下载.docx》由会员分享,可在线阅读,更多相关《精品单周期CPU设计docxWord格式文档下载.docx(15页珍藏版)》请在冰点文库上搜索。

精品单周期CPU设计docxWord格式文档下载.docx

实验内容:

1、通过实验的学习,基本熟悉quartersII软件的使用,并能熟练运用试验所需元件。

2、明白各个指令处理过程,然后设计数据路径的控制信号,最终完成单周期CPU的基本指令的设计。

2、通过本次实验,对CPU指令的读取和执行过穆更加清晰,明确。

实验器材:

PC机,QuartusII&

0软件

实验原理:

单周期CPU的特点是每条指令的执行需耍一个时钟周期,-条指令执行完再执行下i条指令。

假设该单周期CPU能够处理的指令格式如下:

(1)ADDrs,rt,rd

000000

rs(5位)

rt(5位)

rd(5位)

reserved

完成功能:

rd*-rs+rt

 

(2)LWrt,offset(base)

100011

base(5位)

offset(16位)

16位的offset经过0扩展到32位,与寄存器base

屮值相加,结果作为地址,以此地址取字保存到寄存器rt屮。

(3)SWrt,offset(16位)

101011

16位的offset经过0扩展到32位,与寄存器base中值相加,结果作为地址,将寄存器代的值保存到此地址内存中。

(4)MOVErs,rd

000111

rd—rs

(5)ANDrs,rt,rd

111000

rd—rsANDrt

000010

target(26位)

(6)Jtarget

26位地址的后8位成为跳转的目标地址。

一般来说:

一个CPU在处理指令吋需要经过以下儿个步骤:

1)取指令(IF):

根据程序计数器PC中的指令地址,从存储器中取出一条指令,然后转到译码状态。

同时PC中产生下一条指令需要的指令地址。

2)指令译码(ID):

对取指令操作中得到的指令进彳亍译码,确定这条指令需要完成的操作,从而产生相应的控制信号,驱动执行状态中的各种操作。

3)指令执行(EXE):

根据指令译码得到的控制信号,具体地执行指令动作,然后转移到结果写冋状态。

4)存储器访问(MEM):

所有需耍访问存储器的操作都将在这个步骤中执彳亍,该步骤给出存储器的数据地址,把数据写入到存储器中数据地址所指定的位置或者从存储器中得到数据地址所指示的数据。

5)结果写冋(WB):

该步骤负责把指令执行的结果或者访问存储器屮得到的数据写回相应的目的寄存器中。

取指令

IF

—>

指令译码

ID

―►

指令执行

EXE

存储器访问

MEM

结果写冋

WB

图1单周期CPU指令处理过程

图2单周期CPU数据通路和控制线路图

图2是一个非常简单的能够单周期完成上述6条指令的数据通路和必要的控制线路图。

其中存储器和寄存器堆,读操作吋,给出地址,输出端就直接输出相应数据;

而在写操作时,在WE使能信号为1时,在时钟上升沿写入,图中控制信号动作由下表所示。

表1・控制信号作用

信号名

无效时作用(0)

有效时作用

(1)

RegDst

写寄存器在寄存器堆得地址来自rt字段

写寄存器在寄存器堆得地址来自rd字段

ALUSrcB

寄存器堆data2输出

符号扩展的立即数

ALUOp

寄存器堆datal输出

加法

RegWrite

在吋钟上升沿时,写寄存器

MemtoReg

送往寄存器堆写数据输入的值来自ALU

送往寄存器堆写数据输入的值来自内存

MemWr

在时钟上升沿时,写存储器

PCSource

PC+1

扩展的立即数

ALUOp1

寄存器堆datal输出或者加法

实验步骤:

(1)控制器的设计

表2

控制信号

ADD

LW

SW

MOVE

AND

J

1

RegWrite

由于ADD指令码为000000,LW指令码为100011,SW指令码101011,MOVE指令码为000111,AND指令码为111000,J指令码为000100,因此可以写出所有控制信号的组合逻辑,结果如下:

RegDst二ADD+SUB;

ALUSrcB二LW+SW;

ALUOp二ADD+LW+SW;

RegWrite二ADD+LW+MOVE+AND;

MemtoReg=LW:

MemWr=SW;

PCSource二J;

ALUOpl=AND;

NnstrLCtor(31]氐nstndorfSC^氐nstrvdor[2S3氐nstructor[2Sg^nstrvjctor(27]氐nstructor[羽X

instructcr[31]

^Mnstructor(3C3氐nstrvctor[2S3^Mnstrvctor[2e9幷nstructcr[27]^nstructor[26l

X

njnstrtctcr[3C5

x

zxNr'

6trLCtcr[2^

sz

^nstruDtor[2B]sz

Cnstructcr[27]xz

instructor[田

Znstructcr[31]

LiveX

instructor[31]幷nstnxlcr[30]^nstructor[29|^Ninstn_iDtcr[2Bl^Nnstnjctcr{27]氐nstiwtcr[羽X

ZW6

inst8

Z>

ND6

inst9

inst18

inst19

RegDstOX

K/terrtoRegX

AJLJQdIX

IVterrtoFteg

IVbnW

CR2

inst14

ZWScBX

Fte^EtetO

ZWQd1

inst28

FtegDstX

SrrtoReg疋

inst〔6

l^terrW

ZWQdX

RecpstO关

ZWQd1x-

IVterrtcFteg关

M>

/ex-

CR4

inst30

Ftec^/UiteX

(2)各个元件

图4寄存器堆的笃地址选择

MLIX2

图5进入ALU的其中一个数据的选择

c#dO[31・Q

resdtf[31..C^

cteta1x[31・QctetaCkQ仁0|

inst22

resultf31・Q

resdtc[31..O]

K

MJX2

图6写入寄存器堆的数据的选择

图7PC

IVterrWx

47.QX—

resUtf[7..O]

elk

X——

resdtc[31..q”resdta[4..q”RegWite*instructcr[25i.21]”

instructcr[2Q.1^”

elk哭

h/errcry

caa(31・・0|wrad±

ess[7・・0|wren

rdad±

essaTZ.OI

rdactfessW7.Q

clock

inst15

ALU

g-

图8存储器

ctetaf31..0|

wrad±

ess[4„0]

wren

-o-

-0-

instrtctoq31..0j

<

±

[31..CH

cp1[31..0j

rcbcttessaf4..Ol

rctacktessn4..01

dock

inst29

S■

5X

图9寄存器堆

cp1[31..q

resdtb(31..cq

cfet3a(3仁0|

inst20

A^-

A+e

resdtf31..0l

restit1[31..O

qa1[31..0|

caa1x[3仁01「

caaCkf31・Q

resLit[31..(2

resute(31..O|

X

inst32

ix

ANDI

cpi(3i..q

resdtb(31..

resdt^31..O

resdtG(31..0|

c^a1xf3仁0|卜

cteta£

kf31・・0|

resUtf31・Q

resdtf[31..0|

inst31

———XLcbnN

(3)实现的功能分析

1•指令的选择:

pc+l(顺序执行),J两个需要一个比较器,

2•取指令的一段:

c*>

1[31..0]

h/terrW**

47.X—resdtf[7..qX

dk

IVter

cteta(3"

1・・0|wrad±

essT7・・0|wren

rctacfctessafZ.OI

rctad±

essU7.Q

instnctc431..0j

PC+1和J中选择(当PCSource为1,J执行选择跳转地址)。

图11取指令

指令输出为instructor[31..0]

3•实现扩展:

将16位的按0扩展成32位

gnd[31..16],qa[15..0]

4.ALU运算最后输出的结果:

ALU内部产生了三个运算结果,resultl(加法运算的结果),result2(与运算的结果),qal,但是输出只有一个,所以需要两个选择器,一个是在resultl和qal之间(当ALUOp为1时,输出resultl,否则,输出qal),再将resultl和qal选择的结果resulte与result2进行选择(当ALUOp1为1时,输出resul12,否则,输出resulte)。

画图(建工稈)

7编译(complies)

波图(waveformeditof)

7模拟(simulator)

5.实现效杲的步骤:

6•指令:

0:

00000000010001000011000000000000;

ADD指令:

OP码000000;

将寄存器地址00010和寄存器地址00100

的数据相加(4+6=10),放到寄存器地址为00110的寄存器中。

1:

10001100001000110000000000010000;

LW指令:

OP码100011;

将寄存器地址00001的数据3和后16位的扩展32位值相加,为19,作为内存地址,找到数据0(000),放到寄存器地址为00011的寄存器屮。

2:

10101100101001110000000000010001;

SW指令:

OP码101011;

将寄存器地址00101的数据7和后16位的扩展32位值相加,为24,作为内存地址,找到寄存器地址为00111的寄存器数据,放到内存地址24中。

3:

00011101000010010000000000000000;

MOVE指令:

OP码000111;

将寄存器地址01000取出的数据10(1001),放到寄存器地址为01001的寄存器中。

4:

11100001010010110110000000000000;

AND指令:

OP码111000;

将寄存器地址01010的数据与寄存器地址

寄存器中。

5:

00001000000000000000000000000000;

JUM指令:

OP码:

000010;

PC的值变成后8位;

END;

409M609M809M100PM⑵卩"

140PM160Pns180Pns

砸巩0]⑹⑹[19恤]⑹⑹[24硕]⑹【0][10珈】⑹⑹[12^⑹⑹⑹[戦0][0]⑹【10砸]⑹⑹[19则而而丽0]【0]⑹〔1砌而TOX⑹⑹⑹[仍0】⑹⑹【2皿0】⑹【0][10临】⑹⑹[12必⑹⑹⑹[顼0][0]⑹[10讹]⑹[0]⑹)f^WWo】[0][0】[l^WI何風血⑹⑹⑸X血血血⑼厕[oj【o][iiMoHoj[o][i3Mo]⑹⑹血笊0][0][0][瞅⑹⑹⑹〔ojx⑹⑹⑹⑼)to]⑹

nonm

顾WwMojU炭2山67]血h)t^【9j[oHolH225k⑹X(8Ho】⑹[顼〔0】K)⑹力40皿0山6阿面耐皿沏⑷⑹【0阿F

4]

[5]Y[0]

(21X[3]

实验数据分析

图12实验数据

说明:

Name:

1)elk:

指时钟信号;

2)outputa:

指ALU的输出结果;

3)outputb:

指寄存器堆数据数据输入端的数据;

4)outputc:

指内存数据输入端的数据;

5)outputd:

PC里的指令地址;

6)outpute:

扌旨扌旨令;

吋序图的说明:

1)PC%0,ADD指令,将4和6相加的结果10存入到寄存器地址为6(110)的寄存器中。

2)PC为1,LW指令,将3和16相加作为内存地址,将数据0写到寄存器3中。

3)PC为2,SW指令,将7和17的相加作为内存地址,将寄存器7里的数据9写到此内存地址中。

4)PC为3,MOVE指令,将寄存器8里的数据取出,放入到寄存器9里去。

5)PC为4,AND指令,将寄存器10和11的数据相与,得到12放到寄存器12中。

6)PC为5,JUMP指令,将PC变成0;

不断循环,死循环。

实验结论

(1)实验过程中,经常因为输入输出端的名称写错而出现各种错误,所以,各个输入输出端的命名要注意区别,不要重名,并且要注意区分不同输入端对实验结果的影响。

(2)试验中要用到6个多路选择器,一个用于写寄存器地址的选择,一个用于加法器其屮一个输出的选择,一个用于写入寄存器数据的选择,一个用于PC里的指令地址的选择,述有两个用于ALU内部数据输出的选择,要特别注意各个多路选择器的不同作用。

(3)截断点的应用:

1)绘图的过程中可以简洁而节省地方。

2)检查错误的时候也可以思路清晰,方便看过程。

3)32位的数据或者指令引出后命名,需要多少位数,可以直接引过来,只需耍命名与前面的相同,规定需耍的位数就好。

(4)本次试验涉及到的不同的数据输入输出,还有多路选择器比较多,所以一定耍有足够的耐心,耍比较细心。

(5)通过本次实验,我们对单周期CPU内部的指令执行过程,以及数据流通过程有了史加深刻的理解,并且,最终能够自己运用QuartusTT8.0软件设计出一个简单的CPU,虽然只包含了6条指令,但是却覆盖了较广泛的指令类型,使我们对于CPU的认识不再只局限在理论层次,而是通过亲手实践,对CPU的内部运行机制有个更深一步的理解。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2