嵌入式系統中PCI總線仲裁器的設計與實現
發(fā)布時間:2007/8/30 0:00:00 訪問次數:737
來源:電子技術應用 作者:中國科學技術大學 李德升 羅玉平
摘要:描述了PCI總線仲裁的原理和仲裁算法,闡述了用可編程器件實現總線仲裁的具體方法,并實現了一個雙主設備仲裁器。
關鍵詞:PCI總線仲裁CPLD VHDL嵌入式系統
PCI(Peripheral Component Interconnect)總線是現今最為流行的工業(yè)控制總線之一。它廣泛地應用在計算機中,并且由于眾多廠商對PC]的良好支持,使得目前嵌入式設備中的很多解決方案都包含了PCI總線。在多主設備的PCI系統應用中,必須為各個主設備提供仲裁授權信號。很多廠家有針對性地發(fā)布了PCI仲裁邏輯的專用芯片或者集成了PCI仲裁邏輯的專用芯片,但使用不夠靈活。為了使PCI設備能夠更方便地應用在嵌入式系統中,本文介紹了一種基于CPLD(復雜可編程邏輯器件)的PCI總線仲裁器的設計方法。此方法可以為系統量身定制適合于系統本身的PCI總線仲裁器,而不必局限于特定芯片的要求,在體積、功能、成本等諸多方面都有很好的應用前景。
1 PCI總線仲裁簡介
1.1 PCI總線的仲裁原理
PCI總線是一種共享式的總線,可以連接多個主設備,但由于數據傳輸的獨占性,每一時刻只能由一個主設備占用總線。因此,為了有效地利用PCI總線帶寬,必須設置一個總線仲裁器,按照一定的算法協調系統中各個主設備的操作。
每個具備主設備功能的PCI設備必須提供兩個與仲裁有關的信號:REQ#和GNT#。其中REQ#為請求總線信號,由需要發(fā)起PCI傳輸事務的設備發(fā)出;GNT#為總線授權信號,由PCI總線仲裁器裁決后給出。接到GNT#信號的PCI設備將在下一次總線空閑后
開始操作。
PCI總線仲裁的裁決過程可以在PCI傳輸期間完成,并不占用PCI總線的帶寬,這稱為隱式仲裁。即需要發(fā)起PCI操作的設備可以隨時發(fā)出請求REO#,PCI仲裁器立即批準該請求并給出GNT#。但是真正的傳輸操作一定要等到當前傳輸完成,即總線空閑后才可以開始。圖l描述了PCI總線設備與仲裁器的關系!
1.2 PCI總線仲裁規(guī)則約定
(1)仲裁器的仲裁算法必須保證所有的設備都能得到授權的機會,否則將會出現某個優(yōu)先級低的設備永遠不能占有總線進行事務操作的情況。
(2)如果FRAME無效,GNT可以在任意時間撤消,以便服務于另一個主設備或者作為對主設備撤銷REQ的響應。
(3)如果GNT信號被撤消但FRAME有信號,當前的總線正在傳輸數據,則操作合法。
(4)如果總線不處于空閑狀態(tài),則允許一個GNT的撤消和另一個GNT的發(fā)生在同一個周期。如果處在空閑狀態(tài),則要求一個GNT撤消到下一個GNT的發(fā)出之間必須有一個時鐘周期間隔,否則可能會在AD線和PAR線上出現沖突。
(5)GNT信號的每次發(fā)出,只限于相應的總線主控器可以使用總線進行一次總線操作(一個FRAME發(fā)出到撤銷)。如果該主控器需要多次總線訪問,它可以保持REQ信號一直有效。仲裁器會按照特定的仲裁算法來決定是否仍判給該主設備。
(6)一個主控器可以在任意時刻撤消其REQ信號。REQ信號一旦撤消,仲裁器將認為該設備不再請求使用總線,因而撤消其GNT信號(參考上文(1))。如果一個主控器只希望做一次總線傳輸,則它應當在發(fā)出FRAME的同一時鐘周期撤消REQ。
(7)如果當前的主控器在它的GNT信號發(fā)出后,持續(xù)16個空閑周期還沒有開始總線操作,則仲裁器視其為超時,仲裁器可以在任意時刻撤消GNT信號,以便服務于另一個設備。
1.3 PCI總線仲裁的算法
目前,應用于PCI總線總裁的算法主要有固定優(yōu)先級算法和動態(tài)優(yōu)先級算法兩種。在固定優(yōu)先級算法中,各個設備的優(yōu)先級是事先確定好的,仲裁器針對事先設定好的優(yōu)先級為每個設備分配使用權。這種算法的缺點是:一旦PCI總線事務非常繁忙,優(yōu)先級高的設備會占有總線不放,將導致優(yōu)先級低的設備無法申請到總線。可見這是一種并不公平的算法,只適用于總線利用率非常低的情況。動態(tài)優(yōu)先級算法是在每次仲裁授權后動態(tài)改變各個設備的優(yōu)先級。在保證每個設備都有機會獲得總線的情況下,優(yōu)先級改變的算法可以是各種各樣的。最常用的是循環(huán)優(yōu)先級算法,即每次仲裁授權后將排隊中的設備優(yōu)先級加l。因其算法簡單,且對大部分應用都十分有效,本設計采用循環(huán)優(yōu)先級算法。
1.4 總線?
當PCI總線空閑時,一個設備從申請總線到被授權使用,最少也需要2個時鐘周期,這對于PCI總線是一種浪費。因此仲裁器通常選中一個最經常占用總線的設備,在PCI總線空閑時將GNT#賦予它,這叫做總線停靠。當總線空閑時,該設備需要占用總線時可馬上得到批準。
2 雙主設備PCI總線仲裁器的實現
下面描述了一個具有兩個設備的總線仲裁器的硬件實現,其一為TriMedia嵌入式DSPCPU PNXl300,其二為Intel i82559網
來源:電子技術應用 作者:中國科學技術大學 李德升 羅玉平
摘要:描述了PCI總線仲裁的原理和仲裁算法,闡述了用可編程器件實現總線仲裁的具體方法,并實現了一個雙主設備仲裁器。
關鍵詞:PCI總線仲裁CPLD VHDL嵌入式系統
PCI(Peripheral Component Interconnect)總線是現今最為流行的工業(yè)控制總線之一。它廣泛地應用在計算機中,并且由于眾多廠商對PC]的良好支持,使得目前嵌入式設備中的很多解決方案都包含了PCI總線。在多主設備的PCI系統應用中,必須為各個主設備提供仲裁授權信號。很多廠家有針對性地發(fā)布了PCI仲裁邏輯的專用芯片或者集成了PCI仲裁邏輯的專用芯片,但使用不夠靈活。為了使PCI設備能夠更方便地應用在嵌入式系統中,本文介紹了一種基于CPLD(復雜可編程邏輯器件)的PCI總線仲裁器的設計方法。此方法可以為系統量身定制適合于系統本身的PCI總線仲裁器,而不必局限于特定芯片的要求,在體積、功能、成本等諸多方面都有很好的應用前景。
1 PCI總線仲裁簡介
1.1 PCI總線的仲裁原理
PCI總線是一種共享式的總線,可以連接多個主設備,但由于數據傳輸的獨占性,每一時刻只能由一個主設備占用總線。因此,為了有效地利用PCI總線帶寬,必須設置一個總線仲裁器,按照一定的算法協調系統中各個主設備的操作。
每個具備主設備功能的PCI設備必須提供兩個與仲裁有關的信號:REQ#和GNT#。其中REQ#為請求總線信號,由需要發(fā)起PCI傳輸事務的設備發(fā)出;GNT#為總線授權信號,由PCI總線仲裁器裁決后給出。接到GNT#信號的PCI設備將在下一次總線空閑后
開始操作。
PCI總線仲裁的裁決過程可以在PCI傳輸期間完成,并不占用PCI總線的帶寬,這稱為隱式仲裁。即需要發(fā)起PCI操作的設備可以隨時發(fā)出請求REO#,PCI仲裁器立即批準該請求并給出GNT#。但是真正的傳輸操作一定要等到當前傳輸完成,即總線空閑后才可以開始。圖l描述了PCI總線設備與仲裁器的關系!
1.2 PCI總線仲裁規(guī)則約定
(1)仲裁器的仲裁算法必須保證所有的設備都能得到授權的機會,否則將會出現某個優(yōu)先級低的設備永遠不能占有總線進行事務操作的情況。
(2)如果FRAME無效,GNT可以在任意時間撤消,以便服務于另一個主設備或者作為對主設備撤銷REQ的響應。
(3)如果GNT信號被撤消但FRAME有信號,當前的總線正在傳輸數據,則操作合法。
(4)如果總線不處于空閑狀態(tài),則允許一個GNT的撤消和另一個GNT的發(fā)生在同一個周期。如果處在空閑狀態(tài),則要求一個GNT撤消到下一個GNT的發(fā)出之間必須有一個時鐘周期間隔,否則可能會在AD線和PAR線上出現沖突。
(5)GNT信號的每次發(fā)出,只限于相應的總線主控器可以使用總線進行一次總線操作(一個FRAME發(fā)出到撤銷)。如果該主控器需要多次總線訪問,它可以保持REQ信號一直有效。仲裁器會按照特定的仲裁算法來決定是否仍判給該主設備。
(6)一個主控器可以在任意時刻撤消其REQ信號。REQ信號一旦撤消,仲裁器將認為該設備不再請求使用總線,因而撤消其GNT信號(參考上文(1))。如果一個主控器只希望做一次總線傳輸,則它應當在發(fā)出FRAME的同一時鐘周期撤消REQ。
(7)如果當前的主控器在它的GNT信號發(fā)出后,持續(xù)16個空閑周期還沒有開始總線操作,則仲裁器視其為超時,仲裁器可以在任意時刻撤消GNT信號,以便服務于另一個設備。
1.3 PCI總線仲裁的算法
目前,應用于PCI總線總裁的算法主要有固定優(yōu)先級算法和動態(tài)優(yōu)先級算法兩種。在固定優(yōu)先級算法中,各個設備的優(yōu)先級是事先確定好的,仲裁器針對事先設定好的優(yōu)先級為每個設備分配使用權。這種算法的缺點是:一旦PCI總線事務非常繁忙,優(yōu)先級高的設備會占有總線不放,將導致優(yōu)先級低的設備無法申請到總線。可見這是一種并不公平的算法,只適用于總線利用率非常低的情況。動態(tài)優(yōu)先級算法是在每次仲裁授權后動態(tài)改變各個設備的優(yōu)先級。在保證每個設備都有機會獲得總線的情況下,優(yōu)先級改變的算法可以是各種各樣的。最常用的是循環(huán)優(yōu)先級算法,即每次仲裁授權后將排隊中的設備優(yōu)先級加l。因其算法簡單,且對大部分應用都十分有效,本設計采用循環(huán)優(yōu)先級算法。
1.4 總線?
當PCI總線空閑時,一個設備從申請總線到被授權使用,最少也需要2個時鐘周期,這對于PCI總線是一種浪費。因此仲裁器通常選中一個最經常占用總線的設備,在PCI總線空閑時將GNT#賦予它,這叫做總線?俊.斂偩空閑時,該設備需要占用總線時可馬上得到批準。
2 雙主設備PCI總線仲裁器的實現
下面描述了一個具有兩個設備的總線仲裁器的硬件實現,其一為TriMedia嵌入式DSPCPU PNXl300,其二為Intel i82559網