基于CPCI總線的數(shù)據(jù)采集卡及其驅(qū)動程序設(shè)計_第1頁
基于CPCI總線的數(shù)據(jù)采集卡及其驅(qū)動程序設(shè)計_第2頁
基于CPCI總線的數(shù)據(jù)采集卡及其驅(qū)動程序設(shè)計_第3頁
基于CPCI總線的數(shù)據(jù)采集卡及其驅(qū)動程序設(shè)計_第4頁
基于CPCI總線的數(shù)據(jù)采集卡及其驅(qū)動程序設(shè)計_第5頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、基于CPCI總線的數(shù)據(jù)網(wǎng)羅卡及其驅(qū)動程序方案摘要介紹了一種基于pi總線的下速數(shù)據(jù)網(wǎng)羅卡硬件及其d驅(qū)動程序方案要收,詳細闡年夜黑策畫機經(jīng)由過程驅(qū)動程序與數(shù)據(jù)網(wǎng)羅卡硬件舉止下速數(shù)據(jù)交換的要收,操做driverrks完成了開意下速數(shù)據(jù)傳輸要供的d驅(qū)動程序方案,真現(xiàn)了數(shù)據(jù)網(wǎng)羅卡與主機內(nèi)存之間數(shù)據(jù)傳輸?shù)膁a要收。閉鍵詞數(shù)據(jù)網(wǎng)羅;d;pi;driverrks;da1引止pi總線機械特征上有ve總線的穩(wěn)固特征,正在數(shù)據(jù)傳輸圓里采與與pi劃一的傳輸要收。下速數(shù)據(jù)網(wǎng)羅系統(tǒng)中,總線數(shù)據(jù)傳輸本領(lǐng)要供強,數(shù)據(jù)網(wǎng)羅系統(tǒng)采與pi總線,極年夜前進了數(shù)據(jù)網(wǎng)羅卡的數(shù)據(jù)傳輸本領(lǐng)。為了充分闡揚pi總線數(shù)據(jù)傳輸快、下牢靠的下風(fēng),要挨

2、面好基于pi總線的數(shù)據(jù)網(wǎng)羅卡與策畫機主機之間的通信標題問題。inds2000操做系統(tǒng)對pi總線供給良好的支撐,該操做系統(tǒng)下,驅(qū)動程序的編寫基于一種新的驅(qū)動模型d(indsdriverdel),d為inds98/2000/xp操做系統(tǒng)的裝備驅(qū)動程序的方案供給了統(tǒng)一的框架。本文介紹的基于pi總線的下速數(shù)據(jù)網(wǎng)羅卡用于某數(shù)字化儀digitizer中,借助用driverrks開拓的d裝備驅(qū)動程序,用戶使用程序戰(zhàn)數(shù)據(jù)網(wǎng)羅卡之間互相通信,真現(xiàn)主機命令的坐即傳支戰(zhàn)板卡網(wǎng)羅數(shù)據(jù)的下速傳輸。2硬件系統(tǒng)方案針對沒有同的使用要供,pi接心卡方案采與的方案方案,一是操做pi公用接心芯片與fpga相結(jié)開的方案,公用接心芯

3、片完成從pi總線到本天用戶總線的轉(zhuǎn)接;fpga靈敏的轉(zhuǎn)換邏輯時序,以逆應(yīng)沒有同的中設(shè)時序要供;兩是采與可編程邏輯器件真現(xiàn)通用pi總線接心,很多消費可編程邏輯器件的廠商皆供給經(jīng)過寬酷測試的pi接心成效模塊,由用戶舉止簡樸的組開方案便可??紤]到開拓周期,本pi數(shù)據(jù)網(wǎng)羅卡采與前一種方案要收,用pi公用接心芯片真現(xiàn)。系統(tǒng)硬件組成如圖1所示。本數(shù)據(jù)網(wǎng)羅卡pi接心芯片選用plx公司的pi9054,pi9054供給兩個自力的可編程da操做器,有兩個da通講,每一個通講均支撐blk(塊傳輸)戰(zhàn)satter/gather(散/散傳輸)的da方法,pi總線端支撐32位/33hz;本天端可編程真現(xiàn)8、16、32位數(shù)

