PCI peripheral?component interconnect 外設(shè)部件互連標準
優(yōu)點
1. ? 即插即用
2. ? 中斷共享
3. ? 可擴展
4. ? 自動配置
缺點
1. ? 擴展性差:PCI總線結(jié)構(gòu)限制了可掛載的設(shè)備數(shù)量挂签,如66MHZ PCI總線負載能力為3
2. ? 安全性差:由于設(shè)備共享總線侍匙,系統(tǒng)難區(qū)分不同數(shù)據(jù)流而采用相應(yīng)的保護措施
3. ? ?容錯性差:總線設(shè)備發(fā)生故障時决采,對故障設(shè)備的隔離和定位非常困難派昧。任何單個I/O連接點的錯誤都能導(dǎo)致整個系統(tǒng)的崩潰
4. ? 系統(tǒng)整體I/O吞吐量地:所有設(shè)備共享一總線帶寬,即外設(shè)越多陪踩,可用的帶寬越少塘淑,從而噪聲嚴重的系統(tǒng)I/O瓶頸。
同時玩荠,大量的引腳數(shù)目帶來了電氣特性和機械特性問題,使得PCB空間、信號頻率以及傳輸距離均受到很大的制約阶冈。
主要性能:
1. ? 總線32位或64位屉凯,工作頻率33MHZ/66MHZ,傳輸速率132MHZ/s眼溶、264MHZ/s 。
2. ? ?32位地址和數(shù)據(jù)信號分時復(fù)用晓勇。
3. ? ?支持64位尋址
4. ? ?適用5V和3.3V電源供電
PCI-X總線位寬不改變的情況下堂飞,提高時鐘頻率:
PCI-X1.0的時鐘頻率66MHZ、100MHZ绑咱、133MHZ
PCI-X2.0的時鐘頻率有266MHZ绰筛、533MHZ、1066MHZ
此外描融,PCI-X還在傳輸協(xié)議上進行了改進铝噩,其采用了“寄存器到寄存器”的新協(xié)議
(“寄存器到寄存器”的新協(xié)議模式:發(fā)送方發(fā)出的數(shù)據(jù)信號會被預(yù)先送入一個專門的寄存器內(nèi),并在寄存器中保存一個時鐘周期窿克,接收端只要在這個時鐘周期內(nèi)做出響應(yīng)骏庸,取走數(shù)據(jù)即可)
總線結(jié)構(gòu)
PCI總線上可以掛載PCI設(shè)備和PCI橋片,PCI總線上只允許有一個PCI主設(shè)備年叮,其他均為PCI從設(shè)備具被。而且讀寫只能在主從設(shè)備之間進行,從設(shè)備之間的數(shù)據(jù)交換需要通過主設(shè)備中轉(zhuǎn)只损。
管腳信號
PCI主設(shè)備最少需要49根線一姿,從設(shè)備最少需要47根線,剩下的線可選跃惫。
——管腳信號類型
A.in 輸入信號
B.out 輸出信
C.t/s 雙向三態(tài)信號(Tri-state)叮叹,無效時為高阻態(tài)
D.s/t/s 持續(xù)三態(tài)信號(Sustained Tri-state)
每次有且只有一個單元擁有并驅(qū)動的低有效、雙向爆存、三態(tài)信號蛉顽。驅(qū)動一個s/t/s信號到低的單元在釋放該信號浮空之前必須要將它驅(qū)動到高電平至少一個時鐘周期。
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等
(未使用時也需要處理渴杆,避免懸空)
B. 不需要上拉的信號
AD[31:0]寥枝、C/BE[3:0]、PAR磁奖、IDSEL囊拜、CLK
① ? 系統(tǒng)引腳
CLK:in,系統(tǒng)時鐘比搭,為所有PCI上的傳輸及總線仲裁提供時序冠跷。除RST#外,所有PCI信號都在CLK的上升沿采樣
RST#:in身诺,異步復(fù)位信號
② ?地址及數(shù)據(jù)引腳
AD[31:0]:t/s蜜托,地址數(shù)據(jù)復(fù)用引腳。地址和數(shù)據(jù)傳輸霉赡,必須在FRAME#有效器件進行盗冷。當FRAME#有效的第1個時鐘周期,AD[31:0]傳輸?shù)氖堑刂沸盘柾Q為地址期仪糖;當IRDY#和TRDY#同時有效時,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,C[3:0]上傳輸?shù)氖强偩€命令隅津;在AD[31:0]傳輸數(shù)據(jù)時诬垂,BE[3:0]用作字節(jié)允許,表示哪些通道上的數(shù)據(jù)有效伦仍。BE0#對應(yīng)最低字節(jié)结窘。
PAR:t/s,AD[31:0]和C/BE[3:0]#上的數(shù)據(jù)偶效驗充蓝。PAR與AD[31:0]有相同的時序隧枫,但延遲一個時鐘喉磁,在地址段后一個時鐘,PAR穩(wěn)定并有效官脓;對于數(shù)據(jù)段协怒,在寫傳輸中,PAR在IRDY#有效一個時鐘穩(wěn)定有效卑笨,而在讀傳輸中孕暇,PAR在TRAY#有效后一個時鐘穩(wěn)定并有效。一旦PAR有效赤兴,它必須保持有效值到當前數(shù)據(jù)段完成后一個時鐘芭商。在地址段和寫數(shù)據(jù)段,主PCI設(shè)備驅(qū)動PAR搀缠;在讀數(shù)據(jù)段,目標從PCI驅(qū)動PAR.
③ ? 接口控制引腳
FRAME#:s/t/s近迁,幀開始信號艺普。
IRDY#:s/t/s,Initiator Ready鉴竭。在讀操作中歧譬,IRDY#有效說明總線主設(shè)備已準備好接收數(shù)據(jù);在寫操作中搏存,IRDY#有效說明AD[31:0]上已有有效數(shù)據(jù)瑰步。
TRDE#:s/t/s,Target Ready璧眠。在寫操作中缩焦,TRDE #有效說明總線主設(shè)備已準備好接收數(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ū)動有效時熄赡,說明驅(qū)動它的設(shè)備已將其地址解碼為當前操作的目標設(shè)備姜挺。
④ ?仲裁引腳
REQ#:t/s,申請彼硫。向沖裁器說明單元想要使用的總線初家。
GNT#:t/s,允許。仲裁器向申請單元說明其對總線的操作已被允許溜在。
⑤ 錯誤反饋引腳
PERR#:s/t/s陌知,奇偶校驗錯誤(Parity Error)。PERR#維持三態(tài)掖肋,在檢測到奇偶校驗錯誤后仆葡,在數(shù)據(jù)結(jié)束后兩個時鐘周期,由接收數(shù)據(jù)的單元驅(qū)動PERR#有效志笼,并至少持續(xù)一個時鐘周期沿盅。只有發(fā)出DESEL#的單元才能發(fā)出PERR#。
SERR#:o/d纫溃,系統(tǒng)錯誤(System Error)腰涧。用于反饋地址奇偶校驗錯誤、特殊周期命令中的數(shù)據(jù)奇偶校驗錯誤和將引起重大事故的其他災(zāi)難性的系統(tǒng)錯誤紊浩。
⑥ ? 中斷引腳
INTA#窖铡、INTB#、INTC#坊谁、INTD#:o/d费彼,中斷輸出。僅對多功能設(shè)備有意義口芍。對于單設(shè)備只能使用INTA#
⑦ ? 高速緩存支持引腳
SBO#:in/out箍铲,檢視補償。當其有效時鬓椭,說明對某條變化線的一次命中颠猴。當其無效而SDONE有效時,說明一次“干凈”的檢視結(jié)果
SDONE:in/out小染,檢視進行芙粱。
⑧ ? 64位總線擴充引腳
AD[63:32]:t/s,地址數(shù)據(jù)復(fù)用引腳提供32個附加位
C/BE[7:4]:t/s 氧映,總線命令和字節(jié)允許復(fù)用引腳
REQ64#:s/t/s春畔,請求64位傳輸
ACK#:s/t/s,應(yīng)答64位傳送
PAR64:t/s岛都,高雙字偶校驗
時序(寫操作)
PCI仲裁器工作原理
?????? PCI總線仲裁器采樣到REQ2后择份,等到IRDY和FRAME有效后,才將GNT#拉低烫堤。避免某些PCI設(shè)備申請總線使用權(quán)而實際并不適用荣赶。
?????? 假如PCI總線仲裁器采樣到REQ2后凤价,一直沒有采樣到FRAME和IRDY信號有效,仲裁器等到內(nèi)部定時器超時后拔创,就不再等待了利诺。
?????? 仲裁器規(guī)則:優(yōu)先級高設(shè)備搶占優(yōu)先級低設(shè)備資源
?????? 假如PCI設(shè)備的優(yōu)先級順序為:PCI3>PCI2>PCI1
?????? PCI1正在使用PCI總線傳輸數(shù)據(jù)時,PCI2想要使用PCI總線剩燥,于是將REQ2拉低,向PCI總線仲裁器申請PCI總線的使用權(quán)慢逾。此時REQ1和REQ2均處于有效狀態(tài),雖然PCI2的優(yōu)先級高于PCI1灭红,但是總線仲裁器不會馬上響應(yīng)PCI2的請求侣滩。而是等到PCI1完成以此操作(注:是一次操作,而不是全部)后变擒,PCI1將FRAME和IRDR總線驅(qū)動為高君珠。
PCI2探測到PCI總線空閑后,將FRAME和IRDY信號驅(qū)動為低娇斑〔咛恚總線仲裁器采樣到這兩個信號后,將GNT1驅(qū)動為高悠菜,同時將GNT2驅(qū)動為低,將總線的使用權(quán)交給PCI2败富。
此時悔醋,如果PCI1完成了全部數(shù)據(jù)傳輸,會將REQ1驅(qū)動為高兽叮。
如果芬骄,PCI1還有數(shù)據(jù)需要傳輸,那么它會將REQ1一直保持低電平鹦聪,一直進行總線申請账阻。等PCI2完全全部操作后,再將PCI總線的使用權(quán)釋放給PCI1泽本。
PCI設(shè)備的配置空間
?????? 目前三類首部格式:
????????????? 首部類型0—用于全部除PCI之外的設(shè)備
????????????? 首部類型1—用于PCI-PCI橋
????????????? 首部類型2—用于Card Bus橋
PCI案例分析
問題描述:測試PCI總線的TRDY信號時淘太,發(fā)現(xiàn)該信號低電平轉(zhuǎn)高電平太緩慢
?????? 分析:
s/t/s特點:
a. 在某一時刻只能由一個設(shè)備驅(qū)動;
b. 在釋放之前必須將該信號驅(qū)動到高電平规丽,并且至少保持一個時鐘周期
c. ?其他設(shè)備必須等該信號釋放至少一個周期以上才能重新驅(qū)動
d. 該信號需要進行外部上拉
上面的異常波形產(chǎn)生的原因為:IRDY在低電平狀態(tài)直接為釋放為高阻態(tài)后蒲牧,完全依靠外部的上拉電阻將其拉到高電平位置。由于外部上拉較弱赌莺,所以出現(xiàn)上升緩慢的現(xiàn)象冰抢。
解決:修改邏輯代碼即可