精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

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

3天內不再提示

【ZYNQ Ultrascale+ MPSOC FPGA教程】第二十八章PS端EMIO的使用

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

原創聲明:

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

適用于板卡型號:

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

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

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

如果想用PS點亮PL的LED燈,該如何做呢?一是可以通過EMIO控制PL端LED燈,二是通過AXI GPIO的IP實現控制。本章介紹如何使用EMIO控制PL端LED燈的亮滅。同時也介紹了,利用EMIO連接PL端按鍵控制PL端LED燈。

1. 原理介紹

先來了解GPIO的BANK分布,從圖中可知BANK0~BANK2的MIO有78個。BANK3~BANK5的EMIO有96個,本章就是采用EMIO控制PL端LED。

pIYBAGAKMtWAAnZlAACl3gJi4K8830.jpg

FPGA工程師工作內容

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

2. Vivado工程建立

1)以ps_hello工程為基礎,另存為一個名為ps_emio的工程,打開ZYNQ配置,把GPIO EMIO勾選上。利用PL端的1個LED,1個按鍵,在MIO配置中選擇EMIO的位寬為2位,配置結束,點擊OK。

o4YBAGAKMtaAZ1PsAAB6FxzeNKM756.jpg

2)點擊多出的GPIO_0端口右鍵選擇Make External,將端口信號導出

pIYBAGAKMtaASK96AACF1KU8yaQ524.jpg

3)點擊引腳并修改引腳名稱為emio,也可以根據自己需求修改名稱。保存設計。

pIYBAGAKMteAM_tqAACz8Xd7Vco111.jpg

4)點擊xx.bd右鍵選擇Generate Output Products,重新生成輸出文件

o4YBAGAKMtiAIHw1AABsP0aq0M0697.jpg

5)結束后,頂層文件會更新出新的管腳,下面需要對其進行引腳綁定

pIYBAGAKMtmARWQEAACM7asTL78018.jpg

3. XDC文件約束PL管腳

1)新建XDC文件,綁定PL端引腳

o4YBAGAKMtmAER-EAABdBbeFzqs927.jpg

設置文件名稱為emio

pIYBAGAKMtmAbWjjAAB0hgFyrnw784.jpg

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

##################Compress Bitstream############################set_property BITSTREAM.GENERAL.COMPRESS TRUE [current_design]set_property IOSTANDARD LVCMOS33 [get_ports {emio_tri_io[*]}]#pl ledset_property PACKAGE_PIN W13 [get_ports {emio_tri_io[0]}]#pl keyset_property PACKAGE_PIN AA13 [get_ports {emio_tri_io[1]}]

3)生成bit文件

o4YBAGAKMtqAGZ_0AAAKb9wKyjA142.jpg

4)雖然說沒有用到PL端的邏輯,但是用到了PL端的引腳,因此導出硬件要選擇“Include bitstream”

pIYBAGAKMtuAKM4AAAA-hieL5ac016.jpg

軟件工程師工作內容

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

4. Vitis程序編寫

4.1 EMIO點亮PL端LED燈

下圖為GPIO的控制框圖,實驗中會用到輸出部分的寄存器,數據寄存器DATA,數據掩碼寄存器MASK_DATA_LSW,MASK_DATA_MSW,方向控制寄存器DIRM,輸出使能控制器OEN。

o4YBAGAKMtuAP2KEAACcPBmy4CE401.jpg

一開始編寫代碼可能會無從下手,我們可以導入Xilinx提供的example工程,在BSP里找到psu_gpio_0,點擊Import Examples

pIYBAGAKMtyAB3qiAACQ3p9J9I0714.jpg

在彈出窗口選擇“xgpiops_polled_example”,點擊OK

o4YBAGAKMtyAA0OpAABC5Y-aRuk730.jpg

會出現一個新的APP工程

pIYBAGAKMt2AcAqCAABP4OZjSjQ155.jpg

1)這個example工程是測試PS端MIO的輸入輸出的,由于LED是EMIO引出來的,EMIO的MIO號是從78開始的,需要在文件中修改Output_pin為78,測試LED燈。

o4YBAGAKMt2AJMexAABqZXAhHXc661.jpg

由于只測試LED燈,也就是輸出,我們把輸入功能注釋掉。保存文件。

