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

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

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

PYNQ學習案例——Zynq中斷應用及編程思路

454398 ? 來源:CSDN 博主 ? 作者:Mculover666 ? 2020-12-20 12:12 ? 次閱讀

作者:Mculover666

在實際玩Zynq中斷之前,先扯一扯中斷這個神奇的東西~

實時性是一個嵌入式系統(tǒng)很重要的性能,實時性體現(xiàn)在一個系統(tǒng)對外部事件的響應能力和處理能力上,而CPU對一個事件的響應及處理主要依托于 —— 中斷。

通俗的來說,中斷的一個基本過程就是:當一個事件發(fā)生時(比如按鍵按下),產(chǎn)生一個可以發(fā)送到CPU的中斷信號(上升沿或下降沿無所謂,是個信號就行),當CPU接收到這個中斷信號后,對這個中斷信號所表示的事件進行處理(跳轉(zhuǎn)去執(zhí)行中斷服務程序,對按鍵按下這個事件進行處理)。

對這個基本過程抽象出來一個中斷系統(tǒng)模型如圖所示:

pIYBAF9uG8-AZ8x5AAA14JbL5GY860.png

在上圖中只是一個中斷信號,那么當這個系統(tǒng)中存在很多中斷信號時,群龍無首,整個系統(tǒng)就會亂套,CPU會像一只無頭蒼蠅一樣到處去執(zhí)行中斷服務程序,結(jié)果可想而知,最后CPU肯定什么也干不了~

為了解決這個問題,需要派一個領導去管理這些各種各樣的中斷,這個管理者就是 —— 中斷管理單元!所以,它只有一個功能 —— 管理這些中斷信號!比如使能與失能 —— 讓哪個中斷信號通過或者讓哪些信號不通過;“優(yōu)先級” —— 誰先通過誰后通過,改進模型如下圖:

o4YBAF9uG9GAYuULAABuv0SDfA8527.png

這樣一來,CPU永遠只能接收到一個中斷信號,所以CPU可以很舒服的去做他該做的事情了~

總結(jié)一下中斷的編程思路:

配置外設可以產(chǎn)生中斷信號

配置中斷管理單元,使能信號通過,( 配置信號優(yōu)先級 )

配置中斷服務程序 ,確保CPU接收到中斷信號可以及時處理

接下來依托這個抽象的中斷模型玩一玩Zynq的中斷,具體化這個模型~

1.實驗目的
探索Zynq中PL->PS的中斷,按下按鍵產(chǎn)生一個中斷,這個中斷被通用中斷管理單元所處理,然后傳遞給Zynq PS,將變量值遞增然后將值顯示在led上。

pIYBAF9uG9KAflbCAACerzGidfo465.png

2.實驗步驟
2.1.新建基于Pynq-Z2的工程
2.2.創(chuàng)建硬件塊設計
2.2.1.添加所用ip并自動連線
添加兩個AXI_GPIOip核,一個連接板載4個按鈕,一個連接板載4個led

o4YBAF9uG9eAE7OjAAYZVKlzrQg500.png

2.2.2.配置AXI_GPIO使能中斷
這里因為4個按鍵是連接在axi_gpio_0上的,所以雙擊axi_gpio_0 ip核進行配置,如圖,選擇使能中斷:

pIYBAF9uG9mANlpQAACryYB4UbM445.png

可以看到與未配置中斷的axi_gpio_1有區(qū)別:

o4YBAF9uG9uAfIeLAAB7KVkm6Aw280.png

2.2.2.配置Zynq PS系統(tǒng)接收中斷請求
在配置之前需要對Zynq中的中斷信號有個大致的了解,其中PS和PL之間的中斷信號如表所示:

pIYBAF9uG92ALQjVAAFFj6v43UM351.png

根據(jù)上圖,雙擊zynq ip核進行配置,因為這里需要接收的按鍵中斷是從PL端到PS端的,首先選中Fabric Interrupts中斷組織,然后選中IRQ_F2P[15:0],使能16-bit的PL->PS共享中斷端口,以便于來自PL端的中斷可以連接到PS的中斷控制器上:

pIYBAF9uG9-AC_KNAAFA9H-88Lk806.png

2.2.3.連接AXI_GPIO的中斷請求和PS的中斷端口
手動進行連線:

pIYBAF9uG-SAUOknAAVpTgf4rjA222.png

