组成原理实验报告.docx

上传人:b****3 文档编号:3675038 上传时间:2022-11-24 格式:DOCX 页数:38 大小:1.44MB
下载 相关 举报
组成原理实验报告.docx_第1页
第1页 / 共38页
组成原理实验报告.docx_第2页
第2页 / 共38页
组成原理实验报告.docx_第3页
第3页 / 共38页
组成原理实验报告.docx_第4页
第4页 / 共38页
组成原理实验报告.docx_第5页
第5页 / 共38页
点击查看更多>>
下载资源
资源描述

组成原理实验报告.docx

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

组成原理实验报告.docx

组成原理实验报告

 

科目:

计算机组成原理

学院:

计算机科学与技术

 

实验一Hamming码

1.实验步骤

(1)、先连接JTAG线和USB线,然后接实验箱电源线,最后才可以打开电源。

(切记:

不能带电插拔Jtag口,否则会损坏实验设备)

(2)、安装ByteBlaster:

Quartustools>programmerHardwareSetup(在打开programmer窗口的左上角或从Edit菜单—>HardwareSetup亦可打开)选HardwareSettings点击AddHardwareHardwaretypeAlteraByteBlasterok即可(若已安装,此步可省);Mode选Jtag。

(3)、打开QuartustoolsprogrammerAddFile,将hamming.sof(在C盘的相应目录下)下载到FPGA中。

注意进行programmer时,应在program/configure下的方框中打勾,然后下载。

(4)、在实验台上通过模式开关选择FPGA独立调试模式010。

2.观察实验和记录数据

(1).输入的8位操作数对应开关SD15~SD8,编码后的hamming码在灯A0~A12上体现。

(2).开关SA0是控制位,待校验的13位数据对应SD7~SD0与SA5~SA1。

(3).比较的结果在灯R4~R0上体现。

如对8位数据10101100进行hamming编码和校验。

1、先手工计算校验位P5~P1=_10111_,编码后的hamming码为_1101001101011__。

2、拨动开关SD15~SD8输入10101100,观察灯A0~A12=_1101011001011__,看是否与自己手工计算的hamming码相符。

3、输入待校验的13位数据,假设输入1111001101011。

拨动开关SA0为1开始校验,拨动SD7~SD0,SA5~SA1。

观察灯R4~R0=_11011__,也就是校验结果的值。

4、比较编码后的hamming码和校验的hamming码,发现第_D7位数据错误,手工计算S=__00000__,和3中观察到的R4~R0是否相符。

5、可以输入其他位错误的校验数据观察结果值S是否正确。

6、1~5做完后,重新输入新的8位数据做实验,并填写表。

表1.1.4

第1组数据

第2组数据

第3组数据

8位数据

10101100

10011101

01101011

编码后(手工计算)

1101001101011

010*********

1011001010100

A12~A0(实验现象)

1101001101011

010*********

1011001010100

输入的对比码1

1111001101011

0000111101010

0011011110110

R4~R0(实验现象)1

11011

00110

01100

输入的对比码2

1111110000111

1110100111010

1000000111111

R4~R0(实验现象)2

11100

01011

10111

3.实验心得

通过这次实验,我们对海明码和容错技术有了初步的了解,掌握了海明码的编码技术以及海明码的校验方法。

对海明码的实现原理进行了更深的学习及理解,它通过在数据中加入几个校验位,将数据代码的码距比较均匀的拉大,并把数据的每一个二进制位分配在几个奇偶校验组中,当某一位出错后,就会引起有关的几个校验位的值发生变化,使得海明码成为较好的校验方法。

对海明码有了全面的了解。

 

实验二乘法器

1.实验步骤

(1)如果未安装ByteBlaster,参照实验一的配置文件的安装。

(2)连接JTAG和USB通信线,打开电源。

(3)打开Quartus->tools->programmer,将booth_multiplier.sof下载到FPGA中。

