linux amba机制,AMBA仲裁器仲裁机制

AHB中没有规定仲裁器的仲裁算法,它可以根据不同的应用场合,采取不同的仲裁机制。比如采用固定优先级的仲裁(Fixed

priority),循环式优先级仲裁(Round

Robin),或是随机性的仲裁(Random)和竞争仲裁优先级(Tournament)等。

这里我们的设计采取的是循环优先级的总线仲裁机制。各个master无优先级高低的区别,它们会轮流得到总线的访问权,从而可以避免处在低优先级的master也许会被无限期锁存的缺点。这种仲裁的原理示意图如图3-3所示。

希望获得总线权的maste:向仲裁器发出总线仲裁请求信号,经仲裁器根据仲裁逻辑仲裁后,发出总线应答信号HGRANT。Master会在时钟的上升沿采样HGRANT信号,当采样到HGRANT有效,并且HERADY同时为高电平时,表示该master获得了总线的访问权并且可以开始传输。

如果获得总线访问权的master不希望在传输的过程中被打断,而想要进行连续的不可中断的传输,那么master在发出总线请求信号(HBUSREQ)的同时可以发出总线锁存信号HLOCK,即将HLOCK置为高电平。当master获得总线访问权后仲裁器会发出相应的响应信号HMASTLOCK,这样arbite:就不会把总线释放给其它的master,直到master自行将HLOCK置为低电平取消锁存信号,仲裁器才会在进行总线仲裁的动作,使其它的master可以进行总线操作。这里我们假定固定长度的突发优先级的传输都是不可中断的。

仲裁器还可以仲裁希望能完成SPLIT传输的总线slave。当仲裁器观察到master收到SPLIT响应,则会将master的优先权给屏蔽起来,当master的总线访问权被屏蔽后,该master将无法再获得总线访问的权利,即使是没有其它master访问总线时也一样。同时,slave需要记录master的信号,以便以后要通知仲裁器恢复那个master的优先级。这可以从仲裁器发出的HMASTER[3:0]信号查得。若所有的master都收到SPLIT的响应信号,则仲裁器会把总线访问移交给dummy

master(一种只会发出IDLE传输的master).当回应SPLIT的slave处理完传输的要求后,会发出HSPLIT[15:0]的信号给master o

仲裁器会在时钟的每一个上升沿采样HSPLIT[15:0],当它收到HSPLIT[15:0]后,会将原来被屏蔽掉的master的总线优先权解封,这样master的优先权就会回复原来的状态而有机会去重新获得总线访问权。

当slave发出RETRY的响应信号时,仲裁器内master的优先权不会发生改变。但是当有更高优先级的master的发出总线请求信号时,总线的访问权会由高优先级的master取得,但是如果原来得到RETRY响应的master是当时总线请求的master中优先级别最高的,则总线还是继续会被占住,而无法释放给其它有需要的master。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值