计算机组成原理课程设计
Computer Composition Report
学生所在学院: 燕山大学里仁学院
课程设计题目:复杂模型机的设计与实现
学生所在班级: 2018级计算机 班
学 生 姓 名:
学 生 姓 名:
学 生 姓 名:
指 导 教 师:
2020年 12 月
复杂模型机的设计与实现
一、实验目的
综合运用所学的计算机原理知识,设计并实现较为完整的计算机。
二、实验设备
TDN—CM+计算机组成原理实验教学系统一台,排线若干。
三、数据格式及指令系统
1、数据格式
模型机规定采用定点补码表示法表示数据,且字长为8位,其格式如下:
7 6 5 4 3 2 1 0
符号 尾 数
其中第7位为符号位,数值表示范围是:— 1 ≤X< 1。
2.指令格式
模型机设计四大类指令共十六条,其中包括算术逻辑指令、I/O指令、访问及转移指令和停机指令。
(1)算术逻辑指令
设计9条算术逻辑指令并用单字节表示,寻址方式采用寄存器直接寻址,其格式如下:
7 6 5 4 3 2 1 0
OP - CODE rs rd
其中,OP-CODE为操作码,rs为源寄存器,rd为目的寄存器,并规定:
rs 或rd 选定的寄存器
0 0
0 1
1 0 R 0
R 1
R 2
9条算术逻辑指令的名称、功能和具体格式见表6-1。
(2)访问指令及转移指令
模型机设计2条访问指令,即存数(STA)、取数(LDA),2条转移指令,即无条件转移指令(JMP)、结果为零或有进位转移指令(BZC),指令格式为:
7 6 5 4 3 2 1 0
0 0 M OP-CODE r d
D
其中,OP-CODE为操作码,rd为目的寄存器(LDA、STA指令使用)。D为位移量(正负均可),M为寻址模式,其定义如下:
寻址模式M 有效地址E 说 明
0 0
0 1
1 0
1 1 E=D
E=(D)
E=(RI)+D
E=(PC)+D 直接寻址
间接寻址
R I变址寻址
相对寻址
本模型机规定变址寄存器RI指定为寄存器R2。
(3)I / O指令
输入(IN)和输出(OUT)指令采用单字节指令,其格式如下:
7 6 5 4 3 2 1 0
OP - CODE addr rd
其中,addr=01时,选中“INPUT DEVICE”中的开关组作为输入设备,addr=10时,选中“OUTPUT DEVICE”中的数码块作为输出设备。
⑷ 停机指令
指令格式如下:
7 6 5 4 3 2 1 0
OP - CODE 0 0 0 0
HALT指令用于实现停机操作。
⒊ 指令系统
本模型机共有16条基本指令,其中算术逻辑指令7条,访问内存指令和程序控制指令4条,输入输出指令2条,其它指令一条。表7-1列出了各条指令的格式、汇编符号、指令功能。
汇编符号 指令格式 功能
CLR rd
MOV rs,rd
ADC rs,rd
SBC rs,rd 0111 00 rd
1000 rd rd
1001 rs rd
1010 rs rd
0 → rd
rs →rd
rs+rd+cy → rd
rs-rd-cy → rd
LDA M,D,rd
STA M,D,rd
JMP M,D
BZC M,D 0 0 M 0 0 rd
D
0 0 M 0 1 rd
D
0 0 M 1 0 0 0
D
0 0 M 1 1 0 0
D
E → rs
rd → E
E → PC
当CY=1或Z=1时,E → PC
INC rd
AND rs,rd
COM rd
RRC rs,rd
RLC rs,rd 1011 rs rd
1100 rs rd
1101 rs rd
1110
rs
rd
1111
rs
rd
rd+1 → rd
rs∧rd → rd
rd → rd
cy → rs
rs → rd
cy ← rs
rs → rd
IN addr,rd
OUT arrd,rd 0100 0 1 rd
0101 1 0 rd
addr → rd
rd → addr
HALT 0110 0 0 0 0
停 机
表 7 — 1
四、 总体设计
本模型机的数据通路框图如图7—1。根据机器指令系统要求,设计微程序流程图及确定微地址,如图7—2。
图 7— 1 数据通路框图
五、详细设计
实验连接图和微程序流程图如下:
图 7-2 微程序流程图
按照系统建议的微指令格式,参照微指令流程图,将每条微指令代码化,译成二进制代码表,并将二进制代码表转换为联机操作时的十六进制格式文件。
1 12 11 10 9 8 7 6 5 4 3 2 1
B C μA5 μA4 μA3 μA2 μA1 μA0
24 23 22 21 20 19 18 17 16 15 14 13
S3 S2 S1 S0 M CN WE A9 A8 A
A 字 段 B 字 段
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
12 11 10 选择
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 字 段
9 8 7 选择
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 A R
1 1 0 LDPC
六、实验程序
1、实验程序如下:
$P0044
$P0145
$P0294
$P03F0
$P0481
$P0594
$P0604
$P0720
$P0845
$P0900
$P0A20
$P0BA1
$P0C59
$P0D60
2、 实验原理:
本设计是计算(X+Y)*4-Z,首先输入两个八位二进制数。 X=00000011 Y=00000101
做相加运算,把和存放在R0中,然后通过左移一位,实现和乘以2,然后通过MOV ,把 R0移到 R1中,这样做相加,自己加自己,实现再扩大二倍,这样就实现了(X+Y)*4,然后将结果存到20这个单元中去,再通过INPUT 输入Z,Z=00000010,从内存中读出20单元这个数据,做相减9588运算,结果送R1,并输出,最后停机。 程序说明:
$P0044 IN 01 R0 输入X →R0
$P0145 IN 01 R1 输入Y →R1
$P0294 ADC R1 R0 R0+R1→R0
$P03F0 RLC R0 R0 得到 2(X+Y)→R0
$P048,MOV R0 R1 把R0移到R1中
$P0594 ADC R1 R0 R0+R1→R0
$P0604 STA 00 R0 存内存
$P0720 20 存到20单元中
$P0845 IN 01 R1 输入Z →R1
$P0900 LDA 00 R0 读内存
$P0A20 20 从20中读出数据
$P0BA1 SBC R0 R1 R0-R1→R1
$P0C59 OUT R1 输出R1
$P0D60 HALT
停机
七、实验步骤:
1. 按图连接好电路 2. 写程序 联机读/写程序
使用软件中的F1功能写入程序,然后用F4-LOAD 功能装
入机器指令格式文件写入实验箱, 3. 运行程序
联机运行时,进入DEBUG 调试界面,总清开关CLR(0-1)
清零后,程序首地址为00H ,按相应的功能键即可联机运行、调试程序。
实验结果:(用十六进制来表示)
输入X=00000011 Y=00000101 Z=0000010 最终输出结果为:30 结果正确。
六、实验结果与反思
这次课程设计中,基于前几次实验中,对计算机的大致组成以及运行原理有了初步的了解,并且对实验板也比较熟悉了,所以按照实验连接图连线也比较上手了,经过那么多次实验,觉得连线最重要的就是认真,每连完一条线之后,都要检查一遍,看是否连错,这告诉我们,做每一件事都要认认真真的完成,容不得一丝马虎。这次课程设计最重要的就是编写程序了,要想编写程序首次要对程序了解,知道每个助记符对应的机器码是什么意思,对应的二进制的每四位代表什么。在对程序理解的过程中,刚开始不知道程序的十六进制是如何通过助记符转换过来的,经过对指令格式的剖析才知道没个助记符对应的二进制,然后对刚编好的程序进行运行,通过观察CPU一般都是先取机器指令,然后编译,送往寄存器,然后再去指令,再编译,一直这样下去,直到停止为止,此次课程设计程序要点在于如何再现四位二进制乘法过程,最大的收获就是,通过观察大致了解了CPU的运行方式,并且对指令也有了很大的了解,还懂得了合作与请教才是完成任务的最佳方法。
Course Design of Principles of Computer Organization
Guess you like
Origin blog.csdn.net/qq_37412975/article/details/112340477
Recommended
Ranking