我是靠谱客的博主 眯眯眼月亮,最近开发中收集的这篇文章主要介绍【总线仲裁】,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

总线仲裁

连接到总线上的功能模块有主动和被动两种形态。如CPU 模块,它在不同的时间可以用作主方,也可用作从方;而存储器模块只能用作从方。主方(主设备)可以启动一个总线周期,而从方(从设备)只能响应主方的请求。每次总线操作,只能有一个主方占用总线控制权,但同一时间里可以有一个或多个从方。

按照总线仲裁电路的位置不同,仲裁方式分为集中式仲裁和分布式仲裁两类。对多个主设备提出的占用总线请求,一般采用优先级或公平策略进行仲裁。

㈠集中式仲裁(总线控制器)

5d5c7accbc694bde990af881ead7d67d.jpg

集中式仲裁中每个功能模块有两条线连到总线控制器:一条是送往仲裁器的总线请求信号线BR,一条是仲裁器送出的总线授权信号线BG。

⑴  链式查询方式    为减少总线授权线数量,采用了上图所示的菊花链查询方式,其中A表示地址线,D表示数据线。BS线为1,表示总线正被某外设使用。

缺点①:在查询链中离总线仲裁器最近的设备具有最高优先级,离总线仲裁器越远,优先级越低。因此,链式查询是通过接口的优先级排队电路来实现的。如果优先级高的设备出现频繁的请求,那么优先级较低的设备可能长期不能使用总线。

缺点②:是对询问链的电路故障很敏感。

链式查询方式的优点是,只用很少几根线就能按一定优先次序实现总线仲裁,并且这种链式结构很容易扩充设备。

⑵ 计数器定时查询方式  

9309dd7bf4c145f795f88932d6d3cec3.jpg

 原理:总线上的任一设备要求使用总线时,通过BR线发出总线请求。总线仲裁器接到请求信号以后,在BS线为“0”的情况下让计数器开始计数,计数值通过一组地址线发向各设备。每个设备接口都有一个设备地址判别电路,当地址线上的计数值与请求总线的设备地址相一致时,该设备置“1” BS 线,获得了总线使用权,此时中止计数查询。

优点:可改变优先次序,即每次计数可以从“0”开始,也可以从中止点开始。

⑶  独立请求方式

优点①:是响应时间快,即确定优先响应的设备所花费的时间少,不用一个设备接一个设备地查询。

优点②:是对优先次序的控制相当灵活。

㈡  分布式仲裁

分布式仲裁不需要集中的总线仲裁器,每个潜在的主方功能模块都有自己的仲裁号和仲裁器。当它们有总线请求时,把它们唯一的仲裁号发送到共享的仲裁总线上,每个仲裁器将仲裁总线上得到的号与自己的号进行比较,如果仲裁总线上的号大,则它的总线请求不予响应,并撤销它的仲裁号。

☞总线操作的基本步骤:

①主设备申请总线、仲裁器裁决并批准  (BS)

②主设备掌握总线,启动总线周期、初始化

③从设备响应,主从设备之间传输数据

④主设备释放总线,结束总线周期

 

 

 

最后

以上就是眯眯眼月亮为你收集整理的【总线仲裁】的全部内容,希望文章能够帮你解决【总线仲裁】所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部