计算机组成原理课程设计报告书

计算机组成原理课程设计报告书 目录 一.实验计算机设计 1 1.整机逻辑框图设计 1 2.指令系统的设计 2 3.微操作控制部件的设计 5 4.设计组装实验计算机接线表 13 5.编写调试程序 14 二.实验计算机的组装 14 三.实验计算机的调试 15 1.调试前准备 15 2.程序调试过程 16 3.程序调试结果 16 4.出错和故障分析 16 四.心得体会 17 五.参考文献 17 题目 研制一台多累加器的计算机 一 实验计算机设计 1.整机逻辑框图设计 此模型机是由运算器,控制器,存储器,输入设备,输出设备五大部分组成。

1.运算器又是有299,74LS181完成控制信号功能的算逻部件,暂存器LDR1,LDR2,及三个通用寄存器R0,R1,R2等组成。

2.控制器由程序计数器PC、指令寄存器、地址寄存器、时序电路、控制存储器及相应的译码电路组成。

3.存储器RAM是通过CE和W/R两个微命令来完成数据和程序的的存放功能的。

4输入设备是由置数开关SW控制完成的。

5.输出设备有两位LED数码管和W/R控制完成的 LR0 LR1 LR2 寄存器Ax Bx Cx R0-G R1-G R2-G 数据总线(D_BUS)
ALU-G ALU M CN S3S2S1S0 暂存器LT1 暂存器LT2 LDR1 LDR2 移位寄存器 M S1 S0 G-299 输入设备 DIJ-G 微控器 脉冲源及时序 指令寄存器 LDIR 图中所有控制信号 LPC PC-G 程序计数器 LOAD LAR 地址寄存器 存储器 6116 CE WE 输出设备 D-G W/R CPU 图 1 整机的逻辑框图 图1-1中运算器ALU由U7--U10四片74LS181构成,暂存器1由U3、U4两片74LS273构成,暂存器2由U5、U6两片74LS273构成。微控器部分控存由U13--U15三片2816构成。除此之外,CPU的其他部分都由EP1K10集成。

存储器部分由两片6116构成16位存储器,地址总线只有低八位有效,因而其存储空间为00H--FFH。

输出设备由底板上的四个LED数码管及其译码、驱动构成,当D-G和W/R均为低电平时将数据总线的数据送入数码管显示。在开关方式下,输入设备由16位电平开关及两个三态缓冲芯片74LS244构成,当DIJ-G为低电平时将16位开关状态送上数据总线。在键盘方式或联机方式下,数据可由键盘或上位机输入,然后由监控程序直接送上数据总线,因而外加的数据输入电路可以不用。

本系统的数据总线为16位,指令、地址和程序计数器均为8位。当数据总线上的数据打入指令寄存器、地址寄存器和程序计数器时,只有低八位有效。

2.指令系统的设计 2.1数据格式 数据格式:采用定点补码表示法表示数据,字长为8位,格式如下:
表1补码表示表 7 6 5 4 3 2 1 符 号 尾 数 其中第7位符号位,数值表示范围是:-1≤X≤1 2.2指令格式:
(1)算术逻辑指令 设计9条单字长算术逻辑指令,寻址方式采用寄存器直接寻址。其格式如下:
表2寻址方式 7 6 5 4 3 2 1 0 OP-CODE rs rd 其中OP-CODE为操作码,rs为源寄存器,rd为目的寄存器,并规定:
表3寄存器表 Rs或rd 选定寄存器 00 R0 01 R1 10 R2 9条算术逻辑指令的名称、功能和具体格式见表9。

(2)存储器访问及转移指令 设计的2条访问指令,即存数(STA),取数(LDA),2条转移指令,即无条件转移(JMP),结果为零或有进位转移指令(BZC),指令格式如下:
表4 存储器的访问表 7 6 5 4 3 2 1 0 00 M OP-CODE rd D 其中OP-CODE为操作码,rd为寄存器。M为寻址模式,D为位移量,D随M的不同其定义也不相同,寻址定义如下:
表5寻址模式表 寻址模式M 有效地址E 说 明 00 E=D 直接寻址 01 E=(D)
间接寻址 10 E=(R1)+D R1变址寻址 11 E=(PC)+D 相对寻址 注:本机规定变址寄存器R1指定为寄存器R2。

