《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 其他 > 入門:基于硬件描述語言HDL的FPGA開發

入門:基于硬件描述語言HDL的FPGA開發

2022-09-28
來源:CSDN
關鍵詞: HDL 嵌入式處理器 FPGA

  FPGA是一個很特殊的芯片,可能在2個月前,我還對它一無所知。我們熟知的芯片都是CPU,GPU,或者知道ASIC的概念。但實際上,FPGA已經走過了30個年頭,它目前已經成為一個包含各種先進電路,邏輯單元,接口,芯片封裝,制造等技術的“集大成者”。在硬件不斷發展的同時,FPGA的開發軟件和設計工具也在不斷迭代和更新?;谟布枋稣Z言HDL,抽象出HLS(High-Level Synthesis)(翻譯為高層次綜合?怎么聽起來都沉得別扭)技術,通過高層設計去隱藏很多底層邏輯和細節,讓FPGA的開發更加簡單。即使這樣,FPGA開發還是同CPU,GPU不一樣,它需要設計者在一定程度上了解FPGA的內部架構,這樣才能引導高層語言綜合工具睡時到優化的系統性能。

  一:開發FPGA的痛點

  首先,FPGA的體量非常大,大得驚人,英特爾最新的StraTIx10 GX 10M 有 433億只晶體管,1020萬個可編程邏輯單元,以及2304個可編程的I/O接口。這些數量龐大的晶體管組成了大量的可編程邏輯單元和查找表結構,大量運算單元,各種類型和大小的內存資源,高速串行I/O,多個嵌入式處理器,還有成百上午種不同功能的軟核和硬核IP。因為可編程,可以通過定制實現極高吞吐量和極低的功耗。

  當這么多硬件資源都集成到了一個芯片上,用戶如何對這些硬件進行編程呢?

  通常來說,我們要解決一個復雜問題,常用的辦法就是分解任務,我們需要劃分清楚哪些是在硬件上完成,哪些通過軟件完成。在FPGA,這種分解非常困難和復雜。例如:哪部分用編程邏輯(硬件),哪部分使用片上的芯片。如何合理分配片上內存,內不足時,如何優化……

  如何降低FPGA的開發難度,EDA軟件一定要好用,所以,不管英特爾還是賽靈思,包括我了解的一個新創團隊,都會在EDA軟件團隊上做大力投入,甚至做EDA軟件開發的人員要多于FPGA本身的工程師數量。另外,業界也出現了大量的第三方公司,負責FPGA設計咨詢公司,IP提供商,外包公司等……,業務已經發展產生了很多特定的分工。

  當前,FPGA還在進入更多的市場,比如:嵌入式應用,5G和汽車市場,這些領域中的大多數開發團隊都沒有FPGA相關的設計專業知識和經驗。而且,他們更多是純軟件開發,更多依賴于人工智能技術。這些也使得FPGA的開發難度被放大。

  二:HLS——讓軟件工程師開發FPGA

  HLS指的是通過EDA工具,將描述的邏輯結構轉換成低抽象級語言描述的電路模型的過程。

  這里,我不得不再強調一下HLS的概念,因為記不住,搞不太懂。

  High-Level Synthesis 簡稱:HLS 指的是將高層次語言描述的邏輯結構,自動轉換成低抽象級語言描述的電路模型的過程。有點象我們軟件領域講的 Java 語法在運行時,根據不同的機器翻譯成不同的機器字節碼。所謂高層次語言,通常指的是 C,C++,SystemC等,通常有點較高的抽象度,并且往往不具有時鐘或時序的概念,相比之下,諸如Verilog,VHDL,SystemVerilog等低層次語言,通常用來描述時鐘周期精準的寄存器傳輸級電路模型,這也就是當前ASIC或者FPGA設計最為普遍使用的電路建模和描述方法。

  為什么要使用HLS?

  1: 這是一個趨勢。因為集成電路的復雜度太高,已經逐漸超過人類可以手工管理的范疇。使用RTL代碼,代碼行過多,不現實。而使用C,C++ 等高層語言,可以將代碼縮至10%。

  根據NEC2004年發布的研究,一個擁有100萬邏輯門的芯片設計通常要編寫30萬行RTL代碼。

  2: 高層語言更善于復用,特別是對于IP的重用。

  因為傳統的RTL的IP 往往需要定義固定的架構和接口標準,在IP重用時,需要大量的時間運行系統互聯和接口驗證。高層語言屏蔽了這些要求,轉而由HLS工具具體來負責完成?,F代FPGA有大量的IP單元,這些IP有固定功能,一定需要大量復用。

  3: HLS能幫到軟件和算法工程師參與主導芯片設計,這是因為HLS能夠屏蔽實現細節。對于硬件工程師,HLS也能幫助他們快速設計迭代,專注于性能,面積或功耗模塊,不用關注上層的算法實現。

  我們在談HLS前,先看看RTL的發展:

  通過描述寄存器到寄存器之間的邏輯功能描述電路的HDL層次。RTL級是比門級更高的抽象層次,使用RTL級語言描述硬件電路一般比門級描述簡單高效得多。這個時期,工程師們都在關注RTL。

  HLS經過發展,產生了以C++ 為主的目標語言,從而被很多不少不了解RTL的工程師所接受。而且,HLS在性能上也近似RTL的水平。

  到現在,英特爾,賽靈思,包括多倫多大學都推出了各自的HLS工具。

  其中比較成功的工具是AutoPilot,

  47.JPG

  前端,它使用了LLVM的編譯器架構,能夠使用C,C++,OSCI SystemC等語言,使用llvm-gcc編譯器將高層語言模型轉換為IR,優化后,再根據具體的硬件平臺,生成RTL代碼。

  AutoPilot在某些領域完勝人工優化RTL的結果。說明了HLS的潛力。

  HLS的主流優化方法有以下幾種:

  1: 字長分析和優化。

  FPGA的一個最主要特點可以使用任意字長,所以 HLS工具也不需要拘泥于某種固定的長度。好處呢,對性能提升和面積縮減有幫助。

  2: 循環優化

  46.JPG

  可以使用多面體模型來達成循環優化,可以幫助實現性能和面積優化,同時也能幫助提升內存的使用效率。

  3: 對并行的支持。

  RTL是可以直接實例化成多個運算單元并行執行的,C/C++ 一開始是順序執行,但后面也引入的并行支持。如:pthreads和OpenMP等多線程并行編程方法,以及OpenCL等針對GPU異桅系統進行并行編程的擴展。

  作為HLS工具,一定要支持并行。比如:lgeup就整合了對pthead,OpenMP的支持。英特爾推出了OpenCL SDK,將其引和HLS,并生成FPGA硬件電路邏輯和CPU代碼兩部分,從而實現FPGA作為硬件加速模塊的快速開發。

  盡管如此,HLS要完全替代人工的RTL建模,還有很長的路要走。對于FPGA而言,內存瓶頸是制約性能的關鍵要素,所以,如何有效利用片上和片外的各類存儲單元,是HLS的研究熱點。

  P4 語言是實現SDN 的重要手段,所以,新型的FPGA開發工具,需要對P4進行編譯和支持。

  三:商業級的開發工具

  3.1  賽靈思ViTIs 開源開發工具

  ViTIs花費了 1000人。年的開發工作量。

  ViTIs的核心架構示意圖如下:

 

