不带进位的与或运算指令的实现.docx

上传人:b****4 文档编号:5513447 上传时间:2022-12-17 格式:DOCX 页数:17 大小:829.53KB
下载 相关 举报
不带进位的与或运算指令的实现.docx_第1页
第1页 / 共17页
不带进位的与或运算指令的实现.docx_第2页
第2页 / 共17页
不带进位的与或运算指令的实现.docx_第3页
第3页 / 共17页
不带进位的与或运算指令的实现.docx_第4页
第4页 / 共17页
不带进位的与或运算指令的实现.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

不带进位的与或运算指令的实现.docx

《不带进位的与或运算指令的实现.docx》由会员分享,可在线阅读,更多相关《不带进位的与或运算指令的实现.docx(17页珍藏版)》请在冰豆网上搜索。

不带进位的与或运算指令的实现.docx

不带进位的与或运算指令的实现

不带进位的与或运算指令的实现

一,课程设计目的

构造模型机实现不带进位的与或运算,使用软件HKCPT调试并执行一段程序,了解程序的编译、加载过程。

通过微单步,单拍调试,理解模型机中的数据流向。

二,课程设计说明

(1)设计原理

在实验系统中,模型机的运行是在微程序的控制下进行的,可实现特定指令的功能。

在本实验平台中,模型机从内存中读出、解释、执行机器指令将由微指令和与之相配合的时序来完成,即1条机器指令对应1个微程序。

(2)模型机逻辑框图

根据设计的要求以及试验器材的逻辑组合,构造模型机逻辑框图如下图所示:

 

374

(3)设计指令系统

<1>指令类型

试验平台内采用的是8位数据总线和8位总线方式,在设计中主要使用以下指令:

[1]逻辑运算类指令,例如逻辑或运算:

ORLA,#36

[2]数据传送类指令,例如,CPU内部寄存器之间数据传递:

MOVA,R1

[3]存储器操作类指令,存储器写指令。

寄存器中的内容写入存储器,例如:

STAADDR

<2>操作数寻址方式及编码

[1]直接地址寻址

例如,双字节指令:

LDAADDR(ADDR)->A

STAADDR(A)->ADDR

第1字节第2字节

I7

I6

I5

I4

I3

I2

I1

I0

A7

A6

A5

A4

A3

A2

A1

A0

操作码操作数地址

[2]寄存器直接寻址

指令字节中含有寄存器选择码,决定选哪个寄存器进行操作。

例如,单字节指令:

MOVA,Ri(Ri)->A

单字节

I7

I6

I5

I4

I3

I2

I1

I0

 

操作码与Ri选择码

例如,双字节指令:

MOVRi,#datadata->Ri

第1字节第2字节

I7

I6

I5

I4

I3

I2

I1

I0

D7

D6

D5

D4

D3

D2

D1

D0

 

[3]寄存器间接寻址

例如,但字节指令:

MOVA,@Ri(Ri)->A

Ri选择码

I7

I6

I5

I4

I3

I2

I1

I0

[4]立即数寻址

例如:

MOVA,#DATADA->A

MOVRI,#DATADATA->RI

第1字节第2字节

D7

D6

D5

D4

D3

D2

D1

D0

I7

I6

I5

I4

I3

I2

I1

I0

 

(4)设计微程序及其实现方法

在本实验平台的硬件设计中,采用24位微指令,若微指令采用全水平不编码纯控制场的格式,那么至多有24个微操作控制信号,可由微代码直接实现。

如果采用多组编码译码,那么24位微代码通过二进制译码可实现2的n次幂个互斥的微操作控制信号。

由于模型机指令系统规模较小,功能也不太复杂,所以采用全水平不编码纯控制场的微指令格式。

在模型机中,用指令操作码的高4位作为核心扩展成8位的微程序入口地址MD0~MD7,这种方法称为“按操作码散转”,如下表所示:

按操作码换散

指令操作码

微程序首地址

MD7,MD6

I7

I6

I5

I4

MD1、MD0

MD7~MD0

0

0

0

0

0

1

003H

0

0

0

0

1

1

007H

0

0

0

1

0

1

00BH

0

0

0

1

1

1

00FH

0

0

1

0

0

1

013H

0

0

1

0

1

1

017H

0

0

1

1

0

1

01BH

0

0

1

1

1

1

01FH

0

1

0

0

0

1

023H

0

1

0

0

1

1

027H

0

1

0

1

0

1

02BH

0

1

0

1

1

1

02FH

0

1

1

0

0

1

033H

0

1

1

0

1

1

037H

0

1

1

1

0

1

