常见的仲裁管理方式如下:
1)链式查询方式(集中式)
为减少总线授权线数量,采用下图所示的菊花链查询方式(BS总线忙、BR总线请求、BG总线同意)。
链式查询方式的主要特点是:总线授权信号BG串行地从一个I/O接口传送到下一个I/O接口,假如BG到达的接口无总线请求,则继续往下查询,假如BG到达的接口有总线请求,BG信号便不再往下查询,发出相应的BR信号,并置BS信号。这意味着该I/O接口就获得了总线控制权。
可见,在查询链中离中央仲裁器最近的设备具有最高优先级,离中央仲裁器越远,优先级越低。因此,链式查询是通过接口的优先级排队电路来实现的。链式查询方式存在的优缺点如下:
- 优点:只用很少几根线就能按一定优先级实现总线仲裁,并且这种链式结构很容易扩充设备。
- 缺点:对询问链的电路故障很敏感,如果第n个设备的接口中有关的电路有故障,那么第n个以后的设备都不能进行工作。另外查询链的优先级是固定的,如果优先级高的设备频繁出现请求时,那么优先级较低的设备可能长期不能使用总线。
2)计数器定时查询方式(集中式)
与链式查询方式相比,多了一组设备地址线,少了一根总线同意线BG。总线控制模块接到由BR送来的总线请求信号后,在总线未被使用(BS=0)的情况下,由计数器开始计数,按计数值向各设备发出一组地址信号。当某个有总线请求的设备地址与计数值一致时,便获得总线使用权,此时终止计数查询。
这种方式的特点是:计数可以从“0”开始,此时设备的优先次序是固定的;计数也可以从中止点开始,既是一种循环方法,此时设备使用总线的优先级相等。计数器的初始值还可由程序设置,故优先次序可以改变。此外对电路故障不如链式查询方式敏感,但增加了主控制线数,控制也较复杂。
3)独立请求方式(集中式)
独立请求方式如下图所示。其中每一个共享总线的设备均有一对总线请求线BRi和总线授权线BGi。当设备要求使用总线时,便发出该设备的请求信号BRi。总线控制部件中有一排队电路,可根据优先次序确定响应哪一设备的请求,给设备发相应的授权信号BGi。独立请求方式的优点是响应时间快,优先级次序控制灵活。但其缺点是控制线数量多。
4)分布仲裁方式(分布式)
分布式仲裁不需要中央仲裁器,每个潜在的主控功能模块都有自己的仲裁号和仲裁器。当它们有总线请求时,把它们唯一的仲裁号发送到共享的仲裁总线上,每个仲裁器将仲裁总线上得到的号与自己的号进行比较。如果仲裁总线上的号大,则就撤销自己向仲裁总线发送的仲裁号。最后,获胜者的仲裁号保留在仲裁总线上,获得总线控制权。
2.2.5 总线操作和定时
操作和定时主要解决占用总线的一对设备(主模块和从模块)如何进行数据传输的问题。总线定时是指总线在双方交换数据的过程中需要时间上配合关系的控制,这种控制称为总线定时,它的实质是一种协议或规则。
1)总线传输的四个阶段
- 申请分配阶段:由需要使用总线的主模块(或主设备)提出申请,经总线仲裁模块决定将下一传输周期的总线使用权授予某一个申请者。也可将此阶段细分为传输请求和总线仲裁两个阶段。
- 寻址阶段:获得使用权的主模块通过总线发出本次要访问的从模块的地址及有关命令,启动参与本次传输的从模块。
- 传输阶段:主模块和从模块进行数据交换,可单向或双向进行数据传送。
- 结束阶段:主模块的有关信息均从系统总线上撤除,让出总线使用权。
2)总线的定时
总线的定时主要分为两种,同步定时和异步定时。
同步定时方式是指系统采用一个统一的时钟信号来协调发送和接收双方的传送定时关系。若干个时钟产生相等的时间间隔,每个间隔构成一个总线周期。在一个总线周期中,发送方和接收方可进行一次数据传送。因为采用统一的时钟,每个模块或设备发送或接收信息都在固定的总线传送周期中,一个总线的传送周期结束,下一个总线传送周期开始。同步通信适用于总线长度较短及总线所接模块的存取时间比较接近的系统。
- 优点:传送速度快,具有较高的传输速率,总线控制逻辑简单。
- 缺点:主从模块属于强制性同步,不能及时进行数据通信的有效性检验,可靠性较差。
在异步定时方式中,没有统一的时钟,也没有固定的时间间隔,完全依靠传送双方相互制约的“握手”信号来实现定时控制。主模块提出交换信息的“请求”信号,经接口传送到从模块。从模块接到主模块的请求后,通过接口向主模块发出“回答”信号。 - 优点:总线周期长度可变,能保证两个工作速度相差很大的部件或设备之间可靠地进行信息交换,自动适应时间的配合。
- 缺点:比同步控制方式稍复杂一些,速度比同步定时方式慢。
根据“请求”和“回答”信号的撤销是否互锁,分为以下3种类型。不互锁方式速度最快,可靠性最差,全互锁方式最可靠,速度最慢。 - 不互锁方式:主模块发出“请求”信号后,不必等到接到从模块的“回答”信号,而是经过一段时间,便撤销“请求”信号。而从模块在接到“请求”信号后,发出“回答”信号,并经过一段时间,自动撤销“回答”信号。双方不存在互锁关系。
- 半互锁方式:主模块发出“请求”信号后,必须等接到从模块的“回答”信号后,才撤销“请求”信号,有互锁的关系。而从模块在接到“请求”信号后,发出“回答”信号,但不必等待获知主模块的“请求”信号已经撤销,而是隔一段时间后自动撤销“回答”信号,不存在互锁关系。
- 全互锁方式:主模块发出“请求”信号后,必须等从模块“回答”后,才撤销“请求”信号。从模块发出“回答”信号,必须待获知主模块“请求”信号已撤销后,再撤销其“回答”信号。双方存在互锁关系。
2.3 APB总线
2.3.1 APB总线简介
APB总线属于AMBA总线协议系列之一,它用在低带宽、低性能、低功耗的外围设备上,它属于非流水线结构,所有的信号仅在时钟上升沿时产生变化,这就规范了APB外围设备的设计流程,增加了可扩展性,每个传输至少需要两个时钟周期。另外,APB无需等待周期和回应信号,只有四个控制信号,控制逻辑简单。
APB经过了几个版本的演进越来越完善,每个版本的差异如下:
2.3.2 APB传输状态图
状态介绍:
- IDLE:APB总线上没有数据传输时的空闲状态,也是APB的default状态。
- SETUP:当一个transfer被请求后,APB总线就会切换到该状态。
- ACCESS:SETUP只会保持一个时钟,在下一个时钟上升沿会切换到该状态。
状态切换过程: - APB总线初始化为IDLE状态,这时没有传输操作,也没有选中slave模块。
- 当有transfer需要进行时,PSELx=1,PENABLE=0,APB总线进入SETUP状态,并在SETUP状态下停留一个时钟周期。当下一个PCLK时钟上升沿到来时,APB总线进入ACCESS状态。
- APB总线进入ACCESS状态时,维持之前在SETUP状态的PADDR、PSEL、PWRITE,然后将PENABLE置为1。传输也只会在ACCESS状态维持一个周期,在经过SETUP与ACCESS状态之后,传输也已经完成了。
- 之后如果没有新的transfer需要进行,就进入IDLE状态等待,如果有连续的传输,则进入SETUP状态。
2.3.3 APB信号
2.3.4 APB写传输
写传输包括两种类型:无等待状态和有等待状态。
1)无等待状态的写传输
地址、写入信号、写入数据和选择信号都在时钟上升沿时改变。在T1时刻,把要访问的地址、命令和数据全部放到APB总线上,开始一个写传输,在时钟的上升沿会写地址PADDR、写数据PWDATA、使能写信号PWRITE,然后使能选择PSEL信号,选择从设备。这个时钟周期对应的阶段叫做SETUP。
在T2时刻,在PCLK的上升沿,使能PENABLE以及PREADY信号,从设备发现自己的PSEL信号为高,就知道主设备选择它来处理数据的写操作,此时从设备内部准备号处理数据的准备动作。PENABLE的使能代表着ACCESS传输阶段的开始。在下一个PCLK的上升沿,PREADY信号的改变表明从设备完成了这笔传输。
在T3传输结束时刻到来前,PADDR、写数据PWDATA和控制信号保持有效,直到T3时刻PCLK的上升沿到来才会结束ACCESS阶段,从设备完成总线上数据采样并进行内部数据处理。在传输结束的时候,如果没有其他的相同的外设传输发起,PENABLE和PSEL信号会被清除。
2)有等待状态的写传输
如上时序图,展示了从设备怎么使用PREADY信号扩展传输。在ACCESS阶段,当PENABLE被置位,从设备通过拉低PREADY来扩展传输。在PREADY保持低电平时,如下信号保持不变,比如:PADDR、PWRITE、PSEL、PENABLE、PWDATA、PSTRB、PPORT。当PENABLE被置低,PREADY状态不确定,这确保具有两个固定时钟周期访问的外设能保持PREADY高。建议地址和写信号在传输结束后,保持稳定不做快速变化,直到另外一个访问产生。这会减少不必要的功耗消耗。
2.3.5 APB读传输
读传输也包括两种类型:无等待状态和有等待传输。
1)无等待状态的读传输
如上时序图,展示了一个读传输。主设备在T1时刻把所要访问的地址,命令全部放到APB总线上,沿着组成APB的接口传播到从设备接口处。在T2时刻,从机发现自己的PSEL信号为高,就知道主机需要它内部的数据(PWRITE ==0),此时从机内部准备好返回数据,并把返回的数据放在数据总线上,在T3时刻,主机完成总线上数据采样得到需要的数据。
2)有等待状态的读传输
上时序图显示了信号是如何扩展传输的。如果在Access phase期间PREADY信号拉低,则传输被扩展。但下述信号不变:
- 地址:PADDR
- 写信号:PWRITE
- 选择信号:PSEL
- 使能信号:PENABLE.
图中显示了如何使用PREADY信号来添加两个周期,也可以添加数个周期。
2.3.6 APB错误响应
使用PSLVERR来表明APB传输的错误状态。在读或者写传输的时候都有可能产生错误状态。使用PSLVERR来指示APB传输错误。当PSEL、PENABLE以及PREADY 都为高时,PSLVERR才在最后一个周期进行判断。当任何一个PSEL、 PENABLE或者PREADY为低时,你可以将PSLVERR拉低,这是推荐,并不是强制要求。收到一个错误后,可能或不可能改变外围器件的状态。这是外设的特性,两者都是可以接受。当一个写传输收到一个错误,这并不是说外设的寄存器没有被主设备更新。当收到一个读传输的错误,这意味着返回的是无效的数据。没必要在读传输失败的时候,通过总线返回0。APB外围设备不要求必须支持PSLVERR引脚,当不使用该引脚时,应被置低。
1)写传输失败
上图显示了一个写传输失败的时序图。在PSEL、PENABLE以及PREADY 都为高时,PSLVERR在最后一个周期进行判断,上图显示PSLVERR返回了一个错误。
2)读传输失败
一个读传输可能是以总线返回错误结束,这表明当前这笔读传输返回的数据是无效的。上图显示了一个读传输失败的时序图。
-
ARM
+关注
关注
134文章
9084浏览量
367386 -
总线
+关注
关注
10文章
2878浏览量
88051 -
AMBA
+关注
关注
0文章
68浏览量
14981
发布评论请先 登录
相关推荐
评论