45.JPG

  3.2 英特爾oneAPI

  OneAPI 可以針對英特爾的所有芯片進行編程。

  英特爾將旗下的芯片分成了SVMS四類:

  標量架構(Scalar):CPU

  矢量架構(Vector):GPU

  短陣架構(Matrix):AI芯片

  空間架構(Special):  FPGA.

  四:業界看法

  業界普遍認為,GPU之所以在人工智能獲得成功,很大程度上取決于對軟件和算法工程師的友好。而FPGA雖然在不斷擴展應用范圍,在性能和功耗上也不比GPU差,但是,它的編程仍然是以RTL開發為主,這對開發者并不算友好。

  所以,FPGA在HLS上的發展和突破,可能是FPGA能否有更廣泛應用的最后一塊拼圖。



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

mmexport1621241704608.jpg

本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:[email protected]。
主站蜘蛛池模板: 亚洲一区二区精品推荐 | 国产亚洲精品成人婷婷久久小说 | 亚洲99久久久久综合 | 俄罗斯一级成人毛片 | 亚洲黄a| 国产一区亚洲二区 | 91极品尤物| 久久青草热 | 蜜桃日本一道无卡不码高清 | 亚洲精品视频免费观看 | 中文 日本 免费 高清 | 欧美成人精品高清在线播放 | 最新日韩欧美不卡一二三区 | 欧美日韩ay在线观看 | 欧美日韩在线国产 | 成人无遮挡毛片免费看 | 久操免费在线视频 | 亚洲一级高清在线中文字幕 | 国产精品视频一区二区猎奇 | 最新精品国产 | 经典国产乱子伦精品视频 | 欧美精品亚洲精品日韩一区 | 亚洲二区在线 | 日韩区在线观看 | 亚洲精品区在线播放一区二区 | 亚洲性影院 | 欧美一级特黄一片免费 | 午夜视频在线观看一区二区 | 欧美激情亚洲 | 久久久小视频 | 真人一级一级特黄高清毛片 | a毛片免费在线观看 | 欧美一区二区三区国产精品 | 中文字幕欧美亚洲 | 久久在线播放 | 黑人边吃奶边扎下面激情视频 | 精品欧美一区视频在线观看 | 99久久伊人一区二区yy5o99 | 国产看片视频 | 五月色婷婷综合开心网4438 | 特级无码a级毛片特黄 |