总线仲裁

总线上的设备一般分为总线主设备总线从设备总线主设备是指具有控制总线能力的模块,通常是CPU或以CPU为中心的逻辑模块,在获得总线控制权之后能启动数据信息的传输;与之相对应的总线从设备,是指能够对总线上的数据请求做出响应,但本身不具备总线控制能力的模块。在早期的计算机系统中,一条总线上只有一个主设备,总线一直由它占用,技术简单,实现也比较容易。

随着应用的发展,主要是工业控制、科学计算的需求,多个主设备共享总线的情况越来越多,这对总线技术提出了新的要求。根据这类系统的特点,需要解决各个主设备之间资源争用等问题,这使得总线的复杂性大为增加。

总线仲裁就是在多个总线主设备的环境中提出来的。在多处理机系统中,每个处理机都可以作为总线主设备,都要共享资源,它们都必须通过系统总线才能访问其它资源,总线也可视为是一种重要的公共资源。由于每个处理机都会随机地提出对总线使用的要求,这样就可能发生总线竞争现象。为了防止多个处理机同时控制总线,就要在总线上设立一个处理上述总线竞争的机构,按优先级次序,合理地分配资源,这就是总线仲裁问题。用硬件来实现总线分配的逻辑电路称为总线仲裁器(Bus Arbiter)。它的任务是响应总线请求,通过对分配过程的正确控制,达到最佳使用总线。

对总线仲裁问题的解决是以优先级(又称优先权)的概念为基础的,通常有三种总线分配的优先级技术──串联、并联和循环

1. 串联优先级判别法。

图7-1串联优先级判别法的示意图

图7-1中有Ⅰ、Ⅱ、…、N等N个模块,都可作为总线主设备,各个模块中的“请求”输出端采用集电极(漏极)开路门,“请求”端用“线或”方式接到仲裁器“请求”输入端,每个模块的“忙”端同仲裁器的“总线忙”状态线相连,这是一个输入输出双向信号线。当一个模块占有总线控制权时,该模块的“忙”信号端成为输出端,向系统的“忙”状态线送出有效信号(例如低电平)。其它模块的“忙”信号端全部作为输入端工作,检测“忙”线上状态。一个模块若要提出总线“请求”,其必要条件是选检测到“忙”信号输入端处于无效状态。与此相应,仲裁器接受总线请求输入的条件,也是“忙”线处于无效状态。

进一步可以规定仲裁器输出“允许”信号的条件首先是“忙”线无效,表示总线没有被任一模块占用;其次才是有模块提出了总线请求。“允许”信号在链接的模块之间传输,直到提出总线“请求”的那个模块为止。这里用“允许”信号的边沿触发,它把共享总线的各模块要使用总线时,便发生信号禁止后面的部件使用总线。通过这种方式,就确定了请求总线各模块中优先级最高的模块。显然,在这种方式中,当优先级高的模块频繁请求时,优先级别低的模块可能很长时间都无法获得总线。一旦有模块占用总线后,“允许”信号就不再存在。

2. 并联优先级别判别法。

图7-2并联优先级判别法的示意图

图7-2中有N个模块,都可作为总线主设备,每个模块都有总线“请求”线和总线“允许”线,模块之间是独立的,没有任何控制关系。这些信号接到总线优先控制器(仲裁器),任一模块使用总线,都要通过“请求”线向仲裁器发出“请求”信号。仲裁器一般由一个优先级编码器和一个译码器组成。该电路接到某个模块或多个模块发来的请求信号后,首先优先级编码器进行编码,然后由译码器产生相应的输出信号,发往请求总线模块中优先级最高的模块,并把“允许”信号送给该模块。被选中的模块撤销总线“请求”信号,输出总线“忙”信号,通知其余模块,总线已经占用。在一个模块占用总线的传输结束以后,就把总线“忙”信号撤销,仲裁器也撤销“允许”信号。根据各请求输入的情况,仲裁器重新分配总线控制权。 

3.循环优先级判别法。

循环优先级判别方法类似于并联优先级判别方法,只是其中的优先级是动态分配的,原来的优先级编码器由一个更为复杂的电路代替,该电路把占用总线的优先级在发出总线请求的那些模块之间循环移动,从而使每个总线模块使用总线的机会相同。

<think>好的,我现在需要回答用户关于CAN总线仲裁机制的工作原理和实现方法的问题。首先,我需要回顾一下自己之前学过的相关知识,并查阅提供的引用资料来确保准确。 根据用户提供的引用,特别是引用3中提到CAN总线是多主机的结构,采用“线与”机制进行仲裁。这里的关键点是显性(逻辑0)和隐性(逻辑1)的优先级不同。显性位会覆盖隐性位,因此当多个节点同时发送时,发送显性位的节点会赢得仲裁。 接下来,我需要理清仲裁的具体过程。引用3中的示意图可能描述了标准帧格式的仲裁过程,标识符(ID)越低的节点优先级越高。当节点发送ID时,逐位比较,一旦某个节点发送显性位而其他节点发送隐性位,该节点继续发送,其他节点转为接收模式。 此外,引用1和引用2都强调了仲裁机制的高效性和非破坏性,即没有数据冲突或丢失。这涉及到CAN的非破坏性逐位仲裁,确保高优先级的信息能够及时传输,而低优先级的节点自动退出发送,等待总线空闲时重试。 实现方法方面,需要说明硬件如何支持这一机制,包括标识符的设置、总线电平的监测等。引用3提到CAN节点可以设置标识符滤波,这可能与仲裁无关,但说明硬件在数据处理中的作用。 可能还需要解释为什么标识符越小优先级越高,以及这种设计如何优化总线利用率。同时,要提到错误检测和重传机制如何与仲裁配合,确保系统可靠性。 最后,生成相关问题时要覆盖用户可能感兴趣的方面,如与其它总线协议的比较、应用场景、优化方法等,帮助用户进一步学习。</think>### CAN总线仲裁机制的工作原理及实现方法 #### 1. **基本原理** CAN总线通过**非破坏性逐位仲裁**实现多节点竞争总线的优先级判定[^3]。其核心规则为: - **显性电平(逻辑0)优先级高于隐性电平(逻辑1)**。若多个节点同时发送数据,总线实际电平为显性(逻辑0)。 - **标识符(ID)决定优先级**:ID值越小(二进制高位先发送),优先级越高。例如,ID为`0000 0001`的节点比`0000 0010`的节点优先级更高。 #### 2. **仲裁过程** 1. **同步发送**:所有节点在总线空闲时开始发送数据。 2. **逐位比较**:从ID的最高位(MSB)开始,每个节点同时发送并检测总线电平。 - 若某节点发送**隐性位(1)**但检测到总线为**显性位(0)**,则立即退出发送并转为接收模式。 - 发送显性位(0)的节点继续发送,直至仲裁完成。 3. **仲裁完成**:最终仅有一个节点(最高优先级)继续发送数据,其他节点等待总线空闲后重试。 #### 3. **实现方式** - **硬件支持**:CAN控制器内置仲裁电路,自动处理位比较和优先级判定,无需软件干预。 - **线与逻辑**:总线采用开漏输出结构,显性电平通过主动拉低实现,隐性电平由上拉电阻维持高电平。 - **错误处理**:仲裁失败的节点自动重传,确保数据完整性。 #### 4. **优势** - **无冲突传输**:仲裁过程无数据丢失,高优先级信息优先传输[^1]。 - **高实时性**:低延迟响应关键消息(如汽车刹车信号)。 - **高可靠性**:硬件级仲裁与错误检测(CRC校验)结合。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值