2.3.驗證設計,創(chuàng)建HDL文件,生成Bitstream,導出硬件設計文件
至此,中斷信號的硬件數(shù)據(jù)通路構(gòu)建完成,接下來是軟件中配置中斷管理單元和中斷服務程序。

2.4.過渡到SDK上的軟件設計
2.4.1.Launch SDK

o4YBAF9uG-aADL51AAFz03DyxUI076.png

2.4.2.新建一個空的應用工程

pIYBAF9uG-iAOfE8AAGVqZ6S9WM154.png

2.4.3.導入已有C文件
因為在實際項目中需要分工協(xié)作,所以這里選擇導入隨書附帶的C文件:

o4YBAF9uG-uAD1yBAAG-p3GYF7E430.png

pIYBAF9uG-yAPIMDAACgIOXJMbU840.png

2.4.4.配置運行設置,板級驗證

o4YBAF9uG-6AQSK0AAFEpbKxXJE092.png

運行即可觀察到現(xiàn)象。

2.添加定時器中斷
2.1.實驗目的
在已有一個按鍵中斷的基礎上,添加一個定時器中斷,掌握添加多個中斷到PS的方法。

2.2.實驗步驟
2.2.1.添加AXI Timer IP核并自動連線
添加時搜索"timer",選擇AXI Timer添加,然后點擊自動連線,結(jié)果如圖:

o4YBAF9uG_CAQOh4AADJLh0Bd40553.png

2.2.2.連接AXI Timer的中斷到PS端
因為PS端的共享中斷接口已經(jīng)連接了一個AXI GPIO中斷,所以如果要繼續(xù)連接一個中斷信號,要通過一個另外的ip核 —— Concat,在添加ip核時搜索添加,如圖所示,將之前AXI GPIO 到ps的中斷斷開,然后將concat的dout信號連至PS端的IRQ_F2P[0:0],然后將AXI GPIO的中斷信號連接至In0,將定時器的中斷信號連接至In1,這樣就完成了多個中斷信號的共享。

pIYBAF9uG_GAan5WAABiZlsRGQE205.png

生成Bitstream,導出硬件文件

編輯:hfy

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

    關注

    41

    文章

    3551

    瀏覽量

    129104
  • cpu
    cpu
    +關注

    關注

    68

    文章

    10804

    瀏覽量

    210829
  • Zynq
    +關注

    關注

    9

    文章

    607

    瀏覽量

    47101
