计算机组织与体系结构实验报告.doc
《计算机组织与体系结构实验报告.doc》由会员分享,可在线阅读,更多相关《计算机组织与体系结构实验报告.doc(18页珍藏版)》请在冰点文库上搜索。
![计算机组织与体系结构实验报告.doc](https://file1.bingdoc.com/fileroot1/2023-4/30/2f639202-7b23-4005-b6bb-24406f3868ad/2f639202-7b23-4005-b6bb-24406f3868ad1.gif)
计算机组成原理
实验报告
评语:
成绩
教师:
年月日
班级:
学号:
姓名:
地点:
时间:
实验一存储器实验
1.FPGA中LPM_ROM定制与读出实验
一.实验目的
1、掌握FPGA中lpm_ROM的设置,作为只读存储器ROM的工作特性和配置方法。
2、用文本编辑器编辑mif文件配置ROM,学习将程序代码以mif格式文件加载于lpm_ROM中;
3、在初始化存储器编辑窗口编辑mif文件配置ROM;
4、验证FPGA中mega_lpm_ROM的功能。
二.实验原理
ALTERA的FPGA中有许多可调用的LPM(LibraryParameterizedModules)参数化的模块库,可构成如lpm_rom、lpm_ram_io、lpm_fifo、lpm_ram_dq的存储器结构。
CPU中的重要部件,如RAM、ROM可直接调用他们构成,因此在FPGA中利用嵌入式阵列块EAB可以构成各种结构的存储器,lpm_ROM是其中的一种。
lpm_ROM有5组信号:
地址信号address[]、数据信号q[]、时钟信号inclock、outclock、允许信号memenable,其参数都是可以设定的。
由于ROM是只读存储器,所以它的数据口是单向的输出端口,ROM中的数据是在对FPGA现场配置时,通过配置文件一起写入存储单元的。
图3-1-1中的lpm_ROM有3组信号:
inclk——输入时钟脉冲;q[23..0]——lpm_ROM的24位数据输出端;a[5..0]——lpm_ROM的6位读出地址。
实验中主要应掌握以下三方面的内容:
⑴lpm_ROM的参数设置;
⑵lpm_ROM中数据的写入,即LPM_FILE初始化文件的编写;
⑶lpm_ROM的实际应用,在GW48_CP+实验台上的调试方法。
三.实验步骤
(1)用图形编辑,进入mega_lpm元件库,调用lpm_rom元件,设置地址总线宽度address[]和数据总线宽度q[],分别为6位和24位,并添加输入输出引脚,如图3-1-1设置和连接。
(2)设置图3-1-1为工程。
(3)在设置lpm_rom数据参数选择项lpm_file的对应窗口中(图3-1-2),用键盘输入lpm_ROM配置文件的路径(rom_a.mif),然后设置在系统ROM/RAM读写允许,以便能对FPGA中的ROM在系统读写。
(4)用初始化存储器编辑窗口编辑lpm_ROM配置文件(文件名.mif)。
这里预先给出后面将要用到的微程序文件:
rom_a.mif。
rom_a.mif中的数据是微指令码(图3-1-3)。
(5)全程编译。
(6)下载SOF文件至FPGA,改变lpm_ROM的地址a[5..0],外加读脉冲,通过实验台上的数码管比较读出的数据是否与初始化数据(rom_a.mif中的数据)一致。
(7)打开QuartusII的在系统存储模块读写工具,了解FPGA中ROM中的数据,并对其进行在系统写操作(图3-1-4)。
图3-1-1lpm_ROM的结构图
图3-1-2设置在系统ROM/RAM读写允许
图3-1-3rom_a.mif中的数据
图3-1-4在系统存储模块读写
四.实验结果
仿真波形图如下:
图4-1-1
图4-1-2
图4-1-3
五.心得体会
实验二运算器实验
1.算术逻辑运算实验
一.实验目的
1.了解简单运算器的数据传输通路。
2.验证运算功能发生器的组合功能。
3.掌握算术逻辑运算加、减、与的工作原理。
4.验证实验台运算的8位加、减、与、直通功能。
5.按给定数据,完成几种指定的算术和逻辑运算。
二.实验内容
1.实验原理
算术逻辑单元ALU的数据通路如图2-1所示。
其中运算器ALU181根据74LS181的功能用VHDL硬件描述语言编辑而成,构成8位字长的ALU。
参加运算的两个8位数据分别为A[7..0]和B[7..0],运算模式由S[3..0]的16种组合决定,而S[3..0]的值由4位2进制计数器LPM_COUNTER产生,计数时钟是Sclk(图2-1);此外,设M=0,选择算术运算,M=1为逻辑运算,CN为低位的进位位;F[7..0]为输出结果,CO为运算后的输出进位位。
两个8位数据由总线IN[7..0]分别通过两个电平锁存器74373锁入,ALU功能如表2-1所示。
表2-1 ALU181的运算功能
选择端
高电平作用数据
S3S2S1S0
M=H
M=L算术操作
逻辑功能
Cn=L(无进位)
Cn=H(有进位)
0000
0001
加1
0010
+1
0011
减1(2的补码)
0100
加1
0101
加
加+1
0110
0111
1000
加1
1001
加1
1010
加1
1011
1100
*
1101
加1
1110
加1
1111
注1、*表示每一位都移至下一更高有效位,“+”是逻辑或,“加”是算术加
注2、在借位减法表达上,表2-1与标准的74181的真值表略有不同。
三.实验步骤
(1)设计ALU元件
在QuartusII环境下,用文本输入编辑器TextEditor输入ALU181.VHD算术逻辑单元文件,编译VHDL文件,并将ALU181.VHD文件制作成一个可调用的原理图元件。
(2)以原理图方式建立顶层文件工程
选择图形方式。
根据图2-1输入实验电路图,从QuartusII的基本元件库中将各元件调入图形编辑窗口、连线,添加输入输出引脚。
将所设计的图形文件ALU.bdf保存到原先建立的文件夹中,将当前文件设置成工程文件,以后的操作就都是对当前工程文件进行的。
(3)器件选择
选择Cyclone系列,在Devices中选择器件EP1C6QC240C8。
编译,引脚锁定,再编译。
引脚锁定后需要再次进行编译,才能将锁定信息确定下来,同时生成芯片编程/配置所需要的各种文件。
(4)芯片编程Programming(可以直接选择光盘中的示例已完成的设计进行验证实验)
打开编程窗口。
将配置文件ALU.sof下载进GW48系列现代计算机组成原理系统中的FPGA中。
(5)选择实验系统的电路模式是NO.0,验证ALU的运算器的算术运算和逻辑运算功能
根据表2-1,从键盘输入数据A[7..0]和B[7..0],并设置S[3..0]、M、Cy,验证ALU运算器的算术运算和逻辑运算功能,记录实验数据。
图2-1算术逻辑单元ALU实验原理图
四.实验过程
(1)按图2-1所示,在本验证性示例中用数据选择开关(键3控制)的高/低电平选择总线通道上的8位数据进入对应的74373中;即首先将键3输入高电平,用键2、键1分别向A[7..0]置数01010101(55H),这时在数码管4/3(应为2/1)上显示输入的数据(55H);然后用键3输入低电平,再用键2、键1分别向B[7..0]置数10101010(AAH),这时在数码管2/1(应为4/3)上显示输入的数据(AAH);这时表示在图2-1中的两个74373锁存器中分别被锁入了加数55H和被加数AAH。
可双击图2-1的ALU181元件,了解其VHDL描述。
(2)设定键8为低电平,即M=0(允许算术操作),键6控制时钟SCLK,可设置表2-1的S[3..0]=0~F。
现连续按动键6,设置操作方式选择S[3..0]=9(加法操作),使数码管8显示9,以验证ALU的算术运算功能:
当键7设置cn=0(最低位无进位)时,数码管7/6/5=0FF(55H+AAH=0FFH);
当键7设置cn=1(最低位有进位)时,数码管7/6/5=100(55H+AAH+1=100H);
(3)若设定键8为高电平,即M=1,键KEY6控制时钟SCLK,设置S[3..0]=0~F,KEY7设置cn=0或cn=1,验证ALU的逻辑运算功能,并记录实验数据。
表2-2A[7..0],B[7..0]设置值检查
F[7..0]
SW_B
寄存器内容
S3S2S1S0
M
BUS
A[7..0]
B[7..0]
10101010
01010101
10101010
0000
1
11111111
01010101
10101010
0100
1
(4)验证ALU181的算术运算和逻辑运算功能,ALU181模块功能可参照表2-1。
表2-3给定了寄存器DRl=A[7..0]和DR2=B[7..0]的数据(十六进制),要求根据此数据对照逻辑功能表所得的理论值(要求课前完成)与实验结果值进行比较(均采用正逻辑0)。
(5)表2-4列出了8种常用的算术与逻辑运算要求指定的操作内容,正确选择运算器数据通路、控制参数S3、S2、S1、S0、M,并将实验结果值填入括号内,表中给定原始数据DR1=A[7..0]和DR2=B[7..0],以后的数据取自前面运算的结果。
表2-2
S3S2S1S0
A[7..0]
B[7..0]
算术运算M=0
逻辑运算(M=1)
cn=0(无进位)
cn=1(有进位)
0000
AA
55
F=(AA)
F=(AB)
F=(55)
0001
AA
55
F=(FF)
F=(00)
F=(00)
0010
AA
55
F=(AA)
F=(AB)
F=(55)
0011
AA
55
F=(00)
F=(FF)
F=(00)
0100
FF
01
F=(FD)
F=(FE)
F=(FE)
0101
FF
01
F=(FD)
F=(FE)
F=(FE)
0110
FF
01
F=(FE)
F=(FD)
F=(FE)
0111
FF
01
F=(FF)
F=(FE)
F=(FE)
1000
FF
FF
F=(FE)
F=(FF)
F=(00)
1001
FF
FF
F=(FE)
F=(FF)
F=(FF)
1010
FF
FF
F=(FE)
F=(FF)
F=(FF)
1011
FF
FF
F=(FF)
F=(FE)
F=(FF)
1100
55
01
F=(AA)
F=(AB)
F=(01)
1101
55
01
F=(AA)
F=(AB)
F=(FF)
1110
55
01
F=(54)
F=(55)
F=(55)
1111
55
01
F=(55)
F=(54)
F=(55)
表2-3
8种常用的算术与逻辑运算
操作
S3S2S1S0
M
Cn
DR1
DR2
运算关系及结果显示
Cn4
逻辑乘
1011
1
0
66
FF
DR1.DR2→DR2(66)
0
传送
1111
1
0
66
66
DR1 →DR2(66)
0
按位加
0110
1
0
66
66
DR1DR2→DR2(00)
0
取反
0000
1
0
66
00
→ DR2(99)
0
加1
0000
0
1
66
99
DR2+1→DR2(9A)
0
求负
0010
0
1
66
9A
+1→DR2(66)
0
加法
1110
1
0
66
66
DR1+DR2→DR2(CC)
0
减法
0110
0
0
66
CC
DR1–DR2→DR2(-66)
1
表2-4
五.实验结果
填写上表2-2,2-3与2-4,并仿真波形图,波形图如下。
图5-1-1
图5-1-2
图5-1-3
六.心得体会
实验四时序与数据通路实验
一、实验目的
(1)掌握节拍脉冲发生器的设计方法和工作原理。
(2)理解节拍脉冲发生器的工作原理。
二、实验原理
计算机之所以能够按照人们事先规定的顺序进行一系列的操作或运算,就是因为它的控制部分能够按一定的先后顺序正确地发出一系列相应的控制信号。
这就要求计算机必须有时序电路。
控制信号就是根据时序信号产生的。
本实验说明时序电路中节拍脉冲发生器的工作原理。
1、连续节拍发生电路设计(图4-1-1):
可由4个D触发器组成,可产生4个等间隔的时序信号T1~T4,其中CLK1为时钟信号,由实验台右边的方波信号源clock0提供,可产生1Hz~12MHz的方波信号频率。
实验者可根据实验自行选择信号频率。
当RST1为低电平时,T1输出为“1”,而T2、T3、T4输出为“0”;当RST1由低电平变为高电平后,T1~T4将在CLK1的输入脉冲作用下,周期性地轮流输出正脉冲,机器进入连续运行状态(EXEC)。
图4-1-1节拍脉冲发生器的工作原理
T1~T4以及CLK1、RST1的工作波形如图4-1-2所示。
示例工程文件是T4.bdf。
硬件实验验证方法如图4-1-1所示,下载T4.SOF文件,选择实验模式1,Clock0接4Hz,键8控制RST1,高电平时可以看到,发光管1、2、3、4分别显示T1、T2、T3、T4的输出电平(实验结果与仿真波形图4-1-2比较!
)。
图4-1-2节拍脉冲发生器工作波形
图4-1-3单步运行电路工作原理
图4-1-4单步运行电路工作波形
2、单步节拍发生电路(图4-1-3):
将图4-1-1电路稍加改变即可得到图4-1-3所示的单步运行电路。
该电路每当RST1出现一个负脉冲后,仅输出一组T1、T2、T3、T4节拍信号,直到RST1出现下一个负脉冲,波形如图4-1-4所示。
示例工程文件是T5.bdf。
硬件实验验证方法如图4-1-3所示,下载T5.SOF文件,选择实验模式1,Clock0接4Hz(选择范围是1Hz-50MH),键8控制RST1。
每出现一个负脉冲,发光管1、2、3、4分别显示T1、T2、T3、T4的输出电平一次(实验结果与仿真波形图4-1-4比较!
)。
三、实验结果
连续节拍发生电路的仿真波形如下
图4-1-5
单步节拍发生电路的仿真波形如下
图4-1-6.
四、心得体会
实验三微控制器实验
一、程序计数器PC与地址寄存器AR实验
(一)、实验目的
1.掌握地址单元的工作原理。
2.掌握的两种工作方式,加1计数和重装计数器初值的实现方法;
3.掌握地址寄存其从程序计数器获得数据和从内部总线获得数据的实现方法。
(二)、实验原理
地址单元主要由三部分组成:
程序计数器PC,地址寄存器AR和多路开关。
程序计数器PC用以指出下一条指令在主存中的存放地址,CPU正是根据PC的内容去存取指令的。
因程序中指令是顺序执行的,所以PC有自增功能。
程序计数器提供下一条程序指令的地址,如电路图4-2-1所示,在T4时钟脉冲的作用下具有自动加1的功能;在LDPC信号的作用下可以预置计数器的初值(如子程序调用或中断相应等)。
当LDPC为高电平时,计数器装入data[]端输入的数据。
aclr是计数器的清0端,高电平有效(高电平清零);aclr为低电平时,允许计数器正常计数。
图4-2-1程序计数器原理图
地址寄存器AR(74273)锁存访问内存SRAM的地址。
273中的地址来自两个渠道。
一是程序计数器PC的输出,通常是下一条指令的地址;二是来自于内部数据总线的数据,通常是被访问操作数的地址。
为了实现对两路输入数据的切换,在FPGA的内部通过总线多路开关BUSMUX进行选择。
LDAR与多路选择器的sel相连,当LDAR为低电平,选择程序计数器的输出;当LDAR为高电平时,选择内部数据总线的数据。
图4-2-2程序计数器工作波形
(三)、实验步骤
1.按照图4-2-1程序计数器原理图编辑、输入电路,实验台选择NO.0工作模式。
对输入原理图进行编译、引脚锁定、并下载到实验台。
示例工程文件是PC_unit.bdf。
硬件实验验证(与仿真波形图4-2-2比较!
)。
实验说明:
(1)下载pc_unit.sof;
(2)用模式键选模式“0”,再按一次右侧的复位键;
(3)键2和键1可输入8位总线数据B[7..0](此值显示于发光管D1~D8和数码管2/1);CLR(键5)按2次(0à1à0),产生一正脉冲,高电平清零;LDAR(键6)=0时,BUSMUX输出程序计数器PC的值;LDAR=1时,BUSMUX输出B[7..0]总线数据。
LDPC(键7):
程序计数器PC预置控制端,当LDPC=1时,将B[7..0]总线数据装入程序计数器PC;当LDPC=0时,程序计数器PC处于计数自动工作状态,对T4进行计数;T4(键8):
程序计数器PC的计数时钟CLK,键8按动两次产生一个计数脉冲。
2.通过B[7..0]设置程序计数器的预加载数据。
当LDPC=0时,观察程序计数器自动加1的功能;当LDPC=1时,观察程序计数器加载输出情况,示例操作:
(1)所有键置0,键2/1输入A5;按键5àPC计数器清0(0à1à0);
(2)连续按动键8,可以从数码8/7上看到AR的输出,即PC值;
(3)按键6à’1’,选通直接输出总线上的数据A5作为PC值,按键8,产生一个脉冲上升沿,即可看到AR(显示在数码8/7)的输出为A5;
(4)使键6=0,仍选通PC计数器输出,这时键2/1输入86,按键7产生一个上升脉冲(0à1à0),即用LDPC将86加载进PC计数器;
(5)连续按动键8,可以发现AR的输出在86上累加输出:
86、87、88等。
(四)、实验结果
波形图如下图所示
图4-2-3
(五)、心得体会
实验5总线控制实验
(一)、实验目的
1.理解总线的概念及特性。
2.掌握总线传输控制特性。
(二)、实验原理
1.总线的基本概念
总线是多个系统部件之间进行数据传输的公共通路,是构成计算机系统的骨架。
借助总线连接,计算机在系统各部件之间实现传送地址、数据和控制信息的操作。
所谓总线就是指能为多个功能部件服务的一组公用信息线。
数据输入开关
地址寄存器
AR
存储器
RAM
数码管
LED
寄存器
R0
SW-B
LDAR
CS
W/R
LED-B
W/R
R0-B
LDR0
总线
图5-1总线实验传输框图
2.实验原理
实验所用总线实验传输框图如图4-1所示。
它将几种不同的设备挂在总线上,有存储器、输入设备、输出设备、寄存器。
这些设备在传统的系统中需要有三态输出控制,然而在FPGA的内部没有三态输出控制结构,因此必须采用总线输出多路开关结构加以控制。
按照传输要求恰当有序地控制它们,就可以实现总线信息传输。
(三)、实验内容
1.实验要求
根据挂在总线上的几个基本部件,设计一个简单的流程。
(1)输入设备将数据打入寄存器R0。
(2)输入设备将另一个数据打入地址寄存器AR。
(3)将寄存器R0中的数据写到当前地址的存储器中。
(4)将当前地址的存储器中的数用数码管显示。
2.实验步骤
(1)实验电路如图5-3所示。
写使能WE=1允许写,=0禁止写,允许读;inclock为数据DATA锁存时钟。
具体操作可参考图5-2。
图5-2总线数据传输练习操作步骤
图5-3总线控制实验电路图
(2)、工程文件是BUS-4.bdf,下载BUS-4.sof到实验台的FPGA中;
(3)、实验内容1,根据图5-2完成实验操作:
选择实验模式“0”;再按一次右侧的复位键(用一接线将实验板上键9的输入端插针与适配板上FPGA的第P196针相连,以便能用键9控制OUT锁存器的时钟;):
初始状态;1、键4、键3控制设备选择端:
sel[1..0]=00(键4/键3=00,);2、此时由键2/键1输入的数据(26H,显示于数码管2/1)直接进入BUS(数码管8/7显示),键5、6、7为低电平;3、键8=1(允许RAM写入)完成图5-2所示的操作:
4、键5发正脉冲(0-1-0),将数据打入寄存器R0;5、键2/键1再输入数据(如37H);6、键6发正脉冲(0-1-0),将数据打入地址寄存器AR;7、键2/键1再输入数据(如48H);8、键7发正脉冲(0-1-0),将数据写入RAM(此时必须键8输出‘1’,注意此时进入RAM的数据48H是放在地址37H单元的);9、键2/键1再输入数据(如59H);10、键9发正脉冲(0-1-0),将数据写入寄存器OUT(数码管6/5将显示此数);11、键4、键3分别选择sel[1..0]=00、01、10、11,从数码管8/7上观察被写入的各寄存器中的数据。
(4)、实验内容2:
先将数据28H写入RAM的地址(4AH),再将数据1BH送进R0,最后将刚才写入RAM中地址(4AH)的数据读出送到OUT口。
依据总线电路图5-3,操作如下:
1、用一接线将实验板上键9的输入端插针与适配板上FPGA的第P196针相连,以便能用键9控制OUT锁存器的时钟;键3、4、5、6、7、8都为低电平,使键4/键3=00,即总线多路选择器sel[1..0]=00,选择由键