03BH

0

1

1

1

1

1

03FH

每条指令由不超过4条的微指令组成,那么可根据下表组成每条微程序的首地址。

微程序首地址形成

MD7

MD6

MD5

MD4

MD3

MD2

MD1

MD0

0

0

I7

I6

I5

I4

1

1

微指令的运行顺序为下地址确定法,即采用计数增量方法,每条微指令执行过之后微地址自动加1,指向下一条微指令地址。

微地址寄存器由2片74LS161组成,在模型机停止状态下,微地址被清零。

当试验平台开始运行时,微地址从OOH开始运行。

且OOH放置一条取指指令,根据程序开始地址从内存中读出第一条指令。

(5)设计模型机运行中的指令安排

本实验模型机已确定了指令系统,微指令采用全水平不编码纯控制场的格式,微程序的入口地址采用微操作码散转换方式,微地址采用计数增量方式,所以可确定模型机中时序单元所产生的每一拍的作用。

本实验中为了让实验者更好地观察实验的各个中间过程各寄存器的值,由监控单元产生了4个脉冲信号。

4个脉冲信号组成一个微指令周期,为不同地寄存器提供工作脉冲。

微指令波形如下图所示:

 

SIGN

PLS1 微地址寄存器的工作脉冲,用来设置微程序的首地址及微地址加1。

PLS2 PC计数器的工作脉冲,根据微指令的控制实现PC计数器加1和重置PC计数器加1和重置PC计数等功能。

PLS3把24微指令打入3片微指令锁存器。

PLS4把当前总线上的数据打入微指令选通的寄存器中。

(6)设计指令执行流程

根据模型机逻辑图和目前硬件条件来设计指令系统中每条指令的执行流程。

在每个系统中,一条指令从内存取出到执行完毕,需要若干个机器周期,任何指令中都必须有一个机器周期作为“取指令周期”,称为公操作周期。

一条指令共需几个机器周期取决于指令在机器内实现的复杂程度。

  对于微程序控制的计算机,在设计指令执行流程时,要保证每条微指令所含的微操作的必要性和合理性,还应知道总线IAB,IDB,OAB,ODB仅是传输信息的通路,没有寄存信息的功能,而且必须保证总线传输信息时信息的唯一性。

取指微指令执行过程如下:

在模型机处于停机状态时,模型机的微地址寄存器被清零,微指令锁存器输出无效。

在处于停机状态时,脉冲PLS1对微地址寄存器(74LS161)无效,微地址寄存器保持为零。

脉冲PLS2对PC计数器无效,同时PLS2把HALT=1打入启停单元的运行状态寄存器(74LS74)中,把模型机制为运行状态,使微程序锁存器输出有效。

PLS3把微程序存储器OOH单元(OOH单元存放取指微指令)的内容打入微指令锁存器中,并且输出取指微指令。

PLS4把从程序存储器读出的数据打入指令寄存器。

在模型机处于运行状态时,脉冲PLS1将微地址寄存器加1,脉冲PLS2将PC计数器加1,PLS3把微程序存储器的微指令打入微指令锁存器并且输出。

PLS4把当前总线上的数据打入当前微指令所选通的寄存器。

三,源程序及执行结果

(1)源程序清单

MOVRO,#22

MOVR1,#44

MOVA,RO

ORLA,#66

STA30

MOVA,R1

ANLA,#11

STA34

HALT

(2)执行结果如下图

以下为或运算时的执行情况:

以下为与运算时的执行情况:

四,分析

通过软件HKCPT的微单步功能可观察各个变量的变化。

累加器、有关寄存器、含每条指令执行的时序分析、存储器的变化如下表所示:

微周期

数据流程

节拍

数据总线

地址总线

操作寄存器

T0

取指微指令

RAM->BUS->IR1

PLS1:

微地址清零

PLS2:

置模型机运行

PLS3:

取指微指令输出

PLS4:

BUS->IR1

无效

无效

6CH

6CH

无效

无效

00H

00H

微地址:

00H

PC=00H

锁存微指令

MOVR0,#22

微周期

数据流程

节拍

数据总线

地址总线

操作寄存器

T0

RAM->寄存器R0

PLS1:

置微地址

PLS2:

PC+1

PLS3:

微指令输出

PLS4:

BUS->寄存器R0

6CH

6CH

22H

22H

00H

00H

01H

01H

微地址:

1BH

PC=01H

锁存微指令

寄存器R0=40H

T1

取微指令

RAM->BUS->IR1

PLS1:

微地址+1

PLS2:

PC+1

PLS3:

取指微指令输出

