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

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

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

3天內不再提示

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

8ECz_icstudy ? 來源:未知 ? 作者:胡薇 ? 2018-10-29 10:03 ? 次閱讀

1

首先問大家一個問題,如果有一堆有序的數據

1,2,3,4,5,6,7,8,9,10,11,...100

如果想要找出55,你要怎么實現呢?

最直觀的是用線性查找,從頭開始一個個的查找,需要55次才能找到目標數值。

如果大家學過C或者C++,應該有二分法查找的概念,先把這堆數分成2堆,把第一堆的最后一個數跟55比較,發現55比它大,所以55應該在第2堆。再重復這個過程,大概需要7次就可以確定55的位置。

二分法查找效率顯而易見,它的時間復雜度T(n)=O(log(2)n),遠遠小于線性查找的T(n)=O(n)。

但二分法要求數據必須是有序排列的,這在實際電路世界里面往往是滿足的。

利用二進制搜索(二分法查找)實現的逐次逼近算法,每次都是選取比較范圍內的中間點來跟參考值進行比較,通過比較結果來繼續縮小比較范圍,一直迭代直至找到最接近比較值的解。

這個過程跟求方程(近似)解也非常類似。二進制搜索實現的逐次逼近常常用于需要校準的場景中,比如SAR ADCDRAM ZQ 校準、儀器校準算法等。因為我們的校準代碼對應的值是線性增加或者減小的,符合二進制搜索法的條件。

2

下圖是一個SAR ADC的基本架構:

電路的目標就是得到一個最接近Vin的VDAC,可以通過調整

SAR code配置DAC模塊得到。

假設我們的SAR(逐次逼近寄存器)的位數是3位,初始狀態設為SAR[2:0]=3'b100,也就是處于000-111的中間位置。

如果SAR的使能clock 開始toggle,比較過程就開始了:

如上圖所示,X軸表示時間,Y軸表示DAC輸出電壓VDAC:

第1次比較: 設置SAR[2:0]=3'b100,VDAC=1/2 Vref < Vin , 所以SAR[2]保持1,SAR[2:0]=3'b100;

第2次比較: 設置SAR[2:0]=3'b110,VDAC=(1/2 Vref + 1/4 Vref)> Vin , 所以SAR[1]最終取0,SAR[2:0]=3'b100;

第3次比較: 設置SAR[2:0]=3'b101,VDAC=(1/2 Vref + 1/8 Vref)> Vin , 所以SAR[0]最終取0,SAR[2:0]=3'b100;

最終我們可以得到與輸入電壓Vin最接近的VDAC,可以看出SAR的位數越多,精度越高,但是比較周期數也會越來越多。

另外其第3次(最后一位)比較好像也沒有必要,因為你比較完也無法得到一個相等值,可以把最后一位固定成1或者0,最大的誤差就是最后一位代表的權重1/8 Vref。

2

前面是具體的SAR ADC的例子,我們可以進一步把二進制搜索SAR的過程畫成流程圖的形式,方便后續電路或者Verilog代碼的實現:

初始化SAR的MSB=1, 其它bit為0 (比如4bit 4'b1000)

每次CLK go high ,走一步

如果INCR=1, 走圖中實線箭頭方向;

如果INCR=0, 走圖中虛線箭頭方向;

最低位LSB最終固定為1

4bit的SAR 一共需要走3步,也就是3個CLK周期后就可以得到最后的結果。

3

最后給出一個6位二進制搜索SAR logic電路的SPEC:

Input

INCR

RSTB reset信號,負沿有效

CLK

OUTPUT

PUCODE [5:0]

你覺得這個電路是用Verilog代碼實現呢?

還是自己搭電路比較好?

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

    關注

    172

    文章

    5849

    瀏覽量

    171911
  • 二進制
    +關注

    關注

    2

    文章

    794

    瀏覽量

    41600

原文標題:二進制搜索算法(二分法查找)在實際電路中的應用

文章出處:【微信號:icstudy,微信公眾號:跟IC君一起學習集成電路】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

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

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

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

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

    簡單的查找算法

    ; } return 0;} 3. 有序數組表的查找:一般使用二分法查找。通過判斷查找元素與中間元素(mid)的大小來決定下一次的查找
    發表于 12-27 22:33

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

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

    淺析漸近表示二分法

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

    C語言教程之二分查找

    C語言教程之二分查找,很好的C語言資料,快來學習吧。
    發表于 04-22 11:06 ?0次下載

    基于C語言二分查找排序源代碼

    本文檔內容介紹了C語言歸并、選擇、直接插入、希爾、冒泡、快速、堆排序與順序、二分查找排序源代碼,分享給大家供大家參考。
    發表于 01-04 11:24 ?1次下載

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

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

    圖像處理算法之二分查找

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

    如何利用verilog驗證二分法查找的設計代碼

    下面是產生輸出文件的過程,這里我們設置輸出結果的格式是fsdb,當然我們也可以設置成vcd的格式。fsdb的文件size比較小,而且利用verdi的波形工具nWave看起來也比較方便。實際項目
    的頭像 發表于 11-26 14:39 ?5676次閱讀

    詳解C語言二分查找算法細節

    我相信對很多讀者朋友來說,編寫二分查找的算法代碼屬于玄學編程,雖然看起來很簡單,就是會出錯,要么會漏個等號,要么少加個 1。
    的頭像 發表于 06-22 09:05 ?2786次閱讀
    詳解C語言<b class='flag-5'>二分</b><b class='flag-5'>查找</b>算法細節

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

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

    筑基_C_5_對數組的二分查找

    C語言泛型編程,實現對數組某元素的二分查找
    發表于 12-06 10:21 ?9次下載
    筑基_C_5_對數組的<b class='flag-5'>二分</b><b class='flag-5'>查找</b>

    如何理解二分查找算法

    本文就來探究幾個最常用的二分查找場景:尋找一個數、尋找左側邊界、尋找右側邊界。 而且,我們就是要深入細節,比如不等號是否應該帶等號,mid 是否應該加一等等。分析這些細節的差異以及出現這些差異的原因,保證你能靈活準確地寫出正確的
    的頭像 發表于 04-19 11:10 ?597次閱讀
    如何理解<b class='flag-5'>二分</b><b class='flag-5'>查找</b>算法

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

    二分查找算法是軟件中廣泛應用的一種算法,那么FPGA的設計是否可以用這種算法呢?什么場景下會可能用到這種算法呢?
    的頭像 發表于 09-06 18:26 ?982次閱讀
    FPGA設計中<b class='flag-5'>二分法</b>查表算法的實現