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

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

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

MIO與EMIO的關(guān)系解析 GPIO、MIO、EMIO的區(qū)別

454398 ? 來源:csdn ? 作者:FPGA難得一P ? 2020-11-24 14:32 ? 次閱讀

芯片型號(hào):XC7Z010-1CLG400C

Vivado版本:2016.1

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

1. MIO與EMIO

首先來理清楚MIO與EMIO的關(guān)系。MIO是PS的I/O引腳,一共有54個(gè),分為Bank0與Bank1,可以接許多外設(shè)比如UART、SPI或GPIO等,另外可以引腳復(fù)用。當(dāng)我們想通過PS來訪問PL又不想浪費(fèi)AXI總線時(shí),就通過EMIO接口來訪問。在54個(gè)I/O中,有一些只能用于MIO,大部分可以用于MIO與EMIO,一些接口信號(hào)線只能通過EMIO訪問。


EMIO依然屬于PS,只是連接到了PL,再?gòu)腜L輸出信號(hào)。

2. PS通過MIO點(diǎn)亮PS端LED


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

首先建立.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)。

在外設(shè)I/O中,打開UART1,對(duì)應(yīng)MIO48、49口,打不打開都無所謂,打開調(diào)試用。此時(shí)在MIO中已經(jīng)看到UART1已經(jīng)分配了管腳,然后在GPIO里,打開MIO。


最后在DDR里,找到所用的DDR芯片,比如我用的是HA-125。這樣所有的平臺(tái)就搭好了。直接generate out products——create HDL wrapper——export Hardware——lanuch SDK。

進(jìn)入SDK,建立工程。首先引頭文件xgpiops.h

對(duì)MIO0和MIO13,初始化引腳。

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

這個(gè)函數(shù)初始化gpio,第一個(gè)參數(shù)需要一個(gè)XGpioPs的結(jié)構(gòu)體指針,直接在函數(shù)開頭實(shí)例化就好了,結(jié)構(gòu)體的組成在.h文件。第二個(gè)參數(shù)是一個(gè)XGpioPs_Config類型結(jié)構(gòu)體指針,這個(gè)結(jié)構(gòu)體的內(nèi)容:

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

包括gpio分配的ID和基地址。第三個(gè)參數(shù)就是基地址。

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

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

首先實(shí)例化一個(gè)XGpioPs_Config類型的指針。使用XGpioPs_LookupConfig函數(shù),它能夠在配置信息中找到對(duì)應(yīng)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);//output
XGpioPs_SetDirectionPin(&xgpio, LED2, 1);//
 
XGpioPs_SetOutputEnablePin(&xgpio, LED1, 1);//enable
XGpioPs_SetOutputEnablePin(&xgpio, LED2, 1);

再后面就在while(1)中循環(huán)點(diǎn)燈,用XGpioPs_WritePin函數(shù)輸出高低電平。

這是純PS點(diǎn)流水燈。

3. PS通過EMIO點(diǎn)亮PL端LED

通過EMIO點(diǎn)PL端LED,在配置zynq ip核時(shí),基本步驟差不多,包括去到PL資源等,唯一不同的是,在GPIO里,勾上EMIO并且分配寬度是4(因?yàn)槲业男“遄覲L端有四個(gè)LED)。

生成了新的系統(tǒng):


接下來,分配管腳?。∫?yàn)檫@里GPIO_0在PL端??纯磒df:


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

然后輸出bitstream文件,導(dǎo)入到SDK中時(shí),要加上這個(gè)比特流文件。進(jìn)入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;

后面就是設(shè)置引腳工作模式:

這里的引腳號(hào)從54開始,因?yàn)閺?4后才是EMIO引腳:


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

之后點(diǎn)燈就可以了。在運(yùn)行之前先下載比特流文件到FPGA,另外這個(gè)黑金的小板子,PL和PS協(xié)同仿真時(shí),總報(bào)錯(cuò),只需要在Reset entire system和Program FPGA打上勾,并且這個(gè)比特流文件要絕對(duì)地址??!


4. PS通過AXI點(diǎn)亮PL端LED

這個(gè)就是PL與PS協(xié)同點(diǎn)燈了。

