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

基于PCI9054的數據采集卡的設計與實現

2009-04-29 00:00:00王松濤
電腦知識與技術 2009年26期

摘要:介紹了采用PCI9054實現PCI接口數據采集卡的設計方案及實現,其中包括從模式下單周期讀寫和主模式下DMA的實現。結合開發實例,介紹了如何開發PCI接口的DMA驅動程序。

關鍵詞:PCI;單周期讀寫;DMA;驅動

中圖分類號:TP274文獻標識碼:A文章編號:1009-3044(2009)26-7520-02

PCI9054 Data Acquisition Card Based on the Design and Implementation

WANG Song-tao

(Chinese Academy of air-to-air missile, Luoyang 471009, China)

Abstract: This paper introduces the realization of PCI9054 data acquisition card PCI interface design and implementation,including from the single-cycle read and write mode and the main mode of realization of DMA.Combined with the development of examples of how the development of PCI interface DMA driver.

Key words: PCI; single-cycle read and write; DMA; driver

高速數據采集在嵌入式系統、工控領域中有廣泛的應用。采集的數據需要和存儲陣列或者數據處理模塊進行互連。所以標準的、高速的總線選取顯得尤為重要。目前PCI接口的開發方式主要有兩種:一是使用專用的PCI 接口芯片,例如PLX公司的9054,AMCC公司的S593X等;二是使用CPLD/FPGA,自己開發或采用FPGA廠家提供的IPcore實現PCI接口。如果使用第一種方式,用戶可能只會用到專用芯片的一部分功能,會造成資源的浪費,并且PCI接口芯片面積比較大,會給密集型板卡的布線帶來困難。而使用第二種方式則有如下兩個優點:一是設計者可以根據自己的需要開發出PCI接口相應的功能;二是設計者可以將PCI接口宏模塊與用戶邏輯集成在一塊FPGA中,并且可以在頂層通過仿真來驗證PCI接口及用戶邏輯的正確性,這樣可以提高調試速度,縮短開發周期,降低功耗和成本,提高電路板的集成度和性能。本文將詳細討論基于FPGA PCI接口設計,主要包括基于FPGA PCIcore的PCI接口的實現和PCI驅動程序的開發 。

1 存儲器硬件結構介紹及芯片的選型

本板卡是一個高速數據采集板卡AD板卡由高速AD和FPGA、PCI9054組成。其硬件結構如圖所示。

FPGA為整個板卡的控制核心。板卡的控制核心芯片采用Altera公司的EP2 S30 F672C5芯片,它屬于STRA TIXⅡ系列,適合復雜時序邏輯的設計及高速數據的傳輸緩存,也完全適合用PCI IPcore實現PCI接口功能。FPGA實現的主要模塊包括PCI接口模塊、讀FIFO、寫FIFO、接口控制模塊。其中PCI接口實現的功能如下:采數據時,主機通過PCI接口實時存儲,主機通過PCI接口回顯數據波形,判斷數據的有效性;采完數據后,主機通過PCI接口讀回數據并存儲在硬盤中。讀寫FIFO實現異步時鐘同步。

2 PCI模式的讀和寫

2.1 PCI IP core的選擇

Altera 的IP核包括四種類型:PCI_MT64,PCI_MT32,PCI_ T64和PCI_T32。由于我們設計的是32位PCI,并且DMA 控制器必須工作在主模式下,因此選擇了PCI_MT32。

2.2 從模式單周讀寫的實現

在開發PCI接口初期,實現了PCI 從模式下單周讀寫,其時序仿真圖如圖2所示。

周期讀寫適合少量數據傳輸,在第1節中提到的通過PCI接口發命令和地址以及下文將要提到的DMA寄存器的設置都是通過從模式下單周期讀寫實現的。

2.3 主模式下DMA的實現

針對高速傳輸數率的要求,實現了基于PCI_MT32主模式下的DMA傳輸方式。DMA模式是PCI_MT32配合自主設計的DMA控制器來實現的,所以DMA控制器是整個設計的關鍵。于 PCI_MT32沒有DMA控制器,必須自己在 FPGA里面實現DMA控制器。DMA控制器由DMA寄存器、DMA時序狀態機組成。DMA寄存器是主機控制DMA的窗口。DMA狀態機是控制PCI總線數據傳輸的核心,其結構框圖如圖3所示 。

PCI9054是一款高性能的橋接芯片,它把復雜的PCI協議(CPCI與PCI軟件協議一致)轉化為簡單的局部端協議。在設計中它是板卡與主機通信的橋梁。本設計實現了從模式的讀和寫。從模式的寫過程為主機(上層軟件配合驅動程序)把數據通過CPCI總線寫入PCI9054的FIFO,PCI9054檢測到數據后發動局部端總線周期把數據寫出;從模式的讀過程為主機向PCI9054發出地址和讀請求,PCI9054從局部端讀數,然后驅動給主機。由于PCI協議完全得到實現,這里我們只要關心其局部端操作時序的實現。PCI9054有三種局部總線接口模式(M,C,J),本設計選用了C模式,數據線地址線不復用。

