登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

秒大刀 博客

好好学习 天天向上

 
 
 

日志

 
 
 
 

计算机组成原理课程设计  

2006-12-09 09:37:00|  分类: 技术积累 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

 

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

 

030315

07036084

杨明哲

2006-4-19

一、实验要求

利用FD-CES实验仪器提供的硬件资源(功能模块、控制台及外设等),可按设计、组装、调试三个步骤研制一台微程序控制的实验计算机。

 

二、实验目的

       通过微指令系统、指令系统、应用程序的整套设计,熟悉计算的硬件结构和基本运作原理,理解程序存贮和控制的基本机制。掌握计算机系统研制的基本方法和技能。

 

三、实验设备

设备概述

²      该实验采用FD-CES实验机的调试方案一进行设计。要求KAKBKCKR分别置右、左、左、右。

²      运算器采用多累加器结构

²      指令系统的外设内存统一编址、统一操作

²      内存寻址方式:

n       寄存器直接寻址

n       1寄存器间接寻址

n       直接寻址

n       立即数寻址

²      微程序设计微操作信号发生器

 

设备模块组成

²      运算器模块:本模块主要由算术逻辑单元ALU、累加器A、累加器暂存器ACT、暂存器AMP、缓冲器BUFFUR以及进位产生线路和累加器A判零线路等组成。算术逻辑ALU是核心,有两片74181组成。它可以对两个82进制数进行多种算术和逻辑运算。累加器暂存寄存器ACT采用74377CG为低电平且接数控制脉冲CC电平正跳时ACT接数。暂存器TMP采用三态输入锁存器74373。当它的接数控制端CT为高电平时接受内部数据总线IDB上的信息;当它的输出控制端OT为低电平时,其所存信息加到ALUB组输出端参加运算。输出缓冲区BUFFER采用三态输出器件74245,有OD信号控制,OB0时,BUFFER开通,此时其输出等于输入;当OB1时,BUFFER不通,此时其输出呈高阻。累加器A采用74198,它具有并行接数、左移、右移、保持等功能。

²      寄存器堆模块:本模块提供了48位的通用寄存器R0R3,它由两片74670组成。模块把这两片74670GRGW分别相连,使它们构成48位长的寄存器,合并后的GRGW分别作为寄存器的读、写控制信号RRWR被引出。模块把这两片74670WARA连在一起,作为信号A引出;把这两片的模块WBRB连在一起,作为信号B引出。

²      指令部件模块:它由指令寄存器、程序计数器和指令译码器三部分组成。指令寄存器共16位,分IR1IR2,用来接收和寄存内部数据总线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位微地址计数器MPC2K*24bit的控存CM24位微指令寄存器MIR组成。停机时可由控制器对控存进行读写,微地址由OAB74157提供,运行时控存的工作与M|CM开关状态MF无关,此时控存处于只读不写状态。

²      启停和时序模块:本模块由运行触发器RUN脉冲延迟电路等组成。启停线路由U25的一个D触发器RUN承担,每当控制台STEP键或STAT键按下后RUN被置1,此时RO=1RF=0,显示器上小数点亮;每当STOP键或RET按下后,RUN被置0,此时RF=1RO=0,显示器上小数点消失。

²      控制台控制模块:本模块主要功能是智能化FD-CES控制台,并能自动测量、显示实验数据。它控制FD-CES控制台显示器、键盘的打印机,管理执行使用者键入的操作命令,它与实验仪其他部件连线均已连好。


四、新增的指令系统

 

指令助记符

指令功能

节拍

微操作

控制信号

取指

微指令

 

T0

(PC)1ABOABM

PCO,BI

(M)ODBIDBIR1

RC,B2,B3,CI,GI

(PC)+1PC

P+1,CK

(MD)MPC接数

MLD

AND A,Ai

(A and Ai)

A

T1

(A)BUFFERIDBACT

OB,CC,CG

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)BUFFERIDBACT

OB,CC,CG

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)BUFFERIDBACT

OB,CC,CG

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)BUFFERIDBTMP

ALUA

OB,CT,OT,

Cn,M,S3,S2,S1,S0,

X0,X1,CA

DEC Ai

(Ai-1)

Ai

T1

(Ai)IDBTMPALU

A,B,RR,CT,OT

(ALU-1)A

Cn,M,S3,S2,S1,S0

X0,X1,CA

T2

(A)BUFFERIDBAi

OB,A,B,WR

INC Ai

(Ai+1)

Ai

T1

(Ai)IDBTMPALU

A,B,RR,CT,OT

ALU+1A

Cn,M,S3,S2,S1,S0

X0,X1,CA

T2

(A)BUFFERIDBAi

OB,A,B,WR

MOV Ai,Aj

(Ai)

Aj

T1

(Ai)IDBTMPALUA

A,B,RR,CT,OT,

Cn,M,S3,S2,S1,S0

X0,X1,CA

T2

(A)BUFFERIDBAj

OB,A,B,WR

NOT Ai

(not Ai)

Ai

T1

(Ai)IDBTMPALU

A,B,RR,CT,OT

(not ALU)A

