在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

3天內不再提示

【ZYNQ Ultrascale+ MPSOC FPGA教程】第二十九章PL端AXI GPIO的使用

FPGA技術專欄 ? 來源:芯驛電子科技 ? 作者:芯驛電子科技 ? 2021-02-01 10:06 ? 次閱讀

原創聲明:

本原創教程由芯驛電子科技(上海)有限公司(ALINX)創作,版權歸本公司所有,如需轉載,需授權并注明出處。

適用于板卡型號:

AXU2CGA/AXU2CGB/AXU3EG/AXU4EV-E/AXU4EV-P/AXU5EV-E/AXU5EV-P /AXU9EG/AXU15EG

實驗Vivado工程目錄為“ps_axi_gpio /vivado”。

實驗vitis工程目錄為“ps_axi_gpio /vitis”。

可能有些人就會問,怎么又在講GPIO,LED燈,覺得太繁瑣,但是GPIO是ZYNQ的基本操作,本教程力求把各種方法分享給大家,PS端的MIO,EMIO,PL端的axi gpio,包括輸入輸出兩個方向,以及PS與PL的基本操作,所以還是希望大家耐心學習。

前面講過如何用的是PS端的EMIO點亮PL端LED燈,但是并沒有與PL端產生交互。本章介紹另外一種控制方法,在ZYNQ當中可以使用AXI GPIO,通過AXI總線控制PL端的LED燈。同時也介紹了PL端按鍵的使用。

使用zynq最大的疑問就是如何把PS和PL結合起來使用,在其他的SOC芯片中一般都會有GPIO,本實驗使用一個AXI GPIO的IP核,讓PS端通過AXI總線控制PL端的LED燈,實驗雖然簡單,不過可以讓我們了解PL和PS是如何結合的。

1. 原理介紹

一個AXI GPIO模塊有兩個GPIO,分別是GPIO和GPIO2,也就是channel1和channel2,為雙向IO。

o4YBAGAKMzKAY6pDAACmFyv6F58317.jpgAXI GPIO結構

FPGA工程師工作內容

以下為FPGA工程師負責內容。

2. Vivado工程建立

1)打開“ps_hello”另存為一個名為“ps_axi_gpio”Vivado工程,表示PS通過AXI總線控制gpio

pIYBAGAKMzOAGeCGAAA59aDj8iY856.jpg

“Create project subdirectory”勾選后會在目錄下創建子目錄,勾選“Include run results”會包含編譯后的結果

o4YBAGAKMzOAOXfTAAA8FI_NQ9c110.jpg

2)雙擊xx.bd打開block design

pIYBAGAKMzSAfyqRAACcpUntlPc415.jpg

添加AXI GPIO

3) 添加一個AXI GPIO的IP 核

pIYBAGAKMzSAQGKGAACdVkRTz8g117.jpg

4)雙擊剛才添加的“axi_gpio_0”配置參數

pIYBAGAKMzWAaKLaAABInvRCIFA965.jpg

5)選擇“All Outputs”,因為這里控制LED,只要輸出就可以了,“GPIO Width”填1,控制1顆LED,點擊OK。如果想使用channel2,需要把”Enable Dual Channel”打開,也就使能了GPIO2。

o4YBAGAKMzWAJlJ_AACA_2-QQxQ387.jpg

6)點擊“Run Connection Automation”,可以完成部分自動連線

pIYBAGAKMzaAJsGRAABPqHHFHJ0030.jpg

7)選擇要自動連接的端口,這里全選,點擊OK

o4YBAGAKMzeABI1QAABSVmWmSWA453.jpg

8)點擊“Optimize Routing”,可以優化布局,同時可以看到多了兩個模塊,一個是Processor System Reset模塊,為同步復位模塊,提供同一時鐘域的復位信號。AXI Interconnect模塊為AXI總線互聯模塊,用于AXI模塊的交叉互聯。

pIYBAGAKMzeAY6DoAABbSSSffDA584.jpg

在這個應用中,我們可以看到用到了ZYNQ的HPM0_LPD口,此接口用于訪問PL端數據,大部分應用中是為了配置PL端模塊的寄存器

o4YBAGAKMziAZM--AABQUi9JHns252.jpg

復位信號由ZYNQ的復位輸出提供,最好是每個時鐘域都加一個復位模塊,可以根據模塊下面的名稱搜索添加。

pIYBAGAKMziAGZlyAABOYBnbw-w751.jpg