·C模式局部端接口所采用的信號如下:

·LCLK:局部端時鐘,輸入信號,本設計時鐘由FPGA驅動,時鐘速率50M;

·LHOLD:局部總線請求,由PCI9054驅動;

·LHOLDA:總線確認信號,由FPGA驅動;

·/ADS:一次讀寫周期的發起信號,由PCI9054發起;

·/BLAST:突發模式的最后一個數據指示,由PCI9054驅動;

·LW/R:讀寫信號,由PCI9054驅動;

·LA[31:2]:地址總線,由于設計采用數據包分發的方式,地址信息隱藏在數據包的首部,所以LA不用;

·LD[31:0]:數據總線;

·/BTERM:持續突發終止信號,由FPGA驅動;

·/READY:當次操作完成信號,由FPGA驅動,若有效則表示可以進行下一個傳送;否則產生等待信號。/READY信號的使用接口協議實現的關鍵。

FPGA與PCI9054的信號連接如圖4所示。

PCI9054的操作時序比較簡單,這里不再詳細分析,不突發的時序有下面三個過程:

1)當主機發起數據傳輸,PCI9054發起LHOLD請求局部端總線控制權,FPGA 有效LHOLDA,允許PCI9054發起操作;

2)檢測到/ADS信號為低時,判斷讀寫操作,如果是讀,檢測讀FIFO是否為空,不為空則拉低/READY,同時驅動數據,數據將在下一周期有效;為空則驅動/READY為高,進入等待。如果是寫,檢測寫FIFO是否為滿,不為滿則拉低/READY,在下一周期從LD上取數據存入FIFO,否則驅動/READY為高,進入等待。

3)PCI9054檢測到/READY為高,進入等待,直到/READY信號為低,此時如果還有數據要發送,回到第二步。

PCI9054支持4字突發以及無限突發模式,這通過設置PCI9054的LBRD0/LBRD1寄存器來實現。突發可以提高局部端接口速度,時序上沒太大區別,多了檢測/BLAST信號及在合適的時候驅動/BTERM,限于篇幅,這里不再贅述。

3 PCI 驅動程序開發

3.1 WDM 驅動程序的工作原理

在 Win2000下,應用程序直接訪問硬件設備是受限制的。為了使用戶應用程序能對硬件資源進行存取,我們開發了工作在內核模式下的PCI驅動程序。WDM模型(Window s Driver Mo del)是現在流行的驅動程序設計的一種構架。我們選用Numega公司的Driver Works來開發運行在 Win2000下的WDM 模式PCI設備驅動程序。在開機或者是掃描即插即用硬件時,總線驅動程序枚舉總線上的設備,并為設備創建一個PDO(Physical Device Object),通知PnP管理器。當PnP管理器發現一個新加入的PDO,就向總線驅動程序發送一個IRP以獲取標識這個設備的符號。PnP管理器通過這個符號參考注冊表以確定這個設備需要哪個驅動程序,接著PnP管理器調用其Ad2dDevice,AddDevice例程創建功能設備對象并將其連入設備堆棧。此后PnP管理器將為所有的設備驅動程序分配資源,一旦資源分配確定,PnP管理器通過向設備發送一個帶有IRP_MN _STAR T_D EVICE 次功能代碼的PnP請求來通知設備。此PnP請求的派遣例程獲分配資源,此后其他派遣例程就可以對獲得的資源進行處理。分配了資源的驅動程序接下來就可以處理其他的IRP,包括對硬件資源存取的IRP。

3.2 驅動開發實例

3.2.1 普通讀寫模式

普通讀寫過程的關鍵是驅動程序如何獲得應用程序的緩沖區。Windows 2000為驅動程序訪問用戶模式數據緩沖區提供了三種方法:Buffered 方式、Direct方式和Neit her方式。在此次開發中,我們使用的是 Direct方式,I/O管理器把用戶輸入緩沖區數據復制到一個系統緩沖區,驅動程序可以用KIrp::IoctlBUffer訪問這個緩沖區。輸出緩沖區被類KMemory對象映射,驅動程序可以用KIrp::Mdl訪問這個緩沖區。

3.2.2 DMA模式讀寫

