??? 一個(gè)復(fù)雜的系統(tǒng)設(shè)計(jì)擁有5年或10年市場生命的日子已經(jīng)一去不復(fù)返了。系統(tǒng)要求正以爆炸式的速度在改變。I/O" title="I/O">I/O標(biāo)準(zhǔn)、數(shù)據(jù)通信標(biāo)準(zhǔn)、系統(tǒng)性能要求及對系統(tǒng)功能性的需求呈現(xiàn)出前所未有的快速變化。系統(tǒng)設(shè)計(jì)者有以下兩種選擇:
??? (1)當(dāng)系統(tǒng)在市場上不再具有競爭力時(shí),只有重新設(shè)計(jì)具有確定功能的系統(tǒng)以滿足新的市場要求。
?? ?(2)設(shè)計(jì)基于FPGA的系統(tǒng)并使之能不斷更新,可采用在系統(tǒng)重構(gòu)" title="重構(gòu)">重構(gòu)或者現(xiàn)場邏輯更新。延長目前系統(tǒng)的壽命,擴(kuò)展已安裝在現(xiàn)場設(shè)備的功能和性能,排除故障而不需要改動(dòng)硬件。無需停止系統(tǒng)的運(yùn)行,就能以可靠和安全的方式重構(gòu)已應(yīng)用在現(xiàn)場的FPGA。充分利用FPGA能賦予產(chǎn)品新生命的特點(diǎn)。
??????????????????????????????????????? 現(xiàn)實(shí)世界的需求
??? 越來越多的系統(tǒng)設(shè)計(jì)者正在利用FPGA的重構(gòu)功能,在開始系統(tǒng)設(shè)計(jì)和開發(fā)之后,解決各種問題,擴(kuò)展系統(tǒng)的生命周期和功能。例如一個(gè)主流服務(wù)器供應(yīng)商應(yīng)該可以支持其FPGA現(xiàn)場邏輯更新硬件系統(tǒng)。開發(fā)、應(yīng)用和維護(hù)成千上萬個(gè)分布在各地的服務(wù)器并進(jìn)行遠(yuǎn)距離的系統(tǒng)更新是一個(gè)基本要求?,F(xiàn)在技術(shù)人員不再需要從系統(tǒng)中替換或更新FPGA。所有的工作都可以遠(yuǎn)距離地進(jìn)行而不需要技術(shù)人員親臨現(xiàn)場。
??? 一家中國領(lǐng)先的電信供應(yīng)商(提供基站、網(wǎng)絡(luò)服務(wù)器、路由器等產(chǎn)品)要求能夠支持遠(yuǎn)距離的現(xiàn)場更新來排除故障,并增加新的特性和服務(wù)。終端客戶要求所有系統(tǒng)在更新時(shí)的系統(tǒng)停機(jī)時(shí)間小于50ms。
??? 基于PC的產(chǎn)品、廣播視頻附加卡的制造商利用FPGA具有現(xiàn)場邏輯更新的特點(diǎn)來實(shí)現(xiàn)視頻算法和提供增強(qiáng)的特性并支持用戶對設(shè)計(jì)進(jìn)行更新。制造商所關(guān)注的是遠(yuǎn)距離更新過程" title="更新過程">更新過程的可靠性。嵌入在這些視頻算法中的知識(shí)產(chǎn)權(quán)(IP)需要嚴(yán)密保護(hù),因此現(xiàn)場邏輯更新期間FPGA的代碼也是非常重要的。
?????????????????????????????????????FPGA現(xiàn)場邏輯更新需求
??? 為了有效地進(jìn)行FPGA的現(xiàn)場邏輯更新,有4個(gè)方面的基本要求:
?? ?(1)嵌入式編程。系統(tǒng)微處理器必須能對FPGA編程。系統(tǒng)微處理器能夠?qū)PGA供應(yīng)商提供的C代碼程序進(jìn)行編譯并執(zhí)行,于是微處理器提供外界與目標(biāo)FPGA的通信鏈接(通過Ethernet、Internet、RF和陸線)。微處理器可以訪問新的FPGA編程文件,下載這個(gè)新的位流至專門的存儲(chǔ)器芯片,或者至FPGA的片上Flash存儲(chǔ)器,然后控制FPGA本身的重構(gòu)。
?? ?(2)最小的系統(tǒng)停機(jī)時(shí)間。越來越多的用戶對“5個(gè)9”(99.999%)系統(tǒng)感興趣。FPGA被再次編程時(shí),系統(tǒng)是不工作的,因此這個(gè)過程必須盡可能地短。這是FPGA系統(tǒng)設(shè)計(jì)者必須仔細(xì)研究的問題。對基于SRAM的FPGA,從專門的SPI Flash或E2PROM引導(dǎo)存儲(chǔ)器下載新的位流所需的時(shí)間大約是數(shù)十到數(shù)百毫秒。如果設(shè)計(jì)者利用單片、非易失" title="非易失">非易失、具有專門Flash配置存儲(chǔ)器的基于SRAM的FPGA,最長的時(shí)間是2ms。
?? ?引導(dǎo)PROM(基于SRAM的FPGA)的實(shí)際配置或者片上Flash存儲(chǔ)器(SRAM/Flash FPGA)將采用后臺(tái)模式,同時(shí)系統(tǒng)仍然工作,因此實(shí)際下載新位流到FPGA SRAM所需的時(shí)間唯一決定了在用新的配置工作之前,系統(tǒng)將停止工作多久。
?? ?(3)必須控制I/O的狀態(tài)。FPGA的輸出通常驅(qū)動(dòng)系統(tǒng)內(nèi)的關(guān)鍵控制信號(hào)(芯片復(fù)位、電源使能等)。FPGA配置期間,非常關(guān)鍵的是這些信號(hào)仍然驅(qū)動(dòng)在正確的狀態(tài)。這些信號(hào)中的干擾會(huì)引起系統(tǒng)的復(fù)位、再引導(dǎo)。對于FPGA設(shè)計(jì)者來說,這是另外一個(gè)必須仔細(xì)評估的問題。一旦進(jìn)入編程模式,許多FPGA結(jié)構(gòu)默認(rèn)I/O為三態(tài),這會(huì)引起中斷系統(tǒng)運(yùn)行。市場上其他FPGA解決方案允許用戶對I/O的狀態(tài)逐個(gè)預(yù)定義(即高、低、高阻或采樣,然后驅(qū)動(dòng)到電流值),支持透明和有序的系統(tǒng)暫停。
?? ?(4)必須控制器件的狀態(tài)。退出配置過程之前控制FPGA內(nèi)的邏輯狀態(tài)是基本的要求。在器件配置完成之后,使器件的邏輯立即輸出正確的電平。如果必要的話,鎖相環(huán)(PLL)也必須再次鎖定。這些功能都是基本的,使系統(tǒng)從短暫的休眠狀態(tài)過渡到喚醒,使FPGA復(fù)原進(jìn)入正常工作狀態(tài)。FPGA設(shè)計(jì)者會(huì)發(fā)現(xiàn)市場上大多數(shù)易失(基于SRAM)的FPGA不支持這些關(guān)鍵的功能。然而,單片非易失SRAM/Flash FPGA確實(shí)支持這些要求。
?? ?作為現(xiàn)場邏輯更新的過程,圖1列舉了萊迪思" title="萊迪思">萊迪思“透明現(xiàn)場重構(gòu)”的4個(gè)步驟。萊迪思的FPGA結(jié)構(gòu)支持這個(gè)流程。
?
??? 以上是訪問FPGA的基本步驟,可以通過它們刷新和延長基于FPGA設(shè)計(jì)的生命。然而,還應(yīng)當(dāng)考慮現(xiàn)場邏輯更新的可靠性和安全性:
?? ?· 如果新的以及更新的FPGA位流在遠(yuǎn)距離的配置過程中損壞,系統(tǒng)將發(fā)生什么情況?
?? ?· 嵌入于FPGA位流中的知識(shí)產(chǎn)權(quán)核(IP)在現(xiàn)場邏輯更新過程中是如何保護(hù)的?
?????????????????????????????? 針對現(xiàn)場邏輯更新可靠性的雙引導(dǎo)方案
?? ?更新存儲(chǔ)的FPGA配置時(shí),總是會(huì)有風(fēng)險(xiǎn)。電源和通信的故障導(dǎo)致?lián)p壞配置和系統(tǒng)不能正常運(yùn)行。防止這種情況發(fā)生的一種方法是使用雙引導(dǎo)方式,將第二個(gè)或“正確的”配置存儲(chǔ)在引導(dǎo)存儲(chǔ)器中,專門用來應(yīng)對配置失敗的情況。采用這種方法,系統(tǒng)總是能夠恢復(fù)。一些基于SRAM的FPGA結(jié)構(gòu)在單片SPI Flash引導(dǎo)存儲(chǔ)器中支持多引導(dǎo)映射(或配置位流)。有些非易失SRAM/Flash FPGA在片內(nèi)存儲(chǔ)有效的引導(dǎo)映射,在專門的SPI Flash引導(dǎo)存儲(chǔ)器中含有正確的引導(dǎo)映射。
??? 作為雙引導(dǎo)實(shí)現(xiàn)的例子,圖2展示了LatticeXP2系列非易失、嵌入式閃存的功能。
?
?
?????????????????????????????????????? 針對設(shè)計(jì)安全性的加密
??? 現(xiàn)在市場上有一些FPGA支持位流加密(128位AES加密)。FPGA系統(tǒng)設(shè)計(jì)者設(shè)立了一個(gè)密鑰,這個(gè)密鑰編程至FPGA,且合并入位流。加密位流傳入FPGA,器件具有解密引擎,與存儲(chǔ)的密鑰組合在一起,在下載至SRAM配置存儲(chǔ)器之前對加密的位流解密。這樣在現(xiàn)場邏輯更新過程中敏感的設(shè)計(jì)數(shù)據(jù)得到了保護(hù)。
?? ?作為128位AES加密流的實(shí)例,圖3展示了非易失、嵌入式閃存LatticeXP2 FPGA的加密功能。
?
??????????????????????????????????????????? 總? 結(jié)
??? 越來越多的系統(tǒng)設(shè)計(jì)者要求能在現(xiàn)場更新基于FPGA的系統(tǒng),延長設(shè)計(jì)的壽命以免設(shè)計(jì)很快被廢棄。針對現(xiàn)場邏輯更新,這個(gè)挑戰(zhàn)是用支持4個(gè)基本要求的FPGA進(jìn)行設(shè)計(jì)來應(yīng)對,此外還要滿足現(xiàn)場更新可靠和安全的要求。幸運(yùn)的是現(xiàn)在市場上已有多款FPGA支持所有這些要求。