计组.docx
《计组.docx》由会员分享,可在线阅读,更多相关《计组.docx(206页珍藏版)》请在冰豆网上搜索。
计组
STARCOP2018
计算机组成原理与系统结构
使用手册
上海星研电子科技有限公司
目录
0
第一章运算器3
1.1基本运算器实验3
第二章存贮系统8
2.1静态随机存取存贮器实验8
第三章控制器12
3.1时序发生器设计实验12
3.2微程序控制器实验14
第四章系统总线与总线接口28
4.1系统总线和具有基本输入输出功能的总线接口实验28
4.2具有中断控制功能的总线接口实验32
4.3具有DMA控制功能的总线接口实验34
第五章模型计算机36
5.1CPU与简单模型机设计实验36
5.2复杂模型机设计实验49
第六章输入输出系统69
6.1典型I/O接口8253扩展设计实验69
6.2带中断处理能力的模型机设计实验74
6.3带DMA控制功能的模型机设计实验85
第七章精简指令系统计算机91
7.1计算机的指令系统91
7.2基于RISC技术的模型计算机设计实验92
7.3完整指令集的RISC模型计算机设计实验98
第八章重叠处理机110
8.1重叠的基本原理和思想110
8.1.1重叠的基本思想及实现110
8.1.2相关处理111
8.2基于重叠技术的模型计算机设计实验112
第九章流水线处理机121
9.1流水线的原理及基本思想121
9.1.1流水的基本概念121
9.1.2流水的特点122
9.1.3相关处理122
9.2基于流水技术的模型计算机设计实验123
附件1键、指示灯说明131
1指示灯131
2按键132
附件2时序单元134
附件3CPLD模块135
1运算器
运算器也称作算术逻辑部件(ALU),是CPU中最主要的部件,用于处理各种算术、逻辑、移位运算。
1.1基本运算器实验
一、实验目的
了解运算器的组成结构;掌握运算器的工作原理。
二、实验设备
STARCOP2018实验仪一套、PC机一台。
三、实验原理
运算器原理图
运算器内部含有三个独立运算部件,分别为算术、逻辑和移位运算部件,要处理的数据存于暂存器A和暂存器B,三个部件同时接受来自A和B的数据(有些处理器体系结构把移位运算器放于算术和逻辑运算部件之前,如ARM),控制信号S3..S0、CN_I决定哪个部件工作、对操作数进行何种运算,S3..S0通过多路选择开关选择这个部件的结果作为ALU的输出;如果运算影响进位标志FC、零标志FZ、正负标志位FS,在T3状态的下降沿,结果分别锁存到FC、FZ、FS;I是中断允许标志位。
ALU中所有模块集成在一片CPLD中。
逻辑运算部件由逻辑门构成,较为简单,后一节有专门的算术运算部件设计实验,在此对这两个部件不再赘述。
移位运算采用的是8×8位桶形移位器,这样,可以使所有的移位操作都可以一次完成。
下图是一个4×4位桶形移位器
所有的输入通过交叉开关与所有的输出端相连。
如右移2位,第2条对角线(右移2)上的2个交叉开关接通,即第3位(in[3])右移至第1位(out[1]),第2位(in[2])移至第0位(out[0])。
又如右环移1位,第3条对角线(右移1)和第7条对角线(左3,3=4-1)同时有效,即可方便地实现右环移。
逻辑左移/右移只须把没连接的输出位同时充以“0”即可实现;算术右移也只须把没连接的输出位用符号位填充即可。
运算器部件由一片CPLD实现。
ALU的输出通过三态门连到CPU内部数据总线(iDBus)上,另外还有指示灯标明进位标志FC、零标志FZ、正负标志FS。
请注意:
图中T1、T2、T3、nRST已与CON单元相连,其它信号都来自于ALU单元的排针上。
实验仪所有单元的T1、T2、T3、nRST已与控制台(CON)单元的T1、T2、T3、nRst连接,nRst提供复位信号;T1、T2、T3是一个微指令周期的三个节拍,高电平有效,瞬间只有一个信号有效,初始状态T1、T2、T3都是低电平。
wA(允许写暂存器A)、wB(允许写暂存器B)、rALU(允许ALU结果输出到内部数据总线(iDBus)上),都是低电平有效。
暂存器A和暂存器B的数据能在LED灯上实时显示,原理如下图:
进位标志FC、零标志FZ、正负标志FS、内部数据总线iD7…iD0的显示原理与此类似;B、寄存器R0-3、堆栈寄存器SP、标志寄存器PSW(含FC、FZ、FS、I)共用R_0..R_7八个发光二极管,通过Select按键选择,按键上方的发光二极管指示R_0..R_7显示那个寄存器的值。
ALU功能表
运算类型
S3S2S1S0
CN_I
功能
逻辑运算
0000
0
F=A(直通)
0000
1
F=B(直通)
0001
X
F=A+B(或)
(FZ)
0010
X
F=A*B(与)
(FZ)
0011
X
F=A^B(异或)
(FZ)
0100
X
F=/A(取反)
(FZ)
移位运算
0101
0
F=A不带进位循环右移B(取低3位)位
(FZ)
1
F=A算术右移一位
(FZ)
0110
0
F=A逻辑右移一位
(FZ)
1
F=A带进位循环右移一位
(FC,FZ)
0111
0
F=A逻辑左移一位
(FZ)
1
F=A带进位循环左移一位
(FC,FZ)
算术运算
1000
0
F=A+B
(FC,FZ,FS)
1
F=A+B+FC
(FC,FZ,FS)
1001
0
F=A-B
(FC,FZ,FS)
1
F=A-B-FC
(FC,FZ,FS)
1010
0
F=A+1
(FZ)
1
F=NEGA(取补)
(FZ)
1011
X
F=A-1
(FZ)
其它
1100
X
置FC=CN_I
(FC)
1101
X
置I=CN_I
(I)
1110
(保留)
1111
(保留)
S3、S2、S1、S0、CN_I为控制信号,FC-进位标志,FZ-零标志,FS-正负标志,I-中断允许标志;表中功能栏内的FC、FZ、FS表示当前运算会影响到该标志。
*表中‘X’表示任意值,下同
四、实验步骤
1、连线说明:
ALU单元:
S0..S3(JP18)
——
开关区单元:
K20..K23(JP89)
ALU单元:
wA、wB、rALU、CN_I(JP19)
——
开关区单元:
K15..K12(JP92)
ALU单元:
ALU_D0..ALU_D7(JP25)
——
扩展区单元:
JP62
ALU单元:
IN0..IN7(JP22)
——
开关区单元:
K0..K7(JP97)
2、打开实验仪电源,按CON单元的nRST按键,将ALU的A、B、FC、FZ、FS、I清零;如果EXEC键上方指示灯不亮,请按一次EXEC键,点亮指示灯,表示实验仪在运行状态。
3、给暂存器A赋初值
(1)拨动开关区单元的K7..K0开关,形成二进制数01011000(或其它值);指示灯亮,表示该位是‘1’,灭为‘0’。
(2)拨动开关区单元K15(wA)、K14(wB)、K13(rALU)、K12(CN_I)开关,赋wA=0(允许写A)、wB=1(禁止写B)、rALU=1(不允许ALU输出)、CN_I=0,按CON单元的STEP按键一次,产生一个T1的下降沿,将二进制数01011000写入暂存器A中,ALU单元的A_7…A_0LED上显示A中的值
4、给暂存器B赋初值
(1)拨动开关区单元的K7..K0开关,形成二进制数10101011(或其它值)。
(2)赋wA=1(禁止写A)、wB=0(允许写B)、rALU=1(不允许ALU输出)、CN_I=0,按CON单元的STEP按键一次,产生一个T2的下降沿,将二进制数10101011写入暂存器B中,ALU单元的R_7…R_0LED上显示B中的值
5、赋wA=1(禁止写A)、wB=1(禁止写B)、rALU(K10)=0,按uSTEP键,进入T3节拍,
节拍
DS169
DS168
T1、T2、T3无效
(T1=0、T2=0、T3=0)
0
0
T1
(T1=1、T2=0、T3=0)
0
1
T2
(T1=0、T2=1、T3=0)
1
0
T3
(T1=0、T2=0、T3=1)
1
1
说明:
1-亮;0-灭
当rALU(K13)=0,如果S3S2S1S0的值是0000时,T2、T3节拍时,允许ALU结果输出;S3S2S1S0的值是其它数值,T3节拍时,允许ALU结果输出,显示于扩展区的二位数码管、DS94..DS101的LED上。
6、根据后边的“运算结果表”,改变K20(S0)、K21(S1)、K22(S2)、K23(S3)、K12(CN_I)的值,观察并记录运算器的输出。
例如:
S0=0,S1=0,S2=0,S3=0,ALU的D7_D0=58H;FC、FZ、FS、I不变。
注意:
只有按CON单元的STEP按键一次,产生一个T3的下降沿,ALU才将标志位FC、FZ、FS、I写入标志寄存器PSW中,才能在ALU单元的FZ、FC、FS、I指示灯上看到结果。
如果实验仪、PC联机操作,则可通过软件中的数据通路图来观测实验结果,方法是:
打开软件,在星研软件的工具条中选择“运算器实验”,打开运算器实验的数据通路图。
进行上面的手动操作,点击工具条上单节拍或单周期命令图标,数据通路图会反映当前运算器所做的操作。
数据通路图
重复上述操作,并完成下表。
然后改变A、B、CN_I的值,验证FC、FZ、FS、EI的锁存功能。
运算结果表
运算类型
A
B
S3S2S1S0
CN_I
结果
逻辑运算
58
AB
0000
0
ALU=(58)FC=()FZ=()FS=()
58
AB
0000
1
ALU=(AB)FC=()FZ=()FS=()
58
AB
0001
X
ALU=(FB)FC=()FZ=()FS=()
0010
X
ALU=()FC=()FZ=()FS=()
0011
X
ALU=()FC=()FZ=()FS=()
0100
X
ALU=()FC=()FZ=()FS=()
移位运算
0101
0
ALU=()FC=()FZ=()FS=()
0101
1
ALU=()FC=()FZ=()FS=()
0110
0
ALU=()FC=()FZ=()FS=()
0110(FC=0)
1
ALU=()FC=()FZ=()FS=()
0110(FC=1)
ALU=()FC=()FZ=()FS=()
0111
0
ALU=()FC=()FZ=()FS=()
0111(FC=0)
1
ALU=()FC=()FZ=()FS=()
0111(FC=1)
ALU=()FC=()FZ=()FS=()
算术运算
1000
0
ALU=()FC=()FZ=()FS=()
1000(FC=0)
1
ALU=()FC=()FZ=()FS=()
1000(FC=1)
ALU=()FC=()FZ=()FS=()
1001
0
ALU=()FC=()FZ=()FS=()
1001(FC=0)
1
ALU=()FC=()FZ=()FS=()
1001(FC=1)
ALU=()FC=()FZ=()FS=()
1010
0
ALU=()FC=()FZ=()FS=()
1
ALU=()FC=()FZ=()FS=()
1011
X
ALU=()FC=()FZ=()FS=()
其它
1100
X
FC=()
1101
X
EI=()
2存贮系统
存贮器是计算机各种信息的存贮、交换中心。
在程序执行过程中,计算机从存贮器中顺序读取要执行的指令;运算器通过读存贮器指令,从存贮器读取操作数,运算结果又通过写入指令,写入存贮器中。
指令、数据以同等地位存放在存贮器内,并可按地址访问;输入输出设备通过CPU与存贮器交换数据,这是冯·诺依曼型计算机的基本特征。
2.1静态随机存取存贮器实验
一、实验目的
了解静态随机存取存贮器的工作原理;掌握读写存贮器的方法。
二、实验设备
STARCOP2018实验仪一套、PC机一台。
三、实验原理
实验仪的存贮器MEM单元选用一片静态存贮器6116(2K×8bit)存放程序和数据。
CE:
片选信号线,低电平有效,实验仪已将该管脚接地。
OE:
读信号线,低电平有效。
WE:
写信号线,低电平有效。
A0..A10:
地址信号线。
I/O0..I/O7:
数据信号线。
CE
OE
WE
功能
1
×
×
不选中6116
0
0
1
读
0
1
0
写
0
0
0
不确定
SRAM6116功能表
存贮器挂在CPU的总线上,CPU通过读写控制逻辑,控制MEM的读写。
实验中的读写控制逻辑如下图:
读写控制逻辑
M_nI/O用来选择对MEM还是I/O读写,M_nI/O=1,选择存贮器MEM;M_nI/O=0,选择I/O设备。
nRD=0为读操作;nWR=0为写操作。
对MEM、I/O的写脉冲宽度与T2一致;读脉冲宽度与T2+T3一致,T2、T3由CON单元提供。
存贮器实验原理图
存贮器数据信号线与数据总线DBus相连;地址信号线与地址总线ABus相连,6116的高三位地址A10..A8接地,所以其实际容量为256字节。
数据总线DBus、地址总线ABus、控制总线CBus与扩展区单元相连,扩展区单元的数码管、发光二极管上显示对应的数据。
IN单元通过一片74HC245(三态门),连接到内部数据总线iDBus上,分时提供地址、数据。
MAR由锁存器(74HC574,锁存写入的地址数据)、三态门(74HC245、控制锁存器中的地址数据是否输出到地址总线上)、8个发光二极管(显示锁存器中的地址数据)组成。
T2、T3由CON单元提供,按一次CON单元的uSTEP键,时序单元发出T1信号;按一次uSTEP键,时序单元发出T2信号;按一次uSTEP键,时序单元发出T3信号;再按一次uSTEP键,时序单元又发出T1信号,……
按一次STEP键,相当于按了三次uSTEP键,依次发出T1、T2、T3信号。
其余信号由开关区单元的拨动开关模拟给出,其中M_nI/O应为高(即对MEM读写操作)电平有效,nRD、nWR、wMAR、nMAROE、IN单元的nCS、nRD都是低电平有效。
四、实验步骤
1、连线说明:
CBus单元:
M_nIO、nRD、nWR、nINTA(JP42)
——
开关区单元:
K15..K12(JP92)
存贮器MEM单元:
A0..A7(JP72)
——
ABus单元:
A00..A07(JP56)
存贮器MEM单元:
D0..D7(JP73)
——
DBus单元:
D0..D7(JP53)
存贮器MEM单元:
M_nRD、M_nWR(JP71)
——
CBus单元:
nM_RD、nM_WR(JP44)
MAR单元:
D0..D7(JP14)
——
iDBus单元:
iD0..iD7(JP38)
MAR单元:
wMAR、nMAROE(JP13)
——
开关区单元:
K7、K6(JP96)
IN单元:
IN0..IN7(JP101)
——
iDBus单元:
iD0..iD7(JP37)
IN单元:
nCS、nRD(JP100)
——
开关区单元:
K1、K0(JP99)
扩展区单元:
JP65
——
ABus单元:
A00..A07(JP55)
扩展区单元:
JP63
——
DBus单元:
D0..D7(JP54)
扩展区单元:
JP67
——
CBus单元:
nM_RD、nM_WR(JP50)
注意:
nINTA(K12)置“1”,使中断响应信号不干扰读写存贮器。
2、打开实验仪电源,按CON单元的nRST按键,复位
3、给6116的00H、01H、02H、03H、04H、05H地址单元写入数据11H、22H、33H、44H、55H、61H。
由前面的存贮器实验原理图中可以看出,IN单元的8个拨动开关提供数据和地址,因此先提供地址,具体操作步骤为:
(1)禁止对存贮器6116的读写(nWR=1,nRD=1);
(2)IN单元的拨动开关给出8位地址数据,IN单元的nCS=0、nRD=0,允许IN单元输出;
(3)MAR单元的nMAROE=0,允许MAR中锁存的地址数据输出到地址总线上;wMAR=0,允许写MAR,按CON单元的STEP键一次,依次发出T1、T2、T3信号,在T3的下降沿,IN单元给出的地址数据锁存到MAR中。
再写数据:
(1)禁止对存贮器6116的读写(nWR=1,nRD=1)、MAR的写(wMAR=1);
(2)IN单元的拨动开关给出8位数据,IN单元的nCS=0、nRD=0,允许IN单元输出;(3)允许对6116写(M_nIO=1,nRD=1,nWR=0),按uSTEP键三次,在T2的下降沿,数据写入6116中。
写存贮器的流程图如下(以向00地址单元写入11H为例)
写存贮器流程图
4、从6116的00H、01H、02H、03H、04H、05H地址单元读出数据,观察上述各单元中的内容是否与前面写入的一致。
与写操作类似,先给出地址,再禁止IN单元输出数据(nRD、nCS至少一个=1),最后进行读操作:
(1)使6116处于读状态(M_nIO=1,nRD=0,nWR=1),
(2)按uSTEP键三次,在T2、T3信号有效时,6116向数据总线输出数据。
读存贮器的流程如下(以从00地址单元读出11H为例):
读存储器流程图
如果实验仪、PC联机操作,则可通过软件中的数据通路图来观测实验结果,方法是:
打开软件,在星研软件的工具条中选择“存贮器实验”,打开存贮器实验的数据通路图。
数据通路图
进行上面的手动操作,点击工具条上单节拍或单周期命令图标,数据通路图会反映当前对存贮器所做的操作,借助于数据通路图,仔细分析对SRAM的读写过程。
3控制器
控制器是计算机的核心部件,计算机的所有硬件都是在控制器的控制下,完成程序规定的操作。
控制器的基本功能就是把机器指令转换为按照一定时序控制机器各部件的工作信号,使各部件产生一系列动作,完成指令所规定的任务。
本章安排了两个实验:
时序发生器设计实验和微程序控制器实验。
3.1时序发生器设计实验
一、实验目的
(1)了解时序发生器的作用
(2)熟悉QuartusII软件的使用方法;使用CPLD,设计简单的时序发生器
二、实验设备
STARCOP2018实验仪一套、PC机一台。
三、实验原理
计算机的工作是按照时序分步地执行。
这就需要能产生周期节拍、脉冲等时序信号的部件,称为时序发生器。
时序发生器
时序部件包括:
1、时钟脉冲发生器
主要由振荡电路、分频电路组成,其作用是产生一定频率的时钟脉冲,作为计算机中基准时钟信号。
2、节拍脉冲发生器
时钟脉冲经过节拍脉冲发生器,产生一序列的节拍电平和工作脉冲,节拍电平是保证计算机微操作的时序性。
一个机器周期包含多个节拍电平,一个节拍单位又包含多个工作脉冲。
3、启动停止控制电路
计算机是靠非常严格的节拍脉冲,按时间的先后次序一步一步地控制各部件工作的,所以,机器启停的标志是有无节拍脉冲,节拍脉冲必须按一定的时序启动和停止。
本实验使用Verilog或VHDL语言,设计一个时序发生器,时钟脉冲由CON单元的CLK提供,输出如下图所示的节拍信号。
CON单元提供一个复位信号nRst,nRst低电平时,T1、T2、T3输出低电平;一个启动信号nSTART,一个停止信号nSTOP,在时钟信号CLK的上升沿,检测到nSTART信号为低电平、nSTOP信号为高电平,T1、T2、T3输出环形脉冲;在T3的下降沿,如果检测到nSTOP为低,T1、T2、T3输出低电平。
时序状态图
四、实验步骤
1、参照上述实验原理,在QuartusII软件中,使用Verilog或VHDL语言,设计一个时序发生器,并编译(工程存放路径:
安装路径\COP2018\CPLD\Time\Time.qpf)。
CPLD管脚与信号对应图
括号中是信号对应的CPLD管脚号。
2、连线说明:
CPLD:
nSTART(JP13_2)、nSTOP(JP13_3)
——
开关区单元:
K1、K0(JP99)
CPLD:
T1、T2、T3已连接至CPLD的DS1、DS2、DS3指示灯,注意:
低电平点亮指示灯。
CPLD:
CLK、nRst已连接至CON单元,按nRst键,nRst输出低电平。
将开关区单元的K1(nSTART)、K0(nSTOP)置‘1’。
3、打开实验仪电源,将QuartusII编译生成的POF文件下载到CPLD中。
4、按nRst键,T1、T2、T3对应的DS1、DS2、DS3指示灯都点亮
5、将开关区单元的K1(nSTART)置‘0’,T1、T2、T3输出环形脉冲
6、将开关其单元的K0(nSTOP)置‘0’,停止T1、T2、T3时序,T1、T2、T3输出低电平。
3.2微程序控制器实验
一、实验目的
(1)掌握微程序控制器的组成原理。
(2)掌握微程序的编制、写入,观察微程序的运行过程。
二、实验设备
STARCOP2018实验仪一套、PC机一台。
三、实验原理
微程序设计思想是由剑桥大学的M.V.Wilkes教授首先提出的,为每一条机器指令编写一个微程序,每一个微程序包含一条或几条微指令,每一条微指令对应一个或几个控制各部件动作的微操作指令。
然后把这些微程序存到一个控制存贮器中,用寻找用户程序机器指令的方法寻找每个微程序中的微指令。
由于这些微指令是以二进制代码形式表示的,每位代表一个控制信号,因此,逐条执行每一条微指令,也就相应地完成了一条机器指令的全部操作;由于控制信号是以二进制代码的形式出现的,因此只要修改微指令的代码,就可改变操作内容,便于调试、修改、甚至增删机器指令,有利于计算机仿真。
微程序控制器原理框图
微程序控制器是严格按照系统时序来工作的,因而时序控制对于控制器的设计是非常重要的,从前面的实验可以很清楚地了解时序电路的工作原理,本实验所用的时序由CON单元来提供,分为三拍T1、T2、T3。
微程序控制器的组成见下图,采用四片6116或2816作为微存贮器,微命令