chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

FPGA開發(fā)中分治法的應(yīng)用

FPGA開發(fā)之路 ? 來(lái)源:FPGA開發(fā)之路 ? 2023-08-16 09:55 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

分治法是經(jīng)典優(yōu)化算法之一。分治分治,即分而治之。分治,就是把一個(gè)復(fù)雜的問(wèn)題分成兩個(gè)或更多的相同或相似的子問(wèn)題,再把子問(wèn)題分成更小的子問(wèn)題……直到最后子問(wèn)題可以簡(jiǎn)單的直接求解,原問(wèn)題的解即子問(wèn)題的解的合并。

分治法的思想我們也可以用在FPGA開發(fā)中,使得設(shè)計(jì)更加高效。

本文以 leading zero count 為例來(lái)看一下分治法的應(yīng)用。

這個(gè)題目是計(jì)算一個(gè) vector 的 leading zero 的數(shù)目。比如 8'b00001111,結(jié)果為4,而8'b00111111,結(jié)果為2。

Casex 優(yōu)先級(jí)選擇器

我們可以用最簡(jiǎn)單的 casex 優(yōu)先級(jí)選擇器來(lái)實(shí)現(xiàn)。假設(shè)輸入的vector位寬為64。

always_comb begin
    count = 0;
    casex (vector)
       64'b00000000_00000000_00000000_00000000_00000000_00000000_00000000_00000000 : count = 64;
       64'b1???????_????????_????????_????????_????????_????????_????????_???????? : count = 0;
       64'b01??????_????????_????????_????????_????????_????????_????????_???????? : count = 1;
       64'b001?????_????????_????????_????????_????????_????????_????????_???????? : count = 2;
       ...
       64'b00000000_00000000_00000000_00000000_00000000_00000000_00000000_00000001 : count = 63;
    encase
end

綜合結(jié)果如圖一所示。Vivado綜合完預(yù)估的slack為8.572ns,critical path是5級(jí),共消耗71個(gè)LUT。

ca78a5c8-3b7d-11ee-9e74-dac502259ad0.png

圖1 - leading zero count 1

分治法 - Tree Structure

現(xiàn)在我們使用分治法來(lái)實(shí)現(xiàn)這個(gè)功能。通過(guò)一個(gè) balanced tree structure 來(lái)實(shí)現(xiàn)。

首先將 64bit 的 vector 分成32個(gè) 2bit 的小 vector。先對(duì)2bit的小 vector 做encode:

case(small_vector)
    2'b00: encoded = 2'b10;  // 2 leading zeros
    2'b01: encoded = 2'b01;  // 1 leading zero
    2'b10: encoded = 2'b00;  // 0 leading zero
    2'b11: encoded = 2'b00;  // 0 leading zero
endcase

然后按照如下規(guī)則將相鄰的 encoded value 進(jìn)行組合:

如果兩邊都是 1xxx,那么結(jié)果為 10..0

如果左邊是 0xxx,那么結(jié)果為 0[左邊]

如果左邊是 1xxx,那么結(jié)果為 01[右邊[msb-1:0]]

可以看到每個(gè)組合的操作是一個(gè)mux。每次組合后,新的vector位寬加1,然后新的vector再兩兩組合,直到得出最終的結(jié)果。

我們以8bit輸入的vector為例:8'b00000111

按照2bit分解: 00 00 01 11

Encoded value: 10 10 01 00

兩兩組合: 100 001

再組合: 0101 = 5 leading zeros

當(dāng)輸入為64bit的vector時(shí),此 tree structure 的設(shè)計(jì)綜合結(jié)果如圖2所示。Vivado綜合后預(yù)估的slack為8.600ns,critical path為4級(jí),消耗38個(gè)LUT。

ca9e57aa-3b7d-11ee-9e74-dac502259ad0.jpg

圖2 - leading zero count 2

可以看到相比于casex的設(shè)計(jì),tree structure節(jié)省了超過(guò)50%的LUT,同時(shí)邏輯級(jí)數(shù)也減少了一級(jí)。

總結(jié)

分治法的思想也可以應(yīng)用在FPGA開發(fā)中。尤其是當(dāng)我們遇到大位寬數(shù)據(jù)的處理時(shí),分治法往往可以提升設(shè)計(jì)的資源使用率和時(shí)序結(jié)果。

審核編輯:湯梓紅
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • FPGA
    +關(guān)注

    關(guān)注

    1645

    文章

    22036

    瀏覽量

    618126
  • 分治法
    +關(guān)注

    關(guān)注

    0

    文章

    3

    瀏覽量

    5800
  • FPGA開發(fā)
    +關(guān)注

    關(guān)注

    1

    文章

    44

    瀏覽量

    15404
  • Vivado
    +關(guān)注

    關(guān)注

    19

    文章

    834

    瀏覽量

    68715

原文標(biāo)題:分治法(Divide and Conquer)

