背景
高速鐵路的發展對信號設備性能、穩定性、安全性提出了更高的要求。其中安全性中故障導向安全是設備設計開發中首先要遵循的原則,盡早發現,盡早防范是信號設備安全設計中需考慮的問題。CPU作為控制設備中核心單元一旦運算出錯很可能會導致災難性后果。二取二系統中雙CPU校核可有效避免單CPU故障引發的災難性后果。雙CPU校核實現方式包括軟件比較和硬件比較。軟件比較指CPU通過通信等方式得到對方的數據后各自進行比較,如果比較不一致則通過控制其他外圍單元切斷輸出單元的對外輸出使系統導向安全。硬件比較指通過第三方硬件實現兩個CPU總線數據的實時比較,不一致時通過第三方硬件可直接切斷輸出單元的供電,無需CPU參與任何控制(此時故障的CPU可能已不能正常控制其它外圍單元)。現場可編程邏輯陣列(Field Programmable Gate Assay,FPGA)通過硬件描述語言進行編程,可完成大規模實時邏輯處理和高速總線接口處理。總線校核需要進行大數據量、快速邏輯處理因此很容易發揮其長處。二取二架構的控制系統安全性高于單機系統因而在鐵路系統中得到廣泛應用。面向二取二架構的雙CPU總線數據比較,我們開發了基于FPGA二取二總線數據比較器,比較器在CPU每個控制周期內完成對總線數據信息的實時校核,如果出現不一致或者非法信息及時切斷驅動單元的供電,在最短時間內使系統導向安全側。

圖1 比較器結構圖

圖2 FPGA1和FPGA2與主、從CPU板的軟件接口
系統方案及硬件實現
比較器通過兩條總線與兩塊CPU板相連實現總線數據傳輸和比較相關狀態的交互,輸出信號驅動板外安全繼電器模塊實現對驅動單元供電的控制。比較器結構如圖1所示,比較器由如下部分構成:FIFO控制器、FPGA單元、安全動態電路、雙繼電器切換單元、LED指示、地址設置單元。FIFO控制器和FPGA單元由獨立的兩套構成二取二結構,與二取二CPU板相接合。對于二取二比較器的每一部分有獨立的LED指示和總線地址設置單元。安全動態電路和雙繼電器切換單元本身為二取二結構。
數據比較單元
數據比較單元實現兩個CPU板總線數據的同步、獨立安全校核,由雙套FIFO控制器和雙套FPGA單元構成。FIFO控制器用于實現主、從CPU板中總線數據到兩個FPGA的傳輸,其數據存儲空間為8192字節,可完成8k字節以下任意大小的總線數據校核。50萬門級的FPGA通過內部數字時鐘管理模塊(Digital Clock Manager,DCM)將外部時鐘倍頻到40MHz以完成總線數據的高速校核處理。
FPGA采集對應FIFO的狀態后反饋給對應CPU板,主、從CPU板經過判斷后下達控制信息到對應FPGA,通過FPGA實現對FIFO的讀寫控制。雙套FPGA同步接收FIFO中數據進行比較和CRC校驗,同步記錄比較結果。兩個FPGA的同步工作通過交互信息實現,包括:開始比較信息、數據比較結果信息、驅動脈沖信號。雙FPGA獨立進行數據校核,只有兩個FPGA數據校核都通過時比較器才判為校核通過,增強了比較器的安全性。
安全動態電路
安全動態電路接收兩個FPGA輸出動態驅動脈沖,并對兩路脈沖進行“鑒相”。如果兩路脈沖位相相反,安全動態電路輸出信號到雙繼電器切換單元。
安全動態電路中開關延時保護電路首先對FPGA1和FPGA2輸出互為反向驅動脈沖進行延時整形,防止由于元件老化導致延時差異而出現兩路脈沖同時為高電平的情況,保護后級動態充放電電路。光耦電路將FPGA輸出低電壓數字信號與動態充放電電路的高電壓模擬信號隔離開。動態鑒相電路對兩路處理后的脈沖進行“鑒相”,如果兩個脈沖出現同時為高的情況或者同時為低的情況,動態鑒相電電路將停止對外輸出,只有在兩路脈沖位相相反時,動態充放電電路才輸出具有一定功率的直流信號驅動雙繼電器切換單元。
回讀電路對動態鑒相電路中電晶體管進行檢測,如果晶體管損壞故障(包括短路、斷路、漏流增大等)回讀信號將出現異常。回讀信號由兩個FPGA進行實時采集,如果回讀信號異常,兩個FPGA將停止輸出驅動脈沖同時將回讀錯誤的故障信息反饋給對應CPU板。
雙繼電器切換單元
雙繼電器切換單元由兩個繼電器和兩個可控開關構成。每個繼電器與可控開關串聯后構成并聯結構與安全動態電路輸出端相連。開關由主、從FPGA輸出兩路控制脈沖控制。
總線數據校核通過且沒有出現回讀錯,主、從兩個FPGA即輸出兩路互為反相的控制脈沖到雙繼電器切換單元;兩FPGA輸出兩路驅動脈沖到安全動態電路,安全動態電路輸出信號驅動雙繼電器切換單元,實現比較器對外輸出。雙繼電器切換單元對外輸出需要兩路驅動脈沖和兩路控制脈沖同時工作,而控制脈沖獨立于驅動脈沖,與之無相位關聯,這增強了雙繼電器切換單元的安全性。
驅動脈沖和控制脈沖停止輸出后雙繼電器切換單元將在50ms內切斷比較器對外輸出,如果出現繼電器接點粘連或者接點卡殼情況,切換單元將停止對外輸出,從而導向安全側。
其他部分
設計兩套LED用于實現對應FPGA工作狀態指示、數據比較一次錯誤指示、數據比較三次錯誤指示、驅動脈沖指示、繼電器切換指示等功能。
對總線地址進行設置,比較器地址總線從第5位到第10位可設,總線地址不合法比較器不工作。

