色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

電子發(fā)燒友App

硬聲App

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

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

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>電子資料>硬件即代碼第五部分:FPGA內(nèi)部

硬件即代碼第五部分:FPGA內(nèi)部

2023-06-14 | zip | 0.00 MB | 次下載 | 免費(fèi)

資料介紹

描述

我對(duì)本教程采用了快速入門的方法,即盡早開始編寫代碼。編寫代碼不需要對(duì) FPGA 了解太多,就像你為 CPU 編寫軟件而沒有真正了解 CPU 的細(xì)節(jié)一樣。但是,F(xiàn)PGA 是一種資源受限的設(shè)備,在某些時(shí)候您會(huì)想了解這些資源是什么以及如何測(cè)量它們。今天,我們將仔細(xì)研究 FPGA 的組成部分,以便您可以做到這一點(diǎn)。

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

FPGA 元素

讓我們首先介紹 FPGA 內(nèi)部的主要元素。

編程邏輯- 這是 FPGA 中可用的主要和最豐富的資源。正如我在第一部分中所描述的,數(shù)字邏輯由邏輯門(與、或、非等)組成,該邏輯可用于實(shí)現(xiàn)算術(shù)運(yùn)算,以及計(jì)算機(jī)所做的一切。可編程邏輯元件通常稱為 LE(邏輯元件)或 LUT。在最大的 FPGA 中,LE 容量可以從數(shù)百到超過一百萬不等。

寄存器- (非數(shù)組)變量的值存儲(chǔ)在由稱為觸發(fā)器的硬件元素組成的寄存器中。每個(gè)觸發(fā)器(或只是 FF)存儲(chǔ)一個(gè)位值,因此 8 位變量將在硬件中使用 8 個(gè) FF。每個(gè) LE 通常有一個(gè)或兩個(gè) FF 配對(duì),因此觸發(fā)器容量通常與 LE 的順序相同。

DSP 模塊——所謂的“數(shù)字信號(hào)處理”模塊主要由一個(gè)硬編碼(即固定功能,不可編程)乘法器和一個(gè)加法器組成。有幾種變體,但乘法器 + 加法器是所有變體共有的關(guān)鍵功能。盡管這兩者都可以純粹在可編程邏輯中實(shí)現(xiàn),但 DSP 模塊的效率要高得多,而且它們對(duì)許多應(yīng)用非常重要。DSP 塊數(shù)范圍從 10 以下到 1000 以上。

如果沒有足夠的 DSP 模塊可用,綜合工具將為乘法器和加法器使用可編程邏輯。這對(duì)于加法器來說很常見,雖然效率較低,但它們?nèi)匀幌喈?dāng)有效。另一方面,乘法器作為可編程邏輯非常浪費(fèi),如果您需要許多乘法器超出可用 DSP 模塊的數(shù)量,您可能會(huì)發(fā)現(xiàn)自己很快就會(huì)耗盡空間。

嵌入式 RAM - 我們?cè)诘谒牟糠衷敿?xì)介紹了嵌入式 RAM。這些元素通常被稱為 EBR(嵌入式 RAM)、塊 RAM 或 BRAM。每個(gè)嵌入式 RAM 的容量通常以數(shù)千位為單位。嵌入式 RAM 的數(shù)量可能從幾萬到幾千不等。一些 FPGA 在同一個(gè) FPGA 中也有多種尺寸。例如,許多較小的 RAM 和一些大型 RAM。

I/O - 這些重要的元件使用芯片的外部引腳提供輸入和輸出。在本系列中,我們不會(huì)過多擔(dān)心這些,因?yàn)槲覀儗⑹冀K使用 HLS 工具中內(nèi)置的預(yù)先設(shè)計(jì)的塊,將我們的設(shè)計(jì)與外部世界連接起來。但是,只是為了完整性... I/O 元素包括通用 I/O(或 GPIO),可以驅(qū)動(dòng)具有高/低輸出值的引腳或讀取高/低輸入值。除了 GPIO,F(xiàn)PGA 通常還提供其他固定功能 I/O 元件,這些元件可以使用 DDR、SPI、I2C、PCIe 等特定協(xié)議與外部設(shè)備進(jìn)行通信。