Cn,M,S3,S2,S1,S0

X0,X1,CA

T2

(A)BUFFERIDBAi

OB,A,B,WR

 

五、新增指令系统微指令程序

[因表格太宽排版简陋还请原谅]

[怎样看到全部表格?

先打开Word,将页面格式调整为A4横向,然后从网页上复制下面显示不完全的表格,粘贴到Word中即可。]

[本人认为163这样强制地切割页面而不加入滚动条是一个BUG!]

 

指令助记符

23

22

21

20

19

18

17

16

15

14

13

12

11

10

9

8

7

6

5

4

3

2

1

0

指令码

(十六进制)

信号

S3

S2

S1

S0

Cn

M

X1

X0

OI

CL

CP

S

CG

OT

LP

OB

GI

P+1

DR

MLD

WC

RC

RR

WR

有效电平

*

*

*

*

*

*

*

*

0

1

1

*

0

0

0

0

0

1

0

0

0

0

0

1

取指微指令

0

0

0

0

0

0

0

0

1

0

0

0

1

0

1

1

0

1

1

0

1

0

1

0

008B6A

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

AND A,Ai

0

0

0

0

0

0

0

0

1

0

0

0

0

0

1

0

1

1

0

0

1

1

1

0

0082BE

 

1

1

0

0

0

1

1

1

1

0

1

0

1

1

0

0

1

1

0

0

1

1

0

1

B7ABBC

 

0

0

0

0

0

0

0

0

1

0

0

0

1

0

1

1

0

1

1

0

1

0

1

0

008B6A

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

OR A,Ai

0

0

0

0

0

0

0

0

1

0

0

0

0

0

1

0

1

1

0

0

1

1

1

0

0082BE

 

1

1

1

0

0

1

1

1

1

0

1

0

1

1

0

0

1

1

0

0

1

1

0

1

E7ABBC

 

0

0

0

0

0

0

0

0

1

0

0

0

1

0

1

1

0

1

1

0

1

0

1

0

008B6A

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

XOR A,Ai

0

0

0

0

0

0

0

0

1

0

0

0

0

0

1

0

1

1

0

0

1

1

1

0

0082BE

 

0

1

1

0

0

1

1

1

1

0

1

0

1

1

0

0

1

1

0

0

1

1

0

1

67ABBC

 

0

0

0

0

0

0

0

0

1

0

0

0

1

0

1

1

0

1

1

0

1

0

1

0

008B6A

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

NOT A

0

1

0

1

0

1

1

1

1

0

0

0

1

0

1

0

1

1

0

0

1

1

1

0

578ABE

 

0

0

0

0

0

0

0

0

1

0

0

0

1

0

1

1

0

1

1

0

1

0

1

0

008B6A

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

指令助记符

23

22

21

20

19

18

17

16

15

14

13

12

11

10

9

8

7

6

5

4

3

2

1

0

指令码

(十六进制)

信号

S3

S2

S1

S0

Cn

M

X1

X0

OI

CL

CP

S

CG

OT

LP

OB

GI

P+1

DR

MLD

WC

RC

RR

WR

有效电平

*

*

*

*

*

*

*

*

0

1

1

*

0

0

0

0

0

1

0

0

0

0

0

1

取指微指令

0

0

0

0

0

0

0

0

1

0

0

0

1

0

1

1

0

1

1

0

1

0

1

0

008B6A

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

DEC Ai

1

1

1

1

1

1

0

0

1

0

1

0

0

1

1

1

1

1

0

0

1

1

0

1

FBA7BC

 

0

0

0

0

0

0

0

0

1

0

0

0

1

1

1

0

1

1

1

0

1

1

1

1

008EBF

 

0

0

0

0

0

0

0

0

1

0

0

0

1

0

1

1

0

1

1

0

1

0

1

0

008B6A

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

INC Ai

0

0

0

0

0

0

1

1

1

0

1

0

0

1

1

1

1

1

0

0

1

1

0

1

03A7BC

 

0

0

0

0

0

0

0

0

1

0

0

0

1

1

1

0

1

1

1

0

1

1

1

1

008EBF

 

0

0

0

0

0

0

0

0

1

0

0

0

1

0

1

1

0

1

1

0

1

0

1

0

008B6A

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

MOV Ai,Aj

1

0

1

0

1

1

1

1

1

0

0

0

1

0

1

0

0

1

1

1

1

1

0

1

AF8A7C

 

0

0

0

0

0

0

0

0

1

0

0

0

1

0

1

1

0

1

1

0

1

0

1

0

008B6A

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

NOT Ai

0

0

0

0

0

1

1

1

1

0

0

0

0

1

1

1

1

1

0

0

1

1

0

1

0787BC

 

0

0

0

0

0

0

0

0

1

0

0

0

1

1

1

0

1

1

1

0

1

1

1

1

008EBF

 

0

0

0

0

0

0

0

0

1

0

0

0

1

0

1

1

0

1

1

0

1

0

1

0

008B6A

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

六、新增指令的测试程序

1.              AND A,AiOR A,AiXOR A,AiNOT A的测试程序

002      F0

003      0F

