《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技术 > 业界动态 > PCI9054芯片接口设计中若干问题的深入研究

PCI9054芯片接口设计中若干问题的深入研究

2008-08-05
作者:童 鹏, 吴新建

  摘 要: PCI9054芯片是目前主流的PCI總線接口芯片之一。從廠家提供的開發(fā)資料以及公開發(fā)表的論文來看,有相當(dāng)多的內(nèi)容都過于簡單,甚至有不合理或錯誤的地方。針對在實際開發(fā)過程中遇到的問題(芯片工作模式選擇、總線仲載、存儲器和I/O" title="I/O">I/O操作、DMA傳輸和突發(fā)數(shù)據(jù)傳輸、PCI中斷等)和解決方法進行了總結(jié),希望對從事PCI9054芯片應(yīng)用的設(shè)計人員有一定的參考價值。
  關(guān)鍵詞: PCI9054芯片 DMA I/O 總線仲裁" title="總線仲裁">總線仲裁 中斷


  隨著ISA總線逐步被淘汰,基于PCI總線的擴展板" title="擴展板">擴展板越來越被廣泛地應(yīng)用于各種高速、大數(shù)據(jù)量的處理系統(tǒng)中。盡管有許多供應(yīng)商提供了各種通用的PCI總線擴展板,但在較多應(yīng)用場合,用戶還必須自行設(shè)計滿足自己特殊需求的PCI擴展板,這就不可避免地會遇到PCI總線接口問題。對于絕大多數(shù)用戶而言,選擇專用PCI接口芯片進行PCI接口設(shè)計是必然的選擇。
  PCI9054是PLX公司推出的一種32位33MHz的PCI總線主控I/O加速器。它采用多種先進技術(shù),使復(fù)雜的PCI接口應(yīng)用設(shè)計變得相對簡單。該芯片是目前主流的PCI接口芯片之一,其功能和性能如下[1~5]
  ·符合PCI V2.2規(guī)范,包含PCI電源管理特性;
  ·支持PCI雙地址周期,地址空間高達(dá)4GB;
  ·提供兩個獨立的可編程DMA控制器,每個通道均支持塊和分散/集中的DMA方式;
  ·PCI與 Local Bus之間數(shù)據(jù)傳輸速率高達(dá)132MB/s;
  ·支持復(fù)用或非復(fù)用的32位局部總線操作,本地總線支持8位、16位和32位外圍設(shè)備和存儲設(shè)備,本地總線有三種工作模式:M模式、C模式和J模式,可通過模式選擇引腳加以選擇;
  ·PCI9054內(nèi)部有可編程的FIFO,可以實現(xiàn)零等待突發(fā)傳輸及本地總線與PCI總線之間的異步操作, 本地總線時鐘由外部提供,該時鐘可以和PCI時鐘異步,本地總線速率高達(dá)50MHz;
  ·支持可編程突發(fā)管理、可編程預(yù)取數(shù)技術(shù)和可編程中斷產(chǎn)生;
  ·3.3V/5V 兼容。
1 PCI9054的工作模式
  PCI9054有M、C、J三種工作模式,可通過模式選擇控制引腳MODE[1:0]進行控制。當(dāng)MODE[1:0]=“11”時,PCI9054工作在M模式;當(dāng)MODE[1:0]=“00”時,PCI9054工作在C模式;當(dāng)MODE[1:0]=“01”時,PCI9054工作在J模式;當(dāng)MODE[1:0]=“10”時,為保留工作狀態(tài)。
  M模式可與Motorola MPC850或MPC860系列高性能微處理器進行無縫連接;C模式可與Intel i960系列高性能微處理器進行無縫連接;J模式地址線和數(shù)據(jù)線復(fù)用,應(yīng)用很復(fù)雜,不過在一些特殊的應(yīng)用場合,利用J模式和TI公司6000系列DSP的HPI口進行接口,其控制邏輯" title="控制邏輯">控制邏輯將比其它模式要簡單得多。
  事實上,C模式能夠滿足絕大多數(shù)的應(yīng)用需求,而且C模式的本地總線操作時序最簡單,邏輯控制相對容易,其開發(fā)難度相對較低。因此,如無特殊需求,建議采用C模式。
2 總線仲裁
  在PCI9054與本地總線的接口設(shè)計中,一般需采用一片可編程邏輯器件CPLD/FPGA進行邏輯控制。在其控制邏輯中,總線仲裁邏輯是最關(guān)鍵、最核心的部分,直接影響計算機運行的穩(wěn)定性。如果總線仲裁邏輯設(shè)計不合理,當(dāng)計算機對PCI擴展板上的硬件資源進行訪問時,計算機將會死機,因此PCI9054本地總線的所有控制邏輯必須服從于總線仲裁邏輯。
  下面以C模式為例對PCI9054的總線仲裁邏輯進行探討。在C模式下,PCI9054的143腳LHOLD和144腳LHOLDA是總線仲裁輸入輸出信號控制引腳,從公開發(fā)表的論文來看,有人將這兩個引腳直接與設(shè)計電路相連進行總線仲裁邏輯設(shè)計。筆者在設(shè)計時也曾采用過這種方式,結(jié)果計算機運行很不穩(wěn)定,經(jīng)常莫名其妙地死機。仔細(xì)分析這種方式設(shè)計的電路會發(fā)現(xiàn),該設(shè)計電路其實是利用器件的引腳傳輸延時配合總線仲裁電路的時序關(guān)系的。一般情況下,當(dāng)環(huán)境溫度、工作電壓等外界因素變化時,大多數(shù)邏輯器件的引腳延時會有相應(yīng)的變化,因此用器件引腳延時設(shè)計出的總線仲裁邏輯電路運行不穩(wěn)定應(yīng)該是預(yù)料之中的事。
  利用D觸發(fā)器只在觸發(fā)時鐘有效邊沿對信號敏感的特性進行設(shè)計,提高電路運行的穩(wěn)定性,是可編程邏輯器件設(shè)計中的一種常用技巧。圖1是PCI9054在C模式下對外設(shè)進行單一周期寫操作的時序圖,圖2是利用可編程邏輯器件中的D觸發(fā)器設(shè)計出的總線仲裁電路。
  在圖1中,ADS#、BLAST#和READY#信號的時序配合很重要,如果配合不好,計算機同樣會死機。要提高電路穩(wěn)定性,其設(shè)計思想與圖2中的總線仲裁邏輯電路的設(shè)計思想相似。從多次實驗情況來看,無論使用哪種工作模式,在該設(shè)計思想下設(shè)計出的本地總線控制邏輯電路運行非常穩(wěn)定,沒有死機的情況發(fā)生。

?


3 存儲器和I/O操作
  通常PCI擴展板應(yīng)該有配置空間、存儲器空間和I/O空間三類資源??臻g配置是必須的,根據(jù)設(shè)計需要,后兩種資源可以只包含其中之一。PCI9054有S0和S1兩個配置空間,兩個配置空間都可以配置成存儲器空間和I/O空間,存儲器空間和I/O空間的配置既有相同之處,也有很大的區(qū)別。其相同點為兩者都以字節(jié)為單位進行空間配置。不同之處有以下幾點:
  (1) 存儲器空間支持0~4GB的空間配置和映射,而I/O空間只支持0~256字節(jié)的空間配置和映射;
  (2) 存儲器空間支持8位、16位和32位總線位寬配置和操作,而I/O空間只支持32位總線位寬配置和操作;
  (3) 存儲器空間支持單一周期和突發(fā)模式讀寫操作,而I/O空間只支持單一周期讀寫操作;
  (4) 在編寫設(shè)備驅(qū)動程序" title="設(shè)備驅(qū)動程序">設(shè)備驅(qū)動程序時,存儲器空間用程序指針進行訪問,I/O空間則用專用的函數(shù)進行訪問。
  如果不清楚存儲器空間和I/O空間的異同點,有可能配錯相應(yīng)的寄存器。當(dāng)計算機重新啟動時,很有可能會啟動不起來。除此之外,值得注意的是:在配置存儲器空間和I/O空間時,不要將兩種硬件資源配置到相同的空間,導(dǎo)致空間重疊,使驅(qū)動程序產(chǎn)生誤操作。
4 DMA和突發(fā)數(shù)據(jù)傳輸
  在《PCI9054-DataBook》中,每種工作模式都將DMA和突發(fā)數(shù)據(jù)傳輸?shù)臅r序圖放在一起,這并不意味著DMA和突發(fā)數(shù)據(jù)傳輸是等同的,這是兩個不同的概念。事實上,既可利用單一周期的總線操作也可利用DMA方式進行數(shù)據(jù)傳輸。
  DMA和突發(fā)數(shù)據(jù)傳輸?shù)淖饔檬遣煌摹CI9054中有兩個DMA通道,可以獨立工作,互不干擾。采用DMA方式傳輸數(shù)據(jù),可以節(jié)省CPU資源;采用突發(fā)方式傳輸數(shù)據(jù)可以提高數(shù)據(jù)的傳輸率,充分發(fā)揮PCI總線數(shù)據(jù)傳輸率高的優(yōu)點。因此,在高速大容量數(shù)據(jù)傳輸和處理系統(tǒng)中,將DMA和突發(fā)數(shù)據(jù)傳輸方式結(jié)合在一起是比較理想的,一方面可以充分發(fā)揮PCI總線的性能,另一方面可以將節(jié)省出的CPU資源對數(shù)據(jù)處理算法進行優(yōu)化。圖3是PCI9054在C模式下的突發(fā)數(shù)據(jù)傳輸方式的時序圖。
  從圖1和圖3可以看出,用狀態(tài)機實現(xiàn)該控制邏輯是比較理想的。圖4是PCI9054在C模式下采用單一周期和突發(fā)相結(jié)合的總線訪問狀態(tài)轉(zhuǎn)換圖。用該狀態(tài)轉(zhuǎn)換圖設(shè)計出的邏輯電路既可滿足單一周期總線訪問的需要,又可以滿足突發(fā)方式傳輸數(shù)據(jù)的需要,具有很大的實用價值。


  使用DMA和突發(fā)方式相結(jié)合進行數(shù)據(jù)傳輸時,驅(qū)動程序要作如下設(shè)置:
  (1) 調(diào)用驅(qū)動程序中相應(yīng)的API函數(shù),找到PC機的物理地址;
  (2) 在設(shè)備驅(qū)動程序中使能突發(fā)寄存器;
  (3) 在設(shè)備驅(qū)動程序中使能總線位寬寄存器;
  (4) 在設(shè)備驅(qū)動程序中使能相應(yīng)的寄存器,指明DMA傳輸?shù)姆较蚴荘CI→LOCAL還是LOCAL→PCI;
  (5) 在設(shè)備驅(qū)動程序中指明本次DMA傳輸需要傳輸?shù)淖止?jié)數(shù)。
  完成上述設(shè)置后,即可在突發(fā)方式下進行DMA傳輸,否則DMA傳輸會失敗。