文章出處:【微信號(hào):FPGA開發(fā)之路,微信公眾號(hào):FPGA開發(fā)之路】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    分治找出最大值和最小值的問(wèn)題

    我用分治寫了一個(gè)程序,找出一個(gè)數(shù)組中最大值和最小值,可是運(yùn)行時(shí)總是報(bào)錯(cuò)段錯(cuò)誤,我把源代碼貼出來(lái),還請(qǐng)高手賜教指點(diǎn)。#include"stdio.h"int s[10]={56
    發(fā)表于 03-21 11:00

    字符串與數(shù)組分治遞歸算法

    字符串與數(shù)組分治遞歸算法。
    發(fā)表于 09-05 22:49

    FPGA至簡(jiǎn)設(shè)計(jì)為什么這么簡(jiǎn)單

    由潘文明先生開創(chuàng)的IC/FPGA至簡(jiǎn)設(shè)計(jì),具備劃時(shí)代的意義。這種設(shè)計(jì)方法不僅將IC/FPGA學(xué)習(xí)難度降到了最低,同時(shí)將設(shè)計(jì)過(guò)程變得簡(jiǎn)單,并規(guī)范了代碼避免了混亂,將出錯(cuò)幾率降到最低。下面我們來(lái)看
    發(fā)表于 12-15 15:10

    python算法之使用分治求解凸包

    《python算法教程》Day11 - 分治求解平面凸包問(wèn)題
    發(fā)表于 11-01 09:14

    那里能找到關(guān)于在FPGA中實(shí)現(xiàn)DDC中分數(shù)倍重采樣的資料?

    請(qǐng)問(wèn),那里能找到關(guān)于在FPGA中實(shí)現(xiàn)DDC中分數(shù)倍重采樣的資料?不是指用CIC實(shí)現(xiàn),而是基于多相的結(jié)構(gòu)實(shí)現(xiàn)。
    發(fā)表于 07-30 16:50

    電子設(shè)計(jì)師設(shè)計(jì)思想篇--分治法利弊

      分治 (divide and conquer) 是解決復(fù)雜問(wèn)題的一種有效策略。本質(zhì)上,它是把看似難以克服的問(wèn)題分解成多個(gè)更小、更易于解決的部分。待這些部分被單獨(dú)解決之后,把結(jié)果
    發(fā)表于 09-09 09:48 ?3068次閱讀

    基于 FPGA XC3S1500開發(fā)板的太陽(yáng)能自動(dòng)跟蹤系統(tǒng)

      本設(shè)計(jì)采用傳統(tǒng)的視日運(yùn)動(dòng)跟蹤,利用Xilinx公司提供的FPGA開發(fā)環(huán)境ISE,設(shè)計(jì)完成了基于XC3S1500開發(fā)板的
    發(fā)表于 09-29 09:42 ?1362次閱讀
    基于 <b class='flag-5'>FPGA</b> XC3S1500<b class='flag-5'>開發(fā)</b>板的太陽(yáng)能自動(dòng)跟蹤系統(tǒng)

    Altera FPGA的選型及開發(fā)

    本資料是關(guān)于Altera FPGA的選型及開發(fā),內(nèi)容大綱是:Altera的 FPGA體系結(jié)構(gòu)簡(jiǎn)介;Altera的 FPGA選型策略;嵌入式邏輯分析工具SignalTAPII的使用;基于
    發(fā)表于 08-15 14:48 ?104次下載
    Altera <b class='flag-5'>FPGA</b>的選型及<b class='flag-5'>開發(fā)</b>

    聚類和劃分的SAT分治判定

    滿足性來(lái)判定原公式的可滿足性,相當(dāng)于用分治將復(fù)雜問(wèn)題分解為多個(gè)子問(wèn)題來(lái)求解.這種分治判定方法一方面降低了原公式的可滿足性判定復(fù)雜度;另一方面,由于子句組的判定可以并行,因而判定速度能夠得到進(jìn)一步的提高.對(duì)于不能直接產(chǎn)生布爾子句
    發(fā)表于 01-24 17:41 ?0次下載

    淺談FPGA設(shè)計(jì)中分頻電路設(shè)計(jì)

    通常情況下,時(shí)鐘的分頻在FPGA設(shè)計(jì)中占有重要的地位,在此就簡(jiǎn)單列出分頻電路設(shè)計(jì)的思考思路。
    發(fā)表于 07-10 17:18 ?2677次閱讀

    分治算法詳解:表達(dá)式的不同優(yōu)先級(jí)

    ? ? ?我們號(hào)已經(jīng)寫了 動(dòng)態(tài)規(guī)劃算法,回溯(DFS)算法,BFS 算法,貪心算法,雙指針?biāo)惴?,滑?dòng)窗口算法,現(xiàn)在就差個(gè)分治算法沒(méi)寫了,今天來(lái)寫一下,集齊七顆龍珠,就能召喚神龍了~ 其實(shí),我覺(jué)得回溯
    的頭像 發(fā)表于 01-04 14:04 ?2055次閱讀

    Intel FPGA開發(fā)流程指南

    開發(fā)FPGA設(shè)計(jì),最終的產(chǎn)品是要落在使用FPGA芯片完成某種功能。所以我們首先需要一個(gè)帶有Intel FPGA芯片的開發(fā)板。
    的頭像 發(fā)表于 07-14 09:42 ?3622次閱讀
    Intel <b class='flag-5'>FPGA</b><b class='flag-5'>開發(fā)</b>流程指南

    分治帶來(lái)的好處

    以 Leading Zero Count 為例解釋了分治帶來(lái)的好處,本篇文章再舉一個(gè)類似的例子。
    的頭像 發(fā)表于 09-06 10:05 ?731次閱讀

    fpga開發(fā)板是什么?fpga開發(fā)板有哪些?

    FPGA開發(fā)板是一種基于FPGA(現(xiàn)場(chǎng)可編程門陣列)技術(shù)的開發(fā)平臺(tái),它允許工程師通過(guò)編程來(lái)定義和配置FPGA芯片上的邏輯電路,以實(shí)現(xiàn)各種數(shù)字
    的頭像 發(fā)表于 03-14 18:20 ?3322次閱讀

    fpga開發(fā)是什么意思

    FPGA開發(fā)是指利用現(xiàn)場(chǎng)可編程邏輯門陣列(Field Programmable Gate Array,簡(jiǎn)稱FPGA)進(jìn)行硬件設(shè)計(jì)和實(shí)現(xiàn)的過(guò)程。FPGA是一種可編程的邏輯器件,它允許用戶
    的頭像 發(fā)表于 03-15 14:28 ?1923次閱讀