《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 業(yè)界動(dòng)態(tài) > PCI 9052及其應(yīng)用

PCI 9052及其應(yīng)用

2008-08-06
作者:趙 斌

??? 摘? 要: 介紹了PCI9052的功能,、特點(diǎn)及具體應(yīng)用,,說(shuō)明了ISA模式下EEPROM配置及功能引腳連接的注意事項(xiàng),給出了A/D" title="A/D">A/D轉(zhuǎn)換電路" title="轉(zhuǎn)換電路">轉(zhuǎn)換電路及其驅(qū)動(dòng)程序?qū)嵗?。旨在介紹如何利用PCI9052完成由ISA擴(kuò)展板" title="擴(kuò)展板">擴(kuò)展板向PCI擴(kuò)展板的轉(zhuǎn)換,。
??? 關(guān)鍵詞: PCI總線?? ISA擴(kuò)展板?? PCI9052??? A/D轉(zhuǎn)換

?

??? PCI(外圍部件互連)總線是一種高性能局部總線" title="局部總線">局部總線,。PCI總線與處理器及時(shí)鐘頻率無(wú)關(guān),,可以提供極高的數(shù)據(jù)傳送速率(33MHz總線時(shí)鐘,、32位數(shù)據(jù)通路時(shí),最大傳輸率為132Mbit/s),;PCI總線具有地址數(shù)據(jù)多路復(fù)用的高性能32位或64位的同步總線,,可適用于各種平臺(tái),支持多處理器和并發(fā)工作,;PCI總線規(guī)范嚴(yán)格,具有良好的兼容性,對(duì)PCI擴(kuò)展卡及元件能夠自動(dòng)配置,,實(shí)現(xiàn)設(shè)備的即插即用,;PCI總線還具有良好的可擴(kuò)展性,通過(guò)PCI-PCI橋路,,可無(wú)限地?cái)U(kuò)展,。
??? 由于功能強(qiáng)大,使用方便靈活,PCI總線產(chǎn)品與其它總線產(chǎn)品相比具有較大優(yōu)勢(shì)和較為廣闊的應(yīng)用前景,。 PCI擴(kuò)展槽已成為PC機(jī)主板配置的主流,,今后的擴(kuò)展板的開(kāi)發(fā)必定是基于PCI接口的。如何使現(xiàn)有的某些ISA接口的功能擴(kuò)展板能在PCI槽上繼續(xù)使用,,顯然很有意義,。
??? 實(shí)現(xiàn)PCI總線接口電路,目前一般有兩種方案:使用可編程邏輯器件(PLD)和PCI專(zhuān)用橋接芯片組,。鑒于PCI總線協(xié)議的復(fù)雜程度,如使用可編程邏輯陣列芯片來(lái)完成PCI協(xié)議,,雖然其靈活性較高,但其開(kāi)發(fā)周期長(zhǎng), 難度較大。而通用的PCI接口芯片功能較全, 對(duì)PCI協(xié)議具有良好的支持,可實(shí)現(xiàn)PCI規(guī)范要求的接口信號(hào)和配置寄存器,,能夠減少開(kāi)發(fā)時(shí)間和成本,,并獲得較好的數(shù)據(jù)傳輸性能。所以決定采用已有的橋接芯片實(shí)現(xiàn)PCI總線接口電路,。下面就來(lái)介紹如何利用PCI9052接口芯片將A/D功能的ISA擴(kuò)展板轉(zhuǎn)換為PCI擴(kuò)展板的應(yīng)用,。
1 PCI9052概述
??? PCI9052是PLX公司的一款低成本PCI總線接口芯片,符合PCI2.1規(guī)范,。它有五個(gè)局部地址空間和四個(gè)局部設(shè)備片選信號(hào),,支持多路復(fù)用和非多路復(fù)用的8位,、16位和32位通用局部總線,且局部總線與PCI總線時(shí)鐘相互獨(dú)立運(yùn)行。
1.1 ISA接口模式介紹
??? PCI9052內(nèi)部含有一個(gè)ISA邏輯接口,支持8位和16位的ISA從設(shè)備,。通過(guò)配置EEPROM可將PCI9052設(shè)定為ISA模式,,通過(guò)內(nèi)存或I/O映射可將PCI總線與ISA總線相連,快速實(shí)現(xiàn)ISA總線到PCI總線的轉(zhuǎn)換,。
1.2 配置方法及注意事項(xiàng)
??? 通過(guò)對(duì)EEPROM的編程可將PCI9052配置為ISA接口模式,,方法包括利用燒錄器燒寫(xiě)和利用PCI9052芯片在PCI總線上直接燒寫(xiě)。配置信息包括設(shè)備號(hào)DID,、制造商號(hào)VID,、子設(shè)備號(hào)SDID、子制造商號(hào)SVID,、中斷號(hào),、設(shè)備類(lèi)型號(hào)、局部空間基地址,、局部空間描述符,、片選響應(yīng)以及局部響應(yīng)控制CNTRL等信號(hào)。對(duì)空間的分配方式為:
??? (1)空間0分配給ISA接口的內(nèi)存存取,。
??? (2)空間1分配給ISA接口的I/O存取,。
??? (3)無(wú)論空間0的局部地址處于CS0#范圍還是空間1的局部地址處于CS1#范圍,ISA存取均有效,。
??? (4)標(biāo)準(zhǔn)的從周期可以使用空間2,、空間3和串行EEPROM來(lái)存取。
??? EEPROM的內(nèi)容非常重要,,它關(guān)系到板卡能否正常工作,,在設(shè)計(jì)時(shí)要非常注意。
2 應(yīng)用實(shí)例
??? 下面給出基于PCI9052接口的A/D數(shù)據(jù)采集板的應(yīng)用實(shí)例,。該數(shù)據(jù)采集板的功能是:外部模擬信號(hào)經(jīng)過(guò)多選開(kāi)關(guān)選通后,,再經(jīng)過(guò)運(yùn)算放大器送入A/D芯片進(jìn)行轉(zhuǎn)換,其轉(zhuǎn)換狀態(tài)的結(jié)果可用程序查詢(xún)方式讀出,。
2.1 硬件設(shè)計(jì)
??? 硬件電路原理如圖1所示,。