PLS4:

BUS->IR1

22H

22H

6DH

6DH

01H

01H

02H

02H

微地址:

1CH

PC=02H

锁存微指令

IR1=6DH

MOVR1,#44

微周期

数据流程

节拍

数据总线

地址总线

操作寄存器

T0

RAM->寄存器R1

PLS1:

置微地址

PLS2:

PC+1

PLS3:

微指令输出

PLS4:

BUS->寄存器R0

6DH

6DH

44H

44H

02H

02H

03H

03H

微地址:

1BH

PC=03H

锁存微指令

寄存器R1=44H

T1

取微指令

RAM->BUS->IR1

PLS1:

微地址+1

PLS2:

PC+1

PLS3:

取指微指令输出

PLS4:

BUS->IR1

44H

44H

3CH

3CH

03H

03H

04H

04H

微地址:

1CH

PC=04H

锁存微指令

IR1=0FH

MOVA,R0

微周期

数据流程

节拍

数据总线

地址总线

操作寄存器

T0

A->DR1

PLS1:

置微地址

PLS2:

PC+1

PLS3:

微指令输出

PLS4:

BUS->寄存器R0

3CH

3CH

00H

00H

04H

04H

无效

无效

微地址:

0FH

PC=05H

锁存微指令

DR1=00H

T1

寄存器R0->锁存器DR2

PLS1:

微地址+1

PLS2:

PC不变

PLS3:

取指微指令输出

PLS4:

BUS->锁存器DR2

00H

00H

22H

22H

无效

无效

无效

无效

微地址:

10H

PC=05H

锁存微指令

DR2=22H

T2

ALU->A

PLS1:

微地址+1

PLS2:

PC不变

PLS3:

微指令输出

PLS4:

BUS->A

22H

22H

22H

22H

无效

无效

无效

无效

微地址:

11H

PC=05H

锁存微指令

A=6FH

T3

取微指令

RAM->BUS->IR1

PLS1:

微地址+1

PLS2:

PC+1

PLS3:

取指微指令输出

PLS4:

BUS->IR1

22H

22H

CFH

CFH

无效

无效

05H

05H

微地址:

12H

PC=05H

锁存微指令

IR1=6DH

ORLA,#66

微周期

数据流程

节拍

数据总线

地址总线

操作寄存器

T0

A->DR1

PLS1:

置微地址

PLS2:

PC+1

PLS3:

微指令输出

PLS4:

BUS->寄存器R0

CFH

CFH

22H

22H

05H

05H

无效

无效

微地址:

33H

PC=06H

锁存微指令

DR1=22H

T1

BUS->DR2

PLS1:

微地址+1

PLS2:

PC不变

PLS3:

取指微指令输出

PLS4:

BUS->锁存器DR2

22H

22H

66H

66H

无效

无效

无效

无效

微地址:

34H

PC=06H

锁存微指令

DR2=66H

T2

ALU->A

PLS1:

微地址+1

PLS2:

PC不变

PLS3:

微指令输出

PLS4:

BUS->A

66H

66H

66H

66H

无效

无效

无效

无效

微地址:

35H

PC=06H

锁存微指令

A=66H

T3

取微指令

RAM->BUS->IR1

PLS1:

微地址+1

PLS2:

PC+1

PLS3:

取指微指令输出

PLS4:

BUS->IR1

66H

66H

8FH

8FH

无效

无效

06H

06H

微地址:

36H

PC=06H

锁存微指令

IR1=8FH

STA30

微周期

数据流程

节拍

数据总线

地址总线

操作寄存器

T0

RAM→BUS→IR2

PLS1:

置微地址

PLS2:

PC+1

PLS3:

取微指令输出

PLS4:

BUS→IR2

8FH

8FH

30H

30H

06H

06H

07H

07H

微地址:

23H

PC=07H

锁存微指令

IR2=30H

T1

A→RAM(30H)

PLS1:

微地址+1

PLS2:

PC+1

PLS3:

微指令输出

PLS4:

BUS→RAM

30H

30H

66H

66H

07H

07H

08H

08H

微地址:

24H

PC=08H

锁存微指令

RAM(30)=66H

T2

取微指令

RAM→BUS→IR1

PLS1:

微地址+1

PLS2:

PC不变

PLS3:

取微指令输出

PLS4:

BUS→IR1

66H

66H

3DH

3DH

08H

08H

09H

09H

微地址25H

PC=08H

锁存微指令

IR1=0FH

MOVA,R1

微周期

数据流程

节拍

数据总线

地址总线

操作寄存器

T0

A->DR1

PLS1:

