PCI9052接口電路的功能及應(yīng)用

時(shí)間:2022-11-17 11:12:00

導(dǎo)語:PCI9052接口電路的功能及應(yīng)用一文來源于網(wǎng)友上傳,不代表本站觀點(diǎn),若需要原創(chuàng)文章可咨詢客服老師,歡迎參考。

PCI9052接口電路的功能及應(yīng)用

摘要:PCI總線是Pentium主機(jī)最常見的總線,基于PCI總線形成的CompactPCI和PXI總線廣泛地應(yīng)用在儀器和自動(dòng)化領(lǐng)域。PCI適配卡的接口設(shè)計(jì)變得越來越重要,介紹PCI專用接口電路pci9052的功能,通過一個(gè)例子介紹它的應(yīng)用。

關(guān)鍵詞:外部設(shè)備互連總線;局部總線;接口電路;PCI9052;應(yīng)用

1引言

PCI(PeripheralComponentInterconnect)總線具有獨(dú)立于處理器、高數(shù)據(jù)傳速率、即插即用、低功耗、適應(yīng)性強(qiáng)等特點(diǎn),已成為微型機(jī)的主流總線?;赑CI總線形成的CompactPCI和PXI總線廣泛應(yīng)用于儀器和自動(dòng)化領(lǐng)域。隨著PCI總線的廣泛應(yīng)用,其接口的設(shè)計(jì)開發(fā)顯得尤為重要。由于PCI總線的獨(dú)特性能,如信號(hào)負(fù)載能力、支持?jǐn)?shù)據(jù)的突發(fā)傳送、地址/數(shù)據(jù)、命令/字節(jié)使能信號(hào)總線復(fù)用等,使中小規(guī)模的器件難以實(shí)現(xiàn)接口電路。實(shí)現(xiàn)PCI總線接口一般采用CPLD或FPGA設(shè)計(jì)PCI接口,這種方法難度很大;另一種是采用專用的PCI接口電路,使設(shè)計(jì)開發(fā)者免除繁瑣的時(shí)序分析,縮短開發(fā)周期,降低開發(fā)成本。本文介紹PCI9052接口電路的功能及其在PCI板卡設(shè)計(jì)中的應(yīng)用

2接口電路

PCI9052是PLX公司開發(fā)的低價(jià)位PCI總線目標(biāo)接口電路,功耗低,采用PQFP型160引腳封裝,符合PCI2.1規(guī)范,它的局部總線(LOCALBUS)可以通過編程設(shè)置為8/16/32位的(非)復(fù)用總線,數(shù)據(jù)傳送率可達(dá)到132Mb/s。提供了ISA接口,可以使ISA適配器迅速、低成本地轉(zhuǎn)換到PCI總線上。主要功能與特性如下所述:

異步操作。PCI9052的LocalBus與PCI總線的時(shí)鐘相互獨(dú)立運(yùn)行,兩總線的異步運(yùn)行便于高、低速設(shè)備的兼容。LocalBus的運(yùn)行時(shí)鐘頻率范圍為0MHz~40MHz,TTL電平,PCI的運(yùn)行時(shí)鐘頻率范圍為0MHz~33MHz。

支持突發(fā)操作。PCI9052提供一個(gè)64字節(jié)的寫FIFO和一個(gè)32字節(jié)的讀FIFO,從而支持預(yù)取模式即突發(fā)操作。

中斷產(chǎn)生器。可以由LocalBus的二個(gè)中斷信號(hào)LINTi1和LINTi2產(chǎn)生一個(gè)PCI中斷信號(hào)INTA#。

串行EEPROM接口,用于存放PCI總線和Local總線的配置信息。

5個(gè)局域總線地址空間和4個(gè)片選,基址和地址范圍可以由串行EEPROM或主控設(shè)備進(jìn)行編程。

大/小Endian模式的字節(jié)交換,有二種交換字節(jié)順序的輸出方式。

總線驅(qū)動(dòng)。所有地址、數(shù)據(jù)和控制信號(hào)都有PCI9052直接驅(qū)動(dòng),不用額外的驅(qū)動(dòng)電路。

Localbus等待狀態(tài)。除了等待信號(hào)LRDYI#用于握手之外,PCI9052還有一個(gè)內(nèi)部等待產(chǎn)生器(包括地址到數(shù)據(jù)周期、數(shù)據(jù)到數(shù)據(jù)周期和數(shù)據(jù)到地址周期的等待)。

PCI鎖定機(jī)制。主控設(shè)備可以通過鎖定信號(hào)占有對(duì)PCI9052的唯一訪問權(quán)。