pIYBAGAKMt2ACDJJAAAiCJ9vNLg001.jpg

2)編譯工程

o4YBAGAKMt6ACWrGAACpn1Dyeyw098.jpg

3)Run AsLaunch on Hardware(Single Application Debug),下載結束后,即可看到PS_LED快速閃爍16次

pIYBAGAKMt-AKLQXAADPP3pEjo0441.jpg

4)雖然用官方的例子比較方便,但是它的代碼看起來比較臃腫,我們可以通過學習它的方法,自己簡化寫一遍。我們新建一個APP工程。可以在空白處右鍵NewApplication Project。在ps_led_test的helloworld.c中修改。其實程序步驟很簡單,初始化GPIO設置方向輸出使能控制GPIO輸出值。

o4YBAGAKMuCAEZ-PAABThGV2JBs961.jpg

第一頁跳過

pIYBAGAKMuCAD603AACMtsm0KW4994.jpg

選擇硬件描述工程

o4YBAGAKMuGAQZEYAACWywyzuxU581.jpg

填入工程名稱,并選擇相應的CPU

pIYBAGAKMuGAb1cDAAB0n1uWP5Y450.jpg

下一步

o4YBAGAKMuKAZ5A0AABlY64AI-Q578.jpg

模板選擇Hellow World即可

o4YBAGAKMuKAUrezAABrNPb4nSE608.jpg

5)可以看到多了一個APP工程,仍然是基于名為standalone on psu_cortexa53_0的BSP,也就是一個Domain,與前面的example工程共用一個BSP

pIYBAGAKMuOAEGfGAAB7-AD1fUg588.jpg

6)可以將例程的代碼復制到helloworld.c中,保存并Build Project

o4YBAGAKMuOAMQl3AAA0GECnElM288.jpg

7)編譯并下載

pIYBAGAKMuOACav1AADLI3Z6tIw077.jpg

即可看到LED1閃爍。

4.2 EMIO實現PL端按鍵中斷

前面介紹了EMIO作為輸出控制LED燈,這里講一下利用EMIO作為按鍵輸入控制LED燈。

1)通過ug1085文檔看下GPIO的結構圖,中斷的寄存器:

INT_MASK:中斷掩碼

INT_DIS: 中斷關閉

INT_EN: 中斷使能

INT_TYPE: 中斷類型,設置電平敏感還是邊沿敏感

INT_POLARITY: 中斷極性,設置低電平或下降沿還是高電平或上升沿

INT_ANY: 邊沿觸發方式,需要INT_TYPE設置為邊沿敏感才能使用

設置中斷產生方式時需要INT_TYPE、INT_POLARITY、INT_ANY配合使用。具體寄存器含義請參考ug1085部分。

o4YBAGAKMtuAP2KEAACcPBmy4CE401.jpg

2)本實驗設計為按下按鍵LED燈亮,再按下LED滅。

主程序設計流程如下:

GPIO初始化設置按鍵和LED方向設置產生中斷方式設置中斷打開中斷控制器打開中斷異常打開GPIO中斷判斷KEY_FLAG值,是1,寫LED

中斷處理流程:

查詢中斷狀態寄存器判斷狀態清除中斷設置KEY_FLAG值

3)新建名為emio_key的工程,模板為hello world,拷貝例程的程序

o4YBAGAKMuSAVxW2AAApIJggpI4628.jpg

4)定義PS按鍵編號為79,PS LED為78

pIYBAGAKMuWAVgiOAAAZBG__7Ik597.jpg

5)在main函數中,設置LED和按鍵,將按鍵中斷類型設置為上升沿產生中斷。在本實驗中,即按鍵信號的上升沿產生中斷。

o4YBAGAKMuWAARJFAAAq4ApzeUU930.jpg

6)中斷控制器設置函數IntrInitFuntions是參考PS定時器中斷實驗所做,而下面的語句是設置中斷優先級和觸發方式。即操作ICDIPR和ICDICFR寄存器。

pIYBAGAKMuWAWkMRAAALVZjzd4o828.jpg

7)在中斷服務程序GpioHandler中,判斷中斷狀態寄存器,清除中斷,并將按鍵標志置1。

