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