5 PCI中斷
  PCI總線采用的是中斷共享機制,所有的PCI擴展板在PCI插槽上共用一根信號線INTA#,通過電平觸發(fā)方式響應(yīng)PCI中斷。每塊PCI擴展板上的PCI9054 提供的中斷使能寄存器和中斷狀態(tài)寄存器能識別相應(yīng)板卡上十幾種類型的PCI中斷[3~5]。
  當(dāng)PCI插槽上只有一塊PCI擴展板,而系統(tǒng)需要使用某種PCI中斷時,則在主程序中將相應(yīng)的中斷使能寄存器置位,當(dāng)相應(yīng)的中斷源中斷信號到來時,與主板相連的信號線INTA#置一段時間低電平后,中斷狀態(tài)寄存器中的相應(yīng)位被置位。當(dāng)這兩個寄存器的的相應(yīng)位都有效時,計算機響應(yīng)相應(yīng)的PCI中斷,執(zhí)行中斷服務(wù)子程序。在《PCI9054-DataBook》中,INTA#信號為11個本地總線時鐘周期,該時序圖給不少設(shè)計人員帶來了很多困惑。根據(jù)筆者的應(yīng)用經(jīng)驗,INTA#信號在7μs左右是比較理想的,這與在Windows下PCI總線每秒鐘可以響應(yīng)十幾萬次中斷的相關(guān)資料是相符的[5]。
  當(dāng)PCI插槽上有多塊PCI擴展板需要用到中斷功能時,其工作過程與一塊PCI擴展板差不多。唯一不同的是,首先驅(qū)動程序要利用一系列設(shè)備識別寄存器對擴展板進行設(shè)備識別,然后利用中斷使能寄存器和中斷狀態(tài)寄存器對中斷類型進行識別,最后響應(yīng)相應(yīng)的中斷服務(wù)子程序。
  在網(wǎng)上經(jīng)常看見一些應(yīng)用PCI9054的設(shè)計人員被以上討論的問題所困擾,筆者在近兩年從事PCI9054芯片應(yīng)用設(shè)計中,也曾被這些問題困擾過。本文從這些方面對PCI9054芯片的應(yīng)用進行了深入的探討和總結(jié),提出的所有技術(shù)解決方案都經(jīng)過實驗驗證是可行的,這些內(nèi)容在以往公開發(fā)表的論文中一般比較少見。本文探討的內(nèi)容對從事PCI9054芯片應(yīng)用設(shè)計的人員應(yīng)該會有一定的參考價值。
參考文獻
1 陳露晨. PCI9054性能分析及外部FIFO的擴充.電子產(chǎn)品世界, 2000(11)
2 譚博釗, 陶 然. 高速數(shù)據(jù)傳輸卡用PCI9054總線控制器. 電子產(chǎn)品世界, 2001(10)
3 PCI9054 Data Book V2.0. PLX Technology Inc.August 1999
4 PLX SDK Software Development Kit User’s Manual Version 4.0. PLX Technology Inc, 2002
5 李貴山, 稱金鵬. PCI局部總線及其應(yīng)用.西安:西安電子科技大學(xué)出版社,2003

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。

相關(guān)內(nèi)容