(1)16个通用寄存器的功能分配
在TEC-2机的具体实现中,AM2901芯片内有16个通用寄存器R0~R15,但我们仅把R0~R3、R7~R15共13个寄存器作为通用寄存器供用户编程使用,而把R4~R6 3个寄存器分别作为SP、PC、IP,即作为堆栈指针、程序计数器、指令当前地址(保存正在运行中的指令的地址,用于转移变址目的,它与已增量过的PC值是不同的)。正常情况下,不再能把这3个寄存器当成通用寄存器使用。
(2)AM2901芯片A、B端口地址的给出
在汇编语言或机器指令中,是用目的寄存器地址DR和源寄存器地址SR指明所用的通用寄存器的,所以,指令中的DR位用于B口,SR位用于A口,这是A、B端口地址的第一个来源。
由于R4~R6已作为专用寄存器使用,显然不再能经过指令中的DR或SR加以选择。我们是在控制器部件的微指令字中,分配两组微码MA和MB分别送往AM2901芯片的A、B端口,专门用于选择这3个专用的寄存器,在LDMC指令中,还用于选择R1~R3寄存器。在入/出指令中,还用于选择R0寄存器。这是A、B端口地址的第二个来源。
为了使TEC-2机的运算器件能从TEC-2机主机中分离出来,即不再与控制器部件、主存储器部件发生联系,而单独通过手拨开关与观察指示灯等完成部分运算器功能的实验,此时AM2901芯片的A、B端口地址只能由专用的微型开关组提供,这就形成了A、B端口地址的第三个来源。
综上所述,A、B端口地址有3个来源。其控制方案实现如图1.3.5所示:(以B端口为例说明,A端口类似)
FS4来自一个开关,为“1”时,运算器脱离主机,用于使上下两个门中的一个处于三态。选择控制信号使送往B端口的信号选微码位或DR位,选择控制信号用1位微码给出。
(3)AM2901芯片9位控制信号I8~I0 与(2)中讨论A、B端口地址形成类同的是,当TEC-2机的运算器联机运行时,I8~I0来自控制器微指令字的相应微码位;分离出来运行时,I8~I0只能来自微型开关组的相应开关位。这同样是用FS4开关,使相应微码位的输出或相应开关位的输出处于三态来实现的。请查阅图纸。
(4)运算结果的标志位(即C、Z、V、S)的形成
运算器在执行某些指令时,必须把所得结果的特征记在标志位中。哪些指令将影响标
21
图 1.3.5 B端口 四 位 三 二 选 态 一 FS4 相应的微码位 指令中DR位 选 三 通 门 态 微型开关组 选择控制信号
志位,影响哪一个或哪几个标志位,是在确定指令功能及用法时规定的。察看附录1 各条指令的操作码及微程序入口地址表格,可以看到不同指令对标志位的影响标在表中的最右一列。将指令对标志位的影响进行汇总与分类,可得出如下8种情况:
① 最右列用4个“·”表示的,表明C、Z、V、S 4个标志位应保持原状态,不受执行指令的影响;
② 最右列用4个“*”表示的,或用0*0*、0000表示的,表明C、Z、V、S应按指令执行结果的特征(AM2901芯片最高位输出CY,F=0、OV、F3)变化。请注意,把这里的0改成*是可以的,因为逻辑运算指令的结果一定使C与V变为0。而LDMC指令的最终结果一定使4个标志位全变为0。独立出来的运算器手拨开关实验,也是使4个标志位直接接收运算结果的特征标志值。详情见图纸。
③ POPF和IRET这两条指令都要从堆栈中恢复保存在那里的原标志位的值,即接收从内部数据总线上送来的值。请查阅图纸。
④ CLC(清进位标志位)指令使C变为0,其它3个标志位保持不变。 ⑤ STC(置1进位标志位)指令使C变为1,其它3个标志位保持不变。
⑥ 在执行右循环移位指令时,运算器最低位移出值要移入C标志位,其它标志位不变。 ⑦ 在执行左循环移位指令或执行联合左移位操作时,运算器最高位移出值要移入C标志位,其它标志位不变。
⑧ 在执行联合右移位操作时,乘商寄存器最低位的移出值要移入C标志位,其它标志位的值保持不变。
在TEC-2机的具体实现中,通过在控制器的微指令字中安排3位微码,来区分上述8种处理,并用一片Gal20v8可编程逻辑器件,实现相应的逻辑处理与4个标志位的记忆功能。
三位微码与这8种处理的对应关系,已用表格形式给出在TEC-2机的操作卡上,如表1.3.3所示。
这片Gal20v8芯片的入/出信号及芯片内的逻辑表达式见附录3中STR部分。
本器件共用了4个输出端,即引脚17、18、19、20分别给出C、Z、V、S 4个标志位的值,并采用寄存器型逻辑记忆本次操作结果。此时每个输出引脚的表达式必须用C:=...的形式定义,且引脚1的时钟脉冲信号必须引入。引脚13的/OE信号接地,表示输出信号是不被禁止的。
本器件共有14个输入信号,分别从引脚2~11、引脚14、引脚21~23送入,信号名字已给出在Gal20v8的描述信息中。这些输入如何决定每一个输出位的结果,以逻辑表达式形式给出在每个输出位的定义中。描述表中每行最右侧在分号之后给出的是注释内容。
22
表1.3.3 B34 B33 B32与状态位的对应关系
三位微码 B34 B33 B32 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1 C C CY IB7 0 1 RAM0 RAM3 Q0 Z Z ZR IB6 Z Z Z Z Z V V OV IB5 V V V V V S S F3 IB4 S S S S S
引脚13、14处写的NC,代表此2引脚未用。 (5)运算器最低位的进位信号的给出与控制
运算器最低位的进位信号Cin,可能为0、为l、为C标志位的值。为了调试与实验的方便,有时可送入一个连续的方波信号。当让运算器执行16位全1与这个最低位的进位方波信号相加时,则加法器每一位的输出结果均为方波,有利于观察与调试。为此,我们用两位微码SCi来区分这4种输入情况,如下表1.3.4所示:
表 1.3.4
SCi Cin 00 0 01 1 10 C 11 TCLK方波 (6)运算器最高位、最低位的移入信号
这涉及到移入通用寄存器组中的移入信号RAM0和RAM3,以及乘商寄存器中的移入信号Q0与Q3。左移操作要向RAM0,或RAM0与Q0移入数据,右移操作要向RAM3,或RAM3与Q3移入数据。我们把5条移位指令和乘除法计算中的联合移位都考虑进去,可以归纳出如下4种结果,并用两位微码SSH区分它们。
移位控制汇总如下表1.3.5所示:
此处的X代表不必处理。左、右移是由指令功能确定的。
SSH为00,用于逻辑移位指令;为01,用于循环移位指令;为10,用于乘除法运算的联合移位及上商;为11,用于算术右移指令,或补码乘法计算(本机中未予实现)
在TEC-2机的具体实现中,我们把上面讲过的(5)、(6)两部分内容,合在一片Gal20v8器件中实现。显而易见,此片中的输出用的是组合型逻辑,故引脚1的脉冲时钟信号不必引入,此脚可作为其它信号输入端(本机中未用,用NC表示)。引脚13的/OE信号也未用,
23
而用作TCLK方波信号的引入端。
表 1.3.5
SSH 0 0 0 1 1 0 1 1 左移 RAM0 Q0 0 X C X Q3 /F3 X X 右移 RAM3 Q3 0 X C X CY RAM0 F3? OV RAM0 这片Gal器件的引脚信号定义与内部逻辑表达式见附录4中SHLR部分。
这片器件的输出有7个信号,分别是Cin、RAM3、Q3、RAM0、Q0、Cy和OV。这最后两个信号是控制运算器的两个输出标志Cn+4(此处记作Co)和OV(此处记作OVER)如何向C和V标志位送入正确的结果。
输入信号包括:
AM2901的3组3位的控制信号中的MI4、MI3、MI2(确定AM2901的计算功能)和MI7(指明移位方向);
微码SCi两位B11和B10,指明如何给出Cin; 微码SSH两位B9和B8,指明如何形成移位值; 运算器执行结果的3个特征标志值Co、OVER和F3; C标志位的现行值。 引脚2l未用,用NC表示。
下面以该芯片内的逻辑表达式,说明对运算器最高位的进位输出和最低位的进位输入的处理问题。
Cy= Co*/MI5*/MI4*/MI3; DR+SR 时,Co送C标志位 + /Co*/MI5*/MI4*MI3; DR– SR 时,/Co送C标志位 + /Co*/MI5*MI4*/MI3; SR – DR 时,/Co送C标志位
Co为最高位的进位输出,/代表非。这个表达式表明,做加运算时,运算器最高位的进位输出(记作Co)送进位触发器C;做减运算时,运算器最高位的进位输出变反后送C,使C为1时,代表减有借位,而不是正常情况下的C为0代表减有借位。
Cin的定义中(见附录4 SHLR),表明DR+SR可能用最低位进位选0(公式中不用明确表示)、选1或选C(ADC指令);DR–SR或SR–DR运算时,最低位进位可选1,选/C(SBB指令)或选0(公式中不用明确表示);如前面则提到的,最低位的进位输入,实验过程中也可以选方波信号TCLK3。这些选择还要受SCi两位微码B11和B10的控制。
24
§1.4 TEC-2机主存储器部件
TEC-2机的主存储器由4K(字长16位)的ROM与2K的RAM组成,其地址分配用法见表1.4.1。
表 1.4.1 地址分配表
AB15~14 ≠ 0 0 AB13~11 × × × 0 0 0 选择芯片 /MCS0~/MSC7均为高, 未选中芯片。 /MCS0低,选中ROM2732的低2K。 /MCS1低,选中RAM6116 地址范围计算 AB15~11、AB10~0 0000 0 000 0000 0000B(0000H) 0000 0 111 1111 1111B(07FFH) 0000 1 000 0000 0000B(0800H) 0000 1 111 1111 1111B(0FFFH) 0001 0 000 0000 0000B(1000H) 0 1 0 /MCS2低 0001 0 111 1111 1111B(17FFH) 0001 1 000 0000 0000B(1800H) 0 1 1 = 0 0 1 0 0 /MCS4低 /MCS3低 0001 1 111 1111 1111B(1FFFH) 0010 0 000 0000 0000B(2000H) 0010 0 111 1111 1111B(27FFH) 0010 1 000 0000 0000B(2800H) 1 0 1 /MCS5低 0010 1 111 1111 1111B(2FFFH) 0011 0 000 0000 0000B(3000H) 1 1 0 /MCS6低 0011 0 111 1111 1111B(37FFH) 0011 1 000 0000 0000B(3800H) 0011 1 111 1111 1111B(3FFFH) 附加监控程序 2K ROM 用途 基本监控程序 2K ROM 用户程序/数据 2K RAM 0 0 1 1 1 1 /MCS7低,选中ROM2732的高2K。 这一部分的简化示意图在附录14 TEC-2机功能部件框图的上方中间,详细逻辑图在附录14逻辑线路图(一)的左部中间。从图纸上可以看到:
TEC-2机主存的地址选择来自地址总线ABl5~AB0,地址总线的信号是由地址寄存器AR的输出提供的,而AR只接收运算器的输出。
主存储器的入/出数据与外部数据总线DBl5~DB0接通。外部总线又通过双向三态门电路(LS245)与CPU内部总线IBl5~IB0连接。在/MIO与/WE两位微码的控制下,使内外部总线处于逻辑上断开、内向外传送或外向内传送数据的3种状态之一。
内存芯片的片选信号由一片3:8译码器芯片LSl38给出(DC3),通过地址的第11、12、
25