PCI peripheral?component interconnect 外設(shè)部件互連標(biāo)準(zhǔn)
優(yōu)點(diǎn)
1. ? 即插即用
2. ? 中斷共享
3. ? 可擴(kuò)展
4. ? 自動配置
缺點(diǎn)
1. ? 擴(kuò)展性差:PCI總線結(jié)構(gòu)限制了可掛載的設(shè)備數(shù)量,如66MHZ PCI總線負(fù)載能力為3
2. ? 安全性差:由于設(shè)備共享總線,系統(tǒng)難區(qū)分不同數(shù)據(jù)流而采用相應(yīng)的保護(hù)措施
3. ? ?容錯(cuò)性差:總線設(shè)備發(fā)生故障時(shí),對故障設(shè)備的隔離和定位非常困難。任何單個(gè)I/O連接點(diǎn)的錯(cuò)誤都能導(dǎo)致整個(gè)系統(tǒng)的崩潰
4. ? 系統(tǒng)整體I/O吞吐量地:所有設(shè)備共享一總線帶寬,即外設(shè)越多,可用的帶寬越少,從而噪聲嚴(yán)重的系統(tǒng)I/O瓶頸。
同時(shí),大量的引腳數(shù)目帶來了電氣特性和機(jī)械特性問題,使得PCB空間、信號頻率以及傳輸距離均受到很大的制約。
主要性能:
1. ? 總線32位或64位,工作頻率33MHZ/66MHZ,傳輸速率132MHZ/s、264MHZ/s 。
2. ? ?32位地址和數(shù)據(jù)信號分時(shí)復(fù)用。
3. ? ?支持64位尋址
4. ? ?適用5V和3.3V電源供電
PCI-X總線位寬不改變的情況下,提高時(shí)鐘頻率:
PCI-X1.0的時(shí)鐘頻率66MHZ、100MHZ、133MHZ
PCI-X2.0的時(shí)鐘頻率有266MHZ、533MHZ、1066MHZ
此外,PCI-X還在傳輸協(xié)議上進(jìn)行了改進(jìn),其采用了“寄存器到寄存器”的新協(xié)議
(“寄存器到寄存器”的新協(xié)議模式:發(fā)送方發(fā)出的數(shù)據(jù)信號會被預(yù)先送入一個(gè)專門的寄存器內(nèi),并在寄存器中保存一個(gè)時(shí)鐘周期,接收端只要在這個(gè)時(shí)鐘周期內(nèi)做出響應(yīng),取走數(shù)據(jù)即可)
總線結(jié)構(gòu)
PCI總線上可以掛載PCI設(shè)備和PCI橋片,PCI總線上只允許有一個(gè)PCI主設(shè)備,其他均為PCI從設(shè)備。而且讀寫只能在主從設(shè)備之間進(jìn)行,從設(shè)備之間的數(shù)據(jù)交換需要通過主設(shè)備中轉(zhuǎn)。
管腳信號
PCI主設(shè)備最少需要49根線,從設(shè)備最少需要47根線,剩下的線可選。
——管腳信號類型
A.in 輸入信號
B.out 輸出信
C.t/s 雙向三態(tài)信號(Tri-state),無效時(shí)為高阻態(tài)
D.s/t/s 持續(xù)三態(tài)信號(Sustained Tri-state)
每次有且只有一個(gè)單元擁有并驅(qū)動的低有效、雙向、三態(tài)信號。驅(qū)動一個(gè)s/t/s信號到低的單元在釋放該信號浮空之前必須要將它驅(qū)動到高電平至少一個(gè)時(shí)鐘周期。
E. o/d 漏記開路輸出(Open Drain)
——管腳硬件處理
A.需要上拉的信號,上拉電阻10K[if !supportAnnotations][L1][endif]?
FRAME#、TRDY#、IRDY#、DEVSEL#、STOP#、PERR#、SERR#、LOCK#、REQ64、REQ#、ACK64#、REQ#、GNT#、AD[63:32]、C/BE[7:4]、PAR64等
(未使用時(shí)也需要處理,避免懸空)
B. 不需要上拉的信號
AD[31:0]、C/BE[3:0]、PAR、IDSEL、CLK
① ? 系統(tǒng)引腳
CLK:in,系統(tǒng)時(shí)鐘,為所有PCI上的傳輸及總線仲裁提供時(shí)序。除RST#外,所有PCI信號都在CLK的上升沿采樣
RST#:in,異步復(fù)位信號
② ?地址及數(shù)據(jù)引腳
AD[31:0]:t/s,地址數(shù)據(jù)復(fù)用引腳。地址和數(shù)據(jù)傳輸,必須在FRAME#有效器件進(jìn)行。當(dāng)FRAME#有效的第1個(gè)時(shí)鐘周期,AD[31:0]傳輸?shù)氖堑刂沸盘?,稱為地址期;當(dāng)IRDY#和TRDY#同時(shí)有效時(shí),AD[31:0]傳輸是數(shù)據(jù)信號,稱為數(shù)據(jù)期。傳輸數(shù)據(jù)是,AD[7:0]為最低字節(jié)
C/BE[3:0]#:t/s,總線命令和字節(jié)允許復(fù)用引腳。在AD[31:0]傳輸?shù)刂窌r(shí),C[3:0]上傳輸?shù)氖强偩€命令;在AD[31:0]傳輸數(shù)據(jù)時(shí),BE[3:0]用作字節(jié)允許,表示哪些通道上的數(shù)據(jù)有效。BE0#對應(yīng)最低字節(jié)。
PAR:t/s,AD[31:0]和C/BE[3:0]#上的數(shù)據(jù)偶效驗(yàn)。PAR與AD[31:0]有相同的時(shí)序,但延遲一個(gè)時(shí)鐘,在地址段后一個(gè)時(shí)鐘,PAR穩(wěn)定并有效;對于數(shù)據(jù)段,在寫傳輸中,PAR在IRDY#有效一個(gè)時(shí)鐘穩(wěn)定有效,而在讀傳輸中,PAR在TRAY#有效后一個(gè)時(shí)鐘穩(wěn)定并有效。一旦PAR有效,它必須保持有效值到當(dāng)前數(shù)據(jù)段完成后一個(gè)時(shí)鐘。在地址段和寫數(shù)據(jù)段,主PCI設(shè)備驅(qū)動PAR;在讀數(shù)據(jù)段,目標(biāo)從PCI驅(qū)動PAR.
③ ? 接口控制引腳
FRAME#:s/t/s,幀開始信號。
IRDY#:s/t/s,Initiator Ready。在讀操作中,IRDY#有效說明總線主設(shè)備已準(zhǔn)備好接收數(shù)據(jù);在寫操作中,IRDY#有效說明AD[31:0]上已有有效數(shù)據(jù)。
TRDE#:s/t/s,Target Ready。在寫操作中,TRDE #有效說明總線主設(shè)備已準(zhǔn)備好接收數(shù)據(jù);在讀操作中,TRDE #有效說明AD[31:0]上已有有效數(shù)據(jù)。
STOP#:s/t/s,停止信號
LOCK#:s/t/s,鎖定信號
IDSEL:in,初始化設(shè)備選擇(Initialization Device Selcet)。在配置空間讀寫操作送,用作片選
DEVSEL:s/t/s,設(shè)備選擇。驅(qū)動有效時(shí),說明驅(qū)動它的設(shè)備已將其地址解碼為當(dāng)前操作的目標(biāo)設(shè)備。
④ ?仲裁引腳
REQ#:t/s,申請。向沖裁器說明單元想要使用的總線。
GNT#:t/s,允許。仲裁器向申請單元說明其對總線的操作已被允許。
⑤ 錯(cuò)誤反饋引腳
PERR#:s/t/s,奇偶校驗(yàn)錯(cuò)誤(Parity Error)。PERR#維持三態(tài),在檢測到奇偶校驗(yàn)錯(cuò)誤后,在數(shù)據(jù)結(jié)束后兩個(gè)時(shí)鐘周期,由接收數(shù)據(jù)的單元驅(qū)動PERR#有效,并至少持續(xù)一個(gè)時(shí)鐘周期。只有發(fā)出DESEL#的單元才能發(fā)出PERR#。
SERR#:o/d,系統(tǒng)錯(cuò)誤(System Error)。用于反饋地址奇偶校驗(yàn)錯(cuò)誤、特殊周期命令中的數(shù)據(jù)奇偶校驗(yàn)錯(cuò)誤和將引起重大事故的其他災(zāi)難性的系統(tǒng)錯(cuò)誤。
⑥ ? 中斷引腳
INTA#、INTB#、INTC#、INTD#:o/d,中斷輸出。僅對多功能設(shè)備有意義。對于單設(shè)備只能使用INTA#
⑦ ? 高速緩存支持引腳
SBO#:in/out,檢視補(bǔ)償。當(dāng)其有效時(shí),說明對某條變化線的一次命中。當(dāng)其無效而SDONE有效時(shí),說明一次“干凈”的檢視結(jié)果
SDONE:in/out,檢視進(jìn)行。
⑧ ? 64位總線擴(kuò)充引腳
AD[63:32]:t/s,地址數(shù)據(jù)復(fù)用引腳提供32個(gè)附加位
C/BE[7:4]:t/s ,總線命令和字節(jié)允許復(fù)用引腳
REQ64#:s/t/s,請求64位傳輸
ACK#:s/t/s,應(yīng)答64位傳送
PAR64:t/s,高雙字偶校驗(yàn)
時(shí)序(寫操作)

