PCI的基本協(xié)議這里就不介紹了,由于1般的芯片協(xié)議都是集成好的,我只需要大體了解就行,不需要做芯片,我感覺(jué)就不需要太了解協(xié)議。
這里講授是基于PLX 的9054(9052)芯片為基礎(chǔ)的,本人只是入門,望批評(píng)指正。
1、地址映照與數(shù)據(jù)傳輸
上圖中間部份是9054的內(nèi)部結(jié)構(gòu)圖,9054實(shí)際上充當(dāng)了1個(gè)“橋”的作用,即所謂的“橋片技術(shù)”。9054的作用實(shí)際上是把LOCAL總線端管理的1片地址,和PCI總線端管理的1片地址逐一對(duì)應(yīng)起來(lái),即所謂的地址映照,而PCI總線與PC機(jī)的CPU管理的內(nèi)存地址又是逐一對(duì)應(yīng)的,這樣就實(shí)現(xiàn)了橋:CPU 地址 <=> PCI 地址 <=> LOCAL 地址。
1般系統(tǒng)PCI地址是CPU地址1部份,關(guān)于PCI地址與系統(tǒng)地址關(guān)系可以看另外一篇轉(zhuǎn)載博文http://blog.csdn.net/lg2lh/article/details/8041029。
上面只是說(shuō)了LOCAL總線與PCI總線和CPU總線的對(duì)應(yīng)關(guān)系,但是PCI技術(shù)的實(shí)際作用是進(jìn)行數(shù)據(jù)傳輸。由內(nèi)部結(jié)構(gòu)圖可以看出,9054內(nèi)部沒(méi)有甚么存儲(chǔ)單元,只有幾個(gè)FIFO。那系統(tǒng)是怎樣進(jìn)行數(shù)據(jù)傳輸?shù)哪兀蠹叶贾?段地址對(duì)應(yīng)了1段存儲(chǔ)空間,由上面地址映照可以知道,PCI芯片9054實(shí)際就是把LOCAL總線地址管理的外部存儲(chǔ)空間的數(shù)據(jù)傳輸?shù)?/span>PCI總線地址對(duì)應(yīng)的內(nèi)存空間中,及CPU的內(nèi)存空間。或是將內(nèi)存中的數(shù)據(jù)傳輸?shù)絃OCAL總線管理的外部地址空間中去。Local端地址總線管理的存儲(chǔ)空間1般由我們的控制芯片如FPGA或MCU提供。
2、PCI9054的基本知識(shí)
PCI9054的引腳主要分為3部份:PCI總線接口,LOCAL總線接口,及串行EEPROM總線接口。
LOCAL總線的數(shù)據(jù)寬度為32位,時(shí)鐘可達(dá)50Mhz。下面介紹3種總線的作用,接口圖以下圖所示。
PCI總線接口:負(fù)責(zé)與PC機(jī)PCI總線通訊,要接至PCI板卡的金手指處,對(duì)32位系統(tǒng),金手指1共120跟信號(hào)線,A,B兩面各60根,1⑹2,其中50,51處,無(wú)金手指引腳,共60根。
LOCAL總線接口:主要負(fù)責(zé)LOCAL端地址數(shù)據(jù)管理,與外圍CPLD或MCU相連。
串行EEPROM總線接口:主要負(fù)責(zé)PCI9054的所有的寄存器配置,將寄存器配置燒寫(xiě)至EEPROM,PCI裝備上電后加載EEPROM內(nèi)容,完成PCI9054的寄存器配置。主要包括:PCI配置寄存器,PCI本地配置寄存器,運(yùn)行時(shí)間寄存器,DMA配置寄存器,I2O信息寄存器(消息隊(duì)列寄存器?)。
PCI9054的PCI總線與LOCAL總線數(shù)據(jù)傳輸主要有3種模式:主模式,從模式,DMA模式。
而LOCAL總線的控制也有3種模式,M,C,J模式。其中經(jīng)常使用C模式:地址數(shù)據(jù)總線非復(fù)用模式。
3、PCI9054的寄存器之間的關(guān)系
前面第1節(jié)講到了PCI總線與LOCAL地址映照,和PCI地址與PC機(jī)內(nèi)存空間映照,1般PC機(jī)就認(rèn)為PCI地址就是內(nèi)存空間地址,所以9054解決的就是把LOCAL總線管理的地址空間與內(nèi)存空間地址對(duì)應(yīng)起來(lái),下面講1下如何通過(guò)9054寄存器配置映照關(guān)系。
要明確,是通過(guò)PLX_MON這個(gè)軟件按要求配置好各寄存器內(nèi)容,然后將數(shù)據(jù)燒寫(xiě)到EEPROM中,共17字。
首先看1下PCI9054寄存器主要有哪些,前面已說(shuō)主要有5部份:PCI配置寄存器,PCI本地配置寄存器,運(yùn)行時(shí)間寄存器,DMA配置寄存器,I2O信息寄存器(消息隊(duì)列寄存器)
1、 PCI配置寄存器:主要用來(lái)配置與PCI總線相干的寄存器,例如,裝備ID,供應(yīng)商ID,種別代碼,版本號(hào),系統(tǒng)供應(yīng)商ID,子系統(tǒng)ID等。PCI裝備ID為9054,供應(yīng)商ID為10B5,種別代碼0680。對(duì)應(yīng)寄存器以下:
主要介紹1下最后4個(gè)寄存器,這4個(gè)主要完成LOCAL端總線相干的寄存器在PCI總線的映照,和LOCAL總線管理的地址空間在PCI總線上的映照。這4個(gè)寄存器都是由系統(tǒng)進(jìn)行配置的,沒(méi)法通過(guò)EEPROM配置。其中PCIBAR0,PCIBAR1,比較好理解,就是把LOCAL總線配置寄存器,DMA寄存器,運(yùn)行寄存器映照到對(duì)應(yīng)的內(nèi)存空間去,配置的值就是他們?cè)趦?nèi)存空間的起始地址。
下面介紹PCIBAR2,PCIBAR3寄存器,后面會(huì)提到LOCAL總線管理了兩部份地址空間,space0和space1。PCIBAR2,PCIBAR3就是把這兩部份映照到PCI總線地址上,即把這兩個(gè)空間映照到PC機(jī)的內(nèi)存空間。PCIBAR2的配置值就是LOCAL總線端space0空間映照到PCI內(nèi)存空間的起始地址,PCIBAR3的配置值則是LOCAL總線端space1空間映照到PCI內(nèi)存空間的起始地址。而LOCAL總線端SPACE0和SPACE1在local真?zhèn)€實(shí)際地址及范圍,則是由LOCAL配置寄存器決定。下面介紹LOCAL端配置寄存器。
2、 LOCAL配置寄存器
SPACE0對(duì)應(yīng)的寄存器。
LAS0BA:SPACE0基地址寄存器。這個(gè)寄存器與PCI總線的PCIBAR2寄存器相互對(duì)應(yīng),即LOCAL真?zhèn)€FPGA(MCU)就是通過(guò)訪問(wèn)這個(gè)地址來(lái)訪問(wèn)PCIBAR2所指的PCI內(nèi)存空間。
若此時(shí)LAS0RR設(shè)為0x80000001,而PCIBAR2設(shè)置值是0XE7000000.則對(duì)PCI空間0XE7000000的訪問(wèn)就會(huì)映照到對(duì)本地空間0x80000001的訪問(wèn)。映照?qǐng)D以下。
LAS0RR:SPACE0空間的地址范圍,在EEPROM的設(shè)置值是實(shí)際范圍的補(bǔ)碼。
LAS1BA / LAS1RR 與上面兩個(gè)相同,只是用來(lái)映照SPACE1空間起始地址和范圍的,不再贅述。
3、 DMA配置寄存器
4、 寄存器配置方法
最后介紹1下EEPROM配置字,配置字有長(zhǎng)加載模式和額外長(zhǎng)加載模式,其中長(zhǎng)加載模式共17個(gè)長(zhǎng)字,額外長(zhǎng)加載模式則22個(gè)長(zhǎng)字。其中LAS1RR,LAS1BA這兩個(gè)寄存器是在額外長(zhǎng)加載模式中配置的。對(duì)PLX9054最重要的配置就是完成對(duì)PCI寄存器和LOCAL寄存器的配置。17長(zhǎng)字與22長(zhǎng)字具體加載內(nèi)容以下表。