日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ZYNQ EMIO使用及可重用封装

發布時間:2025/6/15 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ZYNQ EMIO使用及可重用封装 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

  為了快速實現算法板級驗證,PC端需要通過JTAG或以太網與FPGA形成通路。最簡單便捷的方案是利用協議棧芯片,用戶可以無視底層,利用簡單的SPI協議讀寫寄存器實現復雜的TCP UDP等網絡協議。當然帶寬會受限于SPI接口有效速率,本文采用芯片為W5500,支持10M/100M自適應,其理論值高達80Mbps,基本達到算法驗證的要求。

  ZYNQ可以通過靈活的EMIO模擬SPI接口,從而在最少改動官方demo的前提下移植C語言驅動程序。本文著重講述EMIO的C語言軟件驅動方式及可重用封裝,封裝后可以接口方式被其他應用程序直接調用,非常方便。直接上代碼,再加以說明。

1 /* 2 * EMIO_ope.c 3 * 4 */ 5 6 7 #include "xgpiops.h" 8 #include "xparameters.h" 9 #include "xstatus.h" 10 #include "W5500.h" 11 #include "EMIO_ope.h" 12 13 14 static XGpioPs psGpioInstancePtr; 15 16 int EMIO_init() 17 { 18 XGpioPs_Config* GpioConfigPtr; 19 int xStatus; 20 21 //--EMIO的初始化 22 GpioConfigPtr = XGpioPs_LookupConfig(GPIO_DEVICE_ID); 23 if(GpioConfigPtr == NULL) 24 return XST_FAILURE; 25 26 xStatus = XGpioPs_CfgInitialize(&psGpioInstancePtr,GpioConfigPtr, GpioConfigPtr->BaseAddr); 27 if(XST_SUCCESS != xStatus) 28 print(" PS GPIO INIT FAILED \n\r"); 29 30 //--EMIO的輸入輸出操作 31 XGpioPs_SetDirectionPin(&psGpioInstancePtr, ETH_NRST_BASE,1); 32 XGpioPs_SetDirectionPin(&psGpioInstancePtr, USER_SPI_MOSI_BASE,1); 33 XGpioPs_SetDirectionPin(&psGpioInstancePtr, USER_SPI_CSN_BASE,1); 34 XGpioPs_SetDirectionPin(&psGpioInstancePtr, USER_SPI_SCLK_BASE,1); 35 XGpioPs_SetDirectionPin(&psGpioInstancePtr, USER_SPI_MISO_BASE,0); 36 37 //使能輸出端口 38 XGpioPs_SetOutputEnablePin(&psGpioInstancePtr, ETH_NRST_BASE,1); 39 XGpioPs_SetOutputEnablePin(&psGpioInstancePtr, USER_SPI_MOSI_BASE,1); 40 XGpioPs_SetOutputEnablePin(&psGpioInstancePtr, USER_SPI_CSN_BASE,1); 41 XGpioPs_SetOutputEnablePin(&psGpioInstancePtr, USER_SPI_SCLK_BASE,1); 42 43 return xStatus; 44 } 45 46 47 void writePin(u32 pinNum,u32 value) 48 { 49 XGpioPs_WritePin(&psGpioInstancePtr, pinNum, value); 50 } 51 52 u32 readPin(u32 pinNum) 53 { 54 return XGpioPs_ReadPin(&psGpioInstancePtr,pinNum); 55 }

?  Xilinx封住的庫函數有其固定的“套路”。首先查找設備配置,初始化。之后設置EMIO的方向,如果是輸出方向還要使能輸出。這里將上述預處理部分封裝到EMIO_Init()函數中。之后再編寫兩個函數分別實現EMIO寄存器的讀和寫,也就是讀取輸入接口數據以及輸出數值,兩者內部均調用Xilinx官方提供的API函數。將實現細節隱藏最重要的步驟:將函數聲明統一放置.h文件。

