痞酷網_PIGOO

 找回密碼
 立即註冊
!!! [系統偵測到廣告阻擋軟體] !!!

如果您覺得痞酷網對您有些許幫助,或者您認同痞酷網的理想,

那麼希望您將痞酷網設定為白名單.

並請在上論壇的時候,動動您的手指,用行動支持我們.

謝謝!
查看: 6749|回復: 6

[教學文獻] 基於PCI匯流排的主機板診斷卡設計(轉)

[複製鏈接]
發表於 2008-12-28 13:39:55 | 顯示全部樓層 |閱讀模式
隨著信息社會的到來,人們對計算機的需求越來越大,主板診斷卡——POST卡(Power on SelfTest,加電自檢)就在這種情況下應運而生,其工作原理是在PC機不能引導操作系統、黑屏、喇叭不響時,將本卡插入擴充槽內,根據卡上顯示的代碼,參照計算機所屬的BIOS種類,再通過主板診斷卡的代碼含義速查表查出該代碼所表示的故障的原因和部位。

1 PCI總線及其工作原理

  PCI總線是由Intel公司1991年推出的一種高性能的32位或64位局部總線[1]。他是專為高度集成的外圍部件、擴充插板和處理器/存儲器系統而設計的互聯機制。PCI局部總線與處理器無關,不受制於系統所使用的微處理器的種類,不同的總線之間可以通過相應的橋接芯片來轉換。

  根據PCI總線協議,PCI總線上所有的數據基本上是由FRMAE#,IRDY#,TRDY#三條信號線控制的。PCI總線基本寫操作時序如圖1所示,各信號遵循如下規則:

  (1) FRAME#和IRDY#定義了總線的忙/閒狀態。當其中一個有效時,總線是忙的;兩個都無效時,總線處於空閒狀態。

  (2) 一旦FRAME#信號無效時,在同一傳輸期間不能重新設置。

  (3) FRAME#的無效,必須以IRDY#有效為前提。

  (4) 一旦主設備設置了IRDY#信號,直到當前資料期結束為止,主設備不能改變IRDY#和FRAME#信號的狀態。

  (5) 在傳輸過程中,IRDY#和TRDY#同時有效表明這是最後一個資料的傳輸。

  (6) 一旦FRAME#有效,地址期開始有效,AD[31:0]傳輸一個有效地址,C/BE[3:0]#線上傳輸總線命令。

  (7) 第二個時鐘裡,AD[31:0]開始傳送數據,C/BE[3:0]#上的信息是提出資料線上哪些字節是有效的,從數據的開始一直到傳輸的完成,C/BE#始終保持有效狀態。

1.jpg

2 主板診斷卡設計

  本設計利用一塊PLD對PCL局部總線進行控制並提取數據達到最終解譯。PLD專用接口芯片選擇Xilinx公司XC9500系列CPLD中XC952288XLPQ208零件。該零件採用系統內編程——ISP技術,支持擴充的IEEE1149.1邊界掃瞄標準,著重滿足系統內編程的要求,增強的引腳鎖定能力可以避免重做昂貴的印製板,擴充的JTAG指令集允許編程模式和系統內診斷的各種控制。器件編程僅用一根下載電纜通過下載軟件和器件的編程接口相連即可實現,提供10 000次以上編程/擦除週期,宏單元數有288個。

  本設計主要由以下3部分組成:數據接口(金手指)部分、PLD部分和顯示(LED燈)部分

  2.1 數據接口(金手指)部分

  該部分的主要作用是通過PCI插槽將DUBUG卡與計算機南橋相連,通過PLD的控制,接收計算機南橋發出的偵測信息。本設計中線路比較簡單,除對應連接相關的信號線外,還包括電源線和地線的正確連接。根據PCI協議的要求,該卡的設計中採用了5 V和3.3V兩種電源來使線路板上各個部分正常工作。在兩種電源上都連接了幾個不同阻值的電容來濾去多餘的干擾信號以及雜波。

  2.2 PLD部分

  該部分是整個設計的核心和靈魂,主要負責數據的採集、轉換、存儲、處理和I/O等功能,他把從金手指處得到的數據經過接收、鎖存(分頻、選擇)、譯碼,最終送至LED顯示。其程序流程圖如圖2所示。

2.jpg

