当前位置: 组成原理 > 03-总线 > 阅读正文

计组 总线控制

2021.7.14.   299 次   2526字

总线控制是总线的重难点,总线上连接了多个设备,多个设备之间要进行通信,必须解决以下2个问题

  • 总线的判优控制 ==》多个设备同时发起请求,先给谁?
  • 总线的通信控制 ==》如何在保证正确性前提下完成通信?

总线判优控制

根据是否能发起总线请求,我们对总线上的设备分为2类

  • 主设备 ==》 对总线有控制权
  • 从设备 ==》 不能发起控制,仅能响应主设备发送的总线命令

主设备可以发起总线控制申请,控制总线后,可以控制和另外一台设备进行通信过程

一个设备,可以作为主设备,又可以作为从设备(部分设备),有些总线上也可以有多个主设备

总线判优,可以分为2种方式

  • 集中式
    • 链式查询
    • 计数器定时查询
    • 独立请求方式
  • 分布式(不讲)

集中式表示把控制的判优逻辑,设定在一个设备上,比如说放在cpu中

分布式,表示把判优逻辑设定在各个设备,或各个设备的端口上

集中式可以分为3种方式, 下面对集中式查询进行介绍

集中式判优

链式查询

  • BR为占用请求控制线,
  • BS为总线忙
  • BG为同意请求

这3条线会连接在对应的设备上,普通部件可以向总线控制部件发出申请,然后会顺着BG链向下查询是谁申请,直到找到申请组件,然后同意申请,一旦该组件获得总线控制权,就由它发送一个BS总线忙的信号给控制组件,算是一种反馈

那么,在链式查询情况下,优先级是什么?是部件与总线控制部件的连接顺序。这种设计方案非常简单,但这种情况下顺序与总线设计时就固定好了的,不够灵活,此外一旦发生线路故障,可能导致部分设备再也无法获取总线控制权。这种设计方案主要用于微型计算机,或简单的嵌入式系统中。对于优化方案,可以增加一条BG线,以免线路故障。

计数器定时查询

  • BR为请求控制器
  • BS为总线忙
  • DS为设备地址线

靠近总线控制组件的DS为0,往后是1,2,3…,控制组件中有一个计数器,比如说0,那么当收到请求时,按计数器中的数字开始查询,然后递增1,即0,1,2…看起来和第一种一样,但实际又差的多,你可以灵活的设置计数器的值,比如从2开始,或者从上一次的值开始这样就形成了循环查询。在这种方式中,设备地址线需要log2N向上取整的位数,也就是log2N向上取整根线

独立请求方式

  • BR为控制请求线
  • BG为同意

在这个设计中,每个设备均与总线控制器之间存在BR,BG。在这个设计中,控制部件中,存在一个排队器。这种方式非常灵活,你可以做简单的排队,又可以指定优先顺序,或循环,或混合。一旦某个设备占用了总线,标记该设备获取了总线控制器,在这种方式中,如果有n个设备,需要2n条线。

总线通信控制

当主设备获得了总线的控制以后,就需要和从设备进行数据交换,那么总线的通信控制就是为了解决通信双方“协调配合”的问题

总线传输周期: 指主设备,与从设备之间完成一次完整的并且可靠的通信需要的时间。那么需要解决以下问题

  • 申请分配阶段 ==》 主设备获得控制权
  • 寻址阶段 ==》 主设备找到从设备
  • 传数阶段 ==》 交换数据
  • 结束阶段 ==》撤销有关信息

在寻址阶段,通过地址找到从设备,通过命令控制从设备完成相应的操作

如果主设备准备好数据,那么它就可以发送数据,如果从设备准备好接受,那么就可以进行接受

在传输完毕后,就可以从主、从设备中撤销对应信息

总线通信的4种方式

  • 同步通信 ==》 由统一时标控制数据传送
  • 异步通信 ==》 采用应答方式,没有公共时钟标准
  • 半同步通信 ==》 同步、异步结合
  • 分离式通信 ==》充分挖掘系统总线每一瞬间的传输潜力

同步通信,需要有一个定宽,定距的时标来控制数据传输

异步通信,由主设备发出请求,从设备发出应答,然后开始数据传输

半同步,主要是为了解决不同速度的2个模块、设备之间的数据通信问题

分离式通信能最大化发挥总线的数据传输能力。

同步数据传输(细):

传输时,存在4个周期,分别是T1,T2,T3,T4,除了时钟周期,还需要给出地址信号,读信号,数据

对于同步通信来说,要在固定的时间点上给出固定的操作, 在总线周期来看,在T1时钟上升沿给出地址信号,这里由主设备给出

在第二个时钟周期上升沿,给出读命令信号,告诉从设备要读取数据

在第三个周期从设备必须给出数据信号,然后开始传输数据,在第三个周期结束时撤销读信号、数据信号。在第四个周期,地址信号也撤销了。

可以看到,在同步通信中,需要一个定宽,定距的时钟,且需要在指定的时间内完成指定的操作。读命令、写命令是相似的,但并不相同,比如写数据是在下降沿,撤销在上升沿。你可以看到在这个设计中,快的速度必须等待慢的速度,因为两个设备之间必须同步。一般应用在存取时间比较短,且存时间比较一致的情况下。

异步数据通信(细):

不互锁

主设备发送请求,从设备应答,再一段时间后,主设备撤销请求,从设备撤销应答,它们是分开进行的,主设备不管是否接收到应答信号,过一段时间后都会撤销,通信的可靠性是有问题的

半互锁

主设备发送请求,从设备发出应答信号,主设备在介绍到应答后撤销请求,若接受不到应答则保持请求,这种方式可以判断对方是否正常接受到请求信号,但可能一直等待应答。

全互锁

主设备发出请求,从设备发出应答,主设备接受应答后撤销请求,然后提示从设备取消响应。半互锁、全互锁方式一旦发现数据错误,可以重新发送。

半同步通信(细):

这是同步与异步的结合 ,发送方使用上升沿发信号,接收方使用下降沿判断识别,异步允许不同速度和谐的工作,增加一条“等待”响应信号 wait,该信号由从设备给出的

以输入数据为例模拟

  • t1 由主模块发地址
  • t2 主模块发命令
  • 当wait为低电平,则等待一个T,直到T为高电平
  • t3 从模块提供数据
  • t4 从模块撤销数据,主模块撤销命令

总结上述3种通信共同特点:

以一个总线传输周期(以输入周期为例)

  • 主模块发地址、命令 ==》 占用总线
  • 从模块准备数据 ==》 总线空闲
  • 从模块向主模块发送数据 ==》 占用总线

总线在传输周期中空闲,是一种浪费

分离式通信(细):

以一个总线周期

  • 子周期1 ==》主模块申请占用总线,使用完毕后放弃总线使用权
  • 子周期2 ==》从模块申请占用总线,将各种信息送至总线上

在子周期1后,从模块进行数据准备,一旦数据准备完毕,从设备申请占用总线,实际上在这个阶段,从模块已经变为了主模块。分离式通信用途广泛,比如在读取硬盘时,硬盘寻找数据时间很长,在这个过程就使用了分离式通信,充分使用了总线潜力。

本篇完,还有疑问?

加入QQ交流群:11500065636 IT 技术交流群