(3)I/O指令 输入(IN)和输出(OUT)指令采用单字节指令,格式如下 表6 I/O操作码表 7 6 5 4 3 2 1 0 OP-CODE addr rd 其中,当OP-CODE=0100且addr=10时,从“数据输入电路”中的开关组输入数据;
当OP-CODE=0100且addr=01时,将数据送到“输出显示电路”中的数码管显示。

2.3指令系统 本实验共有7条基本指令,其中算术逻辑指令9条,访问内存指令和程序控制指令2条。输入输出指令2条。下面列出了各条指令的格式、汇编符号和指令功能。

表7访问及转移指令格式 汇编符号 指令格式 功能 LDA M,D,RD 00 M 00 RD D E→RS STA M,D,RD 00 M 01 RD D RD→E JMP M,D 00 M 10 00 D E→PC BZC M,D 00 M 11 00 D 当CY=1或Z=1时 E→PC 表8九条算数逻辑指令格式 汇编符号 指令的格式 功能 CLR RD 0111 00 RD 0→RD MOV RS,RD 1000 RS RD RS→RD ADC RS,RD 1001 RS RD RS+RD+CY→RD SBC RS,RD 1010 RS RD RS-RD-CY→RD INC RD 1011 RS RD RD+1→RD AND RS,RD 1100 RS RD RS∧RD→RD COM RD 1101 RS RD RD→RD RRC RS,RD 1110 RS RD CY RS RS→RD RLC RS,RD 1111 RS RD CY RS RS→RD 表9输入输出指令格式 汇编符号 指令格式 功能 IN ADDR ,RD 0100 01 RD ADDR→RD OUT ADDR ,RD 0101 10 RD RD→ADDR 停机指令指令格式如下:
7 6 5 4 3 2 1 0 OP-CODE 00 00 用于实现停机操作。

停机指令名称,功能和具体的格式见下表:
表10停机指令 汇编符号 指令格式 功能 HALT 停机 3.微操作控制部件的设计。

3.1微指令编码的格式设计 设计三个控制操作微程序:
存储器读操作(MRD):拨动清零开关CLR对地址、指令寄存器清零后,指令译码输入CA1、CA2为“00”时,按“单步”键,可对RAM连续读操作。

存储器写操作(MWE):拨动清零开关CLR对地址、指令寄存器清零后,指令译码输入CA1、CA2为“10”时,按“单步”键,可对RAM连续写操作。

启动程序(RUN):拨动清零开关CLR对地址、指令寄存器清零后,指令译码输入CA1、CA2为“11”时,按“单步”键,即可转入到第01号“取指”微指令,启动程序运行 表11 本系统的微程序字长共24位,其控制顺序 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 S3 S2 S1 S0 M Cn WE 1A 1B F1 F2 F3 uA5 uA4 uA3 uA2 uA1 uA0 其中uA5-uA0为6位后续地址,F1,F2,F3为三个译码字段,分别由三个控制位译出多位,。

3.2微操作控制信号设计 微指令中个控制位的含义如下:
S3、S2、S1、S0、M、CN是控制运算器的逻辑和算术运算的微命令。WE是写内存的微命令,状态“1”有效。1A、1B是输入电路选通、内存RAM选通、输出LED选通控制微命令,分别对应状态“11”、“10”、“01”。

状态“00”为无效。F1、F2、F3为三个译码字段,分别由三个控制位经指令译码电路74138译码输出8种状态,前7种状态分别对应一组互斥性微命令中的一个,状态“111”为无效。F3字段包含P1- P4四个测试字位。其功能是根据机器指令代码及相应微指令代码进行译码测试,使微程序转入相应的微地址入囗,从而实现微程序的顺序、分支、循环运行。

