MIO與EMIO的關係解析 GPIO、MIO、EMIO的區別

2020-11-26 電子發燒友

晶片型號:XC7Z010-1CLG400C

Vivado版本:2016.1

點亮流水燈,共使用了三種方式:
(1)PS通過MIO點亮PS端LED
(2)PS通過EMIO點亮PL端LED
(3)PS通過AXI點亮PL端LED。

1. MIO與EMIO

首先來理清楚MIO與EMIO的關係。MIO是PS的I/O引腳,一共有54個,分為Bank0與Bank1,可以接許多外設比如UART、SPI或GPIO等,另外可以引腳復用。當我們想通過PS來訪問PL又不想浪費AXI總線時,就通過EMIO接口來訪問。在54個I/O中,有一些只能用於MIO,大部分可以用於MIO與EMIO,一些接口信號線只能通過EMIO訪問。

EMIO依然屬於PS,只是連接到了PL,再從PL輸出信號。

2. PS通過MIO點亮PS端LED

從電路中看得很清楚,這兩個LED直接連接在MIO0和MIO13上,所以直接在這兩個埠輸出高低電平就可以控制燈閃爍了。

首先建立.bd文件,添加zynq的ip核,去掉PL的資源(包括PS-PL configuration——general——Enable Clock Resets中的FCLK_RESET0_N以及AXI None Secure Enablement——GP Master AXI Interface中的GP0以及Clock Configuration——PL Fabric Clocks中的FCLK_CLK0)。

在外設I/O中,打開UART1,對應MIO48、49口,打不打開都無所謂,打開調試用。此時在MIO中已經看到UART1已經分配了管腳,然後在GPIO裡,打開MIO。

最後在DDR裡,找到所用的DDR晶片,比如我用的是HA-125。這樣所有的平臺就搭好了。直接generate out products——create HDL wrapper——export Hardware——lanuch SDK。

進入SDK,建立工程。首先引頭文件xgpiops.h

對MIO0和MIO13,初始化引腳。

s32 XGpioPs_CfgInitialize(XGpioPs *InstancePtr, XGpioPs_Config *ConfigPtr, u32 EffectiveAddr);

這個函數初始化gpio,第一個參數需要一個XGpioPs的結構體指針,直接在函數開頭實例化就好了,結構體的組成在.h文件。第二個參數是一個XGpioPs_Config類型結構體指針,這個結構體的內容:

typedef struct { u16 DeviceId; /**< Unique ID of device */ u32 BaseAddr; /**< Register base address */} XGpioPs_Config;

包括gpio分配的ID和基地址。第三個參數就是基地址。

如何獲得這些信息,首先ID的獲得,打開xparameter.h頭文件,裡面定義了分配的各種資源的ID。

基地址就在配置信息查了,如何獲得gpio的配置信息:

首先實例化一個XGpioPs_Config類型的指針。使用XGpioPs_LookupConfig函數,它能夠在配置信息中找到對應ID的配置信息:

所以就很明確了:

xgpio_config = XGpioPs_LookupConfig(XPAR_PS7_GPIO_0_DEVICE_ID);//找分配的MIO配置信息(基地址)status = XGpioPs_CfgInitialize(&xgpio, xgpio_config,xgpio_config->BaseAddr);//初始化 if(status!=XST_SUCCESS)//初始化成功return XST_FAILURE;

然後就是定義gpio口的屬性,包括輸入輸出和埠使能:

XGpioPs_SetDirectionPin(&xgpio, LED1, 1);//outputXGpioPs_SetDirectionPin(&xgpio, LED2, 1);// XGpioPs_SetOutputEnablePin(&xgpio, LED1, 1);//enableXGpioPs_SetOutputEnablePin(&xgpio, LED2, 1);

再後面就在while(1)中循環點燈,用XGpioPs_WritePin函數輸出高低電平。

這是純PS點流水燈。

3. PS通過EMIO點亮PL端LED

