AXI GPIO IP核配置詳解

AXI GPIO(AXI General-Purpose Input/Output)設計提供了一個通用的輸入/輸出接口,該接口連接到一個AXI4-Lite接口。AXI GPIO可以被配置為單通道或雙通道設備,每個通道的位寬可以獨立配置。

端口(即GPIO引腳)可以通過啟用或禁用三態緩沖器來動態配置為輸入或輸出。這些通道還可以配置為當它們的任何一個輸入發生轉變時生成中斷。

1? 功能

AXI GPIO IP核的頂層框圖(如下圖所示)通常包含幾個關鍵模塊,這些模塊協同工作以實現其通用輸入/輸出功能。

以下是根據通常的AXI GPIO設計對頂層框圖的簡要描述:

AXI4-Lite接口

AXI4-Lite是AXI協議的一個子集,特別適用于需要簡單、輕量級通信的場景。在這個設計中,AXI4-Lite接口模塊作為一個從設備(slave)實現,提供32位的數據通道,允許主設備(如處理器或控制器)通過AXI4-Lite協議訪問GPIO通道寄存器。這些寄存器用于控制GPIO通道的配置、輸入/輸出狀態等。

中斷控制

負責從GPIO通道獲取中斷狀態,并在滿足條件時向主機生成中斷信號。當中斷使能選項在Vivado集成設計環境(IDE)中設置時,中斷控制模塊將被啟用。這樣,當GPIO通道的輸入發生變化時,中斷控制模塊可以檢測到這種變化,并生成一個中斷信號通知主機。主機可以響應這個中斷信號,執行相應的中斷處理程序。

GPIO 核

GPIO核包含用于讀寫AXI GPIO通道寄存器的寄存器和多路復用器。這些寄存器用于存儲GPIO通道的配置信息、輸入/輸出狀態等。多路復用器用于在讀取或寫入操作時選擇正確的寄存器。此外,GPIO核還包括必要的邏輯來識別當通道輸入發生變化時的中斷事件。

上圖中的三態緩沖器(3-state buffers)并不是GPIO核的一部分。這些三態緩沖器是在使用Vivado設計套件生成輸出產品時自動添加到頂層設計包裝文件中的。它們用于控制GPIO引腳的輸入/輸出狀態,并提供與外部電路的接口。

2 配置

(1)打開一個工程或生成一個新的工程;

(2)如下圖所示,找到AXI GPIO IP核;

(3)?雙擊IP,或從工具欄或右鍵菜單中選擇“Customize IP”命令,打開該IP核的配置頁。

GPIO

All Inputs

  • 功能:將所有GPIO通道位設置為輸入模式。當選中此選項時,所有相關的GPIO引腳都將被配置為接收外部信號,而不是發送信號。
  • 默認狀態:此選項是未選中的(unchecked),意味著GPIO通道位不會默認被配置為輸入模式。

All Outputs

  • 功能:將所有GPIO通道位設置為輸出模式。當選中此選項時,所有相關的GPIO引腳都將被配置為發送信號到外部設備,而不是接收信號。
  • 默認狀態:此選項是未選中的(unchecked),意味著GPIO通道位不會默認被配置為輸出模式。

GPIO Width

  • 功能:定義了GPIO通道的位寬,決定了GPIO IP核可以管理的GPIO引腳數量。例如,如果GPIO Width設置為8,那么GPIO IP核就可以控制8個GPIO引腳。
  • 默認狀態:其值可以從1到32,默認值是32。

Default Output Value

  • 功能:設置此通道所有啟用位的默認值。當GPIO引腳被配置為輸出模式時,這個值決定了它們在上電或復位后的初始狀態。例如,如果Default Output Value設置為0xFF(8位模式),那么所有GPIO引腳在上電后都將輸出高電平。
  • 默認狀態:此參數設置為0x0(即所有位都是0)。

Default Tri State Value

  • 功能:配置了GPIO通道每個位的輸入或輸出模式。這里的“Tri State”可能指的是GPIO引腳的初始狀態或默認模式,其中“0”代表輸出模式,“1”代表輸入模式。但具體實現可能因不同的IP核而異。
  • 默認狀態:這個字段的值為0xFFFFFFFF,將所有GPIO位配置為輸入模式。

Enable Dual Channel

  • 功能:啟用第二個GPIO通道(GPIO2),當此參數被啟用時,GPIO2選項被激活,并配置Channel-2 (GPIO2)寄存器。允許使用同一個AXI GPIO IP核來控制兩個獨立的GPIO通道。這在需要管理大量GPIO引腳時特別有用。
  • 默認狀態:此參數是未選中的,將AXI GPIO配置為單通道模式。

GPIO2

僅在“Enable Dual Channel”被選中時激活。此參數組中的所有字段都與GPIO選項組相似。

當啟用雙通道模式時,可以為第二個GPIO通道(GPIO2)配置與第一個通道相同的參數,如GPIO Width、Default Output Value等。

Enable Interrupt