置微地址

PLS2:

PC+1

PLS3:

微指令输出

PLS4:

BUS->寄存器R0

3DH

3DH

00H

00H

09H

09H

无效

无效

微地址:

0FH

PC=09H

锁存微指令

DR1=00H

T1

寄存器R1->锁存器DR2

PLS1:

微地址+1

PLS2:

PC不变

PLS3:

取指微指令输出

PLS4:

BUS->锁存器DR2

00H

00H

44H

44H

无效

无效

无效

无效

微地址:

10H

PC=10H

锁存微指令

DR2=44H

T2

ALU->A

PLS1:

微地址+1

PLS2:

PC不变

PLS3:

微指令输出

PLS4:

BUS->A

44H

44H

44H

44H

无效

无效

无效

无效

微地址:

11H

PC=0AH

锁存微指令

A=44H

T3

取微指令

RAM->BUS->IR1

PLS1:

微地址+1

PLS2:

PC+1

PLS3:

取指微指令输出

PLS4:

BUS->IR1

44H

44H

DFH

DFH

无效

无效

0AH

0AH

微地址:

12H

PC=0BH

锁存微指令

IR1=DFH

ANLA,#11

微周期

数据流程

节拍

数据总线

地址总线

操作寄存器

T0

A→DR1

PLS1:

置微地址

PLS2:

PC+1

PLS3:

取微指令输出

PLS4:

A→DR1

DFH

DFH

44H

44H

0AH

0AH

0BH

0BH

微地址:

37H

PC=0CH

锁存微指令

DR1=44H

T1

BUS→DR2

PLS1:

微地址+1

PLS2:

PC不变

PLS3:

微指令输出

PLS4:

BUS→DR2

44H

44H

11H

11H

无效

无效

无效

无效

微地址:

38H

PC=0CH

锁存微指令

DR2=11H

T2

ALU→A

PLS1:

微地址+1

PLS2:

PC不变

PLS3:

微指令输出

PLS4:

BUS→A

11H

11H

00H

00H

无效

无效

无效

无效

微地址:

39H

PC=0CH

锁存微指令

A=00H

T3

取微指令

RAM→BUS→IR1

PLS1:

微地址+1

PLS2:

PC+1

PLS3:

取微指令输出

PLS4:

BUS→IR1

00H

00H

8FH

8FH

无效

无效

0CH

OCH

微地址:

3AH

PC=0CH

锁存微指令

IR1=8FH

STA34

微周期

数据流程

节拍

数据总线

地址总线

操作寄存器

T0

RAM→BUS→IR2

PLS1:

置微地址

PLS2:

PC+1

PLS3:

取微指令输出

PLS4:

BUS→IR2

8FH

8FH

34H

34H

0CH

0CH

0DH

0DH

微地址:

23H

PC=0DH

锁存微指令

IR2=34H

T1

A→RAM(34H)

PLS1:

微地址+1

PLS2:

PC+1

PLS3:

微指令输出

PLS4:

BUS→RAM

34H

34H

00H

00H

0DH

0DH

0EH

0EH

微地址:

24H

PC=0EH

锁存微指令

RAM(34)=00H

T2

取微指令

RAM→BUS→IR1

PLS1:

微地址+1

PLS2:

PC不变

PLS3:

取微指令输出

PLS4:

BUS→IR1

00H

00H

FFH

FFH

0EH

0EH

0FH

0FH

微地址25H

PC=0EH

锁存微指令

IR1=FFH

HALT

微周期

数据流程

节拍

数据总线

地址总线

操作寄存器

T0

置模型机为停止状态

PLS1置微地址

PLS2:

停机

PLS3:

取微指令输出

PLS4:

BUS→IR1

FFH

FFH

无效

无效

10H

10H

无效

无效

微地址3FH

PC=0FH

五,设计总结

通过这次的课程设计,实现了不带进位的与或运算指令,在此过程中,我收获颇丰.这次课程设计不仅提高了我的动手实践能力,同时也提高了我的独立思考能力.通过本次实验,不仅将自己学的计算机组成原理的理论知识得到巩固,而且将理论知识运用于实践,增强了自己的动手能力.通过自己动手操作与思考,我了解了各个单元的工作原理,了解了每一个微单步过程中,微地址、数据总线、地址总线、操作寄存器和数据流程的变化。

通过本次实验,我对计算机组成原理的实验箱的工作原理有了更加透彻的了解.计算机的硬件部分的各个部分的逻辑关系和功能的实现,以及指令的流程,微程序的执行过程,这些重要知识,在本次课程设计中我都有了深入的了解。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1