精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

隨機仲裁器的算法實現

CHANBAEK ? 來源:奇異白勺書 ? 作者:Kim71 ? 2023-09-19 09:35 ? 次閱讀

01仲裁機制

提出占用資源的模塊需要產生一個訪問請求request,所有的請求輸入仲裁器之后,仲裁器需要根據仲裁算法,返回一個grant來響應某一模塊的請求。

仲裁器只能讓一個模塊得到許可,因為資源(總線)同一時刻只能由一個模塊占用。

常見的仲裁機制有以下三種:

  • 固定優先級仲裁器Fixed Priority Arbiter
  • 輪詢仲裁器Round Robin Arbiter
  • 偽隨機仲裁器Pseudo Random Arbiter

固定優先級: 即事先確定好各個模塊的訪問優先級,當多個請求發起時,按照優先級從高到低來給出許可,某些情況下,部分請求的優先級必須高于其它請求(比如車控系統中的剎車請求),這時就要采用固定優先級的仲裁算法;

輪詢: 當某次請求被許可之后,則下一個優先級的請求會被置成最高,若下一次需要仲裁的請求中沒有最高優先級對應的請求,則維持優先級順序(按照基礎優先級順序執行本輪仲裁),直到最高優先級請求被響應。

例如:初始優先級從高到低1-2-3,現在來了一波請求序列123-13-23-123-13,那么每輪分別是哪個請求被許可?

答:每輪最高優先級 1-2-2-3-1,被響應許可的順序 1-1-2-3-1

*也有一種輪詢機制是優先級反轉的,一個請求被響應許可之后,它的優先級就降到最低。

偽隨機: 通過偽隨機算法隨機賦予請求優先級。

02算法實現

1、Fixed Arbiter

設 req_i [3:0], 由于是固定優先級,可以事先約定:低位優先級高,高位優先級低

(注意仲裁器的輸入端口已經確定好優先級,因此外部請求信號連接時應根據仲裁器規定的優先級順序按需求連接)

在這個前提下,仲裁的本質其實就是從低位到高位尋找第一個“1”

那么有沒有什么邏輯操作可以快速定位一個序列中從低到高的第一個“1”呢?

顯然,減1操作就符合這個需求。在二進制的減1操作中,低位如果是0,就會向前借位,結果是1,直到借位的那一位是1,結果才得0,因此只需要根據結果從低到高的第一個0在哪一位就能確定哪一位該被許可響應。

假設這次請求req_i = 4'b1010,即第二和第四個設備發起了請求,那么req_i-1 = 4’b1001,可以從低到高的第一個0位于第二位,也就是req_i[1]對應的請求可以被響應。

那么如何將這個算法用簡單的邏輯實現呢,用序列檢測的方法去遍歷req_i-1的結果顯然過于復雜且耗時,會大大拖累性能。最好能用一個簡單的組合邏輯就把這個0所在的位找出來。

可以觀察到,對req_i-1的結果按位取反后,得到~(req_i-1)= 4‘b0110,與req_i只有一位相同,且那一位就是被響應許可的位。于是gnt [3:0]的邏輯就呼之欲出了:

gnt_o = req_i & ~(req_i-1);

其實也很好理解,減1操作,相當于對參與運算的低兩位10進行了取反,對于被減數來說,前兩位10其實并沒有變化,直接落到結果對應的位上,所以對結果進行取反得到0110,再和被減數本身按位與,得到的結果是0010,直接篩選出了被借位的那個“1”

2、Round Robin Arbiter

有了固定優先級仲裁器的珠玉在前,輪詢仲裁器的算法自然就躍然紙上。既然核心思想就是通過減1操作來找出需要被響應的請求,那么已經響應過的請求直接讓它不參與減1計算即可。被減數是外部輸入的req_i,是不能動的,但是減數是可以操作的,假如req_i[0]的請求剛被響應過,那么只需要讓減數的1左移一位得到0010,就相當于讓最低位不參與計算,那么按照輪詢規則,下一個被響應的請求就是req_i[1]