2.3 顯示(LED燈)部分

  顯示部分分為集成在PLD內部的處理部分和外圍線路部分。

  2.3.1 內部處理部分

  內部處理結構如圖3所示,他的輸入信號是由dl,dh以及flkhz和reset組成,輸出信號有A1~G1及ds0和dsl,用來驅動2個7段LED數碼顯示管。Flkhz是分頻後的時間頻率,他的變化控制di在0,1之間循環變化,從而經過譯碼後產生一個矢量信號ds選通2位數碼管。與此同時,di還作為數據選擇電路即位選擇器digit.sel的選擇信號,選擇對應的dl和dh,並把他經過段譯碼器將數據送至7段數碼管的7個段上,從而顯示對應的數據信息。在這個過程中.當dj為0時,位選擇器digit.sel把dl的信號賦予I,同時位譯碼器使ds0為高電位;當di為1時,位選擇器digit.sel把dh的信號賦予I,同時位譯碼器使dsl為高電位。

3.jpg

由上述說明可知,dl和dh對應的信息分別經譯碼後循環顯示在第一個數碼管和第二個數碼管上。

  2.3.2 外圍線路部分

  由圖4可知,控制信號ds通過一個NPN三極管和一個PNP三極管與數碼管顯示燈相連,而輸出信號矢量led則先連接到一個NPN三極管的基極後,再使放大信號經過一個上位電阻連接到數碼管顯示燈上。

4.jpg

在這個過程中,由於對NPN管當基極電位比發射極和集電極低時,三極管處於截止狀態。所以只有當ds為1時,三極管才處於激發狀態,和上述內部處理結構部分分析一致。對於矢量信號led,同理分析可知,只有當其為1時,才可以使數碼管的單元燈亮。

  3 軟件仿真及信號測量

  採用ISE4.1I和Modelsim進行程序的輸入以及仿真,圖5為80PORT以及WRITE部分仿真結果。

5.jpg

對仿真結果分析可知,該板卡符合時序要求,可以下載到PLD芯片中並焊制線路板。線路板完成後,用示波器對其進行信號測量,結果如圖6所示。

6.jpg
經實際應用,可以通過板卡上的LED顯示的代碼來迅速查出主板故障的原因和部位。

  4 結 語

  經過仿真分析及實際驗證,該主板診斷卡的功能極其強大,報告錯誤的能力遠遠超過BIOS自身通過鈴聲報錯的能力,解決了普通雙口卡在P4主板上出現錯碼、假碼的現象,並補充了大量的POST代碼,在使用中,插錯、插反都不會損壞任何元件,既適合電腦愛好者個人使用,也適合於主板設計、維修等行業的工程師使用。
 樓主| 發表於 2008-12-28 14:00:59 | 顯示全部樓層
PCI接口信號說明

1.  AD[31:0] I/O Address Data Bus(地址數據總線) 是用來傳送起始地址.在內存或組態的交易期間,此地址的分辨率是一個雙字組(Double Word)(即地址可被四整除),在讀取或寫入的交易期間,它是一個字節特定地址.

2.  PAR  I/O Parity Signal(同位信號)在地址階段完成後一個頻率,或是所有寫入交易的數據階段期間,在IDRY#被驅動到僭態後一個頻率,由Initiator驅動.所有讀取交易的數據階段期間,在TRDY#被驅動到僭態後一個頻率,它也會被目前所尋址的Target驅動.在地址階段完成後的一個頻率,Initiator將PAR驅動到高或低態,以保證地址總線AD[0:31]與四條指令/位組致能線 C/BE#[0:3]是偶同位(Even Parity).

3.  C/BE[3:0]# I/O   Command/Byte Enable(指令或字節致能)由Initiator驅動,在AD Bus上傳輸地址時,用來表示當前要動作的指令.在AD Bus上傳輸數據時,用來表示在目前被尋址之Dword 內將要被傳輸的字節,以及用來傳輸數據的數據路徑.

4.  RST#  O PCI Reset(複位信號) 當重置信號被驅動成低態時,它會強迫所有PCI組態緩存器 Master及Target狀態機器與輸出驅動器回到初始化狀態.RST#可在不同步於PCI CLK邊緣的狀況下,被驅動或反驅動.RST#的設定也將其它的裝置特定功能初始化,但是這主題超出PCI規格的笵圍.所有PCI輸出信號必須被驅動成最初的狀態.通常,這表示它們必須是三態的.

