利用FPGA新特性實(shí)現(xiàn)高可靠性汽車系統(tǒng)設(shè)計(jì)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
目前,汽車中使用的復(fù)雜電子系統(tǒng)越來越多,而汽車系統(tǒng)的任何故障都會(huì)置乘客于險(xiǎn)境,這就要求設(shè)計(jì)出具有“高度可靠性”的系統(tǒng)。同時(shí),由于FPGA能夠集成和實(shí)現(xiàn)復(fù)雜的功能,因而系統(tǒng)設(shè)計(jì)人員往往傾向于在這些系統(tǒng)中采用 FPGA。不過,將FPGA用于汽車系統(tǒng)時(shí)需要關(guān)注兩個(gè)主要問題:確保用于FPGA初始化的配置代碼正確無誤;防止器件工作時(shí)SRAM的內(nèi)容遭到損壞。只有這些問題得到徹底解決,F(xiàn)PGA才能成為高度可靠汽車系統(tǒng)的組成部分。幸運(yùn)的是,目前通過AEC-Q100認(rèn)證的FPGA已加入先進(jìn)的特性,能夠有效解決上述問題。本文介紹的幾個(gè)方案可用于解決保護(hù)初始化配置和防止?jié)撛诘腟RAM內(nèi)容損壞的問題。
保護(hù)FPGA的配置
隨著系統(tǒng)上電,基于SRAM的FPGA將從外部源加載其配置。引導(dǎo)源可以是存儲(chǔ)器件,如串行EEPROM或Flash ,也可以是智能器件,如微控制器。針對(duì)初始化位流,所有的FPGA都具有某種類型的循環(huán)冗余校驗(yàn)(CRC),在啟動(dòng)結(jié)束時(shí)進(jìn)行測試,檢驗(yàn)傳送是否完整。如果在位流中檢測到一個(gè)差錯(cuò),F(xiàn)PGA將無法初始化。這可以防止系統(tǒng)產(chǎn)生錯(cuò)誤的(也可能是危險(xiǎn)的)操作。大多數(shù)的FPGA將通過對(duì)一個(gè)外部引腳置位,來告知系統(tǒng)控制器初始化失敗,請(qǐng)求另一個(gè)初始化序列,以期取得配置成功。在遇到以下幾種情況時(shí),會(huì)發(fā)生初始化位流的損壞情況:
* 引導(dǎo)存儲(chǔ)器的硬件故障
* 存儲(chǔ)器內(nèi)容保存的問題
* 蓄意篡改
* 存儲(chǔ)器內(nèi)容被擦除
* 電氣噪聲
利用FPGA設(shè)計(jì)高可靠性的汽車系統(tǒng)時(shí),為了正確處理這些情況,必須遵循以下四個(gè)基本步驟:
第一步是使用具有片上閃存的非易失性SRAM FPGA。這改變了從外部存儲(chǔ)器引導(dǎo)配置載入FPGA內(nèi)部的方式。采用將引導(dǎo)源移入同一塊芯片的方法消除了許多常見的初始化失敗模式。這種類型的集成設(shè)計(jì)還提升了初始化速度,可在即時(shí)啟動(dòng)系統(tǒng)中使用這種FPGA。
第二步是添加一個(gè)可靠的外部自行引導(dǎo)器件(圖1) 。FPGA的一個(gè)主要特點(diǎn)是能夠現(xiàn)場重復(fù)編程。對(duì)汽車系統(tǒng)而言,這一特性允許下載新的程序,用于授權(quán)的現(xiàn)場更新,修復(fù)設(shè)計(jì)錯(cuò)誤或添加額外的功能。不過,在傳輸和對(duì)存儲(chǔ)器編程期間,數(shù)據(jù)流可能被損壞,而且損壞的數(shù)據(jù)流會(huì)阻止正確的FPGA初始化。為了應(yīng)對(duì)更新過程中的損壞,在外部存儲(chǔ)器件中已復(fù)制了初始化代碼,稱為“golden”的廠家備份。即便有任何問題,存儲(chǔ)在內(nèi)部存儲(chǔ)器的配置代碼都可以使該系統(tǒng)得到恢復(fù)。通過添加第二個(gè)引導(dǎo)器件,就能夠保證廠家備份,或至少可以具有“間接恢復(fù)”系統(tǒng)的功能。
圖1 FPGA雙引導(dǎo)系統(tǒng)
第三步是保護(hù)存儲(chǔ)在外部存儲(chǔ)器件中的位流備份,采用位流加密來保護(hù)引導(dǎo)配置代碼(圖2)。許多車用FPGA系列支持128位AES位流加密,以防止逆向工程和未經(jīng)授權(quán)地對(duì)設(shè)計(jì)進(jìn)行更改。在外部引導(dǎo)器件中存儲(chǔ)著加密的配置代碼,可以在初始化時(shí)譯碼,然后再移入SRAM單元。同樣的加密機(jī)制也可以用來將一個(gè)新的配置代碼載入內(nèi)部閃存。
圖2 外部引導(dǎo)的AEC譯碼或Flash編程位流。
第四個(gè)也是最后一個(gè)步驟是“鎖定”FPGA,以防止未經(jīng)許可進(jìn)入存儲(chǔ)配置。用非易失性FPGA內(nèi)部的可編程寄存器控制對(duì)內(nèi)部配置存儲(chǔ)器的訪問。可能的組合情況如下:1)解鎖。 2)可解密鎖定-通過編程接口提供的128位密鑰能夠使器件解鎖。3)永久鎖定-器件被永久鎖定。
為了進(jìn)一步加強(qiáng)器件的安全性,可用一次性可編程(OTP)模式。一旦器件設(shè)置成這個(gè)模式,就不可能擦除閃存的內(nèi)容或?qū)ζ骷俅尉幊獭?
選擇車用級(jí)的通過AEC - Q100認(rèn)證的非易失性FPGA時(shí),審查制造商的非易失閃存的耐久性和數(shù)據(jù)保存指標(biāo)是很重要的,這將確保車輛運(yùn)行時(shí)和處于貯藏溫度時(shí)FPGA都能正確保存其存儲(chǔ)器內(nèi)容。例如,LatticeXP2是唯一非易失性的通過AEC - Q100認(rèn)證的SRAM /Flash FPGA,它能滿足所有這些系統(tǒng)的要求。LatticeXP2的片上閃存允許大范圍地對(duì)整個(gè)器件進(jìn)行存儲(chǔ)器測試,確保即使器件在最高溫度下連續(xù)工作,至少10年內(nèi)存儲(chǔ)器的內(nèi)容都不會(huì)丟失。
SRAM軟錯(cuò)誤損壞檢測(SED)
來自宇宙射線的中子和封裝材料中的帶電α粒子的輻射會(huì)造成軟錯(cuò)誤,它會(huì)改變存儲(chǔ)單元的存儲(chǔ)內(nèi)容。這種現(xiàn)象首先成為DRAM中的一個(gè)問題,要求能對(duì)高可靠性應(yīng)用中的大容量存儲(chǔ)系統(tǒng)進(jìn)行錯(cuò)誤檢測和糾錯(cuò)。由于器件的尺寸不斷縮小,對(duì)某些系統(tǒng)而言,SRAM中的軟錯(cuò)誤概率已相當(dāng)大。
用于汽車應(yīng)用的高性能FPGA將邏輯配置數(shù)據(jù)存儲(chǔ)在SRAM單元。由于FPGA中SRAM單元數(shù)量和密度的增加,軟錯(cuò)誤改變系統(tǒng)可編程邏輯行為的概率也隨之增加。設(shè)計(jì)者已經(jīng)采取了各種辦法來解決該問題,其中大部分涉及用戶用于設(shè)計(jì)的知識(shí)產(chǎn)權(quán)(IP)核。雖然這種方法提供了一個(gè)解決方案,但它也占用了寶貴的可編程資源,并可能會(huì)影響性能。然而,這些缺陷是可以避免的。例如,LatticeXP2 FPGA內(nèi)有用硬件實(shí)現(xiàn)的軟錯(cuò)誤檢測器,它不會(huì)影響系統(tǒng)性能或器件的熱耗散。
在這些非易失性FPGA中的SED硬件有一個(gè)訪問FPGA SRAM配置存儲(chǔ)器的接口,還有SED控制器電路和一個(gè)存儲(chǔ)當(dāng)前位流CRC的32位寄存器(圖3)。SED功能需要使用幾個(gè)I/O引腳,要占用4個(gè)專用的輸入引腳和4個(gè)專用的輸出引腳。這些引腳用于使能和啟動(dòng)SED檢測,還能指明SED的工作狀態(tài)。
圖3、LatticeXP2 FPGA具有SRAM軟錯(cuò)誤監(jiān)測功能。
SED工作期間,控制電路從FPGA的SRAM配置存儲(chǔ)器讀取串行數(shù)據(jù)流數(shù)據(jù),并計(jì)算CRC。然后,計(jì)算出的CRC與預(yù)期的存儲(chǔ)在32位寄存器中的CRC進(jìn)行比較。如果這兩個(gè)CRC值不匹配,說明配置存儲(chǔ)器中有差錯(cuò),并設(shè)置一個(gè)外部信號(hào)為高電平,指明有差錯(cuò)。對(duì)應(yīng)出錯(cuò)信號(hào),用戶可以有幾種選擇:忽略這個(gè)差錯(cuò);使用外部處理器記錄這個(gè)差錯(cuò);或從原來的引導(dǎo)器件重新載入SRAM配置。
LatticeXP2 FPGA能夠滿足所有這些系統(tǒng)的要求。其片上閃存允許統(tǒng)一的系統(tǒng)測試,保證器件即使在最高溫度下連續(xù)工作,最少10年不會(huì)引起存儲(chǔ)內(nèi)容的丟失或產(chǎn)生系統(tǒng)故障。此外,雙引導(dǎo)功能和硬件實(shí)現(xiàn)的SED檢測功能對(duì)SRAM內(nèi)容損壞提供了安全保證,不會(huì)影響器件性能或用戶邏輯的運(yùn)行。
應(yīng)用上述四種配置保護(hù)技術(shù)的FPGA設(shè)計(jì)具有高度可靠的啟動(dòng)和初始化功能,可以保護(hù)更新,阻止下載、刪除或修改初始化配置的企圖。此外,整合SED管理邏輯的設(shè)計(jì)還增加了保護(hù)措施,防止由帶電粒子導(dǎo)致的改變運(yùn)行配置的情況。將啟動(dòng)和SED保護(hù)進(jìn)行整合的方法使汽車系統(tǒng)設(shè)計(jì)人員能夠構(gòu)建完整可靠的FPGA設(shè)計(jì),同時(shí)不必?fù)?dān)心配置被蓄意篡改或環(huán)境對(duì)器件造成的損壞。