计算机组成与系统结构实验报告1.docx

上传人:b****3 文档编号:4746977 上传时间:2022-12-08 格式:DOCX 页数:13 大小:97.66KB
下载 相关 举报
计算机组成与系统结构实验报告1.docx_第1页
第1页 / 共13页
计算机组成与系统结构实验报告1.docx_第2页
第2页 / 共13页
计算机组成与系统结构实验报告1.docx_第3页
第3页 / 共13页
计算机组成与系统结构实验报告1.docx_第4页
第4页 / 共13页
计算机组成与系统结构实验报告1.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

计算机组成与系统结构实验报告1.docx

《计算机组成与系统结构实验报告1.docx》由会员分享,可在线阅读,更多相关《计算机组成与系统结构实验报告1.docx(13页珍藏版)》请在冰豆网上搜索。

计算机组成与系统结构实验报告1.docx

计算机组成与系统结构实验报告1

评语:

课中检查完成的题号及题数:

课后完成的题号与题数:

成绩:

自评成绩:

95

实验报告

实验名称:

基于Verilog语言的运算器和存储器

设计与实现

日期:

2015.11.2

班级:

10011303

学号:

2013302534

姓名:

杨添文

一、实验目的:

1、了解运算器的组成结构。

2、掌握运算器的工作原理。

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

二、实验内容:

1、基本运算器实验。

2、静态随机存储器实验。

三、项目要求及分析:

1、基本运算器实验:

要求:

验证和实现运算器的数据运算功能。

这些运算除了常规的加、减、乘、除等基本的算术运算之外,还包括能进行“逻辑判断”的逻辑处理能力,即“与”、“或”、“非”这样的基本逻辑运算以及数据的比较、移位等操作。

分析:

(1)运算器原理图如下图所示

 

运算器内部含有三个独立运算部件,分别为算术、逻辑和移位运算部件,要处理的数据存于暂存器A和暂存器B,三个部件同时接受来自A和B的数据,各部件对操作数进行何种运算由控制信号S3…S0来决定,任何时候,多路选择开关只选择三部件中一个部件的结果作为ALU的输出。

如果是算术运算,还将置进位标志FC,在运算结果输出前,置ALU零标志。

(2)ALU和外围电路的连接如下图所示:

(图中的小方框代表排针座)

 

 

(3)运算器的逻辑功能表如表所示:

运算类型

S3S2S1S0

功能

 

逻辑运算

0000

F=A(直通)

0001

F=B(直通)

0010

F=AB(FZ)

0011

F=A+B(FZ)

0100

F=/A(FZ)

移位运算

0101

F=A逻辑右移B(取低3位)位(FZ)

0110

F=A逻辑左移B(取低3位)位(FZ)

0111

F=A算术右移B(取低3位)位(FZ)

1000

F=A循环右移B(取低3位)位(FZ)

 

算术运算

1001

F=A加B(FC,FZ)

1010

F=A加B加Cn(FC,FZ)

1011

F=A减B(FC,FZ)

1100

F=A减1(FC,FZ)

1101

F=A加1(FC,FZ)

1110

(保留)

1111

(保留)

2、静态随机存储器实验:

要求:

实现静态随机存储器的读写操作,通过软件中的数据通路图来观测实验结果。

分析:

(1)实验原理图如下图所示:

 

 

存储器数据线接至数据总线,数据总线上接有8个LED灯显示D7…D0的内容。

地址线接至地址总线,地址总线上接有8个LED灯显示A7…A0的内容,地址由地址锁存器(74LS273,位于PC&AR单元)给出。

数据开关(位于IN单元)经一个三态门(74LS245)连至数据总线,分时给出地址和数据。

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

(2)实验中的读写控制逻辑如下图所示:

功能

1

0

0

0

X

1

0

0

X

0

1

0

不选择

 

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

四、具体实现:

1、基本运算器实验:

(1)按下图连接实验电路,并检查无误。

图中将用户需要连接的信号用圆圈标明(其它实验相同)。

(2)将时序单元的状态开关置为‘单步’档,MEM单元的编程开关置为‘运行’档。

(3)打开电源开关,如果听到有‘嘀’报警声,说明有总线竞争现象,应立即关闭电源,重新检查接线,直到错误排除。

然后按动CON单元的CLR按钮,将运算器的A、B和FC、FZ清零。

(4)用输入开关向暂存器A置数。

①拨动CON单元的SD27…SD20数据开关,形成二进制数01100101(或其它数值),数据显示亮为‘1’,灭为‘0’。

②置LDA=1,LDB=0,按动时序单元的TS按钮,产生一个T2上沿,则将二进制数01100101置入暂存器A中,暂存器A的值通过ALU单元的A7…A0八位LED灯显示。

(5)用输入开关向暂存器B置数。

①拨动CON单元的SD27…SD20数据开关,形成二进制数10100111(或其它数值)。

②置LDA=0,LDB=1,按动时序单元的TS按钮,产生一个T2上沿,则将二进制数10100111置入暂存器B中,暂存器B的值通过ALU单元的B7…B0八位LED灯显示。