表12 F1、F2、F3三个字段的编码方案 F1字段 F2字段 F3字段 15 14 13 选择 12 11 10 选择 9 8 7 选择 0 0 0 LDRi 0 0 0 RAG 0 0 0 P1 0 0 1 LOAD 0 0 1 ALU-G 0 0 1 AR 0 1 0 LDR2 0 1 0 RCG 0 1 0 P3 0 1 1 自定义 0 1 1 自定义 0 1 1 自定义 1 0 0 LDR1 1 0 0 RBG 1 0 0 P2 1 0 1 LAR 1 0 1 PC-G 1 0 1 LPC 1 1 0 LDIR 1 1 0 299-G 1 1 0 P 4 1 1 1 无操作 1 1 1 无操作 1 1 1 无操作 控制操作为P4测试,它以CA1、CA2作为测试条件,出现了写机器指令、读机器指令和运行机器指令3路分支,占用3个固定微地址单元。当分支微地址单元固定后,剩下的其它地方就可以一条微指令占用控存一个微地址单元随意填写。

机器指令的执行过程如下:首先将指令在外存储器的地址送上地址总线,然后将该地址上的指令传送至指令寄存器,这就是“取指”过程。之后必须对操作码进行P1测试,根据指令的译码将后续微地址中的某几位强制置位,使下一条微指令指向相应的微程序首地址,这就是“译码”过程。然后才顺序执行该段微程序,这是真正的指令执行过程。

在所有机器指令的执行过程中,“取指”和“译码”是必不可少的,而且微指令执行的操作也是相同的,这些微指令称为公用微指令。

3.3微程序顺序控制方式设计 3.3.1微程序控制部件组成原理 [1] 运算器单元(ALU UINT)
运算器单元由以下部分构成:两片74LS181构成了并-串型8位ALU;
两个8位寄存器DR1和DR2为暂存工作寄存器,保存参数或中间运算结果。ALU的S0~S3为运算控制端,Cn为最低进位输入,M为状态控制端。ALU的输出通过三态门74LS245连到数据总线上,由ALU-B控制该三态门。

[2] 寄存器堆单元(REG UNIT)
该部分由3片8位寄存器R0、R1、R2组成,它们用来保存操作数用中间运算结构等。三个寄存器的输入输出均以连入数据总线,由LDRi和RS-B根据机器指令进行选通。

[3] 指令寄存器单元(INS UNIT)
指令寄存器单元中指令寄存器(IR)构成模型机时用它作为指令译码电路的输入,实现程序的跳转,由LDIR控制其选通。

[4] 时序电路单元(STATE UNIT)
用于输出连续或单个方波信号,来控制机器的运行。

[5] 微控器电路单元(MICRO-CONTROLLER UNIT)
微控器主要用来完成接受机器指令译码器送来的代码,使控制转向相应机器指令对应的首条微代码程序,对该条机器指令的功能进行解释或执行的工作。由输入的W/R信号控制微代码的输出锁存。由程序计数器(PC)和地址寄存器(AR)实现程序的取指功能。

[6] 逻辑译码单元(LOG UNIT)
用来根据机器指令及相应微代码进行译码使微程序转入相应的微地址入口,从而实现微程序的顺序、分支、循环运行,及工作寄存器R0、R1、R2的选通译码。

[7] 主存储器单元(MAIN MEM)
用于存储实验中的机器指令。

[8] 输入输出单元(INPUT/OUTPUT DEVICE)
输入单元使用八个拨动开关作为输入设备,SW-B控制选通信号。输出单元将输入数据置入锁存器后由两个数码管显示其值。

… … 指令寄存器IR 操作码 微地址寄存器 地址译码 控制存储器 地址转移 逻辑 状态条件 微命令寄存器 P字段 操作控制字段 微命令信号 … … 指令寄存器IR 操作码 微地址寄存器 地址译码 控制存储器 地址转移 逻辑 状态条件 微命令寄存器 P字段 操作控制字段 微命令信号 图2微程序控制原理图 3.3.2微程序入口地址形成方法 由于每条机器指令都需要取指操作,所以将取指操作编制成一段公用微程序,通常安排在控存的0号或特定单元开始的一段控存空间内。

