文獻(xiàn)標(biāo)識(shí)碼: A
DOI:10.16157/j.issn.0258-7998.170644
中文引用格式: 周治虎,張凡,武明虎,等. PC104故障監(jiān)控平臺(tái)FPGA程序設(shè)計(jì)[J].電子技術(shù)應(yīng)用,2017,43(9):57-60.
英文引用格式: Zhou Zhihu,Zhang Fan,Wu Minghu,et al. FPGA program design of PC104 fault monitoring platform[J].Application of Electronic Technique,2017,43(9):57-60.
0 引言
PC104作為一種專用嵌入式控制主板[1],具有功耗低、效率高、體積小、可擴(kuò)展等優(yōu)點(diǎn),在航空航天[2]、軍用武器裝備[3]、工業(yè)控制[4]等領(lǐng)域應(yīng)用廣泛。PC104主板的結(jié)構(gòu)復(fù)雜緊湊,一旦發(fā)生故障,僅靠常規(guī)的監(jiān)控手段很難判斷具體的故障原因。PC104總線需要監(jiān)測的信號(hào)高達(dá)70多個(gè),總線運(yùn)行頻率也高達(dá)14 MHz左右,無法利用單片機(jī)實(shí)現(xiàn)監(jiān)測功能[5-6]。因此,本項(xiàng)目采用了基于FPGA的設(shè)計(jì)方案,利用FPGA的多I/O端口特性和高速并行處理能力[7]對(duì)PC104總線進(jìn)行實(shí)時(shí)監(jiān)測。
1 PC104監(jiān)控系統(tǒng)設(shè)計(jì)方案
基于FPGA的PC104故障監(jiān)控平臺(tái)(以下簡稱監(jiān)控平臺(tái))主要由待測PC104主板、電平信號(hào)轉(zhuǎn)換模塊、FPGA功能模塊(DE0開發(fā)板)[9]、上位機(jī)系統(tǒng)4個(gè)部分組成。監(jiān)控平臺(tái)硬件結(jié)構(gòu)如圖1。
監(jiān)控平臺(tái)中的上位機(jī)系統(tǒng)板使用常用Windows XP系統(tǒng),并自動(dòng)運(yùn)行監(jiān)控APP程序。通過串口和FPGA功能模塊通信,利用約定好的通信協(xié)議讀取FPGA功能模塊返回的信息,將返回的這些信息處理成可供參考的數(shù)據(jù),最后在上位機(jī)APP程序的界面中顯示。
PC104主板功能強(qiáng)大,擴(kuò)展功能端口很多。監(jiān)控平臺(tái)為判斷其具體的故障信息,需要對(duì)其總線信號(hào)進(jìn)行實(shí)時(shí)監(jiān)測。為了保證監(jiān)控平臺(tái)方便高效的運(yùn)行,在待測下方引入主板治具方便主板的插拔,這不僅提高了監(jiān)控效率和準(zhǔn)確性,同時(shí)可以保護(hù)PC104主板總線接口不被損壞。
由于PC104主板工作在+5 V供電環(huán)境下,而采用的FPGA的工作電壓是+3.3 V,監(jiān)控平臺(tái)加入了基于74AL-VC164245的電平信號(hào)轉(zhuǎn)換模塊。74ALVC164245是TI公司生產(chǎn)制造的一種+5 V和+3.3 V之間雙向轉(zhuǎn)換的電平轉(zhuǎn)換芯片,可以很好地實(shí)現(xiàn)FPGA和PC104主板之間的電平匹配。轉(zhuǎn)接板上還包括PC104主板電源測試模塊,并將PC104主板上的鍵盤接口、鼠標(biāo)接口和兩個(gè)串口接口做了擴(kuò)展。不僅實(shí)現(xiàn)了不同電平之間信號(hào)的實(shí)時(shí)傳輸,同時(shí)增加了監(jiān)控平臺(tái)的空間利用率。
2 FPGA功能模塊設(shè)計(jì)
FPGA功能模塊是PC104主板故障檢測平臺(tái)的核心,也是本文介紹的重點(diǎn)。FPGA擁有可編程輸入輸出單元(IOB)、可配置邏輯塊(CLB)、數(shù)字時(shí)鐘管理模塊(DCM)、嵌入式塊RAM(BRAM)、豐富的布線資源等功能,能很好地滿足檢測平臺(tái)的相關(guān)需求。不僅可以實(shí)時(shí)采集PC104總線信號(hào),而且可以通過輸出TTL電平信號(hào)控制總線上相關(guān)引腳來控制PC104主板的運(yùn)行狀態(tài)。采用FPGA功能模塊作為檢測平臺(tái)的核心,在很大程度上提高了檢測平臺(tái)的可靠性和高效性。
2.1 BIOS啟動(dòng)監(jiān)測和POST上電自檢
PC104主板的片外總線接口包括其地址信號(hào)線、鎖存地址信號(hào)線和數(shù)據(jù)信號(hào)線,其中包括20根地址信號(hào)線和16根數(shù)據(jù)信號(hào)線。監(jiān)控平臺(tái)實(shí)現(xiàn)該功能基本原理是通過FPGA的信號(hào)采集端口監(jiān)控PC104主板啟動(dòng)時(shí)所有地址信號(hào)線和數(shù)據(jù)信號(hào)線的狀態(tài)來判斷各信號(hào)線的工作狀態(tài)是否正常。實(shí)現(xiàn)總線信號(hào)監(jiān)控功能的具體FPGA程序設(shè)計(jì)流程圖如圖2。
2.1.1 BIOS啟動(dòng)檢測
PC104主板的啟動(dòng)過程包括加電、自舉、核心測試、POST自檢4項(xiàng)。監(jiān)控平臺(tái)上電后開始測試,給PC104主板加電后向其發(fā)出復(fù)位命令,主板進(jìn)入初始化過程及復(fù)位時(shí)長滿足后,釋放復(fù)位信號(hào)。FPGA的地址線監(jiān)控端口開始讀取地址信號(hào)線的數(shù)據(jù),如果讀到的地址線數(shù)據(jù)為0xFFFF0H,則開始執(zhí)行監(jiān)控PC104主板啟動(dòng)碼的程序,并保存總線上的地址和數(shù)據(jù)。
從PC104主板用戶手冊(cè)可知,其在啟動(dòng)時(shí),首先運(yùn)行的通常都是一條“EA”跳轉(zhuǎn)指令,跳轉(zhuǎn)到實(shí)際BIOS ROM的開始地址。這個(gè)初始化搜索地址0xFFFF0H和隨后的CPU重定向的過程一般稱為自舉或引導(dǎo),也可簡稱為BOOT。當(dāng)PC104每次啟動(dòng)時(shí),F(xiàn)PGA采集總線上的地址和數(shù)據(jù)線信號(hào)理想情況下是會(huì)經(jīng)過跳轉(zhuǎn)指令“EA”跳轉(zhuǎn)到某一固定地址單元,開始執(zhí)行程序。分別監(jiān)測兩塊正常運(yùn)行主板的BIOS啟動(dòng)碼實(shí)際被測數(shù)據(jù),如表1所示。
從表中數(shù)據(jù)可以看到,主板正常啟動(dòng)時(shí),從0xFFFFF0地址開始執(zhí)行程序,執(zhí)行的第一條指令是0x5BEA,依此可以判斷該主板的數(shù)據(jù)和地址總線沒有故障。監(jiān)測結(jié)果符合測試要求。
2.1.2 POST上電自檢
PC104主板初始化分為冷啟動(dòng)(初次加電啟動(dòng))和熱啟動(dòng)(通過FPGA發(fā)送復(fù)位命令重啟)。若是冷啟動(dòng),就會(huì)執(zhí)行POST上電自檢;反之,將會(huì)跳過POST上電自檢。遇到錯(cuò)誤時(shí),單字節(jié)的POST碼會(huì)被寫入80H的I/O端口中,系統(tǒng)的初始化也將終止。如果自檢通過,則會(huì)向80H的I/O端口中返回0xFF。主板的自檢過程是判斷PC104主板是否正常的標(biāo)準(zhǔn),所以POST自檢是判斷主板故障信息最重要的模塊之一。當(dāng)FPGA監(jiān)控到PC104主板啟動(dòng)后,開始定時(shí)反復(fù)讀取80H的I/O端口中的信號(hào)。當(dāng)讀取到0xFF時(shí),保存該信號(hào)并返回給上位機(jī)系統(tǒng),提示自檢通過;反之則返回故障指令并提示自檢未通過。通過對(duì)比3塊不同PC104主板的POST監(jiān)控結(jié)果,并參考主板實(shí)際運(yùn)行狀態(tài)可知符合測試要求。當(dāng)測試過程中,如果主板剛啟動(dòng)POST自檢代碼就監(jiān)控到0xFF,同時(shí)起始代碼不再變化,那也可能是主板并沒有運(yùn)行,BIOS自檢并沒有正常開始,應(yīng)該重啟PC104主板,重新測試。POST上電自檢結(jié)果如表2所示。
利用FPGA實(shí)時(shí)采集PC104主板在啟動(dòng)過程中總線檢測的結(jié)果,如圖3所示。從圖中可以很直觀地看出PC104主板在啟動(dòng)過程中所包括的初始化過程和POST自檢結(jié)果,符合其總線測試要求。
2.2 PC104復(fù)位與BIOS模式控制
監(jiān)控平臺(tái)在運(yùn)行過程中,會(huì)要求對(duì)于同一塊PC104主板進(jìn)行反復(fù)測試。由于PC104主板的高集成度,并沒有復(fù)位按鈕,所以需要控制主板上的復(fù)位控制(Reset Switch)引腳進(jìn)行復(fù)位控制。當(dāng)上位機(jī)系統(tǒng)發(fā)出復(fù)位指令后,就需要FPGA給PC104主板的復(fù)位控制引腳發(fā)送一個(gè)延時(shí)復(fù)位命令,并監(jiān)測啟動(dòng)計(jì)時(shí)器。當(dāng)復(fù)位時(shí)間到達(dá)后,釋放復(fù)位信號(hào)。
系統(tǒng)擴(kuò)展模塊利用盛博科技生產(chǎn)的符合PC104總線標(biāo)準(zhǔn)的軟盤驅(qū)動(dòng)控制器驅(qū)動(dòng)裝有測試程序的硬盤,通過測試程序可以監(jiān)控PC104主板的串口和鍵盤等接口的故障信息。為了設(shè)置PC014主板的啟動(dòng)方式以及顯示器狀態(tài)和分辨率等基本硬件信息,需要在啟動(dòng)時(shí)對(duì)其是否進(jìn)入BIOS進(jìn)行控制。通過FPGA的I/O口控制由繼電器和三極管組成的基本控制電路來控制主板的串行口連接器的DTR和RI引腳是否短接來控制其啟動(dòng)過程中是否進(jìn)入BIOS設(shè)置。
2.3 PC104關(guān)鍵信號(hào)測量
PC104主板總線控制信號(hào)線中有4個(gè)關(guān)鍵信號(hào),包括3個(gè)時(shí)鐘信號(hào)和一個(gè)復(fù)位脈沖信號(hào)。
2.3.1 PC104總線時(shí)鐘頻率測量
FPGA常用測量頻率的方法有直接測頻法和等精度測頻法,其中直接測頻法又分為直接計(jì)數(shù)測頻法和測周期測頻法。直接測頻法的測頻精度與被測信號(hào)有關(guān),被測信號(hào)頻率越高,測頻精度越高;實(shí)現(xiàn)簡單,對(duì)硬件資源要求不高。等精度測頻法的測頻精度與被測信號(hào)無關(guān),僅與系統(tǒng)時(shí)鐘信號(hào)有關(guān),系統(tǒng)時(shí)鐘信號(hào)頻率越高,精度越高;相比直接測頻法,等精度測頻法實(shí)現(xiàn)較復(fù)雜,需要FPGA系統(tǒng)的晶振頻率達(dá)到等精度測頻的測頻精度要求。
待測的時(shí)鐘信號(hào)分別是:REFRESH#存儲(chǔ)器刷新信號(hào)線由刷新控制器驅(qū)動(dòng),以表明將執(zhí)行一個(gè)刷新周期;BCLK是由平臺(tái)電路驅(qū)動(dòng)的系統(tǒng)總線時(shí)鐘信號(hào)線,正常運(yùn)行狀態(tài)下頻率為6 MHz~8 MHz(±500 ppm),周期的占空比為45%~55%;OSC振蕩器信號(hào)線是由平臺(tái)電路驅(qū)動(dòng)的時(shí)鐘信號(hào),其頻率為14.318 18 MHz(±500 ppm),周期的占空比為45%~55%。其中OSC不與任何其他總線信號(hào)線同步。最小的待測頻率是6 MHz,可以選用直接計(jì)數(shù)測頻法,測量精度分別可達(dá)10-6和10-7級(jí),滿足該頻率測量1%誤差的技術(shù)要求。直接計(jì)數(shù)測頻法實(shí)現(xiàn)過程簡單,計(jì)算量小,提高了監(jiān)控平臺(tái)的運(yùn)行速度。
2.3.2 PC104總線復(fù)位脈寬測量
脈寬測試是測量PC104主板復(fù)位過程中復(fù)位脈沖的脈寬,復(fù)位信號(hào)線由平臺(tái)電路驅(qū)動(dòng)為有效狀態(tài)。任何接收到復(fù)位信號(hào)的總線資源必須立即使所有輸出驅(qū)動(dòng)器處于三態(tài),并進(jìn)入適當(dāng)?shù)膹?fù)位狀態(tài)。
FPGA監(jiān)測脈寬通常采用脈沖計(jì)數(shù)法,即在待測信號(hào)的高電平或低電平用一個(gè)高頻時(shí)鐘脈沖進(jìn)行計(jì)數(shù),然后根據(jù)脈沖的個(gè)數(shù)計(jì)算待測信號(hào)寬度。待測信號(hào)相對(duì)于計(jì)數(shù)時(shí)鐘通常是獨(dú)立的,其上升、下降沿不可能正好落在時(shí)鐘的邊沿上,因此該法的最大測量誤差為一個(gè)時(shí)鐘周期。監(jiān)控平臺(tái)FPGA采用50 MHz的高頻時(shí)鐘,脈寬測量精度可達(dá)2×10-8,滿足PC104主板監(jiān)測復(fù)位脈寬測量的技術(shù)要求。
2.4 電源測量模塊
電壓監(jiān)控模塊是基于ADI公司生產(chǎn)的AD7417設(shè)計(jì)的,AD7417為十位、四通道模數(shù)轉(zhuǎn)換器,片內(nèi)帶有溫度傳感器。AD7417在降低功耗方面有非凡的性能,其自動(dòng)掉電功能可以使芯片在輸出速率較低時(shí)啟動(dòng)掉電模式來降低功耗。
PC104主板工作電壓是+5 V,有些模塊的工作電壓是+12 V。AD7417擁有四路AD轉(zhuǎn)換通道,可以對(duì)于總線的±5 V、±12 V分別進(jìn)行監(jiān)測。利用FPGA的I/O口和AD7417的SDA、SCL構(gòu)成雙線I2C串行總線接口,通過FPGA控制AD7417芯片分別采集PC104總線上的各路電源電壓,同時(shí)將采集到的結(jié)果進(jìn)行AD轉(zhuǎn)換后上傳到FPGA處理。
電壓測試模塊輸入電路原理圖如圖4所示。總線正電壓采用電阻串聯(lián)分壓的方式得到可被AD7417識(shí)別的模擬電壓值;總線負(fù)電壓經(jīng)過8.2 V的反向穩(wěn)壓二極管后得到正電壓,再分壓為可識(shí)別電壓值。下面以+5 V測試輸入端口為例,介紹實(shí)際電壓值計(jì)算方法。
已知AD7417的參考電壓是內(nèi)部參考電壓2.5 V,假設(shè)實(shí)際被測電壓為V1,AD7417輸入端口IN1被測電壓為V2,F(xiàn)PGA采集到的數(shù)值為x,則:
3 結(jié)論
本項(xiàng)目設(shè)計(jì)的FPGA監(jiān)測程序不僅可以有效地記錄PC104的總線運(yùn)行代碼,還能實(shí)時(shí)提取有效啟動(dòng)代碼和故障監(jiān)控碼,測量總線關(guān)鍵信號(hào)的頻率和脈寬。FPGA程序與上位機(jī)實(shí)時(shí)通信,可根據(jù)上位機(jī)的指令,實(shí)現(xiàn)信息上傳、復(fù)位控制及BIOS模式控制等功能。該設(shè)計(jì)經(jīng)過多次測試,可以有效地檢測到故障PC104主板,并提供具體的故障信息。從檢測結(jié)果可以看出,基于FPGA設(shè)計(jì)的檢測程序在速度和功能上均能滿足PC104主板系統(tǒng)的檢測技術(shù)要求。本設(shè)計(jì)的系統(tǒng)操作方便,擴(kuò)展性強(qiáng),實(shí)用性好。目前應(yīng)用該FPGA程序的PC104監(jiān)控平臺(tái)達(dá)到技術(shù)要求,并通過驗(yàn)收。
參考文獻(xiàn)
[1] 劉廣林.基于PC/104和ARM的工業(yè)控制平臺(tái)設(shè)計(jì)及應(yīng)用[D].武漢:華中科技大學(xué),2010.
[2] 楊勇智,黃勝倫,馮和軍,等.基于PC/104總線的某型飛機(jī)武器控制系統(tǒng)的ATS[J].空軍工程大學(xué)學(xué)報(bào)(自然科學(xué)版),2003,4(3):36-39.
[3] 張仲華,高曉莊,王大鵬.基于PC104的雷達(dá)主控單元檢測維修平臺(tái)[J].現(xiàn)代電子技術(shù),2015,38(3):48-50.
[4] 陳芳.基于PC/104的ARINC 429通訊總線的設(shè)計(jì)與實(shí)現(xiàn)[D].南京:南京航空航天大學(xué),2005.
[5] 陳正捷,何健.基于CPLD和PC104總線規(guī)范的嵌入式計(jì)算機(jī)主板檢測卡設(shè)計(jì)[J].測控技術(shù),2006,2(25):331-336.
[6] 陳巖申,張波,管少輝,等.基于OMAPLl38和FPGA構(gòu)架的PCI04主板檢測系統(tǒng)[J].計(jì)算機(jī)測量與控制,2015,23(5):1512-1514.
[7] 楊海鋼,孫嘉斌,王慰.FPGA器件設(shè)計(jì)技術(shù)發(fā)展綜述[J].電子與信息學(xué)報(bào),2010,32(3):714-727.
[8] 張婉明,李琦,李金海,等.基于ARM與FPGA的便攜式GNSS信號(hào)采集回放系統(tǒng)設(shè)計(jì)[J].電子技術(shù)應(yīng)用,2016,42(10):58-61.
[9] Altera Corporation,Terasic Technologies.DE0 user manual[EB/OL].(2011)[2017]http://DE0.terasic.com.
作者信息:
周治虎1,2,張 凡1,2,武明虎1,2,孔祥斌1,2,劉 聰1,2,代 松1,2
(1.湖北工業(yè)大學(xué) 太陽能高效利用湖北省協(xié)同創(chuàng)新中心,湖北 武漢430068;
2.湖北省電網(wǎng)智能控制與裝備工程技術(shù)研究中心,湖北 武漢430068)