总线事务和定时
总线事务
- 定义:从请求总线到完成总线使用的操作序列【在一个总线周期中发生的一系列活动】
- 过程:
- 请求阶段:主设备(CPU 或 DMA)发出总线传输请求,并且获得总线控制权。
- 仲裁阶段:总线仲裁机构决定将下一个传输周期的总线使用权授予某个申请者。
- 寻址阶段:主设备通过总线给出要访问的从设备地址及有关命令,启动从模块。
- 传输阶段:主模块和从模块进行数据交换,可单向或双向进行数据传送(一般只能传输一个字长的数据)。
- 释放阶段:主模块的有关信息均从系统总线上撤除,让出总线使用权。
- 总线上的数据传输方式:
- 非突发式:
- 在每个传送周期内都先传送地址,再传送数据。
- 主、从设备之间通常每次只能传输一个字长的数据。
- 突发(猝发)式:
- 发送方在传输完成地址后,连续进行若干次数据的发送,即一次传输一个地址和一批连续的数据。
- 能够进行连续成组数据的传送;其寻址阶段发送的是连续数据单元的首地址。
- 可以提高总线数据传输率。
- 主设备只需给出一个首地址,从设备就能从首地址开始的若干连续单元读出或写入多个数据。
- 非突发式:
总线定时
- 定义:总线在双方交换数据的过程中需要时间上配合关系的控制【实质是一种协议或者规则】。
同步定时方式
定义
- 由统一时序控制的通信方式。
- 同步通信采用公共时钟,有统一的时钟周期,同步时钟信号不由各设备提供。
- 同步控制既可以用于 CPU 控制,又可用于高速的外部设备控制。

优点
- 传送速度快,具有较高的传输速率。
- 总线控制逻辑简单。
- 同步通信不需要应答信息且总线长度短。
- 同步通信用一个公共的时钟信号进行同步。
- 同步通信中,各部件的存取时间较接近。
缺点
- 主从设备属于强制性同步,即总线周期固定,由最慢设备的存取时间决定。
- 不能及时进行数据通信的有效性验证。
- 可靠性较差。
适用场景
- 适用于总线长度较短及总线所接部件的存储时间比较接近的系统。
- 对于速度差异大的设备,同步方式会强制慢设备等待快设备,或快设备等待慢设备,导致效率降低,因此不适用于连接速度差异大的设备。
异步定时方式
定义
- 没有统一的时钟;没有固定的时间间隔【不采用时钟信号,只采用握手】。
- 完全依靠传送双方相互制约的“握手”信号来实现定时控制。
- 传送操作是由双方按需求分配时间的。
- 每次握手完成一次通信,但是一次通信往往交换多位数据。
优点
- 总线周期长度可变,适应不同速度的设备。
- 能保证两个工作速度相差很大的部件或设备之间可靠地进行信息交换。
- 自动适应时间的配合。
缺点
- 比同步稍复杂一些,需要额外的握手信号线。
- 速度比同步方式慢(因为需要等待握手信号)。
适用场景
- 主要用于在不同速度的设备间进行通信。
分类
- 不互锁方式:
- 主设备发出“请求”信号后,不必等到接到从设备的“回答”信号,而是经过一段时间,便撤销“请求”信号。
- 从设备在接到“请求”信号后,发出“回答”信号,并经过一段时间,自动撤销“回答”信号。双方不存在互锁关系。
- 速度最快,可靠性最差。
- 半互锁方式:
- 主设备发出“请求”信号后,必须待接到从设备的“回答”信号后,才撤销“请求”信号,存在互锁关系。
- 从设备在接到“请求”信号后,发出“回答”信号,但不必等待获知主设备的“请求”信号已经撤销,而是隔一段时间后自动撤销“回答”信号,不存在互锁关系。
- 全互锁方式:
- 主设备发出“请求”信号后,必须待从设备“回答”后,才撤销“请求”信号。
- 从设备发出“回答”信号,必须待获知主设备“请求”信号已撤销后,再撤销其“回答”信号。双方存在互锁关系。
- 最可靠,速度最慢。

半同步定时方式
定义
- 在统一时钟的基础上,增加一个 “等待”响应信号 WAIT。
- 同步:
- 发送方用系统时钟前沿发信号。
- 接收方用系统时钟后沿判断、识别。
- 异步:通过“等待”信号允许不同速度的模块和谐工作,即当从设备速度慢时,可发出 WAIT 信号延长总线周期。

优点
- 控制方式比异步定时简单(无需复杂的握手协议)。
- 各模块在系统时钟的控制下同步工作,可靠性较高。
- 兼顾了同步和异步的优点,允许一定程度的速度差异。
缺点
- 系统的时钟频率不能要求太高(仍受限于最慢设备的 WAIT 信号响应时间)。
- 整体上看,系统工作的速度不是很高(比纯同步慢)。
分离式定时方式
上述三种通信的共同点: 一个总线传输周期(以输入数据为例)通常包含总线空闲时间:
- 主模块发地址、命令【使用总线】
- 从模块准备数据【总线空闲】
- 从模块向主模块发数据【使用总线】
定义
- 将总线事务分解为请求和应答两个独立的子过程。
- 子周期 1:主模块申请占用总线,发出地址、命令并指明要传送的数据量,然后立即释放总线的使用权。
- 子周期 2:从模块收到地址和命令后,进行数据准备。数据准备好后,从模块独立申请占用总线,获得总线控制权后,将各种信息(如数据)送至总线上发给主模块,然后释放总线。
- 各模块均有权申请占用总线。
- 在主模块发出请求后即释放总线,从模块准备好数据后再独立申请总线发送数据,因此在请求和应答之间没有强制性等待。
- 各模块准备数据时,不占用总线。
- 总线利用率提高。
优点
- 在不传送数据时释放总线,使总线可接受其他设备的请求,不存在空闲等待时间,显著提高了总线利用率。
- 允许主从模块独立进行操作,提高了并行性。
缺点
- 控制逻辑复杂,需要更复杂的总线仲裁和控制电路。
- 事务开销较大,因为一个完整的传输被分解为两次总线仲裁和两次数据传输。