每一条机器指令对应着一段微程序,其入口就是初始微地址。首先由“取指令”微程序取出一条机器指令到IR中,然后根据机器指令操作码转换成该指令对应的微程序入口地址。这是一种多分支(或多路转移)的情况,常用三种方式形成微程序入口地址。

(1)一级功能转移 如果机器指令操作码字段的位数和位置固定,可以直接使操作码与入口地址码的部分位相对应。例如,某计算机有16条机器指令,指令操作码用4位二进制数表示,分别为0000、0001、…、1111。现以字母Q表示操作码,令微程序的入口地址为Q11B,例如000011B为MOV指令的入口地址,000111B为ADD指令的入口地址,001011B为SUB指令的入口地址……。

由此可见,相邻两段微程序的入口地址相差4个单元 (2)二级功能转移 若各类指令的操作码的位数和位置不固定时,需采用分级转移,第一次先按指令类型标志转移,以区分出指令属于哪一类,如单操作数指令、双操作数指令等。在每一类机器指令中的操作码的位数和位置应当是固定的,第二次即可按操作码区分出具体是哪条指令,以便转移到相应微程序入口。

(3)通过PLA电路实现功能转移 可编程逻辑阵列PLA实质上是一种译码-编码阵列,具有多个输入和多个输出,PLA的输入是机器操作码和其他判别条件,PLA的输出就是相应微程序的入口地址,这种方法对于变长度、变位置的操作码的处理更为有效而且转移速度较快。

3.3.3控存的下地址确定方法 在转移到一条机器指令对应的微程序入口地址后,则开始执行微程序,每条微指令执行完毕时,需根据其中的顺序控制字段的要求形成后继微指令地址。

(1)增量方式(顺序-转移型微地址) 这种方式和机器指令的控制方式相类似,它也有顺序执行、转移和转子之分。顺序执行时,后继微地址就是现行微地址加上一个增量(通常为“1”);
转移或转子时,由微指令的顺序控制字段产生转移微地址。因此,微程序控制器中应当有一个微程序计数器(μPC)。为了降低成本,一般情况下部是将微地址寄存器μAR改为具有计数功能的寄存器以代替μPC。

在非顺序执行微指令时,用转移微指令实现转移。转移微指令的顺序控制字段分成两部分:转移控制字段(BCF)与转移地址字段(BAF) “起始和转移地址发生器”的功能有两个:其一是当一条新的机器指令装入IR时,它就形成机器指令的微程序段的起始地址且装入μPC,而且随着节拍电位信号的到来,μPC自动地增加一个增量,以便连续地从CM中读出微指令,相应的微操作控制信号按规定顺序发送到CPU的各个部分。第二个功能是当微指令指示其测试状态标志、条件代码或机器指令的某些位时,它就对指定的条件进行测试,若满足转移条件,就把新的转移地址装入μPC,实现转移;
否则不装入新地址,微程序就顺序执行。所以,每次从CM中取出一条新的微指令时,μPC都增加,只有下列情况例外:
• 遇到END微指令时,就把“取指”微程序的入口地址装入μPC,开始取指令周期;

• 当一条新的指令装入IR时,就把该指令的微程序的入口地址装入μPC;

• 遇到转移微指令且满足转移条件时,就把转移地址装入μPC。

增量方式的优点是简单,易于掌握,编制微程序容易,每条机器指令所对应的一段微程序一般安排在CM的连续单元中;
其缺点是这种方式不能实现两路以上的并行微程序转移,因而不利于提高微程序的执行速度。

(2)断定方式 断定方式与增量方式不同,它不采用μPC,微指令地址由微地址寄存器μAR提供。在微指令格式中,设置一个下地址字段,用于指明下一条要执行的微指令地址。当一条微指令被取出时,下一条微指令的地址(即下地址字段)送μAR。它相当于每条微指令都具有转移微指令的功能。采用这种方法就不必设置专门的转移微指令,但增加了微指令字的长度。

