999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

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

2015-08-26 06:39:30孟金芳
電子設(shè)計工程 2015年24期
關(guān)鍵詞:設(shè)備設(shè)計

石 煒, 孟金芳

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

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

1 vxBus 驅(qū)動開發(fā)模型

1.1 vxBus 介紹

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

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

1.2 vxBus 驅(qū)動組成

vxBus 下驅(qū)動的源程序由以下幾個文件組成,詳見表1。

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

1.3 vxBus 開發(fā)步驟

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

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

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

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

2)驅(qū)動模塊的注冊

vxWorks 驅(qū)動的注冊通過driverName.cdf 和driverName.dc 進(jìn)行管理,其注冊的實現(xiàn)是通過函數(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)注冊驅(qū)動代碼的的編寫

可知vxWorks 的驅(qū)動信息結(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)容,對于vxBus 來說它只是給了一個驅(qū)動框架模型,使驅(qū)動程序更加統(tǒng)一。

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

2.1 平臺介紹

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

圖3 信號處理平臺簡圖Fig. 3 The diagram signal processing platform

2.2 Rapid Io 通訊設(shè)計

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

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

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

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

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

打開設(shè)備包括申請資源、初始化等操作。

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

3 驅(qū)動開發(fā)

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

3.1 驅(qū)動開發(fā)實例

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

設(shè)計的驅(qū)動模塊命名為 “FpgaDeviceDriver”, 將其作為BSP 包中硬件驅(qū)動的子模塊,其依賴于vxBus、PLB 兩個子模塊, 其 注 冊 函 數(shù) 為”FpgaDriverRegister”, 在BSP 調(diào) 用hardWareInterFaceBusInit 函數(shù)后再調(diào)用, 則編寫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ū)動模塊的注冊

編 輯 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)注冊驅(qū)動代碼的的編寫

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

3.2 驅(qū)動開發(fā)實驗

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

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

4 結(jié) 論

在研究了VxWorks 的vxBus 驅(qū)動模型的基礎(chǔ)上,結(jié)合自身平臺的特點設(shè)計了MPC8641D 與FPGA 之間RapidIo 通訊的驅(qū)動方案, 經(jīng)過開發(fā)和實驗證明, 基于vxBus 的驅(qū)動開發(fā)相比直接對寄存器、 內(nèi)存直接訪問方式的驅(qū)動的設(shè)計和開發(fā)更靈活,更具有可配置性,硬件設(shè)備更加抽象不失高實時性的同時更有利于應(yīng)用程序開發(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ī)工程與科學(xué),2004,26(12):85-107.

[3] 吳海燕. 基于RapidIo總線的信號處理平臺設(shè)計[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.

猜你喜歡
設(shè)備設(shè)計
諧響應(yīng)分析在設(shè)備減振中的應(yīng)用
何為設(shè)計的守護(hù)之道?
《豐收的喜悅展示設(shè)計》
流行色(2020年1期)2020-04-28 11:16:38
基于VB6.0+Access2010開發(fā)的設(shè)備管理信息系統(tǒng)
瞞天過海——仿生設(shè)計萌到家
基于MPU6050簡單控制設(shè)備
電子制作(2018年11期)2018-08-04 03:26:08
設(shè)計秀
海峽姐妹(2017年7期)2017-07-31 19:08:17
有種設(shè)計叫而專
Coco薇(2017年5期)2017-06-05 08:53:16
500kV輸變電設(shè)備運行維護(hù)探討
如何在設(shè)備采購中節(jié)省成本
主站蜘蛛池模板: 亚洲成aⅴ人片在线影院八| 国产精品大白天新婚身材| 无码国产偷倩在线播放老年人 | 色婷婷视频在线| 国产精品美人久久久久久AV| 久久久受www免费人成| 精品91视频| 久久综合久久鬼| 国产视频资源在线观看| 呦视频在线一区二区三区| 性欧美在线| 91在线无码精品秘九色APP| 97在线国产视频| 亚洲成人网在线播放| 欧美一级专区免费大片| 在线一级毛片| 亚洲第一色视频| 一本大道香蕉久中文在线播放| 在线观看欧美国产| 国产成人精品无码一区二| 欧美啪啪网| 四虎永久在线视频| 国产精品熟女亚洲AV麻豆| 99在线免费播放| 久久精品人妻中文系列| 色婷婷亚洲十月十月色天| 伊人久久大香线蕉aⅴ色| 欧美精品三级在线| 亚洲男人的天堂在线| 国产成人精品一区二区不卡| 欧美高清三区| 国产精品亚洲а∨天堂免下载| 免费精品一区二区h| 91精品视频在线播放| 一区二区理伦视频| 99性视频| 成人亚洲视频| 中文字幕伦视频| 无码日韩精品91超碰| 国产中文一区a级毛片视频| 国产亚洲欧美日本一二三本道| 亚洲第一视频网| 成人在线天堂| 国产肉感大码AV无码| 无码人妻热线精品视频| 亚洲色无码专线精品观看| 免费看a毛片| 国产精品第一区| 国产福利在线观看精品| 亚洲日韩久久综合中文字幕| A级全黄试看30分钟小视频| 最新日本中文字幕| 国产麻豆精品久久一二三| 国产精品亚洲αv天堂无码| 亚洲av无码牛牛影视在线二区| 国产地址二永久伊甸园| 国产美女91呻吟求| 91视频区| 欧美亚洲国产日韩电影在线| 白浆视频在线观看| 国产女人在线视频| 99免费视频观看| 极品国产一区二区三区| 99久久精品免费视频| 国产精品lululu在线观看 | 亚洲国产中文精品va在线播放| 在线观看免费AV网| 亚洲精品无码在线播放网站| 亚洲第一av网站| 婷婷亚洲视频| 亚洲香蕉久久| 国产黄色片在线看| 成年人免费国产视频| 亚洲浓毛av| 永久免费精品视频| 91区国产福利在线观看午夜| 朝桐光一区二区| 国产簧片免费在线播放| 亚洲精品欧美日本中文字幕| 久久久久国产精品熟女影院| 欧美视频在线播放观看免费福利资源| AV色爱天堂网|