(6)改变运算器的功能设置,观察运算器的输出。

置ALU_B=0、

LDA=0、LDB=0,然后按表1-1-1置S3、S2、S1、S0和Cn的数值,并观察数据总线LED显示灯显示的结果。

如置S3、S2、S1、S0为0010,运算器作逻辑与运算,置S3、S2、S1、S0为1001,运算器作加法运算。

如果实验箱和PC联机操作,则可通过软件中的数据通路图来观测实验结果,方法是:

打开软件,选择联机软件的“【实验】—【运算器实验】”,打开运算器实验的数据通路图,如下图所示。

进行上面的手动操作,每按动一次TS按钮,数据通路图会有数据的流动,反映当前运算器所做的操作,或在软件中选择“【调试】—【单周期】”,其作用相当于将时序单元的状态开关置为‘单步’档后按动了一次TS按钮,数据通路图也会反映当前运算器所做的操作。

2、静态随机存储器实验:

(1)关闭实验系统电源,按下图连接实验电路,并检查无误,图中将用户需要连接的信号用圆圈标明。

(2)将时序单元的状态开关置为‘单步’档(时序单元的介绍见附录二),MEM单元的编程开关置为‘运行’档。

(3)将CON单元的IOR开关置为1(使IN单元无输出),打开电源开关,如果听到有‘嘀’报警声,说明有总线竞争现象,应立即关闭电源,重新检查接线,直到错误排除。

(4)给存储器的00H、01H、02H、03H、04H地址单元中分别写入数据11H、12H、13H、14H、15H。

由前面的存储器实验原理图可以看出,由于数据和地址由同一个数据开关给出,因此数据和地址要分时写入,先写地址,具体操作步骤为:

先关掉存储器的读写(WR=0,RD=0),然后利用数据开关设定地址,输出地址到数据总线(IOR=0),最后打开地址寄存器门控信号(LDAR=1),按动TS产生T2脉冲,即将地址打入到AR中。

再写数据,具体操作步骤为:

先关掉存储器的读写(WR=0,RD=0)和地址寄存器门控信号(LDAR=0),然后利用数据开关给出要写入的数据,输出数据到数据总线(IOR=0),最后使存储器处于写状态(WR=1,RD=0,IOM=0),按动TS产生T2脉冲,即将数据打入到存储器中。

写存储器的流程如下图所示(以向

00地址单元写入11H为例):

(5)依次读出第00、01、02、03、04号单元中的内容,观察上述各单元中的内容是否与前面写入的一致。

同写操作类似,也要先给出地址,然后进行读,地址的给出和前面一样,而在进行读操作时,应先关闭IN单元的输出(IOR=1),然后使存储器处于读状态(WR=0,RD=1,IOM=0),此时数据总线上的数即为从存储器当前地址中读出的数据内容。

读存储器的流程如下图所示(以从00地址单元读出11H为例):

(6)如果实验箱和PC联机操作,则可通过软件中的数据通路图来观测实验结果,方法是:

打开软件,选择联机软件的“【实验】—【存储器实验】”,打开存储器实验的数据通路图,如下图所示。

进行上面的手动操作,每按动一次TS按钮,数据通路图会有数据的流动,反映当前存储器所做的操作(即使是对存储器进行读,也应按动一次TS按钮,数据通路图才会有数据流动),或在软件中选择“【调试】—【单周期】”,其作用相当于将时序单元的状态开关置为‘单步’档后按动了一次TS按钮,数据通路图也会反映当前存储器所做的操作。

3、用Verilog语言在Modelsim上实现:

源代码:

modulelogic_operation

#(parameterISA_WIDTH=4,DATA_WIDTH=8)(

inputsys_clock,

inputsys_reset,

input[ISA_WIDTH-1:

0]control,

input[DATA_WIDTH-1:

0]data_a,

input[DATA_WIDTH-1:

0]data_b,

outputreg[DATA_WIDTH-1:

0]result

);

integeri;

always@(posedgesys_clockorposedgesys_reset)begin

