PCI總線I/O時(shí)序波形觀測(cè)及分析
1 引 言
PCI總線(Peripheral CompONent Interconnect)即外設(shè)部件互連,是一種新型的、同步的、高帶寬的、獨(dú)立于處理器的總線。從1992年創(chuàng)立規(guī)范到如今,PCI總線已成為了事實(shí)上計(jì)算機(jī)的標(biāo)準(zhǔn)總線。其所以能在各類總線中脫穎而出,是因?yàn)槠渚哂袀鬏斔俣瓤?、支持無(wú)限猝發(fā)讀寫(xiě)方式、支持并行工作方式、獨(dú)立于處理器、提供4種規(guī)格、數(shù)據(jù)線和地址線采用了多路復(fù)用結(jié)構(gòu)、支持即插即用功能等特點(diǎn)。本文重點(diǎn)介紹了PCI總線的寫(xiě)周期的時(shí)序波形的測(cè)量技術(shù)及分析方法,給出了時(shí)序波形的分析結(jié)果。
2 PCI總線的功能
2.1 連接到PCI總線上的設(shè)備
連接到PCI總線上的設(shè)備分為兩類:
(1)主控設(shè)備(master):PCI支持多主控設(shè)備,主控設(shè)備可以控制總線、驅(qū)動(dòng)地址、數(shù)據(jù)及控制信號(hào);
(2)目標(biāo)設(shè)備(target):不能啟動(dòng)總線操作,只能依賴于主控設(shè)備向他進(jìn)行傳遞或從中讀取數(shù)據(jù)。
2.2 有關(guān)PCI引腳信號(hào)
有關(guān)PCI引腳信號(hào)說(shuō)明如下:
AD[31~0]:地址、數(shù)據(jù)信號(hào)復(fù)用線。PCI總線支持寫(xiě)猝發(fā)和讀猝發(fā)。一個(gè)總線傳輸分為一個(gè)地址傳送階段和一個(gè)或多個(gè)數(shù)據(jù)傳送階段。有效,表示地址傳送階段開(kāi)始,此時(shí)AD[31~0]包含一個(gè)32位的物理地址,選中I/O的一個(gè)字節(jié)單元或主存的一個(gè)雙字單元。接下來(lái)為數(shù)據(jù)傳送階段(IRTY和TRDY同時(shí)有效),此時(shí)AD[7~0]包含最低字節(jié)數(shù)據(jù),AD[31~24]包含最高字節(jié)數(shù)據(jù)。
C/BE[3~0]:總線指令和字節(jié)允許信號(hào)的復(fù)用線。在地址傳送階段,C/BE[3~0]上傳送的是4位編碼的總線指令。在數(shù)據(jù)傳送階段,C/BE[3~0]用作字節(jié)允許標(biāo)志,以決定數(shù)據(jù)線上的哪些字節(jié)數(shù)據(jù)為有效數(shù)據(jù),C/BE[3~0]可依次對(duì)應(yīng)于字節(jié)3,2,1,0。
FRAME:周期幀信號(hào)。由當(dāng)前總線控制者產(chǎn)生,表示一個(gè)總線傳輸?shù)拈_(kāi)始和延續(xù)。FRAME從無(wú)效變?yōu)橛行?表明總線傳輸開(kāi)始;保持有效,表明總線傳輸繼續(xù)進(jìn)行(1個(gè)或n個(gè)數(shù)據(jù)節(jié)拍正在繼續(xù));FRAME從有效變?yōu)闊o(wú)效,表明進(jìn)入數(shù)據(jù)傳輸?shù)淖詈笠粋€(gè)數(shù)據(jù)傳送階段。
2.3 總線指令定義
在地址傳送階段,C/BE[3~0]線上送出總線指令的編碼信息??偩€指令用于對(duì)目標(biāo)設(shè)備說(shuō)明當(dāng)前總線控制者正在進(jìn)行的總線傳輸類型。表1給出了總線指令的定義。
I/O讀:用于從一個(gè)被選中的I/O單元中讀取數(shù)據(jù)。
I/O寫(xiě):用于寫(xiě)數(shù)據(jù)到一個(gè)被選中的I/O單元中。
3 測(cè)量PCI總線的I/O寫(xiě)時(shí)序波形的技術(shù)及分析方法
測(cè)量PCI總線的I/O寫(xiě)時(shí)序波形共分3個(gè)部分,如圖1所示。
具體的實(shí)現(xiàn)測(cè)量的過(guò)程及分析方法介紹如下
3.1 編寫(xiě)測(cè)試程序
用匯編語(yǔ)言編寫(xiě)測(cè)試程序,該程序如下:
3.2 制作測(cè)試板
PCI波形采用廈門廈華三寶計(jì)算機(jī)有限公司狀元一族主板,執(zhí)行標(biāo)準(zhǔn)號(hào):Q/FSl0938-1999。
取一塊該P(yáng)CI總線實(shí)驗(yàn)板,根據(jù)引腳說(shuō)明,將要測(cè)試的各點(diǎn)用焊接的方法引出,并標(biāo)明引腳名稱,各測(cè)試點(diǎn)對(duì)應(yīng)關(guān)系如下:
3.3 建立泰克示波器與PC機(jī)2通信連接
利用泰克TDS210型存儲(chǔ)示波器的RS 232通信接口與pc機(jī)2相連,該P(yáng)C機(jī)用來(lái)將示波器測(cè)出的波形轉(zhuǎn)換為.CSV文件,過(guò)程如下:
PC機(jī)2與泰克示波器通信連接的操作步驟:
(1)TDS一210型存儲(chǔ)示波器RS 232通信接口用專用電纜與PC機(jī)相連。
(2)打開(kāi)存儲(chǔ)示波器電源,啟動(dòng)PC機(jī)2。
(3)在PC機(jī)2窗口中點(diǎn)擊WaveSTar for Oscillose。
(4)點(diǎn)擊Instrument manater(檢測(cè)通信連接)→Responding(檢測(cè)完成,關(guān)閉"×")。
3.4 數(shù)據(jù)采集、數(shù)據(jù)轉(zhuǎn)換的過(guò)程(操作步驟)
(1)檢查焊接無(wú)誤后,將該實(shí)驗(yàn)板插入具有PCI插槽的被測(cè)計(jì)算機(jī)上,將軟盤插入被測(cè)計(jì)算機(jī),該軟盤已存入用匯編語(yǔ)言寫(xiě)成的測(cè)試程序(TESTPCI),通電啟動(dòng)被測(cè)計(jì)算機(jī),即PC機(jī)1。
(2)接通示波器的電源,設(shè)置好示波器兩通道的值,將CH1通道接FRAME,將CH2通道接AD0,在PC機(jī)1計(jì)算機(jī)狀態(tài)提示符A:下,輸入TESTPCI后回車,在泰克示波器面板上按下AUTORUN,調(diào)整頻率,使FRAME的周期在4個(gè)以上,再按下RUN/STOP,使顯示的波形穩(wěn)定。
(3)將泰克示波器按上述方法與PC機(jī)2計(jì)算機(jī)相連,以便他們之間通信,這臺(tái)計(jì)算機(jī)用來(lái)對(duì)泰克示波器測(cè)試下來(lái)的波形進(jìn)行數(shù)據(jù)轉(zhuǎn)換,該計(jì)算機(jī)必須安裝Wavestrafor Oscillose軟件,該軟件用來(lái)將泰克示波器測(cè)試的波形轉(zhuǎn)換為.CSV數(shù)據(jù)文件。
(4)測(cè)完FRM/AD0波形之后,將CH2通道改接AD8,在被測(cè)計(jì)算機(jī)的鍵盤上按下F3后回車,執(zhí)行測(cè)試程序,再按下泰克示波器的RUNysT()P,必須注意的是在第一次按下AUTORUN后,接下來(lái)只要按RUN/STOP,不能按AUTORUN,否則時(shí)序會(huì)不一樣。按同樣的方法測(cè)量FRAME與CBE3,F(xiàn)RAME與CBE2,F(xiàn)RAME與CBE1,F(xiàn)RAME與CBE0,F(xiàn)RAME與AD16,F(xiàn)RAME與AD24,AD0與AD8,AD0與CBE0,AD0與CBE1,AD0與C13E2,AD0與CBE3各組的波形,并分別將測(cè)試的波形轉(zhuǎn)換為.CSV數(shù)據(jù)文件后存盤。
(5)將獲得的數(shù)據(jù)進(jìn)行分析。在PC機(jī)3計(jì)算機(jī)上安裝ORIGIN6.0 PROFESSIONAL軟件,利用該軟件對(duì).CSV數(shù)據(jù)文件進(jìn)行分析。
(6)分析得到的PCI寫(xiě)周期的時(shí)序波形詳見(jiàn)第五部分實(shí)測(cè)PCI總線I/O寫(xiě)周期的時(shí)序波形。
4 實(shí)測(cè)夏華狀元一族主板PCI寫(xiě)周期的時(shí)序波形及分析
通過(guò)用Origin 6.0 Professional軟件對(duì)采集來(lái)的數(shù)據(jù)的分析,得知FRAME的四個(gè)周期對(duì)應(yīng)AD0的一個(gè)周期,因此分析時(shí)就對(duì)AD0的一個(gè)周期進(jìn)行分析,然后找到與AD0對(duì)應(yīng)的
AD8的波形與AD0塒應(yīng)的CBE3的波形、與AD0對(duì)應(yīng)的CBE2D的波形、與AD0對(duì)應(yīng)的CBE1的波形、與AD0對(duì)應(yīng)的CBE0的波形、與AD0對(duì)應(yīng)的AD16的波形與AD0對(duì)應(yīng)的AD24的波形。[!--empirenews.page--]
圖2的寫(xiě)時(shí)序波形分析如下:
當(dāng)程序中向6018H單元寫(xiě)進(jìn)00H,向6019H單元寫(xiě)進(jìn)01H時(shí),測(cè)得的波形如圖2所示。在圖2波形中,6018H單元的最低位地址線A0為"O",6019H單元的最低位地址線A0為"l",在地址傳送階段,C/BE[3~0]上傳送的是4位編碼的總線指令,從波形中可看出C/BE[3~0]在FRAME的四個(gè)周期中全為"0011",根據(jù)總線指令定義,該指令類型為I/O寫(xiě)。在FRAME的前兩個(gè)周期中,A0為"0",在FRAME的后兩個(gè)周期中,A0為"1",A8在FRAME的四個(gè)周期中全為"0",這符合程序中6018H,6019H的地址。在數(shù)據(jù)傳送階段,C/BE[3~O]用作字節(jié)允許標(biāo)志,以決定數(shù)據(jù)線上的哪些字節(jié)數(shù)據(jù)為有效數(shù)據(jù),C/BE[3~0]依次對(duì)應(yīng)于字節(jié)3,2,1,0。從圖中可看出,D0在FRAME的四個(gè)周期中全為"0",D8在FRAME的前兩個(gè)周期中為"0",后兩個(gè)周期中為"1",從波形中可看出在FRAME的前兩個(gè)周期中c/BE[3~0]為"1110",根據(jù)字節(jié)允許標(biāo)志定義,第0字節(jié)的數(shù)據(jù)為有效數(shù)據(jù),因此D0的數(shù)據(jù)有效,為"0",與程序中向6018H單元寫(xiě)進(jìn)00H相一致。在FRAME的后兩個(gè)周期中C/BE[3~0]為"0101",根據(jù)字節(jié)允許標(biāo)志定義,第1、3字節(jié)的數(shù)據(jù)為有效數(shù)據(jù),因此D8,D24的數(shù)據(jù)有效,D8為"1",而D24無(wú)數(shù)據(jù),與程序中向6019H單元寫(xiě)進(jìn)01H相一致。
圖3的寫(xiě)時(shí)序波形分析如下:
將程序稍改,即向6018H單元寫(xiě)進(jìn)0lH,向6019H單元寫(xiě)進(jìn)00H。測(cè)得的波形如圖3。從圖3中可看出C/BE[3~0]在FRAME的4個(gè)周期中全為"0011",根據(jù)總線指令定義,該指令類型為I/O寫(xiě)。在FRAME的前兩個(gè)周期中,A0為"0",在FRAME的后兩個(gè)周期中,A0為"1",A8在FRAME的四個(gè)周期中全為"0",這符合程序中6018H,6019H的地址。在數(shù)據(jù)傳送階段,從圖中可看出,D0在FRAME的四個(gè)周期中全為"0",D8在FRAME的四個(gè)周期中全為"1",從波形中可看出在FRAME的前兩個(gè)周期中C/BE[3~0]為"1101",根據(jù)字節(jié)允許標(biāo)志定義,第1字節(jié)的數(shù)據(jù)為有效數(shù)據(jù),因此D8的數(shù)據(jù)有效,為"1",與程序中向6018H單元寫(xiě)進(jìn)01H相一致。在FRAME的后兩個(gè)周期中c/BE[3~0]為"1110",根據(jù)字節(jié)允許標(biāo)志定義,第0字節(jié)的數(shù)據(jù)為有效數(shù)據(jù),因此D0的數(shù)據(jù)有效,為"0",與程序中向6019H單元寫(xiě)進(jìn)00H相一致。說(shuō)明數(shù)據(jù)是由寫(xiě)進(jìn)6018H,6019H的數(shù)據(jù)決定。
5 結(jié) 語(yǔ)
從以上的分析可看出I/O寫(xiě)的時(shí)序波形是正確的,因此采用這種測(cè)試I/O寫(xiě)時(shí)序的方法是可行的。采用類似方法還可測(cè)試I/O讀時(shí)序波形。對(duì)于研究PCI總線的時(shí)序提供了一種可行有效的方法。