9)修改GPIO端口的名稱

o4YBAGAKMzmAKvYPAACPr-eO3Vc697.jpg

10)名稱修改為leds

pIYBAGAKMzqAAJJvAACNtJrXWOo194.jpg

11)再添加一個AXI GPIO,連接PL端按鍵,配置GPIO參數,都為輸入,寬度為1,使能中斷

o4YBAGAKMzuAVULcAAB_vG_zTWE596.jpg

12)使用自動連接

pIYBAGAKMzuARiKZAABT03zt0qs818.jpg

13)再把端口名稱改為keys

o4YBAGAKMzyAf4bZAACbeOzydCM968.jpg

14)由于是PL端過來的中斷,在這里需要配置ZYNQ處理器的中斷,設置IRQ0[0-7]為1

pIYBAGAKMz2ACrd3AABtCiLEb1Y810.jpg

15)連接ip2intc_irpt到pl_ps_irq

o4YBAGAKMz2ANcVFAABiV68BooM572.jpg

16)保存設計,點擊xx.bd,右鍵Generate Output Products

pIYBAGAKMz6APLO7AABXhXKoK1Y716.jpg

17)在生成的Verilog文件中,可以看到有個“leds_tri_o”和”keys_tri_i”的端口,要為他們分配管腳,在綁定引腳時,以這個文件里的引腳名稱為準。

o4YBAGAKMz6AJadHAAClZPOBlyU065.jpg

3. XDC文件約束PL管腳

1)創建一個新的xdc約束文件

pIYBAGAKMz-ASDKcAABpvMGo0_c795.jpg

2)文件名稱為led

o4YBAGAKMz-AV41rAABzXm6E7ow848.jpg

3)led.xdc添加一下內容,端口名稱一定要和頂層文件端口一致

##################CompressBitstream############################set_propertyBITSTREAM.GENERAL.COMPRESSTRUE[current_design]set_propertyIOSTANDARDLVCMOS33[get_ports{leds_tri_o[0]}]set_propertyPACKAGE_PINAE12[get_ports{leds_tri_o[0]}]set_propertyIOSTANDARDLVCMOS33[get_ports{keys_tri_i[0]}]set_propertyPACKAGE_PINAF12[get_ports{keys_tri_i[0]}]

4)生成bit文件

pIYBAGAKMz-APW9RAAAKb9wKyjA709.jpg

5)導出硬件FileExportExport Hardware

o4YBAGAKM0CAYq31AACDny6BInc626.jpg

6)因為要用到PL,所以選擇“Include bitstream”,點擊“OK”

pIYBAGAKM0GAfb5bAAA-hieL5ac498.jpg

軟件工程師工作內容

以下為軟件工程師負責內容。

4. Vitis程序編寫

4.1 AXI GPIO點亮PL端LED燈

1)創建一個platform,創建過程參考“PS端RTC中斷實驗”一章

o4YBAGAKM0GASiB4AAAiaLMuMXQ266.jpg

2)面對一個不熟悉AXI GPIO,我們如何控制呢?我們可以嘗試一下Vitis自帶的例程

3)雙擊“system.mss”,找到“axi_gpio_0”,這里可以點擊“Documentation”來看相關文檔,這里就不演示,點擊“Import Examples”

o4YBAGAKM0GACiQIAACgMps8tic756.jpg

4)在彈出的對話框中有多個例程,從名稱中可以猜個大概,這里選第一個“xgpio_example”

pIYBAGAKM0KAGYIfAABMUDOZmfI824.jpg

5)可以看到例程比較簡單,短短幾行代碼,完成了AXI GPIO的操作

o4YBAGAKM0KAUIScAACcXBjD06M572.jpg

里面用到很多GPIO相關的API函數,通過文檔可以了解詳細,也可以選中該函數,按“F3”查看具體定義。如果有了這些信息你還不能理解如何使用AXI GPIO,說明你需要補充C語言基礎。

其實這些函數都是在操作GPIO的寄存器,AXI GPIO的寄存器也不多,主要是兩個channel的數據寄存器GPIO_DATA和GPIO2_DATA,兩個channel的方向控制GPIO_TRI和GPIO2_TRI,以及全局中斷使能寄存器GIER,IP的中斷使能IP IER和中斷狀態寄存器ISR,具體的功能可以看AXI GPIO的文檔pg144。