4、據(jù)寬度,傳輸速度最下可抵達132字節(jié)/秒。本天總線端時鐘最下可達50hz,支撐復(fù)用j形式戰(zhàn)非復(fù)用的32位所在/數(shù)據(jù)形式。pi9054工作方法有:間接主形式,間接從形式戰(zhàn)da形式。間接主形式由本天處理器訪謁pi總線上的i/接心戰(zhàn)策畫機內(nèi)存資本,本天處理器倡導(dǎo)數(shù)據(jù)的傳輸。間接從形式指pi總線做為主控裝備倡導(dǎo)對本天總線資本的訪謁,包含對本天處理器的操做戰(zhàn)對本天內(nèi)存的訪謁。da形式支撐pi總線與本天總線之間的突收傳輸。pi9054真現(xiàn)了pi總線到局部端總線的轉(zhuǎn)接,用該芯片做方案時,沒必要對pi標準做片里深化年夜黑,便當(dāng)用戶正在方案時專注于詳細成效的真現(xiàn)。本方案中pi9054設(shè)置為非復(fù)用的32位所在/數(shù)

5、據(jù),即形式,采與間接從形式戰(zhàn)da方法分別傳輸主機命令戰(zhàn)數(shù)據(jù)網(wǎng)羅卡網(wǎng)羅到的數(shù)據(jù);可編程邏輯器件fpga里邊設(shè)置一個fif做為緩沖器,當(dāng)主機背數(shù)據(jù)網(wǎng)羅卡收支命令時,fif做為命令數(shù)據(jù)的緩沖器,命令數(shù)據(jù)收支終了,惹起dsp的一此截至,dsp從fif里讀出命令數(shù)據(jù),對命令分析,完成真踐的硬件操做;當(dāng)主機稀讀與數(shù)據(jù)網(wǎng)羅卡網(wǎng)羅到的數(shù)據(jù)時,dsp對sra中數(shù)據(jù)做預(yù)處理,上傳到fpga里邊設(shè)置的fif中,那時fif做為數(shù)據(jù)網(wǎng)羅卡上傳數(shù)據(jù)的緩沖器,當(dāng)fif數(shù)據(jù)謙時,惹起pi截至,照顧上層使用程序讀與數(shù)據(jù)。eepr中存放裝備號,廠商號和本天總線的基所在空間,i/空間,截至操做疑號等疑息,初初化時,系統(tǒng)將eepr設(shè)

6、置參數(shù)拆進pi設(shè)置存放器,并根據(jù)本天總線對內(nèi)存,i/端心戰(zhàn)截至的需供統(tǒng)一分別,自動分撥系統(tǒng)資本。3數(shù)據(jù)網(wǎng)羅卡d驅(qū)動程序方案3.1d模型(indsdriverdel)簡述d模型(indsdriverdel)是微硬公司為inds98戰(zhàn)inds2000的驅(qū)動程序方案的一種架構(gòu),正在d驅(qū)動程序模型中,每一個硬件裝備最少有兩個驅(qū)動程序。其中一個為成效驅(qū)動程序,它理解硬件工作的局部細節(jié),負責(zé)初初化i/操做,處理i/操做完成時所帶去的截至事變,為用戶供給與裝備相恰當(dāng)?shù)牟僮龇椒?;另外一個驅(qū)動程序為總線驅(qū)動程序,它負責(zé)挨面硬件與策畫機的毗鄰,總線驅(qū)動程序由操做系統(tǒng)供給。ind2000系統(tǒng)規(guī)劃圖如圖2所示,使用程

7、序挪用inds子系統(tǒng)in32api,那個挪用由系統(tǒng)處事接心做用到i/挨面器,i/挨面器舉止需要的參數(shù)婚配戰(zhàn)操做安好性檢查,然后由那個懇供規(guī)劃出契開的irp(i/requestpakage)。irp是ddk定義的一個數(shù)據(jù)規(guī)劃,具有豐富的成員,對于單層驅(qū)動程序,間接擔(dān)任并真止那個懇供包,完成對硬件的操做,從而完成i/懇供工作,并將真止的結(jié)果經(jīng)由過程i/挨面器返回使用程序;對于多層驅(qū)動那么將驅(qū)動程序分紅幾層,每層驅(qū)動再把i/懇供分別成更簡樸的懇供,以傳給更基層的驅(qū)動真止。圖2inds2000系統(tǒng)規(guī)劃3.2驅(qū)動程序方案真現(xiàn)該數(shù)據(jù)網(wǎng)羅卡驅(qū)動程序完成以下成效:使用程序操做數(shù)據(jù)網(wǎng)羅卡工作方法,背數(shù)據(jù)網(wǎng)羅卡工

