计算机组成原理暑假课程设计.docx
《计算机组成原理暑假课程设计.docx》由会员分享,可在线阅读,更多相关《计算机组成原理暑假课程设计.docx(48页珍藏版)》请在冰豆网上搜索。
计算机组成原理暑假课程设计
大学计算机科学与技术学院
课程设计说明书
课程:
计算机系统综合课程设计
院(部):
计算机科学与技术
专业:
计算机科学与技术
班级:
计科
学生姓名:
学号:
20151110
指导教师:
完成日期:
2018.01.19
课程设计任务书
设计题目
模型计算机的设计(八)
已知技术参数和设计要求
1、使用TEC-8实验台
2、主要模块:
FPGA、运算器、寄存器、数据通路、双端口存储器、总线缓冲、微程序控制、启停和时序模块。
3、用硬连线控制器的方法设计控制台,要求能连续地读写寄存器,连续地读写存储器,执行指令;
4、指令字长8位,高4位为操作码,固定操作码译码,低4位为寄存器寻址,完成以下指令的分析、设计,并编写测试程序;
LDRd,[RS];ST[Rd],RS;
INCRd;SUBRd,Rs
JNCADDR;JNZADDR;
MOVRd,Rs;OUTRd
STP
设计内容与步骤
1、熟悉TEC-8实验台的FPGA、运算器、寄存器、数据通路、双端口存储器、总线缓冲等电路的功能,并结合时序分析指令各控制信号
2、根据要求,设计指令系统,编写硬连线的方法设计控制器的流程图;
3、利用VHDL描述语言编写控制器程序;
4、下载测试控制器电路,判定控制信号是否正确;
5、编写测试程序,绘制表格,记录存储器初始程序及数据;
6、用实验台调试,分别用单步运行和连续运行两种方式运行测试程序,记录运行数据,并分析结果;
7、编写课程设计说明书。
设计工作计划与进度安排
1、调试工具4学时
2、设计语言VHDL6学时
3、TEC-8实验台功能模块6学时
4、控制器的硬件描述10学时
5、测试程序的设计10学时
6、课程设计说明书6学时
设计考核要求
考勤20%
课程设计说明书50%。
成果演示30%
注:
每个同学内容实现方式要有差异,不能雷同,否则记0分
指导教师(签字):
教研室主任(签字):
1、课程设计目的和任务
1.1设计任务
(1)分析计算机硬件系统的各个组成部分及其作用,设计字长为8位固定操作码的指令系统。
(2)利用VHDL硬件描述语言,进行硬连线控制器模型机的详细设计。
(3)通过QuartusII编译下载到TEC-8实验台的在系统可编程器件CPLD中。
(4)编写测试程序,在TEC-8实验台上调试运行。
1.2设计目的
(1)融会贯通计算机组成与体系结构课程各章教学内容,通过知识的综合运用,加深对CPU各模块工作原理及相互联系的认识。
(2)掌握硬连线控制器的设计方法。
(3)学习运用当代的EDA设计工具,掌握用EDA设计大规模复杂逻辑电路的方法。
(4)培养科学研究能力,取得设计和调试的实践经验。
2、模拟机实验平台分析
2.1运算器模块
在TEC-8中,执行一条微指令(或者在硬连线控制器中完成1个机器周期)需要连续的3个节拍脉冲T1、T2和T3。
它们的时序关系如图1所示:
图1机器周期与T1、T2、T3时序关系图
对于运算器操作来说,在T1期间,产生2个8位参与运算的数A和B,A是被加数,B是加数;产生控制运算类型的信号M、S3、S2、S1、S0和CIN;产生控制写入Z标志寄存器的信号LDZ和控制写入C标志寄存器的信号LDC,产生将运算的数据结果送往数据总线DBUS的控制信号ABUS。
这些控制信号保持到T3结束;在T2期间,根据控制信号,完成某种运算功能;在T3的上升沿,保存运算的数据结果到一个8位寄存器中,同时保存进位标志C和结果为0标志Z。
图2运算器组成实验的电路图
双端口寄存器组由1片EPM7064(U40)(图2中用虚线围起来的部分)组成,内部包含4个8位寄存器R0、R1、R2、R3,4选1选择器A,4选1选择器B和1个2-4译码器。
根据信号RD1、RD0的值,4选1选择器A从4个寄存器中选择1个寄存器送往ALU的A端口。
根据信号RS1、RS0的值,4选1选择器B从4个寄存器中选择1个寄存器送往ALU的B端口。
2-4译码器对信号RD1、RD0进行译码,产生信号LR0、LR2、LR3、LR4,任何时刻这4个信号中只有一个为1,其它信号为0。
LR3~LR0指示出被写的寄存器。
当DRW信号为1时,如果LR0为1,则在T3的上升沿,将数据总线DBUS上的数写入R0寄存器,余类推。
数据开关SD7~SD0是8个双位开关。
用手拨动这些开关,能够生成需要的SD7~SD0的值。
数据开关驱动器SWD是1片74LS244(U50)。
在信号SBUS为1时,SD7~SD0通过SWD送往数据总线DBUS。
使用数据开关SD7~SD0设置寄存器R0、R1、R2和R3的值。
ALU由2片74LS181(U41和U42)、1片74LS74、1片74LS244、1片74LS245和1片74LS30构成。
74LS181完成算术逻辑运算,74LS245和74LS30产生Z标志,74LS74保存标志C和标志Z。
ALU对A7~A0和B7~B0上的2个8位数据进行算术逻辑运算,运算后的数据结果在信号ABUS为1时送数据总线DBUS(D7~D0),运算后的标志结果在T3的上升沿保存进位标志位C和结果为0标志位Z。
加法和减法同时影响C标志和Z标志,与操作和或操作只影响Z标志。
应当指出,74LS181只是许多种能做做算术逻辑运算器件中的一种器件,这里它仅作为一个例子使用。
74LS181能够进行4位的算术逻辑运算,2片74LS181级连在一起能够8位运算,3片74LS181级连在一起能够进行12位运算,余类推。
所谓级联方式,就是将低4位74LS181的进位输出引脚Cn+4与高4位74LS181的进位输入引脚Cn连接。
在TEC-8模型计算机中,U42完成低4位运算,U41完成高4位运算,二者级连在一起,完成8位运算。
在ABUS为1时,运算得到的数据结果送往数据总线DBUS。
数据总线DBUS有4个信号来源:
运算器、存储器、数据开关和中断地址寄存器,在每一时刻只允许其中一个信号源送数据总线。
本实验中用到的信号归纳如下:
表1信号归纳表
表1信号归纳表
表2ALU运算模式
选择方式
M=1逻辑运算
M=0算术运算
S3
S2
S1
S0
逻辑运算
CN=1【有进位】
0
0
0
0
F=/A
F=A
0
0
0
1
F=/(A+B)
F=(A+B)
0
0
1
0
F=(/A)B
F=A+/B
0
0
1
1
F=0
F=-1(补码形式)
0
1
0
0
F=/(AB)
F=A+A(/B)
0
1
0
1
F=/B
F=(A+B)+A/B
0
1
1
0
F=A-B-1
0
1
1
1
F=A/B
F=(AB/)-1
1
0
0
0
F=/A+B
F=A+AB
1
0
0
1
F=A+B
1
0
1
0
F=B
F=(A+/B)+AB
1
0
1
1
F=AB
F=AB-1
1
1
0
0
F=1
F=A+A
1
1
0
1
F=A+/B
F=(A+B)+A
1
1
1
0
F=A+B
F=(A+/B)+A
1
1
1
1
F=A
F=A-1
表2ALU运算模式
2.2控制器
图3控制器实验电路图
1)微程序控制器
微程序控制器产生TEC-8模型计算机所需的各种控制信号。
它由5片HN58C65、1片74LS174、3片74LS32和3片74LS06组成。
5片HN58C65组成控制存储器,存放微程序代码;1片74LS174是微地址寄存器。
3片74LS32和3片74LS08组成微地址转移逻辑。
2)硬连线控制器
硬连线控制器由1片可编程器件CPLD组成,产生TEC-8模型计算机所需的各种控制信号。
2.3数据通路
数据通路实验电路图如图2.3所示。
它由运算器部分、双端口存储器部分加上数据开关SD7~SD0连接在一起构成。
如下图4数据通路实验电路
图4数据通路实验电路
这里主要说明TEC-8模型计算机的数据流动路径和方式。
在进行数据运算操作时,由RD1、RD0选中的寄存器通过4选1选择器A送往ALU的A在进行数据运算操作时,由RD1、RD0选中的寄存器通过4选1选择器A送往ALU的A端口,由RS1、RS0选中的寄存器通过4选1选择器B送往ALU的B端口;信号M、S3、S2、S1、S1和S0决定ALU的运算类型,ALU对A端口和B端口的两个数连同CIN的值进行算数逻辑运算,得到的数据运算结果在信号ABUS为1时送往数据总线DBUS;在T3的上升沿,数据总线DBUS上的数据结果写入由RD1、RD0选中的寄存器。
在寄存器之间进行数据传送操作时,由RS1、RS0选中的寄存器通过4选1选择器B送往ALU的B端口;ALU将B端口的数在信号ABUS为1时送往数据总线DBUS;在T3的上升沿将数据总线上的数写入由RD1、RD0选中的寄存器。
ALU进行数据传送操作由一组特定的M、S3、S2、S1、S0、CIN的值确定。
在进行运算操作时,由RS1、RS0选中的寄存器通过4选1选择器B送往ALU的B端口;由RD1、RD0选中的寄存器通过4选1选择器A送往ALU的A端口;ALU对数A和B进行运算,运算的数据结果在信号ABUS为1时送往数据总线DBUS;在T3的上升沿将数据总线上的数写入由RD1、RD0选中的寄存器。
ALU进行何种运算操作由M、S3、S2、S1、S0、CIN的值确定。
在从存储器中取数操作中,由地址AR7~AR0指定的存储器单元中的数在信号MEMW为0时被读出;在MBUS为1时送数据总线DBUS;在T3的上升沿写入由RD1、RD0选中的寄存器。
在写存储器操作中,由RS1、RS0选中的寄存器过4选1选择器B送ALU的B端口;ALU将B端口的数在信号ABUS为1时送往数据总线DBUS;在MEMW为1且MBUS为0时,通过左端口将数据总线DBUS上的数在T2为1期间写入由AR7~AR0指定的存储器单元。
在读指令操作时,通过存储器右端口读出由PC7~PC0指定的存储器单元的内容送INS7~INS0,当信号LIR为1时,在T3的上升沿写入指令寄存器IR。
表3信号表:
M、S3、S2、S1、S0
控制74LS181的算数逻辑运算类型
CIN
低位74LS181的进位输入
SEL3(RD1)
选择送ALU的A端口的寄存器和被写入的寄存器
SEL2(RD0)
SEL1(RS1)
选择送往ALU的B端口的寄存器
SEL0(RS0)
DRW
=1时,在T3上升沿对RD1、RD0选中的寄存器进行写操作,将数据总线DBUS上的数D7~D0写入选定的寄存器
ABUS
=1时,将运算结果送数据总线DBUS
=0时,禁止运算结果送数据总线DBUS
SBUS
=1时,将运算结果送数据总线DBUS
=0时,禁止运算结果送数据总线DBUS
A7~A0
送往ALU的A端口的数
B7~B0
送往ALU的B端口的数
D7~D0
数据总线DBUS上的8位数
MBUS
=1时,将双端口RAW的左端口数据送到数据总线DBUS
MEMW
=1时,在T2为1期间将数据总线DBUS上的D7~D0写入双端口RAW,写入的存储器单元由AR7~AR0制定
LPC
=1时,在T3的上升沿,将数据总线DBUS上的D7~D0写入程序计数器PC
PCINC
=1时,在T3的上升沿,AR加1
LAR
=1时,在T3的上升沿,将数据总线DBUS上的D7~D0写入地址寄存器AR
ARINC
=1时,在T3的上升沿,AR加1
SBUS
=1时,数据开关SD7~SD0的数送数据总线DBUS
AR7~AR0
双端口RAW左端口存储器地址
PC7~PC0
双端口RAQ右端口存储器地址
INS7~INS0
从双端口RAQ右端口读出的指令,本实验中作为数据使用
SETCTL
=1时,实验系统处于实验台状态
=0时,实验系统处于运行程序状态
2.4模型计算机时序信号
TEC-8模型计算机主时钟MF的频率为1MHz,执行一条微指令需要3个节拍脉冲T1、T2、T3。
TEC-8模型计算机时序采用不定长机器周期,绝大多数指令采用2个机器周期W1、W2,少数指令采用一个机器周期W1或者3个机器周期W1、W2、W3。
图5TEC-8模型机的时序图
2.5总电路框图
总电路框图如图6所示:
图6TEC-8模型计算机电路框图
3、指令系统设计
TEC-8模型计算机是个8位机,字长是8位。
指令使用4位固定操作码,最多容纳16条指令。
一个较完善的指令系统,应当有数据传送、算术运算、逻辑运算、控制转移指令,所以至少应该包含下表中的指令。
表4TEC-8模型计算机指令系统
名称
助记符
功能
指令格式
IR(7-4)
IR(3-2)
IR(1-0)
取数
LDRd,[Rs]
Rd<-[Rs]
0101
Rd
Rs
存数
STRs,[Rd]
Rs->[Rd]
0110
Rd
Rs
加1
INCRd
Rd<-Rd+1
0100
Rd
XX
减法
SUBRd,Rs
Rd<-Rd-Rs
0010
Rd
Rs
C条件转移
JCaddr
C=1,则
PC<-@+offset
0111
offset
Z条件转移
JZaddr
Z=1,则
PC<-@+offset
1000
offset
逻辑与
ANDRd,Rs
Rd<-RdandRs
0011
Rd
Rs
MOV
JMP[Rd]
PC<-Rd
1001
Rd
XX
输出
OUTRs
DBUS<-Rs
1010
XX
Rs
停机
STP
暂停运行
1110
XX
XX
表4TEC-8模型计算机指令系统
其中,XX代表随意值。
Rs代表源寄存器号,Rd代表目的寄存器号。
在条件转移指令中,@代表当前PC的值,offset是一个4位的有符号数,第3位是符号位,0代表正数,1代表负数。
注意:
@不是当前指令的PC值,是当前指令的PC值加1。
4、模拟机硬连线控制器设计
4.1硬连线控制器的基本原理
硬连线控制器的基本原理,每个微操作控制信号S是一系列输入量的逻辑函数,即用组合逻辑来实现
S=f(Im,Mi,Tk,Bj)
其中Im是机器指令操作码译码器的输出信号,Mi是节拍电位信号,Tk是节拍脉冲信号,Bj是状态条件信号。
在TEC-8实验系统中,节拍脉冲信号Tk(T1~T3)已经直接输送给数据通路。
因为机器指令系统比较简单,省去操作码译码器,4位指令操作码IR4~IR7直接成为Im的一部分;由于TEC-8实验系统有控制台操作,控制台操作可以看作一些特殊的功能复杂的指令,因此SWC、SWB、SWA可以看作是Im的另一部分。
Mi是时序发生器产生的节拍信号W1~W3;Bj包括ALU产生的进位信号C、结果为0信号Z等等。
4.2时序电路节拍设计
1)硬连线控制器流程图
微程序控制器的控制信号以微指令周期为时间单位,硬连线控制器以节拍电位(CPU周期)为时间单位,两者在本质上是一样的,1个节拍电位时间和1条微指令时间都是从节拍脉冲T1的上升沿到T3的下降沿的一段时间。
在微程序控制器流程图中,一个执行框代表一条微指令,在硬连线控制器流程图中,一个执行框代表一个节拍电位时间。
2)执行一条机器指令的节拍电位数
在TEC-8实验系统中,采用了可变节拍电位数来执行一条机器指令。
大部分指令的执行只需2个节拍电位W1、W2,少数指令需要3个节拍电位W1、W2、W3。
为了满足这种要求,在执行一条指令时除了产生完成指令功能所需的微操作控制信号外,对需要3个电位节拍的
指令,还要求它在W2时产生一个信号LONG。
信号LONG送往时序信号发生器,时序信号发生器接到信号LONG后产生节拍电位W3。
对于一些控制台操作,需要4个节拍电位才能完成规定的功能。
为了满足这种情况,可以将控制台操作化成两条机器指令的节拍。
为了区分写寄存器操作的2个不同阶段,可以用某些特殊的寄存器标志标。
例如建立一个FLAG标志,当FLAG=0时,表示该控制台操作的第1个W1、W2;当FLAG=1时,表示该控制台操作的第2个W1、W2。
为了适应更为广泛的情况,TEC-8的时序信号发生器允许只产生一个节拍电位W1。
当1条指令或者一个控制台在W1时,只要产生信号SHORT,该信号送往时序信号发生器,则时序信号发生器在W1后不产生节拍电位W2,下一个节拍仍是W1。
信号LONG和SHORT只对紧跟其后的第一个节拍电位的产生起作用。
3).组合逻辑译码表
设计出硬连线流程图后,就可以设计译码电路。
传统的做法是先根据流程图列出译码表,作为逻辑设计的根据。
译码表的内容包括横向设计和纵向设计,流程图中横向为一拍(W1、W2、W3),纵向为一条指令。
而译码逻辑是针对每一个控制信号的,因此在译码表中,横向
变成了一个信号。
表3.1是译码表的一般格式,每行中的内容表示某个控制信号在各指令中的有效条件,主要是节拍电位和节拍脉冲指令操作码的译码器输出、执行结果标志信号等。
根据译码表,很容易写出逻辑表达式。
指令IR
ADD
SUB
AND
……
LIR
W1
W1
W1
M
W2
S3
W2
W2
S2
W2
S1
W2
……
表5组合逻辑译码表
与传统方法稍有不同的是,使用VHDL语言设计时,可根据流程图直接写出相应的语言描述。
以表3.1中的ADD、SUB、AND为例,可描述如下:
process(IR,W1,W2,W3)--这里的IR实际上是指令操作码,即IR4~IR7
begin
LIR<='0';
M<='0';
S3<='0';
S2<='0';
S1<='0';
caseIRis
when"0001"=>
LIR<=W1;
S3<=W2;
when"0010"=>
LIR<=W1;
S2<=W2;
S1<=W2;
when"0011"=>
LIR<=W1;
M<=W2;
S3<=W2;
S1<=W2;
很明显,这种方法省略了译码表,且不容易出错。
4.3控制台操作分析与设计
.
表6控制台操作表
控制台操作
写存储器
读存储器
写寄存器
读寄存器
SWA&SWB&SWC
001
010
100
011
4.3.1写存储器模式
(1)因为要先确定地址,再存入数据,所以需要两个连续的指令周期;采用标志位ST0区分。
(2)第一个指令周期,ST0=0
节拍W1:
微操作信号:
SBUS有效=1,选通
微操作信号:
LAR=1,T3上升沿,将DBUS上的D7~D0写入AR
微操作信号:
SST0=1,设置ST0
微操作信号:
SHORT=1,只用一个节拍w1
微操作信号:
SELECTL=1,控制台操作
微操作信号:
STOP=1,T3结束后停止输出T1-T3信号
注:
在这个节拍下从数据开关SD7-SD0输入存储器地址
(3)第二个指令周期,ST0=1
节拍W1:
微操作信号:
SBUS有效=1,选通
微操作信号:
MEMW=1,T2上升沿,将DBUS上的D7~D0写入RAM
微操作信号:
ARINC=1,T3上升沿,PC+1
微操作信号:
SHORT=1,只用一个节拍w1
微操作信号:
SELECTL=1,控制台操作
微操作信号:
STOP=1,T3结束后停止输出T1-T3信号
注:
在这个节拍下从数据开关SD7-SD0输入存储器地址
(4)控制台写存储器微操作流程图
图7控制台写存储器微操作流程图
(5)译码表
ST0=0
微操作信号
W1
SBUS
1
LAR
1
SST0
1
SHORT
1
SELCTL
1
STOP
1
ST0=1
微操作信号
W1
SBUS
1
MEMW
1
ARINC
1
SHORT
1
SELCTL
1
STOP
1
4.3.2读存储器模式
(1)因为要先确定地址,再读出数据,所以需要两个连续的指令周期;采用标志位ST0区分。
(2)第一个指令周期,ST0=0
节拍W1:
微操作信号:
SBUS有效=1,选通
微操作信号:
LAR=1,T3上升沿,将DBUS上的D7~D0写入AR
微操作信号:
SST0=1,置st0=1,进入第二个寄存器置数周期
微操作信号:
SHORT=1,只用一个节拍w1
微操作信号:
SELECTL=1,控制台操作
微操作信号:
STOP=1,T3结束后停止输出T1-T3信号
注:
在这个节拍下从数据开关SD7-SD0输入存储器地址
(3)第二个指令周期,STO=1
节拍W1:
微操作信号:
MBUS有效=1,RAM左端口的数据送到DBUS
微操作信号:
ARINC=1,T3上升沿,PC+1
微操作信号:
SHORT=1,只用一个节拍w1
微操作信号:
SELECTL=1,控制台操作
微操作信号:
STOP=1,T3结束后停止输出T1-T3信号
(4)控制台读存储器微操作流程图
图8控制台读存储器微操作流程图
(5)译码表
ST0=0
微操作信号
W1
SBUS
1
LAR
1
SST0
1
SHORT
1
SELCTL
1
STOP
1
ST0=1
微操作信号
W1
MBUS
1
ARINC
1
SHORT
1
SELCTL
1
STOP
1
4.3.3写寄存器模式
运算器中有R0-R3四个寄存器,对寄存器进行连续的写入操作;一个节拍写一个寄存器,需要4个节拍。
因为一般一个指令周期由两个节拍构成,所以需要两个连续的指令周期;采用标志位ST0区分
第一个指令周期,ST0=0,写R0,R1;
节拍W1:
微操作信号:
SEL3,SEL2(即RD1RD0)=00,选择R0,
微操作信号:
SBUS有效=1,选通,
微操作信号:
SELECTL=1,控制台操作