组成原理课程设计

  • 格式: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一栏,*表示该标志位在指令执行后被重置,·表示该标志位不受指令执行的影响。