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等軟硬件開發,另外分享生活中的趣事以及感悟。目的是建立一個平臺記錄學習過的知識,並分享出來自認爲有用的與感興趣的道友相互交流進步。