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