1. 概述
在 SoC 或 FPGA 设计中,常常会出现 多个 Master 同时访问同一个 Slave 或总线资源 的情况。
如果没有控制机制,就会出现 资源冲突。因此系统需要一种机制来决定 谁可以获得总线使用权,这就是 仲裁(Arbitration)。
本文简单整理几种常见的仲裁方式。
2. 常见形式
2.1 固定优先级
固定优先级仲裁是最简单的一种方式。系统为每个请求方分配一个固定优先级,当多个请求同时出现时,优先级最高的获得总线访问权。
优点
-
硬件实现简单
-
延迟低
-
面积小
缺点
如果高优先级 Master 长时间请求,总线可能一直被占用,低优先级设备可能 长期得不到访问机会(Starvation)。
2.2 轮询仲裁(Round Robin)
轮询仲裁是一种 公平性更好的仲裁方式。
其基本思想是,每个 Master 按顺序获得优先级,仲裁器会在每次仲裁后 移动优先级指针。
优点
-
公平性好
-
不会出现饿死问题
缺点
-
硬件复杂度略高
-
仲裁逻辑比固定优先级复杂
2.3 随机仲裁(Random Arbitration)
当多个请求同时到来时,仲裁器 随机选择一个请求方。一般较少使用。
通常通过 LFSR(线性反馈移位寄存器) 产生伪随机数。
优点
-
实现简单
-
从统计角度较为公平
缺点
-
仲裁结果不可预测
-
短时间内可能出现不公平
2.4 时间片仲裁(Time Slice / TDM)
时间片仲裁采用 时间复用(TDM,Time Division Multiplexing) 的方式。
系统将时间划分为固定周期,每个 Master 在自己的时间片内访问总线。
优点
-
完全公平
-
延迟可预测
缺点
如果某个 Master 没有请求,总线时间片可能被浪费。
4.5 加权轮询(Weighted Round Robin)
加权轮询是在 Round Robin 基础上的改进,允许不同 Master 拥有不同带宽。
优点
可以控制带宽分配
支持 QoS(Quality of Service)
4.6 Token 仲裁(Token Passing)
Token 仲裁通过在各个 Master 之间传递一个 Token(令牌) 来控制访问权限。
只有持有 Token 的 Master 才可以访问总线。
优点
-
完全公平
-
不会发生冲突
缺点
-
Token 传递可能增加延迟
-
系统结构较复杂
3.总结
在实际 SoC 设计中,不同仲裁方式适用于不同场景。
| 仲裁方式 | 实现复杂度 | 公平性 | 典型应用 |
|---|---|---|---|
| 固定优先级 | 低 | 较差 | 简单总线 |
| 轮询 | 中 | 好 | AXI / Crossbar |
| 随机 | 低 | 一般 | 网络系统 |
| 时间片 | 低 | 很好 | 实时系统 |
| 加权轮询 | 高 | 好 | NoC / DDR |
| Token | 中 | 很好 | 分布式系统 |

1170

被折叠的 条评论
为什么被折叠?