圖片

但凡事皆有例外,固定優先級的減1操作可以保證一定能檢索到優先級最高的那個請求(只要req_i不是全0),但是輪詢算法因為減數的移位會把低位排除計算,可能出現沒被排除計算的請求位沒有1,而被排除的請求位有1的情況,如下圖所示,此時根據我們的算法得到的結果是0000,低兩位的設備發起了請求,但是仲裁器卻沒有輸出,出現了功能錯誤。

圖片

這是由于我們沒有將被排除計算的低位請求加入循環移位的仲裁機制中,如果高位均沒有發起請求,仲裁器還是需要按照約定的優先級順序給低位的請求發起響應。

根據這個思路,自然就能想到:當高位沒有發起請求,而低位有請求時,按照固定優先級順序算法再計算一次。但是問題又來了,引入新的邏輯來判斷gnt_o的輸出以及再進行一次仲裁又會拖慢響應速度,最好有個一步到位的算法,能同時解決兩種情況下的輪詢仲裁。

回歸到優先級算法的本質,上圖中 gnt_o輸出全0的原因是向上借位溢出,向上借位的本質又是高幾位進行減1操作,那么讓req_i變成我們需要借位的那個“高幾位”不就行了嗎?

圖片

如圖,將req_i和gnt_o進行double拓寬,這樣就能兼顧高位有無請求兩種情況了。最后一步,就是將double過的gnt_o再變回原來的位寬。根據算法,double_gnt_o要么高四位有效,要么低四位有效,而且是獨熱的(One-hot),因此只需要將前四位與后四位進行按位或操作就可以得到正確的gnt_o

assign double_reqs = {2{reqs_i}};
assign double_gnts = ~(double_reqs - priority_flag) & double_reqs;
assign gnts_o = double_gnts[2*REQ_NUM:REQ_NUM] | double_gnts[REQ_NUM-1:0];

3、Pseudo random Arbiter

隨機仲裁器其實就很好實現了,每次有請求到來時,讓減數中獨熱的那一位出現在隨機的位置上,就實現了優先級的隨機生成。本文不再贅述。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 算法
    +關注

    關注

    23

    文章

    4599

    瀏覽量

    92643
  • 信號
    +關注

    關注

    11

    文章

    2780

    瀏覽量

    76629
  • 仲裁器
    +關注

    關注

    0

    文章

    12

    瀏覽量

    6629
