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ù)重點(diǎn)實(shí)驗(yàn)室 浙江 嘉興 314033;2. 中國電子科技集團(tuán)公司第三十六研究所 浙江 嘉興 314033)

隨著數(shù)字信號處理系統(tǒng)向著高實(shí)時性、 高數(shù)據(jù)吞吐率、高靈活性的方向發(fā)展,目前很多信號處理平臺選擇以PPC 為處理器,vxWorks 為實(shí)時操作系統(tǒng),F(xiàn)PGA 進(jìn)行信號預(yù)處理,兩者利用RapidIo 為通信鏈路的設(shè)計架構(gòu)。在這種架構(gòu)下,設(shè)計和實(shí)現(xiàn)好PPC 與FPGA 之間的RapidIo 通信驅(qū)動尤為重要,通常驅(qū)動設(shè)計者采用直接寄存器或內(nèi)存訪問的方式進(jìn)行驅(qū)動的設(shè)計和開發(fā),這種開發(fā)方式雖然有開發(fā)簡單直接,效率高的特點(diǎn),但是驅(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)行了研究,實(shí)現(xiàn)了FPGA 設(shè)備的高抽象,大大有利于應(yīng)用開發(fā)者對FPGA 設(shè)備的透明調(diào)用, 同時滿足信號處理平臺PPC 與FPGA 之間通信的高實(shí)時性、高數(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)用的組件,實(shí)現(xiàn)驅(qū)動的可配置。vxBus 在總線控制驅(qū)動服務(wù)程序的支持下,能在虛擬總線上發(fā)現(xiàn)設(shè)備并與之匹配, 執(zhí)行初始化工作,完成驅(qū)動和硬件設(shè)備之間的正常通信。 其中vxBus 最核心的功能是組件功能,它把每個設(shè)備驅(qū)動程序和vxBus 支持的模塊都抽象成一個組件, 所有的這些組件都可以單獨(dú)在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)行管理,其注冊的實(shí)現(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 讀寫相配合的實(shí)現(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ā)實(shí)例

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ā)實(shí)驗(yàn)

完成驅(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ā)送和接收測試其實(shí)時性雖有所損失但是其傳輸速率和響應(yīng)時間仍然能滿足實(shí)時性要求,延遲響應(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é)合自身平臺的特點(diǎn)設(shè)計了MPC8641D 與FPGA 之間RapidIo 通訊的驅(qū)動方案, 經(jīng)過開發(fā)和實(shí)驗(yàn)證明, 基于vxBus 的驅(qū)動開發(fā)相比直接對寄存器、 內(nèi)存直接訪問方式的驅(qū)動的設(shè)計和開發(fā)更靈活,更具有可配置性,硬件設(shè)備更加抽象不失高實(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è)備運(yùn)行維護(hù)探討
如何在設(shè)備采購中節(jié)省成本
主站蜘蛛池模板: 欧美色图久久| 亚洲AV成人一区国产精品| 亚洲精品午夜天堂网页| 欧美啪啪网| 国产欧美日韩91| 热99re99首页精品亚洲五月天| 欧美三级自拍| 国产激爽爽爽大片在线观看| 狠狠五月天中文字幕| 国产一级毛片网站| 国产成人无码AV在线播放动漫 | 日韩色图区| 九九久久精品国产av片囯产区| 成人亚洲天堂| 在线观看热码亚洲av每日更新| 日韩黄色大片免费看| 免费A∨中文乱码专区| 亚洲综合九九| 黄色片中文字幕| 日韩小视频在线播放| 91美女视频在线| 国产成人精品2021欧美日韩| 亚洲女同一区二区| 久久伊人操| 国产成人精品一区二区免费看京| 99国产在线视频| 国产成+人+综合+亚洲欧美 | 亚洲日韩图片专区第1页| 国产一区成人| 亚洲国产精品国自产拍A| 国产精品自在线拍国产电影| 日本色综合网| 亚洲免费成人网| 精品国产www| 国产麻豆91网在线看| 高清无码不卡视频| 丝袜亚洲综合| 日韩专区第一页| 久久精品这里只有精99品| 国产在线一二三区| 一级福利视频| 国产精品亚洲欧美日韩久久| 国产污视频在线观看| 国产欧美日本在线观看| 久久久久久午夜精品| 国产乱人免费视频| 亚洲熟女偷拍| 成人欧美在线观看| 野花国产精品入口| 99ri精品视频在线观看播放| 免费又爽又刺激高潮网址| 国产亚洲精品资源在线26u| 黑色丝袜高跟国产在线91| 亚洲视频无码| 国产成人AV综合久久| 亚洲中文久久精品无玛| 国产无人区一区二区三区| 欧美 亚洲 日韩 国产| 人妻丰满熟妇αv无码| 视频一区视频二区中文精品| 精品国产www| 人妻夜夜爽天天爽| 男人的天堂久久精品激情| 国产精品女同一区三区五区| 久热精品免费| 国产丰满成熟女性性满足视频| 久久夜色精品| 国产亚洲欧美在线专区| 五月婷婷导航| 久久综合成人| 国产成人精品优优av| 国产xx在线观看| 亚洲男人在线天堂| 国产欧美亚洲精品第3页在线| 国产一区二区三区在线无码| 69av免费视频| 国产区人妖精品人妖精品视频| 免费女人18毛片a级毛片视频| 久久亚洲天堂| 亚洲欧美h| 亚洲一区二区在线无码| a欧美在线|