啟用了GPIO模塊中的中斷控制邏輯和中斷寄存器。默認情況下,此選項是未選中的,即中斷未被啟用。

當希望GPIO引腳能夠產生中斷信號以通知處理器或控制器外部事件時,需要啟用此選項。一旦啟用,可以配置GPIO引腳在特定條件下產生中斷,例如輸入電平變化或超時等。

3 編程序列

當啟用中斷時的輸入端口

(1)配置端口為輸入

? ? ? ? ?將GPIOx_TRI寄存器中對應的位寫入1,以將端口配置為輸入模式。

(2)啟用通道中斷

? ? ? ? 通過設置IP中斷使能寄存器中對應的位來啟用該通道的中斷,同時,也需要通過設置全局中斷寄存器(通常是某個處理器或微控制器的寄存器)的第31位為1來啟用全局中斷。

(3)接收并處理中斷

? ? ? ?① 當接收到中斷時,讀取GPIOx_DATA寄存器中對應的位,以獲取輸入值。

? ? ? ②清除IP中斷狀態寄存器中對應的中斷狀態位,通過將對應位寫入1來實現。這通常是中斷服務程序(ISR)的一部分。

當未啟用中斷時的輸入端口

(1)配置端口為輸入

? ? ? ?將GPIOx_TRI寄存器中對應的位寫入1,以將端口配置為輸入模式。

(2)讀取輸入值

? ? ? ?直接讀取GPIOx_DATA寄存器中對應的位,以獲取輸入值。

輸出端口

(1)配置端口為輸出

? ? ? ?將GPIOx_TRI寄存器中對應的位寫入0,以將端口配置為輸出模式。

(2)寫入輸出值

? ? ? ?將要輸出的值寫入GPIOx_DATA寄存器中對應的位。這會將該值輸出到對應的GPIO引腳上。

注意事項

  • 確保在嘗試訪問GPIOx_TRI或GPIOx_DATA寄存器之前,AXI GPIO IP核已經正確配置并初始化。
  • 當配置GPIO端口時,請確保不要同時將其配置為輸入和輸出,這可能會導致未定義的行為。
  • 當啟用中斷時,請確保系統(例如處理器或微控制器)可以正確地處理這些中斷,并有一個有效的中斷服務程序來清除中斷狀態位并處理中斷事件。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/12638.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/12638.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/12638.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

學習java第七十天

Spring 的常用注解? Required:該注解應用于設值方法 Autowired:該注解應用于有值設值方法、非設值方法、構造方法和變量。 Qualifier:該注解和Autowired 搭配使用,用于消除特定 bean 自動裝配的歧義 Spring的事務傳播行為有哪…

02-WPF_基礎(一)

1、基礎 各模塊類型 鏈接:如何:向 Viewbox 的內容應用 Stretch 屬性 - WPF .NET Framework | Microsoft Learn WPF基礎以及事件綁定與數據綁定的情況,,在學習XAML,數據結構以及一個項目學習平臺來練手,網絡…

兒童社交恐懼:關愛與引導,幫助孩子走出陰霾

引言 兒童的社交能力是其心理健康和全面發展的重要組成部分。然而,有些兒童會表現出社交恐懼,這種情況不僅影響他們的日常生活和學習,還可能對其長遠發展產生不利影響。本文將探討兒童社交恐懼的注意事項,并提供實用的建議和方法…

jvm故障定位

? cpu使用率低負載高,原因分析-----舉例命令排查過程 原因:大量線程io阻塞。 建議從以下幾個方面排查代碼問題: 1、是否有內存泄露導致頻繁GC 2、是否有死鎖發生 3、是否有大字段的讀寫 4、會不會是數據庫操作導致的,排查SQL語…

百面算法工程師 | YOLOv6面試考點原理全解析

本文給大家帶來的百面算法工程師是深度學習目標檢測YOLOv6面試總結,文章內總結了常見的提問問題,旨在為廣大學子模擬出更貼合實際的面試問答場景。在這篇文章中,我們還將介紹一些常見的深度學習目標檢測面試問題,并提供參考的回答…

壓力給到 Google,OpenAI 發布 GPT-4o 來了

北京時間5月14日凌晨1點,OpenAI 開啟了今年的第一次直播,根據官方消息,這次旨在演示 ChatGPT 和 GPT-4 的升級內容。在早些時候 Sam Altman 在 X 上已經明確,「我們一直在努力開發一些我們認為人們會喜歡的新東西,對我…

jar包安裝成Windows服務

一、前言 很多年前寫過一篇《使用java service wrapper把windows flume做成服務》的文章,也是把jar包安裝成windows服務,今天介紹另外一種更簡便的方案。 二、正片 這次使用的工具是 winsw,一個Windows服務包裝器。下面看詳細介紹 首先從g…

momentjs

Moment.js 是一個用于處理日期和時間的 JavaScript 庫,它提供了許多方便的函數和方法來操作、格式化和解析日期時間。官網 常見用法 格式化日期時間:可以使用format方法將日期時間格式化為指定的字符串格式,例如YYYY-MM-DD HH:mm:ss。獲取日…

