总线仲裁(一)

Copyright (C) 2010 Alex Hsu
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <
http://www.gnu.org/licenses/>.
竞态变成经常需要使用信号量来控制对资源的争夺,linux下的c编程使用P、V函数来控制信号量的获取和释放。
SOC架构经常会遇到多Master争夺总线资源,主要采取三种方法来解决资源的争夺。
  • 固定优先级
  • 轮询
  • 第一次抢占高优先级的获得后,第二次抢占为低优先级获得
下面的总线仲裁实现采用的类似第三种方式,通过类似软件编程的P、V信号量的方式来解决资源抢占问题。

但是该方法使用了太多的组合逻辑,有可能导致一个时钟周期完成不了这么多的工作,所以这想法只是一个思考方式,
该实现不一定是其好的实现方式。
实现方式:根据Master的数量,有这么多数量的数组,高位的数组优先级越高,每个数组里面,根据Master的数量,
有这么多数量的元素,高位的元素优先级高;根据Master的原有优先级,元素按照该优先级进行排列;
根据我们后期设定的优先级情况,每个Master只能存在于一组数组的元素中,每次增加权限,就往高优先级的数组移位,
每次减少权限,就往低优先级的数组移位;最后在有元素的数组中,取最高位的数组中的最高位。
该方式主要有四个步骤: 根据上次操作结果,如果上次是该Master获得资源,则该Master的所有权减一,即向下移位 如果上次该Master未获得资源,则该Master的所有权加一,即向上移位(shift阶段) 根据这次该Master是否有获得总线资源的请求,屏蔽不需要获得总线资源的Master(Request Enable阶段) 重新排列组合后,筛选出最高优先级的Master,即在有元素的数组中,取最高位的数组中的最高位(allow enable阶段) 重新排列组合后,不使能选中的Master,使能选中的Master(or阶段)

Advertisements
This entry was posted in Computers and Internet. Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s