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

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

3天內不再提示

典型的FPGA方法:如何開始使用Digilent的開發(fā)板

YCqV_FPGA_EETre ? 來源:lq ? 2019-04-30 16:42 ? 次閱讀

過去,設計人員傾向于使用現(xiàn)場可編程門陣列 (FPGA) 在硬件設計中提升計算密集型應用的性能,例如計算機視覺、通信工業(yè)嵌入式系統(tǒng),以及越來越多的物聯(lián)網(wǎng) (IoT)。然而,傳統(tǒng) FPGA 編程中涉及的繁瑣步驟一直讓人望而卻步,促使設計人員到目前都還在尋求替代處理解決方案。

基于 Jupyter 筆記本的 Python Productivity for Zynq (PYNQ) 開發(fā)環(huán)境的問世,解決了 FPGA 的可編程性問題。使用專為支持 PYNQ 而設計的開發(fā)板,即使 FPGA 經驗很少的開發(fā)人員也可快速實現(xiàn)相關設計,從而充分利用 FPGA 性能來加快計算密集型應用。

本文將說明典型的 FPGA 方法,然后介紹并演示如何開始使用 Digilent 的開發(fā)板。該開發(fā)板為快速開發(fā)基于 FPGA 的系統(tǒng)提供了一種強大的開源替代方法。

為何使用 FPGA?

若需要使用計算密集型復雜算法工程師常常依賴 FPGA 提高執(zhí)行速度,同時又不影響緊張的功率預算。實際上,F(xiàn)PGA 已成為在邊緣計算系統(tǒng)中提高人工智能算法速度的主流平臺。

更先進的 FPGA 片上系統(tǒng) (SoC) 器件專為嵌入式應用而設計,將可編程邏輯 (PL) 結構與微控制器集成在一起。例如,Xilinx 的 Zynq-7000 SoC 在集成式可編程邏輯 (PL) 結構中結合了一個 Arm? Cortex?-A9 雙核處理器系統(tǒng),以及最多 444,000 個邏輯單元(圖 1)。除了內置處理器和全套外設外,Zynq SoC 還提供最多 2,020 個數(shù)字信號處理 (DSP) 塊(或稱切片)。開發(fā)人員使用這些資源,便可將 PL 結構配置到專用的處理鏈中,以便在復雜的計算密集型算法中提高吞吐量。

圖 1:Xilinx 的 Zynq-7000 SoC 結合了 Arm Cortex-A9 雙核處理器、可編程邏輯結構,以及很多嵌入式應用中所需的全套外設和接口。(圖片來源:Xilinx)

除了可減少元器件數(shù)量外,處理器與 PL 結構的集成還允許通過片上總線而不是片外訪問來執(zhí)行運算。這種集成也進一步簡化了在上電或復位序列期間,加載 PL 結構的關鍵任務。

在使用 FPGA 構建的基于微控制器的典型系統(tǒng)中,開發(fā)人員需要管理用于加載 FPGA 編程比特流的序列和安全性。在 Zynq SoC 中,集成的處理器負責執(zhí)行常規(guī)微控制器的任務,包括管理 PL 結構和其他片上外設。因此,與傳統(tǒng)的 FPGA 比特流初始化相比,該 FPGA 加載過程更接近于常規(guī)微控制器的引導過程。

該引導過程通過由其中一個 Zynq 處理器管理的短步驟序列完成(圖 2)。上電或復位時,如果 Zynq 處理器執(zhí)行其只讀 BootROM 中的一小段代碼,以從引導設備獲取實際引導代碼,則引導過程開始。除了用于配置處理器系統(tǒng)組件的代碼外,引導代碼還包含 PL 比特流以及用戶應用。當引導代碼加載完成時,處理器使用其中包含的比特流來配置 PL。而完成組件和 PL 的配置后,該器件開始執(zhí)行引導代碼中包含的應用。

圖 2:在類似于常規(guī)微控制器的引導序列中,Xilinx 的 Zynq-7000 SoC 運行 Boot ROM 中的代碼來加載和執(zhí)行引導加載程序,該加載程序負責處理后續(xù)階段,包括使用引導代碼中封裝的比特流來配置可編程邏輯結構。(圖片來源:Xilinx)

即使有了簡化的 PL 加載處理,開發(fā)人員在過去仍需自行處理復雜的 FPGA 開發(fā)過程,才能生成所需比特流。對于希望利用 FPGA 性能的開發(fā)人員來說,傳統(tǒng)的 FGPA 開發(fā)過程仍然是他們實現(xiàn)設計的一大障礙。Xilinx 通過其 PYNQ 環(huán)境有效地消除了這一障礙。

PYNQ 環(huán)境

