在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

電子發燒友App

硬聲App

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

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

3天內不再提示
電子發燒友網>電子資料下載>電子資料>硬件即代碼第四部分:嵌入式RAM

硬件即代碼第四部分:嵌入式RAM

2023-06-14 | zip | 0.00 MB | 次下載 | 免費

資料介紹

描述

正如我在本系列中已經多次提到的那樣,消除中央內存瓶頸是構建定制硬件與 CPU 方法相比的性能優勢之一。這并不意味著 FPGA 設計從不包含內存;它們通常與外部存儲器一起使用。但是,本期的主題是另一種對性能至關重要的內存:嵌入式內存。讓我們從一些示例代碼開始,然后更多地討論嵌入式存儲器。

如果您是本系列的新手,您可能想回到硬件即代碼第 I 部分。

軟件更新

在我們進入它之前的最后一件事; 在構建以下示例之前,您需要將 Upduino HLS 工具鏈更新到最新版本。要進行更新,只需輸入以下pio命令(如果您使用的是 Visual Studio Code,請單擊左側的 PlatformIO 圖標 (ant) 打開命令提示符,然后選擇 Miscellaneous 下的 Platform Core CLI):

> pio platform update upduino_hls

這應該安裝最新版本(撰寫本文時為 0.2.1)。

簡單的感知器

上次,我說過第三部分的例子涉及與神經網絡相同類型的計算。下面的示例實現了一個單層神經網絡,稱為感知器,如您所見,代碼非常相似。

pYYBAGNYf_uAGvDlAAC7z5JbqX0708.png
?

與往常一樣,此代碼也可從 git 存儲庫 ( https://github.com/sathibault/hac-examples ) 獲得。

這個例子就像 poly-classify第三部分的例子一樣進行分類。然而,這次我們從流行的鳶尾花數據集中對花朵進行分類。每朵花都有四個數據值:萼片長度、萼片寬度、花瓣長度和花瓣寬度。在這種情況下,我們對花類型(setosa 或不)進行分類。

運行示例時,您應該得到以下輸出:

Ex 0: -822
Ex 1: -837
Ex 2: 94
Ex 3: 777

這顯示了四個示例花的感知器輸出。輸出值小于 0 被預測為 setosa 類型,大于 0 則不是 setosa。四個示例的實際花型是 1) setosa、2) setosa、3) versicolour 和 4) virginica。因此,這與上面的感知器預測完全一致。

陣列和嵌入式存儲器

上次的例子和這里的函數的主要區別在于dotproduct數組的使用。Upduino HLS 工具支持我們在這里使用的數組,但您可能想知道in_array,4>第 5 行的類型和第as_array27 行的函數。有時,為 CPU 編寫的完全正常的 C/C++ 根本無法提供足夠的信息來生成等效的硬件。數組就是這種情況。數組通常作為一個簡單的指針在 C/C++ 程序中傳遞,指向數組所在的中央內存中的某個空間。

在硬件綜合的情況下,陣列實際上被映射到嵌入在硬件中的單獨的專用存儲器。是的,你沒看錯!FPGA 包含許多稱為嵌入式存儲器或塊 RAM 的小型存儲器塊。每個數組變量都有專用的內存塊來保存該變量的數據。

為了為數組變量生成內存,我們需要知道它的大小,這就是in_array,4>類型的重點。此類型表示參數為輸入數組,元素類型為int16_t,數組中的最大數據量為 4。這使得硬件生成器能夠分配正確數量的內存塊來接收features參數的數據。

在第 27 行,該as_array函數用于構造正確的類型以匹配in_array參數,還用于指示數組中實際有多少數據(與我們從參數類型中知道的最大值相反)。由于此調用在 CPU 上執行,而函數在 FPGA 上執行,因此數據必須從 CPU 發送到 FPGA。因此,我們需要確切地知道要發送多少數據。