注意进行programmer时,应在program/configure下的方框中打勾,然后下载。

(4)在实验台上通过模式开关选择FPGA独立调试模式010。

(5)将短路子DZ3短接且短路子DZ4断开,使FPGA-CPU所需要的时钟使用正单脉冲时钟。

2.实验现象

本实验实现4位数的Booth乘法(有符号数乘法)。

输入输出规则对应如下:

1、输入的4位被乘数(multiplicand)md3~md0对应开关SD11~SD8。

2、输入的4位乘数(multiplier)mr3~mr0对应开关SD3~SD0。

3、按单脉冲按钮,输入脉冲,也即节拍。

4、乘积product(8位)p7~p0对应灯A8~A1,辅助位A0。

5、当计算结束时,final信号为1,对应灯R7。

一共需要0~8九个小步骤计算出结果。

本实验也是通过九个小步骤实现的,通过按单脉冲按钮输入脉冲,观察积寄存器的变化,掌握booth乘法器的原理。

1、拨动开关SD11~SD8输入4位被乘数(md3~md0)0010,SD3~SD0输入4位乘数(mr3~mr0)1101。

2、按动单脉冲按钮,输入脉冲,对照表2.5观察积寄存器即灯A8~A0的变化情况,当灯R7亮时,说明计算结束,灯A8~A1为最后相乘结果。

进行新的乘法运算时,或者说当上一次运算结束即灯R7亮时,输入新的被乘数、乘数(拨动开关),然后按动单脉冲开关即可观察正确的寄存器结果。

 

重复

步骤

被乘数(md)

积(p)

被乘数是(-7)10

乘数是(6)10

0

初始值

1001

000001100

1

1:

1001

000001100

2:

1001

000000110

2

1:

1001

011100110

2:

1001

001110011

3

1:

1001

001110011

2:

1001

000111001

4

1:

1001

101011001

2:

1001

110101100

重复

步骤

被乘数(md)

积(p)

被乘数是(-4)10

乘数是(-5)10

0

初始值

1100

000010110

1

1:

1100

010010110

2:

1100

001001011

2

1:

1100

001001011

2:

1100

000100101

3

1:

1100

110100101

2:

1100

111010010

4

1:

1100

001010010

2:

1100

000101001

 

3.实验心得

在这次实验中,对booth算法进行了更深的学习和理解,并把它用在了实际应用中。

对乘法器和booth乘法器的原理有了全面的学习研究以及实践。

在实验中,因为最初对booth算法的不熟悉和不理解,造成了一些错误,最后在实验指导书的帮助下,成功完成了实验。

总之,通过这次实验,我们学到了很多,对以后的学习很有帮助。

4.思考题

1、试述Booth乘法器的原理,即为什么可以用相邻两位的差来决定加减操作。

答:

以前乘法器的第一步是根据乘数的最低位来决定是否将被乘数加到中间结果积,而Booth算法则是根据乘数的相邻2位来决定操作,第一步根据相邻2位的4种情况来进行加或减操作,第二步仍然是将积寄存器右移。

 

实验三时序部件实验

1.实验步骤

1、如果未安装(设置好)ByteBlaster,参照实验一的配置文件的安装。

2、连接JTAG,并按下并口转接口的A按钮,打开电源。

3、实验台上通过模式开关选择FPGA独立调试模式010。

2.实验现象

(一)输入输出规则

1、主频

对应A15(当

为1时A15亮(大约1秒),当

为0时A15灭),D触发器的输出对应A14,R-S触发器的输出对应A13;

2、节拍信号T4~T1对应A7~A4,节拍信号T4’~T1’对应A3~A0。

根据维持阻塞的原理可知,在T1~T4的任何期间启动控制逻辑,只有在T1~T4结束后,下一次循环开始时,才开始输出T1’~T4’;同理,停机时,T1’~T4’之间任何期间停机,只有在T1’~T4’本次循环结束时,才停止输出。