通過EMIO點PL端LED,在配置zynq ip核時,基本步驟差不多,包括去到PL資源等,唯一不同的是,在GPIO裡,勾上EMIO並且分配寬度是4(因為我的小板子PL端有四個LED)。

生成了新的系統:

接下來,分配管腳!!因為這裡GPIO_0在PL端。看看pdf:

把剛分配的帶寬4的EMIO(GPIO_0)綁定到這四個管腳上。

然後輸出bitstream文件,導入到SDK中時,要加上這個比特流文件。進入SDK

初始化程序還是一樣,頭文件也是xgpiops.h,這還是PS操作。

xgpio_config = XGpioPs_LookupConfig(XPAR_PS7_GPIO_0_DEVICE_ID);status = XGpioPs_CfgInitialize(&xgpio, xgpio_config, xgpio_config->BaseAddr);if(status!=XST_SUCCESS)return XST_FAILURE;

後面就是設置引腳工作模式:

這裡的引腳號從54開始,因為從54後才是EMIO引腳:

0—53是MIO,53—...是EMIO。

之後點燈就可以了。在運行之前先下載比特流文件到FPGA,另外這個黑金的小板子,PL和PS協同仿真時,總報錯,只需要在Reset entire system和Program FPGA打上勾,並且這個比特流文件要絕對地址!!

4. PS通過AXI點亮PL端LED

這個就是PL與PS協同點燈了。

首先配置zynq ip核,PL部分保留,因為用到了AXI,另外MIO gpio都去掉。其餘配置都一樣。添加AXI gpio IP核,並且設置寬度為4,最後Run connection Automation,加入其它必要組件,調整連線:

之後再綁定gpio_led管腳到四個LED上,綜合併生成bitstream文件,導入到SDK。

引用頭文件:XGpio.h

然後還是對引腳進行初始化和設置工作模式:

XGpio_Initialize(&GpioOutput, XPAR_AXI_GPIO_0_DEVICE_ID);XGpio_SetDataDirection(&GpioOutput,1,0x0);//outputXGpio_DiscreteWrite(&GpioOutput,1,0x0);

協同點燈還是要先下載比特流文件,在運行SDK程序。

5. 總結

① 對MIO或EMIO gpio進行操作,都屬於PS,引用xgpiops.h文件,對AXI_gpio引用xgpio.h

② 涉及PL引腳或操作時,生成比特流文件並且導入SDK,運行時先下載FPGA。

③ PL輸出信號綁定引腳。