在 PYNQ 中,PL 比特流封裝在預先構建的庫中。這些庫稱為覆蓋層,在開發(fā)過程和執(zhí)行環(huán)境中,其角色與軟件庫類似。在引導加載過程中,與所需覆蓋層相關聯(lián)的比特流將配置 PL 結構。不過,對于通過與每個覆蓋層關聯(lián)的 Python 應用程序編程接口 (API) 來利用覆蓋層功能的開發(fā)人員而言,該過程保持透明。在開發(fā)過程中,工程師可以根據(jù)需要組合軟件庫和覆蓋層,通過其各自 API 來實現(xiàn)應用。在執(zhí)行過程中,處理器系統(tǒng)像往常一樣執(zhí)行軟件庫代碼,而 PL 結構負責實現(xiàn)覆蓋層中提供的功能。這樣做的結果是可以提升性能,從而進一步促使開發(fā)人員對日益嚴苛應用進行 FPGA 設計的興趣。

顧名思義,PYNQ 利用了與 Python 編程語言相關的更高開發(fā)生產力。Python 之所以能夠成為頂級語言之一,不僅是因為其相對簡單,還因為它具有龐大且不斷擴增的生態(tài)系統(tǒng)。開發(fā)人員可能會在 Python 開源模塊的存儲庫中,找到支持服務或專用算法所需的軟件庫。與此同時,開發(fā)人員可以使用 C 語言實現(xiàn)關鍵功能,因為 PYNQ 使用常見 C 語言實現(xiàn) Python 解釋器。該實現(xiàn)允許輕松訪問數(shù)千個現(xiàn)有 C 語言庫,并簡化開發(fā)人員提供的 C 語言庫的使用。盡管經驗豐富的開發(fā)人員可以使用專用硬件覆蓋層和 C 語言軟件庫來擴展 PYNQ,但是 PYNQ 的真正優(yōu)勢在于,它可為任何能夠構建 Python 程序的開發(fā)人員提供高生產力開發(fā)環(huán)境。

PYNQ 本身是一個開源項目,基于另一個開源項目(Jupyter 筆記本)而構建。針對通過交互方式探索算法,以及使用 Python 或任何其他受支持的編程語言(目前超過 40 種)對復雜應用進行原型開發(fā),Jupyter 筆記本可提供極其有效的環(huán)境。Jupyter 筆記本由 Project Jupyter 基于社區(qū)共識而開發(fā),將可執(zhí)行代碼行與描述文本和圖形結合在一起。這一功能使各開發(fā)人員能夠更有效地記錄進展,而無需轉到其他開發(fā)環(huán)境。例如,開發(fā)人員可以使用筆記本,將查看數(shù)據(jù)所需的數(shù)行代碼與代碼生成的圖形結合起來(圖 3)。

圖 3:來自 Xilinx 樣例存儲庫的 Jupyter 筆記本將描述文本、可執(zhí)行代碼以及與應用相關的輸出結合起來。(圖片來源:Xilinx)

Jupyter 筆記本之所以能夠同時包含代碼、輸出和描述文本,是因為它是一種活動文檔,并在 Jupyter 筆記本服務器提供的交互式開發(fā)環(huán)境中進行維護(圖 4)。在 Jupyter 會話中,服務器使用 HTTP 協(xié)議在常規(guī) Web 瀏覽器中呈現(xiàn)筆記本文件,并對所呈現(xiàn)文檔中的靜態(tài)和動態(tài)內容應用 HTTP 和 Websocket 協(xié)議。在后端,服務器使用 ZeroMQ (?MQ) 開源消息傳遞協(xié)議與代碼執(zhí)行內核通信。

圖 4:在 Jupyter 會話中,筆記本服務器將筆記本文件的內容呈現(xiàn)到 Web 瀏覽器,同時與執(zhí)行代碼的后端內核進行交互。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 微控制器
    +關注

    關注

    48

    文章

    7396

    瀏覽量

    150636
  • FPGA
    +關注

    關注

    1624

    文章

    21539

    瀏覽量

    600518
  • python
    +關注

    關注

    54

    文章

    4758

    瀏覽量

    84292

原文標題:使用Python和Jupyter筆記本快速構建基于FPGA的設計并進行編程