FPGA 規(guī)格

幾乎所有 FPGA 供應(yīng)商都提供不同系列的 FPGA,它們針對(duì)不同類別的應(yīng)用,稱為器件系列。每個(gè)系列將包括幾個(gè)不同尺寸的部件(無論是在物理上還是在可用資源方面)、封裝和特殊功能。當(dāng)您訪問設(shè)備系列的網(wǎng)站時(shí),頁面上或附件中將有一個(gè)系列表,其中總結(jié)了系列中每個(gè)設(shè)備的可用資源。

這是我們正在使用的 UPDuino 板上 FPGA 的族表:

pYYBAGNYgAKAZViDAAEVWpg9scs411.png
?

希望您現(xiàn)在可以確定我們感興趣的 4 個(gè)主要資源(實(shí)際上是 3 個(gè),因?yàn)槿鄙僖粋€(gè))。UPDuino 包含一個(gè) UP5K 設(shè)備(第二列),因此我們的開發(fā)板有以下資源:

  • 可編程邏輯:5、280個(gè)元素(表中的LUT)
  • 寄存器:未明確給出,但假設(shè)類似于 LUT 計(jì)數(shù)(數(shù)據(jù)表將提供更多詳細(xì)信息。)
  • 嵌入式 RAM:120Kb(這是總位容量。數(shù)據(jù)表將詳細(xì)說明各個(gè)塊的數(shù)量和大小。)
  • DSP 塊:8 個(gè)(表中的乘法和累加器塊)

作為獎(jiǎng)勵(lì),這些芯片有一些更大的塊 RAM(表中的 SPRAM)。

即使您不了解文檔其余部分的大部分內(nèi)容,通常也值得查看數(shù)據(jù)表的前幾頁。在概述之后,通常會(huì)有一個(gè)比您在網(wǎng)站上找到的更詳細(xì)的家庭表。

查看 UP5K 設(shè)備的數(shù)據(jù)表(下載數(shù)據(jù)表),我們發(fā)現(xiàn)它有 30 個(gè)嵌入式 RAM,每個(gè) 4096 位 (30 * 4Kb = 120Kb),以及 4 個(gè) 256Kb (4 * 256Kb = 1Mb) 的大 RAM 塊。

路由(隱藏資源)

在將設(shè)計(jì)映射到數(shù)字邏輯(和 DSP 模塊等)之后,工具必須在芯片上布局這些元素。在幾何上不可能以一種一切都與它們所連接的事物直接相鄰的方式來布局設(shè)計(jì)。因此,存在“路由”資源,這些資源基本上是電線和可編程開關(guān),允許連接芯片的不同部分。

不幸的是,這是一種難以定量描述的資源。因此,您不會(huì)在 FPGA 規(guī)范中看到任何數(shù)字來描述可用的布線(不過,數(shù)據(jù)表可能會(huì)有對(duì)布線架構(gòu)的描述),并且工具很少或根本沒有關(guān)于設(shè)計(jì)布線多少的輸出正在利用。充其量,您可能會(huì)看到這樣的警告,例如這種設(shè)計(jì)具有高度擁塞。

在實(shí)踐中,布線并不是您會(huì)直接擔(dān)心的事情,但它會(huì)影響最大可實(shí)現(xiàn)的芯片容量。未使用的邏輯和其他元素越多,布局的靈活性就越大,工具就越有可能找到可行的布局。反過來說,您使用的資源百分比越高,布局的靈活性就越小,工具就越有可能無法找到可行的布局。

我發(fā)現(xiàn)一旦 FPGA 的利用率達(dá)到 70-75%,這些工具可能會(huì)在布局期間開始出現(xiàn)問題。一旦達(dá)到 80% 或更多,您可能會(huì)遇到徹底的失敗。這只是我的經(jīng)驗(yàn),YMMV。此時(shí),簡(jiǎn)單的解決方案是升級(jí)到更大的 FPGA。可以做一些事情來突破設(shè)備利用率的極限,但這些事情超出了本系列的水平,需要數(shù)字硬件設(shè)計(jì)師的幫助。

