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

2020-12-23 電子發燒友

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

Mculover666 發表於 2020-12-20 12:12:12

作者:Mculover666

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

實時性是一個嵌入式系統很重要的性能,實時性體現在一個系統對外部事件的響應能力和處理能力上,而CPU對一個事件的響應及處理主要依託於 —— 中斷。

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

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

在上圖中只是一個中斷信號,那麼當這個系統中存在很多中斷信號時,群龍無首,整個系統就會亂套,CPU會像一隻無頭蒼蠅一樣到處去執行中斷服務程序,結果可想而知,最後CPU肯定什麼也幹不了~

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

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

總結一下中斷的編程思路:

配置外設可以產生中斷信號

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

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

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

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

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

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

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

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

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

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

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

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

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

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

 

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

運行即可觀察到現象。

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

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

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

生成Bitstream,導出硬體文件

編輯:hfy

打開APP閱讀更多精彩內容

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

相關焦點

  • PYNQ案例(二):ZYNQ與PYNQ的區別與聯繫
    打開APP PYNQ案例(二):ZYNQ與PYNQ的區別與聯繫 Pynq 發表於 2020-12-25 14:15:48 Zynq
  • ZYNQ Linux作業系統移植四個部分說明文檔
    針對內核的修改位於 arch/arm/configs/xilinx_zynq_defconfig文件中,該文件中定義了內核所包含的驅動程序。 1、調試輸出列印 在xilinx_zynq_defconfig中,需要根據硬體設計正確配置串口列印。
  • 通過Python 執行複雜的PYNQ 框架方案
    直接在 Zynq SoC 架構上利用 Python 的生產力優勢,用戶能夠充分發揮可編程邏輯和微處理器的長處,更容易為人工智慧、機器學習和信息技術應用構建設計。 摘要 從工程設計、科研、數據科學、機器學習、信息技術到人工智慧,Python 開源程式語言已經成為各類應用中的不成文標準。
  • FPGA 101:如何在Zynq SoC上使用中斷
    GIC可處理源自以下方面的中斷:I/O外設通用設置應用處理器單元(APU)系統級控制寄存器窺探控制單元64b AXIACP從系統512KB L2 高速緩存與控制器埠FLASH 存儲器接口中央互聯DMA8存儲器接口 通道CoreSightDR2/3,LPDDR2控制器 SMC
  • 編程&創客工具及應用分解
    課程按照學習方式分成兩種不同類別,網際網路引導式學習和案例式學習。網際網路引導式學習,他實際上很像闖關遊戲,完成一個任務,再完成另外一個任務。比較知名的是code.org,Blockly games。案例式的講解,這種大部分是以應用軟體的應用為學習方向。比較出名的有scratch、Blockly、Blockly for arduino,編程貓。
  • 玩轉賽靈思Zedboard開發板(3):基於Zynq PL的流水燈
    41   電子發燒友網核心提示:ZedBoard開發板上的Zynq是一個ARM PS(processing system, 雙核A9 + 存儲管理 + 外設)+ PL(programable Logic) 結構,如果不使用PL,zynq
  • 學習三菱PLC編程入門應先學習什麼?想學習三菱PLC的朋友一定要看的入門第一課
    ,如果學習三菱PLC編程入門應先學習什麼?新手編程入門應該先學習三菱PLC編程與應用入門 ,主要內容包括三菱FX系列PLC的數字電路基礎、了解PLC、編程基礎、軟體使用、基本指令系統和程序編制、定時器和計數器等入門知識。要注意的是,學習PLC編程應具備一定的電工基礎知識,如果沒有這方面知識,可以先學習一定的電工基礎知識。
  • 信息學奧賽編程集訓0815班第21課學生編程作品
    主要應用到引用頭文件、命名空間、主函數、變量定義與應用、隊列數據結構、if.else if.else語句、while語句、數組定義與應用、宏定義、標準輸入、標準輸出等編程技巧。 【編程技術】 編寫該程序應用到的編程技術有以下: 引用頭文件 命名空間 主函數 變量定義與應用 隊列數據結構
  • Qorvo宣布推出新一代多重時間可編程電源管理IC
    內置的可配置性可加快固態硬碟、視頻設備、路由器、行動裝置和物聯網設備的上市時間 移動應用、基礎設施與航空航天、國防應用中 RF 解決方案的領先供應商 Qorvo, Inc. ACT88327/8/9/1 PMIC 系列有多個 GPIO,可根據不同功能和用途進行配置,如中斷、復位、外部使能、外部 PG、穩壓器開/關、DVS、VID、睡眠/深度睡眠模式、功率回收以及按鈕。此外,它們還支持兩級輸入電壓監測。PMIC 系列中的其他可配置選項還包括啟動時間、壓擺率、系統級時序、切換頻率、睡眠模式和工作模式。
  • 從ZYNQ晶片架構談談其為何如此誘人
    來源:嵌入式客棧[導讀] 基於ZYNQ實現複雜嵌入式系統非常便利,其應用領域也越來越廣泛,本文來從對ZYNQ晶片架構的理解來談談個人體會。俯瞰zynqZYNQ主要由兩大部分組成:處理系統PS(Processing System):上圖左上部分即是PS部分,包括:同構雙核ARM Cortex A9的對稱多處理器 (Symmetric Multi-Processing,SMP)豐富的外設,2×SPI,2×I2C,2×CAN,2×UART,2×SDIO,2×USB,2×
  • FPGA Xilinx Zynq 系列(一)
    Zynq 晶片致力於成為靈活的、能用於各種應用的強有力的平臺,就像鋅元素可以與各種其他金屬混合形成具有各種所需屬性的合金一樣。Zynq 的本質特徵,是它組合了一個雙核 ARM Cortex-A9 處理器和一個傳統 的現場可編程門陣列 (Field Programmable Gate Array,FPGA)邏輯部件。
  • 想自學Python編程,卻沒有系統的學習思路?來,讓我教你
    很多朋友想自學Python編程,卻沒有一個系統的學習思路,所以我整理了一份完整的自學知識點清單,希望能夠幫助想學編程、學Python的朋友們,建立起系統的思維和學習框架!文章有點長,建議轉發評論留下你的印記,方便時常觀看噢~對編程感興趣,對Python感興趣,可以關注我噢·~私信發送「獲取」,更可以免費獲得Python學習資料~
  • 凹圓弧的三種宏程序編程思路案例
    圓弧編程在數控加工中經常遇到,如果是想採用宏程序來完成該圓弧的程序編制與加工的話,可以將其作為一個用戶子程序,今後可以直接採用G65調用,因此,本文就以一個凹圓弧為例來講解一下三種宏程序的編制思路,零件圖如下!
  • 全可編程異構多處理SoC——Zynq UltraScale+MPSoC詳細評測
    、自動駕駛及物聯網等新興應用的發展,圖像處理、AI算法加速、軟體無線電等複雜多任務設計越來越挑戰嵌入式平臺的處理能力。置於包含通用實時處理器和可編程邏輯的平臺上,三個不同變體包括雙應用處理器 (CG) 器件、四核應用處理器和 GPU (EG) 器件、以及視頻編解碼器 (EV) 器件, 為 5G 無線、下一代 ADAS 和工業物聯網創造了無限可能性。 MYD-CZU3EG開發套件目前搭載的是EG器件,後期還可以選配CG或EV器件。
  • xilinx zynq RapidIO系統的初始化啟動過程概述
    《RapidIO The Embedded System Interconnect》 xilinx手冊pg007《Serial RapidIO Gen2 Endpoint v4.1 LogiCORE IP Product Guide》 Zynq-Linux移植學習筆記之14-RapidIO驅動開發 host初始化
  • 專業解讀PLC編程中斷的原理和用法
    plc這樣理解中斷功能,在理解中斷時,首先要清楚plc的運算周期或者說是掃描周期,有必要說下plc順控循環執行的流程,這是理解中斷的前提,必須要掌握,分為三部分,輸入處理、程序處理、輸出處理、 1、輸入處理,可編程控制器在執行程序前,將可編程控制器的所有輸入端子的ON/OFF狀態讀入輸入映像區
  • 自學編程必看!Python學習5點思路(內附思維導圖)
    越來越多的人,都想加入到編程的行業中。如果說你現在已經有了想學習編程的想法,那麼接下來我們就談談如何去學習編程。小會在這裡為大家提供一個Python學習思路:1、了解編程基礎概念首先要對計算機有個基本的認識,了解編程基礎概念及用編程解決現實問題的基本流程。
  • 機器學習、深度學習算法原理與案例實踐暨Python大數據綜合應用...
    原標題:機器學習、深度學習算法原理與案例實踐暨Python大數據綜合應用高級研修班通信和信息技術創新人才培養工程項目辦公室 通人辦〔2018〕 第5號 機器學習、深度學習算法原理與案例實踐暨Python
  • javascript 異步編程
    在同步編程,代碼基本上自上向下執行,在異步編程,一些代碼就要寫到回調函數中,如果代碼之間存在依賴,回調函數套回調函數的情況也不少見,這種套嵌結構對以後的維護來說簡直是地獄。還有一種我們不得不面對的情況,try...catch無法捕捉幾毫秒之後發生的異常。
  • 第二章 PYNQ初體驗
    (關於如何製作一個PYNQ鏡像,可以參考官網相關教程,本教程不提供鏡像製作方法)為了方便後面進行管理和維護,筆者在G盤符下新建了一個名為「pynq」的目錄。