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

SCSI总线和协议

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

MSG

CID

1/0

阶段

具体阶段

传输方向

1

0

0

*(未用)

1

0

1

*(末用)

1

1

0

通信

通信出

从发送方到目标方

1

1

1

通信

通信入

从目标方到发送方

0

0

0

数据

数据出

从发送方到目标方

0

0

1

数据

数据入

从目标方到发送方

0

1

0

命令

从发送方到目标方

0

1

1

状态

从目标方到发送方

注释:0=伪,1=真,*=保留未来定义

命令阶段允许目标方请求发起方传送命令信息。在命令阶段的REQ/ACK握手过程中,目标方把C/D信号置成“真”,把I/0信号和MSG信号置成“伪”。

数据阶段包括“数据入”阶段和“数据出”阶段。

(1)“数据入”阶段允许目标方请求把数据从目标方传送给发起方。在“数据入”阶段的REQ/ACK握手过程中,目标方把I/0信号置成“真”,把C/D信号和MSG信号置成“伪”。

(2)“数据出”阶段允许目标方请求把数据从发起方传送到目标方。在“数据出”阶段的REQ/ACK握手过程中,目标方把C/D信号、I/0信号和MSG信号都置成“真”。

状态阶段允许目标方请求把状态信息从目标方传送给发起方。在状态阶段的REQ/ACK握手过程中,目标方把C/D信号和I/0信号置成“真”,把MSG信号置成“伪”。

通信阶段可以是“通信入”阶段或“通信出”阶段。无论是在“通信入”阶段,还是在“通信出”阶段,都可以传送多条消息。传送的第一个字节可以是单字节消息,也可以是多字节消息的首字节。在1个通信阶段可以传送多个多字节消息。

“通信入”阶段允许目标方请求把消息从目标方发送给发起方。在“通信入”阶段的REQ/ACK握手过程中,目标方把C/D信号、I/0信号和MSG信号都置成“真”。

“通信出”阶段允许目标方请求把消息从发起方传送到目标方。目标方在响应发起方建立的提醒条件时调用“通信出”阶段。在“通信出”阶段的REQ/ACK握手过程中,目标方把C/D信号和MSG信号置成“真”,把I/0信号置成“伪”。

3.7异步传输和同步传输

与传统网络的数据包传送方式不同,SCSI基于REQ/ACK信号控制数据传输的过程。根据REQ和ACK信号控制与数据总线置位时间的差别,信息传输又可分为异步传输和同步传输两个列别。而且,无论传输的方向如何,信息的传输都是由REQ信号开始,并且REQ信号都是由目标方控制和发送的。

1.异步信息传输

异步传输方式可用于数据阶段的数据传输,也可用于命令、状态和通信阶段的信息传输。首先,信息传输的方向是由I/O信号决定的。如果I/O信号为“真”,那么信息是由目标方向发起方传输。在此情况下,为了传送信息,目标方先把数据线DB(7/15-0,P)信号置成对应想要传送的二进制数位序列的值,然后把REQ信号置成“真”。发起方在检测到REQ为“真”时,读取数据总线的值,然后把ACK信号置成“真”。当目标方检测到ACK为“真”时,它就可以改变或取消放置在数据总线上的值,并把REQ置成“伪”。发起方在检测到REQ置成“伪”时把ACK也置成“伪”。当目标方检测到ACK为“伪”时,总线上就完成了一次数据传输,并可进行下一次数据传输。

在异步传输方式中,每个REQ/ACK握手过程传送1个(对于窄SCSI)或2个字节(对于宽SCSI)的信息。特别需要注意的是,在此方式中,目标方在置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置成“真”作为对目标方的响应。

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

网站地图

Top