當(dāng)前位置:首頁(yè) > 測(cè)試測(cè)量 > 測(cè)試測(cè)量
[導(dǎo)讀]0 引言 隨著計(jì)算機(jī)軟硬件技術(shù)和控制、測(cè)量技術(shù)的不斷發(fā)展,許多工程技術(shù)人員都將PC機(jī)作為控制、測(cè)量開發(fā)的首選平臺(tái)。而PCI(Peripheral Component Interconnect,即外圍部件互連)總線作為一種高性能、通用的局


0 引言
    隨著計(jì)算機(jī)軟硬件技術(shù)和控制、測(cè)量技術(shù)的不斷發(fā)展,許多工程技術(shù)人員都將PC機(jī)作為控制、測(cè)量開發(fā)的首選平臺(tái)。而PCI(Peripheral Component Interconnect,即外圍部件互連)總線作為一種高性能、通用的局部總線,是目前計(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到PCI Express的發(fā)展,但PCI總線由于存在時(shí)間長(zhǎng),開發(fā)工具、開發(fā)資料眾多,在對(duì)數(shù)據(jù)吞吐量要求不是很高的工業(yè)控制、測(cè)量領(lǐng)域仍有著頑強(qiáng)的生命力。筆者在學(xué)習(xí)了相關(guān)設(shè)計(jì)資料的基礎(chǔ)上,設(shè)計(jì)了基于PCI總線的數(shù)據(jù)采集卡,可以完成8路數(shù)字量I/O及4路差分14位A/D采集功能。本文將根據(jù)筆者的實(shí)際經(jīng)驗(yàn),介紹PCI接口擴(kuò)展卡的軟硬件設(shè)計(jì)流程。


1 PCI總線工作方式簡(jiǎn)介
    PCI總線標(biāo)準(zhǔn)由intel于1991年提出,后由PCI-SIG(PCI Special Interest Group)接替了PCI規(guī)范的發(fā)展。PCI總線是一種時(shí)分復(fù)用的雙向應(yīng)答總線,傳輸發(fā)起方稱為主設(shè)備,接收方稱為從設(shè)備。其主要信號(hào)定義如下:
    RFAME:由主設(shè)備驅(qū)動(dòng),為低,指示一次傳輸?shù)拈_始。
    DEVSEL:由從設(shè)備驅(qū)動(dòng),為低,指示響應(yīng)傳輸請(qǐ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上將要進(jìn)行何種類型的操作,其代表的總線命令見表1;在數(shù)據(jù)傳送周期,傳輸?shù)氖亲止?jié)始能信號(hào),用來(lái)表示在整個(gè)數(shù)據(jù)期間,AD31~AD0上的哪些字節(jié)為有效數(shù)據(jù)。
    IRDY、TRDY:分別表示主設(shè)備準(zhǔn)備好和從設(shè)備準(zhǔn)備好。在傳輸過(guò)程中,只有IRDY和TRDY同時(shí)有效,傳輸才能繼續(xù);否則插入等待周期,用于在不同速度的設(shè)備之間協(xié)調(diào)工作。
    表1地址傳送周期時(shí)。C/BE0~C/BE3所代表的總線命令PRSNT1、PRSNT2:PCI板對(duì)電源的請(qǐng)求信息,具體含義見表2。

    將PCI接口卡插入計(jì)算機(jī)插座,加電后,BIOS會(huì)根據(jù)PCI接口卡上的配置信息,為其分配相應(yīng)的I/O端口、存儲(chǔ)器空間、中斷及DMA等計(jì)算機(jī)資源。

2 PCI接口卡的硬件設(shè)計(jì)
    筆者設(shè)計(jì)的PCI數(shù)據(jù)采集卡使用的PCI接口芯片是CH365,CH365可將32位高速PCI總線轉(zhuǎn)換為簡(jiǎn)便易用的類似于ISA總線的8位主動(dòng)并行接口,支持240字節(jié)的I/O端口映射、32 K字節(jié)的存儲(chǔ)器映射、擴(kuò)展ROM以及中斷。本數(shù)據(jù)采集卡僅使用了I/O端口映射及中斷功能。本PCI數(shù)據(jù)采集卡使用MAXIM公司的4通道14位、差分、同時(shí)采樣ADC:MAX1338,實(shí)現(xiàn)A/D轉(zhuǎn)換功能,并將MAX1338的/EOLC引腳與CH365的INT_REQ引腳相連,以便在ADC轉(zhuǎn)換完成后,向PC機(jī)發(fā)出中斷申請(qǐng)。使用兩片74HC273作為輸出,一片用作8路I/O輸出,另一片用作對(duì)MAX1338控制命令的輸出。使用兩片74HC373作為輸入,一片用作8路I/O輸入,另一片采集MAX1338的狀態(tài)指示信號(hào)。使用TLP521-4對(duì)8路I/O輸入、輸出進(jìn)行光電隔離。使用74LS138作為地址譯碼。
    在制作印制板時(shí),CH365的VCC與GND間應(yīng)就近放置容量為0.1 μF高頻、低ESR的多層瓷片電容,連接PCI總線的電源線引腳可以自由選擇,但數(shù)量不宜少于4對(duì)。CH365屬于高頻數(shù)字電路,應(yīng)該考慮信號(hào)阻抗匹配,在設(shè)計(jì)PCB板時(shí)需要參考PCI總線規(guī)范。建議CH365的PCI信號(hào)線的長(zhǎng)度都小于35 mm,盡量走弧線或者45度線,避免直角或者銳角走線,并且盡量將信號(hào)走線布在元件面;CH365的PCI時(shí)鐘線CLK的長(zhǎng)度盡量保持在50 mm~65 mm之間,并且不宜靠近其它信號(hào)線;在PCB背面保留大面積的接地覆銅,以減少周邊信號(hào)線的干擾。雖然PCI總線規(guī)范推薦使用四層板,但考慮成本等因素,可使用雙面板,雙面覆銅接地。筆者做的PCI數(shù)據(jù)采集卡即為雙面板,經(jīng)實(shí)驗(yàn)驗(yàn)證在工業(yè)現(xiàn)場(chǎng)環(huán)境下,該卡能夠穩(wěn)定工作。


