| ||
GJB 289A-97及GJB/Z 209-2002对“发送上一指令字”这一方式指令的规定及注解:“总线控制器用本指令使远程终端将上一次收到的指令字1)中的第4至19位内容,在回送符合4.3.3.5.3条规定的状态字后,无字间间隔地以一个符合4.3.3.5.2条规定的数据字的形式回送给总线控制器,远程终端在执行该方式代码操作时,不更新自己的状态字。
注:1)此处应增加:不包括发送上一指令字方式指令。
在错误处理及恢复过程中,发送上一指令字方式代码(10010)用于确定终端所接收的上一有效指令(该方式代码除外)。该方式指令不允许广播,响应终端的数据字为上一指令字。该数据字由所接收的16位上一有效指令字组成。注意,该方式指令不改变RT状态字的内容。这个事实允许该方式指令用在错误处理机恢复操作中,而不影响状态字,保存后者可能已经填入的差错信息。”
GJB/Z 209-2002在RT设计指导章节D.5.2.3.11 (发送上一次指令)中描述道:“该方式指令引起RT发送(作为一个数据字)上一次接收到的有效指令字。它用于错误处理程序,从而总线控制器可识别哪一个指令是RT正确接收到的上一次指令。像发送状态字方式指令一样,接收到这一方式指令,不应复位状态字寄存器。”
可以看到,从规范的描述来看,GJB 289A-97及GJB/Z 209-2002事实上假设了RT在收到“发送上一指令字”之前收到过至少一条不是“发送上一指令字”的有效指令。
而从RT的设计角度来看,要正确响应此方式指令,则RT必须设计一个寄存器,用于保存最新一条非“发送上一指令字”的指令字,RT上电时,不管设计者是否为此寄存器设计有初始化电路,上电完成后,该寄存器中始终会有一个初始值,但这个初始值对于正确响应“发送上一指令字”这一方式指令来说却是无效的,从而引出一个问题:“如果RT上电后,收到的第一条有效指令就是“发送上一指令字”这一方式指令,RT应该如何响应?”
从目前查阅到的规范(GJB 289A-97、GJB/Z 209-2002、GJB 5186.1-2003)来看,未对上述问题作出明确规定,即只能由RT设计者自行考虑应对此问题的方法了。
设计者应当注意到GJB/Z 209-2002在对GJB 289A-97章节4.4.3.3(对于无效指令字)中描述道:“远程终端不响应不符合4.4.3.1条规定的无效指令字。
不满足字认证要求的指令字将导致系统继续查找有效指令字。当这种情况发生时,它将被确认为是无效指令,RT不改变状态字,也不发送响应。
这种无效指令条件也包含了指令字译码处理中的故障。为防止两个或多个终端对同一指令字(有故障或无故障)都予以响应,终端在不能完全确认指令字时,必须采取安全方法并复位电路,继续查找满足其特定要求(地址)的有效指令字。当指令字存在问题时,所有RT均应采取这种不响应的方法。这种方法被认为是故障钝化法,它可使故障对多路传输系统影响最小。”
从GJB/Z 209-2002章节4.4.3.3来看,规范非常强烈的要求RT在规范明确许可的范围内响应,若不能完全确认自己的响应符合规范的要求,建议采用不响应的方式处理,故而当RT上电后收到的第一条有效指令是“发送上一指令字”这一方式指令时,RT设计为不响应似乎更符合GJB 289A系列规范的潜在逻辑。