计算机组成原理实验.docx

上传人:b****5 文档编号:6789247 上传时间:2023-01-10 格式:DOCX 页数:19 大小:349.78KB
下载 相关 举报
计算机组成原理实验.docx_第1页
第1页 / 共19页
计算机组成原理实验.docx_第2页
第2页 / 共19页
计算机组成原理实验.docx_第3页
第3页 / 共19页
计算机组成原理实验.docx_第4页
第4页 / 共19页
计算机组成原理实验.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

计算机组成原理实验.docx

《计算机组成原理实验.docx》由会员分享,可在线阅读,更多相关《计算机组成原理实验.docx(19页珍藏版)》请在冰豆网上搜索。

计算机组成原理实验.docx

计算机组成原理实验

计算机组成原理实验报告

(一)

1.1基本运算器实验

一、实验目的:

运算器ALU的组成结构及工作原理

二、实验内容:

使用PC机一台,TD-CMA实验系统一套完成对算术逻辑单元ALU的验证实验

三、实验步骤:

1、连线:

按照实验电路连线,检查无误后,合上开关。

2、存数:

分别向运算器A、B存入相应的二进制数(此数可以自定)。

3、置位:

置ALU_B=0,LDA=0,LDB=0,准备验证。

4、验证:

按照实验手册上的表格分别置位S3、S2、S1、S0和控制位CN,观察实验系

统上验证结果(由CPU内总线显示运算结果),以及进位标志FC,零标志FZ的状态。

四、实验结果:

1、实验连线图:

2、实验数据:

运算类型

逻辑运算

A

B

S3S2S1S0

CN

X

X

X

X

X

0

结果

65

65

65

65

65

65

65

A7

A7

A7

A7

A7

A7

A7

0

0

0

0

0

0

0

0

0

0

0

1

1

1

0

0

1

1

0

1

1

0

1

0

1

1

0

0

F=(65)FC=(0)FZ=(0)

F=(A7)FC=(0)FZ=(0)

F=(25)FC=(0)FZ=(0)

F=(E7)FC=(0)FZ=(0)

F=(65)FC=(0)FZ=(0)

F=(32)FC=(0)FZ=(0)

F=(32)FC=(0)FZ=(0)

移位运算

1

65

65

A7

A7

0

0

1

1

1

1

1

1

0

1

F=(CA)FC=(0)FZ=(0)

F=(CA)FC=(0)FZ=(0)

65

65

65

A7

A7

A7

1

1

1

0

1

1

0

0

0

1

1

0

X

X

X

F=(0C)FC=

(1)FZ=(0)

F=(66)FC=

(1)FZ=(0)

F=(64)FC=(0)FZ=(0)

算术运算

图1-1

五:

实验分析:

原理分析:

由于计算机算术逻辑单元ALU内嵌了相应的逻辑,移位,算是运算功能部件,

并且控制型号位S3、S2、S1、S0和控制位CN共同决定ALU实现什么样的运算功能,任何时

候,多路选择开关只选择三部件的结果作为ALU的输出,当中,若有影响进位的运算,还将

置进位标志FC,爱运算结果输出前,我们需要置零标志位。

错误分析:

在按照实验电路连线的时候,由于某些实线在输入输出没有相互对应,导致

最终的CPU内总线显示运算结果与进位标志有些许的错误,经检查纠正过后,最终验证结果

如上图1-1。

2.1静态随机存储器实验

一、实验目的:

掌握静态随机存储器RAM工作特性及数据的读写方法

二、实验内容:

使用PC机,TD-CMA实验系统一套完成对数据的静态随机存储存储功能过程

的验证

三、实验步骤:

1、连线:

按照实验电路连线,检查无误后,合上开关,注意和上开关前需要置控制位

TOR为高。

2、存址存数:

连线完成后,若没有总线竞争现象,开始存数,注意先写地址,后写数

据的顺序以及期间WR、RD、IOM、IOR、LDAR读写的置位标志,读地址是一定要使WR、

RD、IOM、IOR、均为低,LDAR为高,如下图2-1方式,分别读地址,01H,02H,03H,04H,

相应地址存入数据11H,12H,13H,14H。

图2-1写存储器流程图

3、读址读数:

按照如下图2-2的方式置标志位,实现相应数据的读数功能。

图2-2读存储器流程图

四:

实验结果:

1、实验连接图:

图2-3

2、实验结果拼接图:

读地址01H

写数据11H

图2-4

读地址01H

3、其他的数据读写上图所示如法炮制。

五:

实验分析:

原理分析:

实验所用的静态存储器是由一片6116(2K×8bit)构成(位于MEM单元),

6116有三个控制线:

CS(片选线)、OE(读线)、WE(写线),其功能如图2-3所示,当片选

有效(CS=0)时,OE=0时进行读操作,WE=0时进行写操作,本实验将CS常接地。

图2-5

由于存储器(MEM)最终是要挂接到CPU上,所以其还需要一个读写控制逻辑,使得CPU

能控制MEM的读写,实验中的读写控制逻辑如图2-4所示,由于T3的参与,可以保证MEM

的写脉宽与T3一致,T3由时序单元的TS3给出(时序单元的介绍见附录2)。

IOM用来选

择是对I/O还是对MEM进行读写操作,RD=1时为读,WR=1时为写。

图2-6读写控制逻辑

实验原理图如图2-5所示,存储器数据线接至数据总线,数据总线上接有8个LED灯

显示D7…D0的内容。

地址线接至地址总线,地址总线上接有8个LED灯显示A7…A0的内

容,地址由地址锁存器(74LS273,位于PC&AR单元)给出。

数据开关(位于IN单元)经一

个三态门(74LS245)连至数据总线,分时给出地址和数据。