相關焦點

  • stm32單片機中使用GPIO口模擬PWM輸出解析
    gpio   General Purpose Input Output (通用輸入/輸出)簡稱為GPIO,或總線擴展器,人們利用工業標準I2C、SMBus或SPI接口簡化了I/O口的擴展。當微控制器或晶片組沒有足夠的I/O埠,或當系統需要採用遠端串行通信或控制時,GPIO產品能夠提供額外的控制和監視功能。
  • 嵌入式Linux設備驅動開發之:GPIO驅動程序實例
    在下一個小節中介紹的驅動程序中,s3c2410_gpio_cfgpin()函數和s3c2410_gpio_pullup()函數將進行對某個埠的配置,而s3c2410_gpio_setpin()函數實現向數據寄存器的某個埠的輸出。
  • SmartMio:懶人健身專用,八塊腹肌等著你
  • STM32教程(五)HAL庫之GPIO函數及實例詳細介紹!
    今天介紹STM32 HAL庫的GPIO函數庫,首先打開stm32f4xx_hal_gpio.h文件,我們能看到一些結構體定義以及GPIO引腳的地址定義等等,這些都很好理解,我們需要重點看HAL庫中GPIO的函數庫有哪些?以及這些函數庫有什麼作用以及怎麼使用這些函數?
  • 解析初中化學方程式與數學方程式的區別
    善於分析概念的不同, 小編整理了解析初中化學方程式與數學方程式的區別內容,以供大家參考複習。 解析初中化學方程式與數學方程式的區別 (1)化學方程式中的加號「+」和等號「=」有特定的化學意義;反應物間的「+」號表示物質間有「反應關係」,即用「+」號相連的物質間能發生化學反應,故應將「+」號讀成「與」、「和」或「跟」。生成物間的「+」號表示物質的「並存關係」,即反應後同時有這樣幾種物質生成,故應將「+」號讀成「和」。
  • 信度和效度的關係和區別
    信度和效度的關係和區別是怎樣的呢?下面小編為大家一一介紹:【什麼是信度】信度指測驗結果的一致性、穩定性及可靠性,一般多以內部一致性來加以表示該測驗信度的高低。信度係數愈高即表示該測驗的結果愈一致、穩定與可靠。系統誤差對信度沒什麼影響,因為系統誤差總是以相同的方式影響測量值的,因此不會造成不一致性。
  • 《動植物細胞的區別》答辯題目及解析
    《動植物細胞的區別》答辯題目及解析一、觀察動物細胞時在載玻片上要滴加生理鹽水的目的是什麼?【參考答案】生理鹽水可以保持細胞正常的形態,便於觀察細胞。二、真核生物和原核生物的主要區別是什麼?【參考答案】有無核膜包被的成形細胞核是真核生物和原核生物的主要區別,真核生物有細胞核,原生生物只有擬核,無成形細胞核。三、本節課的教學目標是什麼,你是如何達成的?【參考答案】根據我對本節課教材和學情的分析,我確定了如下的教學目標:1.說出動植物細胞的主要區別。
  • 2017年國考大綱解析之數量關係與資料分析
    廣東公務員考試網為你提供:2017年國考大綱解析之數量關係與資料分析。更多關於2017國家公務員考試,2017國考行測,2017國考數量關係的內容,請關注微信公眾號:gdhtgwy。   2017年國考大綱解析之數量關係與資料分析   廣州華圖 鍾國鋒   《2017年國家公務員大綱》與往年相比沒有太大的變化,考試科目仍然是由行政職業能力測驗介紹和申論組成。其中,行政職業能力測驗言語理解與表達、數量關係、判斷推理、資料分析和常識判斷等部分組成。本文將針對數量關係與資料分析進行解讀。
  • UML對象圖和類圖關係解析
    UML對象圖和類圖關係解析 UML共有九種視圖,它們之間各有自己的特點和作用,它們之間有什麼聯繫嗎,這裡就向大家介紹一下UML對象圖和UML類之間的聯繫,希望通過本文的學習你對UML的圖形之間的關係有一定的認識。
  • STM32學習筆記——使用函數庫編程控制GPIO口輸出
    lLWIB組則根據需要添加,由於要點亮led燈需要用到GPIO和時鐘,所以添加了stm32f10x_gpio.c和stm32f10x_rcc.c兩個文件,均 在...projectLibrariesSTM32F10x_StdPeriph_Driversrc
  • 線電流和相電流的關係與區別、線電壓與相電壓的區別與關係、相...
    而電工技術人員應該都知道,其實我們的工廠環境下一樣是有380V電壓的,而且如果採用不同的電源、負載連接方式,比如星形連接和三角形連接時的電壓又是各有區別的,這其實說到底就是相、線電壓和相、線電流之間的關係與區別。下文我們將詳細介紹。   首先我們要明確,我國普遍採用三相四線制供電。三根相線分別與地線之間標準電壓為220伏特,稱為相電壓;相線與相線之間電壓為380伏特,稱為線電壓。
  • 解析散熱器與冷凝器之間的區別
    打開APP 解析散熱器與冷凝器之間的區別 工程師之餘 發表於 2018-11-23 15:02:51 散熱器是專供汽車發動機散熱的
  • ...形成及其規律;中介變量和調節變量及其區別;動機與行為效率的關係
    01 簡述EEG、fMRI、PET、MEG、fNIRS和TMS的優缺點02 論述經典條件作用的形成及其規律03 簡述中介變量和調節變量及其區別04 簡述動機與行為效率的關係01 簡述EEG、fMRI、PET、MEG、fNIRS和TMS的優缺點【解析】EEG、fMRI、PET、MEG、fNIRS