(海軍計(jì)算技術(shù)研究所 北京 100841)
近年來(lái),密碼技術(shù)的發(fā)展日新月異,出現(xiàn)了大量的新型算法。在DES、AES、RSA等的常用加密算法的基礎(chǔ)上,又出現(xiàn)了新型加密算法。這些新型算法數(shù)學(xué)原理都比較復(fù)雜,實(shí)現(xiàn)難度較大。算法實(shí)現(xiàn)主要有兩種方式:軟件實(shí)現(xiàn)方式和硬件實(shí)現(xiàn)方式。軟件實(shí)現(xiàn)方式是指采用標(biāo)準(zhǔn)C或VC++語(yǔ)言實(shí)現(xiàn)密碼算法,一般可應(yīng)用在CPU、DSP等多種平臺(tái),通用性強(qiáng),但處理能力依賴于處理器性能。硬件實(shí)現(xiàn)是指采用HDL語(yǔ)言和RTL代碼進(jìn)行仿真驗(yàn)證并加載到FPGA實(shí)現(xiàn),算法性能較高。但傳統(tǒng)硬件實(shí)現(xiàn)方式需要經(jīng)驗(yàn)豐富的硬件工程師,不僅要熟悉掌握系統(tǒng)功能設(shè)計(jì)、邏輯資源、工作頻率、功耗要求等,還需手工書寫RTL代碼、驗(yàn)證代碼,工作強(qiáng)度較大。采用FPGA算法C綜合開發(fā)流程可以降低密碼算法實(shí)現(xiàn)工作難度和風(fēng)險(xiǎn),有效提高工作效率。
C語(yǔ)言綜合器是一種將C語(yǔ)言描述輸入轉(zhuǎn)換為寄存器傳輸級(jí)(RTL)描述的高層次算法綜合技術(shù),它的應(yīng)用可使系統(tǒng)建模、綜合、驗(yàn)證、實(shí)現(xiàn)等FPGA或ASIC開發(fā)流程大大簡(jiǎn)化,大幅度縮短新產(chǎn)品的開發(fā)周期。
以往開發(fā)FPGA算法首先進(jìn)行算法分析、仿真得到結(jié)果,再單獨(dú)進(jìn)行HDL的開發(fā)驗(yàn)證。兩者獨(dú)立進(jìn)行,如果設(shè)計(jì)的時(shí)序或面積的目標(biāo)不能滿足要求,需要繼續(xù)不斷地改進(jìn)編寫的RTL代碼,并繼續(xù)不斷地做驗(yàn)證,以期達(dá)到目標(biāo)。改進(jìn)RTL代碼需要花費(fèi)很多的時(shí)間。由于時(shí)間的關(guān)系,設(shè)計(jì)人員對(duì)硬件實(shí)現(xiàn)的微架構(gòu)只能進(jìn)行有限次數(shù)的探索,因此不得不采用次優(yōu)化的RTL代碼。一旦RTL代碼確定下來(lái),就需要用所有可能測(cè)試向量的一個(gè)子集進(jìn)行RTL級(jí)別的驗(yàn)證,而更全面更花時(shí)間的徹底驗(yàn)證需要在FPGA樣機(jī)系統(tǒng)建立以后才能進(jìn)行。

圖1 以往FPGA算法開發(fā)流程
新的使用C綜合開發(fā)流程則將兩個(gè)階段的工作有機(jī)的結(jié)合起來(lái),同時(shí)省掉了大量浪費(fèi)的改進(jìn)RTL代碼的時(shí)間。新的開發(fā)流程圖如圖2所示。

圖2 FPGA算法C綜合開發(fā)流程
顯然,在算法模型開發(fā)階段的代碼可以經(jīng)過(guò)簡(jiǎn)單修改后直接代入第二階段的開發(fā),并且省去了HDL語(yǔ)言和RTL代碼的大量修改,當(dāng)正式結(jié)果和參考結(jié)果有誤差時(shí)可以直接進(jìn)入C代碼設(shè)計(jì)架構(gòu)中進(jìn)行調(diào)整和修正。
傳統(tǒng)的設(shè)計(jì)方法是勞動(dòng)密集型的,它們幾乎沒(méi)有給設(shè)計(jì)者留下評(píng)估其它可選架構(gòu)的時(shí)間。硬件設(shè)計(jì)者被迫提前對(duì)架構(gòu)的進(jìn)行選擇,從而不可避免地導(dǎo)致非優(yōu)化的硬件實(shí)現(xiàn)。
Catapult C是由Mentor Graphics公司推出的一款C綜合工具。Catapult C的主要特點(diǎn)是,使用標(biāo)準(zhǔn)的C++,比以往的Handle C、System C抽象層次更高,工具優(yōu)化的空間更大。
Catapult C對(duì)C代碼編寫的限制和RT L代碼編寫所受到的限制差不多,核心原因在于,Catapult C主要用于以數(shù)據(jù)處理為主的設(shè)計(jì)中。使用Catapult C來(lái)實(shí)現(xiàn)密碼算法,優(yōu)點(diǎn)就非常明顯,可以快速?gòu)乃惴K生成RTL代碼;可以方便地評(píng)估不同的微架構(gòu)下,占用的資源和處理延遲等可以大大加快實(shí)驗(yàn)性系統(tǒng)的開發(fā)速度;可以使硬件設(shè)計(jì)師大幅減少編寫RT L的實(shí)現(xiàn)時(shí)間,改善設(shè)計(jì)流程的可靠性。
文獻(xiàn)[1]是在IEEE學(xué)報(bào)上公布的DES算法的高性能全流水架構(gòu)。該架構(gòu)設(shè)計(jì)合理,處理吞吐率高,性能非常優(yōu)異。如圖3和圖4所示。加密處理流程是:
1)輸入64bit明文/64bit密鑰;
2)輸出64bit密文;
3)前處理,迭代變換(密鑰在迭代時(shí)做左移操作),后處理。

