那曲檬骨新材料有限公司

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

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

3天內不再提示

ZYNQ EMIO重用封裝實現算法板級驗證

454398 ? 來源:博客園 ? 作者: 沒落騎士 ? 2020-12-25 17:22 ? 次閱讀

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

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

#include "xgpiops.h"
#include "xparameters.h"
#include "xstatus.h"
#include "W5500.h"
#include "EMIO_ope.h"

static XGpioPs psGpioInstancePtr;

int EMIO_init()
{
XGpioPs_Config* GpioConfigPtr;
int xStatus;

//--EMIO的初始化
GpioConfigPtr = XGpioPs_LookupConfig(GPIO_DEVICE_ID);
if(GpioConfigPtr == NULL)
return XST_FAILURE;

xStatus = XGpioPs_CfgInitialize(&psGpioInstancePtr,GpioConfigPtr, GpioConfigPtr->BaseAddr);
if(XST_SUCCESS != xStatus)
print(" PS GPIO INIT FAILED /n/r");

//--EMIO的輸入輸出操作
XGpioPs_SetDirectionPin(&psGpioInstancePtr, ETH_NRST_BASE,1);
XGpioPs_SetDirectionPin(&psGpioInstancePtr, USER_SPI_MOSI_BASE,1);
XGpioPs_SetDirectionPin(&psGpioInstancePtr, USER_SPI_CSN_BASE,1);
XGpioPs_SetDirectionPin(&psGpioInstancePtr, USER_SPI_SCLK_BASE,1);
XGpioPs_SetDirectionPin(&psGpioInstancePtr, USER_SPI_MISO_BASE,0);

//使能輸出端口
XGpioPs_SetOutputEnablePin(&psGpioInstancePtr, ETH_NRST_BASE,1);
XGpioPs_SetOutputEnablePin(&psGpioInstancePtr, USER_SPI_MOSI_BASE,1);
XGpioPs_SetOutputEnablePin(&psGpioInstancePtr, USER_SPI_CSN_BASE,1);
XGpioPs_SetOutputEnablePin(&psGpioInstancePtr, USER_SPI_SCLK_BASE,1);

return xStatus;
}

void writePin(u32 pinNum,u32 value)
{
XGpioPs_WritePin(&psGpioInstancePtr, pinNum, value);
}

u32 readPin(u32 pinNum)
{
return XGpioPs_ReadPin(&psGpioInstancePtr,pinNum);
}

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_ID

int EMIO_init();
void writePin(u32 pinNum,u32 value);
u32 readPin(u32 pinNum);

#endif /* SRC_EMIO_OPE_H_ */

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

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

    關注

    1630

    文章

    21797

    瀏覽量

    606016
  • soc
    soc
    +關注

    關注

    38

    文章

    4204

    瀏覽量

    219098
  • Xilinx
    +關注

    關注

    71

    文章

    2171

    瀏覽量

    122142