這是我們必須遵循某些設計模式才能針對硬件生成的示例之一。不幸的是,確切的機制可能因工具鏈而異。好消息是這樣的情況并不多,而且主體始終相同,即使語法不同。對于數組,原則是我們需要提供一些關于數組的大小信息,我們使用我們正在使用的框架提供的某些類型或函數來做到這一點。

多類感知器

iris 數據集實際上包含三種不同類型的花:setosa、versicolour 和 virginica。percetron 模型可以擴展到多個類,只需每個類使用一個感知器。輸出最高的是預測類。下面是一個多類感知器預測鳶尾花類型的實現。

以下示例實現了用于識別三種不同鳶尾花類型的多類感知器。

pYYBAGNYf_6AIzTEAAENwA1SiDc787.png
?

輸出應如下所示:

>.\program
Ex 0 = 0 (3694, -3018, -5298)
Ex 1 = 0 (2474, -1038, -6052)
Ex 2 = 1 (-944, 1292, 204)
Ex 3 = 2 (-2392, 138, 5364)

如您所見,每行的最大值與該示例的預期類匹配。

這個例子介紹了另一種數組參數類型out_array(第 5 行)和相應的resize 方法(第 12 行)。此類型的用途與 相同in_array,但表示輸出數組參數。因此,它再次向編譯器指示要為該數組保留多少空間,即它將擁有的最大元素數。

除了最大數組大小,由于out數據需要從 FPGA 返回到 CPU,系統必須知道數組中實際有多少數據。resize方法用于指示實際使用了多少元素并需要將其發送回調用者。這些示例都沒有使用輸入和輸出數組,但也可以以inout_array 相同的方式使用模板類型。

您可能想知道的另一件事是為什么不是coef二維數組?那只是因為 Upduino HLS 工具鏈只支持一維數組。大多數 HLS 工具鏈都支持多維數組,但我不覺得這個限制特別煩人。指數計算簡單;它只是行索引 * 行長度 + 列索引。必須將其寫出來有助于您了解所需的算術資源,并且大多數情況下,如果您考慮一下,它可以更有效地完成(提示:使用索引變量,只需 2 次加法,沒有乘法)。

表現

關于這些例子,我想說明兩個要點。首先是嵌入式內存如何打破內存瓶頸。由于每個數組都有自己的內存,它們是完全獨立的,可以同時并行訪問!此外,許多 FPGA 的嵌入式存儲器有兩個端口,這意味著您實際上可以在每個陣列的每個周期訪問兩個值。這是很多并行性。那么有什么問題呢?再次,我們受到空間的限制。

每個芯片只有固定數量的內存塊。內存塊由它們可以存儲的位數來描述。UPduino 板上的 FPGA 有 30 個塊 RAM,每個 RAM 有 4096 位存儲。要計算數組的塊數,只需將元素數乘以每個元素的位數,然后四舍五入到最接近的塊 RAM 大小的倍數。

在 UPduino 上,總比特數為 30 x 4096 = 120Kb = 15KB。這確實是有限的,但這個 FPGA 是可用的最小的之一。大型 FPGA 可以有許多 Mb 的塊 RAM。旁注:大多數硬件文檔將以位為單位給出內存編號,用小寫 b (例如 Kb)編寫,而不是通常用大寫 B (例如 KB)編寫的字節。

第二點是循環幫助我們在空間和速度之間進行權衡。在上一部分中,一切都是并行的,并占用了多個加法器和乘法器。在這一部分中,我們使用了循環,這將花費更多的執行時間,但只使用一個乘法器和一個加法器。這不是全部,不是全部或全部。一個中間選項是部分展開循環以平衡速度與空間的權衡。

這是對你的挑戰。上面的多類感知器示例需要按順序執行的 3 x 4 次迭代(可以并行執行迭代,但這是一個高級主題,稍后才會介紹)。您如何重寫此示例以利用嵌入式存儲器的并行性并并行計算 3 個輸出?

下一步

