基于PCI總線的數(shù)據(jù)采集卡設(shè)計(jì)_第1頁
免費(fèi)預(yù)覽已結(jié)束,剩余1頁可下載查看

下載本文檔

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

文檔簡介

第第頁基于pci總線的數(shù)據(jù)采集卡設(shè)計(jì)隨著計(jì)算機(jī)軟硬件技術(shù)和控制、測量技術(shù)的不斷進(jìn)展,許多工程技術(shù)人員都將pc機(jī)作為控制、測量開發(fā)的首選平臺(tái)。而pci(peripheralcomponentinterconnect,即外圍部件互連)作為一種高性能、通用的局部總線,是目前計(jì)算機(jī)插卡式外設(shè)總線的事實(shí)標(biāo)準(zhǔn)。pci總線具有32/64位總線寬度。地址線和數(shù)據(jù)線復(fù)用,支持猝發(fā)傳輸,傳輸速率高達(dá)132mb/s;系統(tǒng)占用率低,具有較好的兼容性;有完備的即插即用(pnp)管理體制,可同時(shí)支持多組外圍設(shè)備。雖然pci總線也經(jīng)受了從pci、pci-x到pciexpress的進(jìn)展,但pci總線因?yàn)榇嬖跁r(shí)光長,開發(fā)工具、開發(fā)資料眾多,在對數(shù)據(jù)吞吐量要求不是很高的工業(yè)控制、測量領(lǐng)域仍有著堅(jiān)韌的生命力。筆者在學(xué)習(xí)了相關(guān)設(shè)計(jì)資料的基礎(chǔ)上,設(shè)計(jì)了基于pci總線的數(shù)據(jù)采集卡,可以完成8路數(shù)字量i/o及4路差分14位a/d采集功能。本文將按照筆者的實(shí)際閱歷,介紹pci接口擴(kuò)展卡的軟硬件設(shè)計(jì)流程。

1pci總線工作方式簡介

pci總線標(biāo)準(zhǔn)由intel于1991年提出,后由pci-sig(pcispecialinterestgroup)接替了pci規(guī)范的進(jìn)展。pci總線是一種時(shí)分復(fù)用的雙向應(yīng)答總線,傳輸發(fā)起方稱為主設(shè)備,接收方稱為從設(shè)備。其主要信號(hào)定義如下:

rfame:由主設(shè)備驅(qū)動(dòng),為低,指示一次傳輸?shù)拈_頭。

devsel:由從設(shè)備驅(qū)動(dòng),為低,指示響應(yīng)傳輸哀求。

ado~ad31:地址、數(shù)據(jù)復(fù)用信號(hào)。pci總線的數(shù)據(jù)傳輸以幀為單位,每次傳輸由一個(gè)地址周期和多個(gè)數(shù)據(jù)周期組成。首先給出本次傳輸?shù)氖椎刂?,后面緊跟一個(gè)或多個(gè)4字節(jié)寬的數(shù)據(jù),延續(xù)傳輸多個(gè)數(shù)據(jù)時(shí),其地址自動(dòng)遞增。

c/be0~c/be3:這4根線在地址傳送周期,傳輸?shù)氖强偩€指令,c/be0~c/be3的不同組合指示在ad0~ad31上將要舉行何種類型的操作,其代表的總線指令見表1;在數(shù)據(jù)傳送周期,傳輸?shù)氖亲止?jié)始能信號(hào),用來表示在囫圇數(shù)據(jù)期間,ad31~ad0上的哪些字節(jié)為有效數(shù)據(jù)。

irdy、trdy:分離表示主設(shè)備預(yù)備好和從設(shè)備預(yù)備好。在傳輸過程中,惟獨(dú)irdy和trdy同時(shí)有效,傳輸才干繼續(xù);否則插入等待周期,用于在不同速度的設(shè)備之間協(xié)調(diào)工作。

