《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 其他 > FPGA教學——用硬件思維描述HLS設計

FPGA教學——用硬件思維描述HLS設計

2022-09-02
來源: LaurenGao FPGA技術驛站
關鍵詞: HLS

  ESL (Electronic System Level)設計理念最早可追溯至2001年,其核心思想是通過高層次語言如C/C++或圖形設計工具描述或搭建系統行為并對其進行仿真驗證。于是,就形成了兩個分支。分支一是從高層次語言角度出發,對應產生了如Xilinx Vitis HLS (High Level Synthesis)工具;分支二是從模塊化設計角度出發,對應產生了如Mathworks的HDL Coder、Xilinx的Vitis Model Composer等工具。這些工具在其適用的場合可有效加速設計開發的進度,縮短開發周期。

  那么如何充分發揮工具的性能得到高質量的結果呢?首先要理解其工作原理。這里我們以Vitis HLS為例加以說明。Vitis HLS要求采用C/C++描述算法和測試平臺,其基本流程如下圖所示。

  微信圖片_20220902150239.png

  整個流程都是圍繞C/C++模型展開的,這往往給初學者一個誤導:只要是C/C++代碼就可以通過Vitis HLS轉換為RTL代碼。實際上,從原始C/C++代碼到最終生成高質量的RTL代碼之間存在“鴻溝”:C/C++代碼是否可綜合(轉換為RTL代碼)?C/C++代碼是否可轉換成滿足實際工程需求(速度與面積)的RTL代碼?前者解決從無到有的問題,后者解決從有到優的問題。從語言特征的角度來看,C/C++與HDL (VHDL/Verilog)有著本質的區別。第一,C/C++是順序執行的,而HDL是并行執行的。因此,采用C/C++描述算法時,算法的執行順序可通過語言的描述順序直觀地體現出來。HDL(Hardware Description Language)描述的是硬件電路,一旦上電,所有電路單元并行工作,HDL的并行特性正體現了硬件電路的這一特征。第二,C/C++是靜態的,HDL是動態的。所謂靜態是指我們在使用C/C++描述算法時,只需關注算法本身,而使用HDL描述算法時,我們要關注的是如何將算法映射為硬件電路,關注每個時鐘周期電路應實現的行為。電路在時鐘的作用下工作,數據在時鐘的作用下流動。第三,C/C++是沒有時序性的,而時序是HDL的一個顯著特征。無時序可以使設計者將焦點放在算法的描述上,得益于此,設計者可以采用C/C++快速完成算法建模。HDL的時序特性要求設計者盡可能采用流水線的方式使數據在各個處理單元之間流動,同時設計者還要管理好每個處理單元完成操作所需要的時鐘周期個數,保證在期望的時鐘周期個數之后獲得目標結果。時序性還要求設計者在進行電路描述時要考慮到后期的時序收斂,因此設計過程中考慮關鍵路徑的邏輯級數、扇出等因素變得尤其重要,這也導致了傳統RTL代碼設計流程比較耗時。

  盡管C/C++和HDL存在巨大差異,但兩者并不是徹底地割裂開來,而是隱含著一些對應關系,這些對應關系對于我們描述HLS設計大有裨益。C/C++是順序執行的,HDL也存在順序執行的電路,那就是狀態機。因此,對于C/C++中的for循環,從狀態機的角度看,可分為空閑狀態->進入循環->執行循環體->判斷循環是否結束->退出循環這樣幾個狀態。HLS會將for循環映射為相應的狀態機。這幾個狀態中,執行循環體最為耗時,尤其是涉及到大量計算時,往往成為for循環Latency的瓶頸。用HDL描述狀態機時,我們要考慮狀態轉移條件、每個狀態持續的時鐘周期個數。就for循環而言,進入/退出for循環各需要一個時鐘周期,單次for循環所需的時鐘周期個數取決于循環體內的操作。整個循環所需的時鐘周期個數與循環次數緊密相關,這就要求我們使用for循環時盡可能保證循環邊界是固定常數。C/C++最常用的一種數據類型之一是數組,數組其實就是一段存儲數據的空間,既然可以存儲數據,那么這個空間是有記憶的。FPGA中的記憶元件包括寄存器和RAM。因此,數組最終都可以映射為這兩類原件。在HDL中描述RAM時,我們必須指定RAM的深度和寬度,從而使得工具可以在FPGA中分配固定的存儲單元。盡管C/C++支持動態可調的數組深度,但應用于HLS時,卻是不支持的。換言之,HLS要求C/C++中的數組必須為固定深度和固定寬度,這和HDL的要求是一致的。

  除了這些對應關系,Vitis HLS還對原本的C/C++進行了改進,以更友好地匹配硬件需求。C/C++中的各種運算如加/減/乘/除/邏輯運算/關系運算等,設計者在使用這些運算時為了獲得更大的動態范圍以防止溢出或精度損失,往往采用浮點類型或較為寬泛的int類型。這些運算轉換為RTL代碼時,都會消耗相應的邏輯資源,包括查找表、觸發器、DSP等。顯然,較大的數據位寬也會消耗更多的資源。為此,Vitis HLS引入了任意精度類型包括整型和定點類型,數據位寬從1到1024,從而打破了原始C/C++以8為邊界的位寬的限制。更為重要的是,該數據類型可以完全匹配原始C/C++所支持的算術操作符。

  有了這些知識儲備,我們就不難理解Vitis HLS的工作原理了。本質上,Vitis HLS在將C/C++轉換為RTL代碼時分為三大過程:進度安排(Scheduling)、綁定(Binding)和狀態提取。進度安排實際上解決的是什么時候做什么事,進一步而言就是每個時鐘周期需要執行的操作。綁定解決的是完成這些事需要什么資源,進一步而言就是這些確定操作需要消耗的硬件資源。狀態提前則是從C/C++代碼中提取出狀態機,控制子函數/子操作的執行順序。

  從宏觀來看,對于算法較為復雜(分支條件繁多、存在反饋路徑或判斷條件復雜)的情形,采用HLS實現是一個很好的選擇。一個總體原則是盡可能將反饋路徑封裝在一個函數之內,確保從頂層函數看到的數據流是單向的,如下圖所示,這有利于工具使用DATAFLOW(一種pragma)提高設計的吞吐率。

  微信圖片_20220902150302.png

  從微觀來看,除了考慮數據位寬這一因素之外,還要考慮數組的訪問方式。數組往往映射為RAM,而一個RAM最多提供兩個輸出端口,這意味著一個時鐘周期最多讀出兩個數據。因此,對于數組的訪問,我們盡可能做到減少訪問次數提高讀取數據的復用率。我們看下面這個案例。函數opt_mem_v1實現的是相鄰三個數相加,這三個數來自于同一個數組。每次循環要從指定數組中讀取3個數據。映射為RAM時,一個時鐘周期內從同一個RAM中讀出3個數據是難以實現的。從Schedule視圖上也能看到RAM端口的局限性。為此,我們做如下改動,如函數opt_mem_v2所示,先從數組中讀出0號地址和1號地址上的數據并將其賦給指定變量,這樣每次循環只用從原始數組中讀出一個新的數據而其他兩個數據可以繼承之前的輸出結果,從而有效減少了數組的訪問次數。

  微信圖片_20220902150322.png

