• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    一種基于vxBus 的PPC 與FPGA 高速互聯(lián)的驅(qū)動(dòng)設(shè)計(jì)方法

    2015-08-26 06:39:30孟金芳
    電子設(shè)計(jì)工程 2015年24期
    關(guān)鍵詞:門(mén)鈴實(shí)時(shí)性信號(hào)處理

    石 煒, 孟金芳

    (1. 通信信息控制和安全技術(shù)重點(diǎn)實(shí)驗(yàn)室 浙江 嘉興 314033;2. 中國(guó)電子科技集團(tuán)公司第三十六研究所 浙江 嘉興 314033)

    隨著數(shù)字信號(hào)處理系統(tǒng)向著高實(shí)時(shí)性、 高數(shù)據(jù)吞吐率、高靈活性的方向發(fā)展,目前很多信號(hào)處理平臺(tái)選擇以PPC 為處理器,vxWorks 為實(shí)時(shí)操作系統(tǒng),F(xiàn)PGA 進(jìn)行信號(hào)預(yù)處理,兩者利用RapidIo 為通信鏈路的設(shè)計(jì)架構(gòu)。在這種架構(gòu)下,設(shè)計(jì)和實(shí)現(xiàn)好PPC 與FPGA 之間的RapidIo 通信驅(qū)動(dòng)尤為重要,通常驅(qū)動(dòng)設(shè)計(jì)者采用直接寄存器或內(nèi)存訪(fǎng)問(wèn)的方式進(jìn)行驅(qū)動(dòng)的設(shè)計(jì)和開(kāi)發(fā),這種開(kāi)發(fā)方式雖然有開(kāi)發(fā)簡(jiǎn)單直接,效率高的特點(diǎn),但是驅(qū)動(dòng)管理混亂,不適宜驅(qū)動(dòng)的模塊化設(shè)計(jì),沒(méi)有對(duì)FPGA 設(shè)備進(jìn)行較好的抽象,應(yīng)用開(kāi)發(fā)者無(wú)法透明和靈活調(diào)用。 本文基于VxWorks 的vxBus[1]驅(qū)動(dòng)開(kāi)發(fā)模型對(duì)PPC與FPGA 之間以高速RapidIo[2-3]為互連的驅(qū)動(dòng)設(shè)計(jì)進(jìn)行了研究,實(shí)現(xiàn)了FPGA 設(shè)備的高抽象,大大有利于應(yīng)用開(kāi)發(fā)者對(duì)FPGA 設(shè)備的透明調(diào)用, 同時(shí)滿(mǎn)足信號(hào)處理平臺(tái)PPC 與FPGA 之間通信的高實(shí)時(shí)性、高數(shù)據(jù)吞吐、高靈活性、高效率。

    1 vxBus 驅(qū)動(dòng)開(kāi)發(fā)模型

    1.1 vxBus 介紹

    vxBus 是vxWorks6.2 版本后推出的用于支持設(shè)備驅(qū)動(dòng)的特有的驅(qū)動(dòng)開(kāi)發(fā)模型如圖1,其主要支持:1)支持對(duì)應(yīng)設(shè)備的驅(qū)動(dòng)匹配;2)提供驅(qū)動(dòng)程序訪(fǎng)問(wèn)硬件的機(jī)制3)支持驅(qū)動(dòng)的模塊化設(shè)計(jì);4) 支持在WorkBench 開(kāi)發(fā)環(huán)境中調(diào)用的組件,實(shí)現(xiàn)驅(qū)動(dòng)的可配置。vxBus 在總線(xiàn)控制驅(qū)動(dòng)服務(wù)程序的支持下,能在虛擬總線(xiàn)上發(fā)現(xiàn)設(shè)備并與之匹配, 執(zhí)行初始化工作,完成驅(qū)動(dòng)和硬件設(shè)備之間的正常通信。 其中vxBus 最核心的功能是組件功能,它把每個(gè)設(shè)備驅(qū)動(dòng)程序和vxBus 支持的模塊都抽象成一個(gè)組件, 所有的這些組件都可以單獨(dú)在Workbench[4]中進(jìn)行配置。

    圖1 vxBus 系統(tǒng)關(guān)系圖Fig. 1 The vxBus system context diagram

    1.2 vxBus 驅(qū)動(dòng)組成

    vxBus 下驅(qū)動(dòng)的源程序由以下幾個(gè)文件組成,詳見(jiàn)表1。

    表1 vxBus 下驅(qū)動(dòng)的源程序組成Tab. 1 The sources of vxBus Driver

    1.3 vxBus 開(kāi)發(fā)步驟

    vxBus 的開(kāi)發(fā)步驟如圖2 所示。

    圖2 vxBus 驅(qū)動(dòng)開(kāi)發(fā)的基本步驟Fig. 2 The step of vxBus driver design

    1)驅(qū)動(dòng)模塊的添加

    vxWorks 采用模塊化機(jī)制管理各個(gè)功能單元, 驅(qū)動(dòng)也同樣是由一個(gè)或多個(gè)模塊組成, 其驅(qū)動(dòng)管理是依靠.cdf 文件完成,其添加就是對(duì)driverName.cdf[1]的創(chuàng)建和編寫(xiě)。

    2)驅(qū)動(dòng)模塊的注冊(cè)

    vxWorks 驅(qū)動(dòng)的注冊(cè)通過(guò)driverName.cdf 和driverName.dc 進(jìn)行管理,其注冊(cè)的實(shí)現(xiàn)是通過(guò)函數(shù)vxbDevRegister 完成。其函數(shù)定義為vxbDevRegister(structvxbDevRegInfo*pDevInfo)。

    3)hcfDeviceList 設(shè)備鏈的添加

    在BSP 包中的hwconf.c 文件中根據(jù)設(shè)備結(jié)構(gòu)體添加新增設(shè)備的信息表, 其設(shè)備信息結(jié)構(gòu)體為:struct hcfDevice{char*devName;int devUnit;int busType;int busIndex;int count;const struct hcfResource*pResource;};

    4)注冊(cè)驅(qū)動(dòng)代碼的的編寫(xiě)

    可知vxWorks 的驅(qū)動(dòng)信息結(jié)構(gòu)體為struct vxb Dev RegInfo,其定義為:

    Struct vxbDevRegInfo { Struct vxbDevRegInfo *pNext;UINT32? devID; UINT32? busID; UINT32? vxbVersion; char???drvName [MAX_DRV_NAME_LEN+1]; struct drvBusFuncs *pDrvBusFuncs; struct vxbDeviceMethod * pMethods; BOOL(*devProbe) (struct vxbDev * pDevInfo0;struct vxbParams *pParamDefaults;};其中:

    struct drvBusFuncs{void (*devInstanceInit) (struct vxbDev*);void (*devInstanceInit2 (struct vxbDev *);void(*devInstanceConnect) (struct vxbDev *);};

    這一步就是添加函數(shù)devInstanceInit、devInstanceInit2、devInstanceConnect 的代碼內(nèi)容,對(duì)于vxBus 來(lái)說(shuō)它只是給了一個(gè)驅(qū)動(dòng)框架模型,使驅(qū)動(dòng)程序更加統(tǒng)一。

    2 MPC8641D 與FPGA 的Rapid Io 通訊設(shè)計(jì)

    2.1 平臺(tái)介紹

    本文中設(shè)計(jì)的平臺(tái)對(duì)象如圖3 所示。Mpc8641d[5]與V7[6]系列FPGA 以RapidIo 相連接, 其驅(qū)動(dòng)設(shè)計(jì)即為假設(shè)FPGA為驅(qū)動(dòng)設(shè)備,通過(guò)驅(qū)動(dòng)完成對(duì)設(shè)備的打開(kāi)、關(guān)閉、配置、讀、寫(xiě)操作。

    圖3 信號(hào)處理平臺(tái)簡(jiǎn)圖Fig. 3 The diagram signal processing platform

    2.2 Rapid Io 通訊設(shè)計(jì)

    RapidIo 支持NreadNwrite[7]的讀寫(xiě)、門(mén)鈴、消息操作,為滿(mǎn)足PPC 與FPGA 之間靈活快速響應(yīng)的通訊設(shè)計(jì),采用門(mén)鈴響應(yīng)與NreadNwrite 讀寫(xiě)相配合的實(shí)現(xiàn)方式, 設(shè)計(jì)的控制和數(shù)據(jù)流圖如圖2 所示。

    驅(qū)動(dòng)的主要操作包括5 個(gè)部分, 包括初始化 (init)、讀(read)、寫(xiě)(wite)、打開(kāi)設(shè)備(open)、關(guān)閉設(shè)備(close)。 其中:

    初始化包括根據(jù)配置指令進(jìn)行不同的配置操作,塊數(shù)據(jù)大小、數(shù)據(jù)塊數(shù)、起始地址等。

    讀過(guò)程包括兩部分,首先等待FPGA 設(shè)備發(fā)起的門(mén)鈴中斷,再根據(jù)門(mén)鈴信息提供的數(shù)據(jù)塊號(hào)發(fā)起Nread 操作讀取定塊數(shù)據(jù)。

    寫(xiě)過(guò)程包括兩部分,首先根據(jù)數(shù)據(jù)塊號(hào)發(fā)起Nwrite 操作完成定塊數(shù)據(jù)的寫(xiě)操作, 再向FPGA 發(fā)起門(mén)鈴操作告知FPGA 有新的數(shù)據(jù)塊到達(dá)。

    打開(kāi)設(shè)備包括申請(qǐng)資源、初始化等操作。

    關(guān)閉設(shè)備包括釋放資源、復(fù)位等操作。

    3 驅(qū)動(dòng)開(kāi)發(fā)

    按照本文第二節(jié)中介紹的vxBus 驅(qū)動(dòng)開(kāi)發(fā)步驟和第三節(jié)設(shè)計(jì)的MPC8641D 與FPGA 的RapidIo 通訊方案進(jìn)行驅(qū)動(dòng)開(kāi)發(fā)。

    3.1 驅(qū)動(dòng)開(kāi)發(fā)實(shí)例

    1)驅(qū)動(dòng)模塊的添加

    設(shè)計(jì)的驅(qū)動(dòng)模塊命名為 “FpgaDeviceDriver”, 將其作為BSP 包中硬件驅(qū)動(dòng)的子模塊,其依賴(lài)于vxBus、PLB 兩個(gè)子模塊, 其 注 冊(cè) 函 數(shù) 為”FpgaDriverRegister”, 在BSP 調(diào) 用hardWareInterFaceBusInit 函數(shù)后再調(diào)用, 則編寫(xiě)Fpga Device Driver.cdf 文件如下:

    Component FPGA_DEV_DRIVER {

    NAME FPGA VxBus driver

    SYNOPSIS FPGA VxBus driver provided by JEC

    _CHILDREN FOLDER_DRIVERS

    REQUIRES INCLUDE_VXBUS

    INCLUDE_PLB_BUS

    INIT_RTN FpgaDriverRegister();

    INIT_AFTER INCLUDE_PLB_BUS

    _INIT_ORDER hardWareInterFaceBusInit

    _CHILDREN FOLDER_DRIVERS }

    2)驅(qū)動(dòng)模塊的注冊(cè)

    編 輯 FpgaDeviceDriver.dc 內(nèi) 容 為 IMPORT void FpgaDriverRegister (void);

    編輯FpgaDeviceDriver .dr 內(nèi)容為:

    #ifdef FPGA_DEV_DRIVER

    void FpgaDriverRegister (void);

    #endif

    3)hcfDeviceList 設(shè)備鏈的添加

    在BSP 包中的hwconf.c 文件中的hcfDeviceList[]數(shù)組中添加:

    #if defined (FPGA_DEV_DRIVER)

    {“FpgaDeviceDriver”,0,VXB_BUSID_PLB,0,F(xiàn)pgaDevNum,F(xiàn)pgaDevResources}

    #endif

    其中FpgaDevResources 和FpgaDevNum 分別定義為:

    const struct hcfResource FpgaDevResources [] =

    {{ "irq", HCF_RES_INT, {(void*)(INUM_TO_IVEC(8))} },

    { "irqLevel", HCF_RES_INT, {(void *)1} },

    { " BlockSize ", HCF_RES_INT, {(void *)16*1024 },

    { " Blocks", HCF_RES_INT, {(void *)2} }

    };

    #define FpgaDevNumNELEMENTS(FpgaDevResources)

    4)注冊(cè)驅(qū)動(dòng)代碼的的編寫(xiě)

    這一步就是添加函數(shù) FpgadevInstanceInit、Fpgadev Instance Init2、FpgadevInstanceConnect,FpgaDevInt,FpgaDevTx,FpgaDevRcv 的代碼內(nèi)容。

    3.2 驅(qū)動(dòng)開(kāi)發(fā)實(shí)驗(yàn)

    完成驅(qū)動(dòng)開(kāi)發(fā)后,F(xiàn)PGA 設(shè)備驅(qū)動(dòng)很好的融入到work Bench 的開(kāi)發(fā)系統(tǒng)中, 在建立Image 工程時(shí)開(kāi)發(fā)者能方便的進(jìn)行動(dòng)態(tài)配置如圖4 所示, 并且設(shè)備驅(qū)動(dòng)很好的融入到vxWorks 文件系統(tǒng)中,其設(shè)備可以供應(yīng)用程序員如操作普通文件一樣open/close/write/read,大大有利于應(yīng)用程序開(kāi)發(fā)者的透明調(diào)用不用了解設(shè)備中的細(xì)節(jié)參數(shù)。 同時(shí)通過(guò)數(shù)據(jù)發(fā)送和接收測(cè)試其實(shí)時(shí)性雖有所損失但是其傳輸速率和響應(yīng)時(shí)間仍然能滿(mǎn)足實(shí)時(shí)性要求,延遲響應(yīng)時(shí)間由直接中斷響應(yīng)的15 μs下降至20 μs,但傳輸速率幾乎沒(méi)影響同樣達(dá)到800 MB/s。

    圖4 Workbench Image 工程配置圖Fig. 4 The diagram of Workbench Image config

    4 結(jié) 論

    在研究了VxWorks 的vxBus 驅(qū)動(dòng)模型的基礎(chǔ)上,結(jié)合自身平臺(tái)的特點(diǎn)設(shè)計(jì)了MPC8641D 與FPGA 之間RapidIo 通訊的驅(qū)動(dòng)方案, 經(jīng)過(guò)開(kāi)發(fā)和實(shí)驗(yàn)證明, 基于vxBus 的驅(qū)動(dòng)開(kāi)發(fā)相比直接對(duì)寄存器、 內(nèi)存直接訪(fǎng)問(wèn)方式的驅(qū)動(dòng)的設(shè)計(jì)和開(kāi)發(fā)更靈活,更具有可配置性,硬件設(shè)備更加抽象不失高實(shí)時(shí)性的同時(shí)更有利于應(yīng)用程序開(kāi)發(fā)者的透明調(diào)用。

    [1] Wind River SystermsInc.VxWorks6.8DeviceDriver Developer's Guide[EB/OL]. (2009). [2014-6-16].http://www.windriver.com.

    [2] 尹亞明,李瓊,郭御風(fēng),等. 新型高性能RapidIo互連技術(shù)研究[J]. 計(jì)算機(jī)工程與科學(xué),2004,26(12):85-107.

    [3] 吳海燕. 基于RapidIo總線(xiàn)的信號(hào)處理平臺(tái)設(shè)計(jì)[M]. 電子科技大學(xué),2009.

    [4] Wind River Systerms Inc.Wind River Workbench, 3.2 User's Guide[EB/OL]. (2009). [2014-6-16]. http://www.windriver.com.

    [5] Freescale. MPC8641D Integrated Host Processor Family Reference Manual [EB/OL].(2008).[2014-6-16].http://www.freescale.com.

    [6] Xilinx. 7 Series FPGAs Overview[EB/OL]. (2011).[2014-6-16] http://www.xilinx.com.

    [7] RapidIo Trade Assocition.RapidIo Interconnect Specification,Rev.1.3[EB/OL].(2005). [2014-6-16] .http://www.RapidIo.com.

    猜你喜歡
    門(mén)鈴實(shí)時(shí)性信號(hào)處理
    基于規(guī)則實(shí)時(shí)性的端云動(dòng)態(tài)分配方法研究
    錘子門(mén)鈴
    《信號(hào)處理》征稿簡(jiǎn)則
    《信號(hào)處理》第九屆編委會(huì)
    《信號(hào)處理》征稿簡(jiǎn)則
    《信號(hào)處理》第九屆編委會(huì)
    門(mén)鈴前的守候
    基于虛擬局域網(wǎng)的智能變電站通信網(wǎng)絡(luò)實(shí)時(shí)性仿真
    航空電子AFDX與AVB傳輸實(shí)時(shí)性抗干擾對(duì)比
    給小松鼠家安門(mén)鈴
    紫金县| 明星| 丹棱县| 通海县| 塔河县| 白玉县| 永安市| 恩施市| 商都县| 临安市| 台州市| 法库县| 南安市| 离岛区| 永城市| 永昌县| 巫溪县| 霸州市| 昔阳县| 阳泉市| 宜良县| 石林| 深泽县| 且末县| 宁夏| 深泽县| 秦安县| 浙江省| 陆河县| 眉山市| 五原县| 八宿县| 常宁市| 富源县| 乳山市| 营山县| 永丰县| 琼海市| 保靖县| 凤凰县| 安泽县|