pIYBAGAKM0OAahdsAAB2VzDb7Xo566.jpg

比如進入到設置GPIO方向的函數中,就可以看到是在向GPIO的GPIO_TRI寄存器寫數據,從而控制方向。

o4YBAGAKM0OAJjzuAAAbLV_eD0s369.jpg

其他的函數也可以按此法自行研究。

4.2 下載調試

首先編譯APP工程,編譯方法前面的例程已經介紹過了。雖然Vitis可以提供一些例程,但有一部分例程是需要自己修改的,這個簡單的LED例程就不修改了,嘗試運行一下,發現不能達到預期效果,甚至提示一些錯誤。下載后可以看到開發板LED1快速閃爍。

pIYBAGAKM0SAdW1xAAC_csBgRVY911.jpg

4.3 寄存器方式實現

如果覺得Xilinx提供的API函數比較繁瑣,效率低,也可以采取操作寄存器的方式實現LED的控制。

比如下面我們新建了axi_led的工程,修改helloworld.c如下。

pIYBAGAKM0WAB3F9AABDfR8nAdw689.jpgpIYBAGAKM0WALDWrAAA15AgtgqI249.jpg

其中定義的基地址GPIO_BASEADDR可以在xx.xsa中里找到

o4YBAGAKM0WAQ4A1AABi_Jzlb2c941.jpg

由于我們只啟用了channel1,因此定義了下面的寄存器地址

pIYBAGAKM0aALJ51AAAXiX8MhsU330.jpg

這樣直接操作寄存器的方式效率會比調用Xilinx API函數高,而且更直觀,對于理解程序如何運行有很大幫助。但是對于大工程來講,這種方式使用起來就比較復雜,主要依據個人需求選擇。

4.4 AXI GPIO之PL端按鍵中斷

前面的定時器中斷實驗的中斷屬于PS內部的中斷,本實驗中斷來自PL,PS最大可以接收16個來自PL的中斷信號,都是上升沿或高電平觸發。

1)和前面的教程一樣,在不熟悉Vitis程序編寫的情況下,我們盡量使用Vitis自帶例程來修改,選擇“xgpio_intr_tapp_example”

o4YBAGAKM0aAFQlpAAB3XOk_30w049.jpg

2)需要修改部分代碼,按鍵的axi gpio模塊叫做axi_gpio_1,在xparameters.h中找到它的device id

pIYBAGAKM0eAUIDAAABWIRtSooI638.jpgo4YBAGAKM0iATRxhAAAmYl7qMTA304.jpg

3)然后可以修改GPIO和中斷號的宏定義如下

pIYBAGAKM0iAWNLOAAAl0B0P3jA244.jpg

4)修改測試延時時間,讓我們有足夠的時間去按按鍵

o4YBAGAKM0iAVlPVAAB2JSy1cfo247.jpg

4.5 下載調試

保存文件,編譯工程,打開串口終端,下載程序。如果一直不按按鍵,串口顯示“No button pressed.”,如果按下“KEY1”按鍵顯示“Successfully ran Gpio Interrupt Tapp Example”。

pIYBAGAKM0mAa4BbAAB8ElSAtVI039.jpg

5. 實驗總結

通過實驗我們了解到PS可以通過AXI總線控制PL,但幾乎沒有體現出ZYNQ的優勢,因為對于控制LED燈,無論是ARM還是FPGA,都可以輕松完成,但是如果把LED換成串口呢,控制100路串口通信,8路以太網等應用,我想還沒有哪個SOC能完成這種功能,只有ZYNQ可以,這就是ZYNQ和普通SOC的不同之處。

PL端可以給PS發送中斷信號,這提高了PL和PS數據交互的效率,在需要大數量、低延時的應用中需要用到中斷處理。

到本章結束已經把ZYNQ的PS端MIO、EMIO,PL端GPIO如何使用講完了,包括輸入和輸出以及中斷處理,這些都是最基礎的操作,大家還是要多多思考,理解清楚。

6. 知識點分享

1)在設計好后,可以看到Address Editor中,已經為AXI外設分配好了地址空間,其中偏移地址和空間大小是可以修改的。

o4YBAGAKM0qAaIH9AABQWEJpwqI771.jpg

但是修改偏移地址是有限制的,詳情參考UG1085文檔System Address一章, AXI外設連接到了M_AXI_HPM0_LPD口,在8000_0000到9FFF_FFFF地址空間內修改。