資源使用報(bào)告

現(xiàn)在您至少了解了最重要的感興趣的資源,我們現(xiàn)在可以查看工具報(bào)告,告訴我們我們的設(shè)計(jì)正在使用多少資源。當(dāng)您單擊上傳按鈕構(gòu)建您的設(shè)計(jì)并將其上傳到 FPGA 時(shí),您會(huì)看到大量信息飛過,包括資源使用信息。您也可以運(yùn)行這些工具,而無需使用以下命令實(shí)際上傳到 UPDuino 板:(pio run --target bitstream如果之前構(gòu)建了比特流,您可能需要先清理項(xiàng)目)。

工具完成后,向后滾動(dòng)幾頁,直到看到如下所示的表格:

Info: Device utilisation:
Info:            ICESTORM_LC:   544/ 5280    10%
Info:           ICESTORM_RAM:     0/   30     0%
Info:                  SB_IO:     6/   96     6%
Info:                  SB_GB:     4/    8    50%
Info:           ICESTORM_PLL:     0/    1     0%
Info:            SB_WARMBOOT:     0/    1     0%
Info:           ICESTORM_DSP:     1/    8    12%
Info:         ICESTORM_HFOSC:     1/    1   100%
Info:         ICESTORM_LFOSC:     0/    1     0%
Info:                 SB_I2C:     0/    2     0%
Info:                 SB_SPI:     0/    2     0%
Info:                 IO_I3C:     0/    2     0%
Info:            SB_LEDDA_IP:     0/    1     0%
Info:            SB_RGBA_DRV:     0/    1     0%
Info:         ICESTORM_SPRAM:     0/    4     0%

這是布局工具的輸出。第一行使用另一個(gè)術(shù)語來表示邏輯元件:LC(邏輯單元),即 LUT + FF。之后是嵌入式 RAM,再往下是 DSP。

這個(gè)實(shí)際輸出來自我們?cè)诘诙糠值牡谝粋€(gè)示例:Hello FPGA。這種設(shè)計(jì)只使用了 10% 的 LE 資源,因此有足夠的空間來做更多的事情。事實(shí)上,這 10% 的大部分實(shí)際上是由工具產(chǎn)生的開銷,用于將你的函數(shù)連接到 USB,因此我們可以從計(jì)算機(jī)調(diào)用它。

要進(jìn)行實(shí)驗(yàn),請(qǐng)使用我們介紹過的任何示例,并嘗試對(duì)代碼進(jìn)行各種更改,以查看此使用情況報(bào)告表如何更改。5K 并不多,但我已經(jīng)使用此設(shè)備構(gòu)建了許多復(fù)雜的應(yīng)用程序,例如喚醒詞檢測(cè)和圖像分類。

感知器挑戰(zhàn)

在第四部分中,我要求您修改多類感知器示例以并行計(jì)算 3 個(gè)輸出。這是該問題的解決方案:

// Multi-class perceptron is a matrix/vector multiplication

void mat_vec_mul(in_array,4> features, out_array,4> out) {
  int16_t coef0[4] = { -9,  25, -28, -27 };
  int16_t coef1[4] = { -3, -31,  58, -31 };
  int16_t coef2[4] = { -10,  4,  80,  79 };

  int16_t acc0 = 0;
  int16_t acc1 = 0;
  int16_t acc2 = 0;

  for (uint8_t j = 0; j < 4; j++) {
    int16_t x = features[j];
    acc0 += coef0[j] * x;
    acc1 += coef1[j] * x;
    acc2 += coef2[j] * x;
  }

  out.resize(3); // set the actual output size
  out[0] = acc0;
  out[1] = acc1;
  out[2] = acc2;
}

