PCI9054 學習小結

PCI的基本協議這裏就不介紹了,因爲一般的芯片協議都是集成好的,我只需要大體瞭解就行,不需要做芯片,我感覺就不需要太瞭解協議。 

這裏講解是基於PLX 的9054(9052)芯片爲基礎的,本人只是入門,望批評指正。

 

一、地址映射與數據傳輸

上圖中間部分是9054的內部結構圖,9054實際上充當了一個“橋”的作用,即所謂的“橋片技術”。9054的作用其實是把LOCAL總線端管理的一片地址,和PCI總線端管理的一片地址一一對應起來,即所謂的地址映射,而PCI總線與PC機的CPU管理的內存地址又是一一對應的,這樣就實現了橋:CPU 地址 <=> PCI 地址 <=> LOCAL 地址。

一般系統PCI地址是CPU地址一部分,關於PCI地址與系統地址關係可以看另一篇轉載博文http://blog.csdn.net/lg2lh/article/details/8041029

上面只是說了LOCAL總線與PCI總線以及CPU總線的對應關係,但是PCI技術的實際作用是進行數據傳輸。由內部結構圖可以看出,9054內部沒有什麼存儲單元,只有幾個FIFO。那系統是怎麼進行數據傳輸的呢,大家都知道一段地址對應了一段存儲空間,由上面地址映射可以知道,PCI芯片9054實際就是把LOCAL總線地址管理的外部存儲空間的數據傳輸到PCI總線地址對應的內存空間中,及CPU的內存空間。或者是將內存中的數據傳輸到LOCAL總線管理的外部地址空間中去。Local端地址總線管理的存儲空間一般由我們的控制芯片如FPGA或MCU提供。

二、PCI9054的基本知識

PCI9054的引腳主要分爲3部分:PCI總線接口,LOCAL總線接口,及串行EEPROM總線接口。

LOCAL總線的數據寬度爲32位,時鐘可達50Mhz。下面介紹三種總線的作用,接口圖如下圖所示。

 

PCI總線接口:負責與PC機PCI總線通信,要接至PCI板卡的金手指處,對32位系統,金手指一共120跟信號線,A,B兩面各60根,1-62,其中50,51處,無金手指引腳,共60根。

LOCAL總線接口:主要負責LOCAL端地址數據管理,與外圍CPLD或MCU相連。

串行EEPROM總線接口:主要負責PCI9054的所有的寄存器配置,將寄存器配置燒寫至EEPROM,PCI設備上電後加載EEPROM內容,完成PCI9054的寄存器配置。主要包括:PCI配置寄存器,PCI本地配置寄存器,運行時間寄存器,DMA配置寄存器,I2O信息寄存器(消息隊列寄存器?)。

 

PCI9054的PCI總線與LOCAL總線數據傳輸主要有三種模式:主模式,從模式,DMA模式。

而LOCAL總線的控制也有三種模式,M,C,J模式。其中常用C模式:地址數據總線非複用模式。

 

三、PCI9054的寄存器之間的關係

前面第一節講到了PCI總線與LOCAL地址映射,以及PCI地址與PC機內存空間映射,一般PC機就認爲PCI地址就是內存空間地址,所以9054解決的就是把LOCAL總線管理的地址空間與內存空間地址對應起來,下面講一下如何通過9054寄存器配置映射關係。

要明確,是通過PLX_MON這個軟件按要求配置好各寄存器內容,然後將數據燒寫到EEPROM中,共17字。

首先看一下PCI9054寄存器主要有哪些,前面已說主要有五部分:PCI配置寄存器,PCI本地配置寄存器,運行時間寄存器,DMA配置寄存器,I2O信息寄存器(消息隊列寄存器)

 

1、 PCI配置寄存器:主要用來配置與PCI總線相關的寄存器,例如,設備ID,供應商ID,類別代碼,版本號,系統供應商ID,子系統ID等。PCI設備ID爲9054,供應商ID爲10B5,類別代碼0680。對應寄存器如下:

 

主要介紹一下最後四個寄存器,這四個主要完成LOCAL端總線相關的寄存器在PCI總線的映射,以及LOCAL總線管理的地址空間在PCI總線上的映射。這四個寄存器都是由系統進行配置的,無法通過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對應的寄存器。

LAS0BASPACE0基地址寄存器。這個寄存器與PCI總線的PCIBAR2寄存器相互對應,即LOCAL端的FPGA(MCU)就是通過訪問這個地址來訪問PCIBAR2所指的PCI內存空間

若此時LAS0RR設爲0x80000001,而PCIBAR2設置值是0XE7000000.則對於PCI空間0XE7000000的訪問就會映射到對本地空間0x80000001的訪問。映射圖如下。

 

LAS0RRSPACE0空間的地址範圍,在EEPROM的設置值是實際範圍的補碼

 

LAS1BA / LAS1RR 與上面兩個相同,只是用來映射SPACE1空間起始地址和範圍的,不再贅述。

 

3、 DMA配置寄存器

 

4、 寄存器配置方法

最後介紹一下EEPROM配置字,配置字有長加載模式和額外長加載模式,其中長加載模式共17個長字,額外長加載模式則22個長字。其中LAS1RR,LAS1BA這兩個寄存器是在額外長加載模式中配置的。對PLX9054最重要的配置就是完成對PCI寄存器和LOCAL寄存器的配置。17長字與22長字具體加載內容如下表。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章