o4YBAGAKMuaASaGIAAASy8ZDBWs855.jpg

8)在main函數中,判斷按鍵標志key_flag,向LED寫入數據。

pIYBAGAKMuaATsVgAAAQSdr2-20856.jpg

9)編譯工程并下載程序,觀察實驗現象,按下KEY1,就可以控制LED1燈亮滅。

5. 固化程序

前面介紹過沒有FPGA加載文件情況下如何生成固化程序(詳情參考“體驗ARM,裸機輸出”Hello World”一章)。本章內容生成了FPGA的加載文件,在這里演示一下如何生成固化程序。

與前面一樣,也是點擊system,右鍵Build Project即可

o4YBAGAKMueAUqHWAABhQvj6GDA450.jpgpIYBAGAKMuiASs96AAAq2WUPNB0507.jpg

軟件會自動添加三個文件,第一個引導程序fsbl.elf,第二個為FPGA的bitstream,第三個為應用程序xx.elf,下載方法與前面一樣,不再贅述。

6. 引腳綁定常見錯誤

1)在block design設計中,比如下圖,GPIO模塊的引腳名設置為了leds和keys,很多人想當然的在XDC里按照這樣的名稱綁定引腳。

o4YBAGAKMumAV-FuAABiQ2F7rY0601.jpg

如果打開頂層文件就會發現引腳名稱是不一樣的,一定要仔細檢查,以頂層文件里的引腳名稱為準。

pIYBAGAKMuqAcU7RAABrGzFikcw470.jpg

否則就會出現以下引腳未綁定的錯誤

o4YBAGAKMuqAFn-mAACPfcApyxs012.jpg

2)如果是手寫XDC文件,切記注意空格,這也是非常常見的錯誤

pIYBAGAKMuqAX5zGAAAXQ1zS29E935.jpg

7. 本章小節

本章進一步學習了PS端的EMIO的使用,雖然將EMIO連接到了PL端的引腳上,但Vitis中的用法還是一樣的,從這個例子我們也可以看出,一旦與PL端發生了聯系,就需要生成bitstream,雖然幾乎沒有產生邏輯。

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

    關注

    1626

    文章

    21669

    瀏覽量

    601872
  • 按鍵
    +關注

    關注

    4

    文章

    223

    瀏覽量

    57572
  • GPIO
    +關注

    關注

    16

    文章

    1196

    瀏覽量

    51919
  • Zynq
    +關注

    關注

    9

    文章

    608

    瀏覽量

    47128
  • MPSoC
    +關注

    關注

    0

    文章

    198

    瀏覽量

    24252