解決方案的關(guān)鍵是利用每個(gè)嵌入式 RAM 以及數(shù)組變量可以同時(shí)并行訪問這一事實(shí)。通過將coef 變量拆分為三個(gè)單獨(dú)的變量并展開外部循環(huán),我們可以使每個(gè)輸出的乘法和累加步驟并行發(fā)生。如果我們展開了循環(huán),但沒有拆分coef,那么工具鏈仍然會(huì)為三個(gè)乘法和加法語句生成單獨(dú)的硬件,但它們需要輪流從coef 數(shù)組中獲取值而不是實(shí)際執(zhí)行在平行下。如所寫,上述循環(huán)每次迭代將使用 2 個(gè)周期:一個(gè)用于讀取數(shù)組,一個(gè)用于執(zhí)行乘法和累加。幾周后,我們將了解如何將其進(jìn)一步改進(jìn)為每次迭代 1 個(gè)周期。

這是此示例的資源使用情況:

Info: Device utilisation:
Info:            ICESTORM_LC:   686/ 5280    12%
Info:           ICESTORM_RAM:     2/   30     6%
Info:                  SB_IO:     6/   96     6%
Info:                  SB_GB:     8/    8   100%
Info:           ICESTORM_PLL:     0/    1     0%
Info:            SB_WARMBOOT:     0/    1     0%
Info:           ICESTORM_DSP:     3/    8    37%
Info:         ICESTORM_HFOSC:     1/    1   100%
Info:         ICESTORM_LFOSC:     0/    1     0%
Info:                 SB_I2C:     0/    2     0%
Info:                 SB_SPI:     0/    2     0%
Info:                 IO_I3C:     0/    2     0%
Info:            SB_LEDDA_IP:     0/    1     0%
Info:            SB_RGBA_DRV:     0/    1     0%
Info:         ICESTORM_SPRAM:     0/    4     0%

正如預(yù)期的那樣,此設(shè)計(jì)使用 3 個(gè) DSP 模塊,每個(gè)輸出一個(gè)。但是,您可能想知道為什么只使用了 2 個(gè)嵌入式 RAM 塊,盡管該函數(shù)使用了 5 個(gè)數(shù)組。在某些情況下,如果數(shù)組非常小,綜合工具可能會(huì)使用觸發(fā)器來存儲(chǔ)數(shù)組數(shù)據(jù),而不是使用嵌入式 RAM。這里的系數(shù)數(shù)組總共只有 64 位,將其存儲(chǔ)在 4096 RAM 中會(huì)有些浪費(fèi)。

下一步

本教程系列的前半部分到此結(jié)束,我希望您現(xiàn)在對(duì)如何使用 C++ 創(chuàng)建自定義 FPGA 設(shè)計(jì)有一個(gè)基本概念。但是,還有很多東西要學(xué)!接下來,我們將討論另一個(gè)性能優(yōu)化主題:如何消除(或至少隱藏)I/O 開銷。

連接

在我發(fā)布新的分期付款時(shí),請(qǐng)關(guān)注我以保持最新狀態(tài)。還有一個(gè) Discord 服務(wù)器(公共聊天平臺(tái)),用于您在https://discord.gg/3sA7FHayGH上可能有的任何評(píng)論、問題或討論


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

評(píng)論

查看更多

下載排行

本周

  1. 1A7159和A7139射頻芯片的資料免費(fèi)下載
  2. 0.20 MB   |  55次下載  |  5 積分
  3. 2PIC12F629/675 數(shù)據(jù)手冊(cè)免費(fèi)下載
  4. 2.38 MB   |  36次下載  |  5 積分
  5. 3PIC16F716 數(shù)據(jù)手冊(cè)免費(fèi)下載
  6. 2.35 MB   |  18次下載  |  5 積分
  7. 4dsPIC33EDV64MC205電機(jī)控制開發(fā)板用戶指南
  8. 5.78MB   |  8次下載  |  免費(fèi)
  9. 5STC15系列常用寄存器匯總免費(fèi)下載
  10. 1.60 MB   |  7次下載  |  5 積分
  11. 6模擬電路仿真實(shí)現(xiàn)
  12. 2.94MB   |  4次下載  |  免費(fèi)
  13. 7PCB圖繪制實(shí)例操作
  14. 2.92MB   |  2次下載  |  免費(fèi)
  15. 8零死角玩轉(zhuǎn)STM32F103—指南者
  16. 26.78 MB   |  1次下載  |  1 積分