3 PCI接口卡驅(qū)動(dòng)程序及軟件設(shè)計(jì)
    在Windows系統(tǒng)中,為避免因不當(dāng)?shù)挠布僮鞫鴮?dǎo)致系統(tǒng)崩潰,應(yīng)用程序不再具有直接的硬件訪問(wèn)權(quán),如果要操作硬件,必須借助設(shè)備驅(qū)動(dòng)程序。驅(qū)動(dòng)程序主要功能是完成對(duì)硬件板卡的內(nèi)存映像地址、I/O地址的存取,并正確處理來(lái)自板卡的硬件中斷。
    Microsoft為設(shè)備驅(qū)動(dòng)程序的編寫提供了“Windows De-vice Drivers Kit”(簡(jiǎn)稱DDK)工具,它包含了驅(qū)動(dòng)開發(fā)所需的各種類型的定義和內(nèi)核函數(shù)庫(kù)。用DDK編制的驅(qū)動(dòng)程序有很高的運(yùn)行效率,但是開發(fā)難度大,測(cè)試流程繁瑣。為減輕驅(qū)動(dòng)開發(fā)者的負(fù)擔(dān),很多第三方廠商提供了簡(jiǎn)化驅(qū)動(dòng)開發(fā)的軟件。如Numega公司的DriverStudio軟件,J ungo公司的WinDriver/KernelDriver軟件等。尤其是WinDriver/KernelDriver不要求開發(fā)者非常熟悉操作系統(tǒng)平臺(tái),掌握核心開發(fā)、調(diào)試知識(shí),即可在幾分鐘之內(nèi)開發(fā)出相應(yīng)的驅(qū)動(dòng)程序。但WinDriver的運(yùn)行效率較低,因此,在對(duì)運(yùn)行效率較高的場(chǎng)合,可使用KernelDriver進(jìn)行開發(fā),以提高運(yùn)行效率。
    由于本采集卡的數(shù)據(jù)吞吐量不高,因此采用WinDri-ver6.21進(jìn)行驅(qū)動(dòng)程序的開發(fā),其開發(fā)過(guò)程如下:
    (1)運(yùn)行Windriver程序,選擇"Create a new driver pro-ject”;
    (2)在彈出的“Select Your Device”窗口中,從列表中選擇自己的硬件設(shè)備。由于CH365的默認(rèn)廠商標(biāo)識(shí)(Vendor-ID)為4348H,設(shè)備標(biāo)識(shí)(DeviceID)為5049H,因此選中“PCI:VendorID 4348 DeviceID5049”的PCI設(shè)備(如圖1)。

    (3)單擊“Generate.INF file”按鈕,產(chǎn)生采集卡的驅(qū)動(dòng)安裝信息文件。注意:需選中“Automatically Install the INFfile”復(fù)選框,以便可以在(4)步中測(cè)試采集卡(如圖2)。

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

    (5)在“Select Code Generation Options”窗口中,選中合適的開發(fā)語(yǔ)言及開發(fā)平臺(tái)。在此選擇“Ms Developer Studic6,5”(即Microsoft VisualC++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)境(此處為:Microsoft VisualC++6),以便開發(fā)人員進(jìn)行后續(xù)開發(fā)。
    通過(guò)以上步驟,Windriver生成一個(gè)基于Visual C++語(yǔ)言的程序框架,開發(fā)人員可以在此框架的基礎(chǔ)上進(jìn)行修改,加入自己的程序,實(shí)現(xiàn)對(duì)硬件的操作?,F(xiàn)以筆者編制的程序(工程文件名為ADC)為例進(jìn)行介紹。
    在程序初始化階段,先調(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ù)采集卡。
    對(duì)MAX1338和8路I/O的寄存器操作可通過(guò)ADC_ReadByte()、ADC_WriteByte()兩個(gè)函數(shù)完成。對(duì)CH365內(nèi)部配置寄存器的讀寫可通過(guò)ADC_Read-PCIReg()、ADC_WritePCIReg()兩個(gè)函數(shù)完成。完成應(yīng)用程序的開發(fā)后,數(shù)據(jù)采集卡在其他的PC機(jī)上工作時(shí),需提供windrvr6.sys、windrvr6.inf、wd_utils.dll、數(shù)據(jù)采集卡的,inf文件以及自己開發(fā)的應(yīng)用程序或DLL。以便于PC機(jī)安裝相應(yīng)的驅(qū)動(dòng)程序,對(duì)板卡進(jìn)行配置、操作。本文根據(jù)筆者的實(shí)踐經(jīng)驗(yàn),簡(jiǎn)要介紹了PCI擴(kuò)展卡的開發(fā)流程,給出了一套快速可行的解決方案。該方案簡(jiǎn)單易行、調(diào)試方便,可使工程技術(shù)人員迅速掌握PCI總線的開發(fā)技術(shù),從而設(shè)計(jì)出符合工程需求的PCI擴(kuò)展卡。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