收藏 人收藏

    評論

    相關推薦

    如何在Virtex-II Pro上實現仲裁

    (同步RAM)。地址為12位,數據為8位。我想在Virtex-II pro上實現仲裁,兩個PowerPcs同時獨立運行。我計劃在兩臺電源上同時運行2個不同的程序,并使ppcs想要訪問共享內存。我假設兩個
    發表于 05-28 12:37

    如何在VHDL中實現簡單優先級仲裁

    本文著眼于仲裁的用例和優點,以及在VHDL中實現簡單優先級仲裁仲裁是任何現代計算機系統的重
    發表于 12-23 06:38

    深入探討一下AHBzongxia仲裁仲裁

    1、AHB仲裁仲裁隨著AMBA總線-AHB系列的逐步推進,現在在AHB總線中,基本能用來讓主從機傳輸數據的要素都已經補齊了,所以最后一個功能部分,我們將深入的探討一下,如果多個主機同時需要獲得
    發表于 06-09 17:30

    如何配置sequence的仲裁算法和優先級及中斷sequence的執行

    出來當前transaction產生自哪個sequence,以及是循環的第幾次。仿真結果如下,可以看得出來在沒有配置仲裁算法的情況下,即使我們為sequence都分配了權重值,sequencer對三個
    發表于 09-23 14:35

    PCI總線仲裁的設計及實現

    本文簡要介紹了PCI 總線的仲裁機制, 完成了PCI 總線仲裁核心的設計、實現。通過ModelSim 進行了軟件仿真,最后在XILINX 公司的FPGA 上加以了驗證。
    發表于 09-03 08:18 ?27次下載

    SOC總線仲裁算法的研究

    集成到SOC 中的功能模塊越來越多,對于共享總線的SOC 系統,片上仲裁是使得各個模塊有效運作的必要手段。本文論述了SOC 仲裁的基本原理,首先從目前SOC 系統中常用的仲裁算法
    發表于 09-15 15:35 ?14次下載

    SOC總線仲裁算法的研究

    集成到SOC中的功能模塊越來越多,對于共享總線的SOC系統,片上仲裁是使得各個模塊有效運作的必要手段。本文論述了SOC仲裁的基本原理,首先從目前SOC系統中常用的仲裁算法入手
    發表于 07-17 17:07 ?37次下載

    OPB總線仲裁的RTL設計與FPGA實現

    本文詳細介紹了OPB總線仲裁的信號和仲裁機理。在QuartusII8.0平臺上,分別用固定優先級算法和LRU算法,用硬件描述語言(veri
    發表于 07-17 18:10 ?25次下載

    基于EPLD的PCI總線仲裁的設計與實現

    摘 要: 以自行研制開發的PCI高速總線背板為背景,系統地論述了PCI總線的仲裁機制、總線的缺省占用、仲裁信號協定及優先級仲裁算法,給出了采用EPLD
    發表于 06-20 13:32 ?1122次閱讀
    基于EPLD的PCI總線<b class='flag-5'>仲裁</b><b class='flag-5'>器</b>的設計與<b class='flag-5'>實現</b>

    隨機塊模型學習算法

    主要挑戰.提出一種精細隨機塊模型及其快速學習算法,該學習方法基于提出的模型與最小消息長度推導出一個新成本函數,利用期望最大化參數估計方法,實現了邊評價模型邊估計參數的并行學習策略。以此方式顯著降低
    發表于 01-09 18:20 ?1次下載

    基于分組機制的位仲裁查詢樹防碰撞算法

    提出了一種基于分組機制的位仲裁查詢樹(G BAQT, bit arb itration query tree bas ed on gro uping mechanis m)算法。該算法根據標簽lD
    發表于 02-26 11:22 ?0次下載

    如何進行SOC總線仲裁算法的研究資料說明

    集成到SOC 中的功能模塊越來越多,對于共享總線的SOC 系統,片上仲裁是使得各個模塊有效運作的必要手段。本文論述了SOC 仲裁的基本原理,首先從目前SOC 系統中常用的仲裁算法入手,
    發表于 06-26 14:32 ?5次下載
    如何進行SOC總線<b class='flag-5'>仲裁</b><b class='flag-5'>算法</b>的研究資料說明

    如何實現RFID系統上行鏈路的多標簽沖突檢測算法

    提出一種應用于RFID 系統上行鏈路的多標簽沖突檢測算法, 并給出了參考實現電路。依算法, 對電子標簽進行隨機分群, 在群間做隨機避讓, 在
    發表于 01-15 17:04 ?3次下載
    如何<b class='flag-5'>實現</b>RFID系統上行鏈路的多標簽沖突檢測<b class='flag-5'>算法</b>

    基于SaaS的替代性糾紛在線仲裁系統

    互聯網仲裁近年來成為數字經濟領域法律糾紛的一種重要解決機制,實現了“線上爭議、線上解決”。然而,現有互聯網仲裁系統并不能滿足高要求的正當程序及充分保障當事人合法權利,符合仲裁法律程序的
    發表于 06-15 14:51 ?9次下載

    基于Python實現隨機森林算法

    機器學習算法是數據挖掘、數據能力分析和數學建模必不可少的一部分,而隨機森林算法和決策樹算法是其中較為常用的兩種算法,本文將會對
    的頭像 發表于 09-21 11:17 ?1165次閱讀
    基于Python<b class='flag-5'>實現</b><b class='flag-5'>隨機</b>森林<b class='flag-5'>算法</b>