/** EMIO_ope.h**/#ifndef SRC_EMIO_OPE_H_ #define SRC_EMIO_OPE_H_#define GPIO_DEVICE_ID XPAR_PS7_GPIO_0_DEVICE_IDint EMIO_init(); void writePin(u32 pinNum,u32 value); u32 readPin(u32 pinNum);#endif /* SRC_EMIO_OPE_H_ */

  此處總結下利用FPGA/SOC連接以太網從簡單到難的設計方案是:協議棧芯片 --> LWIP開源庫 --> 基于以太網MAC的網絡協議邏輯設計--> 從上層網絡協議到MAC全部用HDL描述。不同的方案適合不同的需求,能靈活在開發周期和性能 功耗等方面取舍,做到簡單實用,應該是各個行業技術人員的所追求的終極目標。

轉載于:https://www.cnblogs.com/moluoqishi/p/9198772.html

總結

以上是生活随笔為你收集整理的ZYNQ EMIO使用及可重用封装的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 激情xxx| 欧美日韩一卡二卡三卡 | 日本高清不卡视频 | av高清 | 中文字幕人妻无码系列第三区 | 少妇av导航 | 欧美性xxxx在线播放 | 男插女视频在线观看 | 黑人操欧美人 | 国产一级片免费在线观看 | 三上悠亚一区二区 | 日本黄页网站免费大全 | 色老头综合 | 久久久av一区二区三区 | 国产亚洲成av人在线观看导航 | 日本欧美一区二区三区 | 日韩精品极品视频免费观看 | 波多野结衣视频免费看 | 国产色视频一区二区三区qq号 | 国产精品丝袜一区 | 中文天堂网 | 午夜在线不卡 | 一级久久久久久久 | 又黄又爽的视频 | av青草| 黄色录像一级大片 | 黄色一级片黄色一级片 | 国产精品毛片久久久久久 | 在线免费av网 | 日韩欧美国产一区二区在线观看 | 一区久久 | 亚洲首页 | 91免费看. | 国产91免费在线观看 | 91免费在线播放 | 久久狠狠干 | 国产一二三区精品 | 婷婷俺也去 | 色福利在线 | 污污内射在线观看一区二区少妇 | 精品久久久999 | 国产午夜精品免费一区二区三区视频 | www视频免费在线观看 | 久操精品 | 天堂中文视频 | ass亚洲肉体欣赏pics | 无码人妻一区二区三区免费n鬼沢 | 男人天堂2014 | 亚洲欧美综合精品久久成人 | caoporen在线 | 久章草影院 | 欧美黄色免费看 | 欧美情侣性视频 | 性精品 | 六月天综合网 | 性av网站 | 秋霞影院午夜丰满少妇在线视频 | 国产精品不卡在线观看 | 一区二区三区在线免费播放 | 综合网视频 | 就去干成人网 | 韩国三级视频 | 欧美黑人又粗又大高潮喷水 | 亚洲性图一区二区 | 欧洲视频在线观看 | 成年人午夜 | 欧美午夜小视频 | 美女免费黄视频 | 欧美丰满熟妇bbb久久久 | 2019最新中文字幕 | 亚洲中文在线一区 | 大香蕉视频一区二区 | 青娱乐超碰 | 欧美aaa在线观看 | 5566色| 欧美激情专区 | 欧美午夜在线视频 | 韩国福利一区 | 97香蕉碰碰人妻国产欧美 | 午夜xxx | 91黄色免费版 | 伊人av在线| 99国产精品久久久久久久久久久 | 在线观看国产小视频 | 久久精品丝袜 | 国产精品熟妇一区二区三区四区 | 你懂的av在线| japanese国产打屁股网站 | 国内毛片视频 | 成人h动漫精品一区 | 免费av在线电影 | 久久精品国产久精国产 | 亚洲精品第三页 | 天天综合欧美 | 情侣自拍av | 一区二区三区视频网 | 精品91视频 | 中文字幕人妻一区二区三区 | 素人av在线 |