PCI仲裁器工作原理
?????? PCI總線仲裁器采樣到REQ2后,等到IRDY和FRAME有效后,才將GNT#拉低。避免某些PCI設(shè)備申請總線使用權(quán)而實(shí)際并不適用。
?????? 假如PCI總線仲裁器采樣到REQ2后,一直沒有采樣到FRAME和IRDY信號有效,仲裁器等到內(nèi)部定時(shí)器超時(shí)后,就不再等待了。
?????? 仲裁器規(guī)則:優(yōu)先級高設(shè)備搶占優(yōu)先級低設(shè)備資源
?????? 假如PCI設(shè)備的優(yōu)先級順序?yàn)椋篜CI3>PCI2>PCI1
?????? PCI1正在使用PCI總線傳輸數(shù)據(jù)時(shí),PCI2想要使用PCI總線,于是將REQ2拉低,向PCI總線仲裁器申請PCI總線的使用權(quán)。此時(shí)REQ1和REQ2均處于有效狀態(tài),雖然PCI2的優(yōu)先級高于PCI1,但是總線仲裁器不會馬上響應(yīng)PCI2的請求。而是等到PCI1完成以此操作(注:是一次操作,而不是全部)后,PCI1將FRAME和IRDR總線驅(qū)動為高。
PCI2探測到PCI總線空閑后,將FRAME和IRDY信號驅(qū)動為低。總線仲裁器采樣到這兩個(gè)信號后,將GNT1驅(qū)動為高,同時(shí)將GNT2驅(qū)動為低,將總線的使用權(quán)交給PCI2。
此時(shí),如果PCI1完成了全部數(shù)據(jù)傳輸,會將REQ1驅(qū)動為高。
如果,PCI1還有數(shù)據(jù)需要傳輸,那么它會將REQ1一直保持低電平,一直進(jìn)行總線申請。等PCI2完全全部操作后,再將PCI總線的使用權(quán)釋放給PCI1。
PCI設(shè)備的配置空間
?????? 目前三類首部格式:
????????????? 首部類型0—用于全部除PCI之外的設(shè)備
????????????? 首部類型1—用于PCI-PCI橋
????????????? 首部類型2—用于Card Bus橋
PCI案例分析
問題描述:測試PCI總線的TRDY信號時(shí),發(fā)現(xiàn)該信號低電平轉(zhuǎn)高電平太緩慢
?????? 分析:

s/t/s特點(diǎn):
a. 在某一時(shí)刻只能由一個(gè)設(shè)備驅(qū)動;
b. 在釋放之前必須將該信號驅(qū)動到高電平,并且至少保持一個(gè)時(shí)鐘周期
c. ?其他設(shè)備必須等該信號釋放至少一個(gè)周期以上才能重新驅(qū)動
d. 該信號需要進(jìn)行外部上拉
上面的異常波形產(chǎn)生的原因?yàn)椋篒RDY在低電平狀態(tài)直接為釋放為高阻態(tài)后,完全依靠外部的上拉電阻將其拉到高電平位置。由于外部上拉較弱,所以出現(xiàn)上升緩慢的現(xiàn)象。
解決:修改邏輯代碼即可