Ultra96 PYNQ入門之二——PS端控制AXI GPIO

不合理的地方歡迎批評指正!!!

源代碼鏈接:Ultra96-PYNQ_A-simple-summary

1 簡單分析AXI GPIO模塊

AXI GPIO模塊整體格局與GPIO模塊有點類似,有個需要特別注意的地方,就是要理解Python的繼承思想

hd_gpio = axi_gpio_design.axi_gpio.Output( parent=axi_gpio_design.axi_gpio.channel1, 
										    start=0, stop=1 )

hd_gpio的Output屬性,是繼承自channel1。

至於爲什麼不直接使用Channel類的方法,原因是Input、Output、InOut類有特殊的函數

  • Input類特有的wait_for_value_async、wait_for_value
  • Output類on、off、toggle

這樣只有在相應的類中纔可以使用相應的函數。

注:以上是個人對Python繼承的淺顯理解,不當之處還請指正。

2 AXI GPIO的使用

2.1 硬件設計

這裏同樣使用這6個小傢伙作爲AXI GPIO示例,約束爲可以輸入可以輸出,具體如何使用,需要軟件進一步配置
在這裏插入圖片描述
很簡單的一個設計,可以在Vivado中的TCL控制檯通過如下命令,進行快速重建

source 2.axi_gpio.tcl

在這裏插入圖片描述

2.2 控制AXI GPIO

使用類似的代碼,即可進行驗證

from time import sleep
from pynq import Overlay
#AxiGPIO可以不導入,直接使用Overlay也可
from pynq.lib import AxiGPIO

axi_gpio_design = Overlay("./data/2.AXI_GPIO.bit")
hd_gpio = axi_gpio_design.axi_gpio.Output( parent=axi_gpio_design.axi_gpio.channel1, 
										    start=0, stop=1 )

for i in range(100):
    sleep(0.1)
    hd_gpio.toggle()

邏輯分析儀的測量結果如下,符合軟件設置的間隔。
在這裏插入圖片描述



原創不易,嚴禁剽竊!

在這裏插入圖片描述

歡迎大家關注我創建的微信公衆號——小白倉庫
原創經驗資料分享:包含但不僅限於FPGA、ARM、RISC-V、Linux、LabVIEW等軟硬件開發,另外分享生活中的趣事以及感悟。目的是建立一個平臺記錄學習過的知識,並分享出來自認爲有用的與感興趣的道友相互交流進步。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章