8、作方法緩沖器收支工作方法操做字;使用程序查詢數(shù)據(jù)網(wǎng)羅卡工作形態(tài),從數(shù)據(jù)網(wǎng)羅卡工作狀緩沖器讀與工作形態(tài)字;為了使使用程序能實時處理數(shù)據(jù)網(wǎng)羅卡上網(wǎng)羅到的數(shù)據(jù),sra與主機內(nèi)存之間要真現(xiàn)da方法的數(shù)據(jù)傳輸。采與v+ddk+driverrks舉止驅(qū)動程序開拓,driverrks為驅(qū)動程序開拓供給指導(dǎo),可以便當(dāng)?shù)膭?chuàng)坐一個驅(qū)動程序框架。上里分別分析操做命令戰(zhàn)da方法傳輸數(shù)據(jù)的真現(xiàn)要收。1)主機收支數(shù)據(jù)網(wǎng)羅卡操做命令真現(xiàn)driverrks操做keryrange戰(zhàn)kirange真現(xiàn)內(nèi)存戰(zhàn)i/映照空間的讀寫,經(jīng)由過程設(shè)置eepr,將pi9054的base2空間設(shè)定為一個內(nèi)存映照空間,局部端fpga上設(shè)置的fif

9、所在空間映照到該內(nèi)存空間,多么對fif的訪謁,便是訪謁base2空間。驅(qū)動程序中,創(chuàng)坐東西keryrange_eryrangefrb2,并正在nstartdevie(kirpi)例程中對該東西初初化,使該東西與base2空間聯(lián)絡(luò)閉系,初初化當(dāng)前,驅(qū)動程序其他例程便可以操做東西_eryrangefrb2,挪用keryrange類的成員函數(shù)ind、in、inb、utd、ut、utb完成對pi9054base2空間的單字、字、字節(jié)的輸進輸出操做,也便是對數(shù)據(jù)網(wǎng)羅卡fpga里邊f(xié)if單字、字、字節(jié)的輸進輸出操做。對i端心的訪謁一樣,只是操做的是kirange類去完成。需要注意的是pi9054base0

10、、base1穩(wěn)固設(shè)置為內(nèi)存映照空間戰(zhàn)i/映照空間,用于pi9054內(nèi)部存放器的訪謁,base2、base3用戶自己根據(jù)eepr設(shè)置去設(shè)定為內(nèi)存映照空間年夜要i/0映照空間。正在驅(qū)動程序方案過程中,經(jīng)常需要設(shè)置戰(zhàn)查詢pi9054內(nèi)部存放器,訪謁pi9054內(nèi)部存放器,要用到base0或base1空間,本方案中,對pi9054內(nèi)部存放器訪謁操做base1,即i映照空間,比方:pi9054da通講0傳輸字節(jié)數(shù)存放器偏偏移為0 x8,假設(shè)要設(shè)定da通講0一次傳輸?shù)淖止?jié)數(shù),可以經(jīng)由過程初初化了的kirange東西_irange0的成員函數(shù)utd去真現(xiàn)。上里以主機由驅(qū)動程序背數(shù)據(jù)網(wǎng)羅卡收支工作方法操做字為

11、例,分析keryrange成員函數(shù)訪謁硬件的要收,代碼中_eryrangefrb2為keryrange東西,用于base2空間的訪謁。ntstatusdzdevie:dzdriver_itl_rite_handler(kirpi)ntstatusstatus=status_suess;pulngpbuffer=(pulng)i.itlbuffer();/輸進參數(shù)ulng_ffset=*pbuffer;/操做字存放器正在局部所在空間上的偏偏移ulng_data=*(pbuffer+2);/操做字_eryrangefrb2.ut(_ffset,_data);/背存放器寫操做字i.infratin(

12、)=sizef(ulng);/本次操做傳輸?shù)淖止?jié)數(shù)returnstatus;驅(qū)動程序操做字寫函數(shù)中,起尾獲得從使用程序傳遞的偏偏移所在戰(zhàn)操做字的指針,偏偏移所在戰(zhàn)操做字存儲正在irp的assiatedirp域中systebuffer指針指背的緩沖區(qū),驅(qū)動程序先獲得指背該緩沖區(qū)的指針,然后分別獲得偏偏移所在戰(zhàn)操做字,終了背該偏偏移所在寫操做字,程序真止后,即背硬件上的存放器寫進了響應(yīng)的操做字。2)da方法讀與fpga上fif數(shù)據(jù)真現(xiàn)driverrks供給了3個類kdaadapter、kdatransfer、kndabuffer用于真現(xiàn)da操做,kdaadapter類用于創(chuàng)坐一個da適配器東西,分