5.  FRAME#    I/O   Cycle Frame(周期框架)    是由目前的Initiator驅動,它表示交易的開始(當它開始被驅動到低態時)與期間(在它被驅動支低態期間).為了碓定是否已經取得總線擁有權,Master必須在同一個PCI CLK信號的上邊緣,取樣到FRAME#與IRDY#都被反驅動到高態,且GNT#被驅動到低態.交易可以是由在目前的Initiator與目前所尋址的Target間一到多次數據傳輸組成.當Initiator准備完成最後一次數據階段時,FRAME#就會被反驅動到高態.

6.  IRDY#    I/O    Initiator Ready(備妥)    Initiator 備妥被目前的Bus Master(交易的Initiator)驅動.在寫入期間,IRDY#被驅動表示Initiator准備接收從目前所尋址的Target傳來的資料.為了確定Master已經取得總線擁有權,它必須在同一個PCI CLK信號的上升邊緣,取樣到FRAME#與IRDY#都被反驅動到高態,且GNT#被驅動到低態.

7.  TRDY#   I/O   Target Ready(目標備妥)        Target備妥被目前所尋址的Target驅動.當Target准備完成目前的數據階段(數據傳輸)時,它就會被驅動到低態.如果在同一個PCI CLK信號的上升邊緣,Target 驅動TRDY#到低態且Initiator驅動IDRY#到低態的話,則此數據階段便告完成.在讀取期間,TRDY#被驅動表示Target正在驅動有效的數據到數據總線上.在寫入期間,TRDY#被驅動表示Target准備接收來自Master的資料.等待狀態會被插入到目前的資料階段裏,直到取樣到TRDY#與IRDY#都被驅動到低態為止.

8.  STOP#    I/O    Stop(停止)        Target驅動STOP#到低態,表示希望Initiator停止目前正在進行的交易.

9.  DEVSEL#    I/O  Device Select(設備選擇信號)        該信號有效時,表示驅動它的設備已成為當前防問的目標設備.換言之,該信號的有效說明總在線某處的某一設備已被選中.如果一個主設備啟動一個交易並且在6個CLK周期內設有檢測到DEVSEL#有效,它必須假定目標設備沒能 反應或者地址不存在,從而實施主設備缺省.

10.   IDSEL      I     Initialization Device Select(初始化設備選擇)        IDSEL是PCI裝置的一個輸入端,並且在存取某個裝置的組態緩存器期間,它用來選擇芯片.

11.   LOCK#     I/O    Lock(鎖定)   這是在一個單元(Atomic)交易序列期間(列如:在讀取/修改/寫入操作期間),Initiator用來鎖定(Lock)目前所尋址的Target的.

12.   REQ#      I    Request(請求)   表示管理者要求使用總線,此為一對一之信號,每一管理者都有與其相對應之REQ#信號.

13.   GNT#      O    Grant(保證)        表示管理者對總線使用之要求已被同意,此為一對一之信號,每一管理者都有與其相對應之GNT#信號.

Snap1.jpg
發表於 2008-12-28 18:07:08 | 顯示全部樓層
謝謝提供 ~每份資料都很寶貴~~先收下~~n_139|
發表於 2008-12-28 20:01:29 | 顯示全部樓層
感謝 playx 大大 提供 的資料
發表於 2008-12-28 23:15:43 | 顯示全部樓層
playx 大大   您真是太猛了..
謝謝提供資料..
發表於 2008-12-31 16:47:45 | 顯示全部樓層
拜讀過後是不是要能設計出一張W大加持的除錯卡才對得起你.......
發表於 2009-6-27 09:52:51 | 顯示全部樓層
找到解說PCI的應用大不易,感謝!對pci 的動作會有進一步的了解.
以往找到的只有ISA的應用,但PC的插槽已進步至PCI-e,實在是脫離現實.

另外有一個問題. 為什為有的 post code 會有沒有資料?是機密碼還是錯碼?
bios 供應商不是要提供post code 供客戶使用的嗎?難道post code 也有商業機密?
您需要登錄後才可以回帖 登錄 | 立即註冊

本版積分規則

關閉

站長小叮嚀上一條 /1 下一條

禁閉室|手機版|連繫我們|痞酷網電子技術論壇

GMT+8, 2024-5-10 08:35 AM , Processed in 0.066144 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2023 Discuz! Team.