中國CEO直播簡史

圖片|電影《教父》截圖 ©自象限原創 作者丨羅輯 編輯丨程心 領導人愛對外發言這事,是中國的一個傳統文化。 從乾隆愛往名畫上蓋章上,就可見一斑。 3Q大戰時代,微博成了大佬“吵架”的戰場,飯否變成了部分愛…

解釋Java中的動態代理(Dynamic Proxy)及其用例

在Java中,動態代理(Dynamic Proxy)是一種在運行時動態創建代理類和對象的機制。它允許你在不改變原有類代碼的前提下,通過代理類對原有類的方法增加額外的處理邏輯(如安全檢查、事務處理、日志記錄等)&…

在為法人主體添加平衡段值時選不到相應的平衡段值

1、在為H1038公司添加平衡段值時,值集列表中無法選到需要的平衡段值,進一步對其后臺取值邏輯進行分析 SELECT *FROM (SELECT FLEXVALUES.FLEX_VALUE, FLEXVALUES.DESCRIPTIONFROM FND_FLEX_VALUES_VL FLEXVALUESWHERE FLEXVALUES.FLEX_VALUE_SET_ID :1…

Digimat在電池殼體SMC復合材料成型工藝中的應用

SMC工藝介紹及挑戰 SMC(Sheet Molding Compound的縮寫,即片狀模塑料)是一種復合材料制造工藝。該工藝可以有效地代替金屬,實現車輛輕量化目標。該工藝不僅能夠顯著降低車身重量,而且設計靈活,操作簡單、易…

社交媒體的探索者:探尋Facebook的發展歷程

在當今數字化時代,社交媒體已經成為了人們日常生活中不可或缺的一部分,而Facebook作為最具影響力的社交平臺之一,其發展歷程承載著無數的探索與創新。本文將深入探討Facebook的發展歷程,從其創立初期到如今的全球化影響&#xff0…

第 8 章 機器人底盤Arduino端電機驅動(自學二刷筆記)

重要參考: 課程鏈接:https://www.bilibili.com/video/BV1Ci4y1L7ZZ 講義鏈接:Introduction Autolabor-ROS機器人入門課程《ROS理論與實踐》零基礎教程 8.4.4 底盤實現_03Arduino端電機驅動 自定義電機驅動的實現與上一節的編碼器驅動流程類似: ROSA…

終于知道公司薪資為什么保密了!無意中拿到了部門薪資列表,自己身為小組長,只有28k,手下好幾個35k左右,心態崩了

大家好,我是瑤琴呀。 一直以來,員工不能私下談論薪資是職場公開的規定,入職的時候,HR 也會要求每個員工在保密薪資文件上簽字。 記得在大學上職業規劃課的時候,當時老師就給我們講過一個案例,公司里小李和…

數據結構與算法學習筆記九---循環隊列的表示和實現(C++)

目錄 前言 1.為什么要使用循環隊列 2.隊列的順序存儲方式的實現 1.定義 2.隊列初始化 3.銷毀 4.清空隊列 5.隊列是否為空 6.隊列長度 7.隊頭 8.入隊 9.出隊 10.遍歷隊列 11.完整代碼 3.參考資料 前言 這篇文章介紹循環隊列的表示和用法。 1.為什么要使用循環隊…

詳細分析Vue3中的defineExpose(附Demo)

目錄 前言1. 基本知識2. Demo3. 實戰 前言 其基本知識可參考官網&#xff1a;Vue3中的defineExpose 1. 基本知識 defineExpose 是 Vue 3 的 Composition API 中一個新的實用函數&#xff0c;用于在 <script setup> 語法下顯式暴露組件的公共屬性和方法 這在處理子組件…

OpenAI 重磅發布:ChatGPT Mac 桌面應用震撼上線!

OpenAI 重磅發布&#xff1a;ChatGPT Mac 桌面應用震撼上線&#xff01; 博主貓頭虎的技術世界 &#x1f31f; 歡迎來到貓頭虎的博客 — 探索技術的無限可能&#xff01; 專欄鏈接&#xff1a; &#x1f517; 精選專欄&#xff1a; 《面試題大全》 — 面試準備的寶典&#xff0…

51單片機:點亮一個LED燈

1.新建工程 選擇AT89C52&#xff0c;在Atmel下顯示的是See Microchip 并不需要添加啟動文件到文件夾中。 添加main.c文件&#xff0c;c比cpp效率高&#xff0c;.asm匯編即更底層 程序編寫好后 nop(); 該函數在這個頭文件里面 #include <INTRINS.H> #include <R…

Java JDK下載安裝教程(2024年)

博主介紹&#xff1a;?Java老徐、7年大廠程序員經歷。全網粉絲12w、csdn博客專家、掘金/華為云/阿里云/InfoQ等平臺優質作者、專注于Java技術領域和畢業項目實戰? &#x1f345;文末獲取源碼聯系&#x1f345; &#x1f447;&#x1f3fb; 精彩專欄推薦訂閱&#x1f447;&…