13、析da通講特征戰(zhàn)供給串止化訪謁的處事;kdatransfer類用于啟動,操做da的傳輸和da傳輸竣過后數(shù)據(jù)由公用緩沖區(qū)拷貝靠使用程序數(shù)據(jù)緩沖區(qū);kndabuffer類用于申請系統(tǒng)供給的公用緩沖區(qū)。driverrks中,真現(xiàn)da傳輸過程如圖3所示。起尾正在裝備啟動例程(nstartdevie)中創(chuàng)坐一個kdaadapter類真例且正在適配器東西描摹表中準確描摹適配器東西;創(chuàng)坐一個kndabufer類真例,挪用該類的成員函數(shù)initialize初初化公用緩沖區(qū)大?。粍?chuàng)坐一個kdatransfer類真例,并初初化為操做公用緩沖區(qū)做為da數(shù)據(jù)區(qū)。然后編寫kdatransfer回調(diào)函數(shù)ndaready,

14、回調(diào)函數(shù)中,先挪用成員函數(shù)bytereaining(),斷定命據(jù)能可傳輸完成。假設(shè)完成,那么挪用函數(shù)terinate()完成相該當(dāng)irp;已完成,那么挪用gettransferdesripters(),獵與當(dāng)前傳輸數(shù)據(jù)的物理所在,傳輸字節(jié)數(shù),然落后進startda例程設(shè)置pi9054的da存放器,開端真正數(shù)據(jù)傳輸。當(dāng)前段傳輸完成時,pi9054的da截至操做器收死一個da截至,進進截至處事例程isr,截至處事例程中,起尾斷定能可為da通講的截至,然后抑造本次截至,再拂拭本次截至,終了毗鄰到延時過程挪用(dp)。延時過程挪用(dp)中,挪用kdatransfer類的ntinue()成員函數(shù),擔(dān)當(dāng)

15、下一個段傳輸,曲到da數(shù)據(jù)傳輸完畢,完成該irp。3.3驅(qū)動程序戰(zhàn)使用程序之間的通信驅(qū)動程序戰(zhàn)使用程序之間的通信包含使用程序與驅(qū)動程序通信戰(zhàn)驅(qū)動程序與使用程序的通信。使用程序與驅(qū)動程序通信過程為,使用程序先用reatefile函數(shù)翻開裝備,然后用devieintrl戰(zhàn)驅(qū)動程序通信,devieintrl操做沒有同的命令字去挪用驅(qū)動程序中的函數(shù),包含從驅(qū)動驅(qū)動程序讀與數(shù)據(jù)戰(zhàn)寫數(shù)據(jù)給驅(qū)動程序兩種情況。也可以用readfile從驅(qū)動中讀與數(shù)據(jù)年夜要用ritefile寫數(shù)據(jù)給驅(qū)動程序,當(dāng)使用程序退出時,用lsehandle啟鎖裝備。當(dāng)驅(qū)動程序捕捉到特征事變收死時,該當(dāng)照顧使用程序,與使用程序通信,驅(qū)動程序戰(zhàn)使用程序通信的要收主要有兩種,devieintrl同程序用戰(zhàn)in32事變照顧。devieintrl同程序用時,驅(qū)動程序先將此irp保存起去,然后挪用i.arkpending(),終了驅(qū)動程序返回status_pending,當(dāng)一個事變收死時,驅(qū)動程序再完成那個irp;操做in32事變照顧戰(zhàn)使用程序通信時,使用程序起初創(chuàng)坐一個事變,間接將該事變句柄傳遞給驅(qū)動程序,使用程序等待驅(qū)動程序收支事變動靜。4完畢語數(shù)據(jù)網(wǎng)羅是真

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論