(3)增量方式与断定方式的结合 这种控制方式中,微地址寄存器μAR有计数的功能(断定方式中的微地址寄存器μAR无计数功能),但在微指令中仍设置一个顺序控制字段,这是一种增量方式与断定方式相结合的方式。其顺序控制字段一般由两部分组成:顺序地址字段和测试字段。

① 顺序地址字段。可由设计者指定一般是微地址的高位部分,用来指定后继微地址在CM中的某个区域内。

② 测试字段。根据有关状态的测试结果确定其地址值,一般对应于微地址的低位部分,相当于在指定区域内确定具体的分支。所依据的测试状态可能是指定的开关状态、指令操作码、状态字等。测试字段如果只有一位,则微地址特产生两路分文;
若有两位,则最多可产生四路分支;
依此类推,测试字段为n位为最多可产生2n路分支。

③ 若无转移要求,则微地址寄存器计数得到后继微指令的地址。

3.3.4微程序在控存中的分布情况 3.4微程序设计:
3.4.1写出每条指令对应的微程序流程图 控制开关 00 P(4)测试 MWE(01)
MRD(00) RUN(11) PC AR,PC+1 11 PC AR,PC+1 10 13 (D_INPUT) D_BUS LT1 14 RAM D_BUS LT1 12 01 LT1 RAM 74 LT1 LED 73 图3微程序流程图 图4 微程序流程图 4.设计组装实验计算机接线表 图5 单片机键盘实验连线图 5.编写调试程序:
要写出调试程序、每条指令所对应的机器码(16进制编码)、程序在内存中的存放位置。

地址 指令 助记符 说明 00H 01000100 IN R0 DATA1àR0 01H 01000101 IN R1 DATA2àR1 02H 10010001 ADC R0,R1 [R0]+[R1]àR1 03H 00000101 STA R1,[34]H [R1]à[34]H 04H 00110100 05H 10000110 MOV R1,R2 [R1]àR2 06H 01011010 OUT R2 直接寻址方式 07H 01000100 L:IN R0 DATAàR0 08H 00000001 LDA [34]H,R1 [[34]H]àR1 09H 00110100 0AH 10000001 ADC R0,R1 [R0]+[R1]àR1 0BH 00000101 STA R1,[34]H [R1]à[34]H 0CH 00110100 0DH 10000110 MOV R1,R2 [R1]àR2 0EH 01011010 OUT R2 直接寻址方式 0FH 00001000 JMP L 无条件跳转 10H 00000111 二.实验计算机的组装 连接硬件系统,如图5连线图 三.实验计算机的调试 1.调试前准备 1、按照实验指导说明书连接硬件系统 2、启动实验软件,打开实验课题菜单,选中实验课题打开实验课题参数对话窗口:
微指令操作: 1)写:在编辑框中输入实验指导书中的微指令程序(格式:两位八进制微地址+空格+六位十六进制微代码),或直接打开随机附带的程序EX8.MSM,将实验箱上的K4K3K2K1拨至“0010”写状态,然后按“写入“按钮,微程序写入控制存储器电路; 2)读:将实验箱上的K4K3K2K1拨至“0100”读状态,在“读出微地址”栏中填入两位八进制地址,按“读出“按钮,则相应的微代码显示在“读出微代码”栏中; 3)保存:按“保存“按钮,微程序代码保存在一给定文件(*.MSM)中; 4)打开:按“打开“按钮,打开已有的微程序文件,并显示在编辑框中 机器指令操作:
1)写:在编辑框中输入实验指导书中机器指令程序(格式:两位十六进制地址+空格+2位或 4位十六进制代码),或直接打开随机附带的程序EX8.ASM,将实验箱上的K4K3K2K1拨至 “0101”运行状态,拨动“CLR”开关对地址和微地址清零,然后按“写入“按钮,机器指令写 入存储器电路;注:对于8位机,十六进制代码为2位;
对于16位机,十六进制代码可以是2位,也可以是4位。