微信圖片_20220902150339.png

微信截圖_20220902150354.png

  對于for循環,盡可能合并同邊界for循環,涉及到if條件的,盡可能將if放在for循環之內。我們看一個案例,如下圖所示,在不同邊界條件下將讀取數據賦值給不同的目標數組。這4個for循環是按順序執行的,共消耗203個時鐘周期(66+50+42+38)。從Schedule視圖也能看到4個for循環的執行順序。

 微信截圖_20220902150418.png

  實際上,這4個for循環完全可以合并,如下圖所示,這樣Latency將從203直接降低到66。

  微信圖片_20220902150430.png

  使用HLS對C/C++的要求并不高:不需要設計者掌握C++的高級用法,比如類,但卻要求設計者具備基本的硬件知識,明白兩者的對應關系,理解HLS的工作原理,這樣才能寫出適配HLS的高效C/C++代碼,再應用合適的pragma,就可以獲得高質量的C綜合結果。


 更多信息可以來這里獲取==>>電子技術應用-AET<<

微信圖片_20210517164139.jpg

本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
热re99久久精品国产66热_欧美小视频在线观看_日韩成人激情影院_庆余年2免费日韩剧观看大牛_91久久久久久国产精品_国产原创欧美精品_美女999久久久精品视频_欧美大成色www永久网站婷_国产色婷婷国产综合在线理论片a_国产精品电影在线观看_日韩精品视频在线观看网址_97在线观看免费_性欧美亚洲xxxx乳在线观看_久久精品美女视频网站_777国产偷窥盗摄精品视频_在线日韩第一页
  • <strike id="ygamy"></strike>
  • 
    
      • <del id="ygamy"></del>
        <tfoot id="ygamy"></tfoot>
          <strike id="ygamy"></strike>
          国产精品黄页免费高清在线观看| 欧美大片在线看免费观看| 一区二区三区导航| 久久久97精品| 亚洲欧洲av一区二区| 蜜臀91精品一区二区三区| 亚洲国产精品综合| 国产乱人伦精品一区二区| 国内精品久久久久国产盗摄免费观看完整版| 国产精品日韩欧美一区| 欧美日产国产成人免费图片| 一区二区三区精品视频在线观看| 欧美日韩调教| 亚洲成人原创| 久久精品一区| 国产精品日韩在线观看| 亚洲国产精品激情在线观看| 一区二区三区在线不卡| 亚洲国产精品成人综合色在线婷婷| 欧美日韩国产在线观看| 国产亚洲精品自拍| 久久福利电影| 久久婷婷国产综合尤物精品| 在线欧美三区| 午夜精品久久久久久久| 国模套图日韩精品一区二区| 在线日韩中文| 亚洲精品日韩欧美| 亚洲国产精品久久久久秋霞影院| 欧美一区激情视频在线观看| 久久亚洲欧美国产精品乐播| 亚洲一区激情| 亚洲欧美综合网| 国产精品亚洲美女av网站| 国产精品久久午夜夜伦鲁鲁| 美日韩免费视频| 久久精品中文字幕免费mv| 久久激情五月婷婷| 久久精品国产久精国产一老狼| 麻豆精品视频| 欧美怡红院视频一区二区三区| 国产精品影片在线观看| 欧美国产三区| 日韩视频亚洲视频| 9久草视频在线视频精品| 亚洲精品日韩在线| 欧美日韩精品国产| 国产精品永久免费| 国产精品综合网站| 亚洲国产1区| 免费看的黄色欧美网站| 欧美91精品| 一区二区三区视频在线看| 欧美高清视频一二三区| 欧美日韩高清免费| 国产手机视频一区二区| 国产精品自在欧美一区| 欧美日韩三级在线| 欧美aⅴ一区二区三区视频| 国内精品久久久久久久果冻传媒| 国产精品一区二区三区乱码| 一区二区三区四区蜜桃| 黄色成人免费观看| 国产亚洲欧美日韩一区二区| 激情欧美亚洲| 国产精品区一区二区三| 国产精品一二一区| 亚洲欧美日本日韩| 亚洲在线免费观看| 快she精品国产999| 久久人人97超碰国产公开结果| 一区二区三区日韩欧美精品| 久久在线免费视频| 国产精品综合网站| 欧美日韩极品在线观看一区| 夜夜嗨av一区二区三区网站四季av| 国产精品欧美久久久久无广告| 欧美a级一区二区| 国产精品久久久久999| 久久九九免费视频| 国产精品久久97| 日韩视频在线一区二区| 欧美日韩国产a| 久久天天躁狠狠躁夜夜av| 一区二区三区视频在线播放| 亚洲精选中文字幕| 狠狠色噜噜狠狠色综合久| 欧美三级日韩三级国产三级| 亚洲国产中文字幕在线观看| 欧美韩日高清| 亚洲美女在线看| 一区二区三区视频观看| 亚洲欧洲一二三| 欧美xxx成人| 国产无一区二区| 亚洲看片免费| 亚洲国产日韩欧美一区二区三区| 午夜在线一区二区| 国产区欧美区日韩区| 亚洲男人av电影| 欧美日韩伦理在线免费| 在线一区二区三区四区五区| 女人香蕉久久**毛片精品| 国产精品亚洲成人| 国产九九精品| 欧美www在线| 亚洲一区免费网站| 国产精品久久午夜夜伦鲁鲁| 欧美成人免费一级人片100| 亚洲一区二区免费看| 日韩一级在线观看| 一区二区三区在线不卡| 精品va天堂亚洲国产| 欧美日韩在线高清| 亚洲欧美一区二区在线观看| 国产精品扒开腿爽爽爽视频| 欧美一级片久久久久久久| 亚洲在线一区| 国产精品永久免费视频| 久久亚洲综合网| 久久丁香综合五月国产三级网站| 欧美午夜精品久久久久免费视| 在线观看日韩精品| 一区视频在线播放| 影音国产精品| 国产亚洲高清视频| 麻豆乱码国产一区二区三区| 久久青草久久| 美女黄网久久| 亚洲精品日日夜夜| 欧美日韩国产区一| 欧美影院成年免费版| 久久久美女艺术照精彩视频福利播放| 欧美久久久久久久久久| 久久免费偷拍视频| 一本色道久久综合亚洲精品不卡| 亚洲欧美国产制服动漫| 美脚丝袜一区二区三区在线观看| 国产午夜一区二区三区| 美女国产一区| 毛片基地黄久久久久久天堂| 国产精品久久久久久久久久ktv| 亚洲国产另类精品专区| 在线观看中文字幕亚洲| 国产一区二区三区免费在线观看| 亚洲欧美日本视频在线观看| 久久女同互慰一区二区三区| 免费美女久久99| 亚洲精品国产无天堂网2021| 国产麻豆日韩| 亚洲日本中文| 欧美福利视频| 免费高清在线视频一区·| 免费成年人欧美视频| 激情综合色综合久久| 午夜精品久久久久久久99水蜜桃| 欧美怡红院视频一区二区三区| 久久激情视频| 欧美在线视频观看免费网站| 国产精品白丝jk黑袜喷水| 欧美精品久久99| 国产精品免费福利| 亚洲综合色丁香婷婷六月图片| 亚洲欧美日韩国产精品| 久久久精品一品道一区| 欧美日韩免费一区二区三区视频| 亚洲综合欧美日韩| 尤物九九久久国产精品的分类| 国产欧美日韩视频在线观看| 国产精品a久久久久久| 国产精品亚洲综合久久| 一区二区国产在线观看| 国产精品伦子伦免费视频| 久久gogo国模裸体人体| 红桃视频欧美| 久久久久一区二区三区| 欧美在线免费视频| 精品成人国产在线观看男人呻吟| 先锋a资源在线看亚洲| 国产精品伦一区| 亚洲丰满在线| 国产欧美日韩精品一区| 免费精品视频| 欧美一区二区视频在线观看2020| 亚洲欧美精品在线观看| 欧美影院久久久| 欧美在线视频播放| 日韩亚洲欧美成人一区| 久久久免费精品| 91久久精品国产91久久性色| 国产日韩视频一区二区三区| 久久精品72免费观看| 亚洲一区二区三区免费视频| 亚洲视频在线观看网站| 欧美日韩高清不卡| 欧美91视频| 国产一区二区视频在线观看| 国产精一区二区三区| 亚洲精品美女在线| 最新高清无码专区| 国内一区二区三区在线视频| 欧美日韩不卡一区| 亚洲私人影院在线观看| 欧美精品一区二区三区在线看午夜| 亚洲视频在线观看一区| 欧美在线观看www| 午夜在线视频一区二区区别| 欧美人与性动交cc0o| 欧美制服第一页| 欧美一区在线直播| 欧美xart系列高清| 欧美日韩国产三区| 国内精品美女av在线播放| 亚洲精品乱码久久久久久日本蜜臀| 亚洲精品网址在线观看| 久久夜色撩人精品| 亚洲福利av| 亚洲精品国产欧美| 亚洲精华国产欧美| 99视频国产精品免费观看| 欧美在线免费观看视频| 久久午夜羞羞影院免费观看| 一色屋精品亚洲香蕉网站| 亚洲自拍高清| 欧美日韩成人在线播放| 国产精品欧美一区二区三区奶水| 久久精品久久99精品久久| 欧美精品久久久久久久久老牛影院| 久久精品99国产精品酒店日本| 亚洲国产片色| 韩国一区二区三区在线观看| 伊人久久亚洲热| 最新中文字幕一区二区三区| 国产一区二区高清| 欧美jizz19hd性欧美| 在线精品国产欧美| 一区二区三区四区国产精品| 欧美日产在线观看| 韩国亚洲精品| 国产精品卡一卡二| 99精品国产在热久久| 欧美乱人伦中文字幕在线| 欧美一区二区视频网站| 国产一区自拍视频| 久久精品国产久精国产爱| 欧美凹凸一区二区三区视频| 欧美一区二区精品在线| 国产精品高精视频免费| 久久资源在线| 亚洲一区3d动漫同人无遮挡| 国产欧美在线观看| 久久久99免费视频| 嫩草伊人久久精品少妇av杨幂| 国产一区二区成人| 国产精品自在在线| 日韩一区二区电影网| 91久久线看在观草草青青| 国产乱码精品一区二区三区五月婷| 欧美视频一区二区| 欧美xart系列在线观看| 久久aⅴ国产欧美74aaa| 国内外成人免费视频| 欧美精品一区二区三区高清aⅴ| 美女啪啪无遮挡免费久久网站| 午夜日韩在线观看| 亚洲欧美日韩高清| 亚洲综合视频网| 国产一区二区三区不卡在线观看| 亚洲国产va精品久久久不卡综合| 亚洲韩国日本中文字幕| 欧美88av| 欧美激情精品久久久久久变态| 日韩视频一区| 欧美在线短视频| 欧美日韩国产精品一卡| 国产在线欧美日韩| 国产精品欧美日韩| 国产偷自视频区视频一区二区| 欧美在线观看一区二区| 欧美日韩国产美女| 国产日韩亚洲欧美| 国产精品资源在线观看| 精品69视频一区二区三区| 999在线观看精品免费不卡网站| 欧美巨乳波霸| 欧美一区二区三区啪啪| 国产久一道中文一区| 亚洲女同同性videoxma| 亚洲性线免费观看视频成熟| 亚洲精品欧美日韩专区| 欧美日韩一区三区四区| 亚洲深夜福利| 国产一区二区三区高清播放| 亚洲欧美日韩国产一区二区| 黄网站免费久久| 久久久美女艺术照精彩视频福利播放| 欧美四级电影网站| 日韩午夜激情| 久久久久这里只有精品| 国产在线拍偷自揄拍精品| 久久精品欧美日韩精品| 久久午夜电影网| 亚洲精品一区二区三区99| 亚洲成色www8888| 亚洲福利视频在线| 在线观看精品一区| 黄色精品在线看| 毛片精品免费在线观看| 韩日欧美一区二区三区| 久久激情五月激情| 久久男人资源视频| 亚洲精一区二区三区| 欧美丰满高潮xxxx喷水动漫| 欧美一区二区精品| 久久av一区二区三区亚洲| 久久精品免费电影| 欧美日韩高清区| 亚洲第一黄色| 欧美在线观看网站| 一区二区三区在线观看国产| 怡红院精品视频在线观看极品| 蜜臀av国产精品久久久久| 国产在线日韩| 欧美第一黄色网| 国产一区二区日韩精品欧美精品| 国产精品国码视频| 香蕉久久夜色精品国产使用方法| 91久久嫩草影院一区二区|