总线的通讯控制

本贴最后更新于 1254 天前,其中的信息可能已经物是人非

一条总线会被挂接在其上的任意一对设备所使用。如果每对设备都随意地发送数据,那么很有可能出现信号之间的相互影响,甚至可能会影响到下一对设备的信号传输过程。如何保证数据传输的稳定可靠呢?显然需要有一种总线使用协议,解决通信双方的协调配合问题。这个问题被称为总线通信仲裁

总线传输周期是指主设备与从设备之间完成一次完整可靠的通信所需的时间。设计人员规定,在一个传输周期内,主设备与从设备的交互分为四个阶段:

  1. 申请分配阶段:主设备申请总线的使用权,这由总线判优仲裁来完成。
  2. 寻址阶段:主设备向从设备发送地址信号命令信号
  3. 传输阶段:主设备与从设备交换数据。
  4. 结束阶段:主设备释放总线,让其它设备有机会使用总线。

下面以数据输入过程(CPU 从外设中读取数据)为例,介绍总线通信仲裁的四种经典实现方案:同步通讯异步通讯半同步通讯分离式通讯

1. 同步通讯方式

总线通信仲裁同步通信.drawio.png

同步通讯方式的特征是要有一个定宽、定距的统一时钟信号,并且必须保证挂接在总线上的所有设备都可以在时钟信号指定的时间内完成每个阶段的操作。在这种通讯方式中,将一个总线传输周期等分为四个阶段:T1——T4,对应了总线传输周期中从寻址阶段到结束阶段的流程:

  1. T1 的上升沿,主设备向从设备发送地址信号。
  2. T2 的上升沿,主设备向从设备发送读命令。
  3. T3 的上升沿,从设备向主设备发送数据。
  4. T4 的上升沿,从设备撤销总线上的数据;主设备撤销地址信号,并释放总线。

同步通讯方式的优点:

  • 传输速度很快,传输效率非常高

同步通讯方式的缺点:

  • 必须以传输速度最慢的设备来确定公共时钟信号的宽度。当总线上设备的读写速度差别很大时,会大大降低总线的使用效率。
  • 可靠性比较低。因为不知道被访问的外部设备是否能够响应,一旦外部设备故障,可能从总线上读取到无效的地址或者数据。

往往在总线的长度比较短,并且各个设备的读写速度差别不大时采取这种通讯方式。

2. 异步通讯方式

为了克服同步通讯方式的缺点,设计出了异步通讯方式。异步通讯方式没有统一的时钟标准,不要求所有部件严格地统一操作时间,而是采取握手方式,即当主设备发出请求信号后,进入等待状态,直到收到了从设备的响应信号之后再开始通讯。这就解决了各模块读写速度不一致问题,但是也要增加两条应答线。

异步通讯方式中根据应答信号是否互锁,又可以分为不互锁方式半互锁方式全互锁方式

2.1 不互锁异步通讯方式

总线通信仲裁不互锁异步通信.drawio.png

所谓的“不互锁”,就是指主设备发出请求信号之后,不必等待接到从设备的应答信号,而是经过一段时间之后,默认从设备已经收到,直接撤销这个信号;从设备收到请求信号之后开始准备要发送的数据,准备之后发送应答信号,经过一段时间后也默认主模块已经收到应答信号,直接撤销这个应答信号。

很明显,这种通讯方式中没有任何一个确认信号,即请求信号与应答信号之间没有任何制约关系。

2.2 半互锁异步通讯方式

总线通信仲裁半互锁异步通信.drawio.png

所谓的“半互锁”,就是指主设备发出并持续维持请求信号,直到收到从设备的应答信号后才撤销请求信号;而从设备接到请求信号后,开始准备要发送的数据,就绪后发送应答信号,经过一段时间后默认主设备已经收到应答信号,直接撤销这个应答信号。

很明显,这种通讯方式中主设备的请求信号和从设备的应答信号之间存在简单的制约关系。

2.3 全互锁异步通讯方式

总线通信仲裁全互锁异步通信.drawio.png

所谓的“全互锁”,就是指主设备发出并持续维持请求信号,直到收到从设备的应答信号后才撤销请求信号;而从设备接到请求信号后,开始准备要发送的数据,就绪后发送并持续维持应答信号,直到主设备发送了确认信号后才撤销这个应答信号。

很明显,这种通讯方式中主设备的请求信号和从设备的应答信号之间存在完全制约关系,保证了请求信号与应答信号绝不丢失,并且允许在发送失败的情况下重传数据。

3. 半同步通讯方式

总线通信仲裁半同步通信.drawio.png

半同步通讯方式的思路是将同步方式与异步方式相结合。也就是说,这种方式既有同步通讯方式的特征,又具有异步通讯方式的特征:

  • 有一个定宽定距的时钟来管理数据通讯过程
  • 允许不同速度的设备与总线协同工作

在同步通讯方式的基础上,半同步方式加入了一条“等待响应信号线”WAIT。当从设备不能在 T3 时钟周期内准备好数据时,它就将 WAIT 设置为低电平,表示还要继续准备至少一个时钟周期;在时钟周期 T2 后,主设备将不停地检查 WAIT 线是否为低电平,只要是低电平,就等待一个时钟周期。当从设备最终准备好数据后,将 WAIT 设置为高电平,主设备从数据总线上读取数据。

4. 分离式通讯

同步通讯方式、异步通讯方式以及半同步通讯方式的共同特点是:

  1. 主设备发送地址信号和命令信号时,需要占用总线。
  2. 从设备准备数据时,不需要占用总线。
  3. 从设备向主设备发送数据时,需要占用总线。

可以看到,从设备准备数据的过程中总线资源是被浪费的。如果从设备准备的时间很长,总线利用率将会相应下降。在分离式通讯方式试图在半同步通讯方式的基础上解决这一问题,即当主设备发送完地址信号与命令信号后,释放总线;当从设备准备完数据后,再次申请使用总线,将数据发送给主设备。这种方式很大程度上提高了总线的利用率,但是也增加了硬件实现的难度,因为在这种情况下,主设备与从设备的地位是等价的,它们二者可以相互转换。

1 操作
zhangkeyang 在 2021-02-14 23:10:47 更新了该帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...