圖3 FPGA數據比較狀態機
軟件實現
比較器軟件包括FPGA1軟件和FPGA2軟件兩套,分別運行于比較器的兩個FPGA中。兩套軟件的開發環境都使用ISE 9.2i,都采用硬件描述語言Verilog HDL編寫。程序下載后,比較器上電后程序自動加載運行。
每套FPGA軟件實現的功能包括:與對應CPU交互信息功能;獨立進行數據比較功能;輸出控制脈沖和驅動脈沖功能;實現對安全動態電路的實時檢測功能。
與主、從CPU板交互信息功能
FPGA1和FPGA2與主、從CPU板交互信息包括接收CPU發送的控制命令和向對應CPU反饋比較狀態信息,交互過程如圖2所示:主、從CPU板向對應FPGA發送復位FIFO命令后FPGA1和FPGA2分別將FIFO1和FIFO2復位。
FPGA1和FPGA2讀取對應FIFO的狀態,并將FIFO狀態反饋給對應CPU。主、從CPU板根據對應FIFO的狀態信息經過判斷處理后發送數據。主、從CPU分別向對應FPGA發送數據比較命令。兩個FPGA交互開始比較命令信息后開始數據比較。數據比較結束后FPGA記錄一次數據比較錯誤狀態、三次數據比較錯誤狀態、回讀錯誤狀態、錯誤數據、錯誤數據位置信息并反饋給對應CPU板。
數據校核功能
兩個FPGA設計功能相同的狀態機實現數據接收、比較等過程。
復位時,FPGA狀態處于初始化狀態;
當CPU發送總線數據后,FPGA狀態從初始化狀態進入接收數據狀態;
在接收數據狀態下,如果CPU下達開始比較命令,FPGA狀態將從接收數據狀態進入讀數據狀態,并跳轉到數據比較狀態;
在讀數據狀態和數據比較狀態下接收兩個FIFO的一個字節數據并進行數據比較和CRC校驗。如果FIFO數據沒有接收完將重新回到讀數據狀態,否則進入比較完成狀態。如果數據比較出現三次不一致將進入鎖死狀態;
在比較完成狀態下如果CPU繼續發送數據,則進入接收數據狀態。如果任何一方數據CRC校驗失敗,則計為一次錯,如果出現三次校驗錯將進入鎖死狀態;
在鎖死狀態下FPGA將保持在該狀態不變,必須上電復位后才可以跳出此狀態,進行正常數據接收、比較。
FPGA狀態控制圖如圖3所示。
FPGA1和FPGA2同步接收FIFO中的數據并進行數據比較,如果數據比較不一致,則將對應的一次數據比較錯誤計數加1,將一次錯誤信息反饋給對應CPU板,點亮一次比較錯誤指示燈。如果連續三次數據比較不一致,將三次錯誤信息反饋給對應CPU板,同時點亮三次比較錯誤指示燈。
運行在40MHz的FPGA在完成單字節總線數據校核耗時100ns,完成8k字節數據校核耗時0.8ms。
脈沖輸出功能
上電初始化結束后,在沒有三次錯和回讀錯時,FPGA1輸出一路控制脈沖到雙繼電器切換單元;在沒有三次錯和回讀錯時,FPGA2輸出反向的控制脈沖到雙繼電器切換單元。如果FPGA1數據校核通過且沒有回讀錯將輸出驅動脈沖信號;如果FPGA2數據校核通過且沒有回讀錯將輸出反相驅動脈沖。任何一個FPGA數據校核出現三次錯將停止驅動脈沖和控制脈沖輸出。
安全動態電路自診斷及安全處理功能
比較器需要具備安全動態電路自診斷功能,以及時發現電路故障并導向安全側。每個FPGA在輸出驅動脈沖周期采集回讀信號。如果發現回讀信號異常,相應FPGA內部回讀錯誤計數器累加;當發現連續5次回讀錯誤時,相應FPGA停止對外輸出脈沖,并將回讀錯誤信息反饋給對應CPU板。
結論
比較器設計遵循歐標EN50128,EN50129和EN50126設計流程,硬件和軟件設計滿足故障安全原則。比較器可在1ms內完成8k字節的數據校核,滿足高速鐵路信號中大數據量數據校核的需求。數據比較不一致可在50ms內切斷比較器對外輸出。比較器比較相關信息包括比較錯誤信息(一次錯誤、三次錯、回讀錯),錯誤數據信息,錯誤數據位置信息可反饋給CPU,便于故障分析。該比較器安全性高、可用性強,作為二取二硬件平臺的重要部件已用于現場。