通过拨动启动和停机信号体会维持阻塞的作用。

3、CLR上电复位信号对应按实验台上的CPU复位按钮所产生的负脉冲。

启动信号对应开关SD8,开关SD8的初始状态的为1(朝上)。

需要产生负启动脉冲时,首先将开关SD8拨动向下,然后再将开关SD8拨动向上。

停止信号对应开关SD9,开关SD9的初始状态的为1(朝上)。

需要产生负停止脉冲时,首先将开关SD9拨动向下,然后再将开关SD9拨动向上。

(二)实验步骤及现象结果记录

1、将短路子DZ3断开且短路子DZ4短接,在使FPGA-CPU所需要的时钟使用连续时钟。

并且将短路子DZ5短接,同时将DZ6~DZ8中的其他短路子断开,选择8MHz连续时钟作为启停逻辑电路的时钟。

2、打开Quartus->tools->programmer,将circuit.sof下载到FPGA中。

注意进行programmer时,应在program/configure下的方框中打勾,然后下载。

3、启停电路下载完成之后,首先按下CPU复位键,此时实验现象为停机状态;然后进行启动操作,在需要产生负启动脉冲时,使SD8开关执行1-0-1的操作;最后执行停止操作,在需要产生负启动脉冲时,使SD9开关执行1-0-1的操作。

通过拨动启动和停机信号可以体会到维持阻塞的作用。

4、观察现象结果,并把现象及结果值记录到上面表3.1中。

为了方便记录,以表格形式即是:

表3.1启停逻辑电路信息记录表:

信号

I/O

开关/指示灯

CLR复位现象结果值(按cpu复位键)

启动信号输入后现象结果值(SD8执行负脉冲1-0-1)

停止信号输入后的现象结果值(SD9执行负脉冲1-0-1)

CLR复位

I

CPU复位按钮

不填

不填

不填

启动信号

I

SD8

不填

不填

不填

停止信号

I

SD9

不填

不填

不填

主频

O

A15

10

10

10

10

10

10

10

10

10

10

10

10

D触发器

O

A14

1

1

1

1

0

0

0

0

0

0

0

0

R-S触发器

O

A13

1

1

1

1

0

0

0

0

0

0

0

0

T4~T1

O

A7~A4

1000

0001

0010

0100

0000

0000

0000

0000

0000

0000

0000

0000

T4’~T1’

O

A3~A0

1000

0001

0010

0100

0001

0010

0100

1000

0001

0010

0100

1000

 

3.实验心得

通过这次时序部件实验,我们加深理解了计算机控制器中时序控制部件的基本组成和工作原理,通过我们在实验室中的实习操作,掌握了启停逻辑电路、节拍脉冲发生器的工作原理及设计方法。

对启停逻辑电路、节拍脉冲发生器等电路的结构特点也有了一定的了解。

对实验器材的操作也更加熟练。

 

实验四CPU算术逻辑单元实验

1.实验步骤和结果现象观察

1)实验台设置成FPGA-CPU独立调试模块;

REGSEL=0,CLKSEL=1,FDSEL=0.使用实验平台上的单脉冲,即STEP_CLK短路子短接,短路子RUN_CLK断开;

(2)将设计在QuartusII下输入,在编译后下载到TEC-CA上的FPGA中;

(3)输入A这个数:

Sel=0(SA4),write=1(SA5),A数(SD15~SD0),按一下单脉冲按钮(单脉冲按钮),使之存入A寄存器;

(4)输入B这个数:

Sel=1(SA4),write=1(SA5),B数(SD15~SD0),按一下单脉冲按钮(单脉冲按钮),使之存入B寄存器;

(5)输入功能码OP[210](SA2~SA0),按一下单脉冲按钮(单脉冲按钮);

(6)观察16位运算结果result(A15~A0)及Z、C指示灯;

(7)重复实验步骤(3)--(6)对以下4组数据进行表4.1的8种运算,把运算结果及标志位填写在表4.2中:

