天煌THTJZ2型计算机组成原理课程设计.docx
《天煌THTJZ2型计算机组成原理课程设计.docx》由会员分享,可在线阅读,更多相关《天煌THTJZ2型计算机组成原理课程设计.docx(27页珍藏版)》请在冰豆网上搜索。
天煌THTJZ2型计算机组成原理课程设计
计算机组成原理
课程设计
七、参考文献……………………………………………………………………………………..22
一、课程设计的目的
通过对一个简单计算机的设计,对计算机的基本组成、部件的设计、部件间的连接、微程序控制器的设计、微指令和微程序的编制与调试等过程有更深的了解,加深对理论课程的理解。
为今后的科研打下扎实的基础。
二、模型机的设计步骤
设计一台完整的计算机,大致需按如下的顺序来考虑:
1.确定设计目标
确定所设计计算机的功能和用途。
2.确定指令系统
确定数据的表示格式、位数、指令的编码、类型、需要设计哪些指令及使用的寻址方式,并给出具体的编码,比如指令的操作码,地址码等的位数及各种编码的含义。
3.确定总体结构(寄存器、加法器、选择器的设置与数据通路的设计)
总体结构设计包含确定各部件设置以及它们之间的数据通路结构。
在此基础上,就可以拟出各种信息传输路径,以及实现这些传输所需要的微命令。
对于部件设置,比如要确定运算器部件采用什么结构,控制器是微程序控制还是硬联控制等。
综合考虑计算机的速率、性能价格比、可靠性等要求,设计合理的数据通路结构,确定采用何种方案的内总线及外总线。
数据通路不同,执行指令所需要的操作就不同,计算机的结构也就不一样。
4.设计指令执行流程
数据通路确定后,就可以设计指令系统中每条指令的执行流程。
根据指令的复杂程度,确定每条指令所需要的机器周期数。
对于微程序控制的计算机,根据总线结构,需考虑哪些微操作可以安排在同一条微指令中,哪些微操作不能安排在同一条微指令中。
5.确定微程序地址
确定后续微地址的形成方法,确定每个微程序地址及分支转移地址。
6.微指令代码化
根据微指令格式,将微程序流程中的所有微指令代码化。
首先写出每个微地址以及该地址对应的微指令代码(共24位二进制信息),如下表所示:
微地址
S3S2S1S0MCNWEA9A8
A
B
C
UA5…UA0
00
000000011
000
000
100
010000
01
000000011
110
110
110
000010
02
000000001
100
000
001
001000
03
000000001
110
000
000
000100
其中:
微地址表示控制存储器的地址,后面的24位表示微指令。
然后将每个微地址和对应的微指令转换成16进制,并写在一行,格式为:
$M********,前面2个‘*’表示该微指令的在微控制器中的地址,后面6个‘*’表示该微指令代码。
如上述表中的四条微指令写成:
$M00018110:
表示在控制存储器地址00h处的代码是018110h。
$M0101ED82:
表示在控制存储器地址01h处的代码是01ED82h。
$M0200C048:
表示在控制存储器地址02h处的代码是00C048h。
$M0300E004:
表示在控制存储器地址03h处的代码是00E004h。
7.编写工作程序并代码化
编写测试用的工作程序,并写出内存映像,用二进制表示。
然后代码化用16进制来表示,格式为:
$P****,前面2个‘*’表示该内存的地址,后面2个‘*’表示该地址的数据。
例如:
$P0044:
表示在内存地址00h处的数据是44h。
$P0146:
表示在内存地址01h处的数据是46h。
8.联机操作文件的建立
为了从PC机下载工作程序和微程序,需要建立联机操作文件,该文件是普通的文本文件,扩展名为TXT,可用记事本来建立的,要求:
a、测试用的工作程序排在文件的前面,每个内存地址及代码占一行;
b、微指令代码排在文件的后面,每个微地址及微指令代码占一行;
例如,下面是一个实验的文件(文件名:
sample.txt):
$P0044
$P0146
$P0298
$M00018108
$M0101ED82
$M0200C050
9.连接实验线路
根据附录2的实验线路图连接实验线路,其中第1题和第2题用图1(简单模型机的连线图)连线,第3题和第4题用图2(复杂模型机的连线图)连线。
10.下载工作程序和微程序
使用唐都软件将工作程序和微程序下载到实验箱的内存和控制存储器中。
其中,自带电源线的实验箱用NCMP53软件,启动软件后使用F4[装载]进行下载;外接电源线的实验箱用CMPP软件,启动软件后在菜单中选择[转储]/[装载]进行下载。
11.调试
在总调试前,先按功能模块进行组装和分调,因为只有各功能模块工作正常后,才能保证整机的正常运行。
可以使用控制台命令SWA、SWB的不同取值,或使用联机软件检查内存程序是否正确,微程序是否正确。
当所有功能模块都调试正常后,进入总调试。
可以使用单步微指令方式执行工作程序,也可以直接使用连续方式执行程序。
在执行过程中,可以通过联机软件的数据通路图查看信息在计算机中的传送路径,更有利于掌握数据的通路结构。
这样也可以直接验证程序和微程序的正确性。
如果运行结果不正确,需要返回来修改程序或微程序,每次修改后,需要重新完成第10步,将程序和微程序下载到实验箱中。
三、实验装置
***计算机组成原理教学实验系统一台,排线若干。
四、设计题目
题目一:
1.实验要求:
设计一台模型计算机,实现下列指令系统,并通过给定的工作程序验证上述指令系统。
本设计实现的模型机共包含五条机器指令:
IN(输入)、ADD(加法)、STA(存数)、OUT(输出)、JMP(无条件转移),其指令格式如下(前4位为操作码):
助记符
机器指令码(二进制)
说明
微程序的入口地址
(八进制)
IN
00000000
“INPUTDEVICE”中的开关状态—>R0
10
(取指令后续微指令默认地址为10)
ADDaddr
00010000XXXXXXXX
RO+[addr]——>R0
11
STAaddr
00100000XXXXXXXX
RO——>[addr]
12
OUTaddr
00110000XXXXXXXX
[addr]——>LED
13
JMPaddr
01000000XXXXXXXX
addr——>PC
14
其中IN为单字长(8位),其余为双字长指令,XXXXXXXX为addr对应的二进制地址码。
2.在测试程序装入内存后,机器自动执行控存中00号的微指令,产生控制台命令,其流程如下(01为取指微指令的地址):
3.根据附录2的图1(简单模型机的连线图)连接实验线路。
4.本设计的工作程序的内存映象(装入起始地址00H)如下:
地址(二进制)
内容(二进制)
助记符
说明
十六进制代码
00000000
00000000
IN
将输入数据送R0寄存器
0000
00000001
00010000
ADD[OAH]
0110
00000010
00001010
RO+[0AH]—>R0
020A
00000011
00100000
STA[0BH]
0320
00000100
00001011
R0—>[0BH]
040B
00000101
00110000
OUT[0BH]
0530
00000110
00001011
[0BH]—>LED
060B
00000111
01000000
JMP01
0740
00001000
00000001
01H—>PC
0801
00001010
00000001
输入自定的数据
0A01
5.本设计的程序流程图如下:
6.微程序(主要ADD部分)
微地址
S3S2S1S0MCNWEA9A8
A
B
C
UA5…UA0(后续地址)
十六进制代码
03
000000001
110
000
000
000100
0300E004
04
000000001
011
000
000
000101
0400B005
05
000000011
010
001
000
000110
0501A206
06
100101011
001
101
000
000001
06959A01
09
000000011
110
110
110
000011
0901ED83
分析:
程序思想如下:
首先将输入数据送R0寄存器,然后送到ALU单元执行ADD操作,加法完成后将结果再送到R0寄存器,然后STA跳转,将R0寄存器的数据送到0BH,然后送显示器显示,送显后立即JMP指令回到微程序的01步,即继续执行ADD加法,一直循环。
微程序中,当A9=0,A8=0时,选中Y0;
当A9=0,A8=1时,选中Y1;
当A9=1,A8=0时,选中Y2;
当A9=1,A8=1时,选中Y3
微指令解释:
指令中S3…CN为全0表示不执行任何运算操作,A9,A8如开始解释的表示选择外设,均为1表示选中扩展单元(EXUNIT)的Y3,而根据实验接线图可知,Y3表示不做任何操作,A,B,C字段为根据实验线路图中起作用的单元,从09开始A,B,C分别为110,110,110表示LDAR,PC-B,LDPC有效(附录图3),根据数据通路图,即是PC->AR,PC并自动+1,UA5…UA0为000011,即下址为下一条微指令地址03H。
09执行完后根据下址到达03,其中A9,A8为01即是选中Y1,Y1与WE相连表示存储器工作,即RAM->BUS->AR,后续地址为04H。
04指令中,A,B,C字段分别为011,000,000表示LDDR2有效,即表示将内存中的数据传送到DR2寄存器中,RAM->BUS->DR2,后续地址为05H。
05这条指令的A,B,C字段为010,001,000,即是LDDR1,RS-B有效,表示叫R0的数据传送到DR1寄存器中,R0->DR1,后续地址为06H。
06指令既为ADD运算,S3…CN为100101,A,B,C字段为001,101,000,即LDRi,ALU-B逻辑运算单元有效,执行运算操作,将DR1和DR2中的数据相加,完成后将结果传送到R0,(DR1)+(DR2)->R0。
即完成了一次加法操作。
ADD指定完成后有JMP跳转到01H。
一直循环进行加法运算,
微指令代码如下:
$M00018110$M0700E00D$M0E00E00F$M15070A01
$M0101ED82$M08001001$M0F00A015$M1600D181
$M0200C048$M0901ED83$M1001ED92$M17070A10
$M0300E004$M0A01ED87$M1101ED94$M18068A11
$M0400B005$M0B01ED8E$M1200A017
$M0501A206$M0C01ED96$M13018001
$M06959A01$M0D028201$M14002018
7.测试数