ICAP模塊實(shí)現(xiàn)了架構(gòu)和FPGA配置控制器之間的接口,該模塊基元就像邊界掃描模塊基元一樣。其例化無需額外的邏輯單元,因?yàn)檫@些端口嵌入在FPGA中。要在器件配置完成后讀取配置比特流,ICAP宏必須被例化,ICAP模塊也常用于實(shí)現(xiàn)Spartan-3A/3AN/3A DSP平臺中的多重啟動功能。如果ICAP被用于實(shí)現(xiàn)一種以上的功能,如多重啟動和比特流驗(yàn)證,那么當(dāng)連接至ICAP時(shí)就需要考慮信號優(yōu)先級和控制。可以和多路復(fù)用器或更為復(fù)雜的仲裁邏輯一樣簡單。
圖 所示為ICAP基元的示意。
圖 ICAP基元的ICAP_SPARTAN3A示意
該模塊例化后的VHDL代碼如下
(2) CRC(循環(huán)冗余校驗(yàn))
CRC是一類校驗(yàn)和,用于檢測數(shù)據(jù)傳輸和接收中出現(xiàn)的誤差,它廣泛用于藍(lán)牙、以太網(wǎng)、USB、衛(wèi)星通信,以及FPGA的配置中。Xilinx FPGA具有自檢能力,可以在器件加載配置時(shí)驗(yàn)證比特流。CRC是計(jì)算的數(shù)字結(jié)果,并且與生成比特流中的存儲值進(jìn)行比較。如果兩個(gè)值相等,“Done”引腳變?yōu)楦唠娖?,表明配置成功?/FONT>
CRC算法很簡單,但卻是一種高度有效的檢驗(yàn)數(shù)據(jù)完整性的方法。散列算法也可用于驗(yàn)證FPGA配置,選擇CRC,還是散列算法完全取決于設(shè)計(jì)者。
(3) 簡單比特流驗(yàn)證
ICAP模塊用于讀取器件配置,器件配置被發(fā)送至CRC,CRC會生成一個(gè)有效的結(jié)果值并與存儲的CRC存儲值進(jìn)行比較。在本例中,存儲值是一個(gè)空配置存儲器位置。如果這兩個(gè)值相同,配置就是正確的;如果這兩個(gè)值不同,就說明器件已經(jīng)被篡改。設(shè)計(jì)者可以決定采取做何響應(yīng),常用響應(yīng)如下。
重新加載配置
通過使用ICAP模塊FPGA可以被擦除和重新配置,如果主配置己經(jīng)被篡改,則會導(dǎo)致FPGA不斷地進(jìn)行重配置。
無功能
設(shè)計(jì)完全停止運(yùn)行,可以通過采用全局控制信號(如三態(tài)、門控時(shí)鐘及觸發(fā)器時(shí)鐘使能等)來輕松實(shí)現(xiàn)。
(4) 邏輯資源要求
采用嵌入式ICAP模塊無需使用FPGA內(nèi)的任何邏輯資源,有多種CRC和散列算法可供選擇。其中有與多個(gè)邏輯單元一樣簡單的,也有數(shù)百個(gè)用于實(shí)現(xiàn)更為復(fù)雜的算法的邏輯單元。
(5) 比特流驗(yàn)證結(jié)論
對于一些設(shè)計(jì)來說,保護(hù)數(shù)據(jù)和訪問比設(shè)計(jì)功能更加重要,簡單的比特流驗(yàn)證可以協(xié)助保護(hù)數(shù)據(jù)、訪問和設(shè)計(jì)功能不被篡改者攻擊。
來源:ks991次