表1地址傳送周期時(shí)。c/be0~c/be3所代表的總線指令prsnt1、prsnt2:pci板對電源的哀求信息,詳細(xì)含義見表2。

將pci接口卡插入計(jì)算機(jī)插座,加電后,bios會(huì)按照pci接口卡上的配置信息,為其分配相應(yīng)的i/o端口、存儲(chǔ)器空間、中斷及dma等計(jì)算機(jī)資源。

2pci接口卡的硬件設(shè)計(jì)

筆者設(shè)計(jì)的pci數(shù)據(jù)采集卡用法的pci接口芯片是ch365,ch365可將32位高速pci總線轉(zhuǎn)換為簡便易用的類似于isa總線的8位主動(dòng)并行接口,支持240字節(jié)的i/o端口映射、32k字節(jié)的存儲(chǔ)器映射、擴(kuò)展rom以及中斷。本數(shù)據(jù)采集卡僅用法了i/o端口映射及中斷功能。本pci數(shù)據(jù)采集卡用法maxim公司的4通道14位、差分、同時(shí)采樣:max1338,實(shí)現(xiàn)a/d轉(zhuǎn)換功能,并將max1338的/eolc引腳與ch365的int_req引腳相連,以便在adc轉(zhuǎn)換完成后,向pc機(jī)發(fā)出中斷申請。用法兩片74hc273作為輸出,一片用作8路i/o輸出,另一片用作對max1338控制指令的輸出。用法兩片74hc373作為輸入,一片用作8路i/o輸入,另一片采集max1338的狀態(tài)指示信號(hào)。用法tlp521-4對8路i/o輸入、輸出舉行光電隔離。用法74ls138作為地址譯碼。

在制作印制板時(shí),ch365的vcc與gnd間應(yīng)就近放置容量為0.1μf高頻、低esr的多層瓷片,銜接pci總線的電源線引腳可以自由挑選,但數(shù)量不宜少于4對。ch365屬于高頻數(shù)字,應(yīng)當(dāng)考慮信號(hào)阻抗匹配,在設(shè)計(jì)板時(shí)需要參考pci總線規(guī)范。建議ch365的pci信號(hào)線的長度都小于35mm,盡量走弧線或者45度線,避開直角或者銳角走線,并且盡量將信號(hào)走線布在元件面;ch365的pci時(shí)鐘線clk的長度盡量保持在50mm~65mm之間,并且不宜逼近其它信號(hào)線;在pcb背面保留大面積的接地覆銅,以削減周邊信號(hào)線的干擾。雖然pci總線規(guī)范推舉用法四層板,但考慮成本等因素,可用法雙面板,雙面覆銅接地。筆者做的pci數(shù)據(jù)采集卡即為雙面板,經(jīng)試驗(yàn)驗(yàn)證在工業(yè)現(xiàn)場環(huán)境下,該卡能夠穩(wěn)定工作。

3pci接口卡驅(qū)動(dòng)程序及軟件設(shè)計(jì)

在windows系統(tǒng)中,為避開因不當(dāng)?shù)挠布僮鞫鴮?dǎo)致系統(tǒng)崩潰,應(yīng)用程序不再具有挺直的硬件拜訪權(quán),假如要操作硬件,必需借助設(shè)備驅(qū)動(dòng)程序。驅(qū)動(dòng)程序主要功能是完成對硬件板卡的內(nèi)存映像地址、i/o地址的存取,并正確處理來自板卡的硬件中斷。

