徐軍,張磊,孫軍峰
(卡斯柯信號有限公司 研發(fā)中心,上海200071)
應用在軌道交通行業(yè)的安全計算機是一種苛刻系統(tǒng),需要具有極高的安全性和可靠性,以及具備故障-安全特性。安全計算機不能因為系統(tǒng)中的硬件、軟件、數(shù)據(jù)的系統(tǒng)性或者隨機性失效或故障,導致輸出危險的控制信號。
現(xiàn)代軌道交通行業(yè)中廣泛使用的安全計算機主要分為以歐洲各大公司為主的三取二架構和以日本公司為主的二乘二取二架構[1]。
本文提到的安全計算機需要滿足高安全性和高可靠性的要求,其系統(tǒng)需要達到SIL4安全等級,因此,需要采用相應的安全處理技術來使PFH滿足10-9≤PHF<10-8每小時。要使軌旁安全平臺計算機系統(tǒng)達到SIL4要求,可以在進行系統(tǒng)設計時采取以下措施:
①每個子系統(tǒng)的失效率降低至10-7/h;
②提高各個子系統(tǒng)的診斷覆蓋率DC至99%;
③系統(tǒng)的關鍵組件采用三取二或者二乘二取二架構。
本文中提到的安全計算機采用三取二架構,三取二安全計算機的原理為:正常情況下,三個通道正常運行,以三取二方式進行表決,當一個通道故障或者輸出與其他兩個通道不一致時,該通道被切斷,系統(tǒng)降級為二取二模式,當剩下的兩個通道故障或者輸出不一致時,系統(tǒng)宕機,切斷輸出。
三取二安全計算機可用于CBTC信號控制系統(tǒng)中的軌旁區(qū)域控制器(ZC),ZC實時采集車載ATP主機發(fā)過來的列車位置信息和軌旁計算機聯(lián)鎖的道岔和進路的狀態(tài),進行三取二的運算和表決,形成每列列車的安全移動授權距離并發(fā)送給列車的車載ATP主機,來控制整個CBTC系統(tǒng)列車的安全運行,所以安全計算機對通道之間數(shù)據(jù)傳輸?shù)陌踩?、實時性和可靠性要求非常高。
三取二安全計算機主要由3個計算處理通道Channel A、Channel B和Channel C組成,A、B、C通道中都有一個MPU和HCU,3個通道的 MPU、HCU硬件建構都是相同的,三取二安全計算機架構如圖1所示。
HCU作為高速數(shù)據(jù)通信接口單元,通過網(wǎng)絡通信接口與軌旁監(jiān)控設備以及車載控制器進行通信,軌旁監(jiān)控設備和車載控制器將自身運行狀態(tài)以及采集到的各種信號設備狀態(tài)數(shù)據(jù)傳送給HCU,HCU接收到這些安全數(shù)據(jù)并進行預處理后,通過雙口RAM傳遞給MPU。
圖1 三取二安全計算機架構
MPU為邏輯運算和控制模塊,負責對接收的安全數(shù)據(jù)進行邏輯處理,并產(chǎn)生相應的結果,控制整個系統(tǒng)安全的運行。MPU產(chǎn)生的結果數(shù)據(jù)通過雙口RAM傳遞給HCU,然后HCU發(fā)送給相應的執(zhí)行機構或者外部設備。
JIU主要從外部接收數(shù)據(jù),并對兩個通道的數(shù)據(jù)進行一致性表決,表決通過后的數(shù)據(jù)作為系統(tǒng)的最終輸出結果。
雙口RAM是MPU板和HCU板之間的數(shù)據(jù)交換空間,可以完成大批量、實時的數(shù)據(jù)交換。MPU板與HCU板之間交互的數(shù)據(jù)是安全數(shù)據(jù),必須保證雙口RAM中存取數(shù)據(jù)的完整性、正確性和可靠性。本文針對三取二安全計算機中雙口RAM傳輸數(shù)據(jù)的安全性和實時性要求,設計了一種基于角色輪換的雙口RAM數(shù)據(jù)通信方法。
根據(jù)雙口RAM的工作原理,其左右兩端的處理單元共享一個存儲器空間,它們都可以對雙口RAM存取數(shù)據(jù),并快速地交換數(shù)據(jù),但是出現(xiàn)以下兩種情況時,雙端口存取可能會出現(xiàn)沖突:
①左右兩個端口同時向同一地址單元寫入數(shù)據(jù);
②左右兩個端口同時在同一個地址單元,一個寫入數(shù)據(jù),一個讀出數(shù)據(jù)。
如果發(fā)生以上的情況,會導致雙口RAM中的數(shù)據(jù)丟失,或者兩端不能正常地存儲數(shù)據(jù)。
三取二安全計算機會與其他設備進行網(wǎng)絡通信,數(shù)據(jù)量比較大,通信量峰值可達2 Mb/s,因此,使用雙口RAM進行數(shù)據(jù)交換時,需要考慮如何避免因交互速度不高而出現(xiàn)的數(shù)據(jù)阻塞問題。同時,雙口RAM兩端的控制芯片相互配合來完成數(shù)據(jù)的交互,硬件電路設計復雜,同時對數(shù)據(jù)訪問、地址譯碼、芯片控制的要求也比較高,因而,數(shù)據(jù)交互過程成了系統(tǒng)安全的薄弱環(huán)節(jié),雙口RAM在數(shù)據(jù)交互的過程中可能存在各種故障或者失效,包括系統(tǒng)性失效和硬件隨機失效。
三取二安全計算機使用雙口RAM來進行數(shù)據(jù)通信時,必須滿足以下3個條件:①避免兩端板卡發(fā)生訪問沖突;②提高數(shù)據(jù)交互速度,不影響設備的數(shù)據(jù)通信量;③保證存儲數(shù)據(jù)的完整性、正確性、可靠性。
針對條件①,目前很多科研工作者提出了一些解決雙口RAM出現(xiàn)訪問沖突的方法。
但很多都忽略了對雙口RAM的功能完整性和可靠性的檢查,如果發(fā)生功能故障或者失效,就不能保證安全相關數(shù)據(jù)是正確可靠的。
應用在三取二安全計算機中的雙口RAM,不僅要避免多CPU訪問共享雙口RAM而引起的沖突,解決數(shù)據(jù)通信瓶頸問題,而且應該能夠預防由雙口RAM功能故障或者硬件失效而引起的數(shù)據(jù)失效或丟失,滿足三取二安全計算機的安全性和可靠性要求。
為避免MPU和HCU同時對雙口RAM的同一個內(nèi)存單元進行訪問,本設計沒有采用雙口RAM的中斷或者信號量等機制,而是采用一種基于角色的環(huán)形緩沖收發(fā)機制,將雙口RAM劃分為兩個獨立環(huán)形緩沖區(qū):發(fā)送環(huán)形緩沖區(qū)和接收環(huán)形緩沖區(qū)。發(fā)送環(huán)形緩沖區(qū)負責將MPU數(shù)據(jù)傳遞給HCU,最終發(fā)送給外部設備;HCU從外部設備接收到數(shù)據(jù),放到接收環(huán)形緩沖區(qū),并傳遞給MPU。
本設計將整個128 KB的雙口RAM,分為數(shù)據(jù)交互區(qū)和狀態(tài)交互區(qū),雙口RAM功能角色示意圖如圖2所示。
圖2 雙口RAM功能角色示意圖
其中數(shù)據(jù)交互區(qū)用于MPU與HCU交換通信數(shù)據(jù),其大小為126 KB,將數(shù)據(jù)交換區(qū)分為上下環(huán)形緩沖區(qū)模塊,大小都為63 KB,其中上模塊為發(fā)送環(huán)形緩沖區(qū),下模塊為接收環(huán)形緩沖區(qū)。
發(fā)送環(huán)形緩沖區(qū)分為A、B、C三個區(qū)塊,每個區(qū)塊的大小都為21 KB,每個區(qū)塊輪流地設置三種角色:寫入?yún)^(qū)塊、讀出區(qū)塊、測試區(qū)塊;接收環(huán)形緩沖區(qū)分為D、E、F三個區(qū)塊,每個區(qū)塊的大小都為21 KB,每個區(qū)塊都輪流性地設置3種角色:寫入?yún)^(qū)塊、讀出區(qū)塊、測試區(qū)塊。
狀態(tài)交互區(qū)的大小為2 KB,用作兩個CPU系統(tǒng)交互狀態(tài)信息和告警信息。
三取二安全計算機邏輯運算模塊的運行周期為600 ms,該模塊按照周期進行數(shù)據(jù)接收、數(shù)據(jù)處理、數(shù)據(jù)輸出。
在第n個周期,MPU上的控制邏輯運算模塊從雙口RAM接收到數(shù)據(jù)后,放到邏輯接收緩沖區(qū);從邏輯接收緩沖區(qū)取出n-1個周期的數(shù)據(jù)并進行邏輯處理;將n-2個周期的邏輯處理結果,從邏輯發(fā)送緩沖區(qū)中取出,放到雙口RAM中。
MPU上的控制邏輯運算模塊對安全數(shù)據(jù)進行邏輯處理的時間不超過300 ms,如果超過,就會影響MPU接收或者發(fā)送數(shù)據(jù)。
同樣,MPU上的控制邏輯運算模塊接收、發(fā)送數(shù)據(jù)超過300 ms,也會影響邏輯處理功能。在接收發(fā)送處理階段,300 ms中的280 ms被分為20個發(fā)送接收子周期,每一個子周期的時間為14 ms。
在HCU中,也是按照同樣的運行節(jié)拍從雙口RAM中寫入或讀出數(shù)據(jù)。
MPU與HCU之間交互的數(shù)據(jù),按照預先定義的雙口RAM交換數(shù)據(jù)幀進行。數(shù)據(jù)幀定義略——編者注。
HCU通過網(wǎng)絡接口接收到數(shù)據(jù)后,對數(shù)據(jù)進行預處理,按照交換數(shù)據(jù)幀進行數(shù)據(jù)組包。根據(jù)當前周期號設置“cycle”,同時確定該數(shù)據(jù)包需要被放到D、E、F三個區(qū)塊中寫入?yún)^(qū)塊角色標志“role”,將“flag”設置為1(即為輸入),并交換數(shù)據(jù)幀的其他字段,按照源網(wǎng)絡數(shù)據(jù)包中的信息進行設置。HCU根據(jù)當前周期號確定在接收環(huán)形緩沖區(qū)中的寫入?yún)^(qū)塊后,將組包之后的交換數(shù)據(jù)幀放到寫入?yún)^(qū)塊中。
MPU根據(jù)當前周期號確定在接收環(huán)形緩沖區(qū)中的讀出區(qū)塊后,從讀出區(qū)塊中獲取交換數(shù)據(jù)幀,然后對數(shù)據(jù)幀進行解包,并通過“cycle”、“role”、“flag”、“safety”、“crc”等信息來驗證數(shù)據(jù)幀的唯一性和正確性,正常的數(shù)據(jù)幀被放到邏輯接收緩沖區(qū),異常的數(shù)據(jù)幀被丟棄。
同時MPU根據(jù)當前周期號,確定在接收環(huán)形緩沖區(qū)中的測試區(qū)塊,利用內(nèi)存檢測算法對測試區(qū)塊進行雙口RAM內(nèi)存區(qū)塊檢測。
在當前周期的600 ms內(nèi),MPU進行邏輯運算處理在300 ms內(nèi)完成后,MPU從邏輯發(fā)送緩沖區(qū)中讀取上個周期的邏輯處理結果數(shù)據(jù),并對結果數(shù)據(jù)進行預處理,按照交換數(shù)據(jù)幀進行數(shù)據(jù)組包。根據(jù)當前周期號設置“cycle”,同時確定該數(shù)據(jù)包需要被放到A、B、C三個區(qū)塊中寫入?yún)^(qū)塊角色標志“role”,將“flag”設置為1(即為輸入),并交換數(shù)據(jù)幀的其他字段,按照源網(wǎng)絡數(shù)據(jù)包中的信息進行設置。MPU根據(jù)當前周期號,確定在發(fā)送環(huán)形緩沖區(qū)中的寫入?yún)^(qū)塊后,將組包之后的交換數(shù)據(jù)幀放到寫入?yún)^(qū)塊中。
HCU根據(jù)當前周期號,確定在接收環(huán)形緩沖區(qū)中的讀出區(qū)塊后,從讀出區(qū)塊中獲取交換數(shù)據(jù)幀,然后對數(shù)據(jù)幀進行解包,并通過“cycle”、“role”、“flag”、“safety”、“crc”等信息來驗證數(shù)據(jù)幀的唯一性和正確性,驗證數(shù)據(jù)幀的正確性。異常的數(shù)據(jù)幀被丟棄,正常的數(shù)據(jù)幀按照網(wǎng)絡數(shù)據(jù)幀進行組包,并通過網(wǎng)絡發(fā)送給軌旁設備或者車載控制器。
同時HCU根據(jù)當前周期號,確定在發(fā)送環(huán)形緩沖區(qū)中的測試區(qū)塊,利用內(nèi)存檢測算法對測試區(qū)塊進行雙口RAM內(nèi)存區(qū)塊檢測。
雙口RAM的發(fā)送與接收環(huán)形緩沖區(qū)的3個區(qū)塊,在任意一個周期都只能處于讀出、寫入、測試3種中的某一種角色,而且這3個角色進行周期輪換,區(qū)塊角色輪換表略——編者注。
MPU與HCU通過雙口RAM區(qū)塊角色進行數(shù)據(jù)交互的步驟略——編者注。
MPU與HCU通過相同的外部時鐘中斷來驅(qū)動數(shù)據(jù)處理軟件模塊的運行,MPU與HCU在對雙口RAM進行訪問時可以做到同步、流水線作業(yè)。在同一個處理周期內(nèi),發(fā)送環(huán)形緩沖區(qū)或者接收環(huán)形緩沖區(qū)中任何一個區(qū)塊都有明確固定的角色,MPU板和HCU板不會同時訪問操作相同區(qū)塊,只有一個板卡對特定區(qū)塊進行訪問,從而解決了雙口RAM的訪問沖突問題,不需要另外采取硬件仲裁、軟件仲裁或者信號量交互等手段。
應用在三取二安全計算機中雙口RAM可能存在一些功能性缺陷。無論門級電子元件的制造缺陷,還是板卡電路級的設計錯誤,都可能導致雙口RAM的存儲功能性故障,從而降低其功能完整性和可靠性。雙口RAM存儲單元具有多種類型的故障略——編者注。
實際項目應用中,開發(fā)人員需要關注雙口RAM存儲功能的完整性和可靠性,可以通過存儲器檢測算法來對其進行檢測和診斷,能夠及時地發(fā)現(xiàn)和定位雙口RAM的存儲功能故障,并及時采取相應的措施,避免因雙口RAM存儲單元的數(shù)據(jù)錯誤導致的嚴重后果。
本文采用硬件BIST架構(HBIST),在硬件電路中設計專門的硬件邏輯部件來對內(nèi)存進行測試,其圖形測試向量有專門的硬件電路模塊生成,自動對內(nèi)存的各種功能故障進行測試,硬件架構內(nèi)建測試的內(nèi)存故障測試覆蓋率高,而且測試速度快,設計選取的圖形測試向量主要用于覆蓋高層次的內(nèi)存故障,如NPSF、CF、DRF。
HBIST利用March-TB內(nèi)存測試算法對系統(tǒng)的內(nèi)存進行測試,使用硬件HBIST電路來生成圖形測試向量,并由硬件HBIST電路來進行測試,HBIST測試電路模型略——編者注。
在硬件BIST處于非工作狀態(tài)時,會拉低BIST的時鐘信號,BIST電路進入休眠狀態(tài)。當系統(tǒng)在夜間進入非繁忙狀態(tài),會產(chǎn)生BIST_MODE信號,來激活BIST電路的BIST模式控制器,并拉高時鐘信號,BIST模式控制器發(fā)出控制信號,會接管對整個RAM的訪問控制,并對RAM開始進行測試。
BIST模式控制器控制測試向量產(chǎn)生器、地址與數(shù)據(jù)生成邏輯工作,產(chǎn)生相應的測試向量對RAM進行測試。同時,并將測試結果在BIST結果比較器中進行比較,如果發(fā)現(xiàn)異常,退出BIST_MODE模式,通知MPU測試異常,MPU產(chǎn)生相應的告警和錯誤處理。
HBIST在進行內(nèi)存檢測時一共具有4種狀態(tài):idle、test、error、wait。idle表示處于等待測試數(shù)據(jù)進行測試的空閑狀態(tài);test表示獲得測試向量對相應內(nèi)存單元進行測試;error表示檢測到內(nèi)存單元出錯;wait表示處于休眠狀態(tài),等待CPU模塊激活HBIST。
HBIST狀態(tài)機的狀態(tài)轉(zhuǎn)移圖略——編者注。
HBIST狀態(tài)機的VHDL程序略——編者注。
在測試的過程中,通過植入內(nèi)存故障,并用邏輯分析儀獲取出錯信號,硬件BIST模塊檢測內(nèi)存出錯圖如圖3所示。圓圈里面的測試結果與期望結果不一致,內(nèi)存檢測出錯。
圖3 硬件BIST模塊檢測內(nèi)存出錯圖
雙口RAM是雙端口SRAM芯片,本設計采用CY7C028V-15AXI,讀寫速度最高為15 ns,數(shù)據(jù)容量為64 K×16位。
雙口RAM連接HCU板的一端為MPC8247的LOCAL BUS總線,連接MPU板的一端為CPCI總線橋接芯片的LOCAL BUS總線,HCU可以直接通過LOCAL BUS總線訪問雙口RAM,而MPU板通過PCI總線訪問,其中還有控制信號,如片選、讀寫、中斷、BUSY信號等。雙口RAM交互電路圖略——編者注。
在MPU和HCU中,通過設計的軟件模塊,來完成雙口RAM的訪問操作。雙口RAM的MPU上軟件交互關鍵代碼略——編者注。
雙口RAM存儲器區(qū)段數(shù)據(jù)交互效率和檢測性能參數(shù)見表1。
表1 雙口RAM交互性能表
分析了應用在軌道交通行業(yè)中的三取二安全計算機的雙口RAM數(shù)據(jù)通信要求,并在實際的項目設備開發(fā)中,設計了基于角色輪換和自檢技術的數(shù)據(jù)通信方案,可以滿足三取二安全計算機數(shù)據(jù)通信的安全性、可靠性和實時性要求。
編者注:本文為期刊縮略版,全文見本刊網(wǎng)站www.mesnet.com.cn。
[1]鄭升,馬連川,胡華,等.改進型鐵路信號安全計算機平臺結構[J].中國鐵路,2014(3):30-33.
[2]燕飛,唐濤.軌道交通信號系統(tǒng)技術的發(fā)展和研究現(xiàn)狀[J].中國安全科學學報,2005,15(6):94-99.
[3]吳曉峰,楊旭雷,張浩.雙口RAM在DSP人機接口中的應用[J].微型機與應用,2002(10):24-25.
[4]彭峋.基于雙口RAM技術的雙CPU系統(tǒng)間數(shù)據(jù)通信[J].工業(yè)控制計算機,2013,26(6):13-14.
[5]張有為,汪永紅,劉鐵銘,等.基于雙口RAM的雙CPU控制系統(tǒng)設計[J].微計算機信息,2005,21(10-1):45-46.
[6]張遵偉,曹寶香,聶勝偉.基于雙口RAM的冗余架構同步技術研究[J].計算機工程,2012,38(18):221-224.
[7]趙躍龍,張江陵,汪振華.一種新穎的雙口RAM通訊方案[J].計算機工程與科學,1996,18(2):79-81.
[8]李震.一種基于雙口RAM的環(huán)形數(shù)據(jù)緩存系統(tǒng)[J].計算機技術與發(fā)展,2010,20(1):201-204.
[9]張銅,成本茂,張小峰.基于 MARCH算法的SRAM內(nèi)建自測試設計[J].計算機與現(xiàn)代化,2013,216(8):99-101.
[10]任愛玲,凌明,吳光林,等.一種用于嵌入式內(nèi)存測試的高效診斷算法[J].應用科學學報,2005,23(2):178-182.