吴忠躺衫网络科技有限公司

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

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

3天內不再提示

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

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

芯片型號: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);//output
XGpioPs_SetDirectionPin(&xgpio, LED2, 1);//
 
XGpioPs_SetOutputEnablePin(&xgpio, LED1, 1);//enable
XGpioPs_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);//output
XGpio_DiscreteWrite(&GpioOutput,1,0x0);

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

5. 總結

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

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

③ PL輸出信號綁定引腳。

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

    關注

    1630

    文章

    21798

    瀏覽量

    606062
  • GPIO
    +關注

    關注

    16

    文章

    1216

    瀏覽量

    52391
  • MIO
    MIO
    +關注

    關注

    0

    文章

    12

    瀏覽量

    8184
  • Vivado
    +關注

    關注

    19

    文章

    815

    瀏覽量

    66895
收藏 人收藏

    評論

    相關推薦

    GPIO使用教程 GPIO接口應用

    GPIO(General-Purpose Input/Output,通用輸入/輸出)接口是電子設備中的一個重要組成部分,主要用于控制和讀取設備的數字信號。它通過簡單的高(1)或低(0)電平來與系統
    的頭像 發表于 01-31 10:10 ?201次閱讀

    關系型數據庫和非關系區別

    關系型數據庫和非關系型數據庫在多個方面存在顯著差異,主機推薦小編為您整理發布關系型數據庫和非關系區別,以下是它們的主要
    的頭像 發表于 01-10 09:58 ?122次閱讀

    如何通過PMC_GPIO喚醒AMD Versal? Adaptive SoC Linux系統

    ://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18842232/Zynq+UltraScale+MPSoC+Power+Management+-+Linux+Kernel 我們這里采用 VPK120 板卡作為平臺,這個板卡上面沒有通過 PMC MIO 連接
    的頭像 發表于 12-17 10:07 ?281次閱讀
    如何通過PMC_<b class='flag-5'>GPIO</b>喚醒AMD Versal? Adaptive SoC Linux系統

    深度解析 4G模組GPIO編程技巧篇

    本文將解析4G模組GPIO編程技巧,從概述、軟硬件環境準備、示例等詳細道來:
    的頭像 發表于 11-20 23:08 ?280次閱讀
    深度<b class='flag-5'>解析</b>  4G模組<b class='flag-5'>GPIO</b>編程技巧篇

    GPIO內部電路的原理

    原理 前言 GPIO內部結構概覽 GPIO內部結構詳解 保護電路 輸出電路 推挽輸出 開漏輸出 輸入電路 總結 參考資料 GPIO內部結構概覽 結構關系圖如下圖所示
    的頭像 發表于 11-20 09:24 ?442次閱讀
    <b class='flag-5'>GPIO</b>內部電路的原理

    SOC GPIO操作

    sapphire Soc提供了兩個GPIO組每組有4個GPIO,定義為GPIO[3:0],其中只有GPIO[1:0]可以支持中斷。中斷在程序中打開了
    的頭像 發表于 11-01 11:06 ?202次閱讀

    CPU時鐘周期與主頻的關系區別

    CPU時鐘周期與主頻是計算機體系結構中兩個緊密相連且至關重要的概念,它們之間既存在關系又有所區別。以下將詳細闡述CPU時鐘周期與主頻的關系區別
    的頭像 發表于 09-26 15:46 ?2070次閱讀

    圖像處理器與計算機視覺有什么關系區別

    圖像處理器與計算機視覺是兩個在圖像處理領域緊密相連但又有所區別的概念。它們之間的關系區別可以從多個維度進行探討。
    的頭像 發表于 08-14 09:36 ?623次閱讀

    labview如何測ADC輸入到DAC輸出的延時

    ADC和DAC用的是MIO的SCB-68A,從ADC采集數據,經過上位機處理后把數據發放到DAC輸出,想測量從ADC采集到DAC輸出這一過程所用時間,向各位大神請教!!!
    發表于 08-12 16:15

    FM20S用戶手冊-PS + PL異構多核案例開發手冊

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

    PLC與網關的關系區別

    景有所不同,但在實現工業自動化和智能化方面又有著密切的聯系。本文將對PLC和網關的關系區別進行詳細的闡述,以便讀者能夠更好地理解它們在工業自動化系統中的定位和作用。
    的頭像 發表于 06-14 15:50 ?1100次閱讀

    PLC與視覺控制器的區別關系

    有著顯著的區別。本文將從定義、功能、特點以及應用等方面,詳細闡述PLC與視覺控制器的區別關系,以期為讀者提供全面、深入的了解。
    的頭像 發表于 06-06 14:10 ?1616次閱讀

    什么是GPIOGPIO組成原理

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

    免費借測,限時體驗 | 研華Socket Type 4英寸嵌入式單板MIO-4370來襲!

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

    交換機cpu和交換芯片的關系區別

    交換機CPU和交換芯片在交換機中各自扮演著重要的角色,并且它們之間存在一定的關系區別
    的頭像 發表于 03-18 14:06 ?2110次閱讀
    永利国际娱乐| 博彩百家乐字谜总汇| 免费百家乐官网分析工具| 百家乐官网园首选去澳| 百家乐加牌规则| 百家乐最新赌王| 百家乐高命中投注| 百家乐2号说名书| 威尼斯人娱乐城怎么玩| 大发888娱乐城主页| 亿酷棋牌世界官方下载| 金狮国际| 百家乐官网视频游戏注册| 百家乐官网赢谷输缩| 加多宝百家乐官网的玩法技巧和规则| 百家乐正网包杀| 木棉百家乐网络| 大发888娱乐城df888| 湘乡市| 百家乐官网必胜法hk| 王牌百家乐官网的玩法技巧和规则| 百家乐类游戏网站| 尊龙百家乐娱乐场开户注册| 大发888官方 df888 gfxzylc8| 时时博在线娱乐城| 百家乐官网概率下注法| 百家乐官网现金网最好的系统哪里有可靠吗| 24山家坐向| 缅甸百家乐娱乐场开户注册| 抚顺棋牌网| 百家乐官网技巧论坛| 阳宅24山流年吉凶方位| 百家乐博娱乐网提款速度快不| 大发888娱乐城官方免费下载| 百家乐官网最全打法| 乐天堂百家乐官网娱乐网| 缅甸百家乐博彩| 百家乐官网荷官培训| 金博士百家乐娱乐城 | 百家乐打劫法| 帝王娱乐城开户|