if(sys_reset==1'b0)begin

result<=4'b0;

end

elsebegin

case(control)

4'b0000:

begin

for(i=0;i

result[i]=data_a[i];

end

4'b0001:

begin

for(i=0;i

result[i]=data_b[i];

end

4'b0010:

begin

for(i=0;i

result[i]=data_a[i]&data_b[i];

end

4'b0011:

begin

for(i=0;i

result[i]=data_a[i]|data_b[i];

end

4'b0100:

begin

for(i=0;i

result[i]=~data_a[i];

end

default:

;

endcase

end

end

endmodule

五、调试运行结果:

实验结果以表格方式呈现:

 

 

 

六、思考题的解答与分析:

1、基本运算器实验:

(1)利用上述运算器能否实现大于8位二进制数的算术运算?

如果能,需要采取什么样的措施?

答:

可以利用上述运算器实现大于8位的二进制算数运算,前提是,将上述两个寄存器连接起来实现一个16位的寄存器,输入与输出都可以利用这个寄存器。

(2)给出一组数据,验证桶形移位器的功能。

答:

设计了一个8位桶形移位器,能左右进行循环移位,移位的数量

可以在0~7进行变化。

以下是源代码,3位选择移位数,还有一位是方向选择:

 

moduleshifter1(IN,S,d,out);

input[7:

0]IN;

input[2:

0]S;

inputd;

output[7:

0]out;

reg[7:

0]out;

always@(INorSord)

begin

if(~d)

case(S)

3'b000:

begin

out<=IN;

end

3'b001:

begin

out[7]<=IN[0];

out[6:

0]<=IN[7:

1];

end

3'b010:

begin

out[7:

6]<=IN[1:

0];

out[5:

0]<=IN[7:

2];

end

3'b011:

begin

out[7:

5]<=IN[2:

0];

out[4:

0]<=IN[7:

3];

end

3'b100:

begin

out[7:

4]<=IN[3:

0];

out[3:

0]<=IN[7:

4];

end

3'b101:

begin

out[7:

3]<=IN[4:

0];

out[2:

0]<=IN[7:

5];

end

3'b110:

begin

out[7:

2]<=IN[5:

0];

out[1:

0]<=IN[7:

6];

end

3'b111:

begin

out[7:

1]<=IN[6:

0];

out[0]<=IN[7];

end

endcase

elseif(d)

case(S)

3'b000:

begin

out<=IN;

end

3'b001:

begin

out[0]<=IN[7];

out[7:

1]<=IN[6:

0];

end

3'b010:

begin

out[1:

0]<=IN[7:

6];

out[7:

2]<=IN[5:

0];

end

3'b011:

begin

out[2:

0]<=IN[7:

5];

out[7:

3]<=IN[4:

0];

end

3'b100:

begin

out[3:

0]<=IN[7:

4];

out[7:

4]<=IN[3:

0];

end

3'b101:

begin

out[4:

0]<=IN[7:

3];

out[7:

5]<=IN[2:

0];

end

3'b110:

begin

out[5:

0]<=IN[7:

2];

out[7:

6]<=IN[1:

0];

end

3'b111:

begin

out[6:

0]<=IN[7:

1];

out[7]<=IN[0];

end

endcase

end

endmodule

2、静态随机存储器:

(1)随机存储器和只读存储器的区别是什么,能否通过外加电路实现用随机存储器代替只读存储器?

答:

只读存储器就是ROM,而随机存储器就是RAM。

只读存储器是只能读出事先所存数据的固态半导体存储器,ROM所存数据,一般是装入整机前事先写好的,整机工作过程中只能读出,而不像随机存储器那样能快速地、方便地加以改写。

ROM所存数据稳定,断电后所存数据也不会改变;其结构较简单,读出较方便,因而常用于存储各种固定程序和数据,就像电脑硬盘一样。

随即存储器是以相同速度高速地、随机地写入和读出数据(写入速度和读出速度可以不同)的一种半导体存储器,RAM的优点是存取速度快、读写方便,缺点是数据不能长久保持,断电后自行消失,因此主要用于计算机主存储器等要求快速存储的系统,比如,电脑的内存条就是RAM。

(2)动态随机存储器和静态随机存储器的区别是什么,与静态随机存储器相比,动态随机存储器在电路设计需要考虑什么问题?

答:

SRAM也称动态随机存储器,其特点是工作速度快,只要电源不撤除,写入SRAM的信息就不会消失,不需要刷新电路,同时在读出时不破坏原来存放的信息,一经写入可多次读出,但集成度较低,功耗较大。

SRAM一般用来作为计算机中的高速缓冲存储器(Cache)。

DRAM是动态随机存储器(DynamicRandomAccessMemory),它是利用场效应管的栅极对其衬底间的分布电容来保存信息,以存储电荷的多少,即电容端电压的高低来表示“1”和“0”。

它的集成度较高,功耗也较低,但缺点是保存在DRAM中的信息场效应管栅极分布电容里的信息随着电容器的漏电而会逐渐消失,一般信息保存时间为2ms左右。

为了保存DRAM中的信息,必须每隔1~2ms对其刷新一次。

因此,采用DRAM的计算机必须配置动态刷新电路,防止信息丢失。

DRAM一般用作计算机中的主存储器。

七、所遇问题及解决方法:

实验中要通过软件观察数据通路,但因为PC没有跟实验箱连接成功,软件中的任务栏操作按钮显示灰色,经过认真排查线路,最终得以解决。

八、实验总结:

通过了解运算器的组成与工作原理,成功掌握了运算器的运算执行过程,让我对计算机内部的核心构成产生了浓重的兴趣。

实验软件对数据通路执行流程的清楚描述,将RAM的读写方式变得抽象,简单易懂。

因为之前没有接触过Verilog语言,要用软件实现起来比较麻烦,目前要抓紧时间学习Verilog。

九、建议:

实验安排比较紧凑,理论与实践连接不上。

如有侵权请联系告知删除,感谢你们的配合!

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

当前位置:首页 > 法律文书 > 调解书

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

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