资源描述
西安科技大学
计算机组成原理课程设计
设计说明书
题 目 模型计算机设计
院、系(部) 计算机学院计算机科学与技术系
专业及班级 计算机科学与技术专业0803班
姓名、学号 杨宇 0808030316
姓名、学号 熊健 0808030312
实 验 箱号 4001830
指 导 教师 薛 萍
日 期 2010年12月30号
一、模型计算机设计任务
1.1 设计目的
建立清晰完整的整机概念;
学习设计与调试计算机的基本方法与步骤;
培养严谨的科研作风和独立工作能力。
1.2 设计任务
综合运用所学计算机原理知识,按给定的指令系统和数据格式,在所提供设备的范围内,设计一台字长八位的由微程序控制器来控制的模型计算机。设计并实现较为完整的八位模型计算机。设计微程序控制器的逻辑原理图;设计微地址转移的逻辑电路图;设计微程序流程图;设计说明书。
1.3 设计指标
字长八位;
时钟源MF=QB=1us;内存容量不得小于28;
指令系统不得小于十四条。要求算术逻辑指令七条,访问内存和程序控制指令四条,输入输出指令两条,其他指令一条。
1.4 实验类型
设计型实验
1.5 实验设备
CM++实验仪一台;
计算机一台;
集成电路芯片及排线若干。
二、模型计算机系统指令设计
2.1 数据格式
数据采用定点整数补码表示,字长为八位,其格式如下:
7
6 5 4 3 2 1 0
符号
尾数
1、算术逻辑指令
算术逻辑指令用单字节表示,寻址方式采用计算器直接寻址,其格式如下:
7 6 5 4
3 2
1 0
OP-CODE
RS
RD
其中,OP-CODE为操作码,RS为源寄存器,RD为目的寄存器,并规定:
RS或RD
选定的寄存器
00
01
10
R0
R1
R2
2、访问指令及转移指令
模型机设计两条访问指令,即存数(STA)、取数(LDA),两条转移指令,即无条件转移(JMP),结果为零或有进位转移(BZC),指令格式如下:
7 6
5 4
3 2
1 0
00
M
OP-CODE
RD
D
其中OP-CODE为操作码,RD为目的寄存器地址(LDA、STA指令使用)。D为位移量(正负均可),M为寻址方式,并规定:
M
寻址方式
00
01
10
11
直接寻址
间接寻址
变址寻址
相对寻址
并规定变址寄存器RI指定为寄存器R2。
3、I/O指令
输入(IN)和输出(OUT)指令采用单字节指令,其格式如下:
7 6 5 4
3 2
1 0
OP-CODE
addr
RD
其中addr=01时选中“INPUT DEVICE”中的开关组作为输入设备,addr=11时选中“OUTPUT DEVICE”中的数码快作为输出设备。
4、控制台指令
为方便调试,且能写入数据和程序,以及显示内存中的数据,本模型机设计了两条控制台指令,它们由两个开关SWA,SWB的状态来定义,规定:
SWA
SWB
控制台指令
0
0
KRE(读内存)
1
0
KWE(写内存)
1
1
RP(启动主程序)
(1)KWE写内存:其功能是把控制台数据开关的内容作为程序或数据写入由地址灯指示的内存单元。
(2)KRE读内存:其功能是把控制台数据开关的内容作为程序地址,送入地址寄存器,然后以该单元为起始地址,连续读出所有单元的内容。内存单元以及该单元的数据由控制台上的数据灯给出。
(3)RP启动程序:其功能是将数据开关的内容作为程序地址送入PC,然后转入公操作。
5、停机指令
停机指令格式如下:
7 6 5 4
3 2
1 0
OP-CODE
00
00
HALT指令,用于实现停机操作。
2.2 系统指令设计
本模型机共设计有十六条基本指令。其中算术逻辑指令七条,位移指令两条,访问内存和程序控制指令四条,输入/输出指令两条,其他指令一条。下表列出各条指令的格式、助记符及功能:
助 记 符
指 令 格 式
功 能
CLR RD
MOV RS, RD
ADC RS, RD
SBC RS, RD
INC RD
AND RS, RD
COM RD
RRC RS, RD
RLC RS, RD
0111
00
RD
1000
RS
RD
1001
RS
RD
1010
RS
RD
1011
RD
1100
RS
RD
1101
RD
1110
RS
RD
1111
RS
RD
0→RD
RS→RD
RS+RD+CY→RD
RS-RD-CY→RD
RD+1→RD
RS∧RD→RD
RD→RD
RS通CY循环右移后→RD
RS通CY循环左移后→RD
LDA M, D, RD
STA M, D, RD
JMP M, D
BZC M, D
00
M
00
RD
D
00
M
01
RD
D
00
M
10
D
00
M
11
D
(E)→RD
RD→(E)
E→PC
当CY=1或Z=1时
E→PC
IN addr, RD
0100
01
RD
(addr)→RD
OUT addr, RD
0101
10
RD
RD→ (addr)
HALT
0110
00
00
停机
三、模型计算机总体设计
3.1 系统简介
本系统是一台八位模型计算机,它由微程序控制器,数据通路,时序发生器等三大部分组成。它有十六条基本指令,其中算术逻辑指令七条,位移指令两条,访问内存指令和程序控制指令四条,输入/输出指令及停机指令。采用二进制代码开关作为输入设备,实现人机对话。
3.2 主要部件工作原理
本次设计的核心是微程序控制器的设计。对一台数字计算机基本上可以分为两大部分,即控制部件和执行部件。微程序控制器就是控制部件,而其它设备相对来讲则是执行部件。控制部件通过控制线向执行部件发出各种控制命令并且通过反馈线香控制部件反馈情况,以便使用控制部件根据执行部件的状态来发出新的命令,保证机器的正常运行。
微程序控制器的基本思想是把操作控制信号编成微指令,存放在E2PROM中,当机器运行时,一条一条的读出这些微指令,从而产生全机所需的各种操作控制信号,使相应部分执行所规定的操作。在计算机系统中,微程序技术就是利用软件的方法来设计硬件的一门技术,这也是该模型机设计中最关键的部分。
3.3 微指令格式设计
在微指令设计中,分为水平微型指令设计及垂直型微指令设计两种。水平型微指令在一个CPU周期内,一次能定义并执行多个并行操作微命令。垂直型微指令在一个CPU周期中一次只能使控制信号从某一个源部件到执行部件。
在设计中,为缩短微程序长度,采用水平型微指令,即后继地址采用断定方式,在这种方式中,后继地址可任意设计。当微程序不出现分支时,后继地址直接由微指令的顺序控制字段中的下地址字段给出;当微程序出现分支时,后继地址按顺序字段中的“判别标志”和执行部件的“状态条件”反馈信息通过地址转移逻辑给出。这种方式能以较短的顺序控制字段实现多路转移灵活性能较好。
微程序控制器的设计关键在于先确定数据通路。数据通路中的各个功能部件上的各种控制信号就是微程序控制器设计的主要依据。用这些控制信号来控制数据通路中的数据流向。另外为了使模型机实现自动停机操作,因此在微指令中必须有一个自动停机指令。设计中共有59条微指令,故对控制存储器采用6位地址。所以在微指令设计中,总共要产生33个控制信号。为了减少指令长度,设计中采用直接编码和译码相结合的混合编码方式。将一组相斥性的微命令信号组成一个小组,然后将这一个小组(A字段、B字段、C字段)信号通过译码器对每一个微命令信号进行译码,将译码输出作为本次设计的控制信号。其格式如下:
A字段
15
14
13
选择
0
0
0
0
0
1
LDRi
0
1
0
LDDR1
0
1
1
LDDR2
1
0
0
LDIR
1
0
1
LOAD
1
1
0
LDAR
B字段
15
14
13
选择
0
0
0
0
0
1
RS-B
0
1
0
RD-B
0
1
1
RI-B
1
0
0
299-B
1
0
1
ALU-B
1
1
0
PC-B
C字段
15
14
13
选择
0
0
0
0
0
1
P(1)
0
1
0
P(2)
0
1
1
P(3)
1
0
0
P(4)
1
0
1
AR
1
1
0
LDPC
微指令格式:
24
23
22
21
20
19
18
17
16
151413
121110
987
6
5
4
3
2
1
S3
S2
S1
S0
M
Cn
WE
A9
A8
A
B
C
uA5
uA4
uA3
uA2
uA1
uA0
微指令长24位,其中顺序控制部分9位,即直接地址6位,判别位3位,后者采用字段译码法可译出P(1)—P(4) 4种判别测试标志位。操作控制字段18位:其中字段A、B、C均采用3-8译码器,可译出LDIR、PC-BUS、WE、LDDRi、RS-BUS等微命令。其他微命令均采用直接控制的方式。
3.4 微程序设计
将机器的全部指令系统采用微指令序列实现的过程叫做微程序设计。一条机器指令对应一条微程序,本模型机设计有16条机器指令,故应设计16条微程序。微程序是由微指令解释执行的。一条机器指令对应一个指令周期,而一条微指令对应一个CPU周期。微程序的设计包括横向设计和纵向设计。横向设计指的是正确的选择数据通路,保证一条微指令在一个CPU周期没完成而不发生数据冲突。纵向设计是正确的确定后继地址。微程序设计的关键在于纵向设计。由于后继地址采用判定方式,故首先确定微程序分支处的为地址,然后再确定其他地址。
此次设计中确定后继地址的具体方法是:
当拟定“取指”微指令时,该微指令的判别测试指明为P(1)测试,由于取指是所有微程序使用的公用微指令,因此P(1)测试的结果将出现14个分支,设计中采用IR7-IR4作为测试条件,分配地址为20-37(8进制)。其中20-23是4条访内指令的功用微指令,在这些指令下面通过P(2)测试(测试条件为IR3,IR2),可以转移到相应的4条访内指令。同时对BZC指令通过P(3)(测试条件为C,E),若C或E=1则转入P(4)公操作。通过P(2)P(3)测试者4条访内指令,其分配地址分别为40,41,42,43(8进制)。对于开关指令,经过其公操作,用P(4)测试,测试条件为SWA,SWB,即指令寄存器中的IR0,IR1。可以转移到4条开关指令中去。其分配地址分别为60, 61,62,63(8进制)。
微地址确定后,在微地址表中填入相应微地址单元,最后根据微程序流程图填写相应微命令及微指令代码。
为了向RAM装入程序和数据,检查写入是否正确,并能启动程序执行,还设计了三个控制台操作微程序。
存储器读操作(KRD):拨动总清开关CLC后,当控制台开关SWB、SWA置为“00”时,按START微动开关,可以对RAM进行连续手动读出。
存储器读操作(KWE):拨动总清开关CLC后,当控制台开关SWB、SWA置为“01”时,按START微动开关,可以对RAM进行连续写入。
启动程序:拨动总清开关CLC后,当控制台开关SWB、SWA置为“11”时,按START微动开关,即可转入到第13、01号微地址“取消”微指令,启动程序运行。
上述三条控制台指令用两个开关SWB、SEA的状态来设置,其定义如下:
SWA
SWB
控制台指令
0
0
KRE(读内存)
1
0
KWE(写内存)
1
1
RP(启动主程序)
微指令代码表:
微地址
二进制代码
八进制代码
S3 S2 S1 S0 M Cn WE A9 A8
A
B
C
uA5-uA0
00
01
02
03
04
05
06
07
08
09
0A
0B
0C
0D
0E
0F
10
11
12
13
14
15
16
17
18
19
1A
1B
1C
1D
1E
1F
20
21
22
23
24
25
26
27
28
29
2A
2B
2C
2D
2E
2F
30
31
32
33
34
35
36
37
38
39
0 0 0 0 0 0 0 1 1
0 0 0 0 0 0 0 1 1
0 0 0 0 0 0 0 0 1
0 0 0 0 0 0 0 0 1
0 0 0 0 0 0 0 0 1
0 0 0 0 0 0 0 0 1
0 0 0 0 0 0 0 0 1
0 0 0 0 0 0 0 0 1
0 0 0 0 0 0 0 1 1
0 0 0 0 0 0 0 1 1
0 0 0 0 0 0 0 0 1
0 0 0 0 0 0 0 1 1
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 1
0 0 0 0 0 0 0 1 1
1 0 0 1 0 1 0 1 1
0 0 0 0 0 0 0 1 1
0 0 0 0 0 0 0 1 1
0 0 0 0 0 0 0 1 1
0 0 0 0 0 0 0 1 1
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 1 1 0
0 0 0 0 0 0 0 1 1
0 1 1 1 1 0 0 1 1
0 0 0 0 0 0 0 1 1
0 0 0 0 0 0 0 1 1
0 0 0 0 0 0 0 1 1
0 0 0 0 0 0 0 1 1
0 0 0 0 0 0 0 1 1
0 0 0 0 0 0 0 1 1
0 0 1 1 1 0 0 1 1
0 0 1 1 1 0 0 1 1
0 0 0 0 0 0 0 0 1
0 0 0 0 0 0 1 0 1
0 0 0 0 0 0 0 1 1
0 0 0 0 0 0 0 1 1
0 0 0 0 0 0 0 1 1
1 0 0 1 0 1 0 1 1
0 0 0 0 0 0 0 0 1
0 0 0 0 0 0 0 1 1
1 0 0 1 0 1 0 1 1
1 0 0 1 0 1 0 1 1
0 0 0 0 0 0 0 1 1
1 0 0 1 0 1 0 1 1
0 0 0 0 0 0 0 1 1
0 1 1 0 0 1 0 1 1
0 0 0 0 1 0 0 1 1
0 0 0 0 0 0 0 1 1
0 0 0 0 0 0 0 1 1
0 0 0 0 0 0 0 1 1
1 0 1 1 1 0 0 1 1
0 0 0 0 1 0 0 1 1
0 0 1 0 1 1 0 0 0
0 0 0 0 0 0 0 1 1
0 0 0 1 1 1 0 0 0
0 0 0 0 0 0 0 1 1
0 0 0 0 0 1 1 1 0
0 0 0 0 0 1 1 0 1
000
110
100
010
110
110
010
110
110
110
010
000
010
010
011
110
110
110
110
110
001
000
000
001
001
010
011
010
010
010
000
000
001
000
101
000
000
010
010
011
110
010
011
001
010
010
001
001
011
101
001
001
000
001
000
001
000
000
000
110
000
000
000
000
000
000
110
110
000
000
000
000
011
101
110
110
110
110
000
010
000
010
001
001
001
010
001
010
001
001
000
010
101
000
000
101
000
110
101
101
010
101
010
101
101
101
010
101
101
101
000
100
000
100
101
101
100
110
010
000
010
000
000
010
110
110
000
000
000
000
000
000
110
110
110
110
000
000
000
000
000
000
000
000
000
000
000
000
000
000
110
011
000
010
000
000
000
010
000
000
000
101
000
000
000
110
000
000
000
000
000
000
000
000
001000
000010
010000
000100
100000
000110
000111
100000
001010
001100
111000
000001
111001
001110
001111
100101
000011
000101
001101
100110
000001
000001
010110
000001
000001
101010
101100
101111
110000
110011
110100
110110
000001
000001
000001
100100
000001
100000
100111
101000
101001
100000
101011
000001
101101
101110
000001
000001
110010
000001
000001
000001
110101
000001
110111
000001
001000
001001
018108
01ED82
00C050
00A004
00E0A0
00E006
00A007
00E0A0
01ED8A
01ED8C
00A038
018001
002039
00A00E
01B60F
95EA25
01ED83
01ED85
01ED8D
01EDA6
001001
030401
018016
399A01
019201
01A22A
01B22C
01A42F
01A230
01A433
398224
398236
009001
028401
01DB81
0180E4
018234
95AAE0
00A027
01BC28
95EA29
95AAA0
01B42B
959A01
01A04D
65AB6E
099A01
019A01
01B432
01DB81
B99A01
099A01
2C0035
019801
1C0037
019801
070A08
068A09
模型机数据通路总框图:
模型机数据通路总框图
3.5 微地址转移逻辑设计
1、微地址转移逻辑设计
微地址为6位,用三片双D正沿触发器(74LS74)组成,并带有预置端和清零端,在不判别测试情况下,微地址寄存器的内容为下条微指令的地址。当P(1)、P(2)、P(3)、P(4)及FC、FZ发生时,转移逻辑输出脉冲通过触发器的预置端或清零端将触发器原来的“0”改为“1”或将“1”改为“0”来修改微地址,从而按修改了的微地址读下一条指令。其执行下表所示的逻辑功能:
测试字段
功能
P(1)
用指令寄存器中的IR7-IR4取代微地址的低4位
P(2)
P(3)
当P(2)=1时,用IR3、IR4取代原微地址第1位,第0位
当P(3)=1时,用FC或FZ取代原微地址第4位,若CVE=1,则将第0位置1,第1位置0,即转入公操作。
P(4)
用SWA,SWB取代原微地址中的第1位,第0位
在微地址转移逻辑中还要加入必须的时序控制,其中微地址的修改信号为T4,经过约500ns的延时用T4的上升沿将修改好的微地址打入微地址寄存器中,根据控制要求设计出如下地址转移逻辑电路图:
地址转移逻辑电路图
注:该图IR的排列顺序为I7、I6、I5、I3、I4、I2,FC为进位标志CY,FZ为全零标志ZI
2、微程序控制器设计
由于此次设计的模型机微指令字长24位,故采用三片E2PROM(2816)并联,从而使微指令寄存器长度为24位。指令寄存器由2片74LS273和1片74LS175构成,用来暂存18位微命令,而微地址寄存器用74LS175构成,用来暂存6位微地址,当地址出现子啊E2PROM地址线上时,只要CE有效,那么就将地址所指示单元的内容在T2的上升沿读入微地址寄存器。E2PROM控制存储器,用来存放实现全部指令系统的所有微程序。微命令寄存器存放当前执行指令的微命令,通过这些微命令控制全机的正常运行。转移逻辑用来修改微地址。
根据控制要求设计出如下微程序控制逻辑电路图:
微程序控制逻辑电路图
四、模型计算机组装与调试
4.1 模型机组装
在试验箱中按前述要求将各个器件用排线连接。
4.2 模拟机调试
1、分调。按功能模块将每个微程序分别输入计算机的调试软件进行调试。分调的重点放在调控制台喝微程序控制器部分。根据调试软件上显示的数据流向及返回的结果判定该微程序是否正确。但不执行调通所有微指令后,用连续方法调试整个微程序。
2、总调。将所有微程序输入调试软件,单步运行微程序跑流程图,再用连续方法调试,观察执行结果。最后编写一段演示程序观察结果是否正确。以上结果均正确,则这次设计成功。
4.3 调试程序
该程序功能是完成从1加到5,即1+2+3+4+5;结果为0F。
地址 助记符 硬指令(十六进制) 注释
01 JMP 00,05 08 无条件转移指令,直接寻址
02 05 强制转移到05地址后继续执行
03 01 代码段,存数01
04 02 代码段,存数02
05 03 代码段,存数03
06 CLR R0 70 将R0清零
07 CLR R1 71 将R1清零
08 CLR R2 72 将R2清零
09 LDA 00,03,R0 00 直接寻址将03地址的数01存入R0
0A 03 直接寻址的地址
0B LDA 10,04,R1 21 变址寻址,变址寄存器R2的值00加04
0C 04 后得到新的地址,将该地址的值放入R1。
即将04地址的数02放入R1。
0D MOV R1,R2 86 将R1的值放入R2。此时R2值为02
0E INC R2 B2 R2+1后放回R3。此时R2值为03
0F ADC R1,R0 94 R1+R0的值放回R0。此时R0值为03
10 ADC R0,R2 92 R0+R2的值放回R2。此时R2值为06
11 RLC R1,R0 F4 将R1的值02左移一位后放到R2。
执行完后此时R0的值为04
12 LDA 01,05,R1 11 间接寻址,先以05为地址找到数03,
13 05 然后以03为地址找到数01后放入R1
14 ADC R0,R1 91 R0+R1放入R1,此时R1值为05
15 ADC R0,R1 91 R0+R1放入R1,此时R1值为09
16 ADC R1,R2 96 R1+R2放入R2,此时R2值为0F
17 STA 11,05,R2 36 相对寻址,将R2的值0F存到内存地址
18 03 为当前PC值18+05即地址1B处。
19 OUT R2 5A 将R2的值OF输出显示
1A HALT 60 程序结束,停机
五、附录
附录1:
8位数据原理总图
附录2:
模拟机工作时序波形图
附录3:
寄存器译码电路图
附录4:
微程序流程图
- 14 -
展开阅读全文