衡阳派盒市场营销有限公司

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

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

3天內不再提示

FPGA設計中二分法查表算法的實現

CHANBAEK ? 來源:FPGA的現今未 ? 作者:FPGA的現今未 ? 2023-09-06 18:26 ? 次閱讀

二分化查找算法是在軟件中廣泛應用的一種算法,那么在FPGA的設計中是否可以用這種算法呢?什么場景下會可能用到這種算法呢?

二分法簡介

這里先簡單的說明下二分法查找,不涉及具體的算法原理。要實現二分法查表,有一個前提,那就是這個表是一個有序表。

假定表的深度為N(從0到N-1),那么首先從N/2地址讀出內容比較,如果待比較的值x比從表中讀出的值M小,說明x只可能位于0——(N/2-1)之間,然后采用同樣的方式從0——(N/2-1)中繼續查找;如果待比較的值x比從表中讀出的值M大,說明x只可能位于(N/2+1)——N-1之間,然后采用同樣的方式從(N/2+1)——N-1中繼續查找。

應用場景

在FPGA設計中,什么場景可以用到二分法查找呢?只有一個條件,那就是表項是一個有序表。要得到一個有序表,有幾種情況:

1、表項由邏輯實現寫操作,那么在寫入的過程中,先要把表項中的內容讀出來,和即將要寫入的內容做排序后,再寫回。這種方案相對來說還是比較復雜的,尤其是在高性能的場景下。

2、表項由CPU實現寫操作,如果表項不需要動態更新,那這就是一件很容易的事情了,如果表項需要CPU來更新,那么也需要將表項讀出來后進行排序然后再寫入FPGA。

網絡通信中,有如下一種場景,就是收到的報文依據源IP地址進行過濾(不是真正意義上的防火墻),只允許特定的IP地址通過,IP地址的個數最多為1024個,由軟件來維護。當然可以采用hash算法,實現稍微復雜點,也可以采用最原始的辦法,就是把每個IP地址讀出來比較,這種方案性能不穩定,最差的情況有可能需要1024個cycle才能出結果。如果用二分法查找,最多只需要10次就可以出結果。

實現方案

知道了原理,其實該算法的方案實現是比較簡單的,就是通過跳表項的讀地址來實現比較,如下圖所示:

圖片

對min_addr和max_addr初始化后,計算出raddr,然后從raddr中讀出數據比較比較后,根據比較的結果來刷新min_addr或者max_addr,然后重新計算raddr的值,直到匹配中,或者min_addr=max_addr。

總結

在FPGA中需要查找的表項,如果能實現有序排列,采用二分法查找是一個不錯的選擇。相比其他算法,它在性能上保持一定優勢的前提下,實現也比較簡單。

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

    關注

    1630

    文章

    21798

    瀏覽量

    606067
  • FPGA設計
    +關注

    關注

    9

    文章

    428

    瀏覽量

    26632
  • 算法
    +關注

    關注

    23

    文章

    4630

    瀏覽量

    93365