A、对第一组数据进行8种运算,A为0xAAAA,B为0x5555;

B、对第一组数据进行8种运算,A为0xFFFF,B为0x0000;

C、对第一组数据进行8种运算,A为0x0000,B为0xFFFF;

D、对第一组数据进行8种运算,A为0x8950,B为0x9863;

表4.2算术逻辑单元实验

运算数据

运算类型

操作码OP

运算结果result

标志位C

标志位Z

运算前

运算后

运算前

运算后

第1组数据

A=0xAAAA

B=0x5555

resultA+B

000

1111111111111111

00

00

resultA+1

001

1010101010101011

00

00

resultA-B

010

0101010101010101

00

00

resultA-1

011

1010101010101001

00

00

resultAandB

100

0000000000000000

00

01

resultAorB

101

1111111111111111

00

00

resultnotB

110

1010101010101010

00

00

resultB

111

0101010101010101

00

00

第2组数据

A=0xFFFF

B=0x0000

resultA+B

000

1111111111111111

00

00

resultA+1

001

0000000000000000

01

01

resultA-B

010

1111111111111111

00

00

resultA-1

011

1111111111111110

00

00

resultAandB

100

0000000000000000

00

01

resultAorB

101

1111111111111111

00

00

resultnotB

110

1111111111111111

00

00

resultB

111

0000000000000000

00

00

第3组数据

A=0x0000

B=0xFFFF

resultA+B

000

1111111111111111

00

00

resultA+1

001

0000000000000001

00

00

resultA-B

010

0000000000000001

00

00

resultA-1

011

1111111111111111

01

00

resultAandB

100

0000000000000000

00

01

resultAorB

101

1111111111111111

00

00

resultnotB

110

0000000000000000

00

01

resultB

111

1111111111111111

00

00

 

第4组数据

A=0x8950

B=0x9863

resultA+B

000

0010000110110011

11

00

resultA+1

001

1000100101000001

10

00

resultA-B

010

1111000011101101

11

00

resultA-1

011

1000100101001111

10

00

resultAandB

100

1000100001000000

11

00

resultAorB

101

1001100101110011

11

00

resultnotB

110

0110011110011100

11

00

resultB

111

1001100001100011

11

00

2.节拍发生器实验现象

(一)输入输出规则

实验中的节拍序列发生器是一个8相节拍序列发生器波形图,如图3.8所示。

输出对应A7~A0灯(

8~

1)。

(二)实验步骤及现象

1、将短路子DZ3短接且短路子DZ4断开,使节拍序列发生器所需要的时钟使用正单脉冲时钟。

2、打开Quartus->tools->programmer,将sequence.sof下载到FPGA中。

注意进行programmer时,应在program/configure下的方框中打勾,然后下载。

3、按动单脉冲按钮,记录A7~A0灯的值(

8~

1),并绘制成时序波形图,,

01111111101111111101111111101111

11110111111110111111110111111110

 

3.实验心得

通过这次CPU算数逻辑单元实验,我们掌握了简单运算器的数据传送通路

的原理,并验证了运算器的组合功能。

其中,算术逻辑部件的主要功能是对二进制数据进行定点算术运算、逻辑运算和各种移位操作。

在实验过程中,对实验原理的不熟悉,让我们的实验困难了许多。

我们由理论知识和指导书中的提示及要求,所以能够较顺利的完成。

实验五CPU指令译码器实验

1.实验步骤及现象

(1)接上JTAG线和电源线,有一分二并口的请保证A按钮按下,打开实验箱电源;

(2)实验台设置成FPGA-CPU独立调试模块;REGSEL=0,CLKSEL=1,FDSEL=0.使用实验平台上的单脉冲,即STEP_CLK短路子短接,短路子RUN_CLK断开;

(3)将设计在QuartusII下输入,在编译后下载到TEC-CA上的FPGA中;