ISA總線模式。PCI9052提供一個(gè)ISA邏輯接口,用戶可直接使PCI總線和ISA總線相連,可以非常容易地將ISA設(shè)計(jì)轉(zhuǎn)換到PCI。

PCI9052的接口示意圖如圖1所示。

圖1PCI總線接口示意圖

3PCI9052的功能及操作

3.1初始化

上電時(shí),PCI總線的RST#信號(hào)將PCI9052的內(nèi)部寄存器設(shè)置為缺省值,同時(shí),PCI9052輸出局部復(fù)位信號(hào)(LRESET#),并且檢查EEPROM是否存在。如果設(shè)備上裝有EEPROM,且EEPROM的第一個(gè)16字節(jié)非空,那么,PCI9052根據(jù)EEPROM內(nèi)容設(shè)置內(nèi)部寄存器,否則設(shè)為缺省值。

3.2復(fù)位

PCI9052支持二種復(fù)位方式:硬件復(fù)位和軟件復(fù)位。硬件復(fù)位是PCI9052總線接口的RST#信號(hào)輸入有效時(shí)將引起整個(gè)PCI9052復(fù)位,并輸出LRESET#局部復(fù)位信號(hào)。軟件復(fù)位是PCI總線上的主機(jī)可以通過設(shè)置控制寄存器CNTRL(50H)中的軟件復(fù)位字節(jié)(Bit30)來對(duì)PCI9052復(fù)位,并輸出LRESET#信號(hào)。此時(shí),PCI和局部總線的配置寄存器的值將保持不變。當(dāng)CNTRL中的軟件復(fù)位字節(jié)有效時(shí),PCI9052僅對(duì)配置寄存器的訪問應(yīng)答,對(duì)局部總線的訪問不響應(yīng)。PCI9052保持這種狀態(tài)直到PCI總線上的主機(jī)清除軟件復(fù)位字節(jié)。

3.3對(duì)串行EEPROM接口的訪問

復(fù)位后,PCI9052開始讀串行EEPROM,若讀出的第一個(gè)字非FFFFH,則PCI9052認(rèn)為有一個(gè)有效的EEPROM存在,并且繼續(xù)進(jìn)行讀操作,否則,認(rèn)為EEPROM無效。PCI總線的主設(shè)備可以讀、寫連接在PCI9052上的串行EEPROM。對(duì)其進(jìn)行讀、寫操作之前需要將控制寄存器CNTRL[25](使能位)設(shè)置為“1”,并控制CNTRL[24]位以產(chǎn)生串行EEPROM的時(shí)鐘,然后,從EEDI送入指令代碼。如果在指令代碼之后由EEDO輸出“0”,則表明可以對(duì)其進(jìn)行讀、寫。需要結(jié)束操作時(shí),只要將CNTRL[25]設(shè)置為“0”即可。

3.4對(duì)內(nèi)部寄存器訪問

PCI9052提供了二種類型的片內(nèi)寄存器,即PCI配置寄存器和局部配置寄存器,二者都只能由PCI總線和串行EEPROM訪問,也可以通過設(shè)置寄存器CNTRL[13:12]禁止對(duì)后者的訪問,這樣,極大地增強(qiáng)了接口設(shè)計(jì)的靈活性。

3.5直接數(shù)據(jù)傳輸模式

PCI9052支持PCI總線上的主處理器對(duì)局部總線上的設(shè)備進(jìn)行直接訪問。PCI9052的配置寄存器將訪問映射到局部地址空間。片內(nèi)的讀寫FIFO存儲(chǔ)器使PCI9052支持PCI總線與局部總線之間進(jìn)行高性能的猝發(fā)傳送。PCI總線主控訪問局部總線示意圖如圖2所示。

圖2PCI主控直接訪問局部示意圖