?


??? 硬件電路分為四個(gè)部分:
??? (1)PCI9052與PCI插槽間的連接信號(hào)線。這些信號(hào)包括地址數(shù)據(jù)復(fù)用信號(hào)AD[31:0],,總線命令信號(hào)C/BE[3:0]#,,模式選擇信號(hào)MODE,局部總線請(qǐng)求信號(hào)LHOLD和PCI協(xié)議控制信號(hào)PAR,、FRAME#,、IRDY#、TRDY#,、STOP#,、IDSEL,、DEVSEL#、PERR#,、SERR#,。由于使用的是ISA非復(fù)用模式,因此MODE引腳應(yīng)接地,。LHOLD信號(hào)應(yīng)該進(jìn)行下拉或接地處理,。
??? (2)PCI9052與串行EEPROM的連線。有EESK,、EEDO,、EEDI和EECS等連線。
??? (3)PCI9052與A/D轉(zhuǎn)換電路的連接,。由于用到的是ISA局部總線信號(hào),,所以有數(shù)據(jù)線LAD[7:0]、地址線ISAA[1:0],、LA[23:2],、I/O讀寫(xiě)信號(hào)線IOWR#、IORD#,、地址鎖存BALE等連線,。
??? (4)A/D采樣轉(zhuǎn)換電路。包括A/D芯片,、多選開(kāi)關(guān)、采樣保持和邏輯控制電路,。
????PCB板布線應(yīng)注意以下事項(xiàng)
??? (1)參照PCI9052的C/ISA模式引腳圖進(jìn)行連線,。
??? (2)對(duì)于ISA模式,CLK(局部總線時(shí)鐘)為8MHz,,可與PCI時(shí)鐘異步,。由于PCI時(shí)鐘信號(hào)的一半要靠反射波來(lái)提升,因此時(shí)鐘信號(hào)CLK走線長(zhǎng)度近似為2500mil+/-100mil,。直接連接不滿(mǎn)足長(zhǎng)度要求時(shí)可采用蛇形布線多繞幾圈,。
??? (3)PRSNT1#和PRSNT2#兩者必須有一個(gè)接地,主板依靠這兩個(gè)信號(hào)判斷插槽上是否有卡及板卡對(duì)電源的要求信息,。
??? (4)PCI卡上每個(gè)Vcc都必須退耦,,電容容量不小于0.01μF。
2.2 軟件設(shè)計(jì)
??? 板卡調(diào)試成功以后就可以編寫(xiě)驅(qū)動(dòng)程序了,。目前,,編寫(xiě)驅(qū)動(dòng)程序最常用的工具是DDK、VtoolsD和WinDriver等,。它們都是專(zhuān)門(mén)的驅(qū)動(dòng)開(kāi)發(fā)工具,,在此選用的是WinDriver,。它允許用戶(hù)使用Visual C++、Borland或者其它Win32編程工具軟件在用戶(hù)模式(UserMode)上編寫(xiě)設(shè)備驅(qū)動(dòng)程序,,能很快地開(kāi)發(fā)出高質(zhì)量的驅(qū)動(dòng)程序,。編程的基本方法是首先查找板卡,再找到卡中與用到的局部空間相對(duì)應(yīng)的PCI基地址,,然后根據(jù)要求對(duì)這個(gè)基地址進(jìn)行操作,。考慮到調(diào)用靈活性,,在WinDriver環(huán)境下利用VC++6.0將驅(qū)動(dòng)程序的接口制成DLL(動(dòng)態(tài)鏈接庫(kù))形式,,這樣可以方便調(diào)用VB、VC,、DELPHI,、LABVIEW等多種編程語(yǔ)言。
??? 限于篇幅,,對(duì)板卡進(jìn)行查找及訪問(wèn)的程序源碼摘錄如下,,以供參考:
??? P9050_HANDLE? pcicheck(DWORD dwVendorID, DWORD dwDeviceID, BOOL fUseInt)? //獲得板卡句柄" title="句柄">句柄函數(shù)
??? {
??? ??? DWORD cards, my_card;
??? ??? P9050_HANDLE hPlx = NULL;//定義句柄初始為空
??? ??? RegisterWinDriver();
??? ??? if (dwVendorID==0)
??? ??? {
??? ??????? sscanf (“9050”, “%x”,&dwVendorID);
??? ??????? if (dwVendorID==0) return NULL;
??? ??????? sscanf (“10b5”, “%x”,&dwDeviceID);
??? ??? }
??? ??? cards = P9050_CountCards (dwVendorID, dwDeviceID);//對(duì)PCI卡的個(gè)數(shù)進(jìn)行遍歷
??? ?…
????? ??if(P9050_Open(&hPlx,dwVendorID,dwDeviceID,my_card-1,
??? fUseInt ? P9050_OPEN_USE_INT:0/*P9050_OPEN_FIX_BIT7*/ ))
????????return hPlx;? //返回獲得板卡句柄
??? }
?? ?int? pciad(P9050_HANDLE hPlx, BOOL fLocalAddr,int ch)//用獲得的板卡句柄對(duì)IO空間進(jìn)行訪問(wèn),實(shí)現(xiàn)A/D操作
??? {
?? ?…
????????P9050_WriteSpaceByte(hPlx, ad_sp, addr1, (BYTE) data1);?? //對(duì)局部IO空間進(jìn)行寫(xiě)操作
?? ?…
???? ??data5=P9050_ReadSpaceByte(hPlx, ad_sp, addr4);?//對(duì)局部IO空間進(jìn)行讀操作?????
??? …
??? }
??? int? pciclose(P9050_HANDLE hPlx) // 關(guān)閉板卡句柄函數(shù)
??? {
??? P9050_Close(hPlx);
????return 1;
??? }
參考文獻(xiàn)
1 PCI9052 Data Book V1.01. PLX Technoledgy,1999
2 WINDRVR V5 User’s Guide.Jungo Ltd, June 20,2001
3 戚德虎,,李貴山.PCI局部總線開(kāi)發(fā)者指南.西安:西安電子科技大學(xué)出版社,,2000

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,,并不代表本網(wǎng)站贊同其觀點(diǎn),。轉(zhuǎn)載的所有的文章、圖片,、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有,。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無(wú)法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容,、版權(quán)和其它問(wèn)題,,請(qǐng)及時(shí)通過(guò)電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,,避免給雙方造成不必要的經(jīng)濟(jì)損失,。聯(lián)系電話:010-82306118;郵箱:[email protected],。