一種基于Avalon接口的AES算法IP核的設(shè)計(jì)方法【專利摘要】一種基于Avalon接口的AES算法IP核的設(shè)計(jì)方法,采用硬件描述語言VHDL設(shè)計(jì)而成,提供AES對(duì)稱密碼算法,符合Avalon總線接口規(guī)范,內(nèi)容包括:(1)IP核接口及功能;(2)寄存器映射及功能;(3)數(shù)據(jù)處理狀態(tài)機(jī)設(shè)計(jì)及流程,采用硬件描述語言VHDL設(shè)計(jì)實(shí)現(xiàn)了AES算法,符合Avalon總線接口規(guī)范,可以和NiosII嵌入式處理器相連移植到不同型號(hào)的FPGA中,使得設(shè)計(jì)靈活方便,可以滿足信息安全領(lǐng)域?qū)?shù)據(jù)加解密的應(yīng)用需求?!緦@f明】—種基于Avalon接口的AES算法IP核的設(shè)計(jì)方法【
技術(shù)領(lǐng)域:
】[0001]本發(fā)明涉及一種計(jì)算機(jī)應(yīng)用,具體地說是一種基于Avalon接口的AES算法IP核的設(shè)計(jì)方法?!?br>背景技術(shù):
】[0002]AES是一種高級(jí)加密標(biāo)準(zhǔn),實(shí)現(xiàn)對(duì)稱密碼算法,其分組長(zhǎng)度和密鑰長(zhǎng)度可以是128bit、192bit,256bit中的任意一個(gè)。AES加密有多輪的重復(fù)和變換。主要步驟包括:密鑰擴(kuò)展、初始輪、重復(fù)輪和最終輪。AES算法的安全性和可靠性高,已廣泛應(yīng)用于信息安全領(lǐng)域。[0003]Avalon交換總線是一種在可編程片上系統(tǒng)中連接片上處理器和各種外設(shè)的互連機(jī)構(gòu)。它定義了主從節(jié)點(diǎn)之間通信的信號(hào)類型和時(shí)序關(guān)系,使得用戶可以非常方便地把自己選定或設(shè)計(jì)的外設(shè)模塊通過Avalon總線連接到N1sII系統(tǒng)上。【
發(fā)明內(nèi)容】[0004]本發(fā)明提供一種基于Avalon接口的AES算法IP核的設(shè)計(jì)方法,采用硬件描述語言VHDL設(shè)計(jì)實(shí)現(xiàn)了AES算法,符合Avalon總線接口規(guī)范,可以和N1sII嵌入式處理器相連移植到不同型號(hào)的FPGA中,使得設(shè)計(jì)靈活方便,可以滿足信息安全領(lǐng)域?qū)?shù)據(jù)加解密的應(yīng)用需求。[0005]本發(fā)明的目的是按以下方式實(shí)現(xiàn)的,采用硬件描述語言VHDL設(shè)計(jì)而成,提供AES對(duì)稱密碼算法,符合Avalon總線接口規(guī)范,內(nèi)容包括:(I)IP核接口及功能;(2)寄存器映射及功能;(3)數(shù)據(jù)處理狀態(tài)機(jī)設(shè)計(jì)及流程,其中:(1)IP核接口及功能:描述了IP核的接口信號(hào)及各個(gè)信號(hào)的功能,符合Avalon總線接口規(guī)范,可以與N1sII軟核等嵌入式處理器相連;該IP核的所有封裝接口信號(hào)與時(shí)鐘同步的,在上升沿被采樣,高電平有效,各信號(hào)的功能如下:elk:輸入信號(hào),Avalon總線的時(shí)鐘,作為IP核的時(shí)鐘信號(hào);reset:輸入信號(hào),是IP核的復(fù)位信號(hào);writedata[31..0]:輸入信號(hào),32bit數(shù)據(jù)輸入;address[4..0]:輸入信號(hào),地址總線,譯碼后用于選定IP核的寄存器;write:輸入信號(hào),高電平指示寫入數(shù)據(jù)有效;read:輸入信號(hào),高電平指示讀出數(shù)據(jù)有效;readdata[31..0]:輸出信號(hào),32bit運(yùn)算結(jié)果輸出;irq:輸出信號(hào),中斷標(biāo)志,當(dāng)一個(gè)分組數(shù)據(jù)運(yùn)算完成后產(chǎn)生此信號(hào);(2)寄存器映射及功能:描述了IP核的寄存器功能及地址偏移,該IP核包括密鑰寄存器、數(shù)據(jù)寄存器、運(yùn)算結(jié)果寄存器和控制寄存器;字長(zhǎng)為32bit,各寄存器的功能如下:I)密鑰寄存器:偏移地址為0x00-0x07,用于存放AES加密或解密時(shí)的用戶密鑰,對(duì)該寄存器只可進(jìn)行寫操作;2)數(shù)據(jù)寄存器:偏移地址為0x08-0x0B,用于存放AES算法的一個(gè)明文分組或密文分組數(shù)據(jù)128bit,對(duì)該寄存器只可進(jìn)行寫操作;3)運(yùn)算結(jié)果寄存器:偏移地址為0x10-0x13,用于存放AES算法的一個(gè)明文分組或密文分組的運(yùn)算結(jié)果,對(duì)該寄存器只可進(jìn)行讀操作;4)控制寄存器:偏移地址為0x14,可以對(duì)控制寄存器進(jìn)行讀寫操作,從而控制IP核的功能并查詢狀態(tài),控制寄存器的(Γ4位有效,其中:第O位是ENC,置I表示進(jìn)行加密操作;第I位是DEC,置I表示進(jìn)行解密操作;第2位是IRQ_ENA,置I表示當(dāng)一個(gè)分組運(yùn)算完成后產(chǎn)生中斷信號(hào),清O表示一個(gè)分組運(yùn)算完成后不產(chǎn)生中斷信號(hào),IP核工作于查詢模式;第3位是KEY_VALID,置I表示密鑰數(shù)據(jù)有效,清O表示密鑰數(shù)據(jù)無效;(3)數(shù)據(jù)處理狀態(tài)機(jī)設(shè)計(jì)及流程:詳細(xì)描述了AES算法加密、解密的狀態(tài)機(jī)設(shè)計(jì)及數(shù)據(jù)處理流程,設(shè)計(jì)流程如下:在IP核工作之前用戶的初始密鑰需要寫入到密鑰寄存器中,之后設(shè)置控制寄存器的第3位KEY_VALID啟動(dòng)密鑰擴(kuò)展,同時(shí)設(shè)置第O位ENC或第I位DEC,選擇進(jìn)行加密操作或解密操作,在運(yùn)算過程中用戶如果更換密鑰,在新密鑰傳輸之前需要清除KEY_VALID以便使之前的舊密鑰無效;密鑰傳輸完成后,需要向IP核的數(shù)據(jù)寄存器寫入一個(gè)分組長(zhǎng)度的數(shù)據(jù),IP核根據(jù)控制寄存器的ENC位和DEC位啟動(dòng)加密操作ENC=‘I’或解密操作DEC=‘I’,ENC和DEC不能同時(shí)設(shè)置為1,ENC或DEC—直保持高電平狀態(tài)直到一個(gè)分組數(shù)據(jù)運(yùn)算完成;當(dāng)一個(gè)分組數(shù)據(jù)運(yùn)算完成后,運(yùn)算結(jié)果被寫入到運(yùn)算結(jié)果寄存器中,通過readdata[31..0]接口讀出;該IP核對(duì)數(shù)據(jù)的處理過程采用了有限狀態(tài)機(jī)的設(shè)計(jì)方法,包括等待密鑰狀態(tài)WAIT_KEY、等待數(shù)據(jù)狀態(tài)WAIT_DATA、初始輪狀態(tài)INITIAL_ROUND、重復(fù)輪狀態(tài)DO_ROUND、最終輪狀態(tài)FINAL_ROUND和完成狀態(tài)DONE。其中data_stable和key_stable分別是數(shù)據(jù)穩(wěn)定信號(hào)和密鑰穩(wěn)定信號(hào),通過控制寄存器訪問;key_ready是密鑰準(zhǔn)備好信號(hào),當(dāng)所有密鑰擴(kuò)展完成后由密鑰寄存器產(chǎn)生;變量i是輪計(jì)數(shù)器,每一輪需要選擇一個(gè)輪密鑰;N0_R0UNDS是常量,表示數(shù)據(jù)處理過程總的輪數(shù)。AES算法標(biāo)準(zhǔn)中定義當(dāng)密鑰長(zhǎng)度為128bit時(shí)需要運(yùn)算10輪,192bit時(shí)運(yùn)算12輪,256bit時(shí)運(yùn)算14輪。[0006]狀態(tài)機(jī)的具體工作過程為:(1)向IP核寫入初始密鑰并設(shè)置控制寄存器后,啟動(dòng)狀態(tài)機(jī),進(jìn)入等待密鑰狀態(tài)WAIT_KEY;(2)在WAIT_KEY狀態(tài),當(dāng)密鑰擴(kuò)展完成后,key_ready信號(hào)變?yōu)楦唠娖剑鬆顟B(tài)機(jī)進(jìn)入等待數(shù)據(jù)狀態(tài)WAIT_DATA;(3)在WAIT_DATA狀態(tài),向IP核的數(shù)據(jù)寄存器寫入待運(yùn)算的分組數(shù)據(jù),當(dāng)密鑰和數(shù)據(jù)都穩(wěn)定后,此時(shí)data_stable=‘I’,key_stable=‘I’,狀態(tài)機(jī)進(jìn)入初始輪狀態(tài)INITIAL_ROUND;(4)在INITIAL_R0UND狀態(tài),狀態(tài)機(jī)選擇第一輪的輪密鑰,當(dāng)輪密鑰穩(wěn)定后key_stable=‘1’,初始輪操作完成后進(jìn)入重復(fù)輪狀態(tài)D0_R0UND;(5)在DO_ROUND狀態(tài),狀態(tài)機(jī)進(jìn)行循環(huán)操作,根據(jù)輪計(jì)數(shù)器i選擇輪密鑰完成對(duì)應(yīng)的輪運(yùn)算,之后進(jìn)入最終輪狀態(tài)FINAL_ROUND;(6)在FINAL_ROUND狀態(tài),狀態(tài)機(jī)完成最后一輪運(yùn)算,之后進(jìn)入完成狀態(tài)DONE;(7)在DONE狀態(tài),狀態(tài)機(jī)完成了一個(gè)分組數(shù)據(jù)的運(yùn)算。如果key_stable=‘0’,則返回WAIT_DATA狀態(tài)進(jìn)行下一個(gè)分組數(shù)據(jù)的運(yùn)算。[0007]本發(fā)明的目的有益效果是:采用硬件描述語言VHDL設(shè)計(jì)實(shí)現(xiàn)了AES算法,符合Avalon總線接口規(guī)范,可以和N1sII嵌入式處理器相連移植到不同型號(hào)的FPGA中,使得設(shè)計(jì)靈活方便,可以滿足信息安全領(lǐng)域?qū)?shù)據(jù)加解密的應(yīng)用需求?!緦@綀D】【附圖說明】[0008]圖1是基于Avalon接口的AES算法IP核接口圖;圖2是IP核數(shù)據(jù)處理的狀態(tài)機(jī)轉(zhuǎn)移圖?!揪唧w實(shí)施方式】[0009]參照說明書附圖對(duì)本發(fā)明的一種基于Avalon接口的AES算法IP核的設(shè)計(jì)方法作以下詳細(xì)地說明。[0010]該IP核采用硬件描述語言VHDL設(shè)計(jì)而成,可以通過Avalon總線把該IP核連接到N1sII系統(tǒng)上。[0011]該IP核的封裝接口如附圖1所示,所有信號(hào)是時(shí)鐘同步的,在上升沿被采樣,高電平有效。各信號(hào)的功能如下:elk:輸入信號(hào),Avalon總線的時(shí)鐘,作為IP核的時(shí)鐘信號(hào);reset:輸入信號(hào),是IP核的復(fù)位信號(hào);writedata[31..0]:輸入信號(hào),32bit數(shù)據(jù)輸入;address[4..0]:輸入信號(hào),地址總線,譯碼后用于選定IP核的寄存器。[0012]write:輸入信號(hào),高電平指示寫入數(shù)據(jù)有效;read:輸入信號(hào),高電平指示讀出數(shù)據(jù)有效;readdata[31..0]:輸出信號(hào),32bit運(yùn)算結(jié)果輸出;irq:輸出信號(hào),中斷標(biāo)志,當(dāng)一個(gè)分組數(shù)據(jù)運(yùn)算完成后產(chǎn)生此信號(hào)。[0013]該IP核包括4個(gè)寄存器,字長(zhǎng)為32Mt,每個(gè)寄存器的功能如下:1、密鑰寄存器:偏移地址為0x00-0x07,用于存放AES加密或解密時(shí)的用戶密鑰,對(duì)該寄存器只可進(jìn)行寫操作;2、數(shù)據(jù)寄存器:偏移地址為0x08-0x0B,用于存放AES算法的一個(gè)明文分組或密文分組數(shù)據(jù)(128bit),對(duì)該寄存器只可進(jìn)行寫操作;3、運(yùn)算結(jié)果寄存器:偏移地址為0x10-0x13,用于存放AES算法的一個(gè)明文分組或密文分組的運(yùn)算結(jié)果,對(duì)該寄存器只可進(jìn)行讀操作;4、控制寄存器:偏移地址為0x14,可以對(duì)控制寄存器進(jìn)行讀寫操作,從而控制IP核的功能并查詢狀態(tài)。控制寄存器的(Γ4位有效,其中:第O位是ENC,置I表示進(jìn)行加密操作;第I位是DEC,置I表示進(jìn)行解密操作;第2位是IRQ_ENA,置I表示當(dāng)一個(gè)分組運(yùn)算完成后產(chǎn)生中斷信號(hào),清O表示一個(gè)分組運(yùn)算完成后不產(chǎn)生中斷信號(hào),IP核工作于查詢模式;第3位是KEY_VALID,置I表示密鑰數(shù)據(jù)有效,清O表示密鑰數(shù)據(jù)無效。在IP核工作之前用戶的初始密鑰需要寫入到密鑰寄存器中,之后設(shè)置控制寄存器的第3位KEY_VALID啟動(dòng)密鑰擴(kuò)展,同時(shí)設(shè)置第O位ENC或第I位DEC,選擇進(jìn)行加密操作或解密操作。在運(yùn)算過程中用戶如果更換密鑰,在新密鑰傳輸之前需要清除KEY_VALID以便使之前的舊密鑰無效。[0014]密鑰傳輸完成后,需要向IP核的數(shù)據(jù)寄存器寫入一個(gè)分組長(zhǎng)度的數(shù)據(jù),IP核根據(jù)控制寄存器的ENC位和DEC位啟動(dòng)加密操作(ENC=‘I’)或解密操作(DEC=‘l’),ENC和DEC不能同時(shí)設(shè)置為I。ENC或DEC—直保持高電平狀態(tài)直到一個(gè)分組數(shù)據(jù)運(yùn)算完成。[0015]當(dāng)一個(gè)分組數(shù)據(jù)運(yùn)算完成后,運(yùn)算結(jié)果被寫入到運(yùn)算結(jié)果寄存器中,通過readdata[31..0]接口讀出。[0016]該IP核對(duì)數(shù)據(jù)的處理過程采用了有限狀態(tài)機(jī)的設(shè)計(jì)方法,狀態(tài)機(jī)的狀態(tài)轉(zhuǎn)移圖如附圖2所示,包括等待密鑰狀態(tài)WAIT_KEY、等待數(shù)據(jù)狀態(tài)WAIT_DATA、初始輪狀態(tài)INITIAL_R0UND、重復(fù)輪狀態(tài)D0_R0UND、最終輪狀態(tài)FINAL_R0UND和完成狀態(tài)DONE。其中data_stable和key_stable分別是數(shù)據(jù)穩(wěn)定信號(hào)和密鑰穩(wěn)定信號(hào),通過控制寄存器訪問;key_ready是密鑰準(zhǔn)備好信號(hào),當(dāng)所有密鑰擴(kuò)展完成后由密鑰寄存器產(chǎn)生;變量i是輪計(jì)數(shù)器,每一輪需要選擇一個(gè)輪密鑰;N0_R0UNDS是常量,表示數(shù)據(jù)處理過程總的輪數(shù)。AES算法標(biāo)準(zhǔn)中定義當(dāng)密鑰長(zhǎng)度為128bit時(shí)需要運(yùn)算10輪,192bit時(shí)運(yùn)算12輪,256bit時(shí)運(yùn)算14輪。[0017]狀態(tài)機(jī)的具體工作過程為:(I)、向IP核寫入初始密鑰并設(shè)置控制寄存器后,啟動(dòng)狀態(tài)機(jī),進(jìn)入等待密鑰狀態(tài)WAIT_KEY;(2)、在WAIT_KEY狀態(tài),當(dāng)密鑰擴(kuò)展完成后,key_ready信號(hào)變?yōu)楦唠娖?,之后狀態(tài)機(jī)進(jìn)入等待數(shù)據(jù)狀態(tài)WAIT_DATA;(3)、在WAIT_DATA狀態(tài),向IP核的數(shù)據(jù)寄存器寫入待運(yùn)算的分組數(shù)據(jù),當(dāng)密鑰和數(shù)據(jù)都穩(wěn)定后,此時(shí)data_stable=‘1’,key_stable=‘I’,狀態(tài)機(jī)進(jìn)入初始輪狀態(tài)INITIAL_ROUND;(4)、在INITIAL_R0UND狀態(tài),狀態(tài)機(jī)選擇第一輪的輪密鑰,當(dāng)輪密鑰穩(wěn)定后key_stable=‘1’,初始輪操作完成后進(jìn)入重復(fù)輪狀態(tài)D0_R0UND;(5)、在D0_R0UND狀態(tài),狀態(tài)機(jī)進(jìn)行循環(huán)操作,根據(jù)輪計(jì)數(shù)器i選擇輪密鑰完成對(duì)應(yīng)的輪運(yùn)算,之后進(jìn)入最終輪狀態(tài)FINAL_R0UND;(6)、在FINAL_R0UND狀態(tài),狀態(tài)機(jī)完成最后一輪運(yùn)算,之后進(jìn)入完成狀態(tài)DONE;(7)、在DONE狀態(tài),狀態(tài)機(jī)完成了一個(gè)分組數(shù)據(jù)的運(yùn)算。如果key_stable=‘0’,則返回WAIT_DATA狀態(tài)進(jìn)行下一個(gè)分組數(shù)據(jù)的運(yùn)算。[0018]除說明書所述的技術(shù)特征外,均為本專業(yè)技術(shù)人員的已知技術(shù)?!緳?quán)利要求】1.一種基于Avalon接口的AES算法IP核的設(shè)計(jì)方法,其特征在于采用硬件描述語言VHDL設(shè)計(jì)而成,提供AES對(duì)稱密碼算法,符合Avalon總線接口規(guī)范,內(nèi)容包括=(I)IP核接口及功能;(2)寄存器映射及功能;(3)數(shù)據(jù)處理狀態(tài)機(jī)設(shè)計(jì)及流程,其中:(1)IP核接口及功能:描述了IP核的接口信號(hào)及各個(gè)信號(hào)的功能,符合Avalon總線接口規(guī)范,可以與N1sII軟核等嵌入式處理器相連;該IP核的所有封裝接口信號(hào)與時(shí)鐘同步的,在上升沿被采樣,高電平有效,各信號(hào)的功能如下:elk:輸入信號(hào),Avalon總線的時(shí)鐘,作為IP核的時(shí)鐘信號(hào);reset:輸入信號(hào),是IP核的復(fù)位信號(hào);writedata[31..0]:輸入信號(hào),32bit數(shù)據(jù)輸入;address[4..0]:輸入信號(hào),地址總線,譯碼后用于選定IP核的寄存器;write:輸入信號(hào),高電平指示寫入數(shù)據(jù)有效;read:輸入信號(hào),高電平指示讀出數(shù)據(jù)有效;readdata[31..0]:輸出信號(hào),32bit運(yùn)算結(jié)果輸出;irq:輸出信號(hào),中斷標(biāo)志,當(dāng)一個(gè)分組數(shù)據(jù)運(yùn)算完成后產(chǎn)生此信號(hào);(2)寄存器映射及功能:描述了IP核的寄存器功能及地址偏移,該IP核包括密鑰寄存器、數(shù)據(jù)寄存器、運(yùn)算結(jié)果寄存器和控制寄存器;字長(zhǎng)為32bit,各寄存器的功能如下:1)密鑰寄存器:偏移地址為0x00-0x07,用于存放AES加密或解密時(shí)的用戶密鑰,對(duì)該寄存器只可進(jìn)行寫操作;2)數(shù)據(jù)寄存器:偏移地址為0x08-0x0B,用于存放AES算法的一個(gè)明文分組或密文分組數(shù)據(jù)128bit,對(duì)該寄存器只可進(jìn)行寫操作;3)運(yùn)算結(jié)果寄存器:偏移地址為0x10-0x13,用于存放AES算法的一個(gè)明文分組或密文分組的運(yùn)算結(jié)果,對(duì)該寄存器只可進(jìn)行讀操作;4)控制寄存器:偏移地址為0x14,可以對(duì)控制寄存器進(jìn)行讀寫操作,從而控制IP核的功能并查詢狀態(tài),控制寄存器的(Γ4位有效,其中--第O位是ENC,置I表示進(jìn)行加密操作;第I位是DEC,置I表示進(jìn)行解密操作;第2位是IRQ_ENA,置I表示當(dāng)一個(gè)分組運(yùn)算完成后產(chǎn)生中斷信號(hào),清O表示一個(gè)分組運(yùn)算完成后不產(chǎn)生中斷信號(hào),IP核工作于查詢模式;第3位是KEY_VALID,置I表示密鑰數(shù)據(jù)有效,清O表示密鑰數(shù)據(jù)無效;(3)數(shù)據(jù)處理狀態(tài)機(jī)設(shè)計(jì)及流程:詳細(xì)描述了AES算法加密、解密的狀態(tài)機(jī)設(shè)計(jì)及數(shù)據(jù)處理流程,設(shè)計(jì)流程如下:在IP核工作之前用戶的初始密鑰需要寫入到密鑰寄存器中,之后設(shè)置控制寄存器的第3位KEY_VALID啟動(dòng)密鑰擴(kuò)展,同時(shí)設(shè)置第O位ENC或第I位DEC,選擇進(jìn)行加密操作或解密操作,在運(yùn)算過程中用戶如果更換密鑰,在新密鑰傳輸之前需要清除KEY_VALID以便使之前的舊密鑰無效;密鑰傳輸完成后,需要向IP核的數(shù)據(jù)寄存器寫入一個(gè)分組長(zhǎng)度的數(shù)據(jù),IP核根據(jù)控制寄存器的ENC位和DEC位啟動(dòng)加密操作ENC=‘I’或解密操作DEC=‘I’,ENC和DEC不能同時(shí)設(shè)置為1,ENC或DEC—直保持高電平狀態(tài)直到一個(gè)分組數(shù)據(jù)運(yùn)算完成;當(dāng)一個(gè)分組數(shù)據(jù)運(yùn)算完成后,運(yùn)算結(jié)果被寫入到運(yùn)算結(jié)果寄存器中,通過readdata[31..0]接口讀出;該IP核對(duì)數(shù)據(jù)的處理過程采用了有限狀態(tài)機(jī)的設(shè)計(jì)方法,包括等待密鑰狀態(tài)WAIT_KEY、等待數(shù)據(jù)狀態(tài)WAIT_DATA、初始輪狀態(tài)INITIAL_ROUND、重復(fù)輪狀態(tài)DO_ROUND、最終輪狀態(tài)FINAL_ROUND和完成狀態(tài)DONE,其中data_stable和key_stable分別是數(shù)據(jù)穩(wěn)定信號(hào)和密鑰穩(wěn)定信號(hào),通過控制寄存器訪問;key_ready是密鑰準(zhǔn)備好信號(hào),當(dāng)所有密鑰擴(kuò)展完成后由密鑰寄存器產(chǎn)生;變量i是輪計(jì)數(shù)器,每一輪需要選擇一個(gè)輪密鑰;N0_R0UNDS是常量,表示數(shù)據(jù)處理過程總的輪數(shù),AES算法標(biāo)準(zhǔn)中定義當(dāng)密鑰長(zhǎng)度為128bit時(shí)需要運(yùn)算10輪,192bit時(shí)運(yùn)算12輪,256bit時(shí)運(yùn)算14輪。2.根據(jù)權(quán)利要求1所述的設(shè)計(jì)方法,其特征在于狀態(tài)機(jī)的具體工作過程為:(1)向IP核寫入初始密鑰并設(shè)置控制寄存器后,啟動(dòng)狀態(tài)機(jī),進(jìn)入等待密鑰狀態(tài)WAIT_KEY;(2)在WAIT_KEY狀態(tài),當(dāng)密鑰擴(kuò)展完成后,key_ready信號(hào)變?yōu)楦唠娖剑鬆顟B(tài)機(jī)進(jìn)入等待數(shù)據(jù)狀態(tài)WAIT_DATA;(3)在WAIT_DATA狀態(tài),向IP核的數(shù)據(jù)寄存器寫入待運(yùn)算的分組數(shù)據(jù),當(dāng)密鑰和數(shù)據(jù)都穩(wěn)定后,此時(shí)data_stable=‘I’,key_stable=‘I’,狀態(tài)機(jī)進(jìn)入初始輪狀態(tài)INITIAL_ROUND;(4)在INITIAL_ROUND狀態(tài),狀態(tài)機(jī)選擇第一輪的輪密鑰,當(dāng)輪密鑰穩(wěn)定后key_stable=‘I’,初始輪操作完成后進(jìn)入重復(fù)輪狀態(tài)D0_R0UND;(5)在D0_R0UND狀態(tài),狀態(tài)機(jī)進(jìn)行循環(huán)操作,根據(jù)輪計(jì)數(shù)器i選擇輪密鑰完成對(duì)應(yīng)的輪運(yùn)算,之后進(jìn)入最終輪狀態(tài)FINAL_ROUND;(6)在FINAL_ROUND狀態(tài),狀態(tài)機(jī)完成最后一輪運(yùn)算,之后進(jìn)入完成狀態(tài)DONE;(7)在DONE狀態(tài),狀態(tài)機(jī)完成了一個(gè)分組數(shù)據(jù)的運(yùn)算;如果key_stable=‘0’,則返回WAIT_DATA狀態(tài)進(jìn)行下一個(gè)分組數(shù)據(jù)的運(yùn)算?!疚臋n編號(hào)】G06F21/62GK104182696SQ201410402054【公開日】2014年12月3日申請(qǐng)日期:2014年8月15日優(yōu)先權(quán)日:2014年8月15日【發(fā)明者】蘇振宇申請(qǐng)人:浪潮電子信息產(chǎn)業(yè)股份有限公司