下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、基于CPCI總線的數(shù)據(jù)采集卡及其驅(qū)動程序設(shè)計摘要介紹了一種基于pi總線的高速數(shù)據(jù)采集卡硬件及其d驅(qū)動程序設(shè)計方法,詳細(xì)說明了計算機(jī)通過驅(qū)動程序與數(shù)據(jù)采集卡硬件進(jìn)展高速數(shù)據(jù)交換的方法,利用driverrks完成了滿足高速數(shù)據(jù)傳輸要求的d驅(qū)動程序設(shè)計,實現(xiàn)了數(shù)據(jù)采集卡與主機(jī)內(nèi)存之間數(shù)據(jù)傳輸?shù)膁a方法。關(guān)鍵詞數(shù)據(jù)采集;d;pi;driverrks;da1引言pi總線機(jī)械特性上有ve總線的鞏固特性,在數(shù)據(jù)傳輸方面采取與pi一致的傳輸方法。高速數(shù)據(jù)采集系統(tǒng)中,總線數(shù)據(jù)傳輸才能要求強(qiáng),數(shù)據(jù)采集系統(tǒng)采用pi總線,極大進(jìn)步了數(shù)據(jù)采集卡的數(shù)據(jù)傳輸才能。為了充分發(fā)揮pi總線數(shù)據(jù)傳輸快、高可靠的優(yōu)勢,要解決好基于p
2、i總線的數(shù)據(jù)采集卡與計算機(jī)主機(jī)之間的通信問題。inds2000操作系統(tǒng)對pi總線提供良好的支持,該操作系統(tǒng)下,驅(qū)動程序的編寫基于一種新的驅(qū)動模型d(indsdriverdel),d為inds98/2000/xp操作系統(tǒng)的設(shè)備驅(qū)動程序的設(shè)計提供了統(tǒng)一的框架。本文介紹的基于pi總線的高速數(shù)據(jù)采集卡用于某數(shù)字化儀digitizer中,借助用driverrks開發(fā)的d設(shè)備驅(qū)動程序,用戶應(yīng)用程序和數(shù)據(jù)采集卡之間互相通信,實現(xiàn)主機(jī)命令的即時傳送和板卡采集數(shù)據(jù)的高速傳輸。2硬件系統(tǒng)設(shè)計針對不同的應(yīng)用要求,pi接口卡設(shè)計采用的設(shè)計方案,一是使用pi專用接口芯片與fpga相結(jié)合的方案,專用接口芯片完成從pi總線
3、到本地用戶總線的轉(zhuǎn)接;fpga靈敏的轉(zhuǎn)換邏輯時序,以適應(yīng)不同的外設(shè)時序要求;二是采用可編程邏輯器件實現(xiàn)通用pi總線接口,很多消費可編程邏輯器件的廠商都提供經(jīng)過嚴(yán)格測試的pi接口功能模塊,由用戶進(jìn)展簡單的組合設(shè)計即可??紤]到開發(fā)周期,本pi數(shù)據(jù)采集卡采用前一種設(shè)計方法,用pi專用接口芯片實現(xiàn)。系統(tǒng)硬件組成如圖1所示。本數(shù)據(jù)采集卡pi接口芯片選用plx公司的pi9054,pi9054提供兩個獨立的可編程da控制器,有兩個da通道,每個通道均支持blk(塊傳輸)和satter/gather(散/集傳輸)的da方式,pi總線端支持32位/33hz;本地端可編程實現(xiàn)8、16、32位數(shù)據(jù)寬度,傳輸速率最高
4、可到達(dá)132字節(jié)/秒。本地總線端時鐘最高可達(dá)50hz,支持復(fù)用j形式和非復(fù)用的32位地址/數(shù)據(jù)形式。pi9054工作方式有:直接主形式,直接從形式和da形式。直接主形式由本地處理器訪問pi總線上的i/接口和計算機(jī)內(nèi)存資源,本地處理器發(fā)起數(shù)據(jù)的傳輸。直接從形式指pi總線作為主控設(shè)備發(fā)起對本地總線資源的訪問,包括對本地處理器的控制和對本地內(nèi)存的訪問。da形式支持pi總線與本地總線之間的突發(fā)傳輸。pi9054實現(xiàn)了pi總線到部分端總線的轉(zhuǎn)接,用該芯片做設(shè)計時,不必對pi標(biāo)準(zhǔn)作全面深化理解,方便用戶在設(shè)計時專注于詳細(xì)功能的實現(xiàn)。本設(shè)計中pi9054設(shè)置為非復(fù)用的32位地址/數(shù)據(jù),即形式,采用直接從形式
5、和da方式分別傳輸主機(jī)命令和數(shù)據(jù)采集卡采集到的數(shù)據(jù);可編程邏輯器件fpga里邊配置一個fif作為緩沖器,當(dāng)主機(jī)向數(shù)據(jù)采集卡發(fā)送命令時,fif作為命令數(shù)據(jù)的緩沖器,命令數(shù)據(jù)發(fā)送完畢,引起dsp的一個中斷,dsp從fif里讀出命令數(shù)據(jù),對命令解析,完成實際的硬件操作;當(dāng)主機(jī)要讀取數(shù)據(jù)采集卡采集到的數(shù)據(jù)時,dsp對sra中數(shù)據(jù)作預(yù)處理,上傳到fpga里邊配置的fif中,這時fif作為數(shù)據(jù)采集卡上傳數(shù)據(jù)的緩沖器,當(dāng)fif數(shù)據(jù)滿時,引起pi中斷,通知上層應(yīng)用程序讀取數(shù)據(jù)。eepr中存放設(shè)備號,廠商號以及本地總線的基地址空間,i/空間,中斷控制信號等信息,初始化時,系統(tǒng)將eepr配置參數(shù)裝入pi配置存放器
6、,并根據(jù)本地總線對內(nèi)存,i/端口和中斷的需求統(tǒng)一劃分,自動分配系統(tǒng)資源。3數(shù)據(jù)采集卡d驅(qū)動程序設(shè)計3.1d模型(indsdriverdel)簡述d模型(indsdriverdel)是微軟公司為inds98和inds2000的驅(qū)動程序設(shè)計的一種架構(gòu),在d驅(qū)動程序模型中,每個硬件設(shè)備至少有兩個驅(qū)動程序。其中一個為功能驅(qū)動程序,它理解硬件工作的所有細(xì)節(jié),負(fù)責(zé)初始化i/操作,處理i/操作完成時所帶來的中斷事件,為用戶提供與設(shè)備相合適的控制方式;另一個驅(qū)動程序為總線驅(qū)動程序,它負(fù)責(zé)管理硬件與計算機(jī)的連接,總線驅(qū)動程序由操作系統(tǒng)提供。ind2000系統(tǒng)構(gòu)造圖如圖2所示,應(yīng)用程序調(diào)用inds子系統(tǒng)in32a
7、pi,這個調(diào)用由系統(tǒng)效勞接口作用到i/管理器,i/管理器進(jìn)展必要的參數(shù)匹配和操作平安性檢查,然后由這個懇求構(gòu)造出適宜的irp(i/requestpakage)。irp是ddk定義的一個數(shù)據(jù)構(gòu)造,具有豐富的成員,對于單層驅(qū)動程序,直接承受并執(zhí)行這個懇求包,完成對硬件的操作,從而完成i/懇求工作,并將執(zhí)行的結(jié)果通過i/管理器返回應(yīng)用程序;對于多層驅(qū)動那么將驅(qū)動程序分成假設(shè)干層,每層驅(qū)動再把i/懇求劃分成更簡單的懇求,以傳給更下層的驅(qū)動執(zhí)行。圖2inds2000系統(tǒng)構(gòu)造3.2驅(qū)動程序設(shè)計實現(xiàn)該數(shù)據(jù)采集卡驅(qū)動程序完成以下功能:應(yīng)用程序控制數(shù)據(jù)采集卡工作方式,向數(shù)據(jù)采集卡工作方式緩沖器發(fā)送工作方式控制字
8、;應(yīng)用程序查詢數(shù)據(jù)采集卡工作狀態(tài),從數(shù)據(jù)采集卡工作狀緩沖器讀取工作狀態(tài)字;為了使應(yīng)用程序能實時處理數(shù)據(jù)采集卡上采集到的數(shù)據(jù),sra與主機(jī)內(nèi)存之間要實現(xiàn)da方式的數(shù)據(jù)傳輸。采用v+ddk+driverrks進(jìn)展驅(qū)動程序開發(fā),driverrks為驅(qū)動程序開發(fā)提供向?qū)В梢苑奖愕慕⒁粋€驅(qū)動程序框架。下面分別說明控制命令和da方式傳輸數(shù)據(jù)的實現(xiàn)方法。1)主機(jī)發(fā)送數(shù)據(jù)采集卡控制命令實現(xiàn)driverrks利用keryrange和kirange實現(xiàn)內(nèi)存和i/映射空間的讀寫,通過配置eepr,將pi9054的base2空間設(shè)定為一個內(nèi)存映射空間,部分端fpga上配置的fif地址空間映射到該內(nèi)存空間,這樣對f
9、if的訪問,就是訪問base2空間。驅(qū)動程序中,創(chuàng)立對象keryrange_eryrangefrb2,并在nstartdevie(kirpi)例程中對該對象初始化,使該對象與base2空間關(guān)聯(lián),初始化以后,驅(qū)動程序其他例程就可以使用對象_eryrangefrb2,調(diào)用keryrange類的成員函數(shù)ind、in、inb、utd、ut、utb完成對pi9054base2空間的雙字、字、字節(jié)的輸入輸出操作,也就是對數(shù)據(jù)采集卡fpga里邊f(xié)if雙字、字、字節(jié)的輸入輸出操作。對i端口的訪問類似,只是使用的是kirange類來完成。需要注意的是pi9054base0、base1固定設(shè)置為內(nèi)存映射空間和i/
10、映射空間,用于pi9054內(nèi)部存放器的訪問,base2、base3用戶自己根據(jù)eepr配置來設(shè)定為內(nèi)存映射空間或者i/0映射空間。在驅(qū)動程序設(shè)計過程中,經(jīng)常需要設(shè)置和查詢pi9054內(nèi)部存放器,訪問pi9054內(nèi)部存放器,要用到base0或base1空間,本設(shè)計中,對pi9054內(nèi)部存放器訪問利用base1,即i映射空間,比方:pi9054da通道0傳輸字節(jié)數(shù)存放器偏移為0 x8,假設(shè)要設(shè)定da通道0一次傳輸?shù)淖止?jié)數(shù),可以通過初始化了的kirange對象_irange0的成員函數(shù)utd來實現(xiàn)。下面以主機(jī)由驅(qū)動程序向數(shù)據(jù)采集卡發(fā)送工作方式控制字為例,說明keryrange成員函數(shù)訪問硬件的方法,
11、代碼中_eryrangefrb2為keryrange對象,用于base2空間的訪問。ntstatusdzdevie:dzdriver_itl_rite_handler(kirpi)ntstatusstatus=status_suess;pulngpbuffer=(pulng)i.itlbuffer();/輸入?yún)?shù)ulng_ffset=*pbuffer;/控制字存放器在部分地址空間上的偏移ulng_data=*(pbuffer+2);/控制字_eryrangefrb2.ut(_ffset,_data);/向存放器寫控制字i.infratin()=sizef(ulng);/本次操作傳輸?shù)淖止?jié)數(shù)re
12、turnstatus;驅(qū)動程序控制字寫函數(shù)中,首先獲得從應(yīng)用程序傳遞的偏移地址和控制字的指針,偏移地址和控制字存儲在irp的assiatedirp域中systebuffer指針指向的緩沖區(qū),驅(qū)動程序先獲得指向該緩沖區(qū)的指針,然后分別獲得偏移地址和控制字,最后向該偏移地址寫控制字,程序執(zhí)行后,即向硬件上的存放器寫入了相應(yīng)的控制字。2)da方式讀取fpga上fif數(shù)據(jù)實現(xiàn)driverrks提供了3個類kdaadapter、kdatransfer、kndabuffer用于實現(xiàn)da操作,kdaadapter類用于建立一個da適配器對象,說明da通道特性和提供串行化訪問的效勞;kdatransfer類用
13、于啟動,控制da的傳輸以及da傳輸完畢后數(shù)據(jù)由公用緩沖區(qū)拷貝靠應(yīng)用程序數(shù)據(jù)緩沖區(qū);kndabuffer類用于申請系統(tǒng)提供的公用緩沖區(qū)。driverrks中,實現(xiàn)da傳輸過程如圖3所示。首先在設(shè)備啟動例程(nstartdevie)中創(chuàng)立一個kdaadapter類實例且在適配器對象描繪表中正確描繪適配器對象;創(chuàng)立一個kndabufer類實例,調(diào)用該類的成員函數(shù)initialize初始化公用緩沖區(qū)大??;創(chuàng)立一個kdatransfer類實例,并初始化為使用公用緩沖區(qū)作為da數(shù)據(jù)區(qū)。然后編寫kdatransfer回調(diào)函數(shù)ndaready,回調(diào)函數(shù)中,先調(diào)用成員函數(shù)bytereaining(),判斷數(shù)據(jù)是
14、否傳輸完成。假設(shè)完成,那么調(diào)用函數(shù)terinate()完成相應(yīng)當(dāng)irp;未完成,那么調(diào)用gettransferdesripters(),獲取當(dāng)前傳輸數(shù)據(jù)的物理地址,傳輸字節(jié)數(shù),然后進(jìn)入startda例程設(shè)置pi9054的da存放器,開場真正數(shù)據(jù)傳輸。當(dāng)前段傳輸完成時,pi9054的da中斷控制器產(chǎn)生一個da中斷,進(jìn)入中斷效勞例程isr,中斷效勞例程中,首先判斷是否為da通道的中斷,然后制止本次中斷,再去除本次中斷,最后連接到延時過程調(diào)用(dp)。延時過程調(diào)用(dp)中,調(diào)用kdatransfer類的ntinue()成員函數(shù),繼續(xù)下一個段傳輸,直到da數(shù)據(jù)傳輸完畢,完成該irp。3.3驅(qū)動程序和
15、應(yīng)用程序之間的通信驅(qū)動程序和應(yīng)用程序之間的通信包括應(yīng)用程序與驅(qū)動程序通訊和驅(qū)動程序與應(yīng)用程序的通信。應(yīng)用程序與驅(qū)動程序通信過程為,應(yīng)用程序先用reatefile函數(shù)翻開設(shè)備,然后用devieintrl和驅(qū)動程序通信,devieintrl使用不同的命令字來調(diào)用驅(qū)動程序中的函數(shù),包括從驅(qū)動驅(qū)動程序讀取數(shù)據(jù)和寫數(shù)據(jù)給驅(qū)動程序兩種情況。也可以用readfile從驅(qū)動中讀取數(shù)據(jù)或者用ritefile寫數(shù)據(jù)給驅(qū)動程序,當(dāng)應(yīng)用程序退出時,用lsehandle關(guān)閉設(shè)備。當(dāng)驅(qū)動程序捕捉到特點事件發(fā)生時,應(yīng)當(dāng)通知應(yīng)用程序,與應(yīng)用程序通信,驅(qū)動程序和應(yīng)用程序通信的方法主要有兩種,devieintrl異步調(diào)用和in3
16、2事件通知。devieintrl異步調(diào)用時,驅(qū)動程序先將此irp保存起來,然后調(diào)用i.arkpending(),最后驅(qū)動程序返回status_pending,當(dāng)一個事件發(fā)生時,驅(qū)動程序再完成這個irp;使用in32事件通知和應(yīng)用程序通信時,應(yīng)用程序首先創(chuàng)立一個事件,直接將該事件句柄傳遞給驅(qū)動程序,應(yīng)用程序等待驅(qū)動程序發(fā)送事件消息。4完畢語數(shù)據(jù)采集是現(xiàn)實世界模擬信號到便于計算機(jī)處理的數(shù)字信號的第一步,數(shù)據(jù)采集卡是實現(xiàn)數(shù)據(jù)采集的關(guān)鍵設(shè)備。根據(jù)上述數(shù)據(jù)采集卡硬件,用driverrks成功開發(fā)了基于pi總線的數(shù)據(jù)采集卡驅(qū)動程序。為測試驅(qū)動程序工作正常與否,編寫了上層測試應(yīng)用程序,測試說明,驅(qū)動程序可以快速加載主機(jī)控制命令,通過da方式
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 租房協(xié)議書游戲
- 2025年度個人住房按揭貸款合同協(xié)議3篇
- 2025年度個人房產(chǎn)租賃押金返還融資協(xié)議4篇
- 2025年度鋼材貿(mào)易代理與結(jié)算服務(wù)合同
- 2025-2030全球單深位旋轉(zhuǎn)伸縮貨叉行業(yè)調(diào)研及趨勢分析報告
- 2025-2030全球奶酪凝乳酶行業(yè)調(diào)研及趨勢分析報告
- 2025-2030全球棉籽濃縮蛋白 (CPC)行業(yè)調(diào)研及趨勢分析報告
- 2024年軍隊文職人員招聘考試《教育學(xué)》模擬卷2
- 外教聘請中介合同合同協(xié)議
- 2025年度個人挖掘機(jī)租賃安全責(zé)任合同4篇
- 2024公路瀝青路面結(jié)構(gòu)內(nèi)部狀況三維探地雷達(dá)快速檢測規(guī)程
- 浙江省臺州市2021-2022學(xué)年高一上學(xué)期期末質(zhì)量評估政治試題 含解析
- 2024年高考真題-地理(河北卷) 含答案
- 中國高血壓防治指南(2024年修訂版)解讀課件
- 2024年浙江省中考科學(xué)試卷
- 初三科目綜合模擬卷
- 2024風(fēng)力發(fā)電葉片維保作業(yè)技術(shù)規(guī)范
- 《思想道德與法治》課程教學(xué)大綱
- 2024光儲充一體化系統(tǒng)解決方案
- 2024年全國高考新課標(biāo)卷物理真題(含答案)
- 處理后事授權(quán)委托書
評論
0/150
提交評論