地址寄存器为8位,接入6116的

地址A7…A0,6116的高三位地址A10…A8接地,所以其实际容量为256字节。

图2-7存储器实验原理图

错误分析:

我们在读写数据的时候,在两个方面存在逻辑或者读写顺序的错误,第一方

面,WR、RD、IOM、IOR、LDAR读写的置位标志是个需要着重注意的问题,第二方面,读写数

据时,首先读入地址,然后再读写数据。

(二)

运算器ALU

1.1软件模拟控制信号点亮

一、

二、

实验目的:

了解计算机中控制信号的选通,使用软件语言模拟,利用加法举例

实验代码:

#include

#include

#include

#include

usingnamespacestd;

voiddelay(inttime)

{

clock_tnow=clock();

while((clock()-now)

;

}

intmain()

{

inti;

intcount=1;

ifstreamcinfile("cin.txt");

charcontrol[4][23];

string

command[23]

=

{"PC->AB","ALU->PC","PC+1","Imm(Disp)->ALU","DB->IR",

"DB->DR","DR->DB","rs1->GR","rs,rd->GR","(rs1)->ALU",

"(rs)->ALU","DR->ALU","+","-","^",

"v","ALU->GR","ALU->DR","ALU->AR","AR->AB",

"ADS","M/IO","W/R"};

cout<<"

**********Thecontrolsingle(ALL23

BIT)*********"<

cout<<"PC->AB"<<"

"<<"

ALU->PC"<<"

"<<"PC+1"<<"

"<<"Imm(Disp)->ALU"<<"DB->IR"<

cout<<"DB->DR"<<""<<"DR->DB"<<""<<"rs1->GR"<<""<<"rs,rd->GR"<<"

"<<"(rs1)->ALU"<

cout<<"(rs)->ALU"<<""<<"DR->ALU"<<""<<"+"<<""<<"

-"<<""<<"

ALU->GR"<<""<<"ALU->DR"<<""<<"ALU->AR"<<"

M/IO"<<""<<"W/R"<

^"<

cout<<"v"<<""<<"

"<<"

AR->AB"<

cout<<"ADS"<<""<<"

memset(control,0,sizeof(control));

cout<

"<

cout<<"add:

(1、取址2、计算地址3、取数4、加法运算)"<

while(count!

=5)

{

cout<<"The"<

";

for(i=0;i<23;i++)

{

}

cinfile>>control[count-1][i];

delay(5*10);

cout<

cout<

for(i=0;i<23&&control[0][i]!

='\0';i++)

if(control[count-1][i]=='1')

{

delay(5*100);

cout<

}

count++;

cout<

delay(1*1000);

}

return0;

三、

实验结果:

2.1软件模拟硬布线逻辑

一、

二、

实验目的:

了解计算机中控制信号的选通,使用软件语言模拟,利用加法举例

实验代码:

#include

#include

usingnamespacestd;

enumcom{ADD,ADDX,ADDcc,ADDXcc}addCom;

intcount=0;

boolcy[5];

voiddelay(inttime)

{

clock_tnow=clock();

while((clock()-now)

;

}

voidstep(intcount)

{

if(count==1)

{

cout<<"Thefirststep:

"<

delay(2*1000);

cout<<"PC->AB";

delay(1*1000);

cout<<"ADS";

delay(1*1000);

cout<<"M/IO";

delay(1*1000);

cout<<"W/R";

delay(1*1000);

cout<<"DB->IR";

delay(1*1000);

cout<<"PC+1"<

}

if(count==2)

{

cout<<"Thesecondstep:

"<

delay(2*1000);

cout<<"rs1->GR";

delay(1*1000);

cout<<"(rs1)->ALU";

delay(1*1000);

cout<<"Dis->ALU";

delay(1*1000);

cout<<"+"<

}

if(count==3)

{

cout<<"Thethirdstep:

"<

delay(2*1000);

cout<<"DB->DR";

delay(1*1000);

cout<<"AR->AB";

delay(1*1000);

cout<<"ADS";

delay(1*1000);

cout<<"M/IO"<

}

if(count==4)

{

cout<<"Theforthstep:

"<

delay(2*1000);

cout<<"rs,rd->GR";

delay(2*1000);

cout<<"(rs)->ALU";

delay(1*1000);

cout<<"DR->ALU";

delay(1*1000);

cout<<"+";

delay(1*1000);

cout<<"ALU->GR"<

}

}

voiddisplay()

{

if(cy[count]==true)

{

step(count);

cy[count]=false;

}

if(cy[count]==true)

{

step(count);

cy[count]=false;

}

if(cy[count]==true)

{

step(count);

cy[count]=false;

}

if(cy[count]==true)

{

step(count);

cy[count]=false;

}

}

intmain()

{

intcountAddCom=0;

memset(cy,false,sizeof(cy));

while((++countAddCom)!

=5)

{

intsign;

sign=0;

for(count=1;count<5;count++)

{

delay(1*1000);

cy[count]=true;

if(countAddCom==1)

{

addCom=ADD;

sign++;

if(sign==1)

cout<<"**********ADD**********"<

display();

}

if(countAddCom==2)

{

addCom=ADDX;

sign++;

if(sign==1)

cout<<"**********ADDX**********"<

display();

}

if(countAddCom==3)

{

addCom=ADDcc;

sign++;

if(sign==1)

cout<<"**********ADDcc**********"<

display();

}

if(countAddCom==4)

{

addCom=ADDXcc;

sign++;

if(sign==1)

cout<<"**********ADDXcc**********"<

display();

}

}

count=0;

}

return0;

四、

实验结果:

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

当前位置:首页 > 高中教育 > 高中教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1