计算机SAP-1 设计与实现(2)

来源:互联网 发布:录视频美颜软件 编辑:程序博客网 时间:2024/06/06 09:55

三.详细设计

Ø        CON

控制器产生时序脉冲信号作用下,协调各个部件取出指令,解析并执行指令。而指令周期是指从取指令开始,到该指令执行完毕所经历的时间。循环计数器是将划分指令周期的。

循环计数的时序图

 

SAP-1中,指令周期为如上图。指令周期由取指周期和执行周期组成。SAP-1中,取指周期包括T0T1T2。执行周期为T3T4T5

   取指令周期中,所有的指令都是一样的,分三步

1)将PC中数据(ROM的地址)读取放到MAR

(2)根据MAR读取ROM中的数据,放到IR中。

3PC = PC + 1

    下图中标出了这三个阶段中,那些部位处于工作状态,那些不工作。其中绿色部位处于工作状态,灰色不工作。



取指周期

 

     第一阶段(T0),EP=1,LM=1,其他控制位是0,这样在CLK到达上升沿时,PC中的内容将通过总线存储到MAR中

   第二阶段(T1),ER=1LI=1,其他控制位是0,这样从PROM中取出数据,在CLK上升沿时,根据MAR读取ROM中的数据,放到IR中。

   第三阶段(T3),CP=1,其他控制位是0。其中CPPC的使能端,CP=1时,CLK上升沿时,PC=PC+1

   因此取指周期中,总结如下表

阶段

CP EP LM ER

LI EI  LA EA

SU EU LB LO

功能

T0

0  1  1  0

0  0  0  0

0  0  0  0

MAR = PC

T1

0  0  0  1

1  0  0  0

0  0  0  0

IR = ROM(PC)

T2

1  0  0  0

0  0  0  0

0  0  0  0

PC = PC + 1

 

执行周期中,各个指令需要执行的操作是不同的。下面对各个指令分别进行介绍。

LDA指令

LDA指令的执行周期包括分三步

  (1)IR将指令分为操作码和操作数。操作码将存入CON中,操作数存入MAR中。其中操作码将存入CON中,操作数(PROM的地址)存入MAR中。

  (2)根据MAR读取PROM中的数据,放到A中。

 (3LDA指令在这个阶段是空操作。

 

LDA执行周期

   第四阶段(T3),EI=1LM=1,其他控制位是0,首先IR将操作码直接输出给CON;而操作数,由于EI=1LM=1,当CLK下一个上升沿到达时,会被存放到MAR中。

   第五阶段(T4),ER=1LA=1,其他控制位是0,这样根据MAR存储的数据地址从PROM中取出数据,在CLK上升沿时,PROM中的数据通过总线放到A中。

   第六阶段(T5),所有控制位都为0,空操作

总结如下表:

 

阶段

CP EP LM ER

LI EI  LA  EA

SU EU LB LO

功能

T3

0  0   1   0

1  0   0   0

0  0   0   0

MAR = ADDRESS

T4

0  0   0   1

0  0   1   0

0  0   0   0

A = ROM(ADDRESS)

T5

1  0   0   0

0  0   0   0

0  0   0   0

空操作

ADD指令

ADD指令的执行周期包括分三步

1IR将指令划分为操作码和操作数。操作码将存入CON中,而操作数存入MAR中。

2)根据MAR读取PROM中的数据,放到B中。

3ALUAB中的数据相加,将结果放到A中。

 

ADD执行周期

第四阶段(T3),EI=1LM=1,其他控制位是0,首先IR将操作码直接输出给CON;而操作数由于EI=1LM=1,当CLK下一个上升沿到达时,会将操作数存放到MAR中。

   第五阶段(T4),ER=1LB=1,其他控制位是0,这样根据MAR存储的数据地址从PROM中取出数据,在CLK上升沿时,根据MAR读取ROM中的数据,放到B中。

   第六阶段(T5),LA=1EU=1,其他控制位是0。由于ALU的加减控制位SU=0ALU执行加法操作。而LA=1EU=1,当CLK的上升沿到达时,ALU中计算的结果将通过总线到达A。而这个过程,将经历两个延迟时间段。一个是ALU输出数据的延迟,一个LA接收数据时的延迟。因此ALU只会计算一次。

阶段

CP EP LM ER

LI EI  LA EA

SU EU LB LO

功能

T3

0  0  1  0

0  1  0  0

0  0  0  0

MAR = ADDRESS

T4

0  0  0  1

0  0  0  0

0  0  1  0

B = ROM(ADDRSS)

T5

0  0  0  0

0  0  1  0

0  1  0  0

A = SUM







SUB
指令

   SUB指令的执行过程与ADD指令类似,T0——T4阶段相同,只是T5时,ALU的加减法使能端SU=1ALU执行减法操作。

阶段

CP EP LM ER

LI EI  LA EA

SU EU LB LO

功能

T3

0  0  1  0

0  1  0  0

0  0  0  0

MAR = ADDRESS

T4

0  0  0  1

0  0  0  0

0  0  1  0

B = ROM(ADDRSS)

T5

0  0  0  0

0  0  1  0

1  1  0  0

A = DIFF







OUT
指令

OUT指令的执行周期包括分三步

1IR将指令分为操作码和操作数,操作码传给CON。将A的内容传输到O寄存器,同时O寄存器的内容将传给D

2)、(3)空操作。


OUT
执行周期

OUT执行周期

