计算机组成原理课程设计报告
030315班
07036084
杨明哲
一、实验要求
利用FD-CES实验仪器提供的硬件资源(功能模块、控制台及外设等),可按设计、组装、调试三个步骤研制一台微程序控制的实验计算机。
二、实验目的
通过微指令系统、指令系统、应用程序的整套设计,熟悉计算的硬件结构和基本运作原理,理解程序存贮和控制的基本机制。掌握计算机系统研制的基本方法和技能。
三、实验设备
设备概述
² 该实验采用FD-CES实验机的调试方案一进行设计。要求KA、KB、KC、KR分别置右、左、左、右。
² 运算器采用多累加器结构
² 指令系统的外设内存统一编址、统一操作
² 内存寻址方式:
n 寄存器直接寻址
n 1寄存器间接寻址
n 直接寻址
n 立即数寻址
² 微程序设计微操作信号发生器
设备模块组成
² 运算器模块:本模块主要由算术逻辑单元ALU、累加器A、累加器暂存器ACT、暂存器AMP、缓冲器BUFFUR以及进位产生线路和累加器A判零线路等组成。算术逻辑ALU是核心,有两片74181组成。它可以对两个8位2进制数进行多种算术和逻辑运算。累加器暂存寄存器ACT采用74377,CG为低电平且接数控制脉冲CC电平正跳时ACT接数。暂存器TMP采用三态输入锁存器74373。当它的接数控制端CT为高电平时接受内部数据总线IDB上的信息;当它的输出控制端OT为低电平时,其所存信息加到ALU的B组输出端参加运算。输出缓冲区BUFFER采用三态输出器件74245,有OD信号控制,OB为0时,BUFFER开通,此时其输出等于输入;当OB为1时,BUFFER不通,此时其输出呈高阻。累加器A采用74198,它具有并行接数、左移、右移、保持等功能。
² 寄存器堆模块:本模块提供了4个8位的通用寄存器R0—R3,它由两片74670组成。模块把这两片74670的GR、GW分别相连,使它们构成4个8位长的寄存器,合并后的GR、GW分别作为寄存器的读、写控制信号RR、WR被引出。模块把这两片74670的WA、RA连在一起,作为信号A引出;把这两片的模块WB、RB连在一起,作为信号B引出。
² 指令部件模块:它由指令寄存器、程序计数器和指令译码器三部分组成。指令寄存器共16位,分IR1、IR2,用来接收和寄存内部数据总线IDB上的指令信息。当IR1的接数控制脉冲端CI出现电平正跳变时接数,否则不受控制,被直接引出,以供使用。IR2是三态输出的8位寄存器,当它的接数控制脉冲端CL出现电平正跳变时接数,当它的输出控制OI为低电平输出,OI为高电平时IR2输出呈高阻。
² 内存模块:本模块由一片2048*2bit的静态RAM电路6116及其操作控制电路组成。当要对6116进行读操作时,应使片选端CS’为低电平,读控制端R’为低电平,写控制W’为高电平,此时ODB上的信息为从6116中地址由OAB6——OAB9决定的单元读出的内容。当要对6116进行写操作时,应使片选端CS’为低电平,读控制端R’为高电平,写控制W’为低电平,此时ODB上的信息为从6116中地址由OAB6——OAB9决定的地址单元中。
² 总线缓冲模块:它用于对总线信息进行控制传送和驱动。由3片三态总线传输器件组成。地址总线的传送指的是内部地址总线IAB到外部地址总线OAB的单向传送,而数据总线的传送是双向的。
² 微程序控制模块:本模块主要由11位微地址计数器MPC,2K*24bit的控存CM及24位微指令寄存器MIR组成。停机时可由控制器对控存进行读写,微地址由OAB经74157提供,运行时控存的工作与M|CM开关状态MF无关,此时控存处于只读不写状态。
² 启停和时序模块:本模块由运行触发器RUN脉冲延迟电路等组成。启停线路由U25的一个D触发器RUN承担,每当控制台STEP键或STAT键按下后RUN被置1,此时RO=1、RF=0,显示器上小数点亮;每当STOP键或RET按下后,RUN被置0,此时RF=1,RO=0,显示器上小数点消失。
² 控制台控制模块:本模块主要功能是智能化FD-CES控制台,并能自动测量、显示实验数据。它控制FD-CES控制台显示器、键盘的打印机,管理执行使用者键入的操作命令,它与实验仪其他部件连线均已连好。
四、新增的指令系统
指令助记符 | 指令功能 | 节拍 | 微操作 | 控制信号 |
取指 微指令 | | T0 | (PC)→1AB→OAB→M | PCO,BI |
(M)→ODB→IDB→IR1 | RC,B2,B3,CI,GI | |||
(PC)+1→PC | P+1,CK | |||
(MD)→MPC接数 | MLD | |||
AND A,Ai | (A and Ai) →A | T1 | (A)→BUFFER→IDB→ACT | |
T2 | (ACT)and(Ai)→A 置CY | RR,A,B,CT,OT, Cn,M,,S3,S2,S1,S0, X0,X1,CA,SA,SB,CP | ||
OR A,Ai | (A or Ai) →A | T1 | (A)→BUFFER→IDB→ACT | |
T2 | (ACT)or(Ai)→A | RR,A,B,CT,OT, Cn,M,,S3,S2,S1,S0, X0,X1,CA, | ||
置CY | SA,SB,CP | |||
XOR A,Ai | (A xor Ai) →A | T1 | (A)→BUFFER→IDB→ACT | |
T2 | (ACT)xor(Ai)→A | RR,A,B,CT,OT, Cn,M,,S3,S2,S1,S0, X0,X1,CA, | ||
置CY | SA,SB,CP | |||
NOT A | (not A) →A | T1 | (A)→BUFFER→IDB→TMP →ALU→A | Cn,M,S3,S2,S1,S0, X0,X1,CA |
DEC Ai | (Ai-1) →Ai | T1 | (Ai)→IDB→TMP→ALU | A,B,RR,CT,OT |
(ALU-1)→A | Cn,M,S3,S2,S1,S0 X0,X1,CA | |||
T2 | (A)→BUFFER→IDB→Ai | | ||
INC Ai | (Ai+1) →Ai | T1 | (Ai)→IDB→TMP→ALU | A,B,RR,CT,OT |
ALU+1→A | Cn,M,S3,S2,S1,S0 X0,X1,CA | |||
T2 | (A)→BUFFER→IDB→Ai | | ||
MOV Ai,Aj | (Ai) →Aj | T1 | (Ai)→IDB→TMP→ALU→A | A,B,RR,CT,OT, Cn,M,S3,S2,S1,S0 X0,X1,CA |
T2 | (A)→BUFFER→IDB→Aj | | ||
NOT Ai | (not Ai) →Ai | T1 | (Ai)→IDB→TMP→ALU | A,B,RR,CT,OT |
(not ALU)→A | Cn,M,S3,S2,S1,S0 X0,X1,CA | |||
T2 | (A)→BUFFER→IDB→Ai | |
五、新增指令系统微指令程序
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
六、新增指令的测试程序
1. AND A,Ai、OR A,Ai、XOR A,Ai、NOT A的测试程序
003
004 55
005 80 LDA 002 ;程序入口点
006 02
007 44 MOV A0.A
008 80 LDA 003
009 03
00B A0 STA 004
00D FF HALT
2. DEC Ai、INC Ai的测试程序
001 ;结果存放区域
002 01
003 80 LDA 002 ;程序入口点
004 02
005 44 MOV A0,A
006 24 INC A0
007 40 MOV A,A0
009 01
3. MOV Ai,Aj的测试程序
003
004 00
005 80 LDA 002 ;程序入口点
006 02
007 44 MOV A0,A
008 25 MOV A1,A0
009 41 MOV A,A1
00B 04
七、应用程序设计
I、打印机的工作原理和使用方法
上面是打印机的等效框图,图中各符号含义如下:
PA 打印机设备选择 高电平有效
PB 打印机状态 PB=0表示打印机空闲,复位后PB=0,
打印机打印过程中PB=1
RO 运行时RO=1
WC CPU写存贮器 低电平有效
实验计算机运行中(RO=1),当需要输出数据打印时,应执行指令使OAB10=1(选外设),PA=1(选打印机),WC有效(负脉冲)。这样,可将ODB总线上的数据写入数据缓冲器中,同时使PB=1(这时不允许再向打印机输出数据),并启动打印机从缓冲器取出数据打印。“打印完成”使打印机状态PB为“
打印机有A、B、C三个字轮,每个字轮有14个字符。具体的编码见下表(其中“凵”代表空格)
编码 | 00H | 01H | 02H | 03H | 04H | 05H | 06H | 07H | 08H | 09H | 0AH | 0BH | 0CH | 0DH |
A组 字符 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | — | , | . | # |
B组 字符 | G | K | P | D | 5/4 | M | + | - | 凵 | R | A | |||
C组 字符 | + | × | * | S | T | M | C | = | 凵 | - | % | E |
打印初始位置在最右边,打印时从右到左,先打印一个C组字符,再打印的字符为一个B组字符,然后可打印14个A组字符之一。
若输出竖直大于0EH,则打印这个数模10H以后的数字,且打印完后自动回车换行(这也是打印机回车的唯一方法),所以要输出某字符后回车,可以输出次数字加10H。
由于大衣呢及初始位置可能不在行首,所以最好在打印前先初始化(输出一个回车换行符,如1AH),然后输出要打印的字符序列。
II、打印程序设计
1. 功能说明:
² 该程序能以000H和001H存贮单元内的数据作为内存数据区的首地址和末地址,连续打出该区间内的所有数据。
² 实现了程序和数据的独立性。可以在不改变程序的情况下,通过添加新的打印数据(字模)来得到全新的输出。
² 通过
2. 程序代码:
000 ;数据区首地址
001 ;数据区末地址
;打印机的初始化
002 80 LDA 404;程序的入口点
003 04
005 02
006 60 MOV A,1AH
007
009 02
00B 04
00D E8 JC 00AH
00E
;A0、A1初始化
010 00
011 44 MOV A0,A
012 80 LDA 001H
013 01
014 45 MOV A1,A
;程序的核心部分
;终止判断
015 41 MOV A,A1
016 04 SUB A,A0
017 E0 JC 028H
018 28
;取打印数据
019 40 MOV A,A0
01B 1D
01D
;打印和等待循环
01E A4 STA 402
020 84 LDA 404
021 04
023 E8 JC 020H
024 20
;打印下一个字符
025 24 INC A0
027 15
;停机
028 FF HALT
3. 运行结果:
1. 图形输出
² 数据区为以下代码
² 将该数据输入内存,并将内存数据的首地址写入到000H单元,将末地址写入到001H单元,从002H处启动程序。
² 运行结果如下
我们可以看到一颗美丽的心
2. 数字的成组输出
² 数据区为以下代码
² 将该数据输入内存,并将内存数据的首地址写入到000H单元,将末地址写入到001H单元,从002H处启动程序。
² 运行结果如下:
是一个数字组成的三角形
八、遇到的问题及解决方案
² 应用程序逻辑错误
n 重修修改程序逻辑
² 寻址方式误解
n 理解模型机的各种寻址方式
² 忘记调出控存内容
n 从EEPROM的000~090H处调出控存内容
九、实验心得
² 通过这次的课程设计,使我更深刻的理解了“指令”、“微程序”、“微指令”、“微操作”这些概念的深层含义。
² 对怎样由汇编语言级这一表示层到机器硬件这一执行层的具体机理有了深刻的了解。
² 学会了怎样由汇编语言生成对应的机器码。
² 尝试使用外设,并成功应用。对外设如何和计算机接口有了一定程度的理解。
评论