李春雨,夏敏磊
(浙江機電職業(yè)技術學院,杭州 310053)
?
基于CPLD的X86系統(tǒng)硬件檢測卡設計
李春雨*,夏敏磊
(浙江機電職業(yè)技術學院,杭州 310053)
X86處理器價格高,一旦出現(xiàn)故障會導致電子產(chǎn)品出現(xiàn)各種異常且定位困難。提出一種基于CPLD的X86系統(tǒng)硬件檢測卡,當X86處理器出現(xiàn)故障時,將通往IO 80端口地址的上電自檢數(shù)據(jù)通過CPLD轉成串行數(shù)據(jù)輸出。該方法不需要PCI硬件插槽,節(jié)省PCB空間840 mm2,不需要外置硬件debug卡,降低硬件成本,提高X86系統(tǒng)故障定位效率,方案可實施性強,尤其在高密度電子產(chǎn)品上具有很強的推廣價值。
X86系統(tǒng);硬件故障定位;CPLD;檢測;PCI;串口
Intel X86處理器因其性能穩(wěn)定,高效,在桌面平臺應用十分廣泛,近年來隨著X86功耗的降低,該處理器在小型化,高密度的移動終端,小型交換機,電信級服務器,企業(yè)服務器,媒體網(wǎng)關等中使用越來越廣泛。當在BIOS啟動過程中,如果自檢失敗,屏幕或者串口無任何顯示,故障診斷和排除無任何線索,導致定位時間長,單板報廢率高。因此提高小型X86系統(tǒng)中CPU故障定位技術是縮短MTTR(Mean Time To Repair)的關鍵。
X86系統(tǒng)上電后,在BIOS(基本輸入輸出系統(tǒng))的控制下,在主板BIOS的引導下,進行上電自檢POST(Power On Self Test),進行上電自檢時會向CPU的80端口發(fā)出一系列的碼字,即POST CODE,碼字和相應功能的測試是對應的,如果測試成功,BIOS會發(fā)出下一項POST CODE,如果計算機系統(tǒng)存在硬件故障,就會停止在當前的測試項。POST自檢過程大致包含:上電、CPU、ROM、System Clock、DMA、IRQ、串并口、顯卡等,檢測顯卡以前的任何部件有問題,計算機都將處于掛起狀態(tài),系統(tǒng)將給出提示信息,輸出硬件偵錯碼信息,如POST CODE停止在“9”,代表ROM校驗失敗[1]。檢測完顯卡后,計算機將對其余的內(nèi)存、軟硬盤驅動器、鍵盤、即插即用設備、CMOS設置等進行檢測,并在屏幕上顯示各種信息和出錯報告。在這期間檢測到的故障,不會影響開機。此時如果有不正常的設備,就會提示用戶選擇是繼續(xù)進行還是重新啟動計算機;如果一切正常,計算機將按BIOS中設定的系統(tǒng)啟動驅動器,裝載引導程序啟動系統(tǒng)。
在基于X86處理器的臺式機中,POST自檢失敗,會通過喇叭發(fā)出告警提示音[2],由于故障種類繁多,聲音識別度低,此種方法使用較少。第2種方法是POST自檢時,會輸出硬件偵錯碼信息,即POST碼,每個碼字對應一種故障類型,該碼從X86處理器IO端口的80端口輸出,當在檢測過程中發(fā)現(xiàn)故障,就停留在發(fā)生故障處,通過X86系統(tǒng)的總線接口[3],如PCI接口或者ISA接口擴展一個硬件偵錯卡將POST碼顯示出來,這種硬件檢測卡也叫80卡。
圖1 目前主流X86系統(tǒng)硬件檢測卡框圖
其缺點是PCI總線接口多,32 bit PCI總線120個引腳,PCI插槽占用PCB空間太多。
3.1 改進方案介紹
在實際應用中,PC和X86單板都是通過串口進行通信,如通常的PCI轉串口邏輯就是識別PCI總線的地址是否是0x3f8,如是,就將PCI總線的數(shù)據(jù)通過串口打印出來。那么借鑒這個思路,判斷PCI總線的地址是否是硬件檢測代碼輸出端口地址0x80,如是,就將PCI數(shù)據(jù)總線上的數(shù)據(jù)轉換成串行數(shù)據(jù)輸出,輸出的串行數(shù)據(jù)符合UART協(xié)議,利用這個轉換邏輯實現(xiàn)一個X86硬件故障檢測卡。實現(xiàn)框圖如圖2所示。
圖2 基于CPLD的故障檢測卡
本方案中橋片選用INTEL的3100芯片[4],CPLD采用Lattice的LCMXO2280,RS232電平轉換芯片使用MAX232,CPLD實現(xiàn)數(shù)據(jù)的并串轉換,將PCI端口的并行數(shù)據(jù)轉換成波特率為9 600 bit/s的串行數(shù)據(jù),通過串口輸出,連接到上位計算機,CPLD轉換的串口成為一個X86故障檢測輸出端口,CPLD輸出的是3.3 V的TTL電平,MAX232的作用是實現(xiàn)電平轉換,將3.3 V電平轉換成+/- 10 V RS232電平,完成計算機的串口通信。
本方案的優(yōu)點,PCI總線不再采用PCI卡槽,通過PCB走線,大大節(jié)省空間,不再外接硬件故障檢測卡,只需接一根串口線,節(jié)省成本,操作方便。
3.2 代碼實現(xiàn)
CPLD代碼采用Verilog[5]語言實現(xiàn),該代碼模塊框圖如圖3所示。
圖3 CPLD內(nèi)部邏輯模塊框圖
該模塊可以分成兩大部分,模塊1完成PCI總線到本地總線(Localbus)的轉換,模塊2實現(xiàn)本地總線到硬件檢測卡模塊的轉換。PCI,本地總線都是并行總線,TxData是串行數(shù)據(jù),因此模塊2的主要功能就是當判斷PCI總線的訪問地址是IO端口0x80后,將發(fā)往0x80的硬件檢測信息由并行數(shù)據(jù)轉換成UART格式的串行數(shù)據(jù)輸出。
3.2.1 PCI轉換模塊實現(xiàn)
PCI轉換模塊完成PCI總線和Localbus總線的轉換,其實現(xiàn)框圖如圖4所示。
圖4 PCI總線轉Localbus邏輯模塊框圖
PCI總線數(shù)據(jù)地址復用,共32根數(shù)據(jù)線,在FRAME信號,IRDY,TRDY信號控制下區(qū)分是地址周期還是數(shù)據(jù)周期[6]。Localbus總線地址和數(shù)據(jù)總線分開,可以根據(jù)用戶需求自己配置寬度,如地址總線BKEND_ADDR設置16根,數(shù)據(jù)總線設置BKEND_DAT設置8根,80 card_cs是檢測端口的片選信號,Base_region1_l是其他外設片選信號,檢測端口片選信號產(chǎn)生部分代碼如下:
Assign 80 card_cs=(ADDR[15:0]==16’h80)?1’b1:1’b0;
當CPU通過南橋的PCI總線對內(nèi)存空間進行讀寫時,當本地總線輸出的地址為0xF000_0080時,即對檢測端口進行訪問,硬件檢測卡模塊片選有效,在寫信號data_write_l的配合下,轉換裝置中的PCI總線將數(shù)據(jù)總線連接到檢測單元的數(shù)據(jù)輸入寄存器,再根據(jù)根據(jù)相應寄存器的配置參數(shù),實現(xiàn)數(shù)據(jù)的通信。
3.2.2 本地總線數(shù)據(jù)并串轉換模塊實現(xiàn)
圖5 本地總線數(shù)據(jù)轉換模塊
圖8 程序仿真波形
TxData數(shù)據(jù)符合通用異步數(shù)據(jù)收發(fā)器UART(Universal Asynchronous Receiver Transmitter)格式,異步通信不要求收發(fā)雙方使用共同時鐘,一幀信息由4部分組成:起始位、數(shù)據(jù)位、奇偶校驗位和停止位[7]。
由于BIOS將硬件檢測信息發(fā)往80端口,因此邏輯只要實現(xiàn)單工發(fā)送模塊,將檢測信息通過串口送往PC。
(1)地址解碼模塊:該模塊包含兩部分功能:①寄存器讀寫,如發(fā)送數(shù)據(jù)保持寄存器0x80,本地總線要發(fā)送的數(shù)據(jù)直接送往0x80地址;線控制寄存器0x83[8],鑒于本設計只是實現(xiàn)硬件檢測功能,當硬件發(fā)生故障時,串口通常沒有初始化,不能配置寄存器,因此0x83寄存器默認值是0 x 03,即發(fā)送數(shù)據(jù)位長度為8,無奇偶校驗,停止位長度為1。②波特率發(fā)生,波特率默認9 600 bit/s,該模塊產(chǎn)生波特率16倍的時鐘clk_16x。
(2)發(fā)送FIFO:由于PCI總線速率33 MHz,UART速率較低,為了避免數(shù)據(jù)丟失,邏輯內(nèi)實現(xiàn)了一個存儲長度為32 byte的發(fā)送FIFO(先進先出),將發(fā)送保持寄存器0x80的數(shù)據(jù)緩存到FIFO中。FIFO的接口圖如圖6所示。
圖6 發(fā)送fifo接口圖
(3)發(fā)送模塊:在clk_16x時鐘控制下,將從發(fā)送FIFO讀出的并行數(shù)據(jù)轉換成串行數(shù)據(jù),根據(jù)UART協(xié)議,發(fā)送時先發(fā)送起始位,8個數(shù)據(jù)位,一位停止位,邏輯代碼里通過狀態(tài)機實現(xiàn),狀態(tài)機狀態(tài)遷移圖如圖7所示?;贏ltera7.1仿真波形如圖8所示。
圖7 檢測數(shù)據(jù)發(fā)送狀態(tài)機
上述波形中,Data_in是從發(fā)送FIFO讀出的數(shù)據(jù),TxData是按照9 600波特率轉換出來的串行數(shù)據(jù),sample是波特率16倍時鐘,仿真波形證明當PCI總線訪問IO 0x80端口時,可以實現(xiàn)數(shù)據(jù)的串行輸出。
使用基于CPLD在線X86系統(tǒng)硬件檢測方案,不需要在單板上設計封裝大的PCI插槽支持外部的硬件檢測卡,120引腳的PCI插槽在PCB板上的封裝大小8.4 cm×1 cm,在目前主流的開放式電信架構MTCA(Micro Telecommunications Computing Architecture)[9]中規(guī)定單板尺寸13.8 cm×18 cm,PCI插槽占用的空間達到3%。而本方案只需利用單板上的CPLD將并行數(shù)據(jù)轉成串行的txData,通過串口送出。該方案在基于INTEL 3100開發(fā)板上已經(jīng)驗證通過,且該方案并不局限于本文所提到的器件,可以應用于各系列X86芯片中,具有很高的實用價值。
[1]Sathish Venkataramani. Embedded Intel?Architecture Board Bring Up Procedure[EB/OL]. http://www. intel. cn,2009,8:12-13.
[2]Intel?Server Board SE7210TP1-E Technical Product Specification[EB/OL]. http://www. intel. com 2012,10:102-102.
[3]Intel,AtomTMProcessor Z36xxx and Z37xxx Series Datasheet(Volume 1 of 2)[EB/OL]. http://www.intel.com,2013.
[4]Intel?3100 Chipset for Intel?CoreTM2 Duo Processors,Intel?CoreTMDuo Processors and Intel?Celeron?M Processors on 65 nm[EB/OL]. http://www.intel.com,2012.
[5]王靜霞. FPGA/CPLD應用技術(Verilog語言版)[M]. 北京:電子工業(yè)出版社,2011:86-102.
[6]程鵬,劉維亞,鄭喜鳳. 基于FPGA的PCI總線接口設計[J]. 電子器件,2007,30(2):717-720.
[7]張羽,胡玉貴,殷奎喜,等. 基于FPGA的多串口擴展實現(xiàn)[J]. 電子器件,2009,32(1):233-236.
[8]Lattice,Universal Asynchronous Receiver/Transmitter[EB/OL]. http://www.latticesemi.com,2009.
[9]PCI Industrial Computers Manufacturers Group MTCA. 0 Revision 1. 0 MicroTCA?[S]http://www. picmg. org.
李春雨(1976-),女,漢族,黑龍江五常人,2002年于同濟大學獲信號與信息處理專業(yè)碩士學位,現(xiàn)為浙江機電技術學院電氣電子學院教師,主要研究方向電子設計,通信系統(tǒng),rain668@hotmail.com;
夏敏磊(1973-),女,碩士研究生,副教授,主要研究方向為電子設計。
HardwareDebugCardofX86SystemBasingCPLD
LIChunyu*,XIAMinlei
(Zhejiang Institute of Mechanical and Electrical Engineering,Hangzhou 310053,China)
The X86 processor is expensive,its failure will lead to various abnormal phenomenon,and it is difficult to solve. This paper proposes a X86 system hardware detection card based on CPLD,it converts parallel data into serial data through CPLD when the X86 processor is failure. The method need not be additional PCI slot,it saves PCB board space 840 mm2,and need not set the hardware debug card,so it reduces the hardware cost,and improves the fault location X86 system efficiency. The project implementation is especially strong in high density electronical product.
X86 system;hardware failure fixed;CPLD;debug;PCI;serial port
2013-04-10修改日期:2013-05-12
TN79
:A
:1005-9490(2014)06-1168-04
10.3969/j.issn.1005-9490.2014.06.032