pIYBAGAKM0uActWwAAC6Ru0YDSg577.jpg

2)在使用一個模塊時,需要配套的文檔輔助開發,但是這些文檔該如何去找呢,例如XILINX的IP,打開模塊的配置,在左上角點擊Documentation,再點擊Product Guide,如果在安裝Vivado的時候安裝了DocNav,就會跳轉過去打開文檔。

o4YBAGAKM0yAR41PAACHr0PmB2c539.jpgo4YBAGAKM02AfQ-TAACelNpSYck497.jpg

此功能需要電腦聯網,DocNav會從網站加載文檔。可以點擊下載按鈕下載到本地。

還有一種方法是在Xilinx官網根據模塊的名稱搜索資料下載(頁面可能會有所變化)

pIYBAGAKM06APpN3AABgU45cy-w830.jpg

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

    關注

    1643

    文章

    21985

    瀏覽量

    615077
  • Xilinx
    +關注

    關注

    73

    文章

    2184

    瀏覽量

    124555
  • GPIO
    +關注

    關注

    16

    文章

    1277

    瀏覽量

    53684
  • Zynq
    +關注

    關注

    10

    文章

    614

    瀏覽量

    48078
  • MPSoC
    +關注

    關注

    0

    文章

    200

    瀏覽量

    24646
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    AMD Spartan UltraScale+ FPGA 開始量產出貨

    邊緣應用而設計,為業經驗證的 UltraScale+ FPGA 和自適應 SoC 產品組合帶來了現代化的連接、后量子密碼等功能。 三款最低
    的頭像 發表于 06-18 10:32 ?224次閱讀
    AMD Spartan <b class='flag-5'>UltraScale+</b> <b class='flag-5'>FPGA</b> 開始量產出貨

    蔡司亮相第二十九屆中國國際口腔設備材料展覽會,邀您共探口腔行業未來

    作為亞太地區最具影響力的口腔專業展會,第二十九屆中國國際口腔設備材料展覽會即將盛大開幕。本屆展會預計將吸引來自中國、德國、日本、美國等30多個國家和地區的800余家企業參展,超13萬名專業人士
    發表于 06-09 13:42 ?710次閱讀
    蔡司亮相<b class='flag-5'>第二十九</b>屆中國國際口腔設備材料展覽會,邀您共探口腔行業未來

    上汽大眾5月終端銷售8.7萬輛

    6月伊始,上汽大眾便攜旗下明星陣容亮相第二十九屆粵港澳大灣區車展,備受消費者關注。
    的頭像 發表于 06-06 17:59 ?391次閱讀

    Xilinx Ultrascale系列FPGA的時鐘資源與架構解析

    Ultrascale是賽靈思開發的支持包含步進功能的增強型FPGA架構,相比7系列的28nm工藝,Ultrascale采用20nm的工藝,主要有2個系列:Kintex和Virtex
    的頭像 發表于 04-24 11:29 ?800次閱讀
    Xilinx <b class='flag-5'>Ultrascale</b>系列<b class='flag-5'>FPGA</b>的時鐘資源與架構解析

    ZYNQ基礎---AXI DMA使用

    前言 在ZYNQ中進行PL-PS數據交互的時候,經常會使用到DMA,其實在前面的ZYNQ學習當中,也有學習過DMA的使用,那就是通過使用自定義的IP,完成HP接口向內存寫入和讀取數據的方式。同樣
    的頭像 發表于 01-06 11:13 ?2069次閱讀
    <b class='flag-5'>ZYNQ</b>基礎---<b class='flag-5'>AXI</b> DMA使用

    Zynq UltraScale+ MPSoC數據手冊

    電子發燒友網站提供《Zynq UltraScale+ MPSoC數據手冊.pdf》資料免費下載
    發表于 12-30 14:37 ?2次下載

    《DNESP32S3使用指南-IDF版_V1.6》第二十九章 DS18B20實驗

    第二十九章 DS18B20實驗 本章,我們將介紹ESP32-S3如何讀取外部溫度傳感器的溫度,來得到較為準確的環境溫度。我們將學習單總線技術,通過它來實現ESP32-S3和外部溫度傳感器
    發表于 12-25 09:43

    AMD/Xilinx Zynq? UltraScale+ ? MPSoC ZCU102 評估套件

    AMD/Xilinx Zynq? UltraScale+ ? MPSoC ZCU102 評估套件可快速啟動汽車、工業、視頻和通信應用設計。AMD/Xilinx MPSoC ZCU102
    的頭像 發表于 11-20 15:32 ?1441次閱讀
    AMD/Xilinx <b class='flag-5'>Zynq</b>? <b class='flag-5'>UltraScale+</b> ? <b class='flag-5'>MPSoC</b> ZCU102 評估套件

    在米爾電子MPSOC實現12G SDI視頻采集H.265壓縮SGMII萬兆以太網推流

    4K UHD音視頻廣播領域的優勢 1.高性能與低功耗的結合:Zynq UltraScale+ MPSoC采用了16nm FinFET工藝,集成了多核處理器和可編程邏輯,能夠在提高性能的同時降低功耗,這對
    發表于 11-01 16:56

    12G-SDI高清視頻開發案例,讓4K視頻采集更便捷!基于Xilinx MPSoC高性能平臺

    本帖最后由 Tronlong創龍科技 于 2024-10-29 10:35 編輯 本文主要介紹基于Xilinx UltraScale+ MPSoC XCZU7EV的12G-SDI高清視頻開發
    發表于 10-29 10:09

    《DNK210使用指南 -CanMV版 V1.0》第二十九章 音頻錄制實驗

    第二十九章 音頻錄制實驗 本章將介紹CanMV下的音頻錄制通過CanMV提供的模塊便能快速地實現音頻錄制。通過本章的學習,讀者將學習到CanMV下控制I2S獲取音頻數和audio模塊的使用。本章分為
    發表于 10-26 14:16

    在米爾電子MPSOC實現12G SDI視頻采集H.265壓縮SGMII萬兆以太網推流

    在本設計中,我們使用Zynq UltraScale+ MPSoC平臺(具體型號為MYIR XCZU4EV),通過FPGA實現對SDI視頻的H265壓縮,并通過SGMII接口推送到萬兆
    發表于 10-14 17:42

    使用TPS65086x PMIC為Xilinx Zynq UltraScale MPSoC供電

    電子發燒友網站提供《使用TPS65086x PMIC為Xilinx Zynq UltraScale MPSoC供電.pdf》資料免費下載
    發表于 09-21 11:11 ?0次下載
    使用TPS65086x PMIC為Xilinx <b class='flag-5'>Zynq</b> <b class='flag-5'>UltraScale</b> <b class='flag-5'>MPSoC</b>供電

    TE Connectivity 2024光亞展亮點回顧

    第二十九屆廣州國際照明展(以下簡稱“光亞展”)在廣州廣交會展館舉辦,TE Connectivity(以下簡稱“TE”)將聯合 Zhaga 聯盟共同亮相展會。
    的頭像 發表于 09-13 16:50 ?1003次閱讀

    ALINX FPGA+GPU異架構視頻圖像處理開發平臺介紹

    Alinx 最新發布的新品 Z19-M 是一款創新的 FPGA+GPU 異構架構視頻圖像處理開發平臺,它結合了 AMD Zynq UltraScale+ MPSoC
    的頭像 發表于 08-29 14:43 ?1981次閱讀
    主站蜘蛛池模板: 台湾佬自偷自拍情侣在线 | 日本www.色 | 狠狠五月天小说 | 成人mv高清在线 | 日本国产在线观看 | 日本口工全彩无遮拦漫画大 | 小雪被老外黑人撑破了 | 天天操天天射天天色 | 丁香婷婷久久大综合 | 三级免费网站 | 天堂中文字幕在线 | 中文字幕亚洲一区二区va在线 | 色爱综合区| 天堂网在线.www天堂在线资源 | 国产成人影院 | 日韩一级在线观看 | 韩国三级观影久久 | 男人资源网 | 84pao强力永久免费高清 | 国产精品嫩草影院午夜 | 性中国videosex国产孕妇 | 在线三区 | 色天使色婷婷丁香久久综合 | 狠狠色狠狠色综合婷婷tag | 丁香花高清在线观看 | 亚洲精品在线视频观看 | 网站大全黄免费 | 日本天天操 | 色综合天天综合给合国产 | 成人99 | 国产精品理论片在线观看 | 成人福利在线视频 | 女人色网 | 天天看天天射天天碰 | 久久精品94精品久久精品 | 亚欧美色 | 天天做天天爱夜夜大爽完整 | 人人爱天天做夜夜爽 | 国产视频福利 | 寄宿日记在线看 | 成人久久网站 |