到目前為止,我們只在相當高的水平上討論了空間。下一次,我將更深入地介紹 FPGA 內部的內容、如何測量空間、有多少可用空間以及如何準確了解特定功能正在使用多少。

繼續第 V 部分:FPGA 內部

連接

在我發布新的分期付款時,請關注我以保持最新狀態。還有一個 Discord 服務器(公共聊天平臺),用于您在https://discord.gg/3sA7FHayGH上可能有的任何評論、問題或討論


下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1山景DSP芯片AP8248A2數據手冊
  2. 1.06 MB  |  532次下載  |  免費
  3. 2RK3399完整板原理圖(支持平板,盒子VR)
  4. 3.28 MB  |  339次下載  |  免費
  5. 3TC358743XBG評估板參考手冊
  6. 1.36 MB  |  330次下載  |  免費
  7. 4DFM軟件使用教程
  8. 0.84 MB  |  295次下載  |  免費
  9. 5元宇宙深度解析—未來的未來-風口還是泡沫
  10. 6.40 MB  |  227次下載  |  免費
  11. 6迪文DGUS開發指南
  12. 31.67 MB  |  194次下載  |  免費
  13. 7元宇宙底層硬件系列報告
  14. 13.42 MB  |  182次下載  |  免費
  15. 8FP5207XR-G1中文應用手冊
  16. 1.09 MB  |  178次下載  |  免費

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費
  3. 2555集成電路應用800例(新編版)
  4. 0.00 MB  |  33566次下載  |  免費
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費
  7. 4開關電源設計實例指南
  8. 未知  |  21549次下載  |  免費
  9. 5電氣工程師手冊免費下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費
  11. 6數字電路基礎pdf(下載)
  12. 未知  |  13750次下載  |  免費
  13. 7電子制作實例集錦 下載
  14. 未知  |  8113次下載  |  免費
  15. 8《LED驅動電路設計》 溫德爾著
  16. 0.00 MB  |  6656次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費
  3. 2protel99se軟件下載(可英文版轉中文版)
  4. 78.1 MB  |  537798次下載  |  免費
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費
  11. 6電路仿真軟件multisim 10.0免費下載
  12. 340992  |  191187次下載  |  免費
  13. 7十天學會AVR單片機與C語言視頻教程 下載
  14. 158M  |  183279次下載  |  免費
  15. 8proe5.0野火版下載(中文版免費下載)
  16. 未知  |  138040次下載  |  免費
主站蜘蛛池模板: 天堂网在线最新版官网 | 老司机午夜永久在线观看 | 久久久久国产精品免费网站 | 欧美深夜福利 | 欧美精品一区视频 | 一级一级一片免费高清 | 日本黄色免费大片 | 男女交性拍拍拍高清视频 | 九九热国产在线 | 中国又粗又大又爽的毛片 | 久久狠狠第一麻豆婷婷天天 | 天天摸天天操天天射 | 午夜毛片视频高清不卡免费 | 午夜影音 | 亚洲国产色图 | 免费三级pq| 亚洲成a人片毛片在线 | 亚洲午夜网站 | 精品亚洲综合在线第一区 | 国产欧美亚洲精品 | 日韩一区二区三区免费 | 九九精品国产兔费观看久久 | 老师受不了了好硬好大 | 深夜国产成人福利在线观看女同 | 天天躁夜夜躁狠狠躁2021西西 | 97久久伊人精品影院 | 色婷婷色综合 | 亚洲乱码尤物193yw在线播放 | 日本最色网站 | 69日本xxxxxxxxx96| 六月丁香婷婷天天在线 | 国产精品久久久久影院免费 | 欧美人成a视频www | 国产精品综合色区在线观看 | 韩国免费三片在线视频 | a毛片成人免费全部播放 | 操女人免费视频 | 日本不卡一区二区三区在线观看 | 欧美人交性视频在线香蕉 | 欧美线人一区二区三区 | 特黄色片 |