收藏 人收藏

    評論

    相關推薦

    ZYNQ Ultrascale+ MPSOC FPGA教程】第二十九章PLAXI GPIO的使用

    使用zynq最大的疑問就是如何把PS和PL結合起來使用,在其他的SOC芯片中一般都會有GPIO,本實驗使用一個AXI GPIO的IP核,讓PS通過AXI總線控制PL
    的頭像 發表于 02-01 10:06 ?6686次閱讀
    【<b class='flag-5'>ZYNQ</b> <b class='flag-5'>Ultrascale+</b> <b class='flag-5'>MPSOC</b> <b class='flag-5'>FPGA</b>教程】<b class='flag-5'>第二十</b>九章PL<b class='flag-5'>端</b>AXI GPIO的使用

    如何調試Zynq UltraScale+ MPSoC VCU DDR控制器

      如何調試Zynq UltraScale+ MPSoC VCU DDR控制器  Zynq UltraScale+
    發表于 01-07 16:02

    如何調試Zynq UltraScale+ MPSoC VCU DDR控制器

    如何調試 Zynq UltraScale+ MPSoC VCU DDR 控制器?
    發表于 01-22 06:29

    ZYNQ Ultrascale+ MPSOC FPGA教程

    ZYNQ Ultrascale+ MPSOC FPGA教程
    發表于 02-02 07:53

    閑話Zynq UltraScale+ MPSoC(連載1)

    Zynq-7000,這款SoC功能顯得更加強勁:最顯著的變化是新加入了GPU和視頻編解碼器,PS的高速接口更加豐富。按照Xilinx官方的說法,Zynq
    發表于 02-08 08:24 ?726次閱讀
    閑話<b class='flag-5'>Zynq</b> <b class='flag-5'>UltraScale+</b> <b class='flag-5'>MPSoC</b>(連載1)

    閑話Zynq UltraScale+ MPSoC(連載5)

    作者:Hello,Panda Part3 I/O資源 和Zynq-7000相比較,Zynq UltraScale+ 增強了PS的IO性能;
    發表于 02-08 08:29 ?702次閱讀
    閑話<b class='flag-5'>Zynq</b> <b class='flag-5'>UltraScale+</b> <b class='flag-5'>MPSoC</b>(連載5)

    Xilinx基于ARM的Zynq-7000和Zynq UltraScale+ MPSoC及RFSoC器件是否存在安全漏洞

    本文試圖搞清楚在 Xilinx 基于 ARM 的 Zynq-7000、Zynq UltraScale+ MPSoCZynq
    發表于 06-28 15:53 ?2663次閱讀

    Zynq UltraScale+ MPSoC的發售消息

    Zynq?UltraScale+?MPSoC,現已開始發售。視頻向您重點介紹了Xilinx UltraScale +產品組合的第一位成員
    的頭像 發表于 11-27 06:47 ?3573次閱讀

    米爾科技Zynq UltraScale+ MPSoC技術參考手冊介紹

    Zynq UltraScale+ MPSoC是Xilinx推出的第二代多處理SoC系統,在第一代Zynq-7000的基礎上做了全面升級,在單
    的頭像 發表于 11-18 11:03 ?3136次閱讀
    米爾科技<b class='flag-5'>Zynq</b> <b class='flag-5'>UltraScale+</b> <b class='flag-5'>MPSoC</b>技術參考手冊介紹

    如何調試 Zynq UltraScale+ MPSoC VCU DDR 控制器?

    Zynq UltraScale+ MPSoC VCU DDR 控制器是一款專用 DDR 控制器,只支持在 Zynq UltraScale+
    發表于 02-23 06:00 ?15次下載
    如何調試 <b class='flag-5'>Zynq</b> <b class='flag-5'>UltraScale+</b> <b class='flag-5'>MPSoC</b> VCU DDR 控制器?

    米爾電子zynq ultrascale+ mpsoc底板外設資源清單分享

    米爾電子推出的國內首款zynq ultrascale+ mpsoc平臺核心板(及開發板):MYC-CZU3EG吸引了人工智能、工業控制、嵌入式視覺、ADAS、算法加速、云計算、有線/無線通信等
    發表于 01-07 15:20 ?3次下載
    米爾電子<b class='flag-5'>zynq</b> <b class='flag-5'>ultrascale+</b> <b class='flag-5'>mpsoc</b>底板外設資源清單分享

    ZYNQ Ultrascale+ MPSoC系列FPGA芯片設計

    基于 Xilinx 公司ZYNQ Ultrascale+ MPSoC系列 FPGA 芯片設計,應用于工廠自動化、機器視覺、工業質檢等工業領域
    發表于 11-02 14:35 ?1555次閱讀

    Zynq UltraScale+ MPSoC中的隔離方法

    電子發燒友網站提供《Zynq UltraScale+ MPSoC中的隔離方法.pdf》資料免費下載
    發表于 09-13 17:11 ?1次下載
    <b class='flag-5'>Zynq</b> <b class='flag-5'>UltraScale+</b> <b class='flag-5'>MPSoC</b>中的隔離方法

    Zynq UltraScale+ MPSoC的隔離設計示例

    電子發燒友網站提供《Zynq UltraScale+ MPSoC的隔離設計示例.pdf》資料免費下載
    發表于 09-13 11:28 ?3次下載
    <b class='flag-5'>Zynq</b> <b class='flag-5'>UltraScale+</b> <b class='flag-5'>MPSoC</b>的隔離設計示例

    Zynq UltraScale+ MPSoC驗證數據手冊

    電子發燒友網站提供《Zynq UltraScale+ MPSoC驗證數據手冊.pdf》資料免費下載
    發表于 09-15 10:13 ?0次下載
    <b class='flag-5'>Zynq</b> <b class='flag-5'>UltraScale+</b> <b class='flag-5'>MPSoC</b>驗證數據手冊