004      55

005      80  LDA 002         ;程序入口点

006      02 

007      44  MOV A0.A

008      80  LDA    003

009      03 

00A     24        ;假设要测试的微程序在CM中的地址为00F

00B     A0 STA 004

00C     04 

00D     FF HALT

 

2.              DEC AiINC Ai的测试程序

001           ;结果存放区域

002      01

003      80  LDA 002         ;程序入口点

004      02 

005      44  MOV A0,A

006      24  INC A0

007      40  MOV A,A0

008      A0 STA 001

009      01 

00A     FF HALT

 

3.              MOV Ai,Aj的测试程序

002      F0 

003      0F 

004      00 

005      80  LDA 002         ;程序入口点

006      02 

007      44  MOV A0,A

008      25  MOV A1,A0

009      41  MOV A,A1

00A     A0 STA 004

00B     04 

00C     FF HALT

 


 

七、应用程序设计

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为“0。以后再次向打印机输出数据。

 

      打印机有ABC三个字轮,每个字轮有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组字符,然后可打印14A组字符之一。

 

      若输出竖直大于0EH,则打印这个数模10H以后的数字,且打印完后自动回车换行(这也是打印机回车的唯一方法),所以要输出某字符后回车,可以输出次数字加10H

 

      由于大衣呢及初始位置可能不在行首,所以最好在打印前先初始化(输出一个回车换行符,如1AH),然后输出要打印的字符序列。

 

II、打印程序设计

1.            功能说明:

²      该程序能以000H001H存贮单元内的数据作为内存数据区的首地址和末地址,连续打出该区间内的所有数据。

²      实现了程序和数据的独立性。可以在不改变程序的情况下,通过添加新的打印数据(字模)来得到全新的输出。

²      通过01A地址的STA 01DH语句对处于01C单元的LDA语句的地址部分进行修改实现“指针”功能,达到动态访问内存数据的目的。

 

2.            程序代码:

000           ;数据区首地址

001           ;数据区末地址

;打印机的初始化

002      80  LDA 404;程序的入口点

003      04 

004      F0  JA0 L1

005      02 

006      60  MOV A,1AH

007      1A

008      A4 STA 402

009      02 

00A     84  LDA 404

00B     04 

00C     C0 RLC A

00D     E8  JC 00AH

00E     0A

A0A1初始化

00F     80  LDA 000H

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

01A     A0 STA 01DH

01B     1D

01C     80  LDA 05CH

01D     5C

;打印和等待循环

01E     A4 STA 402

01F     02 

020      84  LDA 404

021      04 

022      C0 RLC A

023      E8  JC 020H

024      20 

;打印下一个字符

025      24  INC A0

026      F8  JMP 015H

027      15 

;停机

028      FF HALT

3.            运行结果:

1.              图形输出

²      数据区为以下代码

0A 0A 0C 0D 0D 0D 0C 0C 0C 0D 0D 0D 1C

0A 0A 0D 0D 0D 0B 0D 0C 0D 0D 0D 0B 1D

0A 0A 0D 0D 0D 0D 0B 0D 0D 0D 0B 0B 1D

0A 0A 0C 0D 0D 0D 0D 0D 0D 0B 0B 0D 1C

0A 0A 0C 0C 0D 0D 0D 0D 0B 0B 0D 0C 1C

0A 0A 0C 0C 0C 0D 0D 0B 0D 0D 0C 0C 1C

0A 0A 0C 0C 0C 0C 0D 0D 0D 0C 0C 0C 1C

0A 0A 0C 0C 0C 0C 0C 0D 0C 0C 0C 0C 1C

²      将该数据输入内存,并将内存数据的首地址写入到000H单元,将末地址写入到001H单元,从002H处启动程序。

²      运行结果如下

我们可以看到一颗美丽的心

 

2.              数字的成组输出

²      数据区为以下代码

0A 0A 11

0A 0A 02  12

0A 0A 03  03  13

0A 0A 04  04  04  14

0A 0A 05  05  05  05  15

0A 0A 06  06  06  06  06  16

0A 0A 05  05  05  05  15

0A 0A 04  04  04  14

0A 0A 03  03  13

0A 0A 02  12

0A 0A 11

²      将该数据输入内存,并将内存数据的首地址写入到000H单元,将末地址写入到001H单元,从002H处启动程序。

²      运行结果如下:

是一个数字组成的三角形

             
 

八、遇到的问题及解决方案

²      应用程序逻辑错误

n       重修修改程序逻辑

²      寻址方式误解

n       理解模型机的各种寻址方式

²      忘记调出控存内容

n       EEPROM000~090H处调出控存内容

 

九、实验心得

²      通过这次的课程设计,使我更深刻的理解了“指令”、“微程序”、“微指令”、“微操作”这些概念的深层含义。

²      对怎样由汇编语言级这一表示层到机器硬件这一执行层的具体机理有了深刻的了解。

²      学会了怎样由汇编语言生成对应的机器码。

²      尝试使用外设,并成功应用。对外设如何和计算机接口有了一定程度的理解。

 

  评论这张
 
阅读(3980)| 评论(6)