上面的普通讀寫模式傳輸數據速率很低,所以又實現了DMA模式傳輸。在DMA模式下,讀寫數據都是由PCI_M T32發起的。本例開發使用的是BlockDMA方式,在應用程序以事件驅動,調用Win32A PI函數將其傳到驅動程序,應用程序無限等待事件的觸發,在驅動程序中讀完或寫完數據后觸發事件。事件觸發后,應用程序開始從驅動程序中讀取DMA傳輸的結果。由于篇幅有限,現僅對驅動程序的關鍵幾步介紹一下:

1) 在 Driver St udio 的 Driver Wizard中添加資源,如DMA適配器、內存空間和中斷等等。

2) 在OnStartDevice 例程中初始化硬件中斷并連接到相應的中斷服務程序,建立延遲過程調用,分配一段公共緩沖區來存放DMA傳輸的數據,緩沖區的大小影響DMA速度。

3) 在讀寫例程中設置和DMA、中斷有關的寄存器,啟動DMA傳輸。通過向m_Memo ryRange0表示的存儲器空間寫數,設置DMA寄存器。

4) 在中斷服務例程中,先判斷中斷是否為本設備產生的中斷,是則清除中斷,啟動DPC延遲調用。

5) 在DPC延遲調用中,觸發內核事件,通知應用程序DMA傳輸結束,可以讀取數據。

6) 在DMA讀回例程中,將數據從公共緩沖區拷到用戶模式緩沖區。

4 總結

針對采集數據時所需的高速傳輸速率,本文討論了基于FPGA PCI IPcore的PCI接口中單周期模式讀寫和DMA模式讀寫的實現及其驅動程序的開發。這種設計方法具有電路板集成性能高、功耗低、傳輸速率高的優點。另外用Driv2er Works所開發的DMA模式PCI驅動程序具有通用性,在兩者的結合下很好地實現了主機應用程序對數據進行快速的存取 。

參考文獻:

[1] PCI compiler user guide(vision 4.0)[EB/OL].Altera Corporation,2005.http://www.altera.com.cn/literature/ug/ug_pci.pdf.

[2] 李貴山,陳金鵬.PCI局部總線及其應用[M].西安:西安電子科技大學出版社,2003.

[3] 武安河,邰銘,于洪濤.Windows2000/XP WDM,設備驅動程序開發[M].北京:北京電子工業出版社,2003.

主站蜘蛛池模板: 国产福利影院在线观看| 一级毛片网| 久久精品亚洲中文字幕乱码| 亚洲人成网18禁| 亚洲人网站| 中文字幕天无码久久精品视频免费| 欧美成人日韩| 国产精品私拍在线爆乳| 啊嗯不日本网站| 亚洲欧美成人在线视频| av在线无码浏览| 亚洲欧洲自拍拍偷午夜色| 一本久道久久综合多人| 成·人免费午夜无码视频在线观看 | 久热中文字幕在线观看| 国产亚洲欧美另类一区二区| 中文字幕1区2区| 九九这里只有精品视频| 国产v欧美v日韩v综合精品| 亚洲激情99| 国产亚洲日韩av在线| 亚洲日产2021三区在线| 无码精品福利一区二区三区| 丰满人妻被猛烈进入无码| 美女毛片在线| 国产在线自在拍91精品黑人| 亚洲第一中文字幕| 欧美黄网站免费观看| 国产精品福利在线观看无码卡| a级毛片免费看| 亚洲香蕉在线| 国产精品lululu在线观看| 噜噜噜久久| 欧美日本在线一区二区三区| 亚洲性一区| 免费一看一级毛片| 精品国产Av电影无码久久久 | 2020国产精品视频| 性色生活片在线观看| 日本精品影院| 国产在线91在线电影| 国产午夜小视频| 欧美日韩国产在线观看一区二区三区| 国产二级毛片| 毛片网站免费在线观看| 国产精品一区不卡| 国产精品视频猛进猛出| 无码国产偷倩在线播放老年人| 国产va免费精品观看| 青青热久免费精品视频6| 国产拍在线| 欧美在线中文字幕| 另类重口100页在线播放| 日本三级欧美三级| 婷婷六月激情综合一区| 国产在线观看第二页| 国产亚洲精品97AA片在线播放| 欧美一区二区精品久久久| 思思热精品在线8| P尤物久久99国产综合精品| 无码高潮喷水在线观看| 在线观看免费黄色网址| 欧美另类第一页| 国产美女无遮挡免费视频网站 | 国产对白刺激真实精品91| 亚洲精品制服丝袜二区| 日韩av无码精品专区| 欧美日韩成人| 亚洲最大福利视频网| 毛片久久网站小视频| 精品国产免费观看| 国产一在线| 毛片免费观看视频| 天天躁夜夜躁狠狠躁躁88| 国产毛片基地| 欧美色99| 在线va视频| 国产人成在线观看| 蜜桃视频一区| 91视频99| 毛片手机在线看| 天天色天天综合|