收藏 人收藏

    評論

    相關推薦

    Xilinx ZYNQ開發GPIO的三種方式:MIO、EMIO、AXI_GPIO

    ;AXI_GPIO是封裝好的IP核,PS通過M_AXI_GPIO接口控制PL部分實現IO,使用時消耗管腳資源和邏輯資源。 使用的板子是zc702。 1.MIO方式 Zynq7000 系列芯片有 54 個
    的頭像 發表于 12-26 10:12 ?4026次閱讀
    Xilinx <b class='flag-5'>ZYNQ</b>開發GPIO的三種方式:MIO、<b class='flag-5'>EMIO</b>、AXI_GPIO

    重用機床編碼技術及重構算法研究

    重用機床的組成模塊特征,進而將可重用機床的模塊編碼系統分為模塊主碼、模塊接口特征碼和模塊圖紙管理碼三部分組成。通過計算總相似系數得到與目標模塊最接近的模塊,給出了可重用機床模塊選擇算法
    發表于 05-17 11:58

    玩轉Zynq連載31——[ex53] 基于Zynq PS的EMIO控制

    0、EMIO1和EMIO2循環拉高,逐次點亮3個LED中的1個。 4 調試在Zstar板子上,設置跳線帽P3為JTAG模式,即PIN2-3短接。連接好串口線(USB線連接PC的US
    發表于 10-12 17:35

    【正點原子FPGA連載】第三章EMIO按鍵控制LED實驗-領航者 ZYNQ 之嵌入式開發指南

    熄滅。然后再按下底板上PL端的用戶按鍵PL_KEY0,可以看到核心上PS端的LED2(紅色)在按鍵按下時點亮,釋放后熄滅。說明我們通過EMIO擴展GPIO接口,使用PL端按鍵控制PS端LED的實驗在領航者ZYNQ開發
    發表于 08-29 16:20

    MIO/EMIO/AXI_GPIO接口詳解

    ZYNQ-7000系列MIO/EMIO/AXI_GPIO接口
    發表于 02-02 07:30

    分享!基于Zynq-7010/7020的多路千兆網口實現方案

    評估(Xilinx Zynq-7010/7020)圖 1 TLZ7x-EasyEVM評估圖 2 SOM-TLZ7x-S核心2 方案實現
    發表于 10-22 09:43

    ZYNQ的學習筆記分享

    通過MIO(Multiuse I/O)模塊對器件的引腳做觀測(input)和控制(output)。ZYNQ的PS端上的GPIO也可以通過EMIO(Extra MIO)模塊對PL端的IP以及引腳實現上述操作。GPIO可以獨立且動態
    發表于 02-08 07:30

    實現上位機與zynq7020開發通信的方法

    最近想實現上位機與zynq7020開發通信。采用串口通信方式,利用QT編寫一個簡易串口助手實現與下位機的通信。 下位機給上位機發送收據,上位機能夠正常接受。但是上位機給下位機串口發數
    發表于 02-17 07:08

    ZYNQ 的三種GPIO :MIO、EMIO、AXI

    。 我們先看一下MIO和EMIO:下圖EMIO和MIO的結構。其中MIO分布在BANK0,BANK1,而EMIO則分布在BANK2、BANK3。注意一下幾項: 首先、MIO在zynq
    發表于 02-08 10:23 ?3367次閱讀
    <b class='flag-5'>ZYNQ</b> 的三種GPIO :MIO、<b class='flag-5'>EMIO</b>、AXI

    基于小樣本重用的混合盲均衡算法

    利用小樣本重用技術重新設計均衡器加權系數,提高算法收斂效率,并引入常范數盲均衡算法,通過計算機仿真驗證了了新算法有效性,可以極大的降低系統的
    發表于 11-13 11:33 ?8次下載

    基于可重用激勵發生機制的虛擬SoC驗證平臺

    在系統芯片的設計中,傳統的激勵發生機制耗費人工多且難以重用,嚴重影響了仿真驗證的效率。針對此問題,構建了一種基于可重用激勵發生機制的虛擬SoC驗證平臺。該平臺利用可
    發表于 11-28 17:43 ?0次下載
    基于可<b class='flag-5'>重用</b>激勵發生機制的虛擬SoC<b class='flag-5'>驗證</b>平臺

    ZYNQ-7000系列MIO、EMIO、AXI_GPIO接口

    ZYNQ-7000系列MIO/EMIO/AXI_GPIO接口
    發表于 07-25 17:41 ?2869次閱讀
    <b class='flag-5'>ZYNQ</b>-7000系列MIO、<b class='flag-5'>EMIO</b>、AXI_GPIO接口

    ZYNQ-7000系列MIO/EMIO/AXI_GPIO接口

    ZYNQ-7000系列MIO/EMIO/AXI_GPIO接口
    發表于 01-31 06:50 ?12次下載
    <b class='flag-5'>ZYNQ</b>-7000系列MIO/<b class='flag-5'>EMIO</b>/AXI_GPIO接口

    zynq 串口引腳引到emio 無法進入接收中斷問題記錄

    最近想實現上位機與zynq7020開發通信。采用串口通信方式,利用QT編寫一個簡易串口助手實現與下位機的通信。 下位機給上位機發送收據,上位機能夠正常接受。但是上位機給下位機串口發數
    發表于 12-20 19:34 ?18次下載
    <b class='flag-5'>zynq</b> 串口引腳引到<b class='flag-5'>emio</b> 無法進入接收中斷問題記錄

    重用驗證組件中構建測試平臺的步驟

    本文介紹了從一組可重用驗證組件中構建測試平臺所需的步驟。UVM促進了重用,加速了測試平臺構建的過程。 首先對 測試平臺集成者(testbench integrator) 和 測試編寫者(test
    的頭像 發表于 06-13 09:14 ?641次閱讀
    可<b class='flag-5'>重用</b>的<b class='flag-5'>驗證</b>組件中構建測試平臺的步驟
    百家乐官网游戏| 河南省| 闲和庄百家乐娱乐| 百家乐官网平注法亏损| 豪华百家乐官网桌子厂家| 大发888 娱乐网| 百家乐好津乐汇| 金榜百家乐娱乐城| 百家乐娱乐城返水| 百家乐官网那里信誉好| 博彩百家乐官网带连线走势图| 百家乐官网换人| 豪杰百家乐官网现金网| 孟连| 二八杠开户| 全讯网导航| 武功县| 易胜博投注| 和记娱乐| 河曲县| 至尊百家乐官网20111110| 网上百家乐官网辅助软件| 带百家乐官网的时时彩平台| 百家乐官网庄闲出现几率| 百家乐官网电脑游戏高手| 怎么玩百家乐官网能赢钱| 百家乐官网作弊演示| 百家乐官网去澳门| 有破解百家乐官网仪器| 百家乐官网游戏网上投注| 百家乐官网龙虎台布作弊技巧| 百家乐官网强弱走势图| 百家乐官网高| 百家乐最新打法| 百家乐赌博导航| 伟易博百家乐的玩法技巧和规则| 威尼斯人娱乐上网导航| 大发888娱乐场1888| 永利线上娱乐| 百家乐官网手机游戏下载| 百家乐官网荷官培训|