杯賽題目:基于蜂鳥E203 RISC-V處理器內(nèi)核的SoC設(shè)計(jì)
參賽要求:研究生組/本科生組
賽題內(nèi)容:
基于芯來科技的開源蜂鳥E203 Demo SoC進(jìn)行擴(kuò)展,在限定的可編程邏輯平臺上構(gòu)建面向?qū)S脩?yīng)用領(lǐng)域(譬如人工智能、信息安全、工業(yè)控制等)的SoC,進(jìn)而完成一定實(shí)際應(yīng)用。要求在所搭建的SoC中實(shí)現(xiàn)專門的硬件加速器以提高系統(tǒng)整體性能,所實(shí)現(xiàn)的系統(tǒng)具有創(chuàng)新性、實(shí)用性以及市場應(yīng)用前景。
團(tuán)隊(duì)介紹
參賽單位:電子科技大學(xué)
隊(duì)伍名稱:第N隊(duì)
指導(dǎo)老師:路志剛
參賽隊(duì)員:朱俊宛、羅揚(yáng)、岳修立
總決賽獎項(xiàng):三等獎
1. 項(xiàng)目簡介
隨著信息化和數(shù)字化社會的發(fā)展,人們對信息安全和保密的重要性認(rèn)識不斷提高,信息加密算法也在不斷的發(fā)展進(jìn)步之中。SM4密碼算法是國家密碼管理局正式的《祖沖之序列密碼算法》等6項(xiàng)密碼行業(yè)標(biāo)準(zhǔn)之一。本項(xiàng)目基于開源E203處理器在FPGA開發(fā)板上對國產(chǎn)密碼算法SM4算法進(jìn)行實(shí)現(xiàn)和優(yōu)化,并實(shí)現(xiàn)了對字符串的加密與解密。
1.1 系統(tǒng)框架
系統(tǒng)控制端通過串口通信FPGA開發(fā)板發(fā)送命令:操作類型(加密解密)、操作數(shù)據(jù)(明文密文)、密鑰。FPGA上的E203 SoC接收來自控制端的命令并運(yùn)行硬件加速后的SM4算法程序進(jìn)行處理,處理后的結(jié)果通過串口通信返回給控制端,如下圖所示。
1.2 SM4算法原理
1.2.1 概述
SM4算法是一種分組密碼算法。其分組長度為128bit,密鑰長度也為128bit。加密算法與密鑰擴(kuò)展算法均采用32輪非線性迭代結(jié)構(gòu),以字(32位)為單位進(jìn)行加密運(yùn)算,每一次迭代運(yùn)算均為一輪變換函數(shù)F。SM4算法加/解密算法的結(jié)構(gòu)相同,只是使用輪密鑰相反,其中解密輪密鑰是加密輪密鑰的逆序。
SM4算法的整體結(jié)構(gòu)如圖:
1.2.2 輪函數(shù)
整體的加密函數(shù)F為:
x(i+4)=F(x(i),x(i+1),x(i+2),x(i+3),rk(i))=x(i)?T(x(i+1)?x(i+1)?x(i+2)?x(i+3)?rk(i))
其中T為一個(gè)合成置換,由非線性變換S和線性變換L復(fù)合而成,如下圖。
非線性變換S由具有256個(gè)固定的8bit數(shù)據(jù)的S盒構(gòu)成,S盒的數(shù)據(jù)均采用16進(jìn)制。輸入的8bit數(shù)據(jù)作為S盒中地址的索引,地址中所包含的8bit數(shù)據(jù)即為S盒的輸出。非線性變換S函數(shù)表達(dá)式可以表示為:
B=(b1,b2,b3,b4)=S(A)=(sbox(a1),sbox(a2),sbox(a2),sbox(a2))
線性變換L的公式如下:
C=L(B)=B?(B?2)?(B?10)?(B?18)?(B?24)
其中B為非線性變換得到的字。
1.2.3 輪密鑰
已知加密密鑰:MK=(MK0,MK1,MK2,MK3),系統(tǒng)參數(shù):FK=(FK0,FK1,FK2,FK3) ,固定參數(shù):CK=(CK0,CK1,??,CK31) 。
輪密鑰rki即為密鑰擴(kuò)展的結(jié)果,由加密密鑰擴(kuò)展生成,過程如下:
首先:
(K(0),K(1),K(2),K(3))=(MK0?FK0,MK1?FK1,MK2?FK2,MK3?FK3)
然后對于i=0,1,??,31:
rk(i)=K(i+4)=K(i)?T'(K(i+1)?K(i+1)?K(i+2)?K(i+3)?CK(i))
其中變換T'與輪函數(shù)的T變換基本相同,只是將其中的線性變換L改為:
L'(B)=B?(B?13)?(B?23)
1.3 協(xié)處理器加速設(shè)計(jì)
1.3.1 軟硬件功能劃分
硬件功能:利用協(xié)處理器實(shí)現(xiàn)SM4算法中的密鑰拓展過程與加解密過程。
軟件功能:調(diào)用協(xié)處理器實(shí)現(xiàn)密鑰拓展過程與加解密過程,并對過程進(jìn)行控制。
1.3.2 狀態(tài)轉(zhuǎn)換
根據(jù)SM4算法原理及軟硬件功能劃分,六個(gè)狀態(tài),分別為初始狀態(tài)(IDLE)、密鑰加載狀態(tài)(SKEY)、密鑰拓展?fàn)顟B(tài)(KEY)、輸入加載狀態(tài)(SDAT)、加解密運(yùn)算狀態(tài)(DAT)、輸出返回狀態(tài)(PDAT)。
當(dāng)有相應(yīng)的指令標(biāo)識位置1時(shí),狀態(tài)機(jī)將從初始狀態(tài)進(jìn)入相應(yīng)的指令狀態(tài)。當(dāng)相應(yīng)的狀態(tài)完成標(biāo)識位置1后,狀態(tài)機(jī)將從相應(yīng)的指令執(zhí)行狀態(tài)進(jìn)入初始狀態(tài)。狀態(tài)轉(zhuǎn)換單元示意圖如下。
1.3.3 數(shù)據(jù)運(yùn)算
數(shù)據(jù)運(yùn)算部分主要是在根據(jù)協(xié)處理器當(dāng)前的狀態(tài)進(jìn)行相應(yīng)的運(yùn)算操作以實(shí)現(xiàn)SM4算法。數(shù)據(jù)運(yùn)算單元示意圖如下。
1. 當(dāng)處于密鑰加載狀態(tài)(SKEY)時(shí),協(xié)處理器會將CPU送過來的與系統(tǒng)參數(shù)FK異或過的初始密鑰k0、k1、k2、k3加載到下方4個(gè)寄存器中。
2. 當(dāng)處于密鑰拓展?fàn)顟B(tài)(KEY)時(shí),k0、k1、k2、k3會進(jìn)行32輪非線性迭代運(yùn)算,在迭代過程中生成k4-k35,即輪密鑰rk0-rk31,并存儲到rk控制模塊之中。
3. 當(dāng)處于輸入加載狀態(tài)(SDAT)時(shí),協(xié)處理器會將CPU送過來的初始輸入x0、x1、x2、x3加載到上方4個(gè)寄存器中。
4. 當(dāng)處于加解密運(yùn)算狀態(tài)(DAT)時(shí),x0、x1、x2、x3會進(jìn)行32輪非線性迭代運(yùn)算,會根據(jù)此時(shí)源操作數(shù)1的值決定輪密鑰rki的使用順序,為0對應(yīng)于加密操作,為1對應(yīng)于解密操作。迭代過程完成后將得到x31、x32、x33、x34,即運(yùn)算結(jié)果。
5. 當(dāng)處于輸出返回狀態(tài)(PDAT)時(shí),協(xié)處理器會通過結(jié)果反饋通道nice_rsp_rdat將運(yùn)算結(jié)果返回給CPU。
2. 仿真與測試
2.1 功能仿真
2.1.1 SM4算法純軟件實(shí)現(xiàn)功能仿真
vivado仿真波形:
Tcl控制臺結(jié)果:
2.1.2 SM4算法協(xié)處理器加速實(shí)現(xiàn)功能仿真
vivado仿真波形:
Tcl控制臺結(jié)果:
2.1.3 協(xié)處理器加速效果
對比兩次仿真結(jié)果得到,協(xié)處理器對SM4算法的加速效果為:28520 / 337 = 84.6(倍)
2.2 整體測試
整體測試的實(shí)物連接如圖
2.2.1 字符串加密
對字符串“Xinlai RISC-V Cup”進(jìn)行加密,密鑰為:0x1234578 1234578 1234578 1234578。結(jié)果如圖。
2.2.2 字符串解密
將加密得到的密文 0x93677fad 32fc552f 760780b7 94b627cd 2a694043 86f3992f 2dad6065 0c4f1b48 進(jìn)行解密操作,結(jié)果如圖。得到解密結(jié)果為:“Xinlai RISC-V Cup”。驗(yàn)證了加密結(jié)果的正確性,完成了對字符串的加密解密,實(shí)現(xiàn)系統(tǒng)的預(yù)設(shè)功能。
3. 參賽體會
3.1 參賽感受
在三個(gè)多月的學(xué)習(xí)與實(shí)踐之中,經(jīng)過VERLIOG的學(xué)習(xí)、VIVADO的使用、FPGA開發(fā)板的學(xué)習(xí)、RISK_V的學(xué)習(xí)、E203 SoC的移植、SM4算法的學(xué)習(xí)、協(xié)處理器的學(xué)習(xí)與應(yīng)用等過程,基本完成了基于E203 處理器內(nèi)核的SM4算法硬件加速。從一個(gè)剛開始學(xué)習(xí)的小白,一步步摸索前進(jìn)。在不斷遇到問題,解決問題的過程中,加深了對集成電路行業(yè)的理解,提升我們的軟件設(shè)計(jì)能力。
集創(chuàng)賽作為全國性的頂尖賽事,匯集了來自全國各地各高校的優(yōu)秀大學(xué)生。讓我們在比賽過程中能夠與如此多優(yōu)秀的同齡人同臺競技,相互交流,極大拓展了自己的視野與能力。非常感謝集創(chuàng)賽賽事組委會的工作人員和老師們的組織與付出,讓我們有機(jī)會參與到這樣一個(gè)充分展示風(fēng)采的平臺。
3.2 后續(xù)計(jì)劃
1.加入其他算法(例如SM3算法)進(jìn)行交互,進(jìn)一步提升其加密效果。
2.對輸入,輸出及控制系統(tǒng)進(jìn)行進(jìn)一步的優(yōu)化與拓展,使用上位機(jī)來傳輸數(shù)據(jù)流和控制。
審核編輯 :李倩
?
評論
查看更多