计算机体系结构实验指导书.docx
《计算机体系结构实验指导书.docx》由会员分享,可在线阅读,更多相关《计算机体系结构实验指导书.docx(16页珍藏版)》请在冰点文库上搜索。
计算机体系结构实验指导书
《计算机体系结构》
实验指导书
唐山学院计算科学与技术实验教学中心
2011年12月
前言:
十六位机(FPGA)扩展实验板
通过选配的十六位机(FPGA)扩展板,就可以在COP2000计算机组成原理实验仪上做十六位、三十二位模型机的实验。
FPGA扩展板上有:
50万门大规模FPGA芯片,学生将设计好的电路下载到芯片上,来完成模型机的功能。
可以根据难易程度,可以先设计8位,再到16位,再到32位逐步完成,灵活多变,开放性好。
学生在设计过程中,能充分理解模型机中各部件,各电路的实现方法,强化学习效果。
64Kx16位存储器,能保存大容量的程序。
12位八段数码管,用于显示模型机内部的寄存器、总线值,学生在设计时,可将需要观察的内部寄存器、总线等值接到这些八段管上,直观地观察模型机运行时内部状态变化。
16位发光管,用于显示模型机内部的状态,例如进位标志、零标志、中断申请标志等等。
四十路开关,用于输入外部信号,例如在做单步实验时,这些开关可用来输入地址总线值、数据总线值、控制信号等。
在COP2000的主界面上,按“打开FPGA扩展板窗口”按钮,打开FPGA扩展板的界面,此窗口有两个页面,“结构图”页面和“存储器”页面。
在“结构图”页面上,显示出与实际FPGA扩展板相同的器件及各器件与FPGAXC3S500E相连接的管脚号,在实验时,只要将想观察的值从相应的管脚输出,就会在八段数码管或发光二极管上显示出来,注意用八段数码管观察值时,只需直接在管脚上输出数据即可,无需另加译码逻辑电路将数据值译成八段码格式。
需要读入键盘值时,就直接从该键盘相连的管脚读入。
RAM与XC3S500E相连的地址线数据线及读写控制线所对应的管脚也显示在图上,当有存储器读写操作时,各信号所对应的值会在图上显示。
“CLOCK”“INT”状态灯显示单脉冲信号和中断申请信号的状态,在做模型机总体实验时,学生可以在COP2000的主板上按下单脉冲或中断申请按键,键的状态会在此显示。
“时钟选择”用于选择总体实验时,模型机的时钟是单脉冲还时连续的高速时钟脉冲。
“结构图”页面内各器件接到XC3S500E芯片的管脚如下表
拨码开关
K0.0
P174
K1.0
P142
K2.0
P51
K3.0
P72
K4.0
P54
K0.1
P204
K1.1
P136
K2.1
P50
K3.1
P71
K4.1
P47
K0.2
P194
K1.2
P130
K2.2
P49
K3.2
P69
K4.2
P43
K0.3
P184
K1.3
P124
K2.3
P48
K3.3
P68
K4.3
P32
K0.4
P175
K1.4
P118
K2.4
P78
K3.4
P65
K4.4
P26
K0.5
P169
K1.5
P110
K2.5
P80
K3.5
P64
K4.5
P20
K0.6
P154
K1.6
P101
K2.6
P87
K3.6
P58
K4.6
P14
K0.7
P148
K1.7
P97
K2.7
P91
K3.7
P57
K4.7
P6
数码管
S0.0
P4
S1.0
P18
S2.0
P31
S3.0
P42
S4.0
P74
S5.0
P126
S0.1
P5
S1.1
P19
S2.1
P33
S3.1
P45
S4.1
P75
S5.1
P127
S0.2
P8
S1.2
P22
S2.2
P34
S3.2
P55
S4.2
P89
S5.2
P129
S0.3
P9
S1.3
P23
S2.3
P35
S3.3
P56
S4.3
P90
S5.3
P180
S0.4
P11
S1.4
P24
S2.4
P36
S3.4
P60
S4.4
P93
S5.4
P181
S0.5
P12
S1.5
P25
S2.5
P39
S3.5
P61
S4.5
P94
S5.5
P185
S0.6
P15
S1.6
P28
S2.6
P40
S3.6
P62
S4.6
P96
S5.6
P186
S0.7
P16
S1.7
P29
S2.7
P41
S3.7
P63
S4.7
P112
S5.7
P102
发光管、系统时钟、中断输入
A0
P192
B0
P100
CLK
P183
A1
P193
B1
P99
INT
P108
A2
P196
B2
P98
A3
P197
B3
P83
A4
P199
B4
P82
A5
P200
B5
P187
A6
P202
B6
P189
A7
P203
B7
P190
RAM存储器
A0
P179
A8
P146
D0
P167
D8
P120
CS
P168
A1
P178
A9
P113
D1
P165
D9
P122
RD
P139
A2
P177
A10
P115
D2
P164
D10
P123
WR
P152
A3
P172
A11
P116
D3
P163
D11
P128
BH
P138
A4
P171
A12
P119
D4
P162
D12
P132
BL
P137
A5
P151
A13
P140
D5
P161
D13
P133
A6
P150
A14
P144
D6
P160
D14
P134
A7
P147
A15
P145
D7
P153
D15
P135
上表中,存储器控制线的CS表示片选信号,WR为写信号,RD为读信号,BH为数据高八位选择信号,BL为数据低八位选择信号。
注意E18、E19两个脚同时还接到到A0、A1两个发光二极管上,当这两个扩展IO脚状态有所变化时,会在发光二极管上显示出来。
每个器件的名称都可以修改,以适合于不同的应用。
单击名称,系统就会弹出改变名称的对话框,让你输入想要定义的名称。
关于键盘,即可以定义键盘组(8个键)的名称,也可定义单个键的名称。
这些名称可以保存在文件中,下次实验时无需重新定义,直接从相应文件中读入即可。
实验一RISC技术的模型计算机设计实验
实验要求:
用COP2000的扩展实验板上,用VHDL语言编写程序,设计一个RISC模型机,下载到XC3S500E芯片中,用VHDL内置程序(rom.vhd)验证模型机
实验目的:
了解RISC模型机原理、设计方法。
实验说明:
在此设计一个只有五条指令的RISC模型机。
每条指令三个时钟:
T0T1T2
取指指令译码/取操作数运算/写结果
共五条指令:
MOVR0,#12h01dddddddddddd为常量,高二位补"00"
JMPkk10kkkkkkkkkkkk为地址,高二位补"00"
MOVRd,Rs1100ddssdd为目标地址
ADDRd,Rs1101ddssss为源地址
SUBRd,Rs1110ddss
其它指令码无效1111xxxx
作为NOP执行00xxxxxx
微控制位(共4位):
WB写控制位
00无写操作
01写常量
10写源操作数
11写运算器结果
ALU运算器控制位(1位)
0ALU=data_d+data_s
1ALU=data_d-data_s
PCPC功能控制位(1平)
0PC+1
1将data_c写入PC(JMP指令)
模型机FPGAVHDL源程序目录:
XC3S500E\RISC,演示程序(XC3S500E\RISC\ROM.VHD)如下:
ROMDATA<="01000001"WHENROMADDR="00000000"ELSE--MOVR0,#1
"11010100"WHENROMADDR="00000001"ELSE--ADDR1,R0
"11011000"WHENROMADDR="00000010"ELSE--ADDR2,R0
"11101100"WHENROMADDR="00000011"ELSE--SUBR3,R0
"10000001"WHENROMADDR="00000100"ELSE--JMP01
"00000000";
仿真结果:
每三个时钟执行一条指令pT=0,1,2
实验步骤:
1.打开Xilinx12.3开发环境,选择“OpenProject...”打开“XC3S500E\RISC”下的RISC项目。
2.充分理解risc.vhd(以及本模型机中所用到相应的模块程序,例如alu.vhd、clkctrl.vhd、regs.vhd、ctrl.vhd等)。
了解模型机的实现原理。
3.对RISC项目进行综合/编译,生成RISC.BIT文件。
4.打开伟福的COP2000开发环境,打开FPGA扩展板的界面。
5.按“打开模式”键,打开“XC3S500E\RISC\”目录下的RISC.MOD文件,界面上“时钟选择”应设成“单脉冲”,这样CLK信号就由COP2000实验仪主板上的“CLOCK”提供。
6.将实验仪连接到计算机串行口上,并按“通信设置”键,选择正确的串行口。
7.按“FPGA编程”键,将“XC3S500E\RISC\”目录下的RISC.BIT文件下载到XC3S500E芯片上。
8.将RST(K4的第7位)置为0(向下为0,向上为1),复位模型机。
再将RST置1,模型机正常工作。
9.按COP2000实验仪上的CLOCK按钮以单时钟方式执行程序,观察数码管的显示。
注:
每按三次执行完一条指令
实验二总线控制实验
实验要求:
用COP2000的扩展实验板上的开关做为输入、八段数码管做为输出,用VHDL语言编写程序,下载到XC3S500EFPGA中,实现十六位模型机的总线控制功能。
实验目的:
了解十六位模型机中指令计数器(PC)的工作原理和实现方法。
学习用VHDL语言描述硬件逻辑。
学习使用EDA开发环境。
实验说明:
以下是总线控制实验的VHDL程序:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYDBUSIS
PORT(
K0:
INSTD_LOGIC_VECTOR(7DOWNTO0);--K0
K1:
INSTD_LOGIC_VECTOR(7DOWNTO0);--K1
K2:
INSTD_LOGIC_VECTOR(7DOWNTO0);--K2
X0:
INSTD_LOGIC;--K4.0
X1:
INSTD_LOGIC;--K4.1
D:
OUTSTD_LOGIC_VECTOR(7DOWNTO0);--S1,S0
hD:
OUTSTD_LOGIC--L0
);
ENDDBUS;
ARCHITECTUREbehvOFDBUSIS
BEGIN
D<=K0WHENX1='0'ANDX0='0'ELSE
K1WHENX1='0'ANDX0='1'ELSE
K2WHENX1='1'ANDX0='0'ELSE
"ZZZZZZZZ";
hD<='0'WHENX1='1'ANDX0='1'ELSE
'1';
ENDbehv;
在上面程序中,K0、K1、K2为八位输入数据,D为八位输出数据,D的值由X1、X0两个开关决定,用八段数码管S0(2位)显示其值。
hD用来显示总线是否与K0/K1/K2导通,当X1:
X0=0,1,2时,D分别由K0,K1,K2输出,X1:
X0=3时,D呈高阻态。
X1
X0
hD
D
0
0
1
K0
0
1
1
K1
1
0
1
K2
1
1
0
Z(高阻)
实验步骤:
1.打开Xilinx的EDA开发环境,选择“OpenProject...”打开“\COP2000\XC3S500E\”下的PC项目(Xilinx的EDA开发环境的使用可参见第十一章)。
2.充分理解DBUS.VHD,了解模型机中总线控制的实现原理。
3.对DBUS项目进行综合/编译,生成DBUS.BIT文件。
4.打开伟福的COP2000开发环境,打开FPGA扩展板的界面。
5.按“打开模式”键,打开“XC3S500E\DBUS\”目录下的DBUS.MOD文件。
界面上“时钟选择”应设成“单脉冲”,这样CLK信号就由COP2000实验仪主板上的“CLOCK”提供。
6.按“通信设置”键,将实验仪连接到计算机串行口上。
7.按“FPGA编程”键,将“XC3S500E\DBUS\”目录下的DBUS.BIT文件下载到XC3S500E芯片上,
8.拨动K4的第7位到‘1’的位置,输出“复位”信号,使电路处于复位状态。
观察八段管D(总线输出显示)是否清零;然后拨动K4的第7位到‘0’的位置。
9.分别将K0、K1、K2值设置为55H、5AH、A5H,然后拨动“X1、X0”,使X1:
X0分别为00、01、10、11四种状态,分别观察八段管D(总线输出显示)的值(分别为:
55H、55H、5AH、00H)。
实验三、中断控制实验
实验要求:
用COP2000的扩展实验板上的开关做为输入、八段数码管做为输出,用VHDL语言编写程序,下载到XC3S500EFPGA中,实现十六位模型机中断控制功能。
实验目的:
了解十六位模型机中中断控制的工作原理和实现方法。
学习用VHDL语言描述硬件逻辑。
学习使用EDA开发环境。
实验说明:
下为十六位模型机串实现中断控制的VHDL语言:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYINTIS
PORT(
IREN:
INSTD_LOGIC;--K4.0
EINT:
INSTD_LOGIC;--K4.1
ICEN:
OUTSTD_LOGIC;--A2
ACK:
OUTSTD_LOGIC;--A1
REQ:
OUTSTD_LOGIC;--A0
RST:
INSTD_LOGIC;--K4.7
I_REQ:
INSTD_LOGIC;--INT
CLK:
INSTD_LOGIC--CLOCK
);
ENDINT;
ARCHITECTUREbehvOFINTIS
SIGNALR_REQ,R_ACK:
STD_LOGIC;
SIGNALFATCH_INT:
STD_LOGIC;
BEGIN
REQ<=R_REQ;
ACK<=R_ACK;
ICEN<=FATCH_INT;
PROCESS(I_REQ,RST,EINT)
BEGIN
IF(EINT='0')OR(RST='1')THEN
R_REQ<='0';
ELSIFI_REQ'EVENTANDI_REQ='1'THEN
R_REQ<='1';
ENDIF;
ENDPROCESS;
PROCESS(CLK,RST,EINT,IREN,R_REQ,R_ACK,FATCH_INT)
BEGIN
IF(IREN='0')AND(R_REQ='1')AND(R_ACK='0')THEN
FATCH_INT<='0';
ELSE
FATCH_INT<='1';
ENDIF;
IF(EINT='0')OR(RST='1')THEN
R_ACK<='0';
ELSIFCLK'EVENTANDCLK='1'THEN
IFFATCH_INT='0'THEN
R_ACK<=R_REQ;
ENDIF;
ENDIF;
ENDPROCESS;
ENDbehv;
在上面程序中,IREN接K4的第0位,表示程序执行过程中的取指令操作,中断请求信号只有在此信号有效时(取指令时)才会被响应。
IENT接K4的第1位,用于在中断返回时,清除中断请求寄存器和中断响应寄存器。
ICEN为输出信号接发光二极管A2,此信号用于控制读中断指令。
ACK接发光二极管A1,显示中断响应信号。
REQ接发光二极管A0,显示中断请求信号。
RST为复位信号,接在开关组K4的第7个开关上,I_REQ为中断申请输入信号,由COP2000实验仪主板上的“INT”按键输出到FPGA扩展板上,CLK为时钟脉冲,由COP2000实验仪主机上的“CLOCK”按键提供。
实验步骤:
1.打开Xilinx的EDA开发环境,选择“OpenProject...”打开“\COP2000\XC3S500E\”下的INT项目(Xilinx的EDA开发环境的使用可参见第十一章)。
2.充分理解INT.VHD。
了解寄存器的实现原理。
3.对REG项目进行综合/编译,生成INT.BIT文件。
4.打开伟福的COP2000开发环境,打开FPGA扩展板的界面。
5.按“打开模式”键,打开“\COP2000\XC3S500E\INT\”目录下的INT.MOD文件。
界面上“时钟选择”应设成“单脉冲”,这样CLK信号就由COP2000实验仪主板上的“CLOCK”提供。
6.按“通信设置”键,将实验仪连接到计算机串行口上。
7.按“FPGA编程”键,将“\COP2000\XC3S500E\INT\”目录下的INT.BIT文件下载到XC3S500E芯片上,
8.拨动K4的第7位到“1”的位置,输出“复位”信号,将K4的第0、1位拨到‘1’的位置,使IREN和EINT都处于无效状态,将内部的中断请求寄存器,中断响应寄存器都清零,使其能响应中断,此时A2发光二极管亮、A1发光二极管灭、A0发光二极管灭。
9.中断申请:
将K4的7位回到时“0”位,使电路正常工作。
按下COP2000实验仪主板上的“INT”按键申请中断,FPGA扩展板上的A0发光二极管变亮,表示有中断申请。
10.中断响应:
将K4的第0位拨成‘0’,也就使IREN有效,表示取指令操作,扩展板上的A2发光二极管变灭,表示已经响应中断。
11.中断处理:
按动COP2000实验仪上的“CLOCK”按钮,产生一个时钟信号,扩展板上A1发光二极管变亮,表示取指操作取出中断处理指令来执行。
12.中断退出:
将K4的第0位拨成‘1’,IREN置成无效,将K4的第1位拨成‘0’,将EINT置成有效,发光二极管A2变亮,A1、A0变灭,中断申请寄存器和中断响应寄存器清零,表示可以接受下一次中断申请。
实验四基于重叠技术的模型计算机设计实验
实验要求:
用COP2000的扩展实验板上,用VHDL语言编写程序,设计一个基于重叠技术的模型机,下载到XC3S500E芯片中,在cop2000集成调试环境中自行编写汇编程序验证模型机
实验目的:
了解无流水无cache模型机原理、设计方法。
实验说明:
模型机FPGAVHDL源程序目录:
XC3S500E\COP2000_CD
实验步骤:
注:
以下演示步骤中模型机测试程序为已编写好的test.asm,实验过程中此程序建议自行编写。
1.打开Xilinx12.3开发环境,选择“OpenProject...”打开“XC3S500E\COP2000_CD”下的cop2000项目。
2.充分理解cop2000_cd.vhd(由INST2.INS在COP2000上位机软件自动生成)。
了解基于重叠技术的模型机的实现原理。
3.对cop2000项目进行综合/编译,生成cop2000.BIT文件。
4.打开伟福的COP2000开发环境(每次自动调入INST.INS作为默认的指令系统,本试验用到的指令系统是INST2.INS,因此无需手工调入),此时暂不打开FPGA扩展板的界面,在开发环境的主界面中,打开“XC3S500E\COP2000_CD\”目录下“TEST_INT.ASM”程序,编译后切换到主界面中的EM窗口,可以查看到相应的机器码。
5.打开FPGA扩展板的界面。
切换到“存储器”页面,可以看到EM的机器码,也就TEST程序已经被自动复制到存储器窗口中,再将窗口切换到FPGA扩展板的“结构图”页面。
6.按“打开模式”键,打开“XC3S500E\COP2000_CD\”目录下的COP2000_CD.MOD文件。
界面上“时钟选择”应设成“单脉冲”,这样CLK信号就由COP2000实验仪主板上的“CLOCK”提供。
7.将实验仪连接到计算机串行口上,并按“通信设置”键,选择正确的串行口。
8.按“FPGA编程”键,将“XC3S500E\COP2000_CD\”目录下的COP2000.BIT文件下载到XC3S500E芯片上。
9.再次切换到“存储器”页面,按“下载存储器”键,将TEST程序的机器码下载到FPGA扩展板上的存储器中。
10.拨动RST(K4的第7位)到“1”的位置,输出“复位”信号,复位模型机,再将RST拨到‘0’的位置,使得十六位模型机正常工作。
11.按动COP2000实验仪上的“CLOCK”按键,产生多个时钟信号,观察存储器的读写是否符合设计要求,数据线、地址线、控制线是否正确。
12.拨动RST(K4的第7位)到“1”的位置,输出“复位”信号,复位模型机,再将RST拨到‘0’的位置,使得十六位模型机正常工作。
在“结构图”页面上将“时钟选择”设成“连续脉冲”方式。
这样模型机的时钟为高速的连续脉冲,模型机运行于全速状态。
13.在模型机全速运行时,按动COP2000实验仪上的“INT”按键,产生中断请示信号,让模型机中断,在中断处理程序中,我们将累加器A带进位右移一位。
中断返回后输出累加器中的内容。
重复按“INT”按键,产生多个中断请示信号,让模型机多次中断,累加器多次移位输出,观察模型机输出是否满足设计要求。
14.改变主界面上程序,以完成不同的功能,将程序编译,将编译的机器码复制到“扩展板”界面的“存储器”页面内。
将模型机置于复位状态,并用“下载存储器”功能下载到扩展板的存储器中,退出模型机的复位状态,使其正常工作,检查程序运行符合满足程序要求。
15.由于此实验设计的模型机基于重叠技术,为了验证模型机在指令执行和取下一条指令在同一时钟完成,我们将单步运行模型机观察模型机在每一个时钟的运行情况。
回到FP