本月

  1. 1ADI高性能電源管理解決方案
  2. 2.43 MB   |  452次下載  |  免費(fèi)
  3. 2免費(fèi)開源CC3D飛控資料(電路圖&PCB源文件、BOM、
  4. 5.67 MB   |  141次下載  |  1 積分
  5. 3基于STM32單片機(jī)智能手環(huán)心率計(jì)步器體溫顯示設(shè)計(jì)
  6. 0.10 MB   |  137次下載  |  免費(fèi)
  7. 4A7159和A7139射頻芯片的資料免費(fèi)下載
  8. 0.20 MB   |  55次下載  |  5 積分
  9. 5PIC12F629/675 數(shù)據(jù)手冊(cè)免費(fèi)下載
  10. 2.38 MB   |  36次下載  |  5 積分
  11. 6如何正確測(cè)試電源的紋波
  12. 0.36 MB   |  19次下載  |  免費(fèi)
  13. 7PIC16F716 數(shù)據(jù)手冊(cè)免費(fèi)下載
  14. 2.35 MB   |  18次下載  |  5 積分
  15. 8Q/SQR E8-4-2024乘用車電子電器零部件及子系統(tǒng)EMC試驗(yàn)方法及要求
  16. 1.97 MB   |  8次下載  |  10 積分

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935121次下載  |  10 積分
  3. 2開源硬件-PMP21529.1-4 開關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計(jì)
  4. 1.48MB  |  420062次下載  |  10 積分
  5. 3Altium DXP2002下載入口
  6. 未知  |  233088次下載  |  10 積分
  7. 4電路仿真軟件multisim 10.0免費(fèi)下載
  8. 340992  |  191367次下載  |  10 積分
  9. 5十天學(xué)會(huì)AVR單片機(jī)與C語言視頻教程 下載
  10. 158M  |  183335次下載  |  10 積分
  11. 6labview8.5下載
  12. 未知  |  81581次下載  |  10 積分
  13. 7Keil工具M(jìn)DK-Arm免費(fèi)下載
  14. 0.02 MB  |  73810次下載  |  10 積分
  15. 8LabVIEW 8.6下載
  16. 未知  |  65988次下載  |  10 積分
主站蜘蛛池模板: 99精品影院| 酒色.com | 一区二区三区毛AAAA片特级 | 超清无码波多野吉衣与黑人 | 伦理79电影网在线观看 | 不卡一区二区高清观看视频 | 在线视频久久只有精品第一日韩 | 久久视频这有精品63在线国产 | AV无码九九久久 | 国内精品乱码卡一卡2卡三卡新区 | 亚洲精品蜜夜内射 | 久久理论片 | 含羞草传媒在线观看 | 伦理片午夜在线视频 | 日日噜噜噜噜夜夜爽亚洲精品 | 色婷婷狠狠97成为人免费 | 国产69精品久久久久妇女 | 秋霞电影网午夜一级鲁丝片 | 欧美亚洲日韩自拍高清中文 | 99久久婷婷国产麻豆精品电影 | 熟妇无码乱子成人精品 | 97精品一区二区视频在线观看 | 色色色五的天 | 欧美亚洲综合另类无码 | 一攻多受高h大总攻 | 好硬好湿好爽再深一点视频 | 男人插曲视频大全免费网站 | 欧美卡1卡2卡三卡2021精品 | 青柠在线电影高清免费观看 | 欧美最猛12teevideos欧美 欧美最猛12teevideos | 免费又黄又硬又爽大片 | 97人妻久久久精品系列A片 | 99视频免费在线观看 | 国产专区青青在线视频 | 国产精品色无码AV在线观看 | 在线播放午夜理论片 | 日韩成人黄色 | YELLOW视频直播在线观看高清 | 久久视频在线视频观看天天看视频 | 暖暖 免费 日本 高清 在线1 | 欧美午夜福利主线路 |