系统总线(二)

总线控制

集中控制优先仲裁方式

  • 链式查询
    链式查询

BR是接口向总线控制部件发起占用请求

BG到达的接口有总线请求,BG信号就不再往下传了,意味着该接口获得了总线使用权。

BS是接口获得了总线使用权后,和总线控制部件建立的总线繁忙信号,表示它占用了总线。

该种查询方式中,离总线控制部件最近的设备具有最高的优先级。

这种方式的特点是:只需要很少几根线就能按一定优先次序实现总线控制,并且很容易扩充设备,但对电路故障很敏感,且优先级别低的设备可能很难获取请求。

  • 计数器定时查询
    计数器定时查询

该种查询方式相比前面的查询多了一条设备地址线,少了一根BG线,总线控制部件接收到BR送来的总线请求信号后,在总线未被使用(BS=0)的情况下,总线控制部件中的计数器开始计数,并通过设备地址线,向各设备发出一组地址信号。当某个 请求占用总线 的设备地址与计数器一致时,该设备就获得总线使用权。

计数可以从“0”开始,也可以从上一次计数的终止点开始,当然也可以由程序设置。这种方式对电路故障不如 链式查询 敏感,但增加了设备地址数,控制也较复杂。

  • 独立请求方式
    独立请求方式

该种查询方式内,每台设备均有一对总线请求先BRi和总线同意线BGi。当设备要求使用总线时,便发出该设备的请求信号。总线控制部件中有一排队电路,可根据优先次序确定响应哪一台设备的请求。该方式响应速度快,优先次序控制灵活,但控制线数量多。

总结

链式查询中仅用两根线确定总线使用权属于哪个设备;在计数器查询中大致用log2n根线,其中n是允许接纳的最大设备数,而独立请求方式需要采用2n根线。如果问几根控制线,还要再加上2。

总线通信控制

众多部件共享总线,在争夺总线使用权时,应按各部件的优先等级来解决。而在通讯时间上,则应按分时方式来处理,即哪一个部件获得使用权,此刻就由他传送,等到该部件释放总先后,下个部件继续获得总线。这样一个个轮流交替。
总线周期通常分为四个阶段;

  • 申请分配阶段:由需要使用设备的主模块提出申请,经过仲裁后授予某一部件权限
  • 寻址阶段:取得了使用权的主模块通过总线发出本次要访问的从模块的地址
  • 传输阶段:数据由源模块发出,经数据总线流入目的模块
  • 结束阶段:主模块的有关信息均从系统总线上撤除,让出总线使用权

同步通信

通信双方由统一时标控制数据传输 称为 同步通信。时钟通常由CPU的总线控制部件发出,送到总线上的所有部件;也可以由每个部件各自的时序发生器发出,但必须由总线控制部件发出的时钟信号对它们进行同步。

同步通信

这里的读指令总共分为4个阶段(假设申请总线成功):

  1. 寻址阶段,取得了使用权的主模块通过总线发出要读取的设备地址,从T1上沿持续到T4结束
  2. 传输阶段,主模块向从模块发送读取命令,从T2上沿持续到T3结束
  3. 传输阶段2,从模块准备数据,持续一个T3
  4. 结束阶段,主模块撤销读取命令,从模块撤销数据

而对于写指令,也分为4个阶段:

  1. 寻址阶段,取得了使用权的主模块通过总线发出要读取的设备地址,从T1上沿持续到T4结束
  2. 传输阶段,主模块提供数据
  3. 传输阶段2,主模块发出写命令,从模块收到命令后,得在指定时间内将数据写到从模块里。
  4. 结束阶段,主模块撤销写入命令、撤销数据

优点:

  • 简单、好配合

缺点:

  • 需要强制主、从模块的时间“同步”,必须在规定时间内完成要求
  • 需要对所有从模块都用同一限时,所以必须得考虑最慢得设备

异步通信

异步通信相比同步通信,对时间要求没有这么严格,允许各个部件得速度不一致。异步通信采用应答得方式实现,主模块发出请求信号时,一直等待从模块反馈“响应”信号后才开始通信。不过这就要求主、从模块间增加两条应答线。

异步通信分为不互锁、半互锁、全互锁三种。

不互锁

主模块发出请求后,不必等待从模块得响应信号,而是经过一段时间后撤销请求信号;从模块接收到请求信号后,在条件允许得情况下发出回答信号,一段时间后撤销回答信号。这个过程双方并无互锁关系。

半互锁

主模块发出请求信号,必须待接到从模块得回答信号后再撤销其请求信号,有互锁关系。而从模块在发送完回答信号后不必等待主模块撤销请求信号,而是隔一段时间自动撤销回答信号

全互锁

主模块发出请求信号,从模块需要发出回答信号,等主模块撤销了请求信号后,从模块才能撤销回答信号。

// 这里有几个例子

半同步通信

为了让同步通信也能像异步通信这样允许不同速度得模块和谐工作,为此增设了一条“WAIT”响应信号线,采用插入时钟(等待)周期得措施来协调通信双方得配合问题。