仲裁器设计(一) -- Fixed Priority Arbiter里面提到了,固定优先级仲裁的一个问题就是公平性。以上篇文章里同学举手老师点名的例子来说,如果老师每次都叫学号小的,那学号大的同学会觉得不公平,因为被老师点到的机会小。单纯回答问题的话可能还好,如果我们假设每回答一个问题积一分,最后成绩按照回答问题的个数来计算的话,那么很显然这种方式对学号大的同学太不公平了。所以,仲裁器的公平性问题是在设计中我们必须要考虑的。
仲裁器Arbiter是数字设计中非常常见的模块,应用也非常广泛。定义就是当有两个或两个以上的模块需要占用同一个资源的时候,我们需要由仲裁器arbiter来决定哪一个模块来占有这个资源。类比一下,老师上课问了一个问题,底下同学不止一个人举手了,老师这个时候就要扮演仲裁者的角色,来指定由哪位同学站起来回答问题。一般来说,提出占有资源的模块要产生一个请求(request),类比于学生要举手表示自己要回答问题。所有的请求送给仲裁器之后,仲裁器要返回一个许可(grant),也就是老师要选择一名同学,通过点这个同学的名字的方式,告诉这个同学可以站起来回答问题。