收藏 人收藏

    評論

    相關推薦

    通過Python 執(zhí)行復雜的PYNQ 框架方案

    作者:Giulio Corradi 博士 賽靈思? PYNQ 框架能在 Zynq? 產(chǎn)品系列中實現(xiàn)對Python 語言及運行時的全面支持與集成。直接在 Zynq SoC 架構(gòu)上利用 Python
    的頭像 發(fā)表于 12-22 15:37 ?4038次閱讀
    通過Python 執(zhí)行復雜的<b class='flag-5'>PYNQ</b> 框架方案

    PYNQ項目——Pynq開發(fā)板啟動實驗

    Python降低Zynq嵌入式系統(tǒng)開發(fā)門檻,有豐富的組件: 可編程邏輯的控制 Jupyter Notebook接口 預安裝的Python庫 網(wǎng)絡/USB/UART接口 要使用Pynq,需要Py
    的頭像 發(fā)表于 12-23 10:58 ?3689次閱讀

    PYNQ案例(一):ZYNQ的PL與PS開發(fā)

    上一期的學習中,我們系統(tǒng)性地介紹了PYNQZYNQ地區(qū)別與聯(lián)系。PYNQ = Python + ZYNQ,即將
    的頭像 發(fā)表于 12-25 14:11 ?7916次閱讀

    PYNQ案例(二):ZYNQPYNQ的區(qū)別與聯(lián)系

    方法,軟件編程模式與全功能的標準ARM處理SoC毫無二致。 與之相關和不同的是,PYNQ = Python + ZYNQ,即將ZYNQ部分功能的Python化,直接調(diào)用Python庫和
    的頭像 發(fā)表于 12-25 14:15 ?5856次閱讀

    基于PYNQ-Z2開發(fā)板的PYNQ開源項目

    PYNQ項目是一個新的開源框架,使嵌入式編程人員在無需設計可編程邏輯電路的情況下充分發(fā)揮Xilinx Zynq All Programmable SoC(APSoC)的功能。 與常規(guī)方
    的頭像 發(fā)表于 01-02 09:02 ?6386次閱讀
    基于<b class='flag-5'>PYNQ</b>-Z2開發(fā)板的<b class='flag-5'>PYNQ</b>開源項目

    如何為自己的ZYNQ板卡創(chuàng)建Pynq鏡像

    Xilinx Pynq 框架允許我們將 Python 和可編程邏輯結(jié)合起來。讓我們看看如何為自己的ZYNQ板卡創(chuàng)建 Pynq 鏡像。
    發(fā)表于 08-07 09:26 ?1655次閱讀
    如何為自己的<b class='flag-5'>ZYNQ</b>板卡創(chuàng)建<b class='flag-5'>Pynq</b>鏡像

    賽靈思PYNQ-Z2開發(fā)板免費試用

    PYNQ-Z2 開發(fā)板支持 PYNQ 項目,這是一個新的開源框架,使嵌入式編程人員能夠在無需設計可編程邏輯電路的情況下即可充分發(fā)揮 Xilinx Z
    發(fā)表于 12-05 15:29

    PYNQ-Z2申請】基于pynq的語音識別和新聞報道系統(tǒng)

    項目名稱:基于pynq的語音識別和新聞報道系統(tǒng)試用計劃:申請理由本人在Zynq如那件無線電方向有三年多的學習和開發(fā)經(jīng)驗,曾設計過基于ZYNQ 7020的頻譜監(jiān)測和室內(nèi)定位平臺,對DMA
    發(fā)表于 12-19 11:38

    PYNQ-Z2試用體驗】玩轉(zhuǎn)PYNQ系列:一、板卡簡介與資源整理

    PYNQ-Z2試用活動不期而遇,亦是緣分。 接下來進入正題。一、PYNQ簡介 PYNQ 是一個開源框架,目標是使嵌入式編程人員能夠在無需設計可編程
    發(fā)表于 12-31 10:53

    什么是PYNQ?

    什么是PYNQ?PYNQ就是通過Python語言直接對FPGA進行編程嗎?PYNQPYNQ-Z2是一回事嗎?
    發(fā)表于 02-24 07:02

    ZYNQ學習筆記分享

    通過MIO(Multiuse I/O)模塊對器件的引腳做觀測(input)和控制(output)。ZYNQ的PS端上的GPIO也可以通過EMIO(Extra MIO)模塊對PL端的IP以及引腳實現(xiàn)上述操作。GPIO可以獨立且動態(tài)地編程,作為輸入/輸出以及
    發(fā)表于 02-08 07:30

    PYNQ 基于Zynq架構(gòu)添加了對python的支持

    中集成了ARM處理器和FPGA可編程邏輯器件,旨在為視頻監(jiān)視、汽車駕駛員輔助以及工廠自動化等高端嵌入式應用提供所需的處理與計算性能水平。PYNQ希望能夠借助python語言本身易用易學、擴展庫多而全、社區(qū)活躍貢獻度高等特性,有效降低Zy
    發(fā)表于 07-14 09:05 ?8808次閱讀
    <b class='flag-5'>PYNQ</b> 基于<b class='flag-5'>Zynq</b>架構(gòu)添加了對python的支持

    digilent支持Python編程Zynq開發(fā)板介紹

    PYNQ-Z1開發(fā)板支持PYNQ項目,這是一個新的開源框架,使嵌入式編程人員能夠在無需設計可編程邏輯電路的情況下即可充分發(fā)揮Xilinx Zynq
    的頭像 發(fā)表于 11-18 16:41 ?3471次閱讀
    digilent支持Python<b class='flag-5'>編程</b>的<b class='flag-5'>Zynq</b>開發(fā)板介紹

    米爾PYNQ開發(fā)板來了

    PYNQ全稱為Python Productivity for Zynq,即在Zynq全可編程ARM&FPGA融合處理架構(gòu)的基礎上,添加了對Python的支持。
    發(fā)表于 03-26 10:15 ?925次閱讀

    使用Tensil和PYNQPYNQ Z1 FPGA板上運行機器學習

    電子發(fā)燒友網(wǎng)站提供《使用Tensil和PYNQPYNQ Z1 FPGA板上運行機器學習.zip》資料免費下載
    發(fā)表于 06-14 11:44 ?0次下載
    使用Tensil和<b class='flag-5'>PYNQ</b>在<b class='flag-5'>PYNQ</b> Z1 FPGA板上運行機器<b class='flag-5'>學習</b>