采用以上架構(gòu)進(jìn)行C模型開發(fā),代碼不到200行,主要流程如下:




直接將上述代碼轉(zhuǎn)入Catapult C綜合工具中,對(duì)C模型施加約束,由Catapult C生成RT L代碼,并得到了面積最小和吞吐率最高的兩種結(jié)果。使用Catapult C對(duì)生成的RT L代碼進(jìn)行了功能驗(yàn)證,并通過(guò)波形仿真證明了生成的RTL代碼功能完全正確。
表1為生成ETL代碼與文獻(xiàn)[1]IP的性能對(duì)比。

表1 生成RTL代碼與其他文獻(xiàn)算法的性能對(duì)比
由表1可知,與軟件解決方案相比,FPGA解決方案有著更高的處理能力。文獻(xiàn)[1]中兩位作者所開發(fā)的手工RTL(表格第二行),處理能力達(dá)到了1時(shí)鐘/數(shù)據(jù),性能已經(jīng)非常優(yōu)異。而在使用相同架構(gòu)的前提下,Catapult C綜合出的RTL代碼Catapult_v2(表格第四行)與文獻(xiàn)[1]中的結(jié)果相比,處理能力同樣達(dá)到了1時(shí)鐘/數(shù)據(jù),工作效率和處理吞吐率與其相當(dāng),而面積僅為后者的75%左右。同時(shí),在不改變代碼的前提下,通過(guò)施加不同的約束,可以得到面積最小的另一個(gè)解決方案Catapult_v1(表格第三行)。這樣同一個(gè)C設(shè)計(jì)可以應(yīng)用于不同的應(yīng)用場(chǎng)合。
Catapult C技術(shù)可以采用易于編寫和調(diào)試標(biāo)準(zhǔn)C/C++輸入,無(wú)縫地進(jìn)行FPGA綜合和布局布線,對(duì)同一套C代碼施加不同的約束可以得到多個(gè)不同面積,不同吞吐率的設(shè)計(jì)結(jié)果,C代碼的開發(fā)工作量較VHDL代碼的工作量成倍的減少了,大大地提高設(shè)計(jì)流程的效率。節(jié)約了硬件成本,減小了開發(fā)工作量和開發(fā)難度。
[1]M.McLoone,J.V.M cCanny.High-performance FPGA implementation of DES using a novel method for implementing the key schedule.IEE Proc.:Circuits,Devices&Systems,2003,150:373~378
[2]肖國(guó)鎮(zhèn),白恩健,劉曉娟.AES密碼分析的若干新進(jìn)展[J].電子學(xué)報(bào),2003,31(10):1549~1554
[3]Jhing-Fa Wang,Sun-Wei Chang,Po-Chuan Lin.A Novel Round Function Architecture for AES Encryption/Decryption Utilizing Look-up Table.2003
[4]Mó nica Liberatori,Fernando Otero J.C.Bonadero,Jorge Casti eira.AES-128 CIPHER.HIGH SPEED,LOW COST FPGA IMPLEMENTATION.2007
[5]Nalini C,Nagaraj,Dr.Anandmohan P.V,et al.An FPGA Based Performance Analysis of Pipelining and Unrolling of AES Algorithm.2006
[6]R.Sever,N.Ismailoglu,M.Askar,et al.A High Speed ASIC Implementation of theRijndael Algorithm.2004 IEEE InternationalSymposium on Circuits and Systems,May 2004,Vancouver,Canada
[7]I.Verbauwhede,P.Schaumont,H.Kuo.Design and Performance Testing of a 2.29-GB/s Rijndael Processor[J].IEEE Journal of Solid State Circuits,2003,38(3):569~572