组成原理课程设计
- 格式:doc
- 大小:578.15 KB
- 文档页数:15
《计算机组成原理》
课 程 设 计 报 告
设计题目: 模型计算机控制器的设计
1 模型计算机控制器的设计
本课程设计以设计一个模型计算机的控制器(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天
2 2 CPU逻辑结构设计
2.1 CPU逻辑结构的组成
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.2 CPU的逻辑结构及数据通路结构
图2-1 CPU逻辑结构及数据通路结构图
在模型计算机的CPU中设置了一个特殊的零寄存器ZERO,该寄存器的值恒为0。各寄存器的编码(地址)见表2-1。
3 表2-1 寄存器编码表
寄存器 编码
R0
R1
R2
R3
DR
AR
SP
FLAG
ZERO
A
B
PC
IR 0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
4 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条)
MOV dR, data ;dR ← data
MOV dR, sR ;dR ← (sR)
LAD dR, [sR] ;dR ← ((sR))
STO [dR], sR ;(dR) ← (sR)
PUSH sR ;SP ← (sR),SP ← SP+1
POP dR ;SP ←(SP)–1,dR ← (SP)
CLC ;Cy ← 0
STC ;Cy ← 1
2)算术运算类指令(6条)
ADD dR, sR ;dR ← (dR) + (sR)
SUB dR, sR ;dR ← (dR) – (sR)
ADC dR, sR ;dR ← (dR) + (sR) + Cy
SBC dR, sR ;dR ← (dR) – (sR) – Cy
INC dR ;dR ← (dR) + 1
DEC dR ;dR ← (dR) – 1
3)逻辑运算类指令(8条)
AND dR, sR ;dR ← (dR) ∨ (sR)
OR dR, sR ;dR ← (dR) ∧ (sR)
XOR dR, sR ;dR ← (dR)⊕(sR)
NOT dR ;dR ← ~(dR)
SL dR ;dR ← dR << 1 , Cy ← D7(逻辑左移1位)
SR dR ;dR ← dR >> 1 , Cy ← D0(逻辑右移1位)
SLC dR ;带进位标志Cy的循环逻辑左移(1位)
SRC dR ;带进位标志Cy的循环逻辑右移(1位)
4)控制类指令(7条)
JMP addr ;PC ← addr
JC offset ;若Cy=1 则 PC ← (PC) + offset
JNC offset ;若Cy=0 则 PC ← (PC) + offset
JZ offset ;若Z=1 则 PC ← (PC) + offset
JNZ offset ;若Z=0 则 PC ← (PC) + offset
CALL addr ;(SP) ← (PC),SP ← (SP)+1,PC ← addr
5 RET ;SP ← (SP)–1,PC ← (SP)
5)输入/输出类指令(2条)
IN port ;R0 ← (port)
OUT port ;port ← (R0)
3.3 指令格式设计
指令长度为单字节和双字节2种,操作码字段的长度可变,指令格式有以下六种。
1.格式一
7 4 3 2 1 0
操作码 dR
sR
2.格式二
7 4 3 2 1 0
操作码
IO port / addr
3.格式三
7 4 3 2 1 0
操作码 dR/sR
4.格式四
7 4 3 2 1 0
操作码 dR/sR
addr
5.格式五
7 4 3 2 1 0
操作码
6.格式六
7 4 3 2 1 0
操作码
adr
6 3.4 指令汇总表
表3-1 指令汇总表
序号 指令格式 汇编语言 字长 操作数 C Z V S 功能说明
1 0000 dR sR MOV dR, sR 1 2 ···· dR ← (sR)
2 0001 dR sR LAD dR, [sR] 1 2 ···· dR ← ((sR))
3 0010 dR sR STO [dR], sR 1 2 ···· (dR)← (sR)
4 0011 dR sR ADD dR, sR 1 2 * * * * dR ← (dR)+(sR)
5 0100 dR sR SUB dR, sR 1 2 * * * * dR← (dR)-(sR)
6 0101 dR sR AND dR, sR 1 2 ·*·* dR ← (dR)∧(sR)
7 0110 dR sR OR dR, sR 1 2 ·*·* dR ← (dR)∨(sR)
8 0111 dR sR XOR dR, sR 1 2 ·*·* dR ← (dR)⊕(sR)
9 1000 dR sR ADC DS, sR 1 2 * * * * dR ← (dR)+(sR)+Cy
10 1001 dR sR SBC DS, sR 1 2 * * * * dR ← (dR)-(sR)-Cy
11 1010 port IN port 1 1 ···· R0 ← (port)
12 1011 port OUT port 1 1 ···· port ← (R0)
13 1100 00 dR PUSH sR 1 1 ···· SP ← (sR),SP ← (SP)+1
14 1100 01 dR POP dR 1 1 ···· SP ← (SP)-1,dR ← (SP)
15 1100 10 dR INC dR 1 1 * * * * dR ← (dR)+1
16 1100 11 dR DEC dR 1 1 * * * * dR ← (dR)-1
17 1101 00 dR SHL dR 1 1 *··· dR ← dR*2,Cy ← D7
18 1101 01 sR SHR dR 1 1 *··· dR ← dR/2,Cy ← D0
19 1101 10 dR SLC dR 1 1 *··· 带进位Cy的逻辑循环左移
20 1101 11 dR SRC dR 1 1 *··· 带进位Cy的逻辑循环右移
21 1110 00 dR NOT dR 1 1 ·*·* dR ← ~(dR)
22 1110 01 dR
data MOV dR, data 2 2 *··· dR ← data
23 1110 1000 CLC 1 0 0··· Cy ← 0
24 1110 1001 STC 1 0 1··· Cy ← 1
25 1110 1010
addr CALL addr 2 1 ···· (SP) ←(PC),SP←(SP)+1
PC ← addr
26 1110 1011 RET 1 0 ···· SP←(SP)-1,PC←(SP)
27 1110 1100
offset JC offset 2 1 ···· C=1 时转移到(PC)+offset
28 1110 1100
offset JNC offset 2 1 ···· C=0 时转移到(PC)+offset
29 1110 1110
offset JZ offset 2 1 ···· Z=1 时转移到(PC)+offset
30 1110 1111
offset JNZ offset 2 1 ···· Z=0 时转移到(PC)+offset
31 1111 0000
addr JMP addr 2 1 ···· PC ← addr
说明:表中CZVS一栏,*表示该标志位在指令执行后被重置,·表示该标志位不受指令执行的影响。