李衛(wèi)兵 , 王洪國 , 胡 波 , 史傳寶
(1.濱州學院 物理與電子科學系,山東 濱州 256600;2.濱州學院 飛行學院,山東 濱州 256600;3.濱州學院 航空信息技術(shù)研發(fā)中心,山東 濱州 256600)
計算機在當今社會作為一個重要的工具使用已經(jīng)很普遍,但是人們也為其故障影響工作而煩惱,而計算機都是板卡設計,非專業(yè)人員若是能借助計算機故障診斷系統(tǒng)診斷出故障所在,自己維修也是可行的。利用計算機的加電自檢[1](POST——Power-on self Test英文縮寫),在計算機啟動的時候?qū)懭朐贐IOS芯片中的自檢程序就會自動啟動[2]。啟動后它首先對 CPU、內(nèi)存、顯卡、硬盤、光驅(qū)/軟驅(qū)等硬件部位進行檢查,并分析對比系統(tǒng)的原始配置情況,以及對基本輸入/輸出(I/O)端口和對其它的外部設備進行初始化,檢測出無異常,將引導并加載操作系統(tǒng),檢測出異常,將會使加電自檢程序掛起。若能根據(jù)計算機加電自檢原理,設計一故障診斷系統(tǒng),以文字的形式給出故障原因,則可以提高維修效率。目前,市場上有一些主板檢測卡,但經(jīng)常出現(xiàn)走碼、跳碼現(xiàn)象,使得一些錯誤代碼不能準確的檢測出來。本文給出一種基于FPGA和PCI總線的計算機故障智能診斷系統(tǒng)。以Altera公司的Cyclone II系列EP2C5T144C8N為信號處理模塊電路,以PCI總線接口電路作為與電腦主板的通信的接口。采用VHDL硬件描述語言在FPGA上設計硬件電路實現(xiàn)數(shù)據(jù)存儲,分析,提取等一系列處理,以漢字的形式在液晶上顯示出電腦硬件故障,檢測速度快,系統(tǒng)性能可靠,準確率高,顯示直觀。
設計中采用的是Altera公司的CyClone II(颶風)系列的低成本FPGA——EP2C5T144C8N,其觸發(fā)器模塊的最大延遲時間在800 ps以下,支持最高50 MHz的工作頻率,足夠滿足33M SPS采樣速率的PCI數(shù)據(jù)采集,而且該型號的FPGA還可嵌入51內(nèi)核,這一特性對于時序的設計是很方便的。
系統(tǒng)硬件電路包括地址、數(shù)據(jù)譯碼電路、時鐘電路、數(shù)據(jù)處理電路、數(shù)據(jù)鎖存電路、狀態(tài)機控制電路、單片機系統(tǒng)設計等,總體結(jié)構(gòu)框圖如圖1所示。
圖1 總體結(jié)構(gòu)框圖Fig.1 Overall structure diagram
根據(jù)PCI總線協(xié)議,PCI總線上所有的數(shù)據(jù)基本上是FRMAE#,IRDY#,TRDY#3條信號線控制的[3-4]。 本設計中用到的主要是寫操作,重點分析寫操作的時序關(guān)系。PCI基本寫操作時序如圖2所示,在FRAME#有效后的第一個時鐘周期內(nèi),AD上傳輸?shù)氖且獙懭肽繕薖CI設備的地址信息,C/BE#上傳輸?shù)氖敲铑愋停↖/O寫命令為0011),DEVSEL#信號有效后,表明目標PCI設備已經(jīng)被選擇到,IRDY#和TRDY#同時有效后,主PCI設備向目標PCI設備中傳輸要寫入的數(shù)據(jù),在第5個時鐘周期時,IRDY#和TRDY#同時變?yōu)闊o效狀態(tài),AD總線上被插入一個等待周期,第6和第7個時鐘周期時,IRDY#有效,但是TRDY#無效,傳輸仍然不能有效進行,總線上被繼續(xù)插入兩個等待周期,第8個時鐘周期時,IRDY#和TRDY#都有效,數(shù)據(jù)傳輸繼續(xù)。
地址數(shù)據(jù)譯碼器電路的FPGA設計如圖3所示,其工作為譯出80H的地址,在下一個時鐘上升沿時讀出數(shù)據(jù),并將其引出至數(shù)據(jù)處理電路的片選信號端進行數(shù)據(jù)處理。由于PCI總線是地址數(shù)據(jù)復用的總線,為獲取80H端口的信息需要把地址數(shù)據(jù)分開。本設計中用到的主要是寫操作,寫操作時序如下。
圖2 PCI寫操作時序圖Fig.2 Diagram of PCI write operation sequence
圖3 地址數(shù)據(jù)譯碼電路Fig.3 Address data decoding circuit
當framej(j或#表示低電平有效)有效時,總線傳輸開始,在 data[7::0]上保持有效的地址信號,同時 comd[3 ::0]上保持一個總線命令。如果總線命令為0011b(存儲器寫命令),同時data[7::0]上的地址又在目標設備的地址范圍內(nèi),該設備將置devselj信號有效,由于地址和數(shù)據(jù)都是由主設備提供,不存在data[7::0]切換驅(qū)動問題,所以第一個數(shù)據(jù)節(jié)拍產(chǎn)生于第二個時期周期。在這個數(shù)據(jù)內(nèi),comd[3::0]信號是字節(jié)允許,表示數(shù)據(jù)總線的data[7::0]字節(jié)有效。主設備在接下來的每個時鐘周期的上升沿檢查trdyj信號,如果trdyj為高電平,表示從設備沒有準備好,主設備自動插入等待周期,反之,將傳送數(shù)據(jù),完成一個數(shù)據(jù)節(jié)拍。當主設備是framej從有效變?yōu)闊o效,表示當前是最后一個數(shù)據(jù)節(jié)拍。在寫周期里,只要framej有效,則下一個周期即可以接收數(shù)據(jù),利用這一點,可以為檢碼帶來方便。
數(shù)據(jù)處理單元的功能是根據(jù)狀態(tài)的轉(zhuǎn)換對實時鎖存的信息進行選擇,數(shù)據(jù)處理電路的設計主要的就是設計數(shù)據(jù)選擇器。由鎖存器將不同的檢測信息鎖存住,然后后續(xù)的數(shù)據(jù)進行對比,通過這些選擇器,將沒用的數(shù)據(jù)代碼篩選掉,然后傳遞給51單片機處理,并將其顯示在液晶屏上。數(shù)據(jù)處理電路[5]如圖4所示。
圖4 數(shù)據(jù)處理電路Fig.4 Data processing circuit
鎖存電路如圖5,其中左邊的電路是對地址、數(shù)據(jù)電路檢測的POST原代碼鎖存,右邊所示的鎖存器是對處理過后的代碼信息的鎖存,其輸出直接連接單片機,與單片機系統(tǒng)的始終匹配。
以上設計中使用的信號:
clk:總線時鐘輸入。
cmd[3::0]:命令/字節(jié)使能,即總線中的 cbej。
framej:由總線主控驅(qū)動,指明傳輸?shù)钠鹗紩r間和終止時間。
resetj:重新啟動(重新分配地址)信號。
根據(jù)以上的分析,整個系統(tǒng)有4個狀態(tài),用圓圈表示,如圖6所示,分別記為:
start:系統(tǒng)為開始工作的狀態(tài);
idle:總線資源被CPU或其他設備占用的狀態(tài),此時的標志是 framej=1;
圖5 鎖存電路Fig.5 Latch circuit
port right:系統(tǒng)剛檢測到計算機準備往80H端口寫信息的狀態(tài);
data2buffer:所需要的數(shù)據(jù)已經(jīng)寫入緩沖區(qū)的狀態(tài)。
另外,還有一個執(zhí)行動作,即把數(shù)據(jù)寫入緩沖區(qū)動作,是在時鐘周期的間隙完成的。
圖6 狀態(tài)轉(zhuǎn)換圖Fig.6 State transition diagram
單片機控制電路采用AT89S52單片機,由復位電路、時鐘電路、程序下載電路組成。SPI(Serial Peripheral Interface)總線系統(tǒng)是一種同步串行外設接口[6],它可以使MCU與各種外圍設備以串行方式進行通信以交換信息。SPI總線系統(tǒng)可直接與各個廠家生產(chǎn)的多種標準外圍器件直接接口,該接口一般使用4條線:串行時鐘線(SCK)、主機輸入/從機輸出數(shù)據(jù)線MISO、主機輸出/從機輸入數(shù)據(jù)線MOSI和低電平有效的從機選擇線SS。本系統(tǒng)利用單片機自帶的SPI總線下載程序,可實現(xiàn)在線編程。
實現(xiàn)數(shù)據(jù)的采集、轉(zhuǎn)換、存儲、處理和I/O等功能,它把從通過PCI總線獲得的計算機主板數(shù)據(jù)經(jīng)過接收、鎖存(分頻、選擇)、譯碼,最終送至51單片機。然后經(jīng)過51單片機處理后送至液晶顯示。其程序流程圖[2]如圖7所示。
本設計給出一種基于FPGA和PCI總線的計算機故障智能診斷系統(tǒng)。該系統(tǒng)以Altera公司的Cyclone II系列EP2C5T144C8N控制核心為,以PCI總線接口電路作為與電腦主板的通信的接口。根據(jù)計算機自身的加電自檢原理,采用VHDL硬件描述語言在FPGA上設計硬件電路實現(xiàn)數(shù)據(jù)存儲,分析,提取等一系列處理,以漢字的形式在液晶上顯示出電腦硬件故障。為了提高系統(tǒng)的可靠性和準確度,實行模塊化電路設計,單元電路包括:地址譯碼單元、數(shù)據(jù)譯碼單元、數(shù)據(jù)處理單元、狀態(tài)及控制單元、電源診斷電路單元、液晶顯示單元,系統(tǒng)性能可靠,準確率高,顯示直觀。
圖7 程序流程圖Fig.7 Program flow chart
[1]劉福勝.計算機加電自檢與故障診斷卡的使用[J].電子世界,2003(11):15-16.
LIU Fu-sheng.Using of card in computers electricity selfinspection and fault diagnosis[J].The Electronic World,2003(11):15-16.
[2]李曉莉,甘明.基于PCI總線的主板診斷卡設計[J].電子技術(shù),2007(3):156-158.
LI Xiao-li,GAN Ming.Post card design based on PCI Bus[J].Electronic Technology,2007(3):156-158.
[3]趙敏.基于FPGA實現(xiàn)的PCI數(shù)據(jù)采集卡的研究[D].太原:華北工學院,2002.
[4]潘松,黃繼業(yè).EDA技術(shù)與VHDL[M].3版.北京:清華大學出版社,2009.
[5]李衛(wèi)兵,王洪國.一種基于FPGA的計算機硬件診斷裝置:中國,ZL 201120450587.8[P],2012.
[6]何志宏,丁楚平,吳俊.基于PicoBlaze的SPI核設計與實現(xiàn)[J].微處理機,2010(2):86-89.
HE Zhi-hong,DING Chu-ping,WU Jun.The SPll pcore design and realization based on PicoBlaze[J].Microprocessors,2010(2):86-89.