微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > SCSI 总线和协议

SCSI 总线和协议

时间:12-12 来源:互联网 点击:

方式中,目标方在置REQ信号后,必须持续地把数据线DB(7/l5~O,P)置成对应所要传送的二进制数位序列的值,直到它检测到ACK为真为止。

如果I/O信号为“伪”,那么信息是由发起方向目标方传输。在此情况下,目标方通过把REQ置成“真”来请求信息。发起方驱动DB(7/l5~O,P)到它需要发送的二进制数位序列的值,然后把ACK置成“真”。此后,继续把DB(7/l5~O,P)信号置成这个二进制数位序列的值,直到REQ变成“伪”为止。目标方则是在检测到ACK变成“真”时,读DB(7/l5~O,P)的值,然后把REQ置成“伪”。发起方在检测到REQ变成“伪”时,它可以改变或取消放置在数据总线上的值,并把ACK置成“伪”。

此后,目标方可以通过把REQ置成“真”,继续请求信息。

2. 同步数据传输

同步数据传输只在数据阶段使用,并且是在目标方和发起方之间建立同步数据传输协定之后使用。

与异步传输中的规则相同,当I/0信号为“真”时,数据是由目标方向发起方传输。目标方先把数据放置到数据总线上,即置DB(7/l5~O,P)对应的线路,然后把REQ置成“真”。在同步数据传输中,目标方在把REQ置成“真”后,需要把放置在DB(7/l5~O,P)上的二进制数位序列的值保持一个指定长度的时间,但不必维持到对ACK信号变“真”的接收。这是与异步传输不同的一个地方。在指定长度的时间期满后,目标方就可以把REQ置成“伪”,并且可以改变或取消放置在数据总线上的值,然后准备发送下一个数据。发起方在检测到REQ变“真”之后一个指定长度的时间内读DB(7/l5~O,P)上的值,然后把ACK置成“真”作为对目标方的响应。

与异步传输一样,在同步数据传输中,发起方也在接收到一个REQ并读取了数据总线上的值之后就发送一个ACK信号。但与异步传输不同的是,目标方在接收到对一个数据的ACK之前可以发送多个REQ信号。SCSI为同步数据传输的REQ/ACK握手过程定义了一个称作REQ/ACK饱和值的参数,它表示在接收到ACK信号前可以发送的最大REQ信号数。如果发送的REQ数日多于接收到的ACK数目,并达到了定义的REQ/ACK饱和值,那么目标方暂停发送REQ信号和数据,直到接收到下一个ACK为止。这在原理上与传统网络中的流控制类似。

当I/O信号为“伪”时,数据是由发起方向目标方传输。发起方每次接收到一个REQ信号就发送一次数据。目标方先把REQ置成“真”。发起方检测到REQ变“真”后把要发送的数据放置到数据总线上,即置DB(7/l5~O,P)对应的线路,然后把ACK置成“真”。接着发送方需要在一个指定长度的时间内保持在总线上放置的数据不变,并继续把ACK置成“真”。在指定的时间期满后,发起方可以把ACK置成“伪”,并且可以改变或取消放置在数据总线上的值。目标方在检测到ACK信号变“真”后,在指定的ACK保持为“真”的时间内读取数据总线上的数据,并把REQ置成“伪”。

此后,目标方可以通过把REQ再置成“真”继续请求信息。

3.8 SCSI 命令描述块

在互连层完成SCSI设备对总线的连接,以及发送方和目标方的选择的基础上,传输层协议执行实际的数据传输。传输层提供了两类服务,一是命令的执行和确认;二是数据的传送。命令的执行是在总线进入命令阶段后,发起方通过命令描述块(command description block,CDB)向目标方发送具体的命令。命令的确认是在总线进入通信 (Message)阶段后,发起方接收由目标方发送的命令执行确认信息。数据的传送则是在数据阶段(数据出或数据入)进行的。传输协议的运行过程包括发送命令、传输数据和对命令执行的确认。SCSI基础命令规范 SPC(SCSIPrimaryCommands,SCSI基础命令)定义了CDB的标准。

除了基本命令外,SPC还定义了所有类型的SCSI目标方设各都可以使用的管理参数,如诊断参数和日志参数等。

发起方对存储设备的实际操作是通过向目标方发送一个命令描述块来完成的。在一些情况下,在一个命令描述块之后可能还有一些参数要传给目标方,按照具体的协定,这些更多的参数是在命令描述块后的“数据出”阶段发送的。命令描述块有定长和不定长两种格式,而定长格式的命令描述块又有6、10、12或16字节不同的长度规定。

命令描述块由编号从0~5的6个字节组成。下面介绍其中各个段的内容。

1.操作码

操作码是所有命令描述块都有

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top