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

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

3天內(nèi)不再提示

如何利用FPGA部分可重配置特性實現(xiàn)PYNQ-PRIO經(jīng)典案例

454398 ? 來源:PYNQ開源社區(qū)微信公眾號 ? 作者:品客 ? 2020-09-28 10:21 ? 次閱讀

PYNQ-PRIO是一個介紹如何利用FPGA部分可重配置特性和PYNQ框架提供的方便的API,對FPGA分時復(fù)用,提高FPGA靈活性的項目??芍嘏渲檬侵冈谝粋€FPGA工程中,劃分了靜態(tài)邏輯部分和動態(tài)邏輯部分,靜態(tài)邏輯部分是指在運行過程中邏輯不變的部分,動態(tài)邏輯部分是指在運行過程中可以根據(jù)需要下載特定比特流文件實現(xiàn)不同邏輯的部分,在工作時,修改某一動態(tài)邏輯部分不會對靜態(tài)邏輯部分和其他動態(tài)邏輯部分造成影響,實現(xiàn)了FPGA的功能上的分時復(fù)用。

上圖為工程項目示意圖。通過軟硬件劃分,在PS端中負責Linux通信,PL端例化了6個PR(Partitial Reconfiguration)塊。每個塊中有GPIO、uart和IIC等幾種不同的RM(Reconfiguration Module),它們通過各自的partitial bitstream下載。動態(tài)邏輯部分和靜態(tài)邏輯部分使用分離器保證它們互不影響,并在動態(tài)邏輯部分下載完成后對下載好的部分進行復(fù)位。

此項目中在PYNQ框架下有兩種驅(qū)動這些IP的方式:一是直接使用PYNQ提供的API操作overlay里面的IP,二是將這些IP通過DTS(Device Tress Source)注冊到linux sysfs中,然后調(diào)用linux提供的驅(qū)動。

快速開始

運行下面這條命令即可快速安裝:

sudo -H pip3 install git+https://github.com/Siudya/PYNQ-PRIO.git

項目演示

1 、 使用pynq API的方法:

打開~/prio/uart.ipynb,前面一段代碼是UART的驅(qū)動程序和必要的功能代碼,不是本文重點請讀者自己研讀。

接下來就是下載bit文件。首先下載靜態(tài)邏輯bit文件,靜態(tài)bit文件中的PR部分是默認的RM。然后下載PR的bit文件。注意,下載一個PR的bit文件后要立刻例化一個驅(qū)動實例,這是因為每個PR的bit文件所對應(yīng)的hwh文件中其他PR部分都使用默認RM,但是下載一個PR的bit文件并不會影響其他PR和靜態(tài)邏輯。

然后可以測試一下兩個UART的狀態(tài),在這里我們并沒有開啟中斷。

下一步我們測試兩個串口的收發(fā)。用杜邦線將uart1的TX(Arduino的Pin 9)和uart3的RX(Arduino的Pin 34),uart1的RX(Arduino的Pin 8)和uart3的TX(Arduino的Pin 35)連接起來,運行這段代碼,可以看到信息被正確地收發(fā)了。

接下來我們試試含中斷的收發(fā)。首先仍然是例化實例,不過在這里我們要從overlay.interrupts_pins中讀取每個uart的中斷引腳,然后初始化uart實例。

利用asyncio庫和中斷,我們可以實現(xiàn)異步收發(fā)。

2 、使用linux sysfs API的方法:

打開~/prio_linux/uart_linux.pynb

首先和上面使用pynq的API的方法一樣,首先下載靜態(tài)邏輯的bit文件,再下載PR的bit文件。但是不同的是同時注冊了對應(yīng)的dtbo到linux系統(tǒng)中。dtbo由dtso編譯而來,dtso是描述設(shè)備樹的文件,關(guān)于它的編寫參閱以下鏈接:
https://www.raspberrypi.org/documentation/configuration/device-tree.md

注冊完成后可以直接在/dev下看到這兩個uart模塊。然后可以使用linux自帶的serial庫調(diào)用它們。

這個項目中我們利用了FPGA的部分可重構(gòu)的特性,實現(xiàn)了運行中的部分邏輯的動態(tài)轉(zhuǎn)換。另外我們可以看到利用PYNQ提供的API,可以輕松注冊設(shè)備到Linux系統(tǒng),方便了其他程序?qū)ξ覀冏远xIP的使用。
編輯:hfy

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

    關(guān)注

    1630

    文章

    21796

    瀏覽量

    605165
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11341

    瀏覽量

    210134
  • uart
    +關(guān)注

    關(guān)注

    22

    文章

    1243

    瀏覽量

    101635