2)读:将实验箱上的K4K3K2K1拨至“0101”运行状态,在“读出指令地址”栏中填入两位十六进制地址,拨动“CLR”开关对地址和微地址清零,然后按“读出“按钮,则相应的指令代码显示在“读出指令代码”栏中。

3)保存:按“保存“按钮,机器指令程序保存在一给定文件(*.ASM)中。

4)打开:按“打开“按钮,打开已有的机器指令程序文件,并显示在编辑框中。

5)单步:在运行状态下运行程序前,先拨动“CLR”开关对地址和微地址清零,然后每按一次“单步“按钮,执行一条微指令。可从实验箱的指示灯和显示LED观察单步运行的结果。

6)连续:在连续运行程序前,先拨动“CLR”开关对地址和微地址清零,然后按“连续“按钮,可连续执行程序。可从实验箱的指示灯和显示LED观察连续运行的结果。

7)停止:在连续运行程序过程中,可按“停止”按钮暂停程序的执行。此时地址和微地址并不复位,仍可以从暂停处单步或连续执行. 2.程序调试过程 在进行机器指令的操作时,完成对数据的写读之后,保存机器指令后可进行单步运行,也可以进行连续运行。在单步运行状态下运行程序前,先拨动“CLR”开关对地址和微地址清零,然后每按一次“单步“按钮,执行一条微指令。从实验箱显示LED观察单步运行的结果。在连续运行程序前,先拨动“CLR”开关对地址和微地址清零,然后按“连续“按钮,可连续执行程序。

3.程序调试结果 从实验箱显示LED观察连续运行的结果。如:
输入0.15 LED显示:0.68 4.出错和故障分析 1.出现的故障 1)连接好线路后,程序运行不正常。

2)数据输入错误 2.故障分析查找 对于故障1)经过检查后发现是器件接触不良,我们更换导线后,设备运行正常。

对于故障2)经过分析后发现是数据输入和读出是开关状态没有设置好。

四.心得体会 本次课程设计是有关基本模型机的设计与实现,在实验过程中,我按照具体的要求连接好了实验连线图,对照“二进制代码表”手动输入一个循环下的数据,经验证后可以正常运行。然后采用联机的方式来观察数据的显示情况,具体观察情况已经在前面作过说明。虽然其中还存在一些问题,但对于微程序我已经有了一定的了解。在这次实验中,我也发现以前我在学习微程序指令这一章节的时候,对于微指令可以说是很不理解,很多问题没有解决,比如指令的传送过程﹑取址寻址过程﹑微程序的产生方式,还有一些流程图也看得不是很明白。不过,通过本次课程设计,亲手体验设计和实现基本模型机的过程,对于程序设计的各个部件大致已经有了了解,程序的执行流程也基本上弄清楚了;
能够根据控制开关的状态来判断指令的具体操作;
对于输入﹑二进制加法﹑存数﹑输出及无条件转移五条机器指令的具体执行方式也没有太多的问题。

另外,在联机运行下观察数据流程时,也出现过一些问题,如执行通路为死循环,数据无法传入指令寄存器IR,无法完成地址的传送等,不过通过自己的努力,还是将这次实验完成。

最后,通过一周的课程设计,我对计算机组成原理有了更深的理解,更使自己深刻地认识到实践的重要性,只有理论、实践相结合才能达到很好的学习效果,特别是程序语言的学习。值得欣喜的是,这次饰演不仅使我对于单片机及计算机硬件体系有了更进一步的了解,还让学到了更多有关设计方面的内容,尽管对于新指令的设计我并没有设计成功,不过,我想这仍对我今后的学习会有很大的帮助。以后我将更加努力的学习这方面的知识,使自己的综合能力能有进一步的提高。

参考文献 1白中英著 《计算机组成原理第四版》
北京:科学出版社 2008 2杨雨彤著 《计算机组成原理实验指导书》沈阳:沈阳理工大学 2010 3马秀丽,刘念著 《EL--JY--II型计算机组成原理实验系统实验指导书》
沈阳理工大学信息学院应用教研室 2007