收藏 人收藏

    評論

    相關推薦

    如何用C語言實現高效查找(二分法

    今天給分享一下使用C語言實現二分算法,主要包含以下幾部分內容:二分查找算法介紹二分查找
    的頭像 發表于 06-04 08:04 ?1260次閱讀
    如何用C語言<b class='flag-5'>實現</b>高效查找(<b class='flag-5'>二分法</b>)

    Java常用排序算法&程序員必須掌握的8大排序算法+二分法查找

    Java常用排序算法&程序員必須掌握的8大排序算法+二分法查找
    發表于 10-19 19:33

    Labview實現二分法查找數值區間

    二分法是檢索里經常用到的一種方法,可以實現對有序數組進行檢索,本程序通過二分法實現對數據進行區間匹配,并輸出最小匹配區間和匹配區間的索引值,尤其適合多段函數的數值計算。
    發表于 04-18 13:22

    淺析漸近表示二分法

    算法圖解》NOTE 1 算法的漸近表示以及二分法
    發表于 10-10 10:58

    高信噪比條件下(大于40dB)獲得極值的算法

    對于實時測控系統,尋找單一通道的極值可以歸結為一維極小化問題的搜索,常見的算法二分法、牛頓、黃金分割法、Brent 等[1]。這些算法
    發表于 04-15 09:11 ?21次下載

    適合于單片機實現的極值搜索算法

    在測控系統中,極值通常是表征信號特性最有意義的參量之一。對于實時測控系統,尋找單一通道的極值可以歸結為一維極小化問題的搜索,常見的算法二分法、牛頓、黃金
    發表于 05-18 13:20 ?33次下載

    CRC(查表)-表的由來

    利用查表實現CRC算法,CRC算法廣泛應用與各行業,查表
    發表于 01-06 11:29 ?15次下載

    java實現計算方法中的算法綜合

    利用java實現了計算方法中的各種算法,包括:雅可比迭代、高斯-賽德爾迭代、拉格朗日差值、列主元高斯消去、不含列主元高斯約當、高斯-約當消去、牛頓插值、牛頓迭代、次多項式擬合、一次
    發表于 04-25 10:54 ?0次下載

    基于二分法與移動Sink的無線傳感器網絡數據收集協議

    傳感器節點能量的有限性,嚴重制約了無線傳感器網絡的推廣與發展。因此,如何改善傳感器節點能源的利用率、節約能耗以及提高整個網絡的生存周期成為該領域研究者面臨的挑戰之一。 為延長網絡生存周期,提出一種基于二分法與移動Sink的無線傳感器網絡數據收集協
    發表于 03-12 10:43 ?0次下載
    基于<b class='flag-5'>二分法</b>與移動Sink的無線傳感器網絡數據收集協議

    圖像處理算法二分查找

    二分查找又稱折半查找,優點是比較次數少,查找速度快,平均性能好;其缺點是要求待查表為有序表,且插入刪除困難。
    的頭像 發表于 03-17 11:29 ?4909次閱讀

    二分法查找在實際電路中的應用

    進制搜索實現的逐次逼近常常用于需要校準的場景中,比如SAR ADC、DRAM ZQ 校準、儀器校準算法等。
    的頭像 發表于 10-29 10:03 ?6386次閱讀
    <b class='flag-5'>二分法</b>查找在實際電路中的應用

    現代混合云服務對未來托管數據中心的意義

    與以前的版本不同,新的混合云框架更易于部署,并且消除了“云計算vs托管數據中心”的二分法
    的頭像 發表于 08-21 11:00 ?1876次閱讀

    二分搜索算法運用的框架套路

    我們前文 我作了首詩,保你閉著眼睛也能寫對二分查找 詳細介紹了二分搜索的細節問題,探討了「搜索一個元素」,「搜索左側邊界」,「搜索右側邊界」這三個情況,教你如何寫出正確無 bug 的二分搜索
    的頭像 發表于 08-25 16:06 ?1868次閱讀

    Python實現所有算法-基本牛頓

    Python實現所有算法-二分法 Python實現所有算法-力系統是否靜態平衡 Python實現
    的頭像 發表于 07-13 10:40 ?1684次閱讀

    如何理解二分查找算法

    本文就來探究幾個最常用的二分查找場景:尋找一個數、尋找左側邊界、尋找右側邊界。 而且,我們就是要深入細節,比如不等號是否應該帶等號,mid 是否應該加一等等。分析這些細節的差異以及出現這些差異的原因,保證你能靈活準確地寫出正確的二分查找
    的頭像 發表于 04-19 11:10 ?666次閱讀
    如何理解<b class='flag-5'>二分</b>查找<b class='flag-5'>算法</b>
    电子百家乐官网破| 百家乐德州桌| 菲律宾百家乐游戏| 百家乐技巧辅助软件| 威尼斯人娱乐城好玩吗| 皇家棋牌| 澳门赌场老板| 百家乐官网投注怎么样| 澳门百家乐官网玩大小| 网络百家乐官网电脑| 总玩百家乐有赢的吗| 龙虎斗游戏| 百家乐官网庄闲和收益| 大发888娱乐厂场| 百家乐官网百乐发破解版| 皇冠网百家乐官网啊| 百家乐免佣台| 奇博| 百家乐官网赌博出千| 乐天堂百家乐官网娱乐场| 百家乐2号说名书| 清原| 网上百家乐官网返水| 百家乐庄闲客户端| 大发888掉线| 线上真人游戏| 百家乐官网浴盆博彩通排名| 豪华百家乐桌子厂家| 开鲁县| 海港城百家乐官网的玩法技巧和规则| 百家乐筹码14克粘土| 免费百家乐官网在线| 自贡百家乐赌场娱乐网规则| 百家乐官网视频看不到| 百家乐电话投注怎么玩| 巴里| 百家乐太阳城娱乐城| 百家乐官网二代皇冠博彩| 百家乐最好投注| 555棋牌游戏| 百家乐网站排行|