收藏 人收藏

    評論

    相關(guān)推薦

    利用FPGA實現(xiàn)USB 2.0通信接口

    USB?2.0接口的實現(xiàn)方式 利用FPGA實現(xiàn)USB 2.0接口的方式一般有兩種,一是借助外圍的USB接口芯片,二是FPGA內(nèi)部
    的頭像 發(fā)表于 12-30 13:59 ?650次閱讀
    <b class='flag-5'>利用</b><b class='flag-5'>FPGA</b><b class='flag-5'>實現(xiàn)</b>USB 2.0通信接口

    一種簡單高效配置FPGA的方法

    本文描述了一種簡單高效配置FPGA的方法,該方法利用微處理器從串行外圍接口(SPI)閃存配置FPGA設(shè)備。這種方法減少了硬件組件、板空間和成
    的頭像 發(fā)表于 10-24 14:57 ?778次閱讀
    一種簡單高效<b class='flag-5'>配置</b><b class='flag-5'>FPGA</b>的方法

    FPGA在圖像處理領(lǐng)域的優(yōu)勢有哪些?

    語言編程的,因此可以根據(jù)圖像處理的實際需求,動態(tài)地調(diào)整硬件資源的使用。這使得FPGA在處理圖像時能夠實現(xiàn)更高的能效比,從而降低系統(tǒng)的功耗。這對于需要長時間運行的圖像處理系統(tǒng)尤為重要。 五、
    發(fā)表于 10-09 14:36

    使用PYNQ訓(xùn)練和實現(xiàn)BNN

    使用 PYNQ 可以輕松在 FPGA實現(xiàn)加速 AI/ML,而無需編寫一行 HDL!讓我們看看如何做到這一點。
    的頭像 發(fā)表于 08-05 17:15 ?605次閱讀
    使用<b class='flag-5'>PYNQ</b>訓(xùn)練和<b class='flag-5'>實現(xiàn)</b>BNN

    基于PYNQ的智能垃圾分類系統(tǒng)

    ,同時在這個 ARM+FPGA 平臺,為了最大化主控板優(yōu)勢,我 們針對軟件算法進行了相應(yīng)的硬件實現(xiàn)進行提速,解決了在有限的資源內(nèi)實現(xiàn)了資源 利用和效率的最大化,同時在
    發(fā)表于 07-09 18:44

    基于FPGA的攝像頭心率檢測裝置設(shè)計

    其中 fpga 圖像處理模塊使用 Xilinx 公司的 pynq 平臺進行實現(xiàn),其中又劃 分為以下幾個軟件模塊:畫面獲取模塊,感興趣區(qū)域 roi 獲?。ㄈ四樧R別)模塊,變化信號提取模塊,快速
    發(fā)表于 07-01 17:58

    基于FPGA的類腦計算平臺 —PYNQ 集群的無監(jiān)督圖像識別類腦計算系統(tǒng)

    Passing Interface)的分布式內(nèi)存多進程技術(shù),適應(yīng)不 同的集群平臺。本設(shè)計在NEST仿真器中加入了支持LIF神經(jīng)元多線程硬件模塊。并通過以太網(wǎng)的通 信方式實現(xiàn)支持FPGA集群
    發(fā)表于 06-25 18:35

    如何利用經(jīng)典藍牙的bt_spp_acceptor實現(xiàn)藍牙透傳功能?

    利用經(jīng)典藍牙的bt_spp_acceptor實現(xiàn)藍牙透傳功能?
    發(fā)表于 06-24 07:53

    簡談Xilinx Zynq-7000嵌入式系統(tǒng)設(shè)計與實現(xiàn)

    PL,此外可以實現(xiàn)PL的完全重配置或者使用部分重配置(PR,Partional Reconfihuration,允許動態(tài)的重新
    發(fā)表于 05-08 16:23

    FPGA開發(fā)如何降低成本,比如利用免費的IP內(nèi)核

    。 了解IP內(nèi)核的特性和使用方式:在選定IP內(nèi)核后,應(yīng)詳細閱讀其文檔,了解內(nèi)核的功能、性能、接口以及使用限制等。這有助于在設(shè)計中更好地利用這些內(nèi)核,避免潛在的問題。 集成IP內(nèi)核到FPGA設(shè)計中:在
    發(fā)表于 04-28 09:41

    基于FPGA的光纖通信加密系統(tǒng)

    FPGA 設(shè)計加密算法具有安全性高,加密速度快,開發(fā)周期短,開發(fā)成本較低, 重配,可靠性高以及移植性好等優(yōu)點。 系統(tǒng)鏈路部分采用 Aurora 協(xié)議,該協(xié)議是一款輕量級的光纖鏈路協(xié)議
    發(fā)表于 04-26 11:33 ?1337次閱讀
    基于<b class='flag-5'>FPGA</b>的光纖通信加密系統(tǒng)

    簡談Xilinx Zynq-7000嵌入式系統(tǒng)設(shè)計與實現(xiàn)

    ,這樣可以將配置PL設(shè)置成啟動過程的一部分或者在將來的某個時間再單獨的配置PL,此外可以實現(xiàn)PL的完全重配置或者使用
    發(fā)表于 04-10 16:00

    fpga芯片的簡單介紹

    FPGA(Field Programmable Gate Array,現(xiàn)場可編程門陣列)芯片是一種可以通過用戶在現(xiàn)場進行編程來定制其邏輯功能的集成電路。FPGA芯片因其高度的靈活性和重配置
    的頭像 發(fā)表于 03-26 16:01 ?936次閱讀

    fpga芯片工作原理 fpga芯片有哪些型號

    部分。這些部分共同構(gòu)成了FPGA的基本結(jié)構(gòu),使其具有高度的靈活性和可配置性。 在FPGA中,小型查找表(LUT)是
    的頭像 發(fā)表于 03-14 17:17 ?1584次閱讀

    fpga是什么 fpga用什么編程語言

    更高的靈活性和重構(gòu)性。在FPGA中,用戶可以通過編程來配置硬件單元之間的連接關(guān)系,從而實現(xiàn)所需的電路功能。接下來,我們將詳細介紹FPGA
    的頭像 發(fā)表于 02-04 15:26 ?1824次閱讀