pci即peripheral component interconnect
,中文意思是「外圍器件互聯」,是由
pcisig (pci special interest group)
推出的一種區域性並行匯流排標準。在現在電子裝置中應用非常廣泛,下面我詳細介紹下
pci匯流排的工作原理,希望對大家有所幫助。
♦pci匯流排管腳功能
pci主裝置最少需要
49根線,從裝置最少需要
47根線,剩下的線可選。
在介紹pci
管腳功能前,先來說明下
pci管腳訊號的型別。
in:輸入訊號;
out:輸出訊號;
t/s:雙向三態訊號
(tri-state)
,無效時為高組態;
s/t/s
:持續三態訊號
(sustained tri-state)
,每次由且只由乙個單元擁有並驅動的低有效雙向、三態訊號。驅動乙個
s/t/s
訊號到低的單元在釋放該訊號浮空之前必須要將它驅動到高電平至少乙個週期。這個特點很重要,在後面我們分析
pci訊號質量案例的時候會用到;
o/d:漏極開路輸出
(open drain);
#:此符號代表該訊號在低電平時有效。
pci匯流排引腳圖如下所示。
實際使用中需要上拉的訊號有:
frame#, trdy#, irdy#, devsel#, stop#, perr#, serr#, lock#, req64#, ack64#, req#, gnt#, ad[63:32], c/be[7:4], par64
等,上拉電阻一般為
10kohm
,未使用的
pci管腳也要處理,避免懸空。不需要上拉的訊號有
ad[31:0], c/be[3:0], par, idsel, clk。
1).系統引腳
clk:in
,系統時鐘,為所有
pci上的傳輸及匯流排仲裁提供時序。除
rst#
外,所有
pci訊號都在
clk訊號的上公升沿取樣。
rst#:in
,非同步復位訊號。
2).位址及資料引腳
ad[31:0]
:t/s
,位址資料復用引腳。
frame#
開始變為有效的那個時鐘週期內
ad[31:0]
上傳輸的是位址。對於配置空間和儲存空間,這是乙個雙位元組位址,對於
i/o空間,這個乙個單位元組位址。傳輸資料時,
ad[7:0]
為最低位元組資料。
c/be[3:0]#
:t/s
,匯流排命令和位元組允許復用引腳。在
ad[31:0]
上傳輸位址的時候,
c[3:0]
上傳輸的是匯流排命令,
ad[31:0]
上傳輸資料的時候,
be[3:0]#
用作位元組允許,表示哪些通道上的資料是有效的。
be0#
對應最低位元組。
par:t/s
,ad[31:0]
和c/be[3:0]#
上的資料偶效驗。
par與
ad[31:0]
有相同的時序,但延遲乙個時鐘,在位址段後乙個時鐘,
par穩定並有效;對於資料段,在寫傳輸中,
par在
irdt#
有效乙個時鐘穩定並有效,而在讀傳輸中,
par在
trdy#
有效後乙個時鐘週期穩定並有效。一旦
par有效,它必須保持有效直到當前資料段完成後乙個時鐘。在位址段和寫資料段,主
pci裝置驅動
par,在讀資料段,目標從
裝置驅動
par。
3).介面控制引腳
frame#
:s/t/s
,幀開始訊號。由當前匯流排主裝置驅動,以說明乙個操作的開始和延續。
frame#
有效,說明匯流排開始傳輸,當
frame#
維持有效時,說明匯流排傳輸繼續進行,當
frame#
無效時,說明傳送的最後乙個位元組正在進行。
irdy#
:s/t/s
,啟動者準備好訊號
(initiator ready)
。說明傳輸的啟動者完成當前資料傳輸的能力。在讀操作中,
irdy#
有效說明匯流排主裝置已準備好接收收據。在寫操作中,它說明
ad[3:0]
上已有有效資料。在
irdy#
和trdy#
都有效的時鐘週期完成資料傳輸。在
irdy#
和trdy#
都有效之前,需要插入等待狀態。
trdy#
:s/t/s
,目標裝置準備就緒
(target ready)
。說明傳輸的目標裝置完成當前的資料傳輸能力。在寫操作中,
trdy#
有效說明目標裝置已經準備好接收資料。在讀操作中,它說明
ad[31:0]
上已有有效資料。
stop#
:s/t/s
,停止訊號。說明當前的目標裝置要求匯流排主裝置停止當前傳輸。
lock#
:s/t/s
,鎖定訊號。
idsel:in
,初始化裝置選擇
(initialization device select)
。在配置空間讀寫操作中,用作片選。
devsel#
:s/t/s
,裝置選擇。當驅動有效時,說明驅動它的裝置已將其位址解碼為當前操作的目標裝置。
4).仲裁引腳
req#
:t/s
,申請。向仲裁器說明該單元想使用匯流排。這是乙個點對點的訊號,每個匯流排主裝置都有自己的
req#。
gnt#
:t/s
,允許。仲裁器向申請單元說明其對匯流排的操作已被允許。這是乙個點對點訊號,每個匯流排主裝置都有自己的
gnt#。
5).錯誤反饋引腳
perr#
:s/t/s
,奇偶校驗錯誤
(parity error)
。該引腳用於反饋在除特殊週期外的其他傳送過程中的資料奇偶校驗錯誤。
perr#
維持三態,在檢測到奇偶校驗錯誤後,在資料結束後兩個時鐘週期,由接收資料的單元驅動
perr#
有效。並至少持續乙個時鐘週期。只有發出
devsel#
的單元才能發出
perr#。
serr#
:o/d
,系統錯誤
(system error)
。用於反饋位址奇偶校驗錯誤、特殊週期命令中的資料奇偶校驗錯誤和將引起重大事故的其他災難性的系統錯誤。
6).中斷引腳
inta#, intb#, intc#, intd#
:o/d
,中斷輸出。
7).快取記憶體支援引腳
乙個能快取記憶體的
pci儲存器必須利用這兩條快取記憶體支援引腳作為輸入,以支援寫通
(write-through)
和回寫(write-back)(要了解cache)
。如果可快取記憶體的儲存器是位於
pci上,則連線回寫快取記憶體到
pci的橋路必須利用這兩條引腳,且作為輸出。連線寫通快取記憶體的橋路可以只使用一條引腳
sdone。
sbo#
:in/out
,監視補償。當其有效時,說明對某條變化線的一次命中。當
sbo#
無效而sdone
有效時,說明了一次「乾淨」的監視結果。
sdone
:,監視進行。表明對當前操作的監視狀態。當其無效時,說明監視結果仍未定。當有效時,說明監視已有結果。
8).64
位匯流排擴充引腳
ad[63:32]
:t/s
,位址資料復用引腳提供
3264
位位址的高
32位。在資料段,傳送
64位中的高
32位。
c/be[7:4]#
:t/s
,匯流排命令和位元組允許復用引腳。
req64#
:s/t/s
,請求64
位傳輸。當其被當前匯流排主裝置有效驅動時,說明匯流排主裝置想作
64位傳輸。
ack#
:s/t/s
,應答64
位傳送。在當前操作所定址的目標裝置有效驅動該訊號時,說明目標裝置能夠進行
64位傳輸,
ack#
和devsel#
有相同的時序。
par64
:t/s
,高雙字偶校驗。
PCI匯流排學習(二) PCI匯流排仲裁
幻燈片 9 在一定時間內,可能有多個bus master請求使用匯流排傳輸資料,每個請求匯流排的master都會assert它的req 訊號,來告訴仲裁器他要申請使用匯流排,仲裁器一般整合於晶元組中。幻燈片 10 如果仲裁器是可程式設計的,啟動配置軟體可以通過讀取max lat配置暫存器來決定每個b...
PCI匯流排(二)
pci網絡卡驅動程式分析 針對 gnic ii 的千兆乙太網卡,源程式檔案 drivers net hamachi.c 1 初始化 static int init hamachi init void 進入bus add driver int bus add driver struct device ...
pci匯流排定時協議 PCI匯流排標準及協議
首先?pagenum physaddress 另外。因為硬體裝置讀寫的是物理記憶體。舉例如下。專用晶元可以實現完整的pci主裝置與從裝置模式的介面功能?vpicd physically unmask rtcirqhandle ram晶元為資料處理提供快取功能,但各協議互不相容,而且各狀態的跳轉條件比...