3.6PCI中斷(INTA#)的產(chǎn)生

要產(chǎn)生PCI中斷INTA#,首先將寄存器INTCSR[6](PCI中斷使能位)設(shè)置為“1”,如果需要以軟件方式產(chǎn)生中斷,則只需將INTCSR[7](軟件中斷位)設(shè)置為“1”。如果系統(tǒng)設(shè)計(jì)方案中選用由局部總線上的設(shè)備產(chǎn)生中斷信號(hào)INTi1和INTi2、再生成PCI中斷INTA#的方式,只要將寄存器INTCSR的相關(guān)位按表1進(jìn)行設(shè)置,復(fù)位后INTCSR的值全部為“0”。

表1寄存器INTCSR相關(guān)的設(shè)置

含義

設(shè)置為“1”

設(shè)置為“0”

0(3)

INTil(INTi2)

使能

使能

禁止

1(4)

極性

高電平有效

低電平有效

2(5)

狀態(tài)

中斷激活

中斷末激活

8(9)

選擇使能

邊緣觸發(fā)

電平觸發(fā)

10(11)

邊緣觸發(fā)清除位

清除邊緣觸發(fā)

保持

4應(yīng)用實(shí)例

PCI9052是功能非常強(qiáng)大的PCI接口電路,用它設(shè)計(jì)PCI適配卡將使接口變得非常方便。圖3是PCI主處理機(jī)讀取SRAM的接口示意圖,其主要功能是實(shí)現(xiàn)對(duì)RAM的單次或突發(fā)讀、寫操作。

圖3存儲(chǔ)器突發(fā)讀寫示意圖

4.1電路連接

按照?qǐng)D3中的連接電路,對(duì)于SRAM主要有以下幾個(gè)引腳:A(17,0)、I/O(7,0)、OE、CE、WE等。地址線A(17,2)與本地地址線LA[17,2]相連,根據(jù)PCI9052的LBE[0,3]#的定義,這里用8位數(shù)據(jù)總線將LBE0#與A0連接,LBE1#與A1連接,OE與PCI9052的CS0#相連。PCI9052為設(shè)計(jì)人員提供了4個(gè)片選信號(hào)CS(3:0)#,可以為4個(gè)設(shè)備提供片選信號(hào),這樣,可以避免設(shè)計(jì)人員在設(shè)計(jì)電路時(shí)設(shè)計(jì)片選解碼電路,其地址和范圍可由其對(duì)應(yīng)的內(nèi)部寄存內(nèi)部本地寄存器配置。串行EEPROM用于存儲(chǔ)配置寄存器內(nèi)的配置信息,可以采用NM93C46或與之兼容的存儲(chǔ)器。

4.2寄存器設(shè)定

電路連接好后,要使電路能正常工作,必須對(duì)PCI9052內(nèi)部寄存器進(jìn)行配置。根據(jù)電路性能及特點(diǎn),應(yīng)將寄存器設(shè)定為非復(fù)用工作方式,采取存儲(chǔ)器映射,8位數(shù)據(jù)總線。局部總線0的基地址寄存器值為240001H,其地址范圍寄存器值為3FFF8H,其描述寄存器值為39H;片選0基址寄存器的初始值為4C0001;命令寄存器的初始值為02H;狀態(tài)寄存器的初始值為800H,其他寄存器采用默認(rèn)值。確定好各個(gè)寄存器的值后,應(yīng)依據(jù)一定的次序?qū)⒓拇嫫鞯某跏贾祵懭隕EPROM。

4.3驅(qū)動(dòng)程序的開發(fā)

為了從PCI總線配置寄存器中獲得主機(jī)動(dòng)態(tài)分配的映射基址并對(duì)映射端口進(jìn)行讀寫,必須編寫驅(qū)動(dòng)程序。編寫Windows驅(qū)動(dòng)程序時(shí),可以使用DDK,但難度較大。為了簡(jiǎn)化驅(qū)動(dòng)程序開發(fā),可使用Jungo公司推出的WinDriver開發(fā)工具。WinDriver可自動(dòng)生成VxD驅(qū)動(dòng)程序及相應(yīng)的高級(jí)函數(shù)。使用者不需具備Windows驅(qū)動(dòng)程序開發(fā)知識(shí),所生成的高級(jí)函數(shù)可直接在VC或CBuilder等高級(jí)編程語言中調(diào)用。

5結(jié)論

實(shí)用證明,用專用PCI接口電路對(duì)設(shè)計(jì)PCI接口卡帶來很大的方便。本文主要介紹PLX公司的PCI9052專用接口電路,設(shè)計(jì)者可根據(jù)需要選用其他接口電路,不需要ISA接口時(shí),可選用PCI9050;需要DMA數(shù)據(jù)傳送時(shí),可選用PCI9054。專用接口電路是設(shè)計(jì)PCI適配卡的最佳方法,不但大大縮短了設(shè)計(jì)周期,而且有利于驅(qū)動(dòng)程序的開發(fā)。

參考文獻(xiàn)

[1]李貴山.戚德虎.PCI局部總線開發(fā)者指南[M].西安:西安電子科技大學(xué)出版社,1997.

[2]楊全勝.胡友彬.現(xiàn)代微機(jī)原理與接口技術(shù)[M].北京:電子工業(yè)出版社,2002.

[3]TomShanley,DonAnderson,劉暉譯.PCI系統(tǒng)結(jié)構(gòu)[M].北京:電子工業(yè)出版社,2000.