文章出處:【微信號:FPGA-EETrend,微信公眾號:FPGA開發(fā)圈】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    開發(fā)者福利 一文帶你了解Digilent Arty S7 FPGA開發(fā)板

    Digilent為Arty FPGA開發(fā)板系列增加了新的成員——兩種不同規(guī)格的新的Arty S7,這款FPGA開發(fā)板是基于中等大?。╯ize
    的頭像 發(fā)表于 09-27 06:33 ?8502次閱讀
    <b class='flag-5'>開發(fā)</b>者福利 一文帶你了解<b class='flag-5'>Digilent</b> Arty S7 <b class='flag-5'>FPGA</b><b class='flag-5'>開發(fā)板</b>

    fpga開發(fā)板的新手,如何開始使用引腳分配

    我是fpga開發(fā)板的新手,我想知道如何開始使用引腳分配,特別是u*** / serial引腳連接。任何其他pin信息都會有所幫助謝謝
    發(fā)表于 07-19 11:47

    Digilent公司推出新型FPGA硬件開發(fā)平臺:NEXYSTM3開發(fā)板

    Digilent公司推出了一款新型的基于FPGA的硬件開發(fā)平臺,NEXYSTM3開發(fā)板。此開發(fā)板采用了Xilinx公司最先進的Spartan
    發(fā)表于 08-22 09:28 ?1400次閱讀

    fpga開發(fā)板電路圖

    最全面的fpga開發(fā)板電路圖,一共有10多份fpga開發(fā)板電路圖。
    發(fā)表于 04-19 12:50 ?133次下載
    <b class='flag-5'>fpga</b><b class='flag-5'>開發(fā)板</b>電路圖

    Digilent公司basys2開發(fā)板的全套開發(fā)例程

    Digilent公司basys開發(fā)板的全套開發(fā)例程,感興趣的小伙伴們可以看看。
    發(fā)表于 07-29 17:46 ?256次下載

    Digilent公司發(fā)布新款FPGA開發(fā)板

    Digilent公司宣布了新款FPGA開發(fā)板,歸屬于其Nexys產品線——Nexys4——上集成一個賽靈思Artix-7100T FPGA
    發(fā)表于 02-09 14:09 ?1554次閱讀

    digilent JTAG編程電線特點

    產品特點:   低成本JTAG配置解決方案   專為非Digilent FPGA開發(fā)板設計
    的頭像 發(fā)表于 11-13 17:04 ?2105次閱讀
    <b class='flag-5'>digilent</b> JTAG編程電線特點

    digilent Virtex-5 FPGA開發(fā)板簡介

    Genesys Virtex-5 FPGA開發(fā)板集成了功能強大的Xilinx Virtex?-5 FPGA,為廣大用戶帶來了一個功能強大、方便實用的設計平臺。上還有千兆以太網(wǎng),高速內
    的頭像 發(fā)表于 11-14 17:01 ?4298次閱讀
    <b class='flag-5'>digilent</b> Virtex-5 <b class='flag-5'>FPGA</b><b class='flag-5'>開發(fā)板</b>簡介

    digilent Spartan-7開源創(chuàng)客開發(fā)板介紹

    Arty S7 開發(fā)板搭載 Xilinx 最新的 Spartan-7 FPGA 芯片,是 DIGILENT Arty 家族系列產品的最新成員,該家族系列產品專門面向創(chuàng)客和FPGA興趣
    的頭像 發(fā)表于 11-19 14:38 ?2392次閱讀
    <b class='flag-5'>digilent</b> Spartan-7開源創(chuàng)客<b class='flag-5'>開發(fā)板</b>介紹

    digilent Artix-7 FPGA開發(fā)板簡介

    Nexys 4 DDR是一款Digilent多孔RAM-based Nexys開發(fā)板的簡易替代品。
    的頭像 發(fā)表于 11-19 14:43 ?3269次閱讀
    <b class='flag-5'>digilent</b> Artix-7 <b class='flag-5'>FPGA</b><b class='flag-5'>開發(fā)板</b>簡介

    開始使用 RL78/G14 快速原型開發(fā)板/Wi-Fi-Pmod-Expansion-Board

    開始使用 RL78/G14 快速原型開發(fā)板/Wi-Fi-Pmod-Expansion-Board
    發(fā)表于 02-02 19:31 ?0次下載
    <b class='flag-5'>開始使用</b> RL78/G14 快速原型<b class='flag-5'>開發(fā)板</b>/Wi-Fi-Pmod-Expansion-Board

    開始使用 RL78/G14快速原型開發(fā)板/Wi-Fi-Pmod-Expansion-Board

    開始使用 RL78/G14 快速原型開發(fā)板/Wi-Fi-Pmod-Expansion-Board
    發(fā)表于 07-04 19:16 ?0次下載
    <b class='flag-5'>開始使用</b> RL78/G14快速原型<b class='flag-5'>開發(fā)板</b>/Wi-Fi-Pmod-Expansion-Board

    fpga開發(fā)板與linux開發(fā)板區(qū)別

    FPGA開發(fā)板與Linux開發(fā)板是兩種不同的硬件開發(fā)平臺,各自具有不同的特點和應用場景。在以下的文章中,我將詳細介紹FPGA
    的頭像 發(fā)表于 02-01 17:09 ?1920次閱讀

    fpga開發(fā)板使用教程

    FPGA開發(fā)板的使用教程主要包括以下幾個關鍵步驟。
    的頭像 發(fā)表于 03-14 15:50 ?889次閱讀

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

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