第四阶段(T3),EA=1LO=1,其他控制位是0IR将操作码解码输出给CONCON信号中EA=1LO=1,这样当CLK上升沿时,将A中的数据通过总线传输给O。同时DLED等)显示O的内容(计算结果)。

   第五阶段(T4),所有控制位是0

   第六阶段(T5),所有控制位是0

阶段

CP EP LM ER

LI EI  LA EA

SU EU LB  LO

功能

T3

0  0  0  0

0  0  0  1

0  0  0  1

OUT = A

T4

0  0  0  0

0  0  0  0

0  0  0  0

空操作

T5

0  0  0  0

0  0  0  0

0  0  0  0

空操作







HLT
指令

   HLT指令,将通知CON停止计算。这个操作将通过CON产生关闭时序脉冲来实现。

四.电路

Ø        CON

控制器是计算机操作执行指令的关键部件。

l        指令解码器

指令解码器解析从IR寄存器发送的操作码,也就是IR的高四位。电路图如下,

LDA =非I7·非I6·非I5·非I4

ADD =I7·非I6·非I5·I4

SUB = I7·非I6·I5·非I4

OUT =I7·I6·I5·非I4

HLT = I7·I6·I5·I4

I7 I6 I5 I4 = 0000时, LDA = 1,ADD=0,SUB=0,OUT=0,HLT=0;

I7 I6 I5 I4 = 0001时,ADD = 1

I7 I6 I5 I4 = 0010时,SUB = 1

I7 I6 I5 I4 = 1110时,OUT = 1

I7 I6 I5 I4 = 1111时,HLT = 1



l        控制器矩阵

从指令解码器解析出来的LDAADDSUBOUT和循环计数器的输出(T0T1T2T3T4T5)共同来解析这个控制矩阵,矩阵的输出为CON信号:CP EP LM ER  LI EI LA EA  SU EU LB LO




在控制矩阵中,

CP = T2

EP = T0

LM = T0 + (LDA·T3 ) + (ADD·T3) +(SUB·T3)

ER  = T1+(LDA·T4 ) + (ADD·T4)+SUB· T4

LI  = T1

EI  = ( LDA·T3 ) + (ADD·T3) +SUB·T3

EA  = ( LDA·T4 ) + (ADD·T5) +SUB·T5

LA  = OUT· T3

SU = SUB·T5

EU = ( ADD· T5 ) + (SUB· T5)

LB = ( ADD· T4 ) + (SUB· T4)

LO = OUT· T3

取指周期

T0是高电平时,EP=1LM=1。其他控制信号为0

T1是高电平时,ER=1LI=1,其他控制信号为0

T2是高电平时,CP=1,其他控制信号为0

执行周期

LDA为例,即LDA=1

当T3是高电平时,LM=1,EI=1。其他控制信号为0。

当T4是高电平时,ER=1,EA=1。其他控制信号为0。

T5是高电平时,所有控制信号为0

ADDSUBOUT取指周期的分析过程与LDA相同。

 

循环计数器、指令解码器、控制矩阵的连接关系如下:


Ø        PROM

ROM相当于很多的寄存器。

ROM可以使用二极管阵列来存取数据。使用解码器来存期ROM中的数据。

ROM实现的电路图如下:


ROM电路图

   在电路图中,当A2 A1 A0 = 000时,选中0号与门,输出为11-7号与门输出为0

因此,二极管矩阵中第一行有二极管的位置将处于导通状态,输出为1,其他位置输出为0。输出结果0001

proteus中的仿真结果如下图,红色代表高电平,蓝色代表低电平。

    

Ø        ALU

半加器

二进制半加器电路图


SUM = AB

CARRY = A·B

半加器真值表

    A

B

CARRY

SUM

0

0

0

0

0

1

0

1

1

0

0

1

1

1

1

0

 

全加器

二进制全加器电路图


SUM = ABC

CARRY = ( A·B ) + ( B·C ) + ( A·C )

    A

B

C

CARRY

SUM

0

0

0

0

0

0

0

1

0

1

0

1

0

0

1

0

1

1

1

0

1

0

0

0

1

1

0

1

1

0

1

1

0

1

0

1

1

1

1

1

而四位二进制全加器结果如下


ALU可以执行加法和减法操作。为了设计的电路简单,ALU对补码进行运算。SUB为加减法标志。当SUB=1时,执行减法操作,当SUB=0时,执行加法操作。四位ALU的电路图所下:
 

Ø        PC

PC使用带使能端的计数器实现

proteus中,使用74161来实现。741614位二进制计数器,计数范围为00001111

电路图如下,CP为使能端。CLK是脉冲输入端,CLR是清空计数器,EP是输出使能端。当CP=1时,76161开始计数,CP=0时,76161停止计数。

CLR=1时,清空计数器,CLR为异步清空。

EP=1时,将输出数据,EP=0时,输出处于断开状态。


Ø        A

寄存器A使用两个四位寄存器4076实现。

Ø        BIRMARO这四个寄存也使用4076实现。

 

五.Proteus软件仿真

电路图所用的proteus版本是7.1sp2

SAP-1电路图下载地址:http://download.csdn.net/detail/liuling_8008/6906343

proteus 7.12的下载地址:http://pan.baidu.com/share/link?uk=3573585640&shareid=1210&fr=1622965756&fa=4158367599



SAP-1
全局图


PC

MAR

ROM

 

 

IR

CON
 

A

 

ALU

 

B

O