microsoft為設(shè)備驅(qū)動(dòng)程序的編寫提供了“windowsde-vicedriverskit”(簡稱ddk)工具,它包含了驅(qū)動(dòng)開發(fā)所需的各種類型的定義和內(nèi)核函數(shù)庫。用ddk編制的驅(qū)動(dòng)程序有很高的運(yùn)行效率,但是開發(fā)難度大,測試流程繁瑣。為減輕驅(qū)動(dòng)開發(fā)者的負(fù)擔(dān),無數(shù)第三方廠商提供了簡化驅(qū)動(dòng)開發(fā)的軟件。如numega公司的driverstudio軟件,jungo公司的windriver/kerneldriver軟件等。尤其是windriver/kerneldriver不要求開發(fā)者十分認(rèn)識(shí)操作系統(tǒng)平臺(tái),把握核心開發(fā)、調(diào)試學(xué)問,即可在幾分鐘之內(nèi)開發(fā)出相應(yīng)的驅(qū)動(dòng)程序。但windriver的運(yùn)行效率較低,因此,在對運(yùn)行效率較高的場合,可用法kerneldriver舉行開發(fā),以提高運(yùn)行效率。

因?yàn)楸静杉ǖ臄?shù)據(jù)吞吐量不高,因此采納windri-ver6.21舉行驅(qū)動(dòng)程序的開發(fā),其開發(fā)過程如下:

(1)運(yùn)行windriver程序,挑選"createanewdriverpro-ject”;

(2)在彈出的“selectyourdevice”窗口中,從列表中挑選自己的硬件設(shè)備。因?yàn)閏h365的默認(rèn)廠商標(biāo)識(shí)(vendor-id)為4348h,設(shè)備標(biāo)識(shí)(deviceid)為5049h,因此選中“pci:vendorid4348deviceid5049”的pci設(shè)備(1)。

(3)單擊“generate.inffile”按鈕,產(chǎn)生采集卡的驅(qū)動(dòng)安裝信息文件。注重:需選中“automaticallyinstalltheinffile”復(fù)選框,以便可以在(4)步中測試采集卡(2)。

(4)在“defineandtestresourcesforyourdevice”窗口中,設(shè)置采集卡的i/o地址及變量名,對于即插即用(plug-and-play)設(shè)備,windriver會(huì)自動(dòng)發(fā)覺其所用到的硬件資源(如:i/o范圍,存儲(chǔ)器范圍及中斷號(hào)等)(3)。在此可對采集卡的i/o地址舉行讀寫測試,以便驗(yàn)證硬件設(shè)計(jì)是否正確。

(5)在“selectcodegenerationoptions”窗口中,選中合適的開發(fā)語言及開發(fā)平臺(tái)。在此挑選“msdeveloperstudic6,5”(即microsoftvisualc++6/5),以便windriver生成合適的驅(qū)動(dòng)程序框架及相應(yīng)的api函數(shù)(4)。

(6)保存windriver產(chǎn)生的驅(qū)動(dòng)開發(fā)工程后,windriver會(huì)自動(dòng)打開相應(yīng)的開發(fā)環(huán)境(此處為:microsoftvisualc++6),以便開發(fā)人員舉行后續(xù)開發(fā)。

通過以上步驟,windriver生成一個(gè)基于visualc++語言的程序框架,開發(fā)人員可以在此框架的基礎(chǔ)上舉行修改,加入自己的程序,實(shí)現(xiàn)對硬件的操作?,F(xiàn)以筆者編制的程序(工程文件名為adc)為例舉行介紹。

在程序初始化階段,先調(diào)用pci_get_wd_handle(),推斷驅(qū)動(dòng)程序windrvr6.sys是否已被加載,假如驅(qū)動(dòng)程序已被加載,則調(diào)用adc_locateandopenboard()函數(shù),打開數(shù)據(jù)采集卡。在退出應(yīng)用程序前,需先調(diào)用adc_close()函數(shù),關(guān)閉數(shù)據(jù)采集卡。

對max1338和8路i/o的寄存器操作可通過adc_readbyte()、adc_writebyte()兩個(gè)函數(shù)完成。對ch365內(nèi)部配置寄存器的讀寫可通過adc_read-pcireg()、adc_writepcireg()兩個(gè)函數(shù)完成。完成應(yīng)用程序的開發(fā)后,數(shù)據(jù)采集卡在其他的pc機(jī)上工作時(shí),需提供windrvr6.

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論