模型计算机控制器的设计.docx
《模型计算机控制器的设计.docx》由会员分享,可在线阅读,更多相关《模型计算机控制器的设计.docx(19页珍藏版)》请在冰豆网上搜索。
模型计算机控制器的设计
《计算机组成原理》
课程设计报告
设计题目:
模型计算机控制器的设计
学生:
学号:
专业班级:
13计师X班
指导教师:
麦山
提交日期:
2015年6月XX日
计算机科学系
二○一五年
模型计算机控制器的设计
本课程设计以设计一个模型计算机的控制器(CU)为目标,通过课程设计,进一步加深对中央处理器的结构和功能的理解,掌握控制器的设计方法和步骤,为今后从事计算机系统设计打下初步的基础。
1设计要求
1.1功能指标和要求
1)支持一个规模较小、但功能相对完整的RISC指令系统,指令条数不超过32条;
2)采用I/O端口独立编址方式;
3)系统总线由CPU总线延伸形成,总线周期固定;
4)不支持中断及DMA功能;
5)采用组合逻辑控制方式;
6)忽略复位电路、时钟电路和时序电路的设计,但需说明对时序信号的要求。
1.2性能指标要求
1)CPU字长8位,数据总线8位;
2)地址总线8位,最大寻址空间为256字节;
3)I/O采用独立编址方式,4位地址码,最大支持16个I/O端口;
4)时钟频率1MHz左右,机器周期为3-4个时钟周期;
5)CPU输出与外部读写控制的控制信号有/MR、/MW、/IOR、/IOW。
1.3课程设计要求
根据课程设计指导,完成模型机控制的设计,并提交课程设计报告。
1.4时间安排
1)理解模型机的逻辑结构、数据通路以及指令系统和格式:
1天
2)数据通路设计及分析:
1天
3)指令执行流程设计:
1天
4)微操作的节拍安排与设计:
1天
5)微操作命令逻辑表达式:
1天
2CPU逻辑结构设计
2.1CPU逻辑结构的组成
1.运算器
1)ALU具有8种算术/逻辑运算功能,其运算功能由三位编码I2I1I0选择;ALU除了2个数据输入端R、S和数据输出端Y外,另有一个最低位进位输入信号C0,以及4个状态输入:
进位输出C、结果零Z、运算溢出V和符号位S。
2)ALU输出移位器具有直通、左移一位和右移一位的功能,由两位编码I4I3选择;
3)ALU数据输入端有A和B两个数据锁存器,指令不可访问;
4)标志寄存器FLAG,4位,与数据总线的低4位连接,能独立置位或清零;
5)4个通用数据寄存器R0~R3;
6)堆栈指针SP(8位);
7)数据缓冲寄存器DR,指令不可访问;
8)地址寄存器AR(8位),指令不可访问。
2.控制器
1)程序计数器PC(8位),具有加1的功能;
2)指令寄存器IR(8位);
3)微操作控制信号发生器,采用组合逻辑控制方式;
4)时钟和时序信号发生器(不需设计)。
2.2CPU的逻辑结构及数据通路结构
图2-1CPU逻辑结构及数据通路结构图
在模型计算机的CPU中设置了一个特殊的零寄存器ZERO,该寄存器的值恒为0。
各寄存器的编码(地址)见表2-1。
表2-1寄存器编码表
寄存器
编码
R0
R1
R2
R3
A
B
ZERO
DR
AR
SP
FLAG
PC
IR
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
3指令系统设计
3.1指令字长和寻址方式设计
1)指令字长以单字长为主,少数指令为双字长;
2)指令操作码字段长度可变;
3)数据寻址支持立即寻址、寄存器直接寻址和寄存器间接寻址三种方式;
4)只有取数(LDA)和存数(STO)两条指令可以访问主存。
3.2指令系统设计
在以下指令定义中,dR、sR表示通用数据寄存器组R0~R3(编号00~11)中的一个,data表示8位立即数,addr表示8位无符号地址,port表示4位I/O端口地址。
1)数据传送类指令(8条)
MOVdR,data;dR←data
MOVdR,sR;dR←(sR)
LADdR,[sR];dR←((sR))
STO[dR],sR;(dR)←(sR)
PUSHsR;SP←(sR),SP←SP+1
POPdR;SP←(SP)–1,dR←(SP)
CLC;Cy←0
STC;Cy←1
2)算术运算类指令(6条)
ADDdR,sR;dR←(dR)+(sR)
SUBdR,sR;dR←(dR)–(sR)
ADCdR,sR;dR←(dR)+(sR)+Cy
SBCdR,sR;dR←(dR)–(sR)–Cy
INCdR;dR←(dR)+1
DECdR;dR←(dR)–1
3)逻辑运算类指令(8条)
ANDdR,sR;dR←(dR)∨(sR)
ORdR,sR;dR←(dR)∧(sR)
XORdR,sR;dR←(dR)⊕(sR)
NOTdR;dR←~(dR)
SLdR;dR←dR<<1,Cy←D7(逻辑左移1位)
SRdR;dR←dR>>1,Cy←D0(逻辑右移1位)
SLCdR;带进位标志Cy的循环逻辑左移(1位)
SRCdR;带进位标志Cy的循环逻辑右移(1位)
4)控制类指令(7条)
JMPaddr;PC←addr
JCoffset;若Cy=1则PC←(PC)+offset
JNCoffset;若Cy=0则PC←(PC)+offset
JZoffset;若Z=1则PC←(PC)+offset
JNZoffset;若Z=0则PC←(PC)+offset
CALLaddr;(SP)←(PC),SP←(SP)+1,PC←addr
RET;SP←(SP)–1,PC←(SP)
5)输入/输出类指令(2条)
INport;R0←(port)
OUTport;port←(R0)
3.3指令格式设计
指令长度为单字节和双字节2种,操作码字段的长度可变,指令格式有以下六种。
1.格式一
743210
操作码
dR
sR
2.格式二
743210
操作码
IOport/addr
3.格式三
743210
操作码
dR/sR
4.格式四
743210
操作码
dR/sR
addr
5.格式五
743210
操作码
6.格式六
743210
操作码
adr
3.4指令汇总表
表3-1指令汇总表
序号
指令格式
汇编语言
字长
操作数
CZVS
功能说明
1
0000dRsR
MOVdR,sR
1
2
····
dR←(sR)
2
0001dRsR
LADdR,[sR]
1
2
····
dR←((sR))
3
0010dRsR
STO[dR],sR
1
2
····
(dR)←(sR)
4
0011dRsR
ADDdR,sR
1
2
****
dR←(dR)+(sR)
5
0100dRsR
SUBdR,sR
1
2
****
dR←(dR)-(sR)
6
0101dRsR
ANDdR,sR
1
2
·*·*
dR←(dR)∧(sR)
7
0110dRsR
ORdR,sR
1
2
·*·*
dR←(dR)∨(sR)
8
0111dRsR
XORdR,sR
1
2
·*·*
dR←(dR)⊕(sR)
9
1000dRsR
ADCDS,sR
1
2
****
dR←(dR)+(sR)+Cy
10
1001dRsR
SBCDS,sR
1
2
****
dR←(dR)-(sR)-Cy
11
1010port
INport
1
1
····
R0←(port)
12
1011port
OUTport
1
1
····
port←(R0)
13
110000dR
PUSHsR
1
1
····
SP←(sR),SP←(SP)+1
14
110001dR
POPdR
1
1
····
SP←(SP)-1,dR←(SP)
15
110010dR
INCdR
1
1
****
dR←(dR)+1
16
110011dR
DECdR
1
1
****
dR←(dR)-1
17
110100dR
SHLdR
1
1
*···
dR←dR*2,Cy←D7
18
110101sR
SHRdR
1
1
*···
dR←dR/2,Cy←D0
19
110110dR
SLCdR
1
1
*···
带进位Cy的逻辑循环左移
20
110111dR
SRCdR
1
1
*···
带进位Cy的逻辑循环右移
21
111000dR
NOTdR
1
1
·*·*
dR←~(dR)
22
111001dR
data
MOVdR,data
2
2
*···
dR←data
23
11101000
CLC
1
0
0···
Cy←0
24
11101001
STC
1
0
1···
Cy←1
25
11101010
addr
CALLaddr
2
1
····
(SP)←(PC),SP←(SP)+1
PC←addr
26
11101011
RET
1
0
····
SP←(SP)-1,PC←(SP)
27
11101100
offset
JCoffset
2
1
····
C=1时转移到(PC)+offset
28
11101100
offset
JNCoffset
2
1
····
C=0时转移到(PC)+offset
29
11101110
offset
JZoffset
2
1
····
Z=1时转移到(PC)+offset
30
11101111
offset
JNZoffset
2
1
····
Z=0时转移到(PC)+offset
31
11110000
addr
JMPaddr
2
1
····
PC←addr
说明:
表中CZVS一栏,*表示该标志位在指令执行后被重置,·表示该标志位不受指令执行的影响。
4控制信号和时序信号
4.1控制信号
在计算机的控制信号中,大部分用于控制寄存器数据输入和数据输出操作。
寄存器一般由带有三态输出的D触发器或D锁存器构成,因此需要有数据输入和数据输出两个控制信号。
为了可靠地实现两个寄存器之间的数据传送操作,输出寄存器的数据输出控制信号必须首先有效,经过一段时间的延迟后,输入寄存器的数据输入控制信号才能有效,在时间上有一个时间差。
寄存器之间的数据传送一般可在一个时钟周期内完成,因此,寄存器数据输出的控制信号持续1个时钟周期有效,而寄存器数据输入的控制信号持续半个时钟周期,且在时钟信号的后半个周期有效。
1.运算器相关的控制信号
1)ALU运算功能控制信号
AUL运算功能由控制信号I2I1I0的编码选择,具体见表4-1。
表4-1ALU运算功能选择
I2I1I0
运算功能
说明
000
001
010
011
100
101
110
111
R+S
S-R
R-S
R∨S
R∧S
∧S
R⊕S
加法
减法
减法
逻辑或
逻辑与
逻辑异或
逻辑同或
2)移位器操作控制信号
移位器的操作功能由控制信号I4I3的编码选择,具体见表4-2。
表4-2移位器操作功能选择
I4I3
输出Y
说明
00
01
10
11
三态
Y=F
F=F*2
F=F/2
Y输出高阻态
F直通
F左移1位
F右移1位
3)寄存器输入/输出控制信号
通用寄存器组R0~R3的数据输入输入和输出分别由Rni及Rno控制,其中Rno信号持续1个时钟周期,而Rni则只在时钟信号的后半个周期有效。
数据缓冲寄存器DR在物理上由输出缓冲寄存器和输入缓冲寄存器组成,以便实现双向数据缓冲,但在逻辑上只有一个地址,一般通过读、写这两种不同的操作来区分不同的物理寄存器。
对于数据输出缓冲寄存器DR,数据的传送方向为:
CPU→主存或I/O,其数据输入控制信号为DRi,数据输出由
信号控制。
对于数据输入缓冲寄存器DR,数据的传送方向为:
主存或I/O→CPU,其数据输入由WE控制(WE与
为互补信号),数据输出由DRo控制。
地址寄存器AR为单向输出,ARi为数据打入控制信号。
零寄存器(Z)为单向输出,Zo为数据输出控制信号。
标志寄存器FLAG的数据输出信号为Zo。
标志寄存器FLAG在结构上不同于普通的寄存器,普通寄存器的各个数据位作为一个整体同时接收数据,不能实现个别数据位独立接收数据,但标志寄存器FLAG要求各数据位能够独立接收ALU输出的特征值(C、Z、V、S),通常情况下,需用时序逻辑的设计方法来实现。
标志寄存器FLAG中各标志位的设置情况见表4-3。
表4-3标志寄存器中CZVS标志值的选择
I7I6I5
C
Z
V
S
说明
000
001
010
011
100
101
C
C7
0
1
F0
F7
Z
F=0
Z
Z
Z
Z
V
OV
V
V
V
V
S
F7
S
S
S
S
CZVS的值保持不变
接收ALU标志位输出的值
C置“0”,ZVS不变
C置“1”,ZVS不变
左移操作,ZVS不变
右移操作,ZVS不变
堆栈指针SP的输入输入和输出分别由SPi及SPo控制。
4)ALU进位信号C0及移位器低位F0及高位F7的取值
ALU进位信号C0及移位器低位F0及高位F7的取值见表4-4。
表4-4ALU进位信号C0及移位器低位F0及高位F7的取值
I10I9I8
C0
F7
F0
说明
000
001
010
011
100
101
110
111
0
1
C7
-
-
-
-
-
-
-
-
-
-
-
0→F7
C→F7
-
-
-
-
0→F0
C→F0
-
-
单字长加法、逻辑运算
单字长减法
多字长加、减法
无操作
逻辑左移
循环左移
逻辑右移
循环右移
2.控制器(CU)相关的控制信号
程序计数器PC具有加1的功能,当控制信号PC+1有效时PC的值加1,其数据输入和输出分别由信号PCi和PCo控制。
指令寄存器IR为8位,各位均有直接通道连接到微操作与时序信号发生器,其输入和输出分别由信号IRi和IRo控制。
3.存储器及I/O相关的控制信号
访问存储器一般需要
和
两个信号来控制读、写操作,访问I/O端口则需要
和
两个信号来控制读、写操作,为了便于控制数据总线的数据传送方向,可在CPU设置REQ(存储器及I/O请求)、
(存储器或I/O选择)和
(写允许)三个控制信号,通过对这三个信号的译码后产生所需要的
、
、
和
。
表4-3读写访问的控制信号
REQ
译码输出
说明
0××
100
101
110
111
无效
无操作
写存储器
读存储器
写I/O
读I/O
4.2数据通路分析
1.取指令操作
①PC→AR→MEM→DR→IR
②PC+1→PC
2.执行指令
1)双操作数运算指令
sRopdR→dR
▪sR→A
▪dR→B
▪F→Ri
(……)
4.3时序信号
模型计算机的主时钟频率f为1MHz,周期T=1μs,采用方波波形(即脉宽与脉间相等),普通的低速RAM和ROM的访问周期一般在小于300ns,因此存储器的访问可在1个时钟周期内完成。
因此,模型机的机器周期M固定由1个时钟周期构成,指令的机器周期数可变,但至少需要M0、M1两个机器周期,其中M0为取指周期,M1为执行周期。
5指令执行流程设计
指令执行流程图如图5-1所示,每个方框图表示一个机器周期,方框图的左上方的数字编码为机器周期的编号。
图5-1指令执行流程图
6指令执行流程及控制信号安排
根据指令执行流程图,安排各机器周期所需要发出的微操作控制信号,并给出控制信号的编码。
表6-1指令流程及控制信号表
指令
机器码
机器
周期
PC+1
R/M/W
源
寄存器
目的
寄存器
C0F0F7
I10I9I8
标志
I7I6I5
移位
I4I3
运算
I2I1I0
注释
-
-
00000
1
000
1011
1000
000
000
00
000
PC→AR,PC+1→PC
-
-
00001
0
101
1111
0111
000
000
00
000
M(AR)→DR
-
-
00010
0
000
0111
1100
000
000
00
000
DR→IR
MOV
111001dR
data
00000
1
000
1011
1000
000
000
00
000
PC→AR,PC+1→PC
00001
0
101
1111
0111
000
000
00
000
M(AR)→DR
00011
0
000
0111
00dR
000
000
00
000
DR→dR
MOV
0000dRsR
00100
0
000
00sR
00dR
000
000
00
000
sR→dR
LAD
0001dRsR
00110
0
000
00sR
1000
000
000
000
000
sR→AR
00001
0
101
1111
0111
000
000
00
000
M(AR)→DR
00011
0
000
0111
00dR
000
000
00
000
DR→dR
STO
7微操作控制信号逻辑表达式