(4)拨动实验台上的开关SD5~SD0,改变IR[15..12]、进位标志C和结果为0标志位Z,观察指示灯R10~R0显示的控制信号,并填写表6-28和表6-29。

2.实验心得

通过这次实验,我们学习理解了指令译码器的原理及其重要性。

指令译码器作为计算机控制器中最重要的部分,其重要性是可想而知的。

这次实验只是对译码器的一个简单的应用。

在实验过程中,我们遇到了一些困难,但在老师和指导书的帮助下,成功完成了实验。

 

 

实验六CPU微程序控制实验

1.实验步骤

(1)实验台设置成FPGA-CPU独立调试模式,REGSEL=0、CLKSEL=1、FDSEL=0.使用实验台上的单脉冲,即STEP_CLK短路子短接,短路子RUN_CLK断开;

(2)将设计在QuartusII下输入,编译后下载到TEC-CA上的FPGA中;

(3)按复位键后,拨动实验台上的开关SD5~SD0,改变IR[15…12]、进位标志C和结果为0标志Z,观察指示灯R15~R0、A4~A0、A12~A8、A14和A15显示的信号,追踪每条指令的执行过程并把相应数据填在表6-1中。

(4)观察每条指令的执行过程,每个节拍进行的微操作和微操作控制信号。

表6-1当C=0;Z=0时候各个指令执行的过程及各微指令的执行情况

 

2.实验心得

这次实验是关于CPU微程序控制的,在此次实验中,我们理解了微程序控制器的控制原理,并进一步掌握指令流程和功能。

了解掌握了微程序控制器的设计思路和方法。

这次实验的完成,对我们以后的学习和实践有很大的帮助。

 

实验七八CPU实验_无流水无cache

1.实验步骤

(1)Test1(EX1.TXT):

8位×8位乘法运算

第一个测试程序,R0=25,R1=6,结果(150)存放在R3中。

源代码见EX1.txt。

1、将实验台模式开关置为101,为单片机控制FPGA-CPU模式。

2、在Quartus下将实验7.1里面的cpu0.sof下载到FPGA中。

3、打开debugcontroller,执行File─>RuleOpen命令,打开规则文件cpu.txt。

4、在debugcontroller中,执行file—>CodeOpen命令,打开伪汇编文件。

5、在debugcontroller中,执行build—>CompleCode命令,将EX1.txt编译得到目标二进制文件,显示在机器代码窗口中。

6、在debugcontroller中,执行Build—>UploadBIN命令,将目标二进制代码写入实验台上底存储器中。

为了检查是否正确写入,执行Build—>DownloadRAM命令,将存储器中的代码读回,(从0开始,本例中写入18个words,所以从0到17),以做比较。

7、在debugcontroller中,利用Debug菜单中的命令调试程序。

8、观察并记录每执行完一字机器指令后DataBus、AddrBus、Rx各寄存器的数据,并注意观察执行一字机器指令和一条机器指令的周期长短。

表格记录数据:

ADDR

存储器地址线

数据线地址线

寄存器数据

A15—A0

D15—D0

R15—R0

0x000

0000

8100

0000

0x001

0000

8100

0000

0x002

0001

0019

0000

0x003

0002

8110

0019

0x004

0003

0006

0019

0x005

0004

8120

0019

0x006

0005

0000

0019

0x007

0006

9130

0019

0x008

0007

0008

0019

0x009

0008

8140

0019

0x00a

0009

0001

0019

0x00b

000a

0241

0019

0x00c

000b

4601

0019

0x00d

000c

4601

0019

0x00e

000d

0a00

0019

0x00f

000e

0b10

0019

0x010

000f

0830

0032

0x011

0010

47f7

0032

0x012

0011

40ff

1900

截图

T1.txt

;8bitx8bit;

;测试指令:

置立即数,AND,条件跳转,左移,右移;;

MAIN:

MVRD

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

当前位置:首页 > 表格模板 > 合同协议

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

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