首先配置zynq ip核,PL部分保留,因?yàn)橛玫搅薃XI,另外MIO gpio都去掉。其余配置都一樣。添加AXI gpio IP核,并且設(shè)置寬度為4,最后Run connection Automation,加入其它必要組件,調(diào)整連線:


之后再綁定gpio_led管腳到四個(gè)LED上,綜合并生成bitstream文件,導(dǎo)入到SDK。

引用頭文件:XGpio.h

然后還是對(duì)引腳進(jìn)行初始化和設(shè)置工作模式:

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

協(xié)同點(diǎn)燈還是要先下載比特流文件,在運(yùn)行SDK程序。

5. 總結(jié)

① 對(duì)MIO或EMIO gpio進(jìn)行操作,都屬于PS,引用xgpiops.h文件,對(duì)AXI_gpio引用xgpio.h

② 涉及PL引腳或操作時(shí),生成比特流文件并且導(dǎo)入SDK,運(yùn)行時(shí)先下載FPGA。

③ PL輸出信號(hào)綁定引腳。

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

    關(guān)注

    1620

    文章

    21510

    瀏覽量

    598957
  • GPIO
    +關(guān)注

    關(guān)注

    16

    文章

    1175

    瀏覽量

    51515
  • MIO
    MIO
    +關(guān)注

    關(guān)注

    0

    文章

    12

    瀏覽量

    8140
  • Vivado
    +關(guān)注

    關(guān)注

    19

    文章

    797

    瀏覽量

    65855
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    圖像處理器與計(jì)算機(jī)視覺有什么關(guān)系區(qū)別

    圖像處理器與計(jì)算機(jī)視覺是兩個(gè)在圖像處理領(lǐng)域緊密相連但又有所區(qū)別的概念。它們之間的關(guān)系區(qū)別可以從多個(gè)維度進(jìn)行探討。
    的頭像 發(fā)表于 08-14 09:36 ?188次閱讀

    labview如何測(cè)ADC輸入到DAC輸出的延時(shí)

    ADC和DAC用的是MIO的SCB-68A,從ADC采集數(shù)據(jù),經(jīng)過上位機(jī)處理后把數(shù)據(jù)發(fā)放到DAC輸出,想測(cè)量從ADC采集到DAC輸出這一過程所用時(shí)間,向各位大神請(qǐng)教?。?!
    發(fā)表于 08-12 16:15

    FM20S用戶手冊(cè)-PS + PL異構(gòu)多核案例開發(fā)手冊(cè)

    界面,雙擊Procise工程的Block Desgn框圖,進(jìn)入配置界面 再點(diǎn)擊"MIO Configuration",可看到CANO、CAN1已配置成EMIO模式。
    發(fā)表于 07-25 16:14

    PLC與網(wǎng)關(guān)的關(guān)系區(qū)別

    景有所不同,但在實(shí)現(xiàn)工業(yè)自動(dòng)化和智能化方面又有著密切的聯(lián)系。本文將對(duì)PLC和網(wǎng)關(guān)的關(guān)系區(qū)別進(jìn)行詳細(xì)的闡述,以便讀者能夠更好地理解它們?cè)诠I(yè)自動(dòng)化系統(tǒng)中的定位和作用。
    的頭像 發(fā)表于 06-14 15:50 ?575次閱讀

    PLC與視覺控制器的區(qū)別關(guān)系

    有著顯著的區(qū)別。本文將從定義、功能、特點(diǎn)以及應(yīng)用等方面,詳細(xì)闡述PLC與視覺控制器的區(qū)別關(guān)系,以期為讀者提供全面、深入的了解。
    的頭像 發(fā)表于 06-06 14:10 ?772次閱讀

    什么是GPIOGPIO組成原理

    GPIO全拼叫General Purpose Input Output(通用輸入輸出)簡(jiǎn)稱IO口也叫總線擴(kuò)展器,GPIO口是由引腳,功能寄存器組成,不同的架構(gòu)中的GPIO封裝不同,所使用的引腳數(shù)與寄存器數(shù)不同,具體可以參考芯片手
    發(fā)表于 04-28 12:30 ?5313次閱讀
    什么是<b class='flag-5'>GPIO</b>?<b class='flag-5'>GPIO</b>組成原理

    免費(fèi)借測(cè),限時(shí)體驗(yàn) | 研華Socket Type 4英寸嵌入式單板MIO-4370來襲!

    MIO-4370是研華4" EPIC 嵌入式單板電腦 ,支持第12/13代 Intel socket 式CPU,性能選擇更靈活。同時(shí)也提供了更豐富的I/O接口及擴(kuò)展能力,是醫(yī)療、機(jī)器視覺、機(jī)器人
    發(fā)表于 03-26 16:56 ?214次閱讀
    免費(fèi)借測(cè),限時(shí)體驗(yàn) | 研華Socket Type 4英寸嵌入式單板<b class='flag-5'>MIO</b>-4370來襲!

    交換機(jī)cpu和交換芯片的關(guān)系區(qū)別

    交換機(jī)CPU和交換芯片在交換機(jī)中各自扮演著重要的角色,并且它們之間存在一定的關(guān)系區(qū)別。
    的頭像 發(fā)表于 03-18 14:06 ?1186次閱讀

    一文讀懂寬帶、帶寬、網(wǎng)速之間的區(qū)別關(guān)系

    一文讀懂寬帶、帶寬、網(wǎng)速之間的區(qū)別關(guān)系? 寬帶、帶寬和網(wǎng)速是在網(wǎng)絡(luò)領(lǐng)域中經(jīng)常使用的術(shù)語(yǔ),它們之間有一定的區(qū)別關(guān)系。在深入理解寬帶、帶寬和網(wǎng)速之間的
    的頭像 發(fā)表于 01-31 09:11 ?4084次閱讀

    GPIO為例,RTE配置完后會(huì)有xmc_gpio.h、xmc1_gpio.h、xmc_gpio.c、xmc1_gpio.c,四個(gè)的關(guān)系是什么樣的?

    GPIO為例,RTE配置完后,會(huì)有xmc_gpio.h、xmc1_gpio.h、xmc_gpio.c、xmc1_gpio.c,四個(gè)的
    發(fā)表于 01-29 06:24

    晶振的負(fù)載電容與外接電容的區(qū)別關(guān)系

    晶振的負(fù)載電容與外接電容的區(qū)別關(guān)系
    的頭像 發(fā)表于 12-05 16:18 ?6106次閱讀
    晶振的負(fù)載電容與外接電容的<b class='flag-5'>區(qū)別</b>與<b class='flag-5'>關(guān)系</b>

    FPGA的IO

    。FPGA芯片IO命名方式太多,管腳也多,讓人感覺很亂。這是我當(dāng)年的感覺,諸如會(huì)經(jīng)常聽到:A13,B14···BANK34,BANK12····MIO0,EMIO···。但這確實(shí)是FPGA的特點(diǎn),F(xiàn)PGA
    發(fā)表于 11-03 11:08

    ZYNQ的ARM和FPGA數(shù)據(jù)交互——AXI交互最重要的細(xì)節(jié)

    。 ③EMIO :由于MIO管腳有限,PS端可以通過EMIO訪問PL端引腳。 ④GP :通用AXI接口,用來實(shí)現(xiàn)一般主從互聯(lián)、數(shù)據(jù)交互,不用于高性能。 ⑤HP :是高性能/帶寬的標(biāo)準(zhǔn)接口,主要用于PL訪問PS上
    發(fā)表于 11-03 10:51

    Ozemio 以創(chuàng)新生成式人工智能助理開創(chuàng)人才轉(zhuǎn)型新紀(jì)元

    日??/美通社/ --?Ozemio?隆重推出MIO,這是一款由人工智能驅(qū)動(dòng)的突破性產(chǎn)品,可重新構(gòu)想企業(yè)學(xué)習(xí)、成長(zhǎng)、走向卓越的范式。MIO 隔絕網(wǎng)絡(luò)喧囂,以專注于當(dāng)下主題的方式,幫助用戶高效學(xué)習(xí)
    的頭像 發(fā)表于 10-19 09:54 ?670次閱讀

    gpio子系統(tǒng)API詳解

    gpio 子系統(tǒng) API gpio 子系統(tǒng)中操作一個(gè) GPIO 需要如下幾步: 1、of_find_compatible_node2、of_get_named_gpio3、
    的頭像 發(fā)表于 09-27 17:17 ?636次閱讀
    <b class='flag-5'>gpio</b>子系統(tǒng)API詳解