PCI總線接口芯片9050及其應(yīng)用
摘要:PCI9050是PLX公司推出的一種低成本的PCI協(xié)議從模式接口芯片。本文主要介紹了它的功能、特點(diǎn)及應(yīng)用,說(shuō)明了它在使用時(shí)應(yīng)該注意的一些問(wèn)題,最后給出了一個(gè)具體的應(yīng)用實(shí)例。
關(guān)鍵詞:PCI總線 局部總線 PCI9050
1.引言
PCI總線是目前應(yīng)用最廣泛、最流行的一種高速同步總線,具有32bit總線寬度,總線時(shí)鐘頻率為0~33MHZ,最大傳輸速率可以達(dá)到132Mbyte/s,遠(yuǎn)遠(yuǎn)大于ISA總線5Mbyte/s的速度。而且,它不象ISA總線那樣把地址尋址和數(shù)據(jù)讀寫控制信號(hào)都交給微處理器來(lái)處理,而是獨(dú)立于處理器,所以它可以支持突發(fā)傳送。PCI總線與CPU無(wú)關(guān),與時(shí)鐘頻率也無(wú)關(guān),因此它可以應(yīng)用于各種平臺(tái),支持多處理器和并發(fā)工作。
PCI總線協(xié)議比較復(fù)雜,因此它的接口電路實(shí)現(xiàn)起來(lái)也比較困難。它不但有著嚴(yán)格的同步時(shí)序要求,而且為了實(shí)現(xiàn)即插即用和自動(dòng)配置,PCI接口還要求有許多的配置寄存器。對(duì)于一般的設(shè)計(jì)者來(lái)說(shuō),為了縮短開(kāi)發(fā)周期,沒(méi)有必要自己去設(shè)計(jì)所有的接口邏輯,只要利用通用PCI接口芯片就能很好的進(jìn)行設(shè)計(jì)開(kāi)發(fā),大大減小了工作的難度。現(xiàn)在使用較多的是AMCC公司S59XX系列和PLX公司推出的PLX系列。下面將主要介紹PLX公司的PCI9050接口芯片。
2.PCI9050概述
PCI9050是PLX公司為擴(kuò)展適配板卡推出的能提供一種混合的高性能PCI總線目標(biāo)模式的接口芯片,可提供用于適配卡的小型高性能PCI總線目標(biāo)接口。
它的主要特點(diǎn)有下面這些:
l符合PCI2.1規(guī)范,支持開(kāi)發(fā)低成本的從模式適配器。該芯片支持從ISA適配器向PCI適配器轉(zhuǎn)換。
l帶有五個(gè)局域總線地址空間和四個(gè)片選。
l支持突發(fā)存儲(chǔ)器映射和I/O映射方式在PCI總線和局部總線存取數(shù)據(jù)。雙向FIFO可以用于零等待狀態(tài)突發(fā)操作。PCI總線總是工作在突發(fā)方式,局部總線可以設(shè)置成突發(fā)方式或者連續(xù)單周期方式。
l可以從兩個(gè)局部總線中斷輸入生成一個(gè)PCI中斷。
l局部時(shí)鐘與PCI時(shí)鐘異步工作,允許局部總線獨(dú)立于PCI時(shí)鐘工作。
l支持多路復(fù)用和非多路復(fù)用的8位、16位和32位通用局部總線。
l總線驅(qū)動(dòng)。PCI9050直接生成所有的控制、地址和數(shù)據(jù)信號(hào),用于驅(qū)動(dòng)PCI總線,不需要額外驅(qū)動(dòng)電路。
3.PCI9050的功能描述
PCI9050為非PCI設(shè)備和PCI總線提供數(shù)據(jù)通道。
(1)初始化
在上電時(shí),PCI9050的內(nèi)部寄存器由PCI總線的RST#信號(hào)復(fù)位,在局部總線上輸出LRESET#信號(hào)并檢查EEPROM是否存在數(shù)值。若是存在且前48位不全為1,則PCI9050用EEPROM中的值來(lái)配置片內(nèi)寄存器,否則設(shè)為缺省值。PCI配置寄存器只能通過(guò)EEPROM或PCI主機(jī)CPU來(lái)進(jìn)行設(shè)置。在串行EEPROM初始化時(shí),PCI9050反饋給PCI總線RETBY信號(hào)。
(2)復(fù)位
PCI總線的RST#信號(hào)有效將引起整個(gè)PCI9050復(fù)位,輸出LRESET#局部復(fù)位信號(hào)。PCI總線上的主控設(shè)備也可以通過(guò)設(shè)置寄存器中的軟件復(fù)位比特來(lái)對(duì)PCI9050進(jìn)行復(fù)位,但是主控設(shè)備只能訪問(wèn)配置寄存器,而不能訪問(wèn)局部總線。PCI9050會(huì)一直保持這種復(fù)位狀態(tài)直到PCI主控設(shè)備清除軟件復(fù)位比特。
(3)串行存儲(chǔ)器接口(EEPROM)
復(fù)位后,PCI9050開(kāi)始讀串行EEPROM。START為0表示EEPROM存在,PCI9050用它來(lái)進(jìn)行配置。若讀出的第一個(gè)字不是FFFF,那么就認(rèn)為EEPROM是非空的,繼續(xù)進(jìn)行操作。串行EEPROM是按重要性順序先后配置信息的。
PCI總線上的主機(jī)可以對(duì)EEPROM進(jìn)行讀寫,寄存器位[29:24]控制著PCI9050的管腳,對(duì)EEPROM位進(jìn)行讀寫。將重載配置寄存器位CNTRL[29]置1可以用串行EEPROM重新配置PCI9050。
(4)訪問(wèn)內(nèi)部寄存器
PCI9050提供一系列的內(nèi)部寄存器來(lái)為總線接口設(shè)計(jì)與實(shí)現(xiàn)提供最大的靈活性。寄存器分為兩類:PCI配置寄存器和局部配置寄存器。主要有以下幾種:
l設(shè)備與廠商寄存器,它用來(lái)標(biāo)識(shí)設(shè)備類別及生產(chǎn)廠家。
l狀態(tài)寄存器,它包含與PCI總線有關(guān)的事件。
l命令寄存器,控制設(shè)備對(duì)PCI訪問(wèn)的響應(yīng)。
l分類碼元寄存器,它用來(lái)標(biāo)識(shí)設(shè)備的一般功能。
l局部配置寄存器存儲(chǔ)器訪問(wèn)的PCI基地址寄存器:系統(tǒng)BIOS利用此寄存器為PCI9050局部配置寄存器的存儲(chǔ)器訪問(wèn)分配一段PCI地址空間,范圍為128字節(jié),初始化時(shí),主機(jī)對(duì)寄存器寫入FFFFFFFF,讀回FFFFFF70,以確定其占用空間為128字節(jié)。
l局部配置寄存器I/O訪問(wèn)的PCI基地址寄存器:系統(tǒng)BIOS利用此寄存器為PCI9050局部配置寄存器的I/O訪問(wèn)分配一段PCI地址空間,范圍為128字節(jié),初始化時(shí),主機(jī)對(duì)寄存器寫入FFFFFFFF,讀回FFFFFF71,以確定其占用空間為128字節(jié)。
l局部地址空間0(地址空間1,2,3類似)訪問(wèn)的PCI基地址寄存器:系統(tǒng)BIOS利用此寄存器為PCI9050局部地址空間0的訪問(wèn)分配一段PCI地址空間。初始化時(shí),主機(jī)對(duì)寄存器寫入FFFFFFFF,讀回?cái)?shù)值來(lái)確定它的范圍。
對(duì)PCI9050寄存器進(jìn)行讀寫操作的單位可以是字節(jié),字,長(zhǎng)字。PCI9050的存儲(chǔ)器訪問(wèn)可以是突發(fā)的或非突發(fā)的。
(5)直接數(shù)據(jù)轉(zhuǎn)換操作
PCI主控設(shè)備能夠直接對(duì)局部總線上的設(shè)備進(jìn)行讀寫操作。PCI9050內(nèi)的配置寄存器控制局部地址空間的重新映射。雙向FIFO引起局部和PCI總線上高性能的突發(fā)。
直接從操作:PCI9050支持突發(fā)式內(nèi)存映射傳輸和單周期的內(nèi)存或I/O映射傳輸。映射在PCI內(nèi)存和I/O空間中的地址由PCI基址寄存器設(shè)置。而且,局部映射寄存器允許將PCI地址空間轉(zhuǎn)換為局部地址空間。
4.PCI9050使用時(shí)應(yīng)該注意的問(wèn)題
9050內(nèi)部的寄存器是通過(guò)外部串行EEPROM上電加載的。9050會(huì)自動(dòng)根據(jù)該EEPROM的狀態(tài)來(lái)決定其內(nèi)部寄存器的值。如果EEPROM內(nèi)部沒(méi)有燒寫為有效值,應(yīng)保證其開(kāi)始48位全為“1”,否則,系統(tǒng)上電時(shí)會(huì)出錯(cuò)。
9050有5個(gè)本地空間,用戶可根據(jù)實(shí)際的需要來(lái)進(jìn)行配置,并不是要用到所有的。當(dāng)將本地空間配置成I/O時(shí),對(duì)該空間的讀寫只能單次進(jìn)行。如果配置成存儲(chǔ)器模式,用戶會(huì)有多種接入模式,大大提高了速度。
突發(fā)模式是為了提高本地總線操作速度而設(shè)計(jì)的。在該模式期間,9050只提供一次傳輸開(kāi)始和終止信號(hào)。開(kāi)始信號(hào)有效時(shí),地址將以本地時(shí)鐘的頻率遞增,可以利用BTERM#引腳是否有效來(lái)中止突發(fā)操作。
還有一點(diǎn)需要說(shuō)明的是,Pentium系列的CPU,不支持突發(fā)讀操作,只可能產(chǎn)生單次讀操作。用戶如果需要在PCI總線上實(shí)現(xiàn)突發(fā)操作,應(yīng)該選用支持DMA傳輸?shù)男酒?,比如PCI9054。但是PCI9050會(huì)把PCI總線上的多次單次讀操作轉(zhuǎn)化為突發(fā)操作。
5.基于PCI9050的PCI接口設(shè)計(jì)
下面給出的是一個(gè)利用PCI9050做接口的PCI插卡。在用戶電路上,采用MT90820做交換,實(shí)現(xiàn)數(shù)字電路的轉(zhuǎn)接和復(fù)接。具體電路如下圖所示。
(1)硬件設(shè)計(jì):
接口芯片PCI9050主要包括PCI總線信號(hào)接口和局部總線接口。硬件電路分為三個(gè)部分。第一部分是9050和PCI插槽間的連接信號(hào)線。這些信號(hào)包括地址數(shù)據(jù)復(fù)用信號(hào)AD[31:0],總線命令信號(hào)C/BE[3:0]#和PCI協(xié)議控制信號(hào)PAR、FRAME#、IRDY#、TRDY#、STOP#、IDSEL、DEVSEL#、PERR#、SERR#。第二部分是與串行EEPROM的連線。這里有四根信號(hào)線:EESK、EEDO、EEDI、EECS,串行EEPROM的數(shù)據(jù)可以提前燒好,也可以在線燒寫。第三部分就是9050與應(yīng)用電路的連接。在這個(gè)例子里,它和MT90820相連,包括LA地址總線,LAD數(shù)據(jù)總線,LBE#字節(jié)使能信號(hào),LW/R讀寫信號(hào)等。
(2)軟件設(shè)計(jì):
程序主要分為兩個(gè)部分。一部分為PCI9050各個(gè)配置寄存器賦值并初始化,還有一部分為主程序,任務(wù)就是把PCM鏈路上的信號(hào)經(jīng)過(guò)MT90820交換矩陣后,再通過(guò)PCI9050送到CPU。
6.結(jié)束語(yǔ)
由于PCI總線數(shù)據(jù)吞吐量大,傳輸速率高,所以現(xiàn)在PCI總線已經(jīng)慢慢取代了ISA總線成為主流。當(dāng)然,PCI總線協(xié)議要復(fù)雜的多,接口設(shè)計(jì)難度也就增大了。目前,設(shè)計(jì)PCI接口有兩種方法。一種是使用ALTERA,XILINX等公司的FPGA系列并使用他們的元件庫(kù),這種方式需要用戶直接面對(duì)復(fù)雜的PCI協(xié)議,開(kāi)發(fā)周期長(zhǎng),難度大;還有一種就是利用我們上面介紹的PCI接口芯片,設(shè)計(jì)起來(lái)就